CPU의 구성과 동작
CPU의 기본구성
CPU의 명령어 처리 과정
1 LOAD mem(100), register 2 // 메모리 100번지 내용을 R2로 이동
2 LOAD mem(120), register 3 // 메모리 200번지 내용을 R3로 이동
3 ADD register 5, register 2, register 3 // R2와 R3를 더한 후 R5에 임시저장
4 MOVE register 5 mem(160) // R5 결과를 메모리 160번지에 저장
- 제어장치는 메모리 100번지의 있는 값(2)를 레지스터 2으로 옮기라는 명령을 내린다.
- 제어장치는 메모리 120번지에 있는 값(3)을 레지스터 3으로 옮기라는 명령을 내린다.
- 레지스터 2와 3의 값을 산술논리 연산장치(ALU)로 보내서 더하라는 명령을 내린다. 결과 값 5는 레지스터 5에 임시 보관된다.
- 레지스터 5의 값을 메모리 160번지로 옮기라는 명령을 내린다.
레지스터의 종류

- 데이터 레지스터(DR:Data Register) : 데이터를 임시 보관할 때 사용한다. 범용 레지스터 또는 일반 레지스터라고 부른다.
- 주소 레지스터(AR:Adress Register) : 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.
- 특수 레지스터 : 사용자가 임의로 변경할 수 없는 불가시 레지스터
- 프로그램 카운터(PC) : 프로그램 카운터는 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 다음에 실행할 명렁어 주소를 가리키기 때문에 명령어 포인터라고도 한다.
- 명령어 레지스터(IR) : 현재 실행중인 명령어를 저장한다. 제어 장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다.
- 메모리 주소 레지스터(MAR) : 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정할 때 사용된다. 명령어를 처리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다.
- 메모리 버퍼 레지스터(MAR) : 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장한다. 메모리 버퍼 레지스터는 항상 메모리 주소 레지스터와 함께 동작한다.
- 상태 레지스터(PSR : Program Status Register)
- 조건에 따라 다른 코드가 실행되는 if와 같은 분기문장에 사용된다.
- 프로그램 상태 레지스터는 산술논리 연산장치(ALU)와 연결되며, 연산결과를 임시로 저장한다.
- 플래그 레지스터, 상태 레지스터, 컨디션 레지스터라고도 부른다.
동작원리 :'LOAD mem(100), register 2'

① 프로그램 카운터(PC)에는 실행해야하는 코드 행 번호 1이 저장되어 있다. 1이 제어장치로 전송되면 1행이 실행된다. 1행은 LOAD mem(100), register 2라고 가정하면, 명령어 레지스터(IR)에는 ROAD가 탑재된다.
② 제어장치가 명령어 레지스터(IR)에 있는 명령 LOAD를 해석하여 메모리 100번지에 있는 데이터를 가져오라는 제어신호를 보낸다.
③ 메모리 주소 레지스터는 100이 저장된다. 메모리에 있는 데이터를 CPU로 옮기는 일은 메모리 관리자가 담당한다. 메모리 관리자는 메모리 주소 레지스터에 있는 100을 읽은 후 메모리 주소 100번지에 저장된 값 2를 메로리 버퍼 레지스터로(MBR)로 보낸다. 레지스터는 CPU가 관리하는 영역이기 때문에 메모리 관리자가 숫자 2를 레지스터로 직접 옮길 수 없다.
④ 제어장치는 메모리 버퍼 레지스터에 저장된 값2를 레지스터로 2로 옮긴다.
버스의 종류
- CPU와 메모리, 주변장치는 시스템 버스를 사용하여 데이터를 주고받는다. 시스템 버스안 데이터에는 작업을 지시하는 제어신호, 메모리의 위치 정보를 알려주는 주소를 포함한다.
- 시스템 버스의 종류 : 제어 버스, 주소 버스, 데이터 버스
버스의 종류와 구조

- 제어 버스
- 제어장치와 연결된 버스이다.
- CPU가 메모리와 주변장치에 제어 신호(읽기신호, 쓰기신호 등)을 보내기 위해 사용힌다.
- 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어신호를 보내기 때문에 양방향 통신한다.
- 주소 버스
- 메모리 주소 레지스터와 연결된 버스이다.
- 데이터를 읽거나 쓸때 메모리나 주변장치에 위치 정보(주소)를 보내기 위해 사용한다.
- 단방향 : CPU에서 주변 장치로 나가는 주소 정보만 있다.
- 데이터 버스
- 메모리 버퍼 레지스터와 연결 버스이다.
- 데이터의 이동이 양방향으로 이뤄진다.
CPU 비트의 의미
- 버스의 대역폭은 한 번에 전달 할 수 있는 데이터의 최대크기 이다.
- 흔히 34bit, 64bit CPU라고 하는데, 34bit와 64bit가 한 번에 처리할 수 있는 데이터 크기를 나타내는 것이다.
- 레지스터 크기와 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 크기가 동일하다.
- CPU가 한번에 처리할 수 있는 데이터의 크기를 워드(word) 라고 한다.
- 34bit CPU에서 1워드는 34bit를 의미한다.
메모리의 종류와 부팅
- 폰노이만 구조의 컴퓨터에서 모든 프로그램은 메모리에 올라와야 실행될 수 있다.
메모리의 종류

