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개의 문장을 만들었다. 어떤 문장들이 올바른 것인가?
    1. 분기 명령어, ALU 명령어들이 적재 명령어가 필요한 5단계보다 더 적은 단계를 거치도록 하면 어떤 환경에서도 파이프라인의 성능은 좋아진다.
    2. 몇몇 명령어가 더 적은 단계를 거치도록 하는 것은 도움이 되지 않는다. 왜냐하면 처리량은 클럭 사이클에 의해 결정되기 때문이다. 명령어당 파이프 단계의 수는 지연시간에 영향을 미치지 처리량에는 영향을 미치지 않기 때문이다.
    3. ALU 명령어는 결과를 쓰기 때문에 더 적은 사이클이 걸리도록 만들 수 없다. 그러나 분기 명령어는 더 적은 사이클이 걸릴 수 있기 때문에 성능 향상에 약간의 기회가 있다.
    4. 명령어들이 더 적은 사이클이 걸리도록 노력하는 대신에 파이프라인을 길게 만들려고 해야 한다. 이렇게 하면 명령어들은 더 많은 사이클이 걸리지만 사이클은 더 짧아진다. 이것이 성능을 높일 수 있을 것이다.

스스로 점검하기 (390)

  • 분기가 일어나지 않는다고 예측, 분기가 일어난다고 예측, 동적 예측의 세 가지 분기 예측 기법을 생각해 보자. 이들 기법들이 제대로 예측했을 경우에는 손실이 하나도 없으며 잘못 예측을 한 경우에는 손실이2 사이클이라고 가정한다. 동적 예측기의 평균 예측 정확도가 90%라면, 다음 분기들의 경우 어떤 예측기가 가장 좋은 선택인가?
    1. 5%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 분기하지 않는다고 예측
    2. 95%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 분기한다고 예측
    3. 70%의 비율로 분기가 일어나는 조건부 분기 명령어 -> 동적 예측

스스로 점검하기 (397)

  • 이 코드에서 어떤 예외가 먼저 인식되어야만 하는가?
    • 1. xxx x11, x12, x11 // 정의 안 된 명령어 다른 명령어보다 먼저 실행되므로.
      1. sub x11, x12, x11 // 하드웨어 오류

스스로 점검하기 (413)

  • 다음의 기법이나 구성 요소가 ILP를 활용하려는 소프트웨어 기반 방법과 관련 있는지 아니면 하드웨어 기반 방법과 관련이 있는지 설명하라. 어떤 경우에는 답이 두 가지 모두 될 수도 있다.
문제정답
1. 분기 예측1. 둘 다
2. 다중 내보내기2. 둘 다
3. VLIW3. 소프트웨어
4. 수퍼스칼라4. 하드웨어
5. 동적 스케줄링5. 하드웨어
6. 비순차 실행6. 하드웨어
7. 추정7. 둘 다
8. 재정렬 버퍼8. 하드웨어
9. 레지스터 재명명9. 둘 다

스스로 점검하기 (424)

  • 다음 문장은 참인가 거짓인가?
    1. 거짓: Intel Core i7은 다중 내보내기 파이프라인을 사용하여 x86 명령어를 직접 실행한다.
    2. 거짓: Cortex-A53과 Core i7 모두 동적 다중 내보내기를 사용한다.
    3. : Core i7 마이크로구조는 x86이 요구하는 것보다 더 많은 레지스터를 갖고 있다.
    4. : Intel Core i7은 이전의 Intel Pentium 4 Prescott가 사용하던 파이프라인 단계보다 반 이하의 파이프라인 단계를 사용한다.

5. 메모리 계층구조

스스로 점검하기 (455)

  • 다음 중 옳은 문장을 모두 골라라.
    • 1. 메모리 계층구조는 시간적 지역성을 이용한다.
      1. 읽을 때, 리턴되는 값은 캐시에 어떤 블록이 있느냐에 따라 달라진다.
      1. 메모리 계층구조의 비용 대부분은 최상위 계층에 들어간다.
      • 메모리 계층구조의 비용은 컴퓨터마다 다르기 때문에 3은 거짓이다. 하지만 2016년 현재 가장 비싼 것은 보통 DRAM이다.
    • 4. 메모리 계층구조에서 대부분의 용량이 최하위 계층에 있다.

스스로 점검하기 (477)

  • 메모리 시스템의 속도는 캐시 블록 크기를 결정하는 데 영향을 끼친다. 다음 중 일반적으로 옳은 캐시 설계 지침은 어느 것들인가?
    • 1. 메모리 지연이 짧을수록 캐시 블록을 더 작게 한다.
      • 실패 손실이 작아지면 보상해야 할 지연시간이 길지 않기 때문에 작은 블록을 사용할 수 있다.
      1. 메모리 지연이 짧을수록 캐시 블록을 더 크게 한다.
      1. 메모리 대역폭이 클수록 캐시 블록을 더 작게 한다.
    • 4. 메모리 대역폭이 클수록 캐시 블록을 더 크게 한다.
      • 메모리 대역폭이 커지면 보통 큰 블록을 쓰게 된다. 대역폭이 크면 블록이 커져도 실패 손실이 크게 늘어나지 않기 때문이다.

스스로 점검하기 (496)

  • 다단계 캐시 설계에 대해서 다음 중 어느 것이 일반적으로 사실인가?
    • 1. 1차 캐시는 적중시간이 더 중요하고, 2차 캐시는 실패율이 더 중요하다.
      1. 1차 캐시는 실패율이 더 중요하고, 2차 캐시는 적중시간이 더 중요하다.

스스로 점검하기 (542)

  • 다음 중에서 일반적으로 참인 문장은?
      1. 필수 실패를 줄이는 방법은 없다.
      • 큰 블록과 선인출은 필수 실패를 줄일 수 있다. 따라서 1번은 거짓이다.
    • 2. 완전 연관 캐시는 대립 실패가 없다.
      1. 실패를 줄이는 데는 연관 정도가 용량보다 더 중요하다.