ISA와 어셈블리

x86의 명령어 'add eax, [rbx]'처럼 연산 명령어가 메모리 상의 값을 직접 사용할 수 있는 방식에 대해 올바른 것은?

  1. A명령어 수는 적게 할 수 있지만 하나의 명령어 안에 메모리 읽기와 연산이 포함된다
  2. B로드-스토어 아키텍처라고 하는 방식이다
  3. C메모리 값을 사용하는 연산은 레지스터끼리의 연산과 반드시 같은 시간에 끝난다
정답과 해설 보기

정답: A. 명령어 수는 적게 할 수 있지만 하나의 명령어 안에 메모리 읽기와 연산이 포함된다

x86에서는 하나의 명령어로 '메모리에서 읽어 더하기'를 할 수 있으며, 같은 처리를 RISC-V로 쓰면 lw와 add의 2개 명령어가 됩니다. 명령어 수나 코드는 작아지기 쉬운 반면 명령어마다 일의 양이 제각각이어서 파이프라인으로 다루기 어려워집니다. 그래서 현재의 x86 CPU는 내부에서 이러한 명령어를 로드와 덧셈 같은 단순한 동작(마이크로 오퍼레이션)으로 나누어 실행합니다.

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

ISA와 어셈블리의 다른 문제

  1. 현재의 고성능 x86 CPU가 복잡한 명령어를 내부에서 어떻게 실행하는지에 대한 설명으로 올바른 것은?
  2. RISC-V의 M 확장이 기본 정수 명령어 집합에 추가하는 명령어는?
  3. RISC-V의 C 확장(압축 명령어)의 주된 목적은?
  4. M 확장이 없는 RV32I CPU용으로 C 언어의 'a * b'(int끼리의 곱셈)를 컴파일하면 일반적으로 어떻게 되는가?
  5. 예전 MIPS 등에 있었던 분기 지연 슬롯(분기 명령어 직후의 1개 명령어는 분기 여부와 관계없이 실행되는 규칙)에 대해 올바른 것은?