본문 바로가기

Fun,Fun,Fun

중앙처리장치 CPU의 동작,구조와 역사

중앙처리장치(中央處理裝置) CPU의 역사



CPU(Central Processing Unit)는 컴퓨터등의 중앙 처리 장치로 작동하는 전자 회로 이다. CPU는 프로그램 에 따라 다양한 수치및 정보 처리, 장비 제어 등을한다. CPU는 일반적으로 하드웨어인 프로세서에 의해 실현된 현대 프로세서의 대부분은 마이크로 프로세서이다. 최근 제품은 하나의 CPU가 코어화되어 그 몇몇이 하나의 마이크로 칩에 구현된 프로세서 패키지에 포함되어있는것(멀티 코어 형)도 많다.


CPU는 기억 장치에있는 프로그램이라는 명령을 차례로 읽어들여 해석하고 실행함으로써 정보의 가공을 실시한다. CPU는 컴퓨터의 연산을 행하는 중심이며, CPU는 일반적으로 버스라는 신호선을 통해 주기억 장치 와 입출력 회로에 연결 되어 여러 단계의 입출력 회로를 통해 보조 기억 장치나 표시 장치, 통신 장치 등의 주변 장치가 연결되어 데이터나 프로그램등 정보 교환을 실시한다. 인간에 비유하면 뇌에 상당하는 부분이다.


이러한 CPU를 이용한 프로그램이 컴퓨터를 순차적 동작하는 대부분의 컴퓨터의 기본적인 동작원리가되고 있다. 기억 장치에 프로그램을 배치한후 프로그램을 실행 하는 방식을 프로그램 내장 방식이라한다.
현재 CPU는 부품으로 프로세서의 일종 이다. 프로세서의 대부분은 마이크로칩으로 구현되어 마이크로 프로세서, MPU(Micro Processing Unit)로 불린다. 또한, 산술 기능을 강화하고 신호 처리에 특화한 디지털 신호 프로세서(DSP)및 메모리 및 주변 회로를 탑재하여 임베디드 제어를 목적으로한 마이크로 컨트롤러( MCU의)등도 등장하고있다.



전용 전자 회로에 비해 실행 속도는 느리지만 프로그램을 바꾸는 것만으로 다양한 작업을 할 수있는것부터 매우 광범위한 용도에 사용하여 전용 회로에 비해 디자인 수정이 쉽다. 따라서 CPU는 대략 모든 시스템에 내장된 현대 산업과 일반 가정에까지 보급 하고있다. 현재 가장 인기있는 CPU아키텍처로 ARM아키텍처를 들수있다. ARM아키텍처는 1991년부터 시작 2008년 초에 출하 개수가 100억개이상의 가전 제품에서 산업용 제품, 휴대 기기등에 이르기까지 많은 시스템에 내장된 기기 제어를 맡고 있다. 또한 PC등 현재 범용 컴퓨터 제품의 많은 시스템의 메인 CPU에 x86 아키텍처가 이용되고 있으며, 인텔의 x86 계열 CPU 출하량 은 1978년 6월 9일 8086 출시 부터 2003년 까지 25년 사이에 10억개를 넘어서고 있다.


CPU의 구조는 1949년에 세계 최초의 스토어드 프로그램 방식 컴퓨터인 EDSAC이 발표된 시점에서 이미 기본 원리가 확립되어 있다. CPU의 발달은 공정 기술의 미세화에 의한 고속화 파이프 라인 병렬 처리 명령어로 병렬 처리(수퍼 스칼라, VLIW) 데이터 병렬화(SIMD 연산), CPU 코어 병렬화 스레드 병렬 처리(Simultaneous Multi-Threading)등에 힘입어 있다.




CPU 구조와 동작



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


기타 부동 소수점 연산을할 FPU(부동 소수점 연산 유닛)레지스터 보다 많은 정보를 임시 저장하는 캐시 메모리, DMA 컨트롤러, 타이머, 직렬 인터페이스등의 기능을 CPU와 동일한 IC에 가지는 것도있다. 또한 메모리에서 가져온 명령어를 내부 운영에 대체 변환 부분이있는 것도있다.


클럭동기의 CPU는 클럭 신호에 의해 규칙적인 시간에 각부의 동작을 통제되고 있다. 같은 CPU라면 클럭 주파수가 높은 쪽이 고속으로 동작 하고 일정 시간에 많은 것을 처리 할 수있다. 1클럭에서 처리할 내용은 CPU의 설계에 따라 다르며, 1개의 기계어 명령을 실행하는 것으로부터, 1클럭에서 여러 명령을 동시에 실행할 수있는 것까지 있다. 클럭 주파수가 1GHz의 CPU는 기본 회로가 초당 10억번의 동작을한다.


