중앙처리장치
Central processing unit중앙 처리 장치(CPU)는 중앙 처리 장치(Central Processing Unit) 또는 메인 프로세서(Main Processor)라고도 불리며, 특정 컴퓨터에서 가장 중요한 프로세서입니다.그것의 전자 회로는 산술, 논리, 제어, 입출력(I/O) 연산과 같은 컴퓨터 프로그램의 명령을 실행합니다.이 역할은 메인 메모리 및 I/O 회로와 같은 외부 구성 요소 [1]및 그래픽 처리 장치(GPU)와 같은 특수 보조 프로세서의 역할과 대조됩니다.
CPU의 형태, 설계 및 구현은 시간이 지남에 따라 변했지만 기본적인 작동 방식은 거의 변하지 않았습니다.CPU의 주요 구성 요소는 연산과 논리 연산을 수행하는 ALU(Ametric-Logic Unit), ALU에 피연산자를 공급하고 ALU 연산 결과를 저장하는 프로세서 레지스터, 그리고 조정된 연산을 지시함으로써 메모리에서 페칭(Fetching), 디코딩(Decoding) 및 실행(instruction)을 조정하는 제어 유닛을 포함합니다.ALU, 레지스터 및 기타 구성 요소의 비율.
대부분의 최신 CPU는 집적 회로(integrated circuit, IC) 마이크로프로세서에 구현되며, 단일 IC 칩에 하나 이상의 CPU가 있습니다.여러 개의 CPU를 가진 마이크로프로세서 칩은 멀티코어 프로세서입니다.개별 물리적 CPU, 즉 프로세서 코어를 다중 스레드화하여 가상 또는 논리적 CPU를 추가로 생성할 수도 있습니다.[2]
CPU를 포함하는 IC는 메모리, 주변 인터페이스 및 컴퓨터의 다른 구성 요소를 포함할 수도 있습니다. 이러한 집적 장치는 마이크로컨트롤러 또는 SoC(system on chip)라고 다양하게 불립니다.
어레이 프로세서 또는 벡터 프로세서에는 병렬로 작동하는 여러 개의 프로세서가 있으며, 어떤 장치도 중앙으로 간주되지 않습니다.가상 CPU는 동적으로 집계된 계산 리소스의 추상화입니다.[3]
역사

ENIAC와 같은 초기 컴퓨터는 다양한 작업을 수행하기 위해 물리적으로 다시 연결되어야 했고, 이로 인해 이러한 컴퓨터는 "고정 프로그램 컴퓨터"라고 불리게 되었습니다.[4]"중앙 처리 장치"라는 용어는 1955년부터 사용되고 있습니다.[5][6]"CPU"라는 용어는 일반적으로 소프트웨어(컴퓨터 프로그램) 실행을 위한 장치로 정의되기 때문에, 올바르게 CPU라고 불릴 수 있는 초기의 장치들은 저장 프로그램 컴퓨터의 등장과 함께 왔습니다.
저장 프로그램 컴퓨터에 대한 아이디어는 J. Presper Eckert와 John William Mochly의 ENIAC의 디자인에 이미 존재했지만, 더 빨리 완성하기 위해 처음에는 생략되었습니다.[7]에니악이 만들어지기 전인 1945년 6월 30일, 수학자 존 폰 노이만은 EDVAC에 관한 보고서 초안이라는 제목의 논문을 배포했습니다.그것은 결국 1949년 8월에 완성될 저장 프로그램 컴퓨터의 개요였습니다.[8]EDVAC는 다양한 유형의 일정한 명령(또는 연산)을 수행하도록 설계되었습니다.특히 EDVAC용으로 작성된 프로그램은 컴퓨터의 물리적 배선에 의해 지정되지 않고 고속 컴퓨터 메모리에 저장되어야 합니다.[9]이것은 새로운 작업을 수행하기 위해 컴퓨터를 재구성하는 데 필요한 상당한 시간과 노력인 ENIAC의 심각한 제한을 극복했습니다.[10]폰 노이만의 설계로 EDVAC가 실행한 프로그램은 메모리의 내용을 변경하는 것만으로 변경할 수 있었습니다.소규모 실험용 저장 프로그램 컴퓨터였던 맨체스터 베이비는 1948년[11] 6월 21일에, 맨체스터 마크 1은 1949년 6월 16~17일 밤에 첫 프로그램을 실행했습니다.[12]
초기 CPU는 더 크고 때로는 독특한 컴퓨터의 일부로 사용되는 맞춤형 설계였습니다.[13]그러나 특정 애플리케이션을 위한 맞춤형 CPU를 설계하는 이러한 방법은 대량으로 생산되는 다목적 프로세서의 개발에 크게 자리를 내주고 있습니다.이러한 표준화는 이산 트랜지스터 메인프레임과 미니 컴퓨터 시대에 시작되었으며 집적 회로(IC)의 대중화와 함께 급속히 가속화되었습니다.IC는 점점 더 복잡한 CPU를 나노미터 단위의 허용 오차로 설계하고 제조할 수 있게 했습니다.[14]CPU의 소형화와 표준화는 모두 현대 생활에서 디지털 장치의 존재를 전용 컴퓨팅 기계의 제한된 적용 범위를 훨씬 뛰어 넘었습니다.현대의 마이크로프로세서는 자동차에서[15] 휴대폰에 이르기까지 [16]다양한 전자 기기에 등장하며 때로는 장난감에도 등장합니다.[17][18]
폰 노이만은 EDVAC의 설계 때문에 저장 프로그램 컴퓨터의 설계에 가장 많은 공을 들이고 그 설계는 폰 노이만 아키텍처로 알려졌지만, 콘라드 주세와 같은 그 이전의 다른 사람들은 비슷한 아이디어를 제안하고 실행했습니다.[19]EDVAC 이전에 완성된 하버드 마크 I의 이른바 하버드 아키텍처도 전자 메모리가 아닌 천공된 종이 테이프를 사용한 저장 프로그램 설계를 사용했습니다.[20][21][22]폰 노이만과 하버드 아키텍처의 주요 차이점은 후자가 CPU 명령어와 데이터의 저장과 처리를 분리하는 반면, 전자는 둘 다에 대해 동일한 메모리 공간을 사용한다는 것입니다.[23]대부분의 최신 CPU는 주로 폰 노이만(von Neumann) 디자인이지만, 특히 임베디드 응용 프로그램에서 하버드 아키텍처의 CPU도 볼 수 있습니다. 예를 들어 Atmel AVR 마이크로컨트롤러는 하버드 아키텍처의 프로세서입니다.[24]
일반적으로 릴레이와 진공관(열이온관)이 스위칭 소자로 사용되었습니다.[25][26] 유용한 컴퓨터는 수천 또는 수만 개의 스위칭 소자를 필요로 합니다.시스템의 전체 속도는 스위치의 속도에 따라 달라집니다.EDVAC와 같은 진공관 컴퓨터는 평균 8시간의 장애가 발생하는 경향이 있는 반면, 느리지만 초기의 하버드 마크 1과 같은 릴레이 컴퓨터는 매우 드물게 장애가 발생했습니다.[6]결국, 튜브 기반 CPU가 우세하게 된 이유는 제공되는 상당한 속도의 장점이 일반적으로 신뢰성 문제를 능가했기 때문입니다.이러한 초기 동기 CPU는 대부분 현대의 마이크로일렉트로닉 디자인에 비해 낮은 클럭 속도로 구동되었습니다.이 시기에는 100 kHz에서 4 MHz에 이르는 클럭 신호 주파수가 매우 일반적이었는데, 이 주파수는 이들이 구축한 스위칭 소자의 속도에 크게 제한을 받았습니다.[27]
트랜지스터 CPU

다양한 기술들이 더 작고 더 신뢰할 수 있는 전자 장치들의 구축을 용이하게 함에 따라, CPU들의 설계 복잡성은 증가하였습니다.첫 번째로 이러한 개선은 트랜지스터의 등장과 함께 이루어졌습니다.1950년대와 1960년대에 트랜지스터화된 CPU는 더 이상 진공관이나 릴레이와 같은 부피가 크고 신뢰할 수 없으며 깨지기 쉬운 스위칭 소자로 제작할 필요가 없었습니다.[28]이러한 개선을 통해 개별적인(개별적인) 구성 요소가 포함된 하나 또는 여러 개의 인쇄 회로 기판에 보다 복잡하고 안정적인 CPU가 구축되었습니다.
1964년 IBM은 다양한 속도와 성능으로 동일한 프로그램을 실행할 수 있는 일련의 컴퓨터에 사용되는 IBM System/360 컴퓨터 아키텍처를 선보였습니다.[29]대부분의 전자 컴퓨터가 같은 제조사에서 만든 컴퓨터라도 서로 호환되지 않는 상황에서 이는 의미가 컸습니다.이러한 개선을 촉진하기 위해 IBM은 마이크로프로그램(흔히 "마이크로코드"라고 함)이라는 개념을 사용했는데, 이 프로그램은 여전히 현대 CPU에서 널리 사용되고 있습니다.[30]System/360 아키텍처는 매우 인기가 많아 수십 년 동안 메인프레임 컴퓨터 시장을 장악했으며 IBM zSeries와 같은 유사한 최신 컴퓨터에서 여전히 계승되고 있는 유산을 남겼습니다.[31][32]1965년 DEC(Digital Equipment Corporation)는 과학 및 연구 시장을 겨냥한 또 다른 영향력 있는 컴퓨터인 PDP-8을 선보였습니다.[33]
트랜지스터 기반 컴퓨터는 이전의 컴퓨터들에 비해 몇 가지 뚜렷한 이점을 가지고 있었습니다.신뢰성 향상과 전력 소비 감소를 촉진하는 것 외에도, 트랜지스터는 튜브나 릴레이에 비해 트랜지스터의 스위칭 시간이 짧기 때문에 CPU가 훨씬 더 빠른 속도로 작동할 수 있게 했습니다.[34]이때 거의 독점적인 트랜지스터였던 스위칭 소자의 신뢰성 향상과 속도의 비약적인 향상은 이 기간 동안 수십 메가헤르츠 단위의 CPU 클럭 속도를 쉽게 얻을 수 있었습니다.[35]또한, 이산 트랜지스터 및 IC CPU의 사용량이 많은 가운데 단일 명령어, 다중 데이터(SIMD) 벡터 프로세서와 같은 새로운 고성능 설계가 등장하기 시작했습니다.[36]이러한 초기의 실험적인 디자인은 나중에 Cray Inc.와 Fujitsu Ltd.가 만든 것과 같은 전문화된 슈퍼컴퓨터의 시대를 열었습니다.[36]
소규모 통합 CPU

