마이크로아키텍처
마이크로아키텍처 (영어: Microarchitecture)
마이크로아키텍처는 컴퓨터 프로세서(주로 중앙 처리 장치, CPU)가 명령어 집합 구조(ISA)를 어떻게 구현하는지에 대한 설계 방식이다. 이는 특정 ISA가 하드웨어 수준에서 실제 회로와 논리 블록으로 구현되는 방식을 정의한다.
명령어 집합 구조(ISA)가 프로세서가 지원하는 명령어, 레지스터, 메모리 모델 등 무엇을 할 수 있는지를 정의하는 추상적인 사양이라면, 마이크로아키텍처는 이러한 ISA의 기능을 어떻게 빠르고 효율적으로 수행할 것인지에 대한 실제 내부 구현 방식이다. 즉, ISA는 소프트웨어와 하드웨어 간의 계약 역할을 하며, 마이크로아키텍처는 그 계약 내용을 실제 하드웨어로 이행하는 방법이다.
마이크로아키텍처는 다음과 같은 다양한 요소들의 설계 및 상호 연결 방식을 포함한다.
- 명령어 파이프라인 (Instruction Pipeline): 명령어 처리 단계를 여러 단계로 나누어 동시에 처리함으로써 성능을 향상시키는 기법.
- 실행 유닛 (Execution Units): 산술 논리 장치(ALU), 부동소수점 장치(FPU), 로드/스토어 유닛 등 실제로 명령어를 실행하는 하드웨어 블록.
- 캐시 메모리 (Cache Memory): 메인 메모리보다 빠르고 작은 용량의 메모리로, 자주 사용하는 데이터를 임시 저장하여 접근 속도를 높이는 계층 구조. L1, L2, L3 등 여러 레벨이 있다.
- 레지스터 파일 (Register File): 프로세서 내에서 데이터를 임시 저장하고 빠르게 접근하기 위한 고속 메모리.
- 제어 장치 (Control Unit): 명령어의 흐름을 제어하고 각 하드웨어 구성 요소에 적절한 신호를 보내는 장치.
- 분기 예측 (Branch Prediction): 프로그램 실행 중 발생할 수 있는 분기(조건문, 루프 등)의 결과를 미리 예측하여 파이프라인이 멈추는 것을 최소화하는 기법.
- 데이터 경로 (Data Path): 데이터가 프로세서 내에서 이동하는 경로와 이를 조작하는 기능 유닛들의 연결.
동일한 ISA를 구현하더라도 마이크로아키텍처가 다르면 성능, 전력 소비량, 발열, 면적, 제조 비용 등에서 큰 차이를 보인다. 예를 들어, 인텔의 코어(Core) 시리즈와 아톰(Atom) 시리즈는 모두 x86 ISA를 구현하지만, 마이크로아키텍처가 상이하여 성능과 전력 효율 특성이 매우 다르다. 프로세서 설계자는 목표하는 시장, 성능 수준, 전력 제약 등을 고려하여 최적의 마이크로아키텍처를 설계한다.
따라서 마이크로아키텍처는 컴퓨터 시스템의 성능과 효율을 결정하는 핵심적인 요소 중 하나이며, 프로세서 설계 및 개선에 있어 매우 중요한 개념이다.