많은 CPU에서는 일반적으로는 제어 장치가 명령어의 해석과 프로그램의 흐름을 제어하고 연산 장치가 연산을 수행 한다.




동작
노이만형 CPU의 기본 동작은 구현에 관계없이 프로그램이라는 명령열을 순차적으로 실행 하는 것이다.


프로그램은 숫자열로 어떤 메모리에 저장 되어 있다. CPU에서, 페치, 디코드, 실행의 세 단계가  존재한다.


첫번째 단계인 페치는 수행할 명령(숫자 의 정렬)을 프로그램 메모리에서 꺼낸것이다. 메모리상의 실행해야할 명령어의 위치는 프로그램 카운터로 지정 된다. 프로그램 카운터는 CPU가 현재 보고있는 프로그램의 위치를 ​​나타내고 있다고 할 수있다. 명령어 인출에 사용 되면 프로그램 카운터는 인출한만큼 증가 하게된다.


CPU가 메모리에서 인출된 명령어는 CPU 다음에 할 일이 결정된다. 디코딩은 명령을 CPU에있어서 의미있는 형식으로 분할 한다. 명령을 나타내는 숫자를 어떻게 나눌지 먼저 해당 CPU 명령어 세트에 의해 결정된다. 명령의 일부 수치는 명령 코드라고 수행해야할 작업을 지정합니다. 다른 부분은 피연산자라고 그 명령 에 사용되는 정보를 보여준다. 예를 들어 더하기 연산의 피연산자는 추가 해야할 수치를 나타내고 있다. 피연산자는 숫자 자체가 쓰여져 있고, 숫자가있는 장소(메모리의 주소 또는 등록 번호)가 쓰여져 있다. 오래된 디자인은 디코더(디코딩하는 부분)은 변경 불가능한 하드웨어 부품이었다. 그러나 더 복잡하고 추상적 인 CPU와 명령어 세트에서는 마이크로 프로그램 방식이 주로 사용되어 명령을 다양한 신호로 변환하는 것을 돕고있다. 이 마이크로 프로그램은 재기록할 수도, 제조 후에도 명령 디코드 방법을 변경할 수 있다.



페치및 디코딩 다음은 실행 단계가 진행된다. 이 단계에서는 CPU의 많은 부분이 연결되어(예를 들어 멀티플렉서 전환등)지정된 작업을 수행 한다. 예를 들어 덧셈을 요구 하는 경우 가산기가 소정의 입력과 연결되고 출력과 연결된다. 입력은 가산할 값을 제공하고 출력에 가산 결과가 포함 된다. 가산 결과가 너무 커서 그 CPU에 처리할 수없는 경우 산술 오버플로 플래그 레지스터(상태 레지스터)에 세트(RISC는 플래그 레지스터가 존재하지 않는 경우도 있다). 입력및 출력에는 여러 가지가 사용된다. 연산 결과가 잠정적인지 또는 즉시 이용되는 경우에는 레지스터라는 빠르고 작은 메모리 영역에 저장 된다. 메모리도 입력및 출력에 사용된다. 레지스터 이외의 메모리는 저속이지만 비용으로 일반적인 메모리가 더 저렴하고 대량의 데이터를 저장할 수 있으므로 컴퓨터에 필수적이다.


일부 명령은 프로그램 카운터를 조작한다.그들은 일반적으로 점프 명령이라고 루프를 구성 하거나 조건 분기를 하거나 서브 루틴을 수행하는데 사용된다. 또한 많은 명령은 플래그 레지스터를 변화시킨다. 그 플래그는 프로그램의 동작에 영향을 미친다. 예를 들어 비교 명령은 두 값을 비교하여 플래그 레지스터에 그 대소를 나타내는 값을 설정합니다. 그 값을 사용하여 후속 처리의 흐름을 결정하는 것이다.


명령을 실행한후 같은 흐름이 반복되고 다음 명령어를 프로그램 카운터에 따라 반입 한다. 더 복잡한 CPU 에서는 여러 명령을 인출하여 디코딩 동시에 수행 할 수도 있다. 그러나 기본적으로 어떤 CPU에서도 무슨 일을하는지는 여기에 설명된 흐름과 같다.




CPU의 역사 