이 시기에, 콤팩트한 공간에서 많은 상호 연결된 트랜지스터들을 제조하는 방법이 개발되었습니다.집적 회로(IC)는 단일 반도체 기반 다이(die), 즉 "칩" 상에서 많은 수의 트랜지스터를 제조할 수 있게 했습니다.처음에는 NOR 게이트와 같은 매우 기본적인 비전문 디지털 회로만 IC로 소형화되었습니다.[37]이러한 "빌딩 블록" IC에 기반한 CPU는 일반적으로 "소규모 집적"(SSI) 장치라고 합니다.Apollo Guidance Computer에 사용되는 것과 같은 SSI IC는 보통 최대 수십 개의 트랜지스터를 포함합니다.SSI IC로 전체 CPU를 구축하기 위해서는 수천 개의 개별 칩이 필요했지만, 이전의 이산 트랜지스터 설계보다 훨씬 적은 공간과 전력을 소비했습니다.[38]
IBM의 System/370은 System/360의 후속 제품으로 Solid Logic Technology 이산 트랜지스터 모듈이 아닌 SSI IC를 사용했습니다.[39][40]DEC의 PDP-8/I 및 KI10 PDP-10도 PDP-8 및 PDP-10에 사용되는 개별 트랜지스터에서 SSI IC로 전환되었으며,[41] 매우 인기 있는 PDP-11 라인은 원래 SSI IC로 제작되었으나, 실용화된 후 LSI 부품으로 구현되었습니다.
대규모 통합 CPU
Lee Boysel은 1967년에 발표한 "매니페스토"를 포함한 영향력 있는 기사를 발표했는데, 이 기사는 비교적 적은 수의 대규모 집적 회로(LSI)에서 32비트 메인프레임 컴퓨터를 만드는 방법을 설명했습니다.[42][43]LSI 칩은 게이트 수가 100개 이상인 칩으로, MOS(Metal-Oxide-Semiconductor) 반도체 제조 공정(PMOS 로직, NMOS 로직 또는 CMOS 로직)을 사용하여 제조하는 유일한 방법이었습니다.그러나 1970년대까지 양극성 접합 트랜지스터가 MOS 칩보다 빨랐기 때문에 일부 회사는 양극성 트랜지스터-트랜지스터 논리([43]TTL) 칩으로 프로세서를 계속 만들었습니다(데이터포인트와 같은 몇몇 회사는 1980년대 초까지 TTL 칩으로 프로세서를 계속 만들었습니다).1960년대에 MOSIC는 속도가 느렸고 초기에는 저전력이 필요한 애플리케이션에서만 유용한 것으로 여겨졌습니다.[44][45]1968년 Fairchild Semiconductor에서 Federico Faggin에 의해 실리콘 게이트 MOS 기술이 개발된 이후, MOS IC는 1970년대 초에 바이폴라 TTL을 표준 칩 기술로 대체했습니다.[46]
마이크로일렉트로닉 기술이 발전함에 따라 IC에 배치되는 트랜지스터 수가 증가하여 전체 CPU에 필요한 개별 IC의 수가 감소했습니다. MSI와 LSI IC는 트랜지스터 수를 수백 개, 그 다음에는 수천 개로 늘렸습니다.1968년까지 완전한 CPU를 구축하는 데 필요한 IC의 수는 8가지 유형의 24개 IC로 줄었고, 각 IC에는 약 1000개의 MOSFET이 포함되어 있었습니다.[47]SSI 및 MSI의 이전 모델과는 대조적으로, PDP-11의 첫 번째 LSI 구현에는 4개의 LSI 집적 회로로만 구성된 CPU가 포함되었습니다.[48]
마이크로프로세서

마이크로프로세서가 처음 도입된 이후로 다른 모든 중앙 처리 장치 구현 방법을 거의 완전히 추월했습니다.1971년에 만들어진 최초의 상업적으로 이용 가능한 마이크로프로세서는 인텔 4004였고, 1974년에 만들어진 최초의 널리 사용된 마이크로프로세서는 인텔 8080당시의 메인프레임 및 미니 컴퓨터 제조업체들은 오래된 컴퓨터 아키텍처를 업그레이드하기 위해 독점적인 IC 개발 프로그램을 시작했고, 결국 오래된 하드웨어 및 소프트웨어와 하위 호환되는 명령어 세트 호환 마이크로프로세서를 생산했습니다.유비쿼터스 개인용 컴퓨터의 출현과 궁극적인 성공을 결합하여 CPU라는 용어는 이제 거의 마이크로프로세서에만[a] 적용됩니다.하나의 프로세싱 칩에 여러 개의 CPU(표시 코어)를 결합할 수 있습니다.[49]
이전 세대의 CPU는 하나 이상의 회로 기판에 개별 컴포넌트와 수많은 소규모 집적 회로(IC)로 구현되었습니다.[50]반면에 마이크로프로세서는 매우 적은 수의 IC에서 제조되는 CPU입니다. 대개는 한 개뿐입니다.[51]단일 다이에 구현된 결과 전체적으로 작은 CPU 크기는 게이트 기생 커패시턴스 감소와 같은 물리적 요인으로 인해 스위칭 시간이 더 빨라짐을 의미합니다.[52][53]이를 통해 동기식 마이크로프로세서는 수십 메가헤르츠에서 수 기가헤르츠에 이르는 클럭 속도를 가질 수 있었습니다.또한 IC에 매우 작은 트랜지스터를 구성할 수 있게 됨에 따라 단일 CPU의 트랜지스터 수와 복잡도가 증가했습니다.이처럼 널리 관찰되는 추세는 2016년까지 CPU(및 기타 IC) 복잡성의 증가를 상당히 정확하게 예측하는 것으로 입증된 무어의 법칙에 의해 설명됩니다.[54][55]
1950년 이후 CPU의 복잡성, 크기, 구성 및 일반적인 형태는 크게 변화했지만 기본 설계 및 기능은 크게 변화하지 않았습니다.[56]오늘날 거의 모든 일반적인 CPU는 폰 노이만 저장 프로그램 기계로 매우 정확하게 설명될 수 있습니다.[57][b]무어의 법칙이 더 이상 성립하지 않음에 따라 집적 회로 트랜지스터 기술의 한계에 대한 우려가 제기되고 있습니다.전자 게이트의 극단적인 소형화는 전자 이동 및 하위 임계값 누설과 같은 현상의 효과를 훨씬 더 크게 야기하고 있습니다.[59][60]이러한 새로운 우려는 연구자들로 하여금 양자 컴퓨터와 같은 새로운 컴퓨팅 방법을 연구하게 하는 많은 요인들 중 하나이며, 또한 병렬 방식과 고전적인 폰 노이만 모델의 유용성을 확장하는 다른 방법들의 사용을 확대하게 합니다.
작동
대부분의 CPU는 물리적 형태에 상관없이 프로그램이라고 하는 일련의 저장된 명령어를 실행하는 것이 기본적인 동작입니다.실행할 명령어는 일종의 컴퓨터 메모리에 저장됩니다.거의 모든 CPU가 페치, 디코딩 및 실행 단계를 수행하며, 이를 통칭하여 명령 주기라고 합니다.
명령을 실행한 후에는 전체 프로세스가 반복되며, 프로그램 카운터의 증가된 값 때문에 다음 명령 사이클은 일반적으로 다음 순서 명령을 가져옵니다.점프 명령이 실행된 경우 프로그램 카운터는 점프한 명령의 주소를 포함하도록 수정되며 프로그램 실행은 정상적으로 계속됩니다.좀 더 복잡한 CPU에서는 여러 명령어를 동시에 불러오고, 해독하고 실행할 수 있습니다.이 섹션에서는 일반적으로 "클래식 RISC 파이프라인"이라고 불리는 것에 대해 설명합니다. 이는 많은 전자 장치(흔히 마이크로컨트롤러라고 함)에 사용되는 간단한 CPU 중에서 매우 일반적인 것입니다.이는 CPU 캐시의 중요한 역할과 따라서 파이프라인의 액세스 단계를 크게 무시하는 것입니다.
일부 명령어는 결과 데이터를 직접 생성하지 않고 프로그램 카운터를 조작합니다. 이러한 명령어는 일반적으로 "점프"라고 불리며 루프, 조건부 프로그램 실행, 함수의 존재와 같은 프로그램 동작을 용이하게 합니다.[c]일부 프로세서에서는 일부 다른 명령어가 "플래그" 레지스터의 비트 상태를 변경합니다.이러한 플래그는 종종 다양한 작업의 결과를 나타내므로 프로그램의 동작 방식에 영향을 주는 데 사용될 수 있습니다.예를 들어, 이러한 프로세서에서 "비교" 명령어는 두 개의 값을 평가하고 플래그 레지스터의 비트를 설정 또는 삭제하여 어느 값이 더 크거나 같은지 표시합니다. 이 플래그 중 하나는 나중에 점프 명령어가 프로그램 흐름을 결정하는 데 사용할 수 있습니다.
가지고 오다
페치(Fetch)는 프로그램 메모리에서 명령어(숫자 또는 일련 번호로 표시됨)를 검색하는 것을 포함합니다.프로그램 메모리에서 명령어의 위치(주소)는 프로그램 카운터(PC; Intel x86 마이크로프로세서에서 "명령어 포인터"라고 함)에 의해 결정되며, 이 카운터에는 다음에 가져올 명령어의 주소를 나타내는 숫자가 저장됩니다.명령어를 가져온 후 PC는 명령어의 길이만큼 증가하여 순서대로 다음 명령어의 주소를 포함합니다.[d]종종 비교적 느린 메모리에서 가져올 명령을 검색해야 하므로 명령이 반환되기를 기다리는 동안 CPU가 정지됩니다.이 문제는 캐시 및 파이프라인 아키텍처를 통해 현대 프로세서에서 주로 다루어지고 있습니다(아래 참조).
디코드
CPU가 메모리에서 가져오는 명령에 따라 CPU가 수행할 작업이 결정됩니다.명령어 디코더로 알려진 이진 디코더 회로에 의해 수행되는 디코딩 단계에서, 명령어는 CPU의 다른 부분을 제어하는 신호로 변환됩니다.
명령어를 해석하는 방법은 CPU의 명령어 세트 아키텍처(ISA)에 의해 정의됩니다.[e]종종 opcode라고 불리는 명령어 내의 한 그룹의 비트(즉, "필드")는 어떤 연산을 수행할 것인지를 나타내고, 나머지 필드는 대개 연산에 필요한 추가 정보(예: 피연산자)를 제공합니다.이러한 피연산자는 상수 값(즉시 값이라고 함)으로 지정되거나, 일부 어드레싱 모드에 의해 결정되는 프로세서 레지스터 또는 메모리 주소일 수 있는 값은 값의 위치로 지정될 수 있습니다.
일부 CPU 설계에서 명령 디코더는 유선 연결된 변경 불가능한 바이너리 디코더 회로로 구현됩니다.다른 경우에는 마이크로프로그램을 사용하여 명령을 여러 클럭 펄스에 걸쳐 순차적으로 인가되는 CPU 구성 신호 세트로 변환합니다.일부 경우 마이크로프로그램을 저장하는 메모리를 다시 쓸 수 있으므로 CPU가 명령을 해독하는 방식을 변경할 수 있습니다.
실행
페치 및 디코딩 단계가 끝나면 실행 단계가 수행됩니다.CPU 아키텍처에 따라 이는 단일 작업 또는 일련의 작업으로 구성될 수 있습니다.각 동작 동안 제어 신호는 CPU의 여러 부분을 전기적으로 활성화하거나 비활성화하여 원하는 동작의 전부 또는 일부를 수행할 수 있습니다.그런 다음 일반적으로 클럭 펄스에 응답하여 작업이 완료됩니다.결과는 후속 지침에 의해 신속한 액세스를 위해 내부 CPU 레지스터에 기록되는 경우가 많습니다.그 외의 경우에는 속도는 느리지만 비용은 덜 들고 용량은 더 큰 메인 메모리에 기록될 수 있습니다.
예를 들어, 덧셈을 수행하는 명령어가 실행되어야 하는 경우, 덧셈을 수행하는 ALU(Ametric Logic Unit)의 부분과 마찬가지로 피연산자(합산해야 할 숫자)를 포함하는 레지스터가 활성화됩니다.클럭 펄스가 발생하면 소스 레지스터에서 피연산자가 ALU로 흘러들어가고 합이 출력에 나타납니다.후속 클럭 펄스에서는 다른 구성 요소가 활성화(및 비활성화)되어 출력(동작의 합)을 스토리지(예: 레지스터 또는 메모리)로 이동합니다.결과 합계가 너무 크면(즉, ALU의 출력 워드 크기보다 크다) 산술 오버플로 플래그가 설정되어 다음 작업에 영향을 미칩니다.
구조 및 구현

