0915) CPU의 구조 공부2010. 9. 15. 14:30
* 저작권의 문제 발생시 바로 삭제, 비공개하겠습니다. 지적 부탁드립니다.
목표 : PC의 중요장치인 CPU의 구조와 기능에 대해 이해한다.
목차 : 1. CPU란?
2. CPU의 구성요소
3. CPU의 장치적 구조
1. CPU란?
1) CPU의 정의
PC(Personal Computer)라고 명칭하는 상대적으로 작고, 저렴한 개인형 컴퓨터는 여러가지 장치로 구성되어 있습니다. 컴퓨터를 잘 모르는 분들도 램, 하드, 시디롬, CPU등 어디선가 들어봤을 듯한 명칭이 여러가지가 있다.
PC안의 장치를 주변기기, 디바이스 등으로 명칭할 수 있고 이 디바이스들은 스스로 움직이지 않는다. 모두 명령이 오는 것을 기다리고 있으며 명령이 오면 거기에 따라서 동작을 하게 된다. CPU는 PC안의 디바이스중 유일하게 다른 장치에게 명령을 내리는 입장에 있다. 그래서 CPU를 PC의 중싱점이라던지, 중추라는 설명을 많이 찾아볼 수 있다.
CPU는 Central Processing Unit의 줄임말로 우리말로 중앙처리장치 라고 바꿀 수 있다. 외부에서 정보를 입력 받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 하게 된다. 따라서 CPU 는 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어하는 장치로, 모든 컴퓨터의 작동과정이 CPU의 제어를 받기 때문에 컴퓨터의 두뇌에 해당한다고 할 수 있다. 실제의 CPU 칩엔 실행 부분뿐만 아니라 캐시 등의 부가 장치가 통합된 경우가 많다.
CPU의 기능을 풀이하면 다음과 같다.
- 명령어 인출(Instruction Fetch): 기억장치에서 명령어를 읽어온다.
- 명령어 해독(Instruction Decode): 수행해야 할 동작을 결정하기 위하여 명령어를 해독.
- 데이터 인출(Data Fetch): 명령어 실행을 위하여 데이터가 필요한 경우에는 기억장치 또는 I/O장치로부터 데이터를 읽어온다.
- 데이터 처리(Data Process): 데이터에 대한 산술적 혹은 논리적 연산을 수행.
- 데이터 저장(Data Store): 수행한 결과를 저장
2) CPU의 성능
최근에 나오는 중앙 처리 장치의 성능은 크게 클럭(Clock) 속도와 코어 수로 결정된다.
CPU에서 클럭이라고 하는 수치는 중앙 처리 장치 내부에서 일정한 주파수를 가지는 신호로 이 신호에 동기화되어서 중앙 처리 장치의 모든 명령어가 동작되게 된다. 전자 계산기 원론적으로 말하면, 컴퓨터(프로세서)는 0과 1을 On/Off하면서 작동하는데 그것을 클럭이라고 하고, 한번 클럭 하는게 1헤르츠(Hz)다. 이에 따라 만약 3.0GHz라면 1초에 30억번 On/Off 할 수 있는 속도를 나타낸다. 클럭수가 높을 수록 성능은 높아진다. 따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 할 수 있다.
또, 중앙 처리 장치안의 코어의 수로도 성능의 차이가 난다. 코어는 중앙 처리 장치의 역할을 하는 블록으로 예전에는 한 개의 칩 안에는 한 개의 코어의 구조를 가졌으나, 최근에는 한 개의 칩 안에 여러 개의 코어를 가지는 구조를 채택하고 있다. 이렇게 한 개의 칩 안에 여러 개의 연산을 처리할 수 있는 장치를 병렬적으로 연결한 멀티 코어 시스템을 통하여 더 좋은 성능의 중앙 처리 장치를 얻을 수 있게 된다. 따라서 더 많은 수의 코어를 한 개의 칩에 가질수록 더 좋은 성능의 중앙 처리 장치라고 할 수 있다.
2. CPU의 구성요소
CPU 에서 중요한 요소로는 크게 ALU(Arithmatic Logical Unit)와 CU(Control unit), 레지스터(Register)의 세 가지가 있다.
1) ALU (Arithmetic-Logic Unit) ; 산술논리 연산장치
마이크로 프로세서에 전달된 실제 데이터의 조작과 계산을 수행하는 것으로, 덧셈, 뺄셈, 논리 연산인 OR, AND, 데이터의 2진값 처리 등을 수행하므로 모든 CPU에서 계산을 수행하는데 가장 필수적인 구성 요소이다.
대체로 ALU는 입력과 출력을 위해 프로세서와 메인 메모리 그리고 입출력 장치에 직접 액세스를 하는데, 입력과 출력은 버스라고 부르는 전자적인 통로를 따라 흐르게 된다.
입력은 연산코드 (때로 이것을 줄여서 "op code"라고 부른다) 을 포함하고 있는 기계 명령어, 하나 또는 그 이상의 연산자 그리고 형식코드로 구성된다. 연산코드는 수행해야 할 연산이 무엇인지를 ALU에게 알려주며, 연산자는 그 연산을 위해 사용된다. (예를 들어 두 개의 연산자를 서로 더하거나 논리적으로 비교하라는 연산일수도 있다).
형식코드는 연산코드와 함께 결합되어, 연산의 대상이 고정 소숫점 형식인지, 부동 소숫점 형식인지를 알려준다.
출력은 레지스터 내에 있는 결과와, 수행된 연산이 성공적이었는지에 관한 상태를 알려주는 값들로 구성된다.
일반적으로 ALU는 입력된 연산자와, 현재 더해지고 있는 연산자, 누산기에 저장된 결과, 그리고 시프트된 결과들을 저장하기 위한 공간을 가지고 있다.
ALU 내의 비트의 흐름과, 그 안에서 수행된 연산들은 게이트 회로에 의해 통제되는데, 게이트 회로는 다시 각 연산코드에 대해 특별한 알고리즘이나 순서를 사용하는 순차 논리 장치(sequence logic unit)에 의해 통제된다.
연산장치 내에서 곱셈이나 나눗셈은 일련의 덧셈이나 뺄셈 그리고 자릿수를 이동하는 방법(shift) 등을 통해 이루어지며, 음수를 표현하는 방법에도 여러 가지가 있다.
논리장치 내에서는 16개의 논리 연산중 하나가 수행될 수 있는데, 예를 들어 두 개의 연산자를 비교해서 서로 맞지 않는 비트가 어떤 것인지를 찾아내는 것 등이 그것이다.
2) CU (Control Unit)
CPU의 중요한 구성 요소로, 마이크로 프로세서 뿐만 아니라 대부분의 컴퓨터 시스템을 제어하는데 사용되는 요소인데, 메모리로부터 데이터 명령, 메모리 해석 및 실행 등을 수행한다. CU는 ALU에 의한 데이터의 입출력과 명령의 흐름을 제어하는데, 이를 위해서 주 기억 장치에서 명령을 읽어들이고 분석한다. 또, 메모리와 주변 장치를 포함해서 시스템 다른 부분들과 버스를 통해서 정보를 주고받는데, 이런 작업도 CU에 의해 제어된다.
3) 레지스터 (processor register)
프로세스 레지스터라고도 한다. 레지스터는 CPU 내의 데이터를 저장한다. 이 레지스터 값은 CPU가 데이터 처리를 위한 기본적인 저장 공간이다.
메모리와 다른 점은 하드웨어 적으로 직접 ALU와 연결되어 계산이 이루어 지며, 또한 메모리의 버퍼 역할을 하게된다. 메모리의 값을 레지스터로 옮겨 놓고 계산을 한 다음 다시 메모리로 갈 수 있다.
이때는 버스를 이용하여 신호를 주고 받는다.
각 동작을 기계어 코드의 실행에 의해 기능 별로 이루어 지며 산술연산, 논리연산 등의 다양한 프로그램이 가능하다. 레지스터의 표기 방식은 각 CPU 마다 다르며, 갯 수와 길이 역시 다르다. CPU가 몇 비트 인가를 결정하는 가장 중요한 길이가 레지스터 이다.
가장 중요한 레지스터로는 프로그램 카운터(PC, Program Counter)와 명령 레지스터(IR, Instruction Register)가 있다. 프로그램 카운터는 다음에 수행할 명령의 주소를 보관하고 명령 레지스터는 현재 수행하고 있는 명령을 보관하는 역할을 한다. 그밖에 연산의 결과나 기타 값을 저장하는 범용 레지스터(general purpose register)와 기억장치에 쓰여질 데이터 또는 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터 등이 있다.
4) 그외 ..
● 계수기(counter)
>> 수를 저장하고 또 명령어가 요구하는 데로 수를 자동적으로 증가시키거나 감소시키는 장치이다.
● 가산기(adder)
>> 산술 논리 연산장치의 산술 연산을 수행하는 회로이다.
● 해독기(decoder)
>> 프로그램의 명령어 코드(instruction code)를 분석하고 또 명령어 실행을 시작하는 회로이다.
● 내부시계(internal clock)
>> 1초당 수백만에서 수억에 이르는 주파수로 펄스(pulse)를 발생시키는 회로.
내부 시계는 중앙처리장치의 회로에 에너지를 부여하는데 사용되는 전기 펄스(electrical pulse) 를
생성하며, 또 그것을 적절하게 운영하는데 필요한 정확한 타이밍을 보장해준다.
● 버퍼(buffeR)
>> 처리가 이루어지는 동안에 프로그램이나 자료의 일부를 저장하는데 사용되는 고속의 일시적인
기억 영역. 캐시 기억장치cache memory)가 여기에 속한다.
* 버스란?
컴퓨터의 내부나 외부의 각 장치와의 정보나 신호를 주고 받는 데 사용되도록 구성된 전기적 통로를 말한다. 자료와 명령을 이동시키기 위한(상호연결) 경로들의 집합이라고 보면 된다. 버스가 16개 있다면 16비트.
- 데이터 버스 : 데이터가 이동하는 통로
- 어드레스 버스 : 주소 및 해당 주소의 데이터를 전송하기 위해 필요한 버스
- 컨트롤 버스 : CPU와 메모리 간에 제어신호가 오가는 통로
3. CPU의 장치적 구조
CPU는 시대별, 제조사별 모양이 차이가 나게 됩니다. 대략적인 CPU의 모습은 다음과 같습니다.
1) CPU 캐시(CPU cache)
CPU 캐시는 CPU가 메모리 접근 시간을 줄이기 위해 사용하는 캐시입니다. CPU 캐시는 메인 메모리에서 가장 자주 사용되는 위치의 데이터를 갖고 있는 크기는 작지만 빠른 메모리입니다. 대부분의 메모리 접근은 특정한 위치의 근방에서 자주 일어나는 경향이 있기 때문에, 데이터를 크기는 작지만 속도가 빠른 메모리에 복사해 두면 평균 메모리 접근 시간을 아낄 수 있습니다.
프로세서가 메인 메모리를 읽거나 쓰고자 할 때는, 먼저 그 주소에 해당하는 데이터가 캐시에 존재하는지를 살핍니다. 만약 그 주소의 데이터가 캐시에 있으면 데이터를 캐시에서 직접 읽고, 그렇지 않으면 메인 메모리에 직접 접근합니다. 이때 대부분의 프로세서는 메인 메모리에 직접 접근해서 전송된 데이터를 캐시에 복사해 넣음으로써 다음번에 같은 주소에 프로세서가 접근할 때 캐시에서 직접 읽고 쓸 수 있도록 합니다.
메모리에 접근하는 순서대로 L1, L2, L3캐시라고 하거나 그림에서 나온 것처럼 1차 캐시, 2차캐시라고 합니다. 3차 캐시는 요즘의 CPU에는 장착 안된 경우가 많습니다. 오히려 메인보드에 장착되어 있는 경우도 있습니다.
2) 방열판과 쿨링팬
CPU는 그래픽카드와 함께 컴퓨터 내부에서 열을 많이 발생시키는 디바이스입니다. 열이
높아질수록 성능은 떨어지고, 치명적인 오류(다운)등으로 이어질 수 있습니다. 그래서 방열판으로 열을 분산시키고, 쿨링팬으로 공기를 순환해 열을 식힙니다.
'공부' 카테고리의 다른 글
0916) 20100916 (0) | 2010.09.16 |
---|---|
0915) CPU의 구조(2) - 정리중 (0) | 2010.09.16 |
0914) OS의 역사 (0) | 2010.09.15 |
0913) PC의 역사 (0) | 2010.09.15 |
0913) 프로그래밍 언어 (0) | 2010.09.15 |