맨위로가기

마이크로아키텍처

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

마이크로아키텍처는 명령어 집합 아키텍처(ISA)를 구현하기 위해 프로세서의 구성 요소들이 어떻게 상호 연결되고 작동하는지를 나타낸다. 1950년대부터 1970년대까지 마이크로프로그래밍을 사용하여 프로그램 함수를 디코딩하여 실행하는 제어 논리가 도입되었으며, 마이크로아키텍처는 이러한 마이크로프로그램의 언어들이 통제하는 장치를 의미한다. 마이크로아키텍처는 명령어 파이프라인, 실행 유닛, 메모리 시스템 등으로 구성되며, 성능 향상, 칩 면적/비용, 전력 소비 등 다양한 제약 조건을 고려하여 설계된다. 주요 설계 개념으로는 멀티사이클, 명령어 파이프라인, 슈퍼스칼라, 비순차 실행, 분기 예측, 레지스터 리네이밍 등이 있으며, 최근에는 멀티프로세싱, 멀티코어, 멀티스레딩과 같은 기술을 통해 병렬성을 높이고 있다. CPU 아키텍처 종류로는 인텔, AMD, SPARC, ARM 등이 있으며, x86-64, ARM 아키텍처 등 다양한 명령 집합 아키텍처가 사용된다.

더 읽어볼만한 페이지

  • 마이크로아키텍처 - 밥캣 (마이크로아키텍처)
    밥캣은 AMD가 개발한 저전력 x86-64 마이크로아키텍처로, 퓨전 APU 제품군의 CPU 코어이며 넷북, 초소형 노트북, 가전 제품, 임베디드 시장을 목표로 작은 회로 규모와 낮은 전력 소비를 우선으로 설계되었다.
  • 명령어 처리 - 멀티스레딩
    멀티스레딩은 프로세스 내에서 여러 스레드를 동시 실행하여 처리 능력을 향상시키는 기술로, 응답성 향상과 자원 공유 등의 장점이 있지만, 자원 간섭과 소프트웨어 복잡성 증가 등의 단점도 존재하며, 다양한 모델과 구현 방식, 스레드 스케줄러, 가상 머신 활성화 가능성 등을 고려해야 한다.
  • 명령어 처리 - VLIW
    VLIW는 여러 연산을 하나의 명령어에 묶어 병렬로 실행하는 컴퓨터 아키텍처이며, 컴파일러가 연산 실행 순서를 결정하여 하드웨어 복잡성을 줄이는 특징을 가지고, 임베디드 미디어 프로세서 등에 사용된다.
  • 중앙 처리 장치 - 마이크로컨트롤러
    마이크로컨트롤러는 프로세서, 메모리, 입출력 기능을 단일 칩에 통합하여 임베디드 시스템의 핵심이 되는 부품으로, 프로그램 내장 방식을 통해 소프트웨어만으로 제어 기능 변경이 가능하며, 현재는 32비트 ARM, MIPS 아키텍처 기반 제품이 주를 이루고, 저전력 소모, 소형화, 다양한 기능 통합을 특징으로 다양한 분야에서 활용된다.
  • 중앙 처리 장치 - NX 비트
    NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다.
마이크로아키텍처
마이크로아키텍처
유형컴퓨터 아키텍처
하위 유형명령어 집합 아키텍처(ISA)의 구현
사용 분야중앙 처리 장치(CPU)
개요
설명마이크로아키텍처(때로는 컴퓨터 구성이라고도 함)는 명령어 집합 아키텍처(ISA)에서 설명한 대로 작동하는 방법과 데이터 처리 및 저장을 수행하는 다양한 컴퓨팅 시스템의 디지털 논리 구현을 의미한다.
관련 용어
다른 이름컴퓨터 구성
관련 항목ISA
컴퓨터 아키텍처
고성능 컴퓨팅
병렬 컴퓨팅
CPU 설계
VLSI
핵심 개념
파이프라이닝여러 명령어를 동시에 처리하여 성능을 향상시키는 기술
슈퍼스칼라클럭 사이클당 여러 명령어를 실행하는 기술
명령어 수준 병렬성 (ILP)명령어 간의 의존성을 분석하여 병렬 실행을 극대화하는 기술
분기 예측분기 명령어의 결과를 예측하여 파이프라인의 중단을 최소화하는 기술
캐시자주 사용되는 데이터를 빠르게 접근할 수 있도록 저장하는 고속 메모리