CPU 회로에 유선으로 연결된 것은 CPU가 수행할 수 있는 기본적인 동작 집합으로 명령어 집합이라고 합니다.이러한 작업은 예를 들어 두 숫자를 더하거나 빼기, 두 숫자를 비교하거나 프로그램의 다른 부분으로 점프하는 것을 포함할 수 있습니다.각 명령어는 기계어 opcode라고 하는 비트의 고유한 조합으로 표현됩니다.명령을 처리하는 동안 CPU는 (이진 디코더를 통해) opcode를 제어 신호로 디코딩하여 CPU의 동작을 조정합니다. 완전한 기계어 명령은 opcode와 많은 경우 연산에 대한 인수를 지정하는 추가 비트로 구성됩니다(예를 들어,가산작업의 경우에 합산되는 숫자).복잡성 규모를 높여 보면, 기계어 프로그램은 CPU가 실행하는 기계어 명령 모음입니다.
각 명령어에 대한 실제 수학적 연산은 CPU의 프로세서 내에 있는 조합 논리 회로(ALU, 산술 논리 단위)에 의해 수행되는데, 일반적으로 CPU는 명령어를 메모리에서 가져와 ALU를 이용하여 연산을 수행한 후 그 결과를 메모리에 저장함으로써 실행됩니다.정수 수학 및 논리 연산을 위한 명령어 외에도 메모리에서 데이터를 로드하고 이를 다시 저장하기 위한 명령어, 분기 연산, CPU의 부동 소수점 유닛(FPU)에서 수행되는 부동 소수점 숫자에 대한 수학 연산 등 다양한 다른 기계 명령어가 존재합니다.[61]
컨트롤 유닛
제어부(Control Unit, CU)는 프로세서의 동작을 지시하는 CPU의 구성 요소입니다.컴퓨터의 메모리, 산술 및 논리 장치와 입출력 장치가 프로세서로 전송된 명령에 어떻게 대응해야 하는지 알려줍니다.
타이밍 및 제어 신호를 제공하여 다른 장치의 동작을 지시합니다.대부분의 컴퓨터 자원은 CU에 의해 관리됩니다. CPU와 다른 장치 사이의 데이터 흐름을 지시합니다.존 폰 노이만은 컨트롤 유닛을 폰 노이만 아키텍처의 일부로 포함시켰습니다.현대의 컴퓨터 설계에서 컨트롤 유닛은 일반적으로 CPU의 내부 부품이며, 도입 이후 전체적인 역할과 작동 방식은 변경되지 않았습니다.[62]
산술논리단위

