728x90
반응형
문제
- 단일 사이클 데이터패스에서 별도의 명령어 메모리와 데이터메모리를 가지는 이유는 무엇인가요?
- ALU에서 Load/Store와 Branch의 연산은 각각 무엇인가요?
- ALU 제어신호를 위한 진리값은 어떻게 결정되나요?
- 각 제어신호의 의미는 무엇인가요?
- R-type Instruction(add $t1, $t2, $t3)의 실행 과정을 설명하세요.
- Load Instruction의 실행 과정을 설명하세요.
- Branch on equal instruction(beq $t1, $t2, offset)의 실행 과정을 설명하세요.
- Jump 명령어가 추가될 때 필요한 추가 제어 신호는 무엇인가요?
- 단일 사이클 구현에서 모든 명령어에서 클럭사이클이 같은 길이를 가져야 하는 이유는 무엇인가요?
- 멀티 사이클 구현의 장점은 무엇인가요?
- 멀티 사이클 구현에서 추가로 필요한 것은 무엇인가요?
정답
- 별도의 형식(명령어, 데이터)을 가지기 때문입니다. 메모리를 별도로 가지면 저렴합니다(듀얼포트 메모리에 비해). 한 사이클에 명령어메모리와 데이터메모리 동시 접근이 가능합니다.
- Load/Store는 add(메모리주소 계산)이고, Branch는 substract(같은지 비교를 위해)입니다.
- ALU 제어신호를 위한 진리값은 opcode와 funct 필드의 값에 따라 결정됩니다.
- RegDest: 0 -> 명령어 rd필드가 Write Register 번호가 됨, 1 -> 명령어 rt필드가 Write Register 번호가 됨. RegWrite: 1 -> Write data값을 Write Register 번호에 씀. ALUSrc: 0 -> Read Data 2가 ALU의 두 번째 오퍼랜드가 됨, 1 -> 부호확장된 명령어의 하위 16 비트값이 ALU의 두 번째 오퍼랜드로. PCSrc: 0 -> PC에 4를 더함, 1 -> 분기 목적지 주소값을 새로운 PC값으로. MemRead: 1 -> 데이터메모리의 Address 주소의 값의 Read Data의 출력으로 나옴. MemWrite: 1 -> Write Data의 값을 데이터메모리의 Address 값에 기록. MemtoReg: 0 -> ALU 출력이 레지스터 Write Data 입력값으로, 1 -> 데이터메모리 출력이 레지스터 Write Data 입력으로.
- R-type Instruction(add $t1, $t2, $t3)의 실행 과정은 다음과 같습니다: 명령어 인출 및 PC증가 -> $t2, $t3를 읽음 + 제어선 값 설정 -> ALU에서 연산, ALU제어값은 funct값(5:0)을 사용 -> ALU의 결과값을 레지스터에 저장(명령어의 15:11 값을 사용해서 $t1을 설정).
- Load Instruction의 실행 과정은 다음과 같습니다: 명령어 인출 및 PC증가 -> 레지스터 $t2의 값 읽음 -> ALU는 레지스터에서 읽은 값과 명령어의 하위 16비트(offset)에 부호확장된 값을 더함 -> 결괏값을 데이터메모리의 주소로 사용 -> 메모리에서 가지고 온 값을 $t1(대상은 명령어의 20:16)에 사용.
- Branch on equal instruction(beq $t1,
- Jump 명령어가 추가될 때 Opcode에서 추가 제어 신호(control signal)가 필요합니다.
- 단일 사이클 구현에서 모든 명령어에서 클럭사이클이 같은 길이를 가져야 하는 이유는 전체적인 성능 감소를 막기 위해서입니다. 크리티컬 패스는 적제(Load) 명령어 - 명령어메모리, 레지스터 파일, ALU, 데이터메모리, 레지스터 파일 사용 - 이므로 클럭사이클은 적재 명령어에 맞춰야 합니다.
- 멀티 사이클 구현의 장점으로는 각 단계를 한 사이클씩 사용하기 때문에 명령어마다 필요한 클럭 수가 달라질 수 있습니다. 한 명령어 안에서 기능유닛 여러 번 사용 가능하며, 한 명령어 실행 네에서 기능 유닛을 공유 가능합니다. 하드웨어 비용도 감소합니다.
- 멀티 사이클 구현에서 추가로 필요한 것으로는 추가 Mux/임시 레지스터/제어신호가 있습니다.
728x90
반응형
'전공 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] #9 해저드 (0) | 2023.06.11 |
---|---|
[컴퓨터구조] #8 파이프라이닝 - 추가 사설 문제 (0) | 2023.04.25 |
[컴퓨터구조] #6 단일 사이클 구현 1 - 추가 사설 문제 (0) | 2023.04.25 |
[컴퓨터구조] #5 프로세서 - 추가 사설 문제 (0) | 2023.04.25 |
[컴퓨터구조] #4 컴퓨터 연산 - 추가 사설 문제 (0) | 2023.04.25 |