맨위로가기

중앙 처리 장치

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

1. 개요

중앙 처리 장치(CPU)는 컴퓨터의 핵심 부품으로, 프로그램의 명령어를 해석하고 실행하는 역할을 한다. 초기 CPU는 고정된 프로그램을 실행하는 데 사용되었으나, 저장 프로그램 방식 컴퓨터의 등장으로 소프트웨어 실행 장치로서의 CPU가 정의되었다. CPU는 명령어 인출, 해독, 실행, 메모리, 라이트백의 다섯 단계를 거쳐 명령어를 처리하며, 클럭 속도와 코어 수를 통해 성능이 결정된다. 주요 CPU 제조업체로는 인텔과 AMD가 있으며, 다양한 비트 폭과 용도로 사용된다. 최근에는 저전력화, 병렬 처리 기술, 멀티코어 기술 등이 CPU 성능 향상에 기여하고 있다. 또한 CPU는 마이크로컨트롤러(MCU) 형태로 다양한 임베디드 시스템에 활용되며, 컴퓨터의 두뇌에 비유되기도 한다.

더 읽어볼만한 페이지

  • 중앙 처리 장치 - 마이크로컨트롤러
    마이크로컨트롤러는 프로세서, 메모리, 입출력 기능을 단일 칩에 통합하여 임베디드 시스템의 핵심이 되는 부품으로, 프로그램 내장 방식을 통해 소프트웨어만으로 제어 기능 변경이 가능하며, 현재는 32비트 ARM, MIPS 아키텍처 기반 제품이 주를 이루고, 저전력 소모, 소형화, 다양한 기능 통합을 특징으로 다양한 분야에서 활용된다.
  • 중앙 처리 장치 - NX 비트
    NX 비트는 하드웨어 기반 보안 기능으로, 메모리 페이지의 실행 권한을 제어하여 특정 영역에서 코드 실행을 막아 버퍼 오버플로 공격과 같은 보안 위협을 줄이는 데 사용되며, AMD에서 처음 도입 후 다양한 프로세서와 운영체제에서 DEP 등의 이름으로 구현되었다.
  • 컴퓨터 용어 - 운영체제 서비스 관리
  • 컴퓨터 용어 - 맥스 아웃
    맥스 아웃은 아케이드 게임에서 점수가 더 이상 증가하지 않고 특정 값에서 멈추는 현상으로, 카운터 스톱과 관련되며 게임 요소의 표시 값과 내부 계산 값의 차이를 발생시키기도 한다.
  • 마이크로프로세서 - ARM 아키텍처
    ARM 아키텍처는 저전력 설계로 모바일 기기에서 널리 쓰이는 RISC 기반 프로세서 아키텍처로서, IP 코어 라이선스 모델과 ARM Flexible Access를 통해 다양한 분야로 확장되고 있다.
  • 마이크로프로세서 - 슬로켓
중앙 처리 장치

2. 역사

ENIAC과 같은 초기 컴퓨터는 다른 작업을 수행하려면 물리적으로 배선을 다시 해야 했기 때문에 "고정 프로그램 컴퓨터"라고 불렸다.[11][12] "CPU"라는 용어는 1955년 초부터 사용되었다.[11][12] "CPU"라는 용어는 일반적으로 소프트웨어(컴퓨터 프로그램) 실행을 위한 장치로 정의되기 때문에, CPU라고 정확하게 부를 수 있는 최초의 장치는 저장 프로그램 방식 컴퓨터의 출현과 함께 등장했다.

저장 프로그램 방식 컴퓨터의 아이디어는 이미 존 프레스퍼 에커트와 존 윌리엄 모클리의 ENIAC 설계에 존재했지만, 더 빨리 완성하기 위해 처음에는 생략되었다.[13] 1945년 6월 30일, ENIAC이 만들어지기 전에 수학자 존 폰 노이만은 "EDVAC에 관한 보고서 초안"이라는 제목의 논문을 배포했다. 그것은 결국 1949년 8월에 완성될 저장 프로그램 방식 컴퓨터의 개요였다.[14] EDVAC는 다양한 유형의 특정 수의 명령어(또는 연산)를 수행하도록 설계되었다. 중요한 것은 EDVAC용으로 작성된 프로그램이 컴퓨터의 물리적 배선으로 지정되는 것이 아니라 고속 컴퓨터 메모리에 저장된다는 점이다.[15] 이것은 새로운 작업을 수행하도록 컴퓨터를 재구성하는 데 필요한 상당한 시간과 노력이라는 ENIAC의 심각한 한계를 극복했다.[16] 폰 노이만의 설계를 통해 EDVAC이 실행하는 프로그램은 메모리 내용을 변경하는 것만으로 간단하게 변경할 수 있었다. EDVAC은 최초의 저장 프로그램 방식 컴퓨터는 아니었다. 소규모 실험용 저장 프로그램 방식 컴퓨터인 맨체스터 베이비는 1948년 6월 21일에 최초의 프로그램을 실행했고[17] 맨체스터 마크 1은 1949년 6월 16일부터 17일 밤에 최초의 프로그램을 실행했다.[18]

초기 CPU는 더 크고 때로는 독특한 컴퓨터의 일부로 사용되는 맞춤형 설계였다.[19] 그러나 특정 응용 프로그램을 위한 맞춤형 CPU를 설계하는 이 방법은 대량으로 생산되는 다목적 프로세서 개발로 대체되었다. 이 표준화는 개별 트랜지스터 메인프레임 및 미니컴퓨터 시대에 시작되었으며, 집적 회로(IC)의 대중화와 함께 급속도로 가속화되었다. IC는 점점 더 복잡한 CPU를 나노미터 단위의 허용 오차로 설계하고 제조할 수 있도록 했다.[20] CPU의 소형화와 표준화는 모두 현대 생활에서 디지털 장치의 존재를 전용 컴퓨팅 머신의 제한된 응용 프로그램을 훨씬 넘어 증가시켰습니다. 현대 마이크로프로세서는 자동차[21]에서 휴대 전화[22]에 이르기까지 그리고 때로는 장난감에도 나타납니다.[23][24]

폰 노이만은 EDVAC 설계로 저장 프로그램 방식 컴퓨터 설계의 공로를 가장 많이 인정받고 그 설계는 폰 노이만 구조로 알려졌지만, 그 이전의 콘라드 추제와 같은 다른 사람들도 유사한 아이디어를 제안하고 구현했다.[25] EDVAC보다 먼저 완성된 하버드 마크 I의 소위 하버드 구조[26][27]도 전자 메모리가 아니라 펀치 천공 테이프를 사용하는 저장 프로그램 방식 설계를 사용했다.[28] 폰 노이만 구조와 하버드 구조의 주요 차이점은 후자는 CPU 명령어와 데이터의 저장 및 처리를 분리하는 반면 전자는 둘 다에 대해 동일한 메모리 공간을 사용한다는 점이다.[29] 대부분의 현대 CPU는 주로 폰 노이만 구조이지만 하버드 구조의 CPU도 볼 수 있으며, 특히 임베디드 애플리케이션에서 볼 수 있습니다. 예를 들어, Atmel AVR 마이크로컨트롤러는 하버드 구조 프로세서이다.[30]

릴레이진공관(열전자관)은 일반적으로 스위칭 요소로 사용되었다.[31][32] 유용한 컴퓨터에는 수천 또는 수만 개의 스위칭 장치가 필요합니다. 시스템의 전반적인 속도는 스위치의 속도에 따라 달라집니다. EDVAC과 같은 진공관 컴퓨터는 평균적으로 고장 간 8시간이 걸리는 경향이 있었지만, 더 느리지만 이전의 하버드 마크 I과 같은 릴레이 컴퓨터는 매우 드물게 고장났습니다.[12] 결국 튜브 기반 CPU가 지배적이 된 것은 속도 향상이라는 상당한 이점이 일반적으로 신뢰성 문제를 능가했기 때문입니다. 이러한 초기 동기식 CPU의 대부분은 현대 마이크로전자 설계와 비교하여 낮은 클록 속도로 실행되었습니다. 100 kHz에서 4MHz에 이르는 클록 신호 주파수는 당시 매우 일반적이었으며, 주로 사용된 스위칭 장치의 속도에 의해 제한되었습니다.[33]

ENIAC


현대의 중앙 처리 장치(CPU)와 같은 장치가 등장하기 전, ENIAC과 같은 계산기는 실행할 처리 내용을 바꿀 때마다 물리적으로 배선을 변경해야 했다. 이러한 기계는 프로그램을 변경하기 위해 물리적으로 재구성해야 하는(예를 들어 ENIAC에서는 패치 패널이 사용되었다) 경우가 많아 "프로그램 고정 계산기"라고 불리기도 한다(ENIAC은 기능과 성능이 매우 제한적이지만, 어느 정도 프로그램 내장 방식적인 동작도 가능했다).

CPU는 일반적으로 소프트웨어(프로그램)를 실행하는 장치로 정의되기 때문에, CPU라고 부를 수 있는 장치가 등장한 것은 프로그램 내장 방식의 컴퓨터부터이다. 프로그램 내장 방식의 개념은 ENIAC 설계 시 이미 존재했지만, 기계의 완성을 조기에 가능하게 하기 위해 ENIAC 초기 단계에서는 채택되지 않았다. ENIAC이 완성되기 전인 1945년 6월 30일, 수학자 존 폰 노이만(John von Neumann)의 이름으로 EDVAC에 관한 보고서 초고(First Draft of a Report on the EDVAC)라는 보고서가 공개·배포되었다. 이 보고서에는 프로그램 내장 방식의 컴퓨터 설계에 대한 개요가 설명되어 있다. 이 보고서는 EDSAC 등에 영향을 주었다. EDVAC은 1949년 8월에 일단 완성되어 애버딘으로 이전되었다. EDVAC은 다양한 명령어의 집합을 실행하도록 설계되었다. 명령어를 조합함으로써 실용적인 프로그램을 구성하고 EDVAC에서 동작시킬 수 있었다. EDVAC에서는 프로그램이 고속의 메모리에 저장되어 있으며, 물리적으로 배선을 변경함으로써 지정되는 것이 아닌 점이 중요하다. 폰 노이만 구조 설계에서는 EDVAC에서 동작시키는 프로그램을 변경하려면 메모리를 다시 쓰면 되었다(폰 노이만 구조는 프로그램 내장뿐만 아니라 프로그램이 데이터로서 다시 쓸 수 있는 점까지 포함하는 점에 유의).

결과적으로 폰 노이만 구조로 먼저 완성된 것은 EDSAC(1949년)과 맨체스터 마크 1의 시제품 ''베이비''(1948년)이었다. EDVAC은 설계가 먼저 시작되었지만, 설계자 간의 문제로 완성이 늦어졌다. 또한, 아이디어 수준에서는 콘라드 추제(Konrad Zuse)가 1941년에 Zuse Z3를 개발했는데, 그 이전에 프로그램 내장 방식(다시 쓰는 것이 아닌 점에 유의)을 고안했었다. Z3는 1998년에 튜링 완전임이 증명되었다. 데이터와 프로그램을 같은 기억 장치에 저장하는지 여부가 다른 방식으로 하버드 구조가 있다. 이것은 EDVAC 이전에 완성된 하버드 마크 1에 유래한다. 동기는 천공 테이프에 프로그램을 저장했다. 폰 노이만 구조와 하버드 구조의 큰 차이는 후자가 명령어와 데이터의 저장 위치와 처리를 완전히 분리하고 있는 것이며, 전자는 모두 같은 기억 영역에 저장한다. 범용 CPU는 기본적으로 폰 노이만 구조이지만, 하버드 구조도 부분적으로 채택되고 있다(캐시 메모리 등).

