ISA와 어셈블리

현재의 고성능 x86 CPU가 복잡한 명령어를 내부에서 어떻게 실행하는지에 대한 설명으로 올바른 것은?

  1. A모든 명령어를 소프트웨어 에뮬레이터로 한 명령어씩 실행한다
  2. B명령어를 해독하여 RISC와 유사한 단순한 마이크로 오퍼레이션으로 나누고, 이를 파이프라인으로 실행한다
  3. C복잡한 명령어는 실행할 수 없으므로 OS가 오류로 정지시킨다
정답과 해설 보기

정답: B. 명령어를 해독하여 RISC와 유사한 단순한 마이크로 오퍼레이션으로 나누고, 이를 파이프라인으로 실행한다

x86 CPU는 가변 길이의 복잡한 명령어를 전단의 디코더에서 마이크로 오퍼레이션(μop)이라 불리는 단순한 동작으로 나누고, 후단에서는 이들을 비순차(Out-of-Order) 방식으로 실행합니다. 한 번 나눈 μop를 저장하여 해독을 다시 하지 않아도 되게 하는 μop 캐시를 가진 CPU도 있습니다. 이렇게 옛 소프트웨어와의 호환성을 유지하면서 RISC와 같은 고속 실행 기술을 사용하고 있습니다.

이 분야 연습하기 분야로 돌아가기

ISA와 어셈블리의 다른 문제

  1. RISC-V의 M 확장이 기본 정수 명령어 집합에 추가하는 명령어는?
  2. RISC-V의 C 확장(압축 명령어)의 주된 목적은?
  3. M 확장이 없는 RV32I CPU용으로 C 언어의 'a * b'(int끼리의 곱셈)를 컴파일하면 일반적으로 어떻게 되는가?
  4. 예전 MIPS 등에 있었던 분기 지연 슬롯(분기 명령어 직후의 1개 명령어는 분기 여부와 관계없이 실행되는 규칙)에 대해 올바른 것은?
  5. 64비트 RV64I에서 lw 명령어를 실행하면 읽어 들인 32비트 값은 64비트 레지스터에 어떻게 들어가는가?