Computer Architecture
컴퓨터의 목적은 사람이 원하는 것을 기계에게 전달하는 것이다. 아래의 이미지에서 Application은 우리가 사용하는 프로그램 (브라우저, 게임, ... 등등)이고, 전자가 움직이는 것처럼 물리적인 부분이다. 브라우저와 물리 현상 사이에는 엄청난 갭이 있기 때문에 여러 개의 계층을 거쳐야 컴퓨터가 우리가 원하는 것을 실행하도록 할 수 있다.
그래서 컴퓨터 아키텍처는 넓은 의미로 보면 Application과 Phyics 사이의 갭을 해결하는 것이라고 할 수 있다.
하지만 현실적으로는 Application과 Physics의 갭이 매우 크기 때문에 이 사이를 여러 개의 계층으로 나눌 수 있다. 프로그래밍 언어, 운영체제, 명령어 집합, 명령어 집합의 구현체, 회로 등등 많은 단계를 거쳐서 Application 으로부터 실제 컴퓨터의 동작 ㅡ Physics까지를 연결할 수 있다.
하지만 아까 말한 넓은 의미의 컴퓨터 아키텍처는 너무 범위가 넓기 때문에 보통은 아래 사진처럼 Operating System과 Gates 사이의 계층을 컴퓨터 아키텍처라고 한다.
하지만 뒤에서 설명하겠지만 Operating System과 Gates 사이를 하나의 계층에서 담당하는 것도 효율적이지 않다. 따라서 컴퓨터 아키텍처는 다시 Instruction Set Architecture, Microarchitecture, Register-Transfer Level 세 가지 계층으로 나뉜다. Register-Transfer Level은 이 글에서는 다루지 않는다.
Instruction Set Architecture
Instruction Set Architecture는 한국어로는 명령어 집합 구조인데 쉽게 말해서 명령어의 집합을 정의하는 아키텍처이다. 줄여서 ISA라고 한다. ISA에서는 명령어의 종류, 명령어가 처리하는 타입, 레지스터 등을 설계한다. ISA는 프로세서와 커뮤니케이션을 하기 위한 일종의 인터페이스라고 할 수 있다.
IBM 360을 예로 들어보자면 1964년의 IBM 360 시리즈 이전에는 IBM 컴퓨터에서 네 가지의 각각 다른 컴퓨터끼리 명령어 셋이 호환이 되지 않았다. 하지만 IBM 360 부터는 비교적 싸고 성능이 낮은 프로세서부터 비싸고 성능이 높은 프로세서까지 같은 ISA를 사용하게 되었다. 새로운 프로세서를 개발하더라도 기존의 ISA를 준수한다면 더 성능이 좋은 프로세서를 코드의 수정 없이 사용할 수 있게 되는 것이다!
Microarchitecture
ISA가 프로세서와의 인터페이스라고 한다면, Microarchitecture는 인터페이스의 구현이라고 할 수 있다. 같은 ISA를 구현하더라도 파이프라인의 깊이, 캐시 사이즈, 명령어 오더링, 파워, 등등 다양한 요인에 차별을 두어서 다양한 프로세서를 만들 수 있다.
Same Architecture, Different Microarchitecture
실제적인 예로 같은 ISA를 사용하지만 전혀 다른 Microarchitecture로 AMD Phenom X4와 Intel Atom을 예로 들 수 있다.
'Computer Architecture' 카테고리의 다른 글
다시 정리하는 NUMA (1) | 2022.01.21 |
---|---|
LEGv8 ISA - 특징과 명령어 포맷 (0) | 2021.12.02 |
메모리 계층별 대략적인 성능 비교 (0) | 2021.11.07 |
The Elements of Cache Programming Style (0) | 2021.10.07 |
NUMA: Non-Uniform Memory Access (0) | 2021.09.30 |
댓글