디지털 기기로서의 CPU는 상태를 변경하거나 표현하기 위해 어떤 스위치를 필요로 한다. 전기 기계식에서 전자식으로 이행하는 기간에는 릴레이와 진공관이 스위치로 사용되었다. 이들은 종래의 완전한 기계식보다 고속으로 스위치를 전환할 수 있었지만, 채터링을 비롯하여 코일(인덕터)에 의해 발생하는 고전압 등의 문제가 있었다. 한편, 진공관은 채터링은 일으키지 않지만, 기능하려면 열이 필요하고, 열화에 의해 작동 중에 음극의 전자 방출 능력이 감소(에미션 감소)하여 작동 불능이 되어 버린다. 진공관이 열화·고장나면, 고장난 부위를 특정하여 교체해야 한다. 따라서 초기의 전자 계산기는 고속화는 실현했지만, 전기 기계식 계산기보다 신뢰성이 낮았다. EDVAC과 같은 진공관 계산기는 고장과 고장 사이의 평균 시간(MTBF = Mean Time Between Failure)이 약 8시간이었지만, 하버드 마크 1과 같은 릴레이식 계산기는 거의 고장나지 않았다. 그러나, 진공관식 계산기가 주류가 되어 갔다. 당시의 동기식 CPU의 클록 주파수는 현재의 CPU에 비해 매우 느리고, 100 kHz~4 MHz 정도였다. 이것은 당시의 논리 소자(진공관)의 스위칭 속도에 의해 한계가 정해져 있었다.

2. 1. CPU의 출현

ENIAC같은 '고정된-프로그램 컴퓨터'는 다른 종류의 작업을 하기 위해 전선을 재배열하는 과정이 필요했다. "CPU"라는 용어가 소프트웨어의 실행을 위한 장치로 불리게 된 이래로, CPU라고 불릴 수 있는 장치의 출현은 프로그램 내장 방식 컴퓨터의 출현 덕분이었다.

프로그램 내장 방식 컴퓨터는 J. Presper Eckrt와 John Willian Mauchly의 ENIAC 설계에도 이미 어느 정도 드러나 있지만, 빠른 제작을 위해서 생략되었다. 1945년 6월 30일 수학자 폰 노이만은 'EDVAC 초안에 대한 보고'라는 논문을 발표했는데, 이것은 1949년에 완전히 정립된 프로그램 내장 방식 컴퓨터의 개요였다. EDVAC은 일정한 수의 다양한 작업을 수행하기 위해 고안되었으며, EDVAC 프로그램은 물리적 선의 연결이 아니라 빠른 속도의 컴퓨터 메모리에 저장되어 새로운 작업을 수행하기 위한 시간과 노력을 줄이는데 기여했다. 폰 노이만의 디자인은 소프트웨어(프로그램)를 단순히 메모리에 있는 내용을 바꾸는 것만으로 손쉽게 실행할 수 있게 만들어 주었다. 하지만 EDVAC은 최초의 프로그램 내장방식 컴퓨터는 아니었다. 맨체스터 대학교의 SSEM(Small-Scale Experimental Machine)과 마크 1이 프로그램 내장 방식 컴퓨터의 초기 버전이다.

2. 2. 트랜지스터와 집적회로 CPU의 등장

트랜지스터 CPU는 트랜지스터 발명 이후 등장했다. 트랜지스터는 같은 역할을 하던 진공관을 빠르게 대체하여 CPU의 부피를 줄일 수 있게 되었다.[34] 1950년대와 1960년대의 트랜지스터 기반 CPU는 더 이상 진공관이나 릴레이와 같이 부피가 크고, 신뢰성이 떨어지며, 취약한 스위칭 요소로 만들어질 필요가 없었다.[34] 이러한 개선으로 더욱 복잡하고 안정적인 CPU가 개별 부품을 포함하는 하나 또는 여러 개의 인쇄 회로 기판에 구축되었다. 트랜지스터 기반 컴퓨터는 이전 모델에 비해 신뢰성 향상과 전력 소비 감소, 그리고 진공관이나 릴레이에 비해 전환 시간이 짧아 CPU가 훨씬 더 빠른 속도로 작동할 수 있게 했다.[40] 이 시점에는 거의 전적으로 트랜지스터가 사용되었던 스위칭 요소의 신뢰성 향상과 극적으로 향상된 속도 덕분에 이 기간 동안 수십 메가헤르츠의 CPU 클록 속도를 쉽게 얻을 수 있었다.[41]

IBM PowerPC 604e 프로세서


1964년, IBM은 서로 다른 속도와 성능으로 동일한 프로그램을 실행할 수 있는 일련의 컴퓨터에 사용된 IBM System/360 컴퓨터 아키텍처를 도입했다.[35] 이는 같은 제조업체에서 만든 컴퓨터라도 서로 호환되지 않는 경우가 대부분이었던 당시에는 매우 중요한 일이었다. 이러한 개선을 위해 IBM은 오늘날에도 널리 사용되는 마이크로프로그램(흔히 "마이크로코드"라고 함)의 개념을 사용했다.[36] System/360 아키텍처는 매우 인기가 많아 수십 년 동안 메인프레임 컴퓨터 시장을 지배했으며, IBM zSeries와 같은 유사한 최신 컴퓨터로 이어지는 유산을 남겼다.[37][38] 1965년, 디지털 이큅먼트 코퍼레이션(DEC)은 과학 및 연구 시장을 겨냥한 또 다른 영향력 있는 컴퓨터인 PDP-8을 출시했다.[39]

후지쓰 본사에 전시된 SPARC64 VIIIfx 프로세서가 장착된 후지쓰 기판


이 시기에 많은 상호 연결된 트랜지스터를 소형 공간에 제조하는 방법이 개발되었다. 집적 회로(IC)는 단일 반도체 기반 다이 또는 "칩"에 많은 수의 트랜지스터를 제조할 수 있게 했다. 처음에는 NOR 게이트와 같이 매우 기본적인 비전문적인 디지털 회로만이 IC로 소형화되었다.[43] 이러한 "기본 구성 요소" IC를 기반으로 하는 CPU는 일반적으로 "소규모 집적 회로"(SSI) 장치라고 한다. 아폴로 유도 컴퓨터에 사용된 것과 같은 SSI IC는 일반적으로 수십 개의 트랜지스터를 포함했다. SSI IC로 전체 CPU를 구축하려면 수천 개의 개별 칩이 필요했지만, 이전의 개별 트랜지스터 설계보다 훨씬 적은 공간과 전력을 소비했다.[44]

IBM의 시스템/370은 System/360의 후속 제품으로 솔리드 로직 기술 개별 트랜지스터 모듈 대신 SSI IC를 사용했다.[45][46]

DEC PDP-8/I의 CPU, 코어 메모리 및 외부 버스 인터페이스(중규모 집적 회로로 제작)


DEC의 PDP-8/I 및 KI10 PDP-10도 PDP-8 및 PDP-10에서 사용된 개별 트랜지스터에서 SSI IC로 전환했으며,[47] 매우 인기 있는 PDP-11 라인은 원래 SSI IC로 제작되었지만, 이것이 실용적으로 가능해지자 결국 LSI 구성 요소로 구현되었다. 또한, 개별 트랜지스터와 IC CPU가 많이 사용되었지만, 단일 명령어, 다중 데이터(SIMD) 벡터 프로세서와 같은 새로운 고성능 설계가 등장하기 시작했다.[42] 이러한 초기 실험적 설계는 나중에 크레이 사와 후지쓰 주식회사에서 만든 것과 같은 특수한 슈퍼컴퓨터 시대를 열었다.[42]

2. 3. 마이크로프로세서

마이크로프로세서는 1970년대 페데리코 페긴(Federico Faggin)의 발명으로 CPU 설계 및 구현 방식에 혁명적인 변화를 가져왔다.[55] 1971년 최초의 상용 마이크로프로세서인 인텔 4004가 등장했고,[57] 1974년에는 최초로 널리 사용된 인텔 8080이 출시되었다.[57] 이들은 기존의 메인프레임 및 미니컴퓨터 제조업체들이 독자적인 IC 개발 프로그램을 시작하도록 이끌었으며, 결국 기존 하드웨어 및 소프트웨어와 역호환되는 명령어 집합을 갖춘 마이크로프로세서를 생산하게 되었다. 개인용 컴퓨터의 등장과 성공으로 "CPU"라는 용어는 대부분 마이크로프로세서를 지칭하게 되었다.[55]

다이 (실제 크기: 12 × 6.75 mm)가 장착된 인텔 80486DX2 마이크로프로세서


소켓에서 CPU를 제거한 노트북 내부


이전 세대의 CPU는 여러 개의 집적 회로(IC)로 구성되었지만,[56] 마이크로프로세서는 매우 적은 수의 IC(보통 하나)로 제조된다.[57] 단일 다이에 구현되어 크기가 작아지면서 패러시틱 커패시턴스 감소 등으로 전환 시간이 빨라졌다.[58][59] 이로 인해 동기식 마이크로프로세서는 수십 메가헤르츠에서 수 기가헤르츠의 클록 속도를 갖게 되었다. 또한, 무어의 법칙에 따라 트랜지스터 수가 증가하면서 CPU의 복잡성도 크게 증가했다.[60][61]

1950년대 이후 CPU의 복잡성, 크기, 구성 및 형태는 크게 변했지만,[62] 기본 설계와 기능은 폰 노이만 저장 프로그램 방식을 따르고 있다.[63] 그러나 전자 게이트의 소형화로 전자 이동 및 서브스레시홀드 누설과 같은 현상이 중요해지면서, 양자 컴퓨터와 같은 새로운 컴퓨팅 방법과 병렬 처리 기술이 연구되고 있다.[65][66]

1970년대에 프로세서는 1칩의 대규모 집적회로(LSI)에 집적되기 시작했다(마이크로프로세서). 초기에는 4비트 또는 8비트였으나, 1970년대 후반부터 1980년대에 걸쳐 미세화가 진행되면서 프로세스 보호 등 메인프레임 기능을 통합한 32비트 프로세서가 등장했다. 임베디드 시스템 용도로는 주변 기능과 메모리를 집적한 원칩 마이크로컴퓨터도 보급되었다. 초기에는 NMOS 논리 회로로 구성되었지만, 1980년대에는 CMOS화가 진행되어 소비 전력이 감소했다. CMOS는 데나드 법칙에 따라 미세화가 진행될수록 고속화 및 저전력화가 가능하다는 장점이 있다. 동작 주파수는 2000년대에 GHz 수준까지 상승했다. 미세화는 명령어 파이프라이닝이나 아웃오브오더 실행 등으로 명령어 수준 병렬 처리를 이끌어내는 복잡하고 고성능의 프로세서를 가능하게 했다. 그러나 2006년경 데나드 법칙이 붕괴되면서, 이후 비대칭형 다중 처리를 포함한 멀티코어화와 SIMD 성능 향상에 중점이 두어지고 있다.

3. 연산

모든 CPU에서 메모리에 저장된 명령어들을 순서대로 불러와서 실행한다는 사실은 물리적형태와는 관계없이 동일하다. 그리고 CPU가 이 동작을 수행하기 위해서는 꺼내고, 해독하고, 실행하는 5단계가 필요하다. 마지막 단계에서 명령어를 실행하고난 이후에는 다시 이 다섯 단계의 명령 주기가 반복되며, 프로그램 카운터의 변화된 위치에서 실행될 명령어를 불러오게 된다.

대부분의 중앙 처리 장치(CPU)는 물리적 형태에 관계없이 프로그램이라고 하는 저장된 명령어의 순차적인 실행이라는 기본 동작을 수행한다. 실행될 명령어는 일종의 컴퓨터 메모리에 저장된다. 거의 모든 CPU는 명령어 사이클이라고 총칭되는 인출, 디코딩, 실행 단계를 따른다.

명령어 실행 후, 프로그램 카운터의 증가된 값 때문에 일반적으로 다음 순서의 명령어를 인출하여 전체 과정이 반복된다. 점프 명령어가 실행되면 프로그램 카운터가 점프한 명령어의 주소를 포함하도록 수정되고 프로그램 실행이 정상적으로 계속된다. 더 복잡한 CPU에서는 여러 명령어를 동시에 인출, 디코딩 및 실행할 수 있다. 이 섹션에서는 많은 전자 장치(종종 마이크로컨트롤러라고 함)에 사용되는 단순한 CPU들 사이에서 매우 일반적인 "고전적인 RISC 파이프라인"이라고 일반적으로 불리는 것을 설명한다. 이것은 CPU 캐시의 중요한 역할과 따라서 파이프라인의 접근 단계를 크게 무시한다.