ENIAC
현대의 CPU와 같은 장치가 나오기 이전 ENIAC같은 계산기는 수행할 작업 내용을 바꿀때마다 물리적으로 배선을 변경 했다. 이러한 기계에서는 프로그램을 변경하기 위해 물리적으로 재구성할 필요가있는(예를 들어 ENIAC등에서는 패치패널 사용) '프로그램 고정 계산기'라는 것이있다(또한 ENIAC은 매우 한정된 기능 과 성능이지만, 어느 정도는 프로그램 내장 방식도 할 수 있었다).


CPU는 일반적으로 소프트웨어(프로그램)을 실행 하는 장치로 정의 되므로 CPU라고 부를 첫 번째 장치는 프로그램 내장 방식 컴퓨터이다. 프로그램 내장 방식의 아이디어는 ENIAC을 설계 할 때 이미 존재 하고 있었지만, 기계의 완성을 조기에 가능하게하기 위해 ENIAC의 초기 단계에서 채택되지 않았다. ENIAC이 완성 되기 이전인 1945년 6월 30일, 수학자 존 폰 노이만의 이름으로 First Draft of a Report on the EDVAC 라는 보고서가 공개 · 배포 되었다. 이 중 프로그램 내장 방식 컴퓨터의 설계에 대해 설명되어 있다. 이 보고서는 EDSAC 등에 영향을 주었다. EDVAC은 1949년 8월에 일단 완성되고 애버딘에 옮겨진다. EDVAC은 다양한 명령어 집합을 실행하도록 설계 되어 있었다. 명령을 결합하여 실용적인 프로그램을 구성 하고 EDVAC에서 작동 시킬 수 있는 것이다.  EDVAC은 프로그램은 빠른 메모리에 저장되어 물리적으로 배선을 변경하여 지정되는 것은 아닌점이 중요하다. 



결과적으로 노이만형에서 먼저 완성한 EDSAC(1949년)와 Manchester Mark I의 시험 제작기 Baby( 1948년)이다. EDVAC은 먼저 디자인이 시작되고 있지만 완성이 늦어졌다. 또한 Zuse Z3를 1941년에 개발하고있는 콘래드 쯔제도 이전에 프로그램 내장방식(재기록 없는 점에주의)을 고안 했다. 데이터와 프로그램을 같은 저장 장치에 저장 할지 여부와 다른 방식으로 하버드 아키텍처가 있다. 이것은 EDVAC이전에 완성된 Harvard Mark I에서 유래한다. 노이만형과 하버드형  큰 차이점은 후자가 명령어와 데이터의 저장 위치와 대우를 완전히 분리 하는 것이며 전자는 모두 같은 저장 공간에 저장한다. 범용 CPU는 기본적으로 노이만형이지만, 하버드 아키텍처도 부분적으로 채용 된다(캐시 메모리 등).


디지털 기기로서의 CPU는 상태를 변경하거나 표현하는데 어떤 스위치를 필요로한다. 전기 기계식에서 전자식으로의 이행기에는 릴레이및 진공관이 스위치로 사용되었다. 이들은 기존의 완전한 기계식보다 빠르게 스위치 전환 되었지만, 코일(인덕터)에 의해 발생하는 고전압등의 문제가 있었다. 한편 진공관은 작동하려면 열이 필요하며, 열화에 의해 작동 중에 음극의 전자 방사 능력이 감퇴(방출 감소)하면 작동 불능이되어 버린다. 진공관이 고장 나면 고장 부위를 식별하고 교체 해야 한다. 따라서 초기의 전자 계산기는 빠르게 실현 했지만, 전기 기계식 계산기보다 신뢰성이 낮았다. EDVAC같은 진공관 컴퓨터는 고장과 고장 사이의 평균 시간( MTBF = Mean Time Between Failure)은 약 8시간 이었지만, Harvard Mark I과 같은 릴레이식 계산기는 대부분 실패 했다. 그러나 신뢰성보다 성능이 중시 되고 진공관식 계산기가 주류가 되어 갔다. 당시 의 동기식 CPU의 클럭 주파수는 현재의 CPU에 비해 매우 느린 100kHz ~ 4MHz 정도 였다. 이것은 당시 의 논리 소자(진공관)의 스위칭 속도에 한계가 정해져 있었던 것이다.




반도체화
CPU의 설계및 복잡성의 진화는 더 작고 안정적인 전자 부품을 사용함으로써 달성되었다. 그 첫번째 진화 는 새로 발명된 급격히 성능이 향상된 트랜지스터의 이용이다. 이에 따라 1950년대부터 1960년대에는 부피가 커져 불안정한 진공관이나 릴레이는 사용 되지 않으며 트랜지스터제 CPU가 주류가 되었다. 이 개선 에 의해 더욱 복잡하고 신뢰성 있는 CPU를 한 장에서 여러 장의 기판으로 구성할 수 있게된 것이다.