2. 용어의 역사

1950년대부터 1970년대까지 많은 컴퓨터들이 마이크로프로그래밍을 사용하여 프로그램 함수를 디코딩하고 실행하는 제어 논리를 도입하였다. 마이크로프로그램 언어 안의 비트는 실제로 컴퓨터 계산을 했던 장치들을 제어하는 전기적 신호였다. 마이크로아키텍처라는 용어는 마이크로프로그램 언어가 통제하는 장치를 일컫는 데 쓰였다.

3. 명령어 집합 아키텍처(ISA)와의 관계

명령어 집합 아키텍처(ISA)는 어셈블리 언어 프로그래머나 컴파일러 작성자가 보는 컴퓨터 시스템의 추상적인 모델이다. ISA에는 명령어, 실행 모델, 프로세서 레지스터, 주소 및 데이터 형식 등이 포함된다.[5] 마이크로아키텍처는 ISA를 구현하기 위해 프로세서의 구성 요소들이 어떻게 상호 연결되고 상호 작용하는지를 포함한다.

머신의 마이크로아키텍처는 일반적으로 머신의 다양한 마이크로아키텍처 요소의 상호 연결을 설명하는 다이어그램으로 표현되며, 데이터 경로와 제어 경로를 구분한다.[5]

서로 다른 마이크로아키텍처를 가진 기계는 동일한 ISA를 가질 수 있으므로 동일한 프로그램을 실행할 수 있다. 새로운 마이크로아키텍처 및/또는 회로 솔루션은 반도체 제조 기술의 발전과 함께 새로운 세대의 프로세서가 동일한 ISA를 사용하면서 더 높은 성능을 달성할 수 있게 한다.

4. 마이크로아키텍처의 구성 요소

인텔 80286 마이크로아키텍처


오늘날 마이크로아키텍처에서 가장 일반적으로 사용되는 데이터 경로 설계는 파이프라인 데이터 경로이다. 이 기술은 대부분의 최신 마이크로프로세서, 마이크로컨트롤러, DSP에 사용된다. 파이프라인 아키텍처를 통해 여러 명령어가 마치 조립 라인처럼 실행을 중복할 수 있다. 파이프라인에는 명령어 인출, 명령어 디코딩, 실행 및 쓰기 백 등의 단계가 포함된다.[5] 일부 아키텍처에는 메모리 접근과 같은 다른 단계가 포함되기도 한다.

주변 장치를 포함할지 여부와 같은 시스템 수준의 설계 결정은 마이크로아키텍처 설계 프로세스의 일부로 간주될 수 있다. 여기에는 이러한 주변 장치의 성능 수준 및 연결성에 대한 결정이 포함된다.

아키텍처 설계는 특정 성능 수준을 달성하는 것이 주요 목표이지만, 마이크로아키텍처 설계는 다른 제약 조건에 더 많은 주의를 기울인다. 마이크로아키텍처 설계 결정은 시스템에 무엇이 들어가는지에 직접적인 영향을 미치기 때문에 다음과 같은 문제에 주의를 기울여야 한다.

고려 사항
칩 영역/비용
전력 소비
논리의 복잡함
연결의 쉬움
제조할 수 있음
오류 정정의 쉬움
시험할 수 있음


4. 1. 실행 유닛

실행 유닛은 마이크로아키텍처의 필수 요소이다. 실행 유닛에는 산술 논리 연산 장치(ALU), FPU, 로드/저장 유닛, 분기 예측 유닛, SIMD 등이 포함된다.[5] 이러한 유닛들은 프로세서의 연산 또는 계산을 수행한다. 실행 유닛 수, 지연 시간, 처리량을 선택하는 것은 핵심적인 마이크로아키텍처 설계 작업이다.

4. 2. 메모리 시스템

CPU 캐시는 매우 빠르고 비싼 메모리이다. 캐시는 메인 메모리와 "통신"하는 데 필요한 여러 사이클 대신 몇 사이클 만에 접근할 수 있다. CPU는 캐시에서 읽고 쓰는 작업을 자동화하는 캐시 컨트롤러를 포함한다. 데이터가 이미 캐시에 있으면 상당한 시간 절약으로 캐시에서 접근되며, 그렇지 않으면 캐시 컨트롤러가 데이터를 읽는 동안 프로세서가 "스톨"된다.