ALU(Ametric Logic Unit)는 프로세서 내에서 정수 산술 및 비트 와이즈 논리 연산을 수행하는 디지털 회로입니다.ALU에 대한 입력은 조작할 데이터 워드(피연산자라고 함), 이전 조작에서 나온 상태 정보 및 어떤 조작을 수행할지를 나타내는 제어부의 코드입니다.실행 중인 명령어에 따라 피연산자는 내부 CPU 레지스터, 외부 메모리 또는 ALU 자체에서 생성된 상수에서 나올 수 있습니다.
모든 입력 신호가 ALU 회로를 통해 정착되고 전파되면 수행된 작업의 결과가 ALU의 출력에 나타납니다.결과는 레지스터 또는 메모리에 저장될 수 있는 데이터 워드와 이를 위해 예약된 특수 내부 CPU 레지스터에 저장되는 상태 정보로 구성됩니다.
주소생성부
어드레스 생성부(AGU)는 CPU 내부의 실행 유닛으로,[63] CPU가 메인 메모리에 액세스하기 위해 사용하는 어드레스를 계산합니다.CPU의 나머지 부분과 병렬로 동작하는 별도의 회로에서 주소 계산을 처리하도록 함으로써 다양한 기계 명령을 실행하는 데 필요한 CPU 사이클 수를 줄여 성능을 향상시킬 수 있습니다.
CPU는 다양한 연산을 수행하는 동안 메모리에서 데이터를 가져오는 데 필요한 메모리 주소를 계산해야 합니다. 예를 들어 어레이 요소의 인메모리 위치를 계산해야 CPU가 실제 메모리 위치에서 데이터를 가져올 수 있습니다.이러한 주소 생성 계산에는 덧셈, 뺄셈, 모듈로 연산 또는 비트 이동과 같은 다양한 정수 연산이 포함됩니다.흔히, 메모리 주소를 계산하는 데는 둘 이상의 범용 머신 명령어가 포함되며, 이 명령어들은 반드시 빠르게 디코딩하고 실행할 필요는 없습니다.AGU를 CPU 설계에 통합함으로써, AGU를 사용하는 특수한 명령어를 도입함으로써, CPU의 나머지 부분에서 다양한 주소 생성 계산을 오프로드할 수 있으며, 종종 단일 CPU 주기로 신속하게 실행할 수 있습니다.
AGU의 기능은 특정 CPU와 해당 아키텍처에 따라 달라집니다.따라서 일부 AGU는 주소 계산 연산을 더 많이 구현하고 노출하는 반면, 일부는 한 번에 여러 피연산자에서 연산할 수 있는 고급 전문 명령어를 포함합니다.일부 CPU 아키텍처에는 여러 개의 AGU가 포함되어 있어 하나 이상의 주소 계산 작업을 동시에 실행할 수 있습니다. 이는 고급 CPU 설계의 슈퍼스칼라 특성으로 인해 성능이 더욱 향상됩니다.예를 들어, Intel은 여러 AGU를 Sandy Bridge 및 Haswell 마이크로아키텍처에 통합하여 여러 메모리 액세스 명령을 병렬로 실행함으로써 CPU 메모리 서브시스템의 대역폭을 늘립니다.
메모리관리장치(MMU)
대부분의 마이크로프로세서(스마트폰 및 데스크톱, 노트북, 서버 컴퓨터)에는 메모리 관리 장치가 있으며, 논리 주소를 물리적 RAM 주소로 변환하여 가상 메모리에 유용한 메모리 보호 및 페이징 기능을 제공합니다.단순한 프로세서, 특히 마이크로컨트롤러는 일반적으로 MMU를 포함하지 않습니다.
캐시
CPU 캐시는[64] 메인 메모리에서 데이터에 액세스하는 평균 비용(시간 또는 에너지)을 줄이기 위해 컴퓨터의 중앙 처리 장치(CPU)가 사용하는 하드웨어 캐시입니다.캐시는 자주 사용하는 주 메모리 위치에서 데이터의 복사본을 저장하는 프로세서 코어에 가까운 더 작고 빠른 메모리입니다.대부분의 CPU는 명령어 및 데이터 캐시를 포함하여 서로 다른 독립 캐시를 가지고 있으며, 여기서 데이터 캐시는 일반적으로 더 많은 캐시 레벨(L1, L2, L3, L4 등)의 계층으로 구성됩니다.
(일부 특수한 예외는[f] 제외하고) 모든 최신 CPU에는 여러 레벨의 CPU 캐시가 있습니다.캐시를 사용한 최초의 CPU는 캐시 레벨이 하나뿐이었고, 이후의 레벨 1 캐시와는 달리 L1d(데이터용)와 L1i(명령용)로 나뉘지 않았습니다.캐시가 있는 거의 모든 현재 CPU는 분할된 L1 캐시를 가집니다.또한 L2 캐시를 보유하고 있으며, 더 큰 프로세서의 경우 L3 캐시도 보유하고 있습니다.L2 캐시는 일반적으로 분할되지 않으며 이미 분할된 L1 캐시의 공통 저장소 역할을 합니다.멀티 코어 프로세서의 모든 코어에는 전용 L2 캐시가 있으며 코어 간에 공유되지 않습니다.L3 캐시와 상위 캐시는 코어 간에 공유되고 분할되지 않습니다.L4 캐시는 현재 흔하지 않으며, 일반적으로 별도의 다이나 칩에서 정적 랜덤 액세스 메모리(SRAM)가 아닌 DRAM(Dynamic Random Access Memory) 상에 있습니다.역사적으로 L1의 경우도 그러했지만, 더 큰 칩을 사용하면 L1과 일반적으로 모든 캐시 레벨을 통합할 수 있으며, 마지막 레벨을 제외할 수도 있습니다.각 추가 캐시 레벨은 크기가 더 크고 서로 다르게 최적화되는 경향이 있습니다.
대부분의 CPU가 가지고 있는 메모리 관리 유닛(MMU)의 일부인 변환 룩사이드 버퍼(TLB)와 같은 다른 유형의 캐시(위에서 언급한 가장 중요한 캐시의 "캐시 크기"로 계산되지 않음)가 있습니다.
캐시의 크기는 일반적으로 2, 8, 16 등의 2개의 거듭제곱으로 결정됩니다.(L1이 아닌 더 큰 경우) KiB 또는 MiB 크기이지만 IBM z13에는 96 KiB L1 명령 캐시가 있습니다.[65]
시계율
대부분의 CPU는 동기 회로이므로 클럭 신호를 사용하여 순차적인 동작의 속도를 조절합니다.클럭 신호는 주기적인 구형파의 형태로 매초 일정한 수의 펄스를 생성하는 외부 오실레이터 회로에 의해 생성됩니다.클럭 펄스의 주파수는 CPU가 명령을 실행하는 속도를 결정하며, 결과적으로 클럭이 빠를수록 CPU가 매초 더 많은 명령을 실행합니다.
CPU의 적절한 작동을 보장하기 위해 클럭 주기는 모든 신호가 CPU를 통해 전파(이동)하는 데 필요한 최대 시간보다 깁니다.클럭 주기를 최악의 경우 전파 지연보다 훨씬 높은 값으로 설정할 때, 전체 CPU와 상승 및 하강 클럭 신호의 "가장자리"를 중심으로 데이터를 이동하는 방식을 설계할 수 있습니다.이를 통해 설계 관점과 구성 요소 수 관점 모두에서 CPU를 대폭 간소화할 수 있는 장점이 있습니다.그러나 일부 CPU의 속도가 훨씬 빠르더라도 전체 CPU가 가장 느린 요소에서 대기해야 한다는 단점도 있습니다.이 한계는 CPU 병렬도를 증가시키는 다양한 방법으로 크게 보완되었습니다(아래 참조).
그러나 아키텍처 개선만으로 글로벌 동기화 CPU의 단점을 모두 해결할 수는 없습니다.예를 들어, 클럭 신호는 다른 전기 신호의 지연에 영향을 받습니다.점점 더 복잡해지는 CPU의 클럭 속도가 높아지면 전체 장치에서 클럭 신호를 위상(동기화)으로 유지하는 것이 더욱 어려워집니다.이로 인해 현대의 많은 CPU는 동일한 클럭 신호를 여러 개 제공하여 단일 신호가 CPU 오작동을 일으킬 정도로 지연되는 것을 방지해야 했습니다.클럭 속도가 급격하게 증가함에 따라 CPU에서 방출되는 열의 양도 주요 문제입니다.지속적으로 변하는 시계로 인해 해당 시간에 사용 여부에 관계없이 많은 구성 요소가 전환됩니다.일반적으로 스위칭을 하는 구성요소는 정적인 상태의 구성요소보다 더 많은 에너지를 사용합니다.따라서 클럭 속도가 증가함에 따라 에너지 소비도 증가하여 CPU 냉각 솔루션의 형태로 더 많은 방열이 필요하게 됩니다.
불필요한 구성 요소의 전환을 처리하는 한 가지 방법은 클록 게이팅(clock gating)이라고 하며, 이는 불필요한 구성 요소에 대한 클록 신호를 차단(효과적으로 비활성화)하는 것을 포함합니다.그러나 이는 구현하기 어려운 것으로 간주되는 경우가 많기 때문에 저전력 설계 이외의 일반적인 용도는 볼 수 없습니다.광범위한 클록 게이팅(clock gating)을 사용하는 최근의 주목할 만한 CPU 설계 중 하나는 Xbox 360에 사용되는 IBM PowerPC 기반 제논(Xenon)입니다. 이렇게 하면 Xbox 360의 전력 요구량이 크게 줄어듭니다.[66]
클럭리스 CPU
글로벌 클럭 신호의 일부 문제를 해결하는 또 다른 방법은 클럭 신호를 완전히 제거하는 것입니다.글로벌 클럭 신호를 제거하면 설계 프로세스가 여러 면에서 훨씬 복잡해지는 반면, 비동기(또는 클럭리스) 설계는 유사한 동기 설계와 비교하여 소비 전력과 방열 면에서 두드러진 이점을 가지고 있습니다.다소 흔하지는 않지만, 전체 비동기 CPU는 글로벌 클럭 신호를 사용하지 않고 구축되었습니다.ARM 호환 AMLET와 MIPS R3000 호환 MiniMIPS를 두 가지 대표적인 예로 들 수 있습니다.[67]
일부 CPU 설계는 클럭 신호를 완전히 제거하는 것이 아니라 장치의 특정 부분을 비동기식으로 허용합니다. 예를 들어 슈퍼스칼라 파이프라인과 함께 비동기식 ALU를 사용하여 산술 성능 향상을 달성할 수 있습니다.완전한 비동기 설계가 동기화된 설계보다 동등하거나 더 나은 수준에서 수행될 수 있는지 여부가 완전히 명확하지는 않지만, 그들이 적어도 더 단순한 수학 연산에서 뛰어나다는 것은 명백합니다.이는 뛰어난 소비 전력과 방열 특성을 결합하여 내장형 컴퓨터에 매우 적합합니다.[68]
전압 레귤레이터 모듈
대부분의 최신 CPU에는 다이 통합 전력 관리 모듈이 내장되어 있어 CPU 회로에 대한 온디맨드 전압 공급을 조절하여 성능과 전력 소비 간의 균형을 유지할 수 있습니다.
정수 범위
모든 CPU는 특정한 방식으로 수치를 나타냅니다.예를 들어, 어떤 초기 디지털 컴퓨터들은 숫자를 익숙한 십진법(기준 10) 숫자 시스템 값으로 표현했고, 다른 컴퓨터들은 3진법(기준 3)과 같은 더 특이한 표현을 사용했습니다.거의 모든 최신 CPU는 이진 형태로 숫자를 표현하며, 각 숫자는 "높음" 또는 "낮음" 전압과 같은 두 가지 값의 물리량으로 표현됩니다.[g]
숫자 표현과 관련된 것은 CPU가 표현할 수 있는 정수의 크기와 정밀도입니다.이진 CPU의 경우, 이는 CPU가 한 동작에서 처리할 수 있는 비트 수(이진 부호화 정수의 유효 자릿수)로 측정되며, 이를 일반적으로 워드 크기, 비트 폭, 데이터 경로 폭, 정수 정밀도 또는 정수 크기라고 합니다.CPU의 정수 크기는 CPU가 직접 작동할 수 있는 정수 값의 범위를 결정합니다.[h]예를 들어 8비트 CPU는 256(28)개의 개별 정수 값 범위를 가진 8비트로 표시되는 정수를 직접 조작할 수 있습니다.
정수 범위는 CPU가 직접 주소 지정할 수 있는 메모리 위치 수에도 영향을 미칠 수 있습니다(주소는 특정 메모리 위치를 나타내는 정수 값임).예를 들어 이진 CPU가 메모리 주소를 나타내기 위해 32비트를 사용하는 경우 2개의32 메모리 위치를 직접 지정할 수 있습니다.이러한 제한을 피하기 위해 그리고 다양한 다른 이유로 인해 일부 CPU는 추가 메모리를 처리할 수 있는 메커니즘(예: 뱅크 스위칭)을 사용합니다.
워드 크기가 큰 CPU는 더 많은 회로를 필요로 하기 때문에 물리적으로 더 크고 비용이 많이 들며 더 많은 전력을 소비합니다(따라서 더 많은 열을 발생시킵니다).따라서 현대의 애플리케이션에서는 일반적으로 4비트 또는 8비트 마이크로컨트롤러를 사용할 수 있지만, 훨씬 더 큰 워드 크기(예: 16, 32, 64, 심지어 128비트)를 가진 CPU를 사용할 수 있습니다.그러나 더 높은 성능이 요구되는 경우, 더 큰 워드 크기(데이터 범위 및 주소 공간이 더 큼)의 이점이 단점보다 더 클 수 있습니다.CPU는 크기와 비용을 줄이기 위해 내부 데이터 경로가 단어 크기보다 짧을 수 있습니다.예를 들어, IBM System/360 명령어 세트 아키텍처가 32비트 명령어 세트였음에도 불구하고, System/360 Model 30과 Model 40은 산술 논리 단위로 8비트 데이터 경로를 가지고 있었기 때문에 32비트를 추가하려면 피연산자의 8비트마다 하나씩 4개의 사이클이 필요했고, Motorola 68000 시리즈 명령어 세트가 32비트 인스였음에도 불구하고Motorola 68000과 Motorola 68010은 산술 논리 단위로 16비트 데이터 경로를 가지고 있어서 32비트를 추가하는 데 2개의 사이클이 필요했습니다.
낮은 비트 길이와 높은 비트 길이 모두에서 얻을 수 있는 이점을 얻기 위해, 많은 명령어 세트는 정수 및 부동 소수점 데이터에 대해 서로 다른 비트 폭을 가지며, 이 명령어 세트를 구현하는 CPU는 장치의 여러 부분에 대해 서로 다른 비트 폭을 가질 수 있습니다.예를 들어 IBM System/360 명령어 세트는 주로 32비트였지만 부동 소수점 숫자의 정확도와 범위를 높이기 위해 64비트 부동 소수점 값을 지원했습니다.[30]시스템/360 모델 65는 10진법과 고정점 이진법을 위한 8비트 가산기와 부동점 산술을 위한 60비트 가산기를 가지고 있었습니다.[69]이후의 많은 CPU 설계에서는 비슷한 혼합 비트 폭을 사용하며, 특히 프로세서가 정수와 부동 소수점 기능의 합리적인 균형이 필요한 범용 용도로 사용될 경우 더욱 그렇습니다.
평행선