일부 명령어는 결과 데이터를 직접 생성하는 대신 프로그램 카운터를 조작한다. 이러한 명령어는 일반적으로 "점프"라고 하며 루프, 조건부 프로그램 실행(조건부 점프 사용), 및 함수의 존재와 같은 프로그램 동작을 용이하게 한다. 일부 프로세서에서 다른 명령어는 "플래그" 레지스터의 비트 상태를 변경한다. 이러한 플래그는 종종 다양한 연산의 결과를 나타내기 때문에 프로그램의 동작에 영향을 줄 수 있다. 예를 들어, 이러한 프로세서에서 "비교" 명령어는 두 값을 평가하고 어느 값이 더 큰지 또는 두 값이 같은지 나타내는 플래그 레지스터의 비트를 설정하거나 지운다. 그런 다음 이러한 플래그 중 하나를 나중 점프 명령어에서 사용하여 프로그램 흐름을 결정할 수 있다.

3. 1. 인출

인출(Fetch)은 프로그램 메모리에서 명령어(수 또는 수열로 표현됨)를 가져오는 과정이다. 프로그램 메모리에서 명령어의 위치(주소)는 프로그램 카운터(PC; 인텔 x86 마이크로프로세서에서는 "명령어 포인터"라고 함)에 의해 결정되는데, 프로그램 카운터는 다음에 인출될 명령어의 주소를 나타내는 숫자를 저장한다. 명령어가 인출된 후, 프로그램 카운터는 명령어의 길이만큼 증가하여 다음 명령어의 주소를 포함하게 된다. 종종 인출될 명령어는 상대적으로 느린 메모리에서 가져와야 하므로, 명령어가 반환될 때까지 CPU가 대기 상태가 된다.

3. 2. 해독

해독(Decode)은 인출 단계에서 가져온 명령어를 해독하여 명령어 내의 데이터 정보와 연산 정보를 추출한 뒤, 중앙처리 장치 내의 각 장치에 적절한 제어신호를 보내 연산, 처리에 대한 준비를 하는 단계이다.

중앙 처리 장치가 메모리에서 가져오는 명령어는 CPU가 수행할 작업을 결정한다. 명령어 디코더라고 하는 이진 디코더 회로에서 수행하는 디코딩 단계에서 명령어는 CPU의 다른 부분을 제어하는 신호로 변환된다.

명령어의 해석 방식은 CPU의 명령어 집합 아키텍처(ISA)에 의해 정의된다. 종종 명령어 내의 한 그룹의 비트(즉, "필드")는 opcode라고 하며 수행할 연산을 나타내는 반면, 나머지 필드는 일반적으로 피연산자와 같이 연산에 필요한 보조 정보를 제공한다. 이러한 피연산자는 상수 값(즉시 값이라고 함)으로 지정하거나, 프로세서 레지스터 또는 메모리 주소일 수 있는 값의 위치로 지정할 수 있으며, 이는 특정 어드레싱 모드에 따라 결정된다.

일부 CPU 설계에서는 명령어 디코더가 하드웨어로 구현된, 변경할 수 없는 이진 디코더 회로로 구현된다. 다른 경우에는 마이크로프로그램을 사용하여 명령어를 여러 클럭 펄스에 걸쳐 순차적으로 적용되는 CPU 구성 신호 집합으로 변환한다. 어떤 경우에는 마이크로프로그램을 저장하는 메모리가 재기록 가능하므로 CPU가 명령어를 디코딩하는 방식을 변경할 수 있다.

3. 3. 실행

실행(Execute)은 명령어에서 추출한 두 데이터와 연산 정보를 이용해 실제로 연산을 하는 단계를 말한다. 연산이 끝난 결과는 곧바로 다음 명령어에서 사용될지, 그렇지 않을지에 따라 메모리 단계로 갈지, 라이트백 단계로 갈지 결정된다.

인출 및 디코딩 단계 후에는 실행 단계가 수행된다. CPU 아키텍처에 따라 이는 단일 동작 또는 일련의 동작으로 구성될 수 있다. 각 동작 중에 제어 신호는 CPU의 다양한 부분을 전기적으로 활성화하거나 비활성화하여 원하는 작업의 전부 또는 일부를 수행할 수 있도록 한다. 그런 다음 일반적으로 클록 펄스에 따라 동작이 완료된다. 결과는 종종 후속 명령어가 빠르게 액세스할 수 있도록 내부 CPU 레지스터에 기록된다. 다른 경우에는 결과가 속도는 느리지만 비용이 저렴하고 용량이 큰 주기억장치에 기록될 수 있다.

예를 들어, 덧셈을 수행하는 명령어를 실행하려면 피연산자(합산할 숫자)가 포함된 레지스터와 덧셈을 수행하는 (ALU)의 부분이 활성화된다. 클록 펄스가 발생하면 피연산자가 소스 레지스터에서 ALU로 흐르고, 그 합이 출력에 나타난다. 후속 클록 펄스에서 다른 구성 요소가 활성화(및 비활성화)되어 출력(연산의 합)을 저장소(예: 레지스터 또는 메모리)로 이동한다. 결과 합이 너무 크면(즉, ALU의 출력 단어 크기보다 큼) 산술 오버플로 플래그가 설정되어 다음 연산에 영향을 미친다.

3. 4. 메모리

네 번째 단계인 메모리 단계에서는 연산 결과가 다음 명령어에 바로 사용되지 않는 경우, 그 결과를 메모리에 저장한다.

3. 5. 라이트백

연산의 마지막 단계인 라이트백은 이전 명령어의 연산 결과가 다음 명령어의 입력 데이터로 사용될 경우, 계산 결과를 레지스터에 다시 쓰는 것을 말한다.

4. 설계와 구현

기본적인 CPU의 구조


기본 구성으로는 CPU에서 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있다.

CPU의 내장회로는 CPU가 수행할 수 있는 기본적인 연산들의 집합인 '명령어 집합'으로 이루어져있다. 예를 들면 두 개의 숫자에 대한 가감연산 혹은 비교연산 같은 것이 있다. 각각의 기본 연산은 옵코드(opcode)라고 불리는 특정한 비트의 조합으로 나타내진다.

모든 명령어의 실제 수학적인 연산은 CPU 내부의 산술논리장치(ALU, arithmetic logic unit)이라는 조합논리회로에서 담당한다. CPU는 대부분 산술논리장치가 연산을 수행하기 위한 명령어를 메모리로부터 불러오고, 연산의 결과값을 저장하는 일을 한다. 메모리로부터 데이터를 불러오는 연산의 명령어 집합의 종류와 동작은 확연한 차이를 보인다.

기본 유니프로세서 CPU 컴퓨터의 블록 다이어그램. 검은색 선은 데이터 흐름을, 빨간색 선은 제어 흐름을 나타냅니다. 화살표는 흐름 방향을 나타냅니다.


CPU의 회로에 하드웨어적으로 내장된 기본 연산 집합을 명령어 집합(Instruction Set)이라고 한다. 이러한 연산에는 예를 들어 두 숫자를 더하거나 빼거나, 두 숫자를 비교하거나, 프로그램의 다른 부분으로 점프하는 것이 포함될 수 있다. 각 명령어는 기계어 연산 코드(opcode)로 알려진 고유한 비트 조합으로 표현된다. 명령어를 처리하는 동안 CPU는 (이진 디코더를 통해) 연산 코드를 제어 신호로 디코딩하며, 이는 CPU의 동작을 조정한다. 완전한 기계어 명령어는 연산 코드와, 많은 경우 연산에 대한 인수를 지정하는 추가 비트(예: 덧셈 연산의 경우 합산할 숫자)로 구성된다. 복잡성 측면에서, 기계어 프로그램은 CPU가 실행하는 기계어 명령어의 집합이다.

각 명령어에 대한 실제 수학적 연산은 CPU 프로세서 내부의 조합 논리 회로인 산술 논리 연산 장치(ALU, Arithmetic Logic Unit)에서 수행된다. 일반적으로 CPU는 메모리에서 명령어를 가져와 ALU를 사용하여 연산을 수행한 다음 결과를 메모리에 저장하는 방식으로 명령어를 실행한다. 정수 산술 및 논리 연산에 대한 명령어 외에도 메모리에서 데이터를 로드하고 다시 저장하는 명령어, 분기 연산, 그리고 CPU의 부동 소수점 연산 장치(FPU, Floating-Point Unit)에서 수행하는 부동 소수점 숫자에 대한 수학 연산과 같은 다양한 다른 기계어 명령어가 존재한다.[67]

4. 1. 구성 요소

폰 노이만 구조에서 제어 장치는 중앙 처리 장치(CPU)의 구성 요소로서 프로세서의 동작을 지시한다.[68] 컴퓨터의 메모리, 산술 논리 연산 장치(ALU), 입출력 장치에 프로세서로 전달된 명령에 어떻게 응답해야 하는지를 알려준다.[68] 대부분의 컴퓨터 자원은 제어 장치에 의해 관리되며, CPU와 다른 장치들 사이의 데이터 흐름을 제어한다.[68]

산술 논리 연산 장치(ALU)와 그 입력 및 출력 신호의 기호적 표현


산술 논리 연산 장치(ALU)는 프로세서 내부의 디지털 회로로, 정수 산술 연산과 비트 연산을 수행한다. ALU의 입력은 연산될 데이터 단어(피연산자)와 이전 연산의 상태 정보, 수행할 연산을 나타내는 제어 장치의 코드이다. 피연산자는 CPU 레지스터, 외부 메모리 또는 ALU 자체에서 생성된 상수에서 가져올 수 있다. 연산 결과는 레지스터나 메모리에 저장될 수 있는 데이터 단어와 특수한 내부 CPU 레지스터에 저장되는 상태 정보로 구성된다. 최신 CPU는 일반적으로 성능 향상을 위해 하나 이상의 ALU를 포함한다.

4. 2. 명령어 집합

4. 3. 산술논리연산장치 (ALU)



산술 논리 연산 장치(ALU, Arithmetic Logic Unit)는 프로세서 내부의 디지털 회로로, 정수 산술 연산과 비트 연산을 수행한다. ALU의 입력은 연산될 데이터 단어(피연산자(operands)라고 함), 이전 연산의 상태 정보, 그리고 수행할 연산을 나타내는 제어 장치의 코드이다. 실행되는 명령어에 따라 피연산자는 내부 CPU 레지스터, 외부 메모리 또는 ALU 자체에서 생성된 상수에서 가져올 수 있다.

모든 입력 신호가 안정되고 ALU 회로를 통해 전파되면 수행된 연산의 결과가 ALU의 출력에 나타난다. 결과는 레지스터나 메모리에 저장될 수 있는 데이터 단어와 일반적으로 이 목적으로 예약된 특수한 내부 CPU 레지스터에 저장되는 상태 정보로 구성된다.

최신 CPU는 성능 향상을 위해 일반적으로 하나 이상의 ALU를 포함한다.

5. 성능

중앙 처리 장치의 성능은 크게 클럭 속도와 코어 수로 결정된다.

프로세서의 ''성능'' 또는 ''속도''는 여러 요인 중에서도 클럭 속도(일반적으로 헤르츠의 배수로 표시)와 클럭당 명령어 수(IPC)에 따라 달라지며, 이 두 요소는 CPU가 수행할 수 있는 초당 명령어 수(IPS)를 결정하는 요소이다.[91]

많은 보고된 IPS 값은 분기가 거의 없는 인공적인 명령어 시퀀스에서의 "최고" 실행 속도를 나타내는 반면, 실제 작업 부하는 다양한 명령어와 응용 프로그램으로 구성되며, 일부는 다른 것보다 실행 시간이 더 오래 걸린다. 메모리 계층 구조의 성능 또한 프로세서 성능에 큰 영향을 미치는데, 이는 IPS 계산에서는 거의 고려되지 않는 문제이다. 이러한 문제 때문에, 일반적으로 사용되는 응용 프로그램에서 실제 효과적인 성능을 측정하기 위해 다양한 표준화된 테스트, 종종 이 목적을 위한 "벤치마크"라고 하는 테스트 (예: SPECint)가 개발되었다.