RISC 설계는 1980년대 중후반에 캐시를 추가하기 시작했으며, 총 4KB에 불과한 경우가 많았다. 이 숫자는 시간이 지남에 따라 증가하여, 현재 일반적인 CPU는 최소 2MB의 캐시를 가지고 있으며, 더 강력한 CPU는 4, 6, 12MB, 심지어 32MB 이상의 캐시를 탑재하고 있으며, 최근 출시된 EPYC Milan-X 라인에서는 768MB가 가장 많으며, 메모리 계층의 여러 레벨로 구성된다. 일반적으로 더 많은 캐시는 스톨 감소로 인해 더 높은 성능을 의미한다.

캐시와 파이프라인은 서로 완벽한 조합이었다. 이전에는 칩 외부 메모리의 접근 지연 시간보다 더 빠르게 실행될 수 있는 파이프라인을 구축하는 것이 큰 의미가 없었다. 대신 온칩 캐시 메모리를 사용하면 파이프라인이 캐시 접근 지연 시간의 속도, 즉 훨씬 짧은 시간으로 실행될 수 있었다. 이를 통해 프로세서의 작동 주파수가 칩 외부 메모리의 작동 주파수보다 훨씬 더 빠르게 증가할 수 있었다.

5. 마이크로아키텍처 설계 개념

모든 CPU는 일반적으로 단일 칩이든 다중 칩 마이크로프로세서이든 관계없이, 프로그램을 실행할 때 다음과 같은 단계적인 연산을 수행한다.

1. 명령어를 읽고 해석한다.

2. 명령어와 필요한 데이터를 연결한다.

3. 명령어를 실행한다.

4. 결과를 출력한다.

겉보기에는 간단해 보이지만, 메인 메모리와 하드 디스크 같은 비휘발성 기억 장치는 프로세서보다 속도가 느려 복잡한 문제가 발생한다. 2단계에서 데이터가 도착할 때까지 CPU가 지연되는 것을 막기 위해, 여러 명령어를 병렬로 실행하여 속도를 향상시키는 연구가 많이 진행되었다. 이러한 노력으로 복잡한 논리 회로와 회로 구조가 도입되었는데, 초기에는 고가의 메인프레임과 슈퍼컴퓨터에만 적용되었다. 그러나 반도체 기술이 발전하면서 이러한 기법을 하나의 칩에 더 많이 탑재할 수 있게 되었다.

CPU 처리 과정에 대한 자세한 내용은 CPU 문서를, CPU 발전 과정에 대한 자세한 내용은 :en:History of general purpose CPUs 문서를 참조하면 된다.

5. 1. 멀티사이클 마이크로아키텍처

초기 컴퓨터들은 멀티사이클 설계를 사용했다. 가장 작고 저렴한 컴퓨터들은 종종 이 기술을 여전히 사용한다. 멀티사이클 아키텍처는 종종 최소한의 논리 소자 수와 합리적인 전력 소모를 사용한다. 또한 결정론적인 타이밍과 높은 신뢰성을 갖도록 설계할 수 있다. 특히 조건 분기나 인터럽트 발생 시 파이프라인을 중단할 필요가 없다. 그러나 다른 마이크로아키텍처는 종종 동일한 논리 소자를 사용하여 단위 시간당 더 많은 명령을 수행한다. "성능 향상"에 대해 논의할 때, 개선은 종종 멀티사이클 설계와 비교하여 이루어진다.[6]

멀티사이클 컴퓨터에서는 컴퓨터가 클럭의 여러 사이클에 걸쳐 4단계를 순차적으로 수행한다. 일부 설계는 번갈아 가며 클럭 가장자리에서 연속적인 단계를 완료하여 두 클럭 사이클로 시퀀스를 수행할 수 있으며, 아마도 더 긴 연산이 메인 사이클 외부에서 발생할 수 있다. 예를 들어, 첫 번째 사이클의 상승 에지에서 1단계, 첫 번째 사이클의 하강 에지에서 2단계 등을 수행한다.[6]