앞 절에서 설명한 CPU의 기본 동작에 대한 설명은 CPU가 취할 수 있는 가장 간단한 형태를 설명합니다.일반적으로 서브스칼라(subscalar)라고 불리는 이 유형의 CPU는 클럭 사이클 당 하나의 명령보다 작은, 한 번에 하나 또는 두 개의 데이터에 대해 하나의 명령을 동작하고 실행합니다(IPC < 1).
이 프로세스는 서브스케일러 CPU에 내재된 비효율성을 야기합니다.한 번에 하나의 명령만 실행되므로 전체 CPU는 해당 명령이 완료될 때까지 기다려야 다음 명령으로 진행할 수 있습니다.결과적으로 서브스칼라 CPU는 실행을 완료하는 데 하나 이상의 클럭 사이클이 걸리는 명령에 대해 "중단" 상태가 됩니다.두 번째 실행 유닛(아래 참조)을 추가해도 성능이 크게 향상되지는 않으며, 하나의 경로를 끊는 대신 이제 두 개의 경로가 끊기고 사용하지 않는 트랜지스터의 수가 늘어납니다.CPU의 실행 리소스가 한 번에 하나의 명령에서만 작동할 수 있는 이 설계는 스칼라 성능(클럭 사이클당 하나의 명령어, IPC = 1)에만 도달할 수 있습니다.그러나 성능은 거의 항상 하위 수준입니다(클럭 주기당 하나의 명령보다 작음, IPC < 1).
스칼라와 더 나은 성능을 달성하려는 시도로 인해 CPU가 덜 선형적으로 동작하고 더 병렬적으로 동작하는 다양한 설계 방법론이 생겨났습니다.CPU에서 병렬성을 언급할 때 이러한 설계 기법을 분류하기 위해 일반적으로 두 가지 용어가 사용됩니다.
- 명령어 레벨 병렬화(ILP)는 CPU 내에서 명령이 실행되는 비율을 증가시키기 위해(즉, 온다이 실행 리소스의 사용을 증가시키기 위해) 추구합니다.
- CPU가 동시에 실행할 수 있는 스레드 또는 프로세스의 수를 늘리는 것을 목적으로 하는 태스크 레벨 병렬화(TLP).
각 방법론은 구현 방식과 애플리케이션의 CPU 성능을 높이는 데 있어서의 상대적인 효과 모두에서 차이가 있습니다.[i]
명령어 수준 병렬화

병렬성을 높이기 위한 가장 간단한 방법 중 하나는 이전 명령 실행이 끝나기 전에 명령 페칭 및 디코딩의 첫 단계를 시작하는 것입니다.이것은 명령어 파이프라인으로 알려진 기술이며, 거의 모든 현대 범용 CPU에 사용됩니다.파이프라인은 실행 경로를 개별 단계로 분할하여 여러 명령을 한 번에 실행할 수 있도록 합니다.이 분리는 실행 파이프라인을 빠져나와 폐기될 때까지 각 단계에서 명령이 보다 완벽하게 수행되는 조립 라인과 비교될 수 있습니다.
그러나 파이프라인은 다음 작업을 완료하기 위해 이전 작업의 결과가 필요한 상황(종종 데이터 종속성 충돌이라는 조건)의 가능성을 제공합니다.따라서 파이프라인 처리기는 이러한 종류의 상태를 확인하고 필요한 경우 파이프라인의 일부를 지연시켜야 합니다.파이프라인 프로세서는 매우 거의 스칼라가 될 수 있으며, 오직 파이프라인 스톨(한 스테이지에서 하나 이상의 클럭 사이클을 소비하는 명령)에 의해서만 억제됩니다.

