4. Processor
스스로 점검하기 (305)
- 그림 4.1과 4.2는 컴퓨터의 고전적인 다섯 가지 구성 요소 중에서 몇 가지를 가지고 있는가?
- 5개 중 3개. 제어 유닛, 데이터패스, 메모리이다.
- 입력장치와 출력장치는 빠져 있다.
스스로 점검하기 (309)
- 참 또는 거짓: 레지스터 파일은 같은 클럭 사이클에 읽기와 쓰기가 모두 행해지기 때문에, 에지 구동 쓰기를 사용하는 모든 RISC-V 데이터패스는 레지스터 파일을 두 벌 이상 가지고 있어야 한다.
- 거짓: 에지 구동 상태 소자는 읽기와 쓰기를 동시에 할 수 있을 뿐만 아니라 값이 모호하지도 않다.
스스로 점검하기 (317)
-
I. 다음 중 어느 것이 적재 명령어에 맞는 말인가? 그림 4.10을 참조하라.
- a. 메모리에서 읽은 데이터를 레지스터 파일로 보내기 위해서는 MemtoReg가 1이 되어야 한다.
- b. 올바른 레지스터 목적지를 레지스터 파일로 보내기 위해서는 MemtoReg가 1이 되어야 한다.
- c. 적재 명령일 때는 MemtoReg 값이 어떻게 되든지 상관없다.
-
II. 이 절에서 개념적으로 설명한 단일 사이클 데이터패스는 명령어 메모리와 데이터 메모리를 따로따로 가져야 한다. 왜냐하면
- a. RISC-V에서는 데이터와 명령어의 형식이 다르기 때문에 다른 메모리가 필요하다.
- b. 메모리를 따로따로 갖는 것이 싸게 먹힌다.
- c. 프로세서가 명령어를 한 사이클에 실행하는데, 단일 포트의 메모리로는 한 사이클에 2개의 서로 다른 접근을 할 수 없다.
스스로 점검하기 (332)
- 그림 4.26에 있는 제어 신호 중에서 서로 합칠 수 있는 것이 있는가? 다른 신호의 역(inverse)으로 대신할 수 있는 제어 신호가 있는가? (힌트: don’t care를 고려하라.) 만약 그렇다면 인버터를 추가하지 않고 어떤 신호를 다른 신호 대신 사용할 수 있는가?
- 있다. Branch와 ALUOp0는 동일하다.
스스로 점검하기 (363)
- 한 그룹의 학생들이 5단계 파이프라인의 효율성에 대해 토의하고 있었는데, 한 학생이 모든 명령어가 파이프라인 각 단계 모두에서 활성화되는 것은 아니라는 점을 지적하였다. 해저드의 효과를 무시하기로 결정한 후 이들 학생들은 다음과 같은 4개의 문장을 만들었다. 어떤 문장들이 올바른 것인가?
- 분기 명령어, ALU 명령어들이 적재 명령어가 필요한 5단계보다 더 적은 단계를 거치도록 하면 어떤 환경에서도 파이프라인의 성능은 좋아진다.
- 몇몇 명령어가 더 적은 단계를 거치도록 하는 것은 도움이 되지 않는다. 왜냐하면 처리량은 클럭 사이클에 의해 결정되기 때문이다. 명령어당 파이프 단계의 수는 지연시간에 영향을 미치지 처리량에는 영향을 미치지 않기 때문이다.
- ALU 명령어는 결과를 쓰기 때문에 더 적은 사이클이 걸리도록 만들 수 없다. 그러나 분기 명령어는 더 적은 사이클이 걸릴 수 있기 때문에 성능 향상에 약간의 기회가 있다.
- 명령어들이 더 적은 사이클이 걸리도록 노력하는 대신에 파이프라인을 길게 만들려고 해야 한다. 이렇게 하면 명령어들은 더 많은 사이클이 걸리지만 사이클은 더 짧아진다. 이것이 성능을 높일 수 있을 것이다.
스스로 점검하기 (390)
- 분기가 일어나지 않는다고 예측, 분기가 일어난다고 예측, 동적 예측의 세 가지 분기 예측 기법을 생각해 보자. 이들 기법들이 제대로 예측했을 경우에는 손실이 하나도 없으며 잘못 예측을 한 경우에는 손실이2 사이클이라고 가정한다. 동적 예측기의 평균 예측 정확도가 90%라면, 다음 분기들의 경우 어떤 예측기가 가장 좋은 선택인가?
- 5%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 분기하지 않는다고 예측
- 95%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 분기한다고 예측
- 70%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 동적 예측
스스로 점검하기 (397)
- 이 코드에서 어떤 예외가 먼저 인식되어야만 하는가?
- 1. xxx x11, x12, x11 // 정의 안 된 명령어 → 다른 명령어보다 먼저 실행되므로.
-
- sub x11, x12, x11 // 하드웨어 오류
스스로 점검하기 (413)
- 다음의 기법이나 구성 요소가 ILP를 활용하려는 소프트웨어 기반 방법과 관련 있는지 아니면 하드웨어 기반 방법과 관련이 있는지 설명하라. 어떤 경우에는 답이 두 가지 모두 될 수도 있다.
| 문제 | 정답 |
|---|---|
| 1. 분기 예측 | 1. 둘 다 |
| 2. 다중 내보내기 | 2. 둘 다 |
| 3. VLIW | 3. 소프트웨어 |
| 4. 수퍼스칼라 | 4. 하드웨어 |
| 5. 동적 스케줄링 | 5. 하드웨어 |
| 6. 비순차 실행 | 6. 하드웨어 |
| 7. 추정 | 7. 둘 다 |
| 8. 재정렬 버퍼 | 8. 하드웨어 |
| 9. 레지스터 재명명 | 9. 둘 다 |
스스로 점검하기 (424)
- 다음 문장은 참인가 거짓인가?
- 거짓: Intel Core i7은 다중 내보내기 파이프라인을 사용하여 x86 명령어를 직접 실행한다.
- 거짓: Cortex-A53과 Core i7 모두 동적 다중 내보내기를 사용한다.
- 참: Core i7 마이크로구조는 x86이 요구하는 것보다 더 많은 레지스터를 갖고 있다.
- 참: Intel Core i7은 이전의 Intel Pentium 4 Prescott가 사용하던 파이프라인 단계보다 반 이하의 파이프라인 단계를 사용한다.
5. 메모리 계층구조
스스로 점검하기 (455)
- 다음 중 옳은 문장을 모두 골라라.
- 1. 메모리 계층구조는 시간적 지역성을 이용한다.
-
- 읽을 때, 리턴되는 값은 캐시에 어떤 블록이 있느냐에 따라 달라진다.
-
- 메모리 계층구조의 비용 대부분은 최상위 계층에 들어간다.
- 메모리 계층구조의 비용은 컴퓨터마다 다르기 때문에 3은 거짓이다. 하지만 2016년 현재 가장 비싼 것은 보통 DRAM이다.
- 4. 메모리 계층구조에서 대부분의 용량이 최하위 계층에 있다.
스스로 점검하기 (477)
- 메모리 시스템의 속도는 캐시 블록 크기를 결정하는 데 영향을 끼친다. 다음 중 일반적으로 옳은 캐시 설계 지침은 어느 것들인가?
- 1. 메모리 지연이 짧을수록 캐시 블록을 더 작게 한다.
- 실패 손실이 작아지면 보상해야 할 지연시간이 길지 않기 때문에 작은 블록을 사용할 수 있다.
-
- 메모리 지연이 짧을수록 캐시 블록을 더 크게 한다.
-
- 메모리 대역폭이 클수록 캐시 블록을 더 작게 한다.
- 4. 메모리 대역폭이 클수록 캐시 블록을 더 크게 한다.
- 메모리 대역폭이 커지면 보통 큰 블록을 쓰게 된다. 대역폭이 크면 블록이 커져도 실패 손실이 크게 늘어나지 않기 때문이다.
- 1. 메모리 지연이 짧을수록 캐시 블록을 더 작게 한다.
스스로 점검하기 (496)
- 다단계 캐시 설계에 대해서 다음 중 어느 것이 일반적으로 사실인가?
- 1. 1차 캐시는 적중시간이 더 중요하고, 2차 캐시는 실패율이 더 중요하다.
-
- 1차 캐시는 실패율이 더 중요하고, 2차 캐시는 적중시간이 더 중요하다.
스스로 점검하기 (542)
- 다음 중에서 일반적으로 참인 문장은?
-
- 필수 실패를 줄이는 방법은 없다.
- 큰 블록과 선인출은 필수 실패를 줄일 수 있다. 따라서 1번은 거짓이다.
- 2. 완전 연관 캐시는 대립 실패가 없다.
-
- 실패를 줄이는 데는 연관 정도가 용량보다 더 중요하다.
-