제어 로직에서 사이클 카운터, 사이클 상태(높음 또는 낮음) 및 명령 디코드 레지스터의 비트 조합은 컴퓨터의 각 부분이 정확히 무엇을 해야 하는지를 결정한다. 제어 로직을 설계하기 위해 각 명령어의 각 사이클에서 컴퓨터의 각 부분에 대한 제어 신호를 설명하는 비트 테이블을 만들 수 있다. 그런 다음 이 로직 테이블은 테스트 코드를 실행하는 소프트웨어 시뮬레이션에서 테스트할 수 있다. 로직 테이블이 메모리에 배치되어 실제 컴퓨터를 실행하는 데 사용되는 경우, 이를 마이크로프로그램이라고 한다. 일부 컴퓨터 설계에서는 로직 테이블이 논리 게이트로 구성된 조합 논리의 형태로 최적화되며, 일반적으로 논리를 최적화하는 컴퓨터 프로그램을 사용한다. 초기 컴퓨터들은 모리스 윌크스가 이 표 형식 접근 방식을 발명하고 마이크로프로그래밍이라고 부르기 전까지 임시 논리 설계를 제어에 사용했다.[6]

5. 2. 명령어 파이프라인

파이프라인 데이터 경로는 오늘날 마이크로아키텍처에서 가장 일반적으로 사용되는 데이터 경로 설계이다. 이 기술은 대부분의 최신 마이크로프로세서, 마이크로컨트롤러, DSP에 사용된다. 파이프라인 아키텍처를 통해 여러 명령어가 마치 조립 라인처럼 실행을 중복할 수 있다. 파이프라인에는 마이크로아키텍처 설계의 기본이 되는 여러 단계가 포함된다.[5] 이러한 단계 중 일부는 명령어 인출, 명령어 디코딩, 실행 및 쓰기 백을 포함한다. 일부 아키텍처에는 메모리 접근과 같은 다른 단계가 포함된다. 파이프라인 설계는 핵심적인 마이크로아키텍처 작업 중 하나이다.

명령어 파이프라인은 성능을 향상시키는 최초이자 가장 강력한 기술 중 하나이다. 초기 프로세서 설계는 다음 명령어로 넘어가기 전에 하나의 명령어에 대해 위에서 언급한 모든 단계를 수행했다. 회로의 상당 부분이 각 단계에서 유휴 상태로 남아 있었다. 예를 들어, 명령어 디코딩 회로는 실행 중에 유휴 상태가 되는 식이다.

파이프라인은 여러 개의 명령어가 동시에 프로세서를 통과하도록 함으로써 성능을 향상시킨다. 동일한 기본 예에서, 프로세서는 마지막 명령어가 결과를 기다리는 동안 새로운 명령어의 디코딩(1단계)을 시작할 것이다. 이렇게 하면 최대 4개의 명령어가 동시에 "실행 중" 상태가 되어, 프로세서가 4배 더 빠르게 보이게 된다. 하나의 명령어가 완료되는 데 걸리는 시간은 동일하지만(여전히 4단계가 있음) CPU 전체가 명령어를 훨씬 더 빠르게 "종료"한다.

RISC는 명령어 프로세스의 각 단계를 명확하게 분리하고 동일한 시간(1 사이클)을 소요하도록 함으로써 파이프라인을 더 작고 구성하기 훨씬 쉽게 만든다. 프로세서 전체는 조립 라인 방식으로 작동하며, 명령어가 한쪽으로 들어오고 결과가 다른 쪽으로 나간다. 클래식 RISC 파이프라인의 단순성이 감소했기 때문에 파이프라인 코어와 명령어 캐시는 CISC 설계에서 코어만 들어갈 수 있는 크기의 다이에 배치할 수 있었다. 이것이 RISC가 더 빨랐던 진짜 이유였다. SPARCMIPS와 같은 초기 설계는 동일한 클럭 속도와 가격에서 인텔(Intel) 및 모토로라(Motorola) CISC 솔루션보다 10배 이상 빠르게 실행되는 경우가 많았다.