명령 파이프라인의 개선은 CPU 구성 요소의 유휴 시간을 더욱 감소시켰습니다.슈퍼스칼라라고 불리는 설계에는 긴 명령어 파이프라인과 로드-스토어 단위, 산술-논리 단위, 부동 소수점 단위 및 주소 생성 단위와 같은 동일한 실행 단위가 다수 포함됩니다.[70]슈퍼스칼라 파이프라인에서는 명령을 읽고 디스패처로 전달하며, 디스패처는 명령을 병렬(동시)로 실행할 수 있는지 여부를 결정합니다.그렇다면 집행단위로 파견되어 동시에 집행을 하게 되는 것입니다.일반적으로 슈퍼스칼라 CPU가 사이클 내에 완료하는 명령의 수는 실행 유닛에 동시에 디스패치할 수 있는 명령의 수에 따라 달라집니다.
슈퍼스칼라 CPU 아키텍처의 설계 시 대부분의 어려움은 효과적인 디스패처를 만드는 데 있습니다.디스패처는 명령을 병렬적으로 실행할 수 있는지 여부를 신속하게 판단할 수 있어야 하며, 가능한 한 많은 실행 유닛이 작동하지 않도록 디스패처를 파견할 수 있어야 합니다.이를 위해서는 명령 파이프라인이 가능한 한 자주 채워져야 하며 상당한 양의 CPU 캐시가 필요합니다.또한 지점 예측, 추측 실행, 레지스터 이름 변경, 순서 외 실행 및 트랜잭션 메모리와 같은 위험 방지 기술이 높은 성능을 유지하는 데 중요합니다.조건부 명령이 어떤 분기(또는 경로)를 사용할 것인지 예측하려고 시도함으로써, CPU는 조건부 명령이 완료될 때까지 전체 파이프라인이 대기해야 하는 횟수를 최소화할 수 있습니다.추측 실행은 종종 조건부 작업이 완료된 후 필요하지 않을 수 있는 코드 부분을 실행함으로써 약간의 성능 향상을 제공합니다.순서가 맞지 않는 실행은 명령이 실행되는 순서를 다소 재조정하여 데이터 종속성으로 인한 지연을 줄입니다.또한 단일 명령어 스트림의 경우 여러 데이터 스트림(동일한 유형의 많은 데이터를 처리해야 하는 경우), 현대적인 프로세서는 파이프라인의 일부를 비활성화할 수 있으므로 단일 명령어가 여러 번 실행될 때 CPU가 페치 및 디코딩 단계를 건너뛰어 특정한 경우에 성능을 크게 향상시킬 수 있습니다.특히 비디오 제작 소프트웨어와 사진 처리와 같은 매우 단조로운 프로그램 엔진에서.
CPU의 일부만 슈퍼스칼라인 경우, 그렇지 않은 부분은 스케줄링 스톨로 인해 성능 저하가 발생합니다.인텔 P5 펜티엄은 클럭 사이클당 하나의 명령을 수용할 수 있는 두 개의 슈퍼스칼라 ALU를 가지고 있었지만 FPU는 수용할 수 없었습니다.따라서 P5는 정수 초스칼라였지만 부동 소수점 초스칼라는 아니었습니다.P5 아키텍처의 후속 제품인 P6는 부동 소수점 기능에 초대형 기능을 추가했습니다.
간단한 파이프라인과 슈퍼스칼라 설계로 클럭 주기당 하나의 명령을 초과하는 속도로 명령을 실행할 수 있어 CPU의 ILP를 증가시킵니다.대부분의 최신 CPU 설계는 적어도 어느 정도 슈퍼스칼라이며, 지난 10년간 설계된 거의 모든 범용 CPU는 슈퍼스칼라입니다.나중에 고 ILP 컴퓨터를 설계할 때 강조하는 부분 중 일부는 CPU의 하드웨어에서 소프트웨어 인터페이스 또는 명령어 세트 아키텍처(ISA)로 옮겨졌습니다.VLIW(Very Long Instruction Word)의 전략은 소프트웨어가 일부 ILP를 직접 암시하게 하여 CPU의 ILP 활성화 작업을 줄이고 설계 복잡성을 줄입니다.
태스크 레벨 병렬화
성능을 달성하는 또 다른 전략은 여러 스레드 또는 프로세스를 병렬적으로 실행하는 것입니다.이 연구 분야는 병렬 컴퓨팅으로 알려져 있습니다.[71]플린의 분류 체계에서 이 전략은 다중 명령어 스트림, 다중 데이터 스트림(MIMD)으로 알려져 있습니다.[72]
이 목적을 위해 사용된 한 가지 기술은 MP(Multiple Processing)였습니다.[73]이 기술의 초기 맛은 대칭 다중 처리(SMP)로 알려져 있으며, 소수의 CPU가 메모리 시스템에 대한 일관된 관점을 공유합니다.이 방식에서 각 CPU에는 메모리의 지속적인 최신 뷰를 유지하기 위한 추가 하드웨어가 있습니다.오래된 메모리 보기를 방지함으로써 CPU는 동일한 프로그램에서 협력할 수 있고 프로그램은 한 CPU에서 다른 CPU로 마이그레이션할 수 있습니다.협력 CPU의 수를 소수 이상으로 늘리기 위해, NUMA(Uniform Memory Access)와 디렉토리 기반 코히어런스 프로토콜과 같은 체계가 1990년대에 도입되었습니다.SMP 시스템은 CPU의 수가 적은 반면 NUMA 시스템은 수천 개의 프로세서로 구축되었습니다.처음에는 프로세서 간의 상호 연결을 구현하기 위해 여러 개의 개별 CPU와 보드를 사용하여 다중 처리를 구축했습니다.프로세서와 그 인터커넥트가 모두 하나의 칩에 구현되는 경우, 기술은 칩 레벨 다중 처리(CMP)이고 단일 칩은 멀티 코어 프로세서로 알려져 있습니다.
나중에 단일 프로그램으로 더 미세한 평행성이 존재한다는 것이 인식되었습니다.단일 프로그램에는 개별적으로 또는 병렬적으로 실행할 수 있는 여러 스레드(또는 함수)가 있을 수 있습니다.이 기술의 초기 예들 중 일부는 직접 메모리 액세스와 같은 입출력 처리를 계산 스레드와는 별개의 스레드로 구현했습니다.이 기술에 대한 보다 일반적인 접근 방식은 1970년대 시스템이 여러 계산 스레드를 병렬로 실행하도록 설계되었을 때 도입되었습니다.이 기술은 MT(multi-threading)라고 알려져 있습니다.MP의 경우 전체 CPU가 아닌, CPU 내의 소수의 컴포넌트만 복제되어 MT를 지원하므로 다중 처리보다 비용 효율이 높다고 판단됩니다. MT에서는 실행 유닛과 캐시를 포함한 메모리 시스템이 다수의 스레드에서 공유됩니다.MT의 단점은 멀티스레딩에 대한 하드웨어 지원이 MP의 하드웨어 지원보다 소프트웨어에 더 잘 보이기 때문에 운영 체제와 같은 슈퍼바이저 소프트웨어가 MT를 지원하기 위해 더 큰 변화를 겪어야 한다는 것입니다. 구현된 MT의 한 가지 유형은 일시적 멀티스레딩으로 알려져 있습니다.여기서 하나의 스레드는 외부 메모리에서 데이터가 돌아올 때까지 정지될 때까지 실행됩니다.이 방식에서 CPU는 실행 준비가 된 다른 스레드로 빠르게 컨텍스트 전환합니다. 스위치는 종종 UltraSPARC T1과 같은 CPU 클럭 사이클에서 수행됩니다.MT의 또 다른 유형은 동시 멀티스레딩으로, 여러 스레드의 명령이 하나의 CPU 클럭 사이클 내에서 병렬로 실행됩니다.
1970년대부터 2000년대 초반까지 수십 년 동안 고성능 범용 CPU 설계에 집중한 것은 주로 파이프라인, 캐시, 슈퍼스칼라 실행, 순서 외 실행 등의 기술을 통해 높은 ILP를 달성하는 것이었습니다.이러한 경향은 Intel Pentium 4와 같은 대용량의 전력이 부족한 CPU에서 절정에 달했습니다.2000년대 초반까지 CPU 동작 주파수와 메인 메모리 동작 주파수 간의 격차가 증가하고 난해한 ILP 기법으로 인해 CPU 전력 소모가 증가함에 따라 CPU 설계자는 ILP 기법에서 더 높은 성능을 달성하지 못했습니다.
CPU 설계자는 트랜잭션 처리와 같은 상업용 컴퓨팅 시장에서 아이디어를 빌려왔는데, 이 시장에서는 단일 스레드나 프로세스의 성능보다 여러 프로그램의 총 성능(throughput computing이라고도 함)이 더 중요했습니다.
이러한 강조의 반전은 듀얼 및 더 핵심적인 프로세서 디자인의 확산과 특히 인텔의 덜 슈퍼스칼라 P6 아키텍처와 유사한 최신 디자인에서 입증됩니다.x86-64 Opteron 및 Athlon 64 X2, SPARC Ultra SPARC T1, IBM POWER4 및 POWER5를 비롯한 여러 프로세서 제품군의 최신 디자인은 CMP뿐만 아니라 Xbox 360의 트리플 코어 PowerPC 디자인 및 PlayStation 3의 7코어 Cell 마이크로프로세서와 같은 여러 비디오 게임 콘솔 CPU도 전시합니다.
데이터 병렬화
덜 흔하지만 점점 더 중요해지는 프로세서(그리고 실제로 일반적인 컴퓨팅)의 패러다임은 데이터 병렬성을 다룹니다.앞에서 논의한 프로세서는 모두 스칼라 장치의 일부 유형이라고 합니다.[j]이름에서 알 수 있듯이 벡터 프로세서는 하나의 명령어의 맥락에서 여러 개의 데이터를 처리합니다.이것은 모든 명령에 대해 하나의 데이터를 처리하는 스칼라 프로세서와 대조됩니다.Flyn의 분류 체계를 사용하여 데이터를 다루는 이 두 가지 체계를 일반적으로 단일 명령 스트림, 다중 데이터 스트림(SIMD) 및 단일 명령 스트림, 단일 데이터 스트림(SISD)이라고 합니다.데이터 벡터를 처리하는 프로세서를 만드는 데 있어 가장 큰 유용성은 많은 데이터 집합에서 동일한 작업(예: 합 또는 점 곱)을 수행해야 하는 경향이 있는 작업을 최적화하는 데 있습니다.이러한 작업 유형의 고전적인 예로는 멀티미디어 응용프로그램(이미지, 비디오 및 사운드)뿐만 아니라 과학 및 엔지니어링 작업 유형이 있습니다.스칼라 프로세서는 데이터 집합 내의 각 명령어와 값을 불러오고, 해독하고, 실행하는 전 과정을 완료해야 하는 반면, 벡터 프로세서는 하나의 명령어로 비교적 큰 데이터 집합에 대해 단일 연산을 수행할 수 있습니다.이것은 애플리케이션이 하나의 작업을 대규모 데이터 집합에 적용하는 여러 단계를 필요로 하는 경향이 있을 때만 가능합니다.
Cray-1과 같은 대부분의 초기 벡터 프로세서는 거의 전적으로 과학 연구 및 암호학 응용과 관련이 있었습니다.그러나, 멀티미디어가 디지털 미디어로 크게 이동함에 따라, 범용 프로세서에서 어떤 형태의 SIMD에 대한 필요성이 커졌습니다.범용 프로세서에 부동 소수점 유닛이 포함되기 시작한 직후 범용 프로세서에 대한 SIMD 실행 유닛의 사양 및 구현도 등장하기 시작했습니다.[when?]HP의 Multimedia Acceleration eXtensions(MAX) 및 Intel의 MMX와 같은 초기 SIMD 사양 중 일부는 정수만 제공되었습니다.SIMD의 혜택을 받는 많은 애플리케이션들이 주로 부동 소수점 숫자를 다루기 때문에, 이것은 일부 소프트웨어 개발자들에게 상당한 장애물임이 증명되었습니다.점진적으로 개발자들은 이러한 초기 설계를 하나의 명령어 세트 아키텍처(ISA)와 관련된 일반적인 최신 SIMD 사양 중 일부로 다듬고 다시 만들었습니다.주목할 만한 최신 예로는 Intel의 SSE(Streaming SIMD Extensions) 및 PowerPC 관련 AltiVec(VMX라고도 함)[k]이 있습니다.
하드웨어 성능 카운터
대부분의 최신 아키텍처(임베디드 아키텍처 포함)에는 하드웨어 성능 카운터(HPC)가 포함되어 있어 실행 중인 소프트웨어 메트릭의 낮은 수준(명령 수준)의 수집, 벤치마킹, 디버깅 또는 분석이 가능합니다.[74][75]HPC는 반환 지향 프로그래밍(ROP) 또는 시그리턴 지향 프로그래밍(SROP) 악용 등 소프트웨어의 특이하거나 의심스러운 활동을 발견하고 분석하는 데에도 사용될 수 있습니다.[76]이 작업은 일반적으로 소프트웨어 보안 팀이 악성 바이너리 프로그램을 평가하고 찾기 위해 수행합니다.
IBM, Intel, AMD 및 Arm 등과 같은 많은 주요 공급업체는 측정 기준을 얻기 위해 CPU 레지스터에서 데이터를 수집하는 데 사용할 수 있는 소프트웨어 인터페이스(일반적으로 C/C++로 작성됨)를 제공합니다.[77]운영 체제 벤더는 다음과 같은 소프트웨어도 제공합니다.perf
(Linux) 커널 및 응용 프로그램을 실행하는 CPU 이벤트를 기록, 벤치마크 또는 추적합니다.
가상 CPU
![]() | 이 섹션은 확장이 필요합니다.추가하면 도움이 됩니다. (2016년 9월) |
클라우드 컴퓨팅은 CPU 작업을 가상 중앙 처리 장치[78](vCPU[79])로 세분화하는 작업을 포함할 수 있습니다.
호스트는 가상 시스템이 작동 중인 물리적 시스템과 동일한 가상 시스템입니다.[80]여러 물리적 시스템이 함께 작동하고 전체적으로 관리되는 경우 그룹화된 컴퓨팅 및 메모리 리소스가 클러스터를 형성합니다.일부 시스템에서는 클러스터에서 동적으로 추가 및 제거가 가능합니다.호스트 및 클러스터 수준에서 사용 가능한 리소스를 세분화된 리소스 풀로 분할할 수 있습니다.
실적
프로세서의 성능이나 속도는 여러 요소 중에서 클럭 속도(일반적으로 헤르츠의 배수로 제공됨)와 클럭당 명령어(IPC)에 따라 달라지는데, 이는 CPU가 수행할 수 있는 초당 명령어(IPS)의 요소입니다.[81]보고된 많은 IPS 값은 분기가 거의 없는 인공 명령어 시퀀스에서 "피크" 실행률을 나타냈으며, 반면 현실적인 워크로드는 명령어와 애플리케이션의 혼합으로 구성되어 있으며, 이 중 일부는 다른 워크로드보다 실행에 더 오랜 시간이 걸립니다.메모리 계층의 성능은 프로세서 성능에도 큰 영향을 미치는데, 이는 MIPS 계산에서 거의 고려되지 않는 문제입니다.이러한 문제 때문에 SPECint와 같이 이러한 목적으로 흔히 "벤치마크"라고 불리는 다양한 표준화 테스트가 개발되어 일반적으로 사용되는 애플리케이션에서 실제 효과적인 성능을 측정하고자 했습니다.
컴퓨터의 처리 성능은 멀티 코어 프로세서를 사용함으로써 향상되는데, 멀티 코어 프로세서는 본질적으로 두 개 이상의 개별 프로세서(이러한 의미에서 코어라고 함)를 하나의 집적 회로에 연결하는 것입니다.[82]이상적으로, 듀얼 코어 프로세서는 단일 코어 프로세서보다 거의 두 배 더 강력합니다.실제로는 불완전한 소프트웨어 알고리즘과 구현으로 인해 성능 향상이 훨씬 적은 약 50%에 불과합니다.[83]프로세서의 코어 수(예: 듀얼 코어, 쿼드 코어 등)를 늘리면 처리할 수 있는 워크로드가 늘어납니다.이는 프로세서가 수많은 비동기 이벤트, 인터럽트 등을 처리할 수 있게 되어 CPU에 과부하가 걸릴 수 있음을 의미합니다.이러한 코어는 가공 공장에서 다른 층으로 간주될 수 있으며 각 층에서 다른 작업을 처리합니다.단일 코어로는 정보를 처리하기에 충분하지 않은 경우 이러한 코어는 인접한 코어와 동일한 작업을 처리할 수 있습니다.
동시 멀티스레딩 및 언코어와 같은 최신 CPU의 특정 기능으로 인해 실제 CPU 리소스를 공유하면서도 활용도를 높이는 작업이 점차 복잡해졌습니다.[84]이에 따라 일부 CPU는 CPU의 다양한 부분의 실제 사용을 모니터링하고 소프트웨어에 액세스할 수 있는 다양한 카운터를 제공하는 추가 하드웨어 로직을 구현합니다. 예를 들어 Intel의 Performance Counter Monitor 기술이 있습니다.[2]
참고 항목
메모들
- ^ 집적 회로는 이제 핵무기와 같은 큰 전자기 펄스를 견딜 수 있도록 설계된 몇몇 기계를 제외하고 모든 CPU를 구현하는 데 사용됩니다.
- ^ 소위 "본 노이만" 메모는 저장된 프로그램에 대한 아이디어를 설명해 주었는데,[58] 예를 들어 천공 카드, 종이 테이프 또는 마그네틱 테이프에 저장될 수 있습니다.
- ^ 하버드 마크 1과 같은 일부 초기 컴퓨터는 실행할 수 있는 프로그램의 복잡성을 사실상 제한하면서 어떤 종류의 "점프" 명령도 지원하지 않았습니다.이러한 컴퓨터가 저장된 프로그램 컴퓨터와 유사함에도 불구하고 적절한 CPU를 포함하지 않는 경우가 많은 것은 이러한 이유 때문입니다.
- ^ 프로그램 카운터는 명령어가 아닌 메모리 주소를 카운트하기 때문에 명령어가 포함하는 메모리 단위 수만큼 증가합니다.단순 고정 길이 명령어 ISA의 경우 항상 같은 숫자입니다.예를 들어 8비트 메모리 워드를 사용하는 고정 길이 32비트 명령어 ISA는 항상 PC를 4씩 늘립니다(점프의 경우는 제외).가변 길이 명령어를 사용하는 ISA는 마지막 명령어의 길이에 해당하는 메모리 워드 수만큼 PC를 증가시킵니다.
- ^ CPU의 명령어 세트 아키텍처는 인터페이스와 용도에 기본적이기 때문에 CPU의 "타입"의 분류로 자주 사용됩니다. 예를 들어, "PowerPC CPU"는 PowerPC ISA의 일부 변형을 사용합니다.시스템은 에뮬레이터를 실행하여 다른 ISA를 실행할 수 있습니다.
- ^ 일부 전문 CPU, 가속기 또는 마이크로컨트롤러에는 캐시가 없습니다.즉, 필요하다면 소프트웨어를 관리하면서도 유사한 기능을 가진 온칩 스크래치 패드 메모리를 사용할 수 있습니다.예를 들어, 마이크로컨트롤러의 경우, 부하의 메모리 지연 시간을 한 단계 예측할 수 있는 것처럼 캐시가 없거나 최소한 없는 것이 실시간 하드 사용에 더 좋을 수 있습니다.
- ^ 전압의 물리적 개념은 사실상 무한한 범위의 가능한 값을 가지는 본질적으로 아날로그적입니다.이진수를 물리적으로 표현하기 위해 논리 '0'과 논리 '1'의 두 가지 특정 전압 범위가 정의됩니다.이러한 범위는 노이즈 마진과 CPU를 만드는 데 사용되는 장치의 특성과 같은 설계 고려 사항에 따라 결정됩니다.
- ^ CPU의 정수 크기는 정수 범위에 대한 제한을 설정하지만, 이는 소프트웨어와 하드웨어 기술의 조합을 사용하여 극복할 수 있습니다.추가 메모리를 사용하면 소프트웨어는 CPU보다 더 큰 정수를 나타낼 수 있습니다.때때로 CPU의 명령어 집합은 큰 정수 연산을 비교적 빠르게 만드는 명령어를 제공함으로써 원래 표현할 수 있는 것보다 더 큰 정수에 대한 연산을 용이하게 할 수도 있습니다.큰 정수를 처리하는 이 방법은 정수 크기가 더 큰 CPU를 사용하는 것보다 느리지만, 필요한 전체 정수 범위를 기본적으로 지원하는 것이 비용 절감에 도움이 되는 경우에는 합리적인 절충 방법입니다.순수 소프트웨어가 지원하는 임의 크기 정수에 대한 자세한 내용은 임의 정밀 산술을 참조하십시오.
- ^ ILP나 TLP는 본질적으로 다른 쪽보다 우수하지 않습니다. 이들은 CPU 병렬성을 높이기 위한 다른 수단일 뿐입니다.따라서 프로세서가 실행하고자 하는 소프트웨어의 종류에 따라 결정되는 장단점이 있습니다.높은 TLP CPU는 종종 수많은 더 작은 응용 프로그램으로 나뉘는데 도움이 되는 응용 프로그램에 사용되는데, 이를 "부끄러운 병렬 문제"라고 합니다.흔히, 대칭 다중 처리와 같은 높은 TLP 설계 방법으로 빠르게 해결할 수 있는 계산 문제는 슈퍼스칼라 CPU와 같은 높은 ILP 장치에서 훨씬 더 많은 시간이 소요되며, 그 반대의 경우도 마찬가지입니다.
- ^ 이전에 스칼라라는 용어는 다양한 ILP 방법이 제공하는 IPC 카운트를 비교하는 데 사용되었습니다.여기서 이 용어는 벡터와 대조하기 위해 엄밀한 수학적 의미로 사용됩니다.스칼라(수학)와 벡터(기하학) 참조.
- ^ SSE/SSE2/SSE3가 Intel의 범용 프로세서에서 MMX를 대체했지만, 이후의 IA-32 설계는 여전히 MMX를 지원합니다. 이는 일반적으로 MMX 기능의 대부분을 훨씬 더 확장된 SSE 명령어 세트를 지원하는 동일한 하드웨어와 함께 제공함으로써 수행됩니다.
참고문헌
- ^ Kuck, David (1978). Computers and Computations, Vol 1. John Wiley & Sons, Inc. p. 12. ISBN 978-0471027164.
- ^ a b Thomas Willhalm; Roman Dementiev; Patrick Fay (December 18, 2014). "Intel Performance Counter Monitor – A better way to measure CPU utilization". software.intel.com. Archived from the original on February 22, 2017. Retrieved February 17, 2015.
- ^ Liebowitz, Kusek, Spies, Matt, Christopher, Rynardt (2014). VMware vSphere Performance: Designing CPU, Memory, Storage, and Networking for Performance-Intensive Workloads. Wiley. p. 68. ISBN 978-1-118-00819-5.
{{cite book}}
: CS1 유지 : 여러 이름 : 저자 목록 (링크) - ^ Regan, Gerard (2008). A Brief History of Computing. Springer. p. 66. ISBN 978-1848000834. Retrieved 26 November 2014.
- ^ Weik, Martin H. (1955). "A Survey of Domestic Electronic Digital Computing Systems". Ballistic Research Laboratory. Archived from the original on 2021-01-26. Retrieved 2020-11-15.
- ^ a b Weik, Martin H. (1961). "A Third Survey of Domestic Electronic Digital Computing Systems". Ballistic Research Laboratory. Archived from the original on 2017-09-11. Retrieved 2005-12-16.
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ "Bit By Bit". Haverford College. Archived from the original on October 13, 2012. Retrieved August 1, 2015.
- ^ "First Draft of a Report on the EDVAC" (PDF). Moore School of Electrical Engineering, University of Pennsylvania. 1945. Archived (PDF) from the original on 2021-03-09. Retrieved 2018-03-31.
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ Stanford University. "The Modern History of Computing". The Stanford Encyclopedia of Philosophy. Archived from the original on March 3, 2017. Retrieved September 25, 2015.
- ^ "ENIAC's Birthday". The MIT Press. February 9, 2016. Archived from the original on October 17, 2018. Retrieved October 17, 2018.
- ^ Enticknap, Nicholas (Summer 1998), "Computing's Golden Jubilee", Resurrection, The Computer Conservation Society (20), ISSN 0958-7403, archived from the original on 17 March 2019, retrieved 26 June 2019
- ^ "The Manchester Mark 1". The University of Manchester. Archived from the original on January 25, 2015. Retrieved September 25, 2015.
- ^ "The First Generation". Computer History Museum. Archived from the original on November 22, 2016. Retrieved September 29, 2015.
- ^ "The History of the Integrated Circuit". Nobelprize.org. Archived from the original on May 22, 2022. Retrieved July 17, 2022.
- ^ Turley, Jim (11 August 2003). "Motoring with microprocessors". Embedded. Archived from the original on 14 October 2022. Retrieved December 26, 2022.
- ^ "Mobile Processor Guide – Summer 2013". Android Authority. 2013-06-25. Archived from the original on 2015-11-17. Retrieved November 15, 2015.
- ^ "Section 250: Microprocessors and Toys: An Introduction to Computing Systems". The University of Michigan. Archived from the original on April 13, 2021. Retrieved October 9, 2018.
- ^ "ARM946 Processor". ARM. Archived from the original on 17 November 2015.
- ^ "Konrad Zuse". Computer History Museum. Archived from the original on October 3, 2016. Retrieved September 29, 2015.
- ^ "Timeline of Computer History: Computers". Computer History Museum. Archived from the original on December 29, 2017. Retrieved November 21, 2015.
- ^ White, Stephen. "A Brief History of Computing - First Generation Computers". Archived from the original on January 2, 2018. Retrieved November 21, 2015.
- ^ "Harvard University Mark - Paper Tape Punch Unit". Computer History Museum. Archived from the original on November 22, 2015. Retrieved November 21, 2015.
- ^ "What is the difference between a von Neumann architecture and a Harvard architecture?". ARM. Archived from the original on November 18, 2015. Retrieved November 22, 2015.
- ^ "Advanced Architecture Optimizes the Atmel AVR CPU". Atmel. Archived from the original on November 14, 2015. Retrieved November 22, 2015.
- ^ "Switches, transistors and relays". BBC. Archived from the original on 5 December 2016.
- ^ "Introducing the Vacuum Transistor: A Device Made of Nothing". IEEE Spectrum. 2014-06-23. Archived from the original on 2018-03-23. Retrieved 27 January 2019.
- ^ What Is Computer Performance?. The National Academies Press. 2011. doi:10.17226/12980. ISBN 978-0-309-15951-7. Archived from the original on June 5, 2016. Retrieved May 16, 2016.
- ^ "1953: Transistorized Computers Emerge". Computer History Museum. Archived from the original on June 1, 2016. Retrieved June 3, 2016.
- ^ "IBM System/360 Dates and Characteristics". IBM. 2003-01-23. Archived from the original on 2017-11-21. Retrieved 2016-01-13.
- ^ a b Amdahl, G. M.; Blaauw, G. A.; Brooks, F. P. Jr. (April 1964). "Architecture of the IBM System/360". IBM Journal of Research and Development. IBM. 8 (2): 87–101. doi:10.1147/rd.82.0087. ISSN 0018-8646.
- ^ Brodkin, John (7 April 2014). "50 years ago, IBM created mainframe that helped send men to the Moon". Ars Technica. Archived from the original on 8 April 2016. Retrieved 9 April 2016.
- ^ Clarke, Gavin. "Why won't you DIE? IBM's S/360 and its legacy at 50". The Register. Archived from the original on 24 April 2016. Retrieved 9 April 2016.
- ^ "Online PDP-8 Home Page, Run a PDP-8". PDP8. Archived from the original on August 11, 2015. Retrieved September 25, 2015.
- ^ "Transistors, Relays, and Controlling High-Current Loads". New York University. ITP Physical Computing. Archived from the original on 21 April 2016. Retrieved 9 April 2016.
- ^ Lilly, Paul (2009-04-14). "A Brief History of CPUs: 31 Awesome Years of x86". PC Gamer. Archived from the original on 2016-06-13. Retrieved June 15, 2016.
- ^ a b Patterson, David A.; Hennessy, John L.; Larus, James R. (1999). Computer Organization and Design: the Hardware/Software Interface (2. ed., 3rd print. ed.). San Francisco: Kaufmann. p. 751. ISBN 978-1558604285.
- ^ "1962: Aerospace systems are first the applications for ICs in computers". Computer History Museum. Archived from the original on October 5, 2018. Retrieved October 9, 2018.
- ^ "The integrated circuits in the Apollo manned lunar landing program". National Aeronautics and Space Administration. Archived from the original on July 21, 2019. Retrieved October 9, 2018.
- ^ "System/370 Announcement". IBM Archives. 2003-01-23. Archived from the original on 2018-08-20. Retrieved October 25, 2017.
- ^ "System/370 Model 155 (Continued)". IBM Archives. 2003-01-23. Archived from the original on 2016-07-20. Retrieved October 25, 2017.
- ^ "Models and Options". The Digital Equipment Corporation PDP-8. Archived from the original on June 26, 2018. Retrieved June 15, 2018.
- ^ Ross Knox Bassett (2007). To the Digital Age: Research Labs, Start-up Companies, and the Rise of MOS Technology. The Johns Hopkins University Press. pp. 127–128, 256, and 314. ISBN 978-0-8018-6809-2.
- ^ a b Shirriff, Ken. "The Texas Instruments TMX 1795: the first, forgotten microprocessor". Archived from the original on 2021-01-26.
- ^ "Speed & Power in Logic Families". Archived from the original on 2017-07-26. Retrieved 2017-08-02..
- ^ Stonham, T. J. (1996). Digital Logic Techniques: Principles and Practice. Taylor & Francis. p. 174. ISBN 9780412549700.
- ^ "1968: Silicon Gate Technology Developed for ICs". Computer History Museum. Archived from the original on 2020-07-29. Retrieved 2019-08-16.
- ^ Booher, R. K. (1968). MOS GP Computer (PDF). International Workshop on Managing Requirements Knowledge. AFIPS. p. 877. doi:10.1109/AFIPS.1968.126. Archived (PDF) from the original on 2017-07-14.
- ^ "LSI-11 Module Descriptions" (PDF). LSI-11, PDP-11/03 user's manual (2nd ed.). Maynard, Massachusetts: Digital Equipment Corporation. November 1975. pp. 4–3. Archived (PDF) from the original on 2021-10-10. Retrieved 2015-02-20.
- ^ Bigelow, Stephen J. (March 2022). "What is a multicore processor and how does it work?". TechTarget. Archived from the original on July 11, 2022. Retrieved July 17, 2022.
- ^ Richard Birkby. "A Brief History of the Microprocessor". computermuseum.li. Archived from the original on September 23, 2015. Retrieved October 13, 2015.
- ^ Osborne, Adam (1980). An Introduction to Microcomputers. Vol. 1: Basic Concepts (2nd ed.). Berkeley, California: Osborne-McGraw Hill. ISBN 978-0-931988-34-9.
- ^ Zhislina, Victoria (2014-02-19). "Why has CPU frequency ceased to grow?". Intel. Archived from the original on 2017-06-21. Retrieved October 14, 2015.
- ^ "MOS Transistor - Electrical Engineering & Computer Science" (PDF). University of California. Archived (PDF) from the original on 2022-10-09. Retrieved October 14, 2015.
- ^ Simonite, Tom. "Moore's Law Is Dead. Now What?". MIT Technology Review. Archived from the original on 2018-08-22. Retrieved 2018-08-24.
- ^ "Excerpts from A Conversation with Gordon Moore: Moore's Law" (PDF). Intel. 2005. Archived from the original (PDF) on 2012-10-29. Retrieved 2012-07-25.
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ "A detailed history of the processor". Tech Junkie. 15 December 2016. Archived from the original on 14 August 2019. Retrieved 14 August 2019.
- ^ Eigenmann, Rudolf; Lilja, David (1998). "Von Neumann Computers". Wiley Encyclopedia of Electrical and Electronics Engineering. doi:10.1002/047134608X.W1704. ISBN 047134608X. S2CID 8197337.
- ^ Aspray, William (September 1990). "The stored program concept". IEEE Spectrum. Vol. 27, no. 9. p. 51. doi:10.1109/6.58457.
- ^ Saraswat, Krishna. "Trends in Integrated Circuits Technology" (PDF). Archived (PDF) from the original on 2022-10-09. Retrieved June 15, 2018.
- ^ "Electromigration". Middle East Technical University. Archived from the original on July 31, 2017. Retrieved June 15, 2018.
- ^ Ian Wienand (September 3, 2013). "Computer Science from the Bottom Up, Chapter 3. Computer Architecture" (PDF). bottomupcs.com. Archived (PDF) from the original on February 6, 2016. Retrieved January 7, 2015.
- ^ "Introduction of Control Unit and its Design". GeeksforGeeks. 2018-09-24. Archived from the original on 2021-01-15. Retrieved 2021-01-12.
- ^ Cornelis Van Berkel; Patrick Meuwissen (January 12, 2006). "Address generation unit for a processor (US 2006010255 A1 patent application)". google.com. Archived from the original on April 18, 2016. Retrieved December 8, 2014.[검증 필요]
- ^ Gabriel Torres (September 12, 2007). "How The Cache Memory Works". Hardware Secrets. Archived from the original on August 1, 2020. Retrieved August 29, 2019.
- ^ "IBM z13 and IBM z13s Technical Introduction" (PDF). IBM. March 2016. p. 20. Archived (PDF) from the original on 2022-10-09.[검증 필요]
- ^ Brown, Jeffery (2005). "Application-customized CPU design". IBM developerWorks. Archived from the original on 2006-02-12. Retrieved 2005-12-17.
- ^ Martin, A.J.; Nystrom, M.; Wong, C.G. (November 2003). "Three generations of asynchronous microprocessors". IEEE Design & Test of Computers. 20 (6): 9–17. doi:10.1109/MDT.2003.1246159. ISSN 0740-7475. S2CID 15164301. Archived from the original on 2021-12-03. Retrieved 2022-01-05.
- ^ Garside, J. D.; Furber, S. B.; Chung, S-H (1999). "AMULET3 Revealed". University of Manchester Computer Science Department. Archived from the original on December 10, 2005.
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ IBM System/360 Model 65 Functional Characteristics (PDF). IBM. September 1968. pp. 8–9. A22-6884-3. Archived (PDF) from the original on 2022-10-09.
- ^ Huynh, Jack (2003). "The AMD Athlon XP Processor with 512KB L2 Cache" (PDF). University of Illinois, Urbana-Champaign. pp. 6–11. Archived from the original (PDF) on 2007-11-28. Retrieved 2007-10-06.
- ^ Gottlieb, Allan; Almasi, George S. (1989). Highly parallel computing. Redwood City, Calif.: Benjamin/Cummings. ISBN 978-0-8053-0177-9. Archived from the original on 2018-11-07. Retrieved 2016-04-25.
- ^ Flynn, M. J. (September 1972). "Some Computer Organizations and Their Effectiveness". IEEE Trans. Comput. C-21 (9): 948–960. doi:10.1109/TC.1972.5009071. S2CID 18573685.
- ^ Lu, N.-P.; Chung, C.-P. (1998). "Parallelism exploitation in superscalar multiprocessing". IEE Proceedings - Computers and Digital Techniques. Institution of Electrical Engineers. 145 (4): 255. doi:10.1049/ip-cdt:19981955.
- ^ Uhsadel, Leif; Georges, Andy; Verbauwhede, Ingrid (August 2008). Exploiting Hardware Performance Counters. 2008 5th Workshop on Fault Diagnosis and Tolerance in Cryptography. pp. 59–67. doi:10.1109/FDTC.2008.19. ISBN 978-0-7695-3314-8. S2CID 1897883. Archived from the original on 2021-12-30. Retrieved 2021-12-30.
- ^ Rohou, Erven (September 2012). Tiptop: Hardware Performance Counters for the Masses. 2012 41st International Conference on Parallel Processing Workshops. pp. 404–413. doi:10.1109/ICPPW.2012.58. ISBN 978-1-4673-2509-7. S2CID 16160098. Archived from the original on 2021-12-30. Retrieved 2021-12-30.
- ^ Herath, Nishad; Fogh, Anders (2015). "CPU Hardware Performance Counters for Security" (PDF). USA: Black Hat. Archived (PDF) from the original on 2015-09-05.
- ^ DeRose, Luiz A. (2001), Sakellariou, Rizos; Gurd, John; Freeman, Len; Keane, John (eds.), "The Hardware Performance Monitor Toolkit", Euro-Par 2001 Parallel Processing, Lecture Notes in Computer Science, Berlin, Heidelberg: Springer Berlin Heidelberg, vol. 2150, pp. 122–132, doi:10.1007/3-540-44681-8_19, ISBN 978-3-540-42495-6, archived from the original on 2023-03-01, retrieved 2021-12-30
- ^ Anjum, Bushra; Perros, Harry G. (2015). "1: Partitioning the End-to-End QoS Budget to Domains". Bandwidth Allocation for Video Under Quality of Service Constraints. Focus Series. John Wiley & Sons. p. 3. ISBN 9781848217461. Retrieved 2016-09-21.
[...] in cloud computing where multiple software components run in a virtual environment on the same blade, one component per virtual machine (VM). Each VM is allocated a virtual central processing unit [...] which is a fraction of the blade's CPU.
- ^ Fifield, Tom; Fleming, Diane; Gentle, Anne; Hochstein, Lorin; Proulx, Jonathan; Toews, Everett; Topjian, Joe (2014). "Glossary". OpenStack Operations Guide. Beijing: O'Reilly Media, Inc. p. 286. ISBN 9781491906309. Retrieved 2016-09-20.
Virtual Central Processing Unit (vCPU)[:] Subdivides physical CPUs. Instances can then use those divisions.
- ^ "VMware Infrastructure Architecture Overview- White Paper" (PDF). VMware. 2006. Archived (PDF) from the original on 2022-10-09.
- ^ "CPU Frequency". CPU World Glossary. CPU World. 25 March 2008. Archived from the original on 9 February 2010. Retrieved 1 January 2010.
- ^ "What is (a) multi-core processor?". Data Center Definitions. SearchDataCenter.com. Archived from the original on 5 August 2010. Retrieved 8 August 2016.
- ^ "Quad Core Vs. Dual Core". 8 April 2010. Archived from the original on 4 July 2019. Retrieved 7 November 2019.
- ^ Tegtmeier, Martin. "CPU utilization of multi-threaded architectures explained". Oracle. Archived from the original on July 18, 2022. Retrieved July 17, 2022.
외부 링크

- 마이크로프로세서의 작동 방식.
- 25 세상을 뒤흔든 마이크로칩 – 전기전자공학연구소 기사