컴퓨터의 처리 성능은 다중 코어 프로세서를 사용하여 향상되는데, 이는 본질적으로 두 개 이상의 개별 프로세서(이 경우 ''코어''라고 함)를 하나의 집적 회로에 연결하는 것이다.[92] 이상적으로는 듀얼 코어 프로세서는 단일 코어 프로세서보다 거의 두 배나 강력할 것이다. 그러나 실제로는 불완전한 소프트웨어 알고리즘과 구현으로 인해 성능 향상이 훨씬 적어 약 50%에 불과하다.[93] 프로세서의 코어 수를 늘리면(즉, 듀얼 코어, 쿼드 코어 등) 처리할 수 있는 작업량이 증가한다. 즉, 프로세서는 이제 과부하 시 CPU에 부담이 될 수 있는 많은 비동기 이벤트, 인터럽트 등을 처리할 수 있다. 이러한 코어는 각 층이 다른 작업을 처리하는 처리 공장의 여러 층으로 생각할 수 있다. 때로는 단일 코어로 정보를 처리하기에 충분하지 않으면 이러한 코어가 인접한 코어와 동일한 작업을 처리하기도 한다. 다중 코어 CPU는 추가적인 처리 능력을 제공하여 컴퓨터가 여러 작업을 동시에 실행하는 기능을 향상시킨다. 그러나 속도 향상은 추가된 코어 수에 비례하지 않는다. 이는 코어가 특정 채널을 통해 상호 작용해야 하며, 이 코어 간 통신이 사용 가능한 처리 속도의 일부를 소모하기 때문이다.[94]

동시 멀티스레딩 및 언코어와 같이 실제 CPU 리소스를 공유하면서 활용도를 높이는 것을 목표로 하는 최신 CPU의 특정 기능으로 인해 성능 수준 및 하드웨어 사용량 모니터링이 점차 복잡해졌다.[95] 이에 대한 대응으로 일부 CPU는 CPU의 다양한 부분의 실제 사용량을 모니터링하고 소프트웨어에서 액세스할 수 있는 다양한 카운터를 제공하는 추가 하드웨어 로직을 구현한다. 예를 들어 Intel의 ''성능 카운터 모니터'' 기술이 있다.[96]

5. 1. 클럭

CPU에서 클럭이라는 수치는 중앙 처리 장치 내부에서 일정한 주파수를 가지는 신호로, 이 신호에 동기화되어 중앙 처리 장치의 모든 명령어가 동작하게 된다.[72] 예를 들어, 클럭 수가 3.0GHz이면 초당 30억 번의 명령어 처리를 할 수 있다는 말이다.[72] 따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 할 수 있다.[72]

대부분의 중앙 처리 장치는 동기 회로이며, 순차적인 연산의 속도를 조절하기 위해 클럭 신호를 사용한다. 클럭 신호는 주기적인 구형파 형태로 초당 일정한 수의 펄스를 생성하는 외부 발진 회로에 의해 생성된다. 클럭 펄스의 주파수는 CPU가 명령어를 실행하는 속도를 결정하며, 따라서 클럭이 빠를수록 CPU는 초당 더 많은 명령어를 실행한다.

CPU가 제대로 작동하려면 클럭 주기는 모든 신호가 CPU를 통해 전파(이동)하는 데 필요한 최대 시간보다 길어야 한다. 최악의 경우 전파 지연보다 훨씬 긴 값으로 클럭 주기를 설정하면 상승 및 하강 클럭 신호의 "엣지"를 중심으로 데이터를 이동하는 방식을 포함하여 전체 CPU를 설계할 수 있다. 이는 설계 관점과 부품 수량 관점 모두에서 CPU를 크게 단순화한다는 장점이 있다. 그러나 CPU의 일부는 훨씬 빠르더라도 전체 CPU가 가장 느린 요소를 기다려야 한다는 단점도 있다.

아키텍처 개선만으로는 전역적으로 동기화된 CPU의 모든 단점을 해결할 수 없다. 예를 들어, 클럭 신호는 다른 전기 신호의 지연의 영향을 받는다. 점점 더 복잡해지는 CPU에서 더 높은 클럭 속도는 전체 장치에서 클럭 신호의 위상(동기화)을 유지하기 어렵게 만든다. 이로 인해 많은 최신 CPU는 단일 신호의 지연이 CPU 오작동을 유발할 만큼 충분히 크지 않도록 여러 개의 동일한 클럭 신호를 제공해야 한다. 클럭 속도가 급격히 증가함에 따라 또 다른 주요 문제는 CPU에서 소비되는 열량이다. 지속적으로 변하는 클럭으로 인해 해당 시점에 사용 중인지 여부에 관계없이 많은 구성 요소가 전환된다. 일반적으로 전환 중인 구성 요소는 정적 상태의 요소보다 더 많은 에너지를 사용한다. 따라서 클럭 속도가 증가함에 따라 에너지 소비도 증가하여 CPU가 열 방출을 위해 CPU 냉각 솔루션이 더 필요하게 된다. 필요 없는 구성 요소의 전환을 처리하는 한 가지 방법은 클럭 게이팅이라고 하며, 필요 없는 구성 요소에 대한 클럭 신호를 끄는 것(실제로 비활성화)을 포함한다. 광범위한 클럭 게이팅을 사용하는 주목할 만한 최근 CPU 설계 중 하나는 Xbox 360에 사용된 IBM PowerPC 기반 Xenon이다.[72]

5. 2. 코어

중앙 처리 장치 안의 코어의 수로도 성능의 차이가 난다. 코어는 중앙 처리 장치의 역할을 하는 블록으로 예전에는 한 개의 칩 안에 한 개의 코어의 구조를 가진 싱글코어가 다수였지만 최근에는 한 개의 칩 안에 여러 개의 코어를 가지는 멀티코어 구조를 채택하고 있다.

