전공 지식 - 컴퓨터 구조

ISA는 크게 CISCRISC, 이 두 종류로 나누어지며 결론적으로 성능은 RISC 방식이 더 우수하다.
ISA(Instruction Set Architecture)는 컴퓨터에 대한 추상적 모델이다.
ISA에 정의된 instruction(interface)을 실행하는 device를 implementation이라고 한다. 대표적으로 CPU가 implementation 중 하나이다.

프로세서의 연산

Multiplying two numbers in memory 위의 그림은 일반적인 컴퓨터의 데이터 저장 방식을 표현한 것이다. Execution unit은 사칙연산을 수행한다. 하지만 execution unit은 오직 register에 저장된 데이터에 대해서만 계산할 수 있다.

// 예제 코드
a = a * b;

위와 같은 C 코드를 프로세서가 실행하는 과정은 다음과 같다.

  1. a가 저장된 메모리 공간에서부터 레지스터로 값을 복사한다.
  2. b가 저장된 메모리 공간에서부터 레지스터로 값을 복사한다.
  3. 두 수를 곱한 값을 메모리 공간에 저장한다.

CISC

Complex Instruction Set Computer

CISC 아키텍쳐의 주요 목표는 하나의 작업(task)를 최소한의 assembly로 끝내는것이다. 이는 일련의 연산(operation)들을 하드웨어 선에서 구현함으로써 이룰 수 있다.
쉽게 말하면 CISC 프로세서의 명령어는 추상화 정도가 비교적 높다.

example

예제 코드를 CISC assembly로 번역하면 다음과 같다. (a, b에 저장된 값이 각각 memory[2][3], memory[5][2]에 저장되어있다고 가정)

MULT 2:3, 5:2

assembly(instruction) 자체는 간단하지만 이 명령어를 수행하기 위해 프로세서는 여러 개의 연산(operation)을 수행한다.
instruction은 트랜잭션에, operation은 트랜잭션을 구성하는 쿼리에 비유할 수 있다.

CISC 시스템의 가장 큰 장점은 high-level language를 번역할 때 컴파일러가 할 일의 양이 매우 적다는 것이다. 컴파일러의 역할보다는 이런 복잡한 instruction을 하드웨어가 실행할 수 있도록 만드는 것이다.

RISC

Reduced Instruction Set Computer

RISC 프로세서는 실행하는데 한 번의 clock cycle을 소모하는 간단한 명령어만을 사용한다.

example

예제 코드를 RISC assembly로 컴파일하면 다음과 같다. RISC에서 MULT라는 하나의 명령어가 수행한 작업을 여러 개의 명령어가 수행한다.

LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A

LOADSTORE를 분리함으로 인해 프로세서가 해야 할 일의 양을 줄일수 있다.
CISC-style의 MULT 명령어가 실행된 이후에는 프로세서가 사용했던 레지스터의 값들이 자동으로 지워지기 때문에 다른 계산을 위해 그 값이 필요할 경우, 그 값을 메모리에서 레지스터로 다시 가져와야 한다. 반면 RISC에서는 연산항이 다른 값이 덮어써지기 전까지 레지스터에 그대로 남아있다.

Performance

프로세서의 성능을 표현하는 가장 일반적인 공식은 다음과 같다.
performace equation

  • cpu time: 프로그램 하나를 실행하는 데 cpu가 소모하는 시간(I/O time 제외)
  • time/program (시간/프로그램 개수): 프로그램 하나를 실행하는데 걸린 평균 시간
  • instructions/program(Instruction Count): 프로그램 한 개당 필요한 instruction 수
  • clock cycles/instructions(Cycle Per Instruction): instruction 한 개당 필요한 cycle 수
  • time/clock cycle(1/clock rate): 하나의 clock cycle이 발생하는 시간

CISC 구조는 IC를 최소화하는 대신 CPI를 희생했고 RISC는 반대로 CPI를 낮추고 IC를 희생했다.

x86

x86은 intel이 개발한 프로세서 계열과 이들과 호환되는 프로세서들이 사용하는 ISA를 통칭한다.

  • x86_64(amd64): 32bit, 64bit에 호환 가능한 ISA이고 현재 출시하는 대부분의 PC의 cpu가 채택하고 있다.
  • IA-64: intel에서 개발한 64bit 전용 x86 아키텍쳐(Intel Architecture)
  • x86-IA32: 32bit 전용 x86 아키텍쳐 오늘날 CISC 구조를 유지하는 프로세서는 x86이 유일하다. (모바일 프로세서, 애플 실리콘 모두 RISC) 하지만 그 점유율이 매우 높기 때문에 RISC 의 확산 속도가 더디다.

references

Tags: ,

Categories:

Updated:

Comments