1964년 IBM이 발표한 System/360 아키텍처는 다양한 성능과 크기의 컴퓨터로 구현 되고 그 시리즈에서는 프로그램을 변경하지 않고 동작시킬수 있었다. 당시 비록 같은 메이커 에서도 크기가 다른 컴퓨터는 호환되지 않는 것이 보통 이었기 때문이다. 이 개선을 이루기 위해 IBM은 마이크로 프로그램 방식을 채용 했다. 이것은 현재의 CPU에서도 널리 사용되고있는 방법이다. System/360은 대단한 성공을 거둔이후 수십 년간 메인 프레임 시장을 지배하며 현재 z / Architecture 에 이르고있다.


1964년 DEC도 'PDP - 8'이라는 후세에 영향을 미쳤던 미니 컴퓨터를 과학 분야와 연구 분야에 미쳤다. DEC는 후에 더 널리 사용 되게된 'PDP - 11 시리즈'를 발표 했지만 이 시리즈는 나중에 집적 회로(IC)를 사용할 수있게 되어 그것을 사용한 버전도 생산 되고 있다. 트랜지스터를 사용한 CPU는 새로운 디자인의  여유가생겨 SIMD및 벡터 계산기라는 것이 출현했다. 그러한 초기의 실험적 디자인은 나중에 클레이사가 제조한 슈퍼 컴퓨터의 기반이되고 있다.


트랜지스터를 사용한 컴퓨터는 이전의 것과 비교 하여 몇가지 뚜렷한 장점이 있었다. 신뢰성 향상과 소비 전력 감소는 물론, 트랜지스터의 스위치 전환 시간을 극적으로 단축 되었기 때문에 CPU가 가속화되었다. 트랜지스터는 컴퓨터에서 동작 주파수는 수십 MHz까지 고속화 되었다.




마이크로 프로세서
CPU의 설계와 구현을 크게 바꾼 혁신은 1970년대 중반에 등장한 마이크로 프로세서이다. 세계 최초의 마이크로 프로세서는 1970년( Intel 4004)이며, 널리 쓰이게된 것은 1974년(Intel 8080)이지만 이 클래스 (8 비트) CPU구현 방법은 완전한 마이크로 프로세서가되어 버렸다. 이전 CPU가 한장에서 여러장의 기판 에서 구현한 반면 마이크로 프로세서는 그것을 작은 집적 회로(IC)에 단일칩에 CPU를 실현하고있다. 트랜지스터의 크기가 작아 게이트의 정전 용량을 줄여 스위치로 더욱 가속화했다. 따라서 동기식 마이크로 프로세서의 동작 주파수는 수십 MHz에서 수GHz가 가능해졌다 . 또한 IC의 트랜지스터 기술의 향상에 따라 작아져 가고 CPU를 구성하는 트랜지스터수는 비약적으로 많아지고 기능도 복잡해지고 갔다. 이러한 경향은 무어의 법칙이라고하며 CPU(IC)의 고속화 집적화를 정확하게 모델링하고 있다.


극저온에서 4.8GHz로 동작하는 마이크로 프로세서의 마스크

복잡성, 크기, 구조, 일반적인 형상은 지난 60년동안 극적으로 변화했지만, CPU의 기본적인 기능과 디자인은 거의 변하지 않았다. 오늘날의 CPU의 대부분은 기본적으로 노이만형을 채용하고 있다.
무어의 법칙은 아직도 현실에서 컴퓨터의 성능에 계속 근접 하고 있지만 기존 컴퓨터의 처리 성능 향상 여지에 한계가 가까워지고 있는 것으로 우려되고 있다. 지금까지와 같이 전자 회로를 계속 축소해 왔지만, 광학적인 방법으로 전자 회로 점화에는 자외선으로부터 이윽고는 X선으로 전환해 이 광학적 문제 이전에 이미 21세기에들어 다음의 시판 제품에서도 양자론적 효과가 나타나기 시작 하고, 전자 이동및 누설 전류와 같은 문제가 커지고 있다. 고성능화를 위해 병렬 컴퓨팅등의 방법에 의한 노이만형의 고성능화, 조셉슨 컴퓨터등 양자 기술의 채택, 이 반세기 컴퓨터를 지원 전자 기술에서 새로운 물리적 현상에 길을 추구 빛 컴퓨팅, 양자 컴퓨터와 분자 컴퓨터와 같은 새로운 원리를 바탕으로 컴퓨터등이 연구되고 있다.