파이프라인은 RISC 설계에만 국한되지 않는다. 1986년까지 최고급 VAX 구현(VAX 8800)은 최초의 상업용 MIPS 및 SPARC 설계를 약간 앞선 고도로 파이프라인화된 설계였다. 대부분의 최신 CPU(임베디드 CPU 포함)는 현재 파이프라인화되어 있으며, 파이프라인이 없는 마이크로코드 CPU는 면적 제약이 가장 심한 임베디드 프로세서에서만 볼 수 있다. VAX 8800부터 최신 펜티엄 4 및 애슬론에 이르기까지 대형 CISC 머신은 마이크로코드와 파이프라인으로 구현된다. 파이프라인 및 캐싱의 개선은 프로세서 성능이 기반이 되는 회로 기술과 속도를 맞출 수 있도록 하는 두 가지 주요 마이크로아키텍처 발전이다.

5. 3. 슈퍼스칼라


  • -|]]|thumb|upright=2|인텔 80286 마이크로아키텍처]]

슈퍼스칼라 프로세서는 산술 논리 연산 장치(ALU)와 같은 기능 유닛을 복제하여 여러 명령을 동시에 처리함으로써 컴퓨터 프로그램의 실행 속도를 높인다. 기능 유닛 복제는 단일 명령 프로세서의 다이 면적이 더 이상 안정적으로 제조할 수 있는 한계를 초과하지 않게 되었을 때 가능해졌다. 1980년대 후반부터 슈퍼스칼라 설계가 시장에 등장하기 시작했다.

현대적인 설계에서는 두 개의 로드 유닛, 하나의 저장 유닛(많은 명령에는 저장할 결과가 없음), 두 개 이상의 정수 연산 유닛과 부동 소수점 유닛, 그리고 종종 어떤 종류의 SIMD 유닛을 찾아볼 수 있다. 명령어 발행 로직은 메모리에서 방대한 명령어 목록을 읽어 해당 시점에 유휴 상태인 서로 다른 실행 유닛에 전달함으로써 복잡성이 증가한다. 그런 다음 결과를 수집하여 최종적으로 재정렬한다.[5]

5. 4. 비순차 실행 (Out-of-Order Execution)

캐시를 추가하면 메모리 계층에서 데이터를 가져오기 위해 대기하는 데 따른 중단 빈도나 기간을 줄일 수 있지만, 이러한 중단을 완전히 제거하지는 못한다. 초기 설계에서는 ''캐시 미스''가 발생하면 캐시 컨트롤러가 프로세서를 정지시키고 대기해야 했다. 물론 그 시점에서 캐시에 데이터가 ''있는'' 프로그램의 다른 명령어가 있을 수 있다. 비순차 실행(Out-of-Order Execution)을 사용하면 이전 명령어가 캐시에서 대기하는 동안 해당 준비된 명령을 처리한 다음, 결과를 재정렬하여 모든 것이 프로그래밍된 순서대로 발생한 것처럼 보이게 할 수 있다. 이 기술은 긴 대기 시간 부동 소수점 연산이나 기타 여러 사이클 연산의 결과를 기다리는 명령과 같은 다른 피연산자 종속성 중단을 방지하는 데에도 사용된다.[5]

5. 5. 분기 예측

분기 예측은 파이프라인에서 조건 분기 명령어가 실행될 때, 해당 분기가 실제로 일어날지 (즉, 조건이 참이 될지) 미리 예측하여 성능 향상을 꾀하는 기술이다.

일반적으로 조건 분기는 레지스터의 연산 결과에 따라 결정되는데, 이 결과는 파이프라인의 후반부에서나 알 수 있다. 따라서 프로세서가 조건 분기 명령어를 만나면, 결과를 알 때까지 파이프라인이 정지(스톨)될 수 있다. 이는 전체적인 성능 저하로 이어진다. 특히, 현대 프로세서들은 파이프라인 단계가 매우 깊어(20단계 이상) 이러한 정지 시간이 더 길어질 수 있다.

분기 예측은 이러한 문제를 해결하기 위해 과거 분기 기록을 기반으로 통계적인 예측을 수행한다. 예를 들어, 특정 분기가 이전에도 자주 일어났다면, 이번에도 일어날 가능성이 높다고 예측하는 것이다. 예측이 정확하면 파이프라인 정지를 줄여 성능을 향상시킬 수 있다.[5]