싱글 코어(Single Core)는 하나의 코어로 이루어진 [https://rvpst.com/cpu-%ec%b6%94%ec%b2%9c/ CPU]이다. 일반적으로 멀티 코어에 비해 경비가 싸고 프로그래밍도 간단하지만 보수 작업이나 고장의 경우에는 시스템이 완전히 멈추고 수많은 작업을 잘 분산시키지 못해 멀티 코어에 비해 처리 속도가 느리다는 단점이 있다.

한 개의 칩 안에 여러 개의 연산을 처리할 수 있는 장치를 병렬적으로 연결한 멀티 코어 시스템을 통하여 더 좋은 성능의 중앙 처리 장치를 얻을 수 있게 된다. 하지만 프로그램을 작성할 때 멀티코어를 활용할 수 있도록 코딩해야 한다. 그렇지 않으면 멀티코어 CPU라도 멀티코어를 활용 못할 수 있다.

싱글 코어 및 다중 코어를 칭하는 명칭은 다음과 같다.

코어의 개수명칭
1싱글 코어
2듀얼 코어
3트리플 코어
4쿼드 코어
6헥사 코어
8옥타 코어
10데카 코어
12도데카 코어
16헥사 데시멀 코어



현재는 코어의 속도를 높이기 힘든 한계에 왔기 때문에, 속도보다는 병렬성을 높이는 것에 집중하여 CPU 다이에 64개의 코어를 넣은 AMD EPYC 7742 서버용 CPU도 출시되었다.

5. 2. 1. 싱글 코어

싱글 코어(Single Core)는 하나의 코어로 이루어진 [https://rvpst.com/cpu-%ec%b6%94%ec%b2%9c/ CPU]이다. 일반적으로 멀티 코어에 비해 경비가 싸고 프로그래밍도 간단하지만 보수 작업이나 고장의 경우에는 시스템이 완전히 멈추고 수많은 작업을 잘 분산시키지 못해 멀티 코어에 비해 처리 속도가 느리다는 단점이 있다.

5. 2. 2. 멀티 코어

한 개의 칩 안에 여러 개의 연산을 처리할 수 있는 장치를 병렬적으로 연결한 멀티 코어 시스템을 통하여 더 좋은 성능의 중앙 처리 장치를 얻을 수 있게 된다. 하지만 프로그램을 작성할 때 멀티코어를 활용할 수 있도록 코딩해야 한다. 그렇지 않으면 멀티코어 CPU라도 멀티코어를 활용 못할 수 있다.

싱글 코어 및 다중 코어를 칭하는 명칭은 다음과 같다.

코어의 개수명칭
1싱글 코어
2듀얼 코어
3트리플 코어
4쿼드 코어
6헥사 코어
8옥타 코어
10데카 코어
12도데카 코어
16헥사 데시멀 코어



현재는 코어의 속도를 높이기 힘든 한계에 왔기 때문에, 속도보다는 병렬성을 높이는 것에 집중하여 CPU 다이에 64개의 코어를 넣은 AMD EPYC 7742 서버용 CPU도 출시되었다.

6. CPU 메이커

세계적으로 유명한 CPU 제조업체로는 인텔AMD가 있다. 인텔은 코어, 제온, 펜티엄 등의 CPU를 제조하며, AMD는 라이젠, 스레드리퍼, EPYC 등의 CPU를 제조한다. 이 외에도 ARM의 Cortex, MIPS, 삼성, 썬 마이크로시스템즈의 SPARC, IBM의 POWER 등이 있다.

7. 구조와 동작



기본 구성으로는 CPU에서 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있다.

CPU의 내장회로는 CPU가 수행할 수 있는 기본적인 연산들의 집합인 '명령어 집합'으로 이루어져있다. 예를 들면 두 개의 숫자에 대한 가감연산 혹은 비교연산 같은 것이 있다. 각각의 기본 연산은 옵코드(opcode)라고 불리는 특정한 비트의 조합으로 나타내진다.

모든 명령어의 실제 수학적인 연산은 CPU 내부의 산술논리장치(ALU, arithmetic logic unit)이라는 조합논리회로에서 담당한다. CPU는 대부분 산술논리장치가 연산을 수행하기 위한 명령어를 메모리로부터 불러오고, 연산의 결과값을 저장하는 일을 한다. 메모리로부터 데이터를 불러오는 연산의 명령어 집합의 종류와 동작은 확연한 차이를 보인다.

대부분의 중앙 처리 장치(CPU)는 물리적 형태에 관계없이 프로그램이라고 하는 저장된 명령어의 순차적인 실행이라는 기본 동작을 수행합니다. 실행될 명령어는 일종의 컴퓨터 메모리에 저장됩니다. 거의 모든 CPU는 명령어 사이클이라고 총칭되는 인출, 디코딩, 실행 단계를 따릅니다.

명령어 실행 후, 프로그램 카운터의 증가된 값 때문에 일반적으로 다음 순서의 명령어를 인출하여 전체 과정이 반복됩니다. 점프 명령어가 실행되면 프로그램 카운터가 점프한 명령어의 주소를 포함하도록 수정되고 프로그램 실행이 정상적으로 계속됩니다. 더 복잡한 CPU에서는 여러 명령어를 동시에 인출, 디코딩 및 실행할 수 있습니다. 이 섹션에서는 많은 전자 장치(종종 마이크로컨트롤러라고 함)에 사용되는 단순한 CPU들 사이에서 매우 일반적인 "고전적인 RISC 파이프라인"이라고 일반적으로 불리는 것을 설명합니다. 이것은 CPU 캐시의 중요한 역할과 따라서 파이프라인의 접근 단계를 크게 무시합니다.

일부 명령어는 결과 데이터를 직접 생성하는 대신 프로그램 카운터를 조작합니다. 이러한 명령어는 일반적으로 "점프"라고 하며 루프, 조건부 프로그램 실행(조건부 점프 사용), 및 함수의 존재와 같은 프로그램 동작을 용이하게 합니다. 일부 프로세서에서 다른 명령어는 "플래그" 레지스터의 비트 상태를 변경합니다. 이러한 플래그는 종종 다양한 연산의 결과를 나타내기 때문에 프로그램의 동작에 영향을 줄 수 있습니다. 예를 들어, 이러한 프로세서에서 "비교" 명령어는 두 값을 평가하고 어느 값이 더 큰지 또는 두 값이 같은지 나타내는 플래그 레지스터의 비트를 설정하거나 지웁니다. 그런 다음 이러한 플래그 중 하나를 나중 점프 명령어에서 사용하여 프로그램 흐름을 결정할 수 있습니다.

CPU의 회로에 하드웨어적으로 내장된 기본 연산 집합을 명령어 집합(Instruction Set)이라고 합니다. 이러한 연산에는 예를 들어 두 숫자를 더하거나 빼거나, 두 숫자를 비교하거나, 프로그램의 다른 부분으로 점프하는 것이 포함될 수 있습니다. 각 명령어는 기계어 연산 코드(opcode)로 알려진 고유한 비트 조합으로 표현됩니다. 명령어를 처리하는 동안 CPU는 (이진 디코더를 통해) 연산 코드를 제어 신호로 디코딩하며, 이는 CPU의 동작을 조정합니다. 완전한 기계어 명령어는 연산 코드와, 많은 경우 연산에 대한 인수를 지정하는 추가 비트(예: 덧셈 연산의 경우 합산할 숫자)로 구성됩니다. 복잡성 측면에서, 기계어 프로그램은 CPU가 실행하는 기계어 명령어의 집합입니다.

각 명령어에 대한 실제 수학적 연산은 CPU 프로세서 내부의 조합 논리 회로인 산술 논리 연산 장치(ALU, Arithmetic Logic Unit)에서 수행됩니다. 일반적으로 CPU는 메모리에서 명령어를 가져와 ALU를 사용하여 연산을 수행한 다음 결과를 메모리에 저장하는 방식으로 명령어를 실행합니다. 정수 산술 및 논리 연산에 대한 명령어 외에도 메모리에서 데이터를 로드하고 다시 저장하는 명령어, 분기 연산, 그리고 CPU의 부동 소수점 연산 장치(FPU, Floating-Point Unit)에서 수행하는 부동 소수점 숫자에 대한 수학 연산과 같은 다양한 다른 기계어 명령어가 존재합니다.[67]

7. 1. 구조

CPU는 전체를 제어하는 제어 장치, 산술 논리 연산 장치(ALU), 데이터를 일시적으로 저장하는 레지스터, 메모리 등의 기억 장치와의 인터페이스, 주변 기기와의 입출력 장치와의 인터페이스 등으로 구성된다.

그 외에 부동소수점 연산을 수행하는 (부동소수점 연산 장치), 레지스터보다 많은 정보를 일시적으로 저장하는 캐시 메모리, DMA 컨트롤러, 타이머, 직렬 인터페이스 등의 기능을 CPU와 동일한 IC 내에 가지는 것도 있다. 또한 메모리에서 읽어들인 명령어를 내부적인 연산으로 변환하는 변환부를 가지는 것도 있다.

클럭 동기식 CPU는 클럭 신호에 의해 규칙적인 타이밍으로 각 부분의 동작을 통제받는다.

같은 아키텍처의 CPU라면 클럭 주파수가 높을수록 고속으로 동작하며, 단위 시간에 더 많은 것을 처리할 수 있다. 하지만 그 대신 소비 전력과 발열이 커진다는 문제도 발생한다.

1클럭으로 처리할 수 있는 내용은 CPU 및 명령어 세트의 설계에 따라 다르며, 여러 클럭으로 하나의 기계어 명령을 실행하는 것부터, 1클럭으로 여러 명령을 동시에 실행할 수 있는 것까지 있다. 클럭 주파수가 1 GHz인 CPU는 기본 회로가 1초에 10억 회의 동작을 한다.

많은 CPU에서, 대략적으로 제어 장치가 명령의 해석과 프로그램의 제어 흐름을 제어하고, 산술 논리 연산 장치가 연산을 실행한다.

고성능 CPU나, 비폰 노이만형 CPU, 이미지 처리용 CPU는 동시에 여러 명령을 실행할 수 있도록 여러 실행부를 동일 IC 내에 가지는 것도 있다.

7. 2. 동작

대부분의 중앙 처리 장치(CPU)는 물리적 형태에 관계없이 프로그램이라고 하는 저장된 명령어의 순차적인 실행이라는 기본 동작을 수행한다. 실행될 명령어는 일종의 컴퓨터 메모리에 저장된다. 거의 모든 CPU는 명령어 사이클이라고 총칭되는 인출, 디코딩, 실행 단계를 따른다.

폰 노이만형 CPU의 기본적인 동작은, 구현 방식에 관계없이 프로그램이라 불리는 명령어 목록을 순서대로 실행하는 것이다.

프로그램은 숫자열로서 어떤 메모리에 저장되어 있다. CPU에서는 '''명령어 가져오기'''(fetch), '''명령어 해독'''(decode), '''명령어 실행'''(execute)이라는 세 가지 단계가 거의 반드시 존재한다.

  • '''명령어 가져오기''': 실행할 명령어(어떤 숫자 또는 숫자의 나열)를 프로그램이 저장된 메모리에서 가져온다. 메모리 상에서 실행할 명령어의 위치는 프로그램 카운터가 지정한다. 프로그램 카운터는 CPU가 현재 보고 있는 프로그램 상의 위치를 나타낸다고도 할 수 있다. 명령어 가져오기에 사용되면 프로그램 카운터는 가져온 만큼 증가한다.

  • '''명령어 해독''': CPU가 메모리에서 가져온 명령어에 따라 CPU가 다음에 해야 할 일이 결정된다. 명령어를 CPU가 의미 있는 형식으로 분할한다. 명령어의 일부 숫자는 명령어 코드라고 불리며, 실행할 처리를 지정한다. 다른 부분은 오퍼랜드라고 불리며, 그 명령어에서 사용하는 정보를 나타낸다. 더 복잡하고 추상적인 CPU나 명령어 집합에서는 마이크로프로그램 방식이 자주 사용되어 명령어를 다양한 신호로 변환하는 것을 돕고 있다.

  • '''명령어 실행''': CPU의 많은 부분이 연결되어(예를 들어 멀티플렉서를 전환하는 등) 지정된 조작을 실행한다. 예를 들어 덧셈을 요구받은 경우 가산기가 지정된 입력과 연결되고, 출력과 연결된다. 덧셈 결과가 너무 커서 그 CPU가 처리할 수 없는 경우 산술 오버플로 플래그를 플래그 레지스터(상태 레지스터)에 설정한다.


명령어 실행 후, 프로그램 카운터의 증가된 값 때문에 일반적으로 다음 순서의 명령어를 인출하여 전체 과정이 반복된다. 점프 명령어가 실행되면 프로그램 카운터가 점프한 명령어의 주소를 포함하도록 수정되고 프로그램 실행이 정상적으로 계속된다.

몇몇 명령어는 프로그램 카운터를 조작한다. 이들은 일반적으로 점프 명령어라고 불리며, 루프를 구성하거나, 조건 분기를 하거나, 서브루틴을 구현하는 데 사용된다. 또한 많은 명령어는 플래그 레지스터를 변경한다. 이러한 플래그는 프로그램의 동작에 영향을 미친다. 예를 들어 비교 명령어는 두 값을 비교하여 플래그 레지스터에 그 크고 작음을 나타내는 값을 설정한다. 그리고 그 값을 사용하여 그 후의 처리 흐름을 결정한다.

8. 비트 폭

모든 중앙 처리 장치(CPU)는 특정 방식으로 숫자 값을 나타내는데, 거의 모든 현대 CPU는 이진수 형태로 숫자를 나타낸다. CPU의 정수 크기는 CPU가 한 번의 연산으로 처리할 수 있는 비트 수로 결정되며, 이는 단어 크기, 비트 너비 등으로 불린다. 정수 범위는 CPU가 직접 주소를 지정할 수 있는 메모리 위치의 수에도 영향을 미친다. 단어 크기가 더 큰 CPU는 더 많은 회로를 필요로 하므로, 더 작은 마이크로컨트롤러가 현대 응용 프로그램에서 일반적으로 사용되기도 한다. 낮은 비트 길이와 높은 비트 길이의 장점을 모두 얻기 위해, 많은 명령어 집합은 정수 및 부동 소수점 데이터에 대해 서로 다른 비트 너비를 가지기도 한다.

CPU를 표현할 때 비트 수의 의미는 다음과 같다:


  • 주소 너비(내부 주소 레지스터 너비, 외부 주소 버스 너비)
  • 데이터 버스 너비(내부 데이터 너비, 외부 데이터 버스 너비)
  • 내부 연산 너비(=연산 장치 너비와 정수 레지스터 너비)
  • 명령어 길이


1980년대를 중심으로 일반적인 가전제품, 키보드와 마우스, 전자계산기, 시계 등 로우엔드 임베디드 시스템에 4비트 CPU가 널리 사용되었다. 가전용 적외선 리모컨 등 기능적으로 단순한 것의 경우 4비트 마이크로프로세서로 충분하지만, 이미 신규 채용 사례는 거의 없다.

기기 임베디드용으로는 8비트 또는 16비트 프로세서 코어와 주변 회로를 결합한 마이크로컨트롤러(MCU)가 널리 사용되고 있다. 요구 사양과 제조 원가의 균형을 고려하여 적절한 크기의 프로세서가 선정되어 제조되지만, 32비트 이상의 CPU를 선택하는 경우도 적지 않다.

32비트 CPU는 휴대 전화디지털 카메라를 시작으로 자동차 엔진 제어산업용 로봇, 공작 기계, 가전제품임베디드 시스템 및 크고 작은 다양한 시스템의 제어에 널리 사용되고 있으며, 좁은 의미의 CPU라고 불리는 것의 주요 사용례이다. 2000년대 이후 16비트 명령어(ARM의 Thumb 명령어 등)를 가진 32비트 프로세서가 MCU 용도로 널리 사용되고 있다. 2010년대의 고성능·다기능화된 정보기기에는 메인 CPU 외에 종종 주변기기 제어용 32비트 MCU가 내장되어 있다. 또한 IoT 기기의 구성 단위로서 센서와 액추에이터에 내장되는 MCU에 대한 성능 요구도 고도화되고 있다.

퍼스널 컴퓨터(PC), 워크스테이션, 서버, 슈퍼컴퓨터를 비롯하여 태블릿과 스마트폰 등 "스마트 기기"라고 총칭되는 정보기기, 라우터 등 네트워크 기기, 비디오 게임기 등 대량의 데이터를 처리하는 용도로 64비트 CPU가 사용되고 있다. 업무용 서버에서는 1990년대부터 CPU와 운영 체제(OS)의 64비트화가 진행되었지만, 일반 소비자용 PC에 보급된 것은 2000년대 중반 이후이다. 2010년대 이후 시판되고 있는 PC는 64비트 CPU를 탑재한 것이 대부분이지만, 오피스 제품군 등의 용도에서는 응용 소프트웨어를 64비트화해도 성능 향상의 이점을 얻을 수 있는 경우는 한정되어 있으며[103], 호환성 문제 회피를 위해 32비트 버전 응용 프로그램이 권장되는 경우도 있다.[104] 일부 플랫폼에서는 64비트 OS 상의 32비트 에뮬레이션 계층을 통해 32비트 응용 프로그램을 실행할 수 있다. 하지만 영상 처리나 동영상 편집 등 대량의 데이터를 처리하는 용도에서는 거대한 메모리를 할당할 수 있는 64비트화의 이점이 크며, 이러한 응용 소프트웨어는 비교적 빠른 시기에 64비트화가 진행되었다. 2019년 현재 32비트 버전 장치 드라이버의 지원 및 업데이트가 중단된 경우도 있다.[105] 스마트폰도 초기에는 32비트 CPU가 사용되었지만, 2013년 9월에 발표된 iPhone 5s를 시작으로 64비트 CPU에 대한 대응과 전환이 진행되고 있으며, iOS처럼 32비트 버전 응용 프로그램의 동작 지원을 중단하거나, Android처럼 64비트 버전 응용 프로그램의 제공을 의무화하는 플랫폼도 있다.

과거에는 서로 결합하여 자유롭게 비트 길이를 늘릴 수 있는 방식의 CPU가 있었는데, 이것은 비트 슬라이스 프로세서라고 불렸다. 대표적인 제품으로 AMD의 AM2900 시리즈 등이 있다. AM2901은 스위스 연방 공과대학의 Lilith 워크스테이션 등에 사용되었다. 또한 데이터를 바이트 단위로 처리하는 CPU(바이트 머신) 외에, 워드 단위로 처리하는 CPU(워드 머신)도 있다(NEC의 ACOS-6 등).

8. 1. 용도 예시

1980년대를 중심으로 일반적인 가전제품, 키보드와 마우스, 전자계산기, 시계 등 로우엔드 임베디드 시스템에 4비트 CPU가 널리 사용되었다. 가전용 적외선 리모컨 등 기능적으로 단순한 것의 경우 4비트 마이크로프로세서로 충분하지만, 이미 신규 채용 사례는 거의 없다.

기기 임베디드용으로는 8비트 또는 16비트 프로세서 코어와 주변 회로를 결합한 마이크로컨트롤러(MCU)가 널리 사용되고 있다. 요구 사양과 제조 원가의 균형을 고려하여 적절한 크기의 프로세서가 선정되어 제조되지만, 이 용도에서도 32비트 마이크로프로세서의 가격 하락, 기존에 사용해 온 반도체의 생산 종료, 요구 사양의 고도화 및 범용 개발 도구의 활용 요구에 따라, 32비트 이상의 CPU를 선택하는 경우도 적지 않다.

32비트 CPU는 휴대 전화디지털 카메라를 시작으로 자동차 엔진 제어산업용 로봇, 공작 기계, 가전제품임베디드 시스템 및 크고 작은 다양한 시스템의 제어에 널리 사용되고 있으며, 좁은 의미의 CPU라고 불리는 것의 주요 사용례이다. 2000년대 이후 반도체 제조 기술의 발전에 따라 로우엔드 32비트 프로세서와 16/8비트 프로세서의 가격 차이가 줄어들고 있으며, 16비트 명령어(ARM의 Thumb 명령어 등)를 가진 32비트 프로세서가 MCU 용도로 널리 사용되고 있다. 2010년대의 고성능·다기능화된 정보기기에는 메인 CPU 외에 종종 주변기기(카메라 등의 센서류, 스토리지, 디스플레이, 네트워크 등 주변 장치) 제어용 32비트 MCU가 내장되어 있다. 또한 IoT 기기의 구성 단위로서 센서와 액추에이터에 내장되는 MCU에 대한 성능 요구도 고도화되고 있다.

퍼스널 컴퓨터(PC), 워크스테이션, 서버, 슈퍼컴퓨터를 비롯하여 태블릿과 스마트폰 등 "스마트 기기"라고 총칭되는 정보기기, 라우터 등 네트워크 기기, 비디오 게임기 등 대량의 데이터를 처리하는 용도로 64비트 CPU가 사용되고 있다. 업무용 서버에서는 큰 주기억 용량이 요구되었기 때문에 1990년대부터 CPU와 운영 체제(OS)의 64비트화가 진행되었지만, 일반 소비자용 PC에 보급된 것은 2000년대 중반 이후이다. 2010년대 이후 시판되고 있는 PC는 64비트 CPU를 탑재한 것이 대부분이지만, 오피스 제품군 등의 용도에서는 응용 소프트웨어를 64비트화해도 성능 향상의 이점을 얻을 수 있는 경우는 한정되어 있으며[103], 호환성 문제 회피를 위해 32비트 버전 응용 프로그램이 권장되는 경우도 있다.[104] 일부 플랫폼에서는 64비트 OS 상의 32비트 에뮬레이션 계층을 통해 32비트 응용 프로그램을 실행할 수 있기 때문에 모든 응용 프로그램을 64비트화해야 할 필요는 없다. 하지만 영상 처리나 동영상 편집 등 대량의 데이터를 처리하는 용도에서는 거대한 메모리를 할당할 수 있는 64비트화의 이점이 크며, 이러한 응용 소프트웨어는 비교적 빠른 시기에 64비트화가 진행되었다. 2019년 현재 32비트 버전 장치 드라이버의 지원 및 업데이트가 중단된 경우도 있다.[105] 스마트폰도 초기에는 32비트 CPU가 사용되었지만, 2013년 9월에 발표된 iPhone 5s를 시작으로 64비트 CPU에 대한 대응과 전환이 진행되고 있으며, iOS처럼 32비트 버전 응용 프로그램의 동작 지원을 중단하거나, Android처럼 64비트 버전 응용 프로그램의 제공을 의무화하는 플랫폼도 있다.

과거에는 서로 결합하여 자유롭게 비트 길이를 늘릴 수 있는 방식의 CPU가 있었는데, 이것은 비트 슬라이스 프로세서라고 불렸다. 대표적인 제품으로 AMD의 AM2900 시리즈 등이 있다. AM2901은 스위스 연방 공과대학의 Lilith 워크스테이션 등에 사용되었다. 또한 데이터를 바이트 단위로 처리하는 CPU(바이트 머신) 외에, 워드 단위로 처리하는 CPU(워드 머신)도 있다(NEC의 ACOS-6 등).

9. 저전력화

가장 기본적인 중앙 처리 장치(CPU)의 저전력화 기술은 저전압화였다. 로직 동작의 신호선 전압을 저전압화하는 것은 저전력화로 이어지는 동시에 신호를 "High"와 "Low" 사이에서 고속으로 변경할 수 있기 때문에 동작 속도 향상에도 기여했다.

초기에는 계전기와 같은 수십 볼트의 동작 전압이었지만, 1980년대에는 5 V가 디지털 컴퓨터의 표준 동작 전압이 되었다. 1990년대에는 내부 회로가 3V 정도의 저전압화를 도입하기 시작했으며, 외부와의 신호선에서도 마찬가지로 저전압화가 이루어질 무렵에는 CPU 내부에서는 더욱 낮은 전압이 채용되기 시작했다. 2000년대 말에는 내부적으로 1V 미만까지 저전압화가 진행되었고, 당시에는 노이즈 내성을 고려하면 거의 한계라고 생각되었지만, 그 후에도 마이크로프로세서의 저전압화 추세는 계속되어 2013년에 등장한 쿼크 X1000는 최저 0.28V의 초저전압 동작이 가능하다.

대부분의 CPU(더 정확히 말하면 대부분의 순차 회로)는 동기식이다. 즉, CPU는 동기 신호에 따라 동작하도록 설계되어 있다. 이 신호는 "클록 신호"로 알려져 있으며, 일정 주기의 직사각형파 형태인 경우가 많다. 전기 신호의 전파 속도와 CPU 내부 신호 경로의 길이를 고려하여 클록 신호의 주파수가 결정된다. 이 주파수는 신호 전파의 최악의 경우를 고려하여 결정해야 한다. 최악의 경우를 고려하여 주파수를 결정하면 CPU 전체가 파형의 에지 부분에서 동작하도록 설계할 수 있으며, CPU 설계를 간소화하는 동시에 트랜지스터 수도 줄일 수 있다. 그러나 이 설계 방법의 단점으로 CPU 전체가 가장 느린 부분을 기다리도록 설계해야 하며, 전체 속도 향상이 그 느린 부분에 의해 제한된다. 이러한 제한을 해결하기 위해 명령 파이프라인이나 슈퍼스칼라와 같은 방법이 사용되어 왔다.

파이프라인만으로는 동기식 CPU의 문제를 모두 해결할 수 없다. 예를 들어, 클록 신호는 다른 전기 신호의 지연에 영향을 받는다. 클록 주파수가 높아지고 더 복잡한 CPU를 동작시키려고 할 때, 모든 회로를 동기화하는 것이 어려워졌다. 이 때문에, 새로운 고성능 CPU에서는 하나의 클록 신호로 CPU 전체를 동기화하는 대신, 여러 개의 클록 신호로 각 부분을 개별적으로 동기화하도록 하고 있다. 또한, 클록 주파수가 높아짐에 따라 CPU의 발열이 큰 문제가 되어 왔다. 클록 신호가 "High"와 "Low"를 반복함에 따라 많은 논리 회로가 마찬가지로 "High"와 "Low"를 반복하고, 그 회로가 연산 처리에 사용되지 않을 때에도 클록 신호가 공급되는 동안 불필요하게 동작하여 발열한다. 21세기 현재 CPU에 사용되는 반도체 회로에서는 신호 전압을 "High" 또는 "Low"로 유지하는 것보다 "High"에서 "Low" 또는 "Low"에서 "High"로 이동할 때 더 많은 전기에너지를 소비한다. 따라서 CPU에 고속 처리 능력을 요구하면 클록 주파수가 높아지고 발열도 많아져 더욱 냉각할 필요가 생긴다.

불필요하게 클록 신호를 공급하는 것을 멈추면 전력 소비를 억제하고 발열도 줄일 수 있다. 연산 처리에 관여하지 않는 불필요한 블록에 대한 클록 신호의 공급을 중지하는 방법을 클록 게이팅/Clock gating영어이라고 한다.

2000년대 후반 이후 등장한 고성능 CPU에 사용되는 반도체 회로 기술에서는 소비전력에 대한 누설 전류의 비율이 커졌다. 누설 전류는 클록 신호의 유무와 관계없기 때문에, 클록 게이팅만으로는 큰 전력 절감 효과를 얻을 수 없다.

이러한 고성능 CPU에서는 클록 신호의 공급 중단뿐만 아니라, 동작하지 않는 모듈 등에 대한 전원 공급 자체를 차단하는 파워 게이팅(Power gating) 기술이 필요하다. 종래에는 고성능화된 CPU가 소비하는 대전류를 로직 회로에 최적화된 반도체 회로 기술로 제어하는 것은 용이하지 않았지만, 누설 전류 대책으로 2000년대 말까지는 널리 사용되는 기술이 되었다.

전역 클럭 신호와 관련된 몇 가지 문제를 해결하는 또 다른 방법은 클럭 신호를 완전히 제거하는 것이다. 전역 클럭 신호를 제거하면 설계 과정이 여러 면에서 상당히 복잡해지지만, 비동기식(또는 클럭리스) 설계는 유사한 동기식 설계와 비교하여 전력 소비 및 열 방출 면에서 현저한 이점을 제공한다. 다소 드물지만, 전역 클럭 신호를 사용하지 않고 전체 비동기 CPU가 구축되었다.[73]

클럭 신호를 완전히 제거하는 대신, 일부 CPU 설계에서는 장치의 특정 부분을 비동기적으로 허용한다. 예를 들어, 초스칼라 파이프라이닝과 함께 비동기식 ALU를 사용하여 일부 산술 성능 향상을 달성할 수 있다. 완전히 비동기적인 설계가 동기식 설계와 비교하여 동등하거나 더 나은 수준으로 수행할 수 있는지 여부는 명확하지 않지만, 적어도 더 간단한 수학 연산에서는 뛰어난 성능을 보이는 것은 분명하다. 이러한 특징과 우수한 전력 소비 및 열 방출 특성을 결합하면 임베디드 컴퓨터에 매우 적합하다.[74]

SRAM 등에서는 클록과 관계없이 액세스할 수 있는 편이 다루기 편리한 경우도 있으며, 비동기 SRAM은 매우 일반적인 제품이다. 또한 연산 회로 등, 일반적인 프로세서 내부의 일부에 사용되기도 한다.

일반적으로 시판된 제품으로는 비동기 설계를 표면에 드러낸 마이크로프로세서는 그다지 일반적이지 않지만, 연구실에서의 시제작 수준에서는 연구·시제작이 활발하게 이루어지고 있으며, 일본에서는 남곡(南谷) 등에 의한 TITAC[106] 등이 알려져 있다. 클록을 완전히 없애는 것이 아니라 부분적으로 비동기화함으로써 성능을 높이는 방법으로는, 비동기 연산 장치를 사용하여 슈퍼스칼라 파이프라인을 구성함으로써 연산 성능을 높이려고 한 설계 등이 있다.

9. 1. 저전압화

가장 기본적인 중앙 처리 장치(CPU)의 저전력화 기술은 저전압화였다. 로직 동작의 신호선 전압을 저전압화하는 것은 저전력화로 이어지는 동시에 신호를 "High"와 "Low" 사이에서 고속으로 변경할 수 있기 때문에 동작 속도 향상에도 기여했다.

초기에는 계전기와 같은 수십 볼트의 동작 전압이었지만, 1980년대에는 5 V가 디지털 컴퓨터의 표준 동작 전압이 되었다. 1990년대에는 내부 회로가 3V 정도의 저전압화를 도입하기 시작했으며, 외부와의 신호선에서도 마찬가지로 저전압화가 이루어질 무렵에는 CPU 내부에서는 더욱 낮은 전압이 채용되기 시작했다. 2000년대 말에는 내부적으로 1V 미만까지 저전압화가 진행되었고, 당시에는 노이즈 내성을 고려하면 거의 한계라고 생각되었지만, 그 후에도 마이크로프로세서의 저전압화 추세는 계속되어 2013년에 등장한 쿼크 X1000(Intel Quark X1000)는 최저 0.28V의 초저전압 동작이 가능하다.

9. 2. 클럭 게이팅

대부분의 CPU(더 정확히 말하면 대부분의 순차 회로)는 동기식이다. 즉, CPU는 동기 신호에 따라 동작하도록 설계되어 있다. 이 신호는 "클록 신호"로 알려져 있으며, 일정 주기의 직사각형파 형태인 경우가 많다. 전기 신호의 전파 속도와 CPU 내부 신호 경로의 길이를 고려하여 클록 신호의 주파수가 결정된다. 이 주파수는 신호 전파의 최악의 경우를 고려하여 결정해야 한다. 최악의 경우를 고려하여 주파수를 결정하면 CPU 전체가 파형의 에지 부분에서 동작하도록 설계할 수 있으며, CPU 설계를 간소화하는 동시에 트랜지스터 수도 줄일 수 있다. 그러나 이 설계 방법의 단점으로 CPU 전체가 가장 느린 부분을 기다리도록 설계해야 하며, 전체 속도 향상이 그 느린 부분에 의해 제한된다. 이러한 제한을 해결하기 위해 명령 파이프라인이나 슈퍼스칼라와 같은 방법이 사용되어 왔다.

파이프라인만으로는 동기식 CPU의 문제를 모두 해결할 수 없다. 예를 들어, 클록 신호는 다른 전기 신호의 지연에 영향을 받는다. 클록 주파수가 높아지고 더 복잡한 CPU를 동작시키려고 할 때, 모든 회로를 동기화하는 것이 어려워졌다. 이 때문에, 새로운 고성능 CPU에서는 하나의 클록 신호로 CPU 전체를 동기화하는 대신, 여러 개의 클록 신호로 각 부분을 개별적으로 동기화하도록 하고 있다. 또한, 클록 주파수가 높아짐에 따라 CPU의 발열이 큰 문제가 되어 왔다. 클록 신호가 "High"와 "Low"를 반복함에 따라 많은 논리 회로가 마찬가지로 "High"와 "Low"를 반복하고, 그 회로가 연산 처리에 사용되지 않을 때에도 클록 신호가 공급되는 동안 불필요하게 동작하여 발열한다. 21세기 현재 CPU에 사용되는 반도체 회로에서는 신호 전압을 "High" 또는 "Low"로 유지하는 것보다 "High"에서 "Low" 또는 "Low"에서 "High"로 이동할 때 더 많은 전기에너지를 소비한다. 따라서 CPU에 고속 처리 능력을 요구하면 클록 주파수가 높아지고 발열도 많아져 더욱 냉각할 필요가 생긴다.

불필요하게 클록 신호를 공급하는 것을 멈추면 전력 소비를 억제하고 발열도 줄일 수 있다. 연산 처리에 관여하지 않는 불필요한 블록에 대한 클록 신호의 공급을 중지하는 방법을 클록 게이팅/Clock gating영어이라고 한다.

9. 3. 파워 게이팅

2000년대 후반 이후 등장한 고성능 CPU에 사용되는 반도체 회로 기술에서는 소비전력에 대한 누설 전류의 비율이 커졌다. 누설 전류는 클록 신호의 유무와 관계없기 때문에, 클록 게이팅만으로는 큰 전력 절감 효과를 얻을 수 없다.

이러한 고성능 CPU에서는 클록 신호의 공급 중단뿐만 아니라, 동작하지 않는 모듈 등에 대한 전원 공급 자체를 차단하는 파워 게이팅(Power gating) 기술이 필요하다. 종래에는 고성능화된 CPU가 소비하는 대전류를 로직 회로에 최적화된 반도체 회로 기술로 제어하는 것은 용이하지 않았지만, 누설 전류 대책으로 2000년대 말까지는 널리 사용되는 기술이 되었다.

9. 4. 비동기 설계

전역 클럭 신호와 관련된 몇 가지 문제를 해결하는 또 다른 방법은 클럭 신호를 완전히 제거하는 것이다. 전역 클럭 신호를 제거하면 설계 과정이 여러 면에서 상당히 복잡해지지만, 비동기식(또는 클럭리스) 설계는 유사한 동기식 설계와 비교하여 전력 소비 및 열 방출 면에서 현저한 이점을 제공한다. 다소 드물지만, 전역 클럭 신호를 사용하지 않고 전체 비동기 CPU가 구축되었다.[73]

클럭 신호를 완전히 제거하는 대신, 일부 CPU 설계에서는 장치의 특정 부분을 비동기적으로 허용한다. 예를 들어, 초스칼라 파이프라이닝과 함께 비동기식 ALU를 사용하여 일부 산술 성능 향상을 달성할 수 있다. 완전히 비동기적인 설계가 동기식 설계와 비교하여 동등하거나 더 나은 수준으로 수행할 수 있는지 여부는 명확하지 않지만, 적어도 더 간단한 수학 연산에서는 뛰어난 성능을 보이는 것은 분명하다. 이러한 특징과 우수한 전력 소비 및 열 방출 특성을 결합하면 임베디드 컴퓨터에 매우 적합하다.[74]

SRAM 등에서는 클록과 관계없이 액세스할 수 있는 편이 다루기 편리한 경우도 있으며, 비동기 SRAM은 매우 일반적인 제품이다. 또한 연산 회로 등, 일반적인 프로세서 내부의 일부에 사용되기도 한다.

일반적으로 시판된 제품으로는 비동기 설계를 표면에 드러낸 마이크로프로세서는 그다지 일반적이지 않지만, 연구실에서의 시제작 수준에서는 연구·시제작이 활발하게 이루어지고 있으며, 일본에서는 남곡(南谷) 등에 의한 TITAC[106] 등이 알려져 있다. 클록을 완전히 없애는 것이 아니라 부분적으로 비동기화함으로써 성능을 높이는 방법으로는, 비동기 연산 장치를 사용하여 슈퍼스칼라 파이프라인을 구성함으로써 연산 성능을 높이려고 한 설계 등이 있다.

10. 병렬화

병렬 컴퓨팅은 CPU 성능 향상을 위한 핵심 기술로, CPU가 선형적인 방식에서 벗어나 병렬적으로 작동하도록 설계하는 다양한 방법론을 포함한다. 이러한 방법론은 크게 명령어 수준 병렬 처리(ILP)와 작업 수준 병렬 처리(TLP)로 나뉜다.

ILP는 CPU 내에서 명령어 실행 속도를 높여 온다이 실행 리소스의 사용을 극대화하는 것을 목표로 한다. 이를 위해 명령어 파이프라이닝 기법이 사용되는데, 이는 명령어 실행 경로를 여러 단계로 나누어 여러 명령어를 동시에 실행하는 방식이다.

기본 5단계 파이프라인. 최적의 경우 이 파이프라인은 클럭 사이클당 하나의 명령어 완료율을 유지할 수 있다.
슈퍼스칼라 설계는 명령어 파이프라이닝을 더욱 발전시켜, 긴 명령어 파이프라인과 여러 개의 동일한 실행 유닛을 활용한다.
간단한 슈퍼스칼라 파이프라인. 한 번에 두 개의 명령어를 페치 및 디스패치함으로써 클럭 사이클당 최대 두 개의 명령어를 완료할 수 있다.
디스패처는 명령어를 병렬로 실행할 수 있는지 판단하고, 가능한 경우 실행 유닛에 분배하여 동시에 실행시킨다. 이러한 설계는 CPU 캐시와 함께 분기 예측, 투기적 실행, 레지스터 이름 바꾸기, 순서에 상관없는 실행 등의 위험 회피 기법을 통해 성능을 유지한다.[76]

TLP는 CPU가 동시에 실행할 수 있는 스레드 또는 프로세스의 수를 늘리는 것을 목표로 한다. 다중 처리는 여러 개의 CPU를 사용하여 메모리 시스템에 대한 일관된 뷰를 공유하는 방식으로, 대칭형 다중 처리(SMP)와 비균일 메모리 접근(NUMA) 방식이 있다. 칩 수준 다중 처리(CMP)는 프로세서와 상호 연결을 단일 칩에 구현한 다중 코어 프로세서를 의미한다. 멀티스레딩(MT)은 CPU 내의 일부 구성 요소만 복제하여 여러 스레드를 병렬로 실행하는 기술로, 시간적 멀티스레딩과 동시 멀티스레딩이 있다.

벡터 프로세서는 SIMD 방식을 사용하여 하나의 명령어로 여러 데이터 조각을 처리한다. 이는 멀티미디어 응용 프로그램과 과학 및 엔지니어링 작업에 유용하다. 초기에는 과학 연구 및 암호화 응용에 주로 사용되었으나, 멀티미디어가 디지털 미디어로 전환되면서 범용 프로세서에도 SIMD 기능이 필요하게 되었다.

최근 CPU 설계는 ILP 기술의 한계와 전력 소비 증가로 인해, TLP를 활용하여 여러 프로그램의 집계 성능을 높이는 방향으로 발전하고 있다. 이는 이중 및 다중 코어 프로세서 설계의 확산으로 이어졌다.

11. MCU

마이크로컨트롤러(MCU)는 CPU를 중심으로 확장된 전자 부품이다. MCU는 CPU 외에 프로그램 저장용을 포함한 반도체 메모리GPIO, 시리얼 I/O, DAC/ADC 등의 각종 입출력 기능, 타이머, DMA, 클록 회로, 필요에 따라 DSP 및 플래시 메모리 등의 주변 회로를 하나의 패키지에 내장한다. 주로 소형 임베디드 기기의 제어에 사용된다.

12. 비유

비유적인 표현이지만, CPU는 컴퓨터의 "두뇌"에 비유되는 경우가 많다.

컴퓨터 게임 세계에서는 컴퓨터나 소프트웨어가 움직이는 상대방이나 적 유닛을 CPU라고 부르기도 한다.

13. 기업 및 제품

인텔은 코어, 제온, 펜티엄 등의 CPU를 설계하고 제작한다. AMD는 라이젠, 스레드리퍼, EPYC 등을 생산한다. 이 외에도 ARM의 Cortex, MIPS, 삼성, 썬 마이크로시스템즈의 SPARC, IBM의 POWER 등이 대중적인 운영 체제에서 사용되는 CPU를 설계하거나 제작하는 주요 기업 및 제품군이다.

참조

[1] 서적 Engineering Drawing & Basic Science https://books.google[...] Youth Competition Times
[2] 서적 Computer Fundamentals https://books.google[...] S. Chand Publishing 2008
[3] 웹사이트 What is processor (CPU)? A definition from WhatIs.com https://www.techtarg[...] 2024-03-15
[4] 서적 The fourth industrial revolution glossarium: over 1500 of the hottest terms you will use to create the future https://books.google[...] Litres 2023-04-12
[5] 서적 Operating AI: Bridging the Gap Between Technology and Business https://books.google[...] John Wiley & Sons 2022-04-19
[6] 서적 Computers and Computations, Vol 1 John Wiley & Sons, Inc. 1978
[7] 서적 Ultimate Guide to SSC CGL Combined Graduate Level Tier-I & Tier II Prelims & Mains (with Latest Solved Question Papers) Guide Book English: Bestseller Book by Team Prabhat: Ultimate Guide to SSC CGL Combined Graduate Level Tier-I & Tier II Prelims & Mains (with Latest Solved Question Papers) Guide Book English https://books.google[...] Prabhat Prakashan 2023-04-13
[8] 웹사이트 What is a multicore processor and how does it work? https://www.techtarg[...] 2024-03-15
[9] 서적 Oscilloscopes: A Manual for Students, Engineers, and Scientists https://books.google[...] Springer Nature 2020-10-06
[10] 서적 A Brief History of Computing https://books.google[...] Springer 2008
[11] 웹사이트 A Survey of Domestic Electronic Digital Computing Systems http://ed-thelen.org[...] Ballistic Research Laboratory 2020-11-15
[12] 간행물 A Third Survey of Domestic Electronic Digital Computing Systems http://ed-thelen.org[...] Ballistic Research Laboratory 2005-12-16
[13] 웹사이트 Bit By Bit http://ds.haverford.[...] Haverford College 2015-08-01
[14] 기술보고서 First Draft of a Report on the EDVAC https://www.wiley.co[...] Moore School of Electrical Engineering, University of Pennsylvania 2018-03-31
[15] 백과사전 The Modern History of Computing https://plato.stanfo[...] 2015-09-25
[16] 웹사이트 ENIAC's Birthday https://mitpress.mit[...] The MIT Press 2016-02-09
[17] 간행물 Computing's Golden Jubilee http://www.computerc[...] The Computer Conservation Society 1998-06-01
[18] 웹사이트 The Manchester Mark 1 http://curation.cs.m[...] 2015-09-25
[19] 웹사이트 The First Generation http://www.computerh[...] Computer History Museum 2015-09-29
[20] 웹사이트 The History of the Integrated Circuit https://educationalg[...] 2022-07-17
[21] 웹사이트 Motoring with microprocessors https://www.embedded[...] Embedded 2003-08-11
[22] 웹사이트 Mobile Processor Guide – Summer 2013 http://www.androidau[...] Android Authority 2013-06-25
[23] 웹사이트 Section 250: Microprocessors and Toys: An Introduction to Computing Systems https://eng100.engin[...] The University of Michigan
[24] 웹사이트 ARM946 Processor https://www.arm.com/[...] ARM
[25] 웹사이트 Konrad Zuse http://www.computerh[...] Computer History Museum 2015-09-29
[26] 웹사이트 Timeline of Computer History: Computers https://www.computer[...] Computer History Museum 2015-11-21
[27] 웹사이트 A Brief History of Computing – First Generation Computers http://trillian.rand[...]
[28] 웹사이트 Harvard University Mark I Paper Tape Punch Unit https://www.computer[...] Computer History Museum
[29] 웹사이트 What is the difference between a von Neumann architecture and a Harvard architecture? http://infocenter.ar[...] ARM
[30] 웹사이트 Advanced Architecture Optimizes the Atmel AVR CPU http://www.atmel.com[...] Atmel
[31] 웹사이트 Switches, transistors and relays http://www.bbc.co.uk[...] BBC
[32] 웹사이트 Introducing the Vacuum Transistor: A Device Made of Nothing https://spectrum.iee[...] 2014-06-23
[33] 웹사이트 What Is Computer Performance? http://www.nap.edu/r[...] The National Academies Press 2011
[34] 웹사이트 1953: Transistorized Computers Emerge http://www.computerh[...]
[35] 웹사이트 IBM System/360 Dates and Characteristics http://www-03.ibm.co[...] IBM 2003-01-23
[36] 논문 Architecture of the IBM System/360 IBM 1964-04-01
[37] 웹사이트 50 years ago, IBM created mainframe that helped send men to the Moon https://arstechnica.[...] 2014-04-07
[38] 웹사이트 Why won't you DIE? IBM's S/360 and its legacy at 50 https://www.theregis[...]
[39] 웹사이트 Online PDP-8 Home Page, Run a PDP-8 http://www.pdp8.net/[...]
[40] 웹사이트 Transistors, Relays, and Controlling High-Current Loads https://itp.nyu.edu/[...] ITP Physical Computing
[41] 잡지 A Brief History of CPUs: 31 Awesome Years of x86 http://www.pcgamer.c[...] 2009-04-14
[42] 서적 Computer Organization and Design: the Hardware/Software Interface https://archive.org/[...] Kaufmann 1999
[43] 웹사이트 1962: Aerospace systems are first the applications for ICs in computers http://www.computerh[...] Computer History Museum
[44] 웹사이트 The integrated circuits in the Apollo manned lunar landing program https://www.hq.nasa.[...] National Aeronautics and Space Administration
[45] 웹사이트 System/370 Announcement http://www-03.ibm.co[...] 2003-01-23
[46] 웹사이트 System/370 Model 155 (Continued) https://www-03.ibm.c[...] 2003-01-23
[47] 웹사이트 Models and Options http://homepage.divm[...] The Digital Equipment Corporation PDP-8
[48] 서적 To the Digital Age: Research Labs, Start-up Companies, and the Rise of MOS Technology https://books.google[...] The Johns Hopkins University Press
[49] 웹사이트 The Texas Instruments TMX 1795: the first, forgotten microprocessor http://www.righto.co[...]
[50] 웹사이트 Speed & Power in Logic Families http://www.brown.edu[...]
[51] 서적 Digital Logic Techniques: Principles and Practice https://books.google[...] Taylor & Francis 1996
[52] 웹사이트 1968: Silicon Gate Technology Developed for ICs https://www.computer[...]
[53] 컨퍼런스 MOS GP Computer http://www.computer.[...] AFIPS 1968
[54] 서적 LSI-11, PDP-11/03 user's manual http://www.bitsavers[...] Digital Equipment Corporation 1975-11-01
[55] 웹사이트 What is a multicore processor and how does it work? https://www.techtarg[...] TechTarget 2022-03-01
[56] 웹사이트 A Brief History of the Microprocessor http://www.computerm[...]
[57] 서적 An Introduction to Microcomputers https://archive.org/[...] Osborne-McGraw Hill
[58] 웹사이트 Why has CPU frequency ceased to grow? https://software.int[...] Intel 2014-02-19
[59] 웹사이트 MOS Transistor – Electrical Engineering & Computer Science http://www.eecs.berk[...] University of California
[60] 뉴스 Moore's Law Is Dead. Now What? https://www.technolo[...]
[61] 인터뷰 Excerpts from A Conversation with Gordon Moore: Moore's Law http://download.inte[...] Intel
[62] 웹사이트 A detailed history of the processor https://www.techjunk[...] Tech Junkie 2016-12-15
[63] 서적 Wiley Encyclopedia of Electrical and Electronics Engineering
[64] 잡지 The stored program concept 1990-09-01
[65] 웹사이트 Trends in Integrated Circuits Technology https://web.stanford[...]
[66] 웹사이트 Electromigration http://www.csl.mete.[...] Middle East Technical University
[67] 웹사이트 Computer Science from the Bottom Up, Chapter 3. Computer Architecture http://www.bottomupc[...] 2013-09-03
[68] 웹사이트 Introduction of Control Unit and its Design https://www.geeksfor[...] 2018-09-24
[69] 웹사이트 Address generation unit for a processor (US 2006010255 A1 patent application) https://patents.goog[...] 2006-01-12
[70] 웹사이트 How The Cache Memory Works https://hardwaresecr[...] 2007-09-12
[71] 웹사이트 IBM z13 and IBM z13s Technical Introduction http://www.redbooks.[...] IBM 2016-03-01
[72] 웹사이트 Application-customized CPU design https://web.archive.[...] IBM developerWorks 2005-12-17
[73] 논문 Three generations of asynchronous microprocessors https://ieeexplore.i[...] 2003-11-01
[74] 학술대회 AMULET3 Revealed https://web.archive.[...] University of Manchester Computer Science Department 1999-01-01
[75] 웹사이트 IBM System/360 Model 65 Functional Characteristics http://www.bitsavers[...] IBM 1968-09-01
[76] 웹사이트 The AMD Athlon XP Processor with 512KB L2 Cache https://web.archive.[...] University of Illinois 2003-01-01
[77] 서적 Highly parallel computing http://dl.acm.org/ci[...] Benjamin/Cummings 1989-01-01
[78] 논문 Some Computer Organizations and Their Effectiveness 1972-09-01
[79] 논문 Parallelism exploitation in superscalar multiprocessing 1998-01-01
[80] 학술대회 Exploiting Hardware Performance Counters https://ieeexplore.i[...] 2008-08-01
[81] 학술대회 Tiptop: Hardware Performance Counters for the Masses https://ieeexplore.i[...] 2012-09-01
[82] 웹사이트 CPU Hardware Performance Counters for Security https://www.blackhat[...] Black Hat 2015-01-01
[83] 서적 ECCWS 2018 17th European Conference on Cyber Warfare and Security V2 https://books.google[...] Academic Conferences and publishing limited 2018-06-21
[84] 웹사이트 The Hardware Performance Monitor Toolkit http://link.springer[...] Springer Berlin Heidelberg 2001-01-01
[85] 웹사이트 TOWARDS A BENCHMARK FOR PERFORMANCE AND POWER CONSUMPTION EVALUATION OF PARALLEL PROGRAMMING INTERFACES https://dspace.unipa[...] 2024-03-15
[86] 웹사이트 Open Source: What it Means, How it Works, Example https://www.investop[...] 2024-03-15
[87] 서적 Mastering Secure Java Applications: Navigating security in cloud and microservices for Java https://books.google[...] BPB Publications 2024-03-04
[88] 서적 Bandwidth Allocation for Video Under Quality of Service Constraints John Wiley & Sons 2015-01-01
[89] 서적 OpenStack Operations Guide O'Reilly Media, Inc. 2014-01-01
[90] 웹사이트 VMware Infrastructure Architecture Overview – White Paper https://www.vmware.c[...] 2006-01-01
[91] 웹사이트 CPU Frequency http://www.cpu-world[...] CPU World 2008-03-25
[92] 웹사이트 What is (a) multi-core processor? http://searchdatacen[...] SearchDataCenter.com
[93] 뉴스 Quad Core Vs. Dual Core https://techspirited[...] 2010-04-08
[94] 웹사이트 Factors Affecting Multi-Core Processors Performance https://pcsite.co.uk[...] 2022-01-12
[95] 웹사이트 CPU utilization of multi-threaded architectures explained https://blogs.oracle[...] Oracle 2022-07-17
[96] 웹사이트 Intel Performance Counter Monitor – A better way to measure CPU utilization https://software.int[...] 2014-12-18
[97] 웹사이트 e-words【CPU】 https://e-words.jp/w[...]
[98] 웹사이트 CPU(シー ピー ユー)とは - コトバンク https://kotobank.jp/[...]
[99] 웹사이트 インテル® Core™ プロセッサー・ファミリー https://www.intel.co[...]
[100] 웹사이트 ノジマ電機「M1チップ搭載のMacBook Pro 13インチを比較レビュー」 https://www.nojima.c[...]
[101] 웹사이트 ARM、プロセッサの出荷個数100億個を達成 http://www.jp.arm.co[...] ARM社 ニュースリリース 2008-01-25
[102] 뉴스 25周年を迎えた、インテルのx86アーキテクチャ https://japan.cnet.c[...] CNET Japan 2003-06-10
[103] 웹사이트 64 ビット版または 32 ビット版の Office を選択する https://support.offi[...]
[104] 웹사이트 64 ビット版 Office について https://blogs.techne[...]
[105] 웹사이트 Support Plan for 32-bit and 64-bit Operating Systems https://nvidia.custh[...]
[106] 웹사이트 http://www.hal.ipc.i[...]
[107] 웹사이트 パソコンの頭脳「CPU」どこを見れば性能がわかるの?(1/2) - FMVサポート : 富士通パソコン https://azby.fmworld[...]



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

문의하기 : help@durumis.com