- 읽거나 쓸수 있는 램(RAM Random Access Memory)
- 휘발성 메모리
- 동적램 DRAM(Dynamic RAM) : 일정 시간이 지나면 사라진다. 일정시간마다 다시 재생해야한다.
- 정적램 SRAM(Static RAM): 전력이 공급되는 동안에 데이터는 보관된다. 속도는 빠르지만 가격이 비싸다.
- 메인메모리는 DRAM, 캐시같은 고속 메모리는 SRAM을 사용한다.
- SDRAM(Synchronous Dynamic RAM) : DRAM이 발전된 형태로 클록 틱(펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM이다.
- 비휘발성 메모리 : FRAM(Ferroelectric RAM), PARM(Phase change RAM)
- 플래시 메모리
- 전력이 없어도 데이터를 보관하는 저장장치로 사용된다.
- 디지털카메라, MP3 플레이어, USB 드라이버에서 사용된다.
- 플래시 메모리는 각 소자마다 최대사용횟수가 정해져있어 SD카드나 USB 드라이버를 오래 사용하면 성능이 저하되거나 데이터를 유실 할 수 있다.
- SSD
- 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 높은 내구성이라는 장점을 가지고 있다.
- 노트북, 스마트폰에서 많이 사용된다.
메인 메모리를 휘발성 메모리를 사용하는 이유?
- 메인 메모리를 비활성 메모리를 사용하는 경우 데이터 보관을 위해 메모리 내부가 복잡해지고 속도가 느려진다. 그리고 가격이 비싸지기 때문에 메인 메모리는 휘발성 메모리를 사용한다.
- 읽기만 가능한 롬(ROM Read Only Memory)
- 전력이 끊겨도 데이터 보관이 가능하다.
- 데이터를 한 번 저장하면 바꿀 수 없다.
- 일반적으로 바이오스(BIOS : Basic Input/Output System)를 롬에 저장한다.
- 마스크 롬(mask ROM) : 데이터를 지우거나 쓸 수 없다.
- PROM(Progrmmable ROM) : 전용 기계를 사용하여 데이터를 한 번만 저장할 수 있다.
- EPROM(Erasable Programmable ROM) : 데이터를 여러번 쓰고 지울 수 있지만 가격이 비싸다.
메모리 보호
-
일괄 작업 시스템에서는 메모리가 운영체제 영역과 사용자 영역으로 명확하게 구분되어있다.
-
하지만 현재 시분할 기법을 사용하는 대부분의 운영체제에서는 사용자 영역이 여러개의 작업 공간으로 나뉘어 있다.
-
어떤 작업이 다른 작업의 영역을 침범하지 않도록 메모리 보호는 중요한 문제이다.

-
메모리를 보호하기 위해서 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장한다.
-
현재 진행 중인 작업의 시작 메모리 주소부터 마무리 주소까지의 차이를 한계 레지스터에 저장한다.
-
B 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스터와 한계 레지스터의 주소 값 안에서 이루어지는지 검사한다.
-
만약 두 레지스터 주소의 영역을 벗어난다면 메모리 오류와 관련된 신호가 발생한다.(인터럽트)
-
인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다.
-
메모리 영역을 벗어나 인터럽트가 발생하는 경우 운영체제는 해당 프로그램을 강제 종료 시킨다.
부팅
- 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅이라고 한다.
- 컴퓨터 전원을 키면 롬에 저장된 바이오스가 실행된다.
- 바이오스는 CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는 확인한다. 이상이 있으면 삐 소리와 함께 오류 메시지를 출력한다.
- 바이오스는 하드웨어를 점검한 후 하드디스크의 마스터 부트 레코드에 저장된 작은 프로그램을 메모리로 가져와 실행한다.
- 마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며 운영체제를 실행하기 위한 코드인 부트스트랩이 저장되어있다.
- 부트스트랩 코드는 하드디스크에 저장된 운영체제를 메모리로 가져와 실행하는 역할을 하는 프로그램이다.