투기적 실행은 분기 예측과 함께 사용되는 기술로, 예측된 경로의 명령어를 미리 실행하는 것을 의미한다. 예측이 맞으면 성능이 향상되지만, 예측이 틀리면 미리 실행한 결과를 취소해야 하므로 오히려 성능이 저하될 수 있다.

5. 6. 레지스터 리네이밍

레지스터 리네이밍은 프로그램 명령어들이 동일한 레지스터를 재사용하여 불필요하게 직렬화되는 실행을 피하기 위해 사용되는 기법이다. 동일한 레지스터를 사용할 두 그룹의 명령어가 있다고 가정할 때, 한 세트의 명령어가 먼저 실행되어 해당 레지스터를 다른 세트에 남겨두지만, 다른 세트가 다른 유사한 레지스터에 할당되면 두 세트의 명령어를 병렬(또는 직렬)로 실행할 수 있다.[5]

6. 현대 마이크로아키텍처 기술

현대 CPU는 위에서 설명한 다양한 기술들을 결합하여 성능을 극대화하고 있다. 특히, 다음과 같은 기술들이 활용된다.


  • 멀티프로세싱 및 멀티코어: 여러 개의 CPU를 사용하여 병렬성을 높이는 멀티프로세싱 기술과, 하나의 칩에 여러 CPU 코어를 집적하는 멀티코어 기술이 널리 사용된다.
  • 멀티스레딩: CPU가 느린 시스템 메모리에서 데이터를 기다리는 동안 다른 프로그램이나 스레드를 실행하여 CPU의 유휴 시간을 줄이는 멀티스레딩 기술이 사용된다.
  • 동시 멀티스레딩: 슈퍼스칼라 CPU에서 서로 다른 프로그램/스레드의 명령을 동시에 실행하는 동시 멀티스레딩 기술도 활용된다.


이러한 기술들은 단일 프로그램 또는 스레드를 넘어선 병렬성을 제공하여 시스템 전체의 성능을 향상시킨다.

6. 1. 멀티프로세싱 및 멀티코어

컴퓨터 아키텍트는 CPU 작동 주파수와 DRAM 접근 시간의 불일치가 커지는 문제에 직면했다. 이러한 문제를 해결하기 위해, 단일 프로그램 또는 프로그램 스레드 외부의 더 높은 수준의 병렬성을 활용하는 기술이 등장했다.

멀티프로세싱은 여러 개의 CPU를 가진 컴퓨터 시스템을 사용하여 병렬성을 달성하는 기술이다. 과거에는 고급 메인프레임 및 슈퍼컴퓨터에만 사용되었지만, 현재는 중소기업 및 대기업에서도 널리 사용된다. 1990년대부터는 여러 CPU를 가진 개인용 컴퓨터도 등장했다.

멀티코어 CPU는 반도체 기술 발전으로 트랜지스터 크기가 작아지면서 등장했다. 여러 CPU가 동일한 실리콘 칩에 구현되어, 2005년에는 듀얼 하이엔드 데스크톱 CPU ''CMP''[12] 칩을 대량 생산할 수 있게 되었다. 선 마이크로시스템즈의 UltraSPARC T1과 같이 더 많은 프로세서를 하나의 실리콘 조각에 집적하기 위해 더 간단한 설계를 사용한 경우도 있다.

6. 2. 멀티스레딩

멀티스레딩은 프로세서가 느린 시스템 메모리에서 데이터를 가져와야 할 때, 데이터를 기다리며 멈추는 대신 실행 준비가 된 다른 프로그램이나 프로그램 스레드로 전환하는 기술이다. 이는 특정 프로그램/스레드의 속도를 높이는 것은 아니지만, CPU가 유휴 상태로 있는 시간을 줄여 시스템 전체의 처리량(Throughput)을 향상시킨다.

개념적으로 멀티스레딩은 운영 체제 수준의 컨텍스트 스위치와 동일하다. 차이점은 멀티스레드 CPU가 일반적으로 수백 또는 수천 CPU 사이클이 필요한 컨텍스트 스위치를 한 CPU 사이클 내에 수행할 수 있다는 것이다. 이는 각 활성 스레드에 대한 상태 하드웨어(예: 레지스터 파일프로그램 카운터)를 복제하여 달성된다.[12]

더욱 향상된 기술은 동시 멀티스레딩이다. 이 기술을 통해 슈퍼스칼라 CPU는 동일한 사이클 내에서 서로 다른 프로그램/스레드의 명령을 동시에 실행할 수 있다.[12]

