중앙처리장치(Central Process Unit)는 우리가 흔히 말하는 CPU이다. CPU는 컴퓨터의 핵심적인 부품이며 ‘CPU가 곧 컴퓨터’다라고 해도 과언이 아닐만큼 CPU 안에는 또 다른 세계가 돌아가고 있다.
1. 내부 장치
CPU 내부는 굉장히 복잡하지만 간단하게 설명하자면 다음과 같이 크게 세가지 장치로 구분되어 질 수 있다.
a. 연산장치
연산 장치란 수학적 혹은 논리적 계산을 담당하는 장치라 하겠다. 흔히 말하는 4칙 연산 및 논리 연산, 비트 연산등의 계산을 한다.
b. 제어장치
제어장치란 명령을 해석하거나 여러가지 하드웨어적인 제어 신호들을 발생시키고 데이터를 전달하는 기능등을 수행하는 장치를 말한다.
c. 기억장치
CPU 내 작은 기억 장소들이 있다. 보통은 레지스터라고 하는 이 기억장소는 CPU가 프로그램을 수행함에 있어서 아주 짧은 시간 데이터를 저장하는 공간이다.
2. 외부 버스(시스템 버스)
CPU의 모양을 보면 사각의 칩과 수많은 핀들로 이루어져 있음을 알 수 있다. 이 수많은 핀들은 외부 하드웨어(메모리, 입출력 장치등)와 소통을 하거나 통제을 하기 위해 노출된 단자들이다. 이 핀들이 머더보드(메인보드)상의 수많은 회선들과 연결되어 컴퓨터의 모든 기능을 총괄하게 된다. 특정한 목적을 가진 회선들의 그룹을 우리는 버스라고 호칭하는데 크게 3가지로 나뉘어져 있다.
a. 어드레스 버스
주로 주메모리와 연결되어 있으며 메모리의 주소가 지정되면 해당 주소의 메모리가 활성화(포커싱) 된다. 어드레스 버스중 일부는 메모리가 아닌 입출력 장치와 연결되어 외부 장치와 통신에 사용되어지기도 한다.
b. 데이터 버스
어드레스 버스에 의해 포커싱된 메모리나 입출력 장치에 데이터를 쓰거나 읽어들이는 통로 역할을 한다. 컨트롤 버스중 한 회선이 데이터를 읽을 것인지 쓸 것인지를 제어하는 역할을 하는데 이 회선의 상태에 따라 데이터를 읽거나 쓰게 된다.
c. 컨트롤 버스
주변 하드웨어들을 제어하거나 주변 하드웨어에서 발생하는 이벤트들을 처리하기 위한 연결선들의 모음이다. 예를 들어 키보드를 처거나 마우스를 움직이게 되면 이벤트 신호가 발생하게 된다. 이것을 인터럽트라고 하는데 이 신호가 컨트롤 버스중 한 회선을 통해서 CPU에 전달되게 되면 CPU 는 다른 잡업중에 있더라도 이를 멈추고 해당 이벤트와 연결된 메모리에 있는 코드를 실행하게 된다.
아래 그림은 시스템 버스의 개념을 간략하게 표현한 것이다. 여기서 주의깊게 봐야할 것은 어드레스 버스가 CPU에서만 출력으로 되어 있고 다른 장치들에선 모두 입력으로 표시되어 있다. 이는 결국 CPU가 시스템의 통제권을 갖고 있다는 의미이다.
3. CPU 동작 방식
CPU에는 저장장치로서 다수의 레지스터들이 있다. 그 중 PC(Program Counter)라는 레지스터가 있는데 이 레지스터는 현재 수행중인 프로그램(코드)의 주소를 저장하고 있다. CPU에 전원이 들어오면 최초로 이 PC는 0을 가르키고 있고 이는 곧 BIOS 프로그램이 저장되어 있는 ROM의 첫번째 주소(0x0) 이다. 여기서 부터 프로그램이 시작되며 프로그램의 진행과 동시에 PC 레지스터 내의 수치(어드레스)도 증가하면서 계속해서 다음의 명령들을 실행하게 되는 것이다. 전원이 켜진 초기에는 BIOS 라고해서 ROM에 담겨진 프로그램이 실행 되면서 하드웨어및 입출력 장치들을 점검하고 초기화 한다. 보조 기억장치(HDD 혹은 SSD등)가 있는 경우 보조기억장치 안에 저장되어있는 OS 프로그램들을 RAM으로 로드하여 OS를 실행 시킨다. (참고로 보조 기억장치가 없는 컴퓨터들도 있을 수 다. 산업용 컴퓨터나 FA용 컴퓨터 등은 그냥 ROM에 있는 프로그램으로만 작동되는 경우도 있다.) 이때부터 시스템 운영의 권한은 BOIS에서 OS로 넘어오게 된다. OS가 실행을 마치면 시스템은 사용자의 입력을 기다리는 상태가 된다. 이러한 일련의 과정들을 Booting 이라고 한다.
4. CPU 성능
보통 CPU의 성능을 가르킬때 ~bit, ~GHz, 라는 식으로 표현을 한다. 이 두가지의 의미에 대해서 살펴보자
a. GHz (속도)
CPU에 표시되는 GHz는 클럭의 주파수를 얘기한다. CPU는 혼자 동작할 수 없으며 CPU외부에 클럭이라는 장치(진동자)가 주파수를 발생시켜줘야 이 주파수에 맞춰서 동작을 하게 되어있다. 다시말해 CPU 외부의 클럭이 CPU를 움직이게하는 동기가 되는 것이다. 마치 자동차의 옌진 처럼 차는 멈춰 있어도 옌진은 계속 돌아가야하 하듯이… CPU에 붙는 이 GHz 단위는 이 CPU가 몇 GHz 속도에 맞춰져서 설계되었는 가를 표시해 주는 것이다. 에전에는 오버 클럭킹이라는 작업으로 CPU의 성능을 강제로 높이곤 했는데 그 때 했던 방식이 바로 이 클럭의 주파수를 늘리는 방식이었다.
b. Bit(비트)
CPU에서 말하는 비트수의 의미는 한 번에 전송(이동)할 수 있는 데이터의 크기를 말한다. 예전 8bit CPU는 한번에 전송할 수 있는 데이터 크기가 8Bit(1Byte) 밖에 안되었기 때문에 80 바이트의 데이터를 전송하기 위해선 80번의 전송 명령을 사용해야 했다. 그 다음 16Bit(2Byte) CPU가 나왔을 때는 80바이트 전송하는데 40번의 전송 명령만 사용하면 되게 됐다. 그러다가 32Bit가 나왔고 또 64Bit가 나와서 지금은 80 바이트 전송하는데 전송 명령을 10번만 쓰면 된다. CPU의 비트수는 바로 CPU 안에 있는 레지스터의 비트수이며 CPU 외부 데이터 버스와 연결되는 핀의 숫자이기도 하다. 초기 CPU가 8개의 핀만 있으면 됐었지만 지금은 데이터 버스 핀만 64개이여야 한다는 얘기다.
'개발이야기 > 이론' 카테고리의 다른 글
[컴퓨팅개론-004] 데이터의 표현 (0) | 2022.04.18 |
---|---|
[컴퓨팅개론-003] 디지털이란 (0) | 2022.04.02 |
[컴퓨팅개론-001] 컴퓨터의 기본 구성 요소 (0) | 2022.03.12 |
[컴퓨팅 개론] 시작하며... (0) | 2022.02.18 |