7. CPU 아키텍처의 종류

x86-64 아키텍처 기반 CPU를 생산하는 인텔AMD는 PC 및 서버 시장에서 주도적인 역할을 하고 있다. ARM 아키텍처는 저전력 소비를 특징으로 하며, 모바일 기기 및 임베디드 시스템에서 널리 사용된다. 대한민국 기업들은 ARM 아키텍처 기반 모바일 프로세서 설계 및 생산에 강점을 보이고 있다.[13][14][15]

일반적인 운영 체제(OS)를 지원하는 PC 및 서버 환경을 기준으로, 널리 사용되는 CPU 종류는 다음과 같다.

CPU지원 OS성능
인텔윈도우, 리눅스, 맥, 유닉스계열, 솔라리스 등PC급, 서버급, 워크스테이션
AMD윈도우, 리눅스, 맥, 유닉스계열, 솔라리스 등PC급, 서버급, 워크스테이션
스팍솔라리스, 유닉스계열PC급, 서버급
ARM리눅스 계열 등스마트폰, 저전력 PC


8. 마이크로아키텍처 설계 시 고려 사항

마이크로아키텍처 설계는 시스템에 직접적인 영향을 미치므로, 특정 성능 수준을 목표로 할 때 다음과 같은 제약 조건에 더욱 세심한 주의를 기울여야 한다.

고려 사항
칩의 면적과 비용
소비 전력
로직의 복잡성
연결의 용이성
제조의 용이성
디버깅의 간편성
시험 방법, 능력[11]



파이프라인 처리는 현대적인 마이크로아키텍처에서 가장 많이 사용되는 데이터 처리 방법이며, 대부분의 현대적인 마이크로프로세서, 마이크로컨트롤러, DSP에 사용된다. 파이프라인 설계는 여러 개의 중복된 실행 처리가 가능하며, 마치 공장의 조립 라인처럼 작동한다. 파이프라인의 설계는 마이크로아키텍처 설계에서 수행하는 핵심적인 작업 중 하나이다.

실행 유닛 또한 마이크로아키텍처에 필수적인 요소이다. 실행 처리 유닛에는 산술 논리 장치(ALU), FPU(부동소수점 유닛), 로드/저장 유닛, 분기 예측 유닛, 여러 명령을 처리하는 SIMD 등으로 구성된다. 이러한 유닛들이 프로세서의 제어 및 연산을 수행한다. 실행 유닛 수의 선택, 해당 유닛들의 처리 시간(지연 시간)과 처리 능력(처리량)은 마이크로아키텍처 설계 작업의 핵심적인 부분이다. 크기, 지연 시간과 처리량, 그리고 시스템 메모리와의 연결 역시 마이크로아키텍처적 설계 결정 사항이다.

메모리 컨트롤러 등의 주변 회로를 포함할지 여부 등 시스템 레벨의 설계 사항도 마이크로아키텍처 설계 프로세스의 일부로 간주되며, 여기에는 성능 및 연결 방식에 대한 선택도 포함된다.

참조

[1] 서적 Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering https://www.acm.org/[...] Association for Computing Machinery 2004
[2] 서적 Computer Architecture and Organization, An Integrated Approach Wiley
[3] 서적 Principles of Computer Hardware
[4] 서적 Computer Architecture Pipelined and Parallel Processor Design Jones and Bartlett
[5] 서적 Computer Architecture: A Quantitative Approach Morgan Kaufmann
[6] 간행물 The Growth of Interest in Microprogramming: A Literature Survey
[7] 문서 computer organization
[8] 서적 Dictionary of Computer Science, Engineering, and Technology CRC Press 2001
[9] 서적 Computer Architecture: A Minimalist Perspective Springer 2003
[10] 서적 Fundamentals of Computer Organization and Design Springer 2003
[11] 서적 Computer Architecture: A Quantitative Approach Morgan Kaufmann Publishers, Inc 2003
[12] 문서 chip-level multiprocessing
[13] 웹사이트 오라클 https://www.oracle.c[...]
[14] 웹사이트 페도라 https://fedoramagazi[...]
[15] 웹사이트 Download the Arduino IDE https://www.arduino.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com