본문 바로가기
Lecture/OS

CPU와 메모리

by YUNZEE 2023. 10. 12.
728x90
CPU의 기본 구성

요리: 산술논리 연산장치

작업 지시: 제어장치

재료 임시 보관: 레지스터

 

산술논리 연산장치

- 요리사가 재료를 삶거나 찌거나 볶듯이 CPU에서 데이터를 연산하는 장치가 산술논리 연산장치(ALU: Arithmetic and Logic Unit)다.

 

제어장치

- 요리사는 보조 요리사나 주방 보조에게 "도마 위의 재료를 가져와라"라는 등의 작업 지시를 한다. 이처럼 CPU에서 작업을  지시하는 부분을 제어장치라고 부른다.

 

레지스터

- 요리 중간에 재료 손질하기보다 필요한 재료를 미리 손질해 놓으면 요리하기가 편하다. 필요할 때마다 바로 사용할 수 있기 때문이다. 이처럼 작업에 필요한 데이터를 CPU내부에 보관하는 곳이 레지스터 reigster다.

 

CPU의 명령어 처리 과정

두 수의 뎃셈 프로그램(유사코드)

int D2 = 2; //메모리 100번지가 D2라고 가정

int D3 = 3; // 메모리 120번지가 D3라고 가정

int sum; // 메모리 160번지가 sum이라고 가정

 

sum = D2 + D3;  

 

두 수의 뎃셈 프로그램(어셈블리어 유사코드)

LOAD mem(100), register 2 // 메모리 100번지(D2)  내용을 R2로 이동

LOAD mem(100), register 3 // 메모리 120번지(D2)  내용을 R3로 이동

ADD register 5, reigster 2, register 3 // R2와 R3를 더한 후 R5에 임시저장

 

MOVE register 5, mem(160) // R5 결과를 160번지(sum)에 저장

 

레지스터의 종류 

CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산한 후, 그 결과를 다시 레지스터에 저장했다가 메모리에 옮긴다. 이때 사용되는 레지스터는 데이터 레지스터와 주소 레지스터다. 이들은 사용자 프로그램에 의해 변경되기 때문에 사용자 가시 레지스터(user-visible register)라고 부른다.

 

- 데이터 레지스터(DR data register): 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. CPU에 있는 대부분의 레지스터는 데이터 레지스터이기 때문에 일반 레지스터 또는 범용 레지스터라고 부른다.

- 주소 레지스터(AR address register): 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.

 

데이터 레지스터와 주소 레지스터 외에 특별한 용도로 사용되는 레지스터도 있는데 이를 특수 레지스터라고 한다. 특수 레지스터는 사용자가 임의로 변경할 수 없기 때문에 사용자 불가시 레지스터 user-invisible register라고 부른다.

 

특수 레지스터

프로그램 카운터(PC program counter): CPU는 다음에 어떤 명령어를 처리해야 할지 알아야 한다. 프로그램 카운터는 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 

명령어 레지스터(lR instruction register): 현재 실행중인 명령어를 저장한다. 

메모리 주소 레지스터(MAR memory address register): 메모리에서 데이터를 가져오거나 반대로 메모리로 보낼 때 주소를 지정하는 데 사용된다.

메모리 버퍼 레지스터(MBR memory buffer register): 메모리에서 가져온 데이터나 메모리를 옮겨 갈 데이터를 임시로 저장한다.

 

버스의 종류

CPU와 메모리, 주볍ㄴ장치 간에 데이터를 주고받을 때는 시스템 버스를 사용한다. 시스템 버스는 제어 버스, 주소 버스, 데이터 버스에서 작업을 지시하는 제어 신호, 메모리의 위피 정보를 알려주는 주소, 여러 종류의 데이터가 오고 간다.

제어 버스(control bus)

- 제어 버스에서는 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다. 메모리에서 오류가 발생하거나 네트워크 카드에 데이터가 모두 도착했다는 신호는 모두 제어 버스를 통해 CPU로 전달된다. 제어 버스의 신호는 양방향으로 오고 간다.

주소 버스(address bus)

- 주소버스에서는 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 알려주는 위치 정보(주소)가 오고 간다.

주소버스는 메모리 주소 레지스터와 연결되어 있으며 단방향이다.

데이터 버스(data bus)

- 저어버스가 다음에 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다. 데이터 버스는 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.

 

CPU비트의 의미

버스의 대역폭(bandwidth)은 한 번에 전달할 수 있는 데이터의 최대 크기다. 여기서 32bit, 64bit는 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기이다.

 

메모리의 봉류와 부팅

모든 프로그램은 메모리에 올라와야 실행될 수 있다. 실행에 필요한 프로그램과 데이터가 들어 있는 메모리는 CPU와 협업하여 작업을 진행한다.

 

메모리의 종류

메모리는 읽거나 쓸 수 있는 램(RAM: Random Access Memory)과 읽기만 가능한 롬(ROM: Read Only Memory)으로 구분된다. 램은 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있다.

램은 전력이 끊기면 데이터가 사라지는 휘발성 메모리와 전력이 끊겨도 데이터를 보관할 수 있는 비휘발성 메모리로 나뉜다.

 

휘발성 메모리

휘발성 메모리( volatility memory )에는  DRAM Dynamic RAM과 SRAM Static RAM이 있다. DRAM은 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 한다. SRAM은 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없다.

 

비휘발성 메모리

비휘발성 메모리(non-volatility memory)에는 플래스 메모리 flash memory, FRAM Ferroelectric RAM, PRAM Phase change RAM 등이 있다. 플래시 메모리는 디지털카메라 같은 USB드라이버같이 전력이 없어도 데이터를 보관하는 저장장치로 많이 사용된다. 

 

메모리 보호

메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터 bound register에 저장한 후 작업한다. 그리고 현재 진행 중인 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 한계 레지스터(limit register)에 저장한다. 사용자 작업이 진행되는 동안 이 두 레지스터의 주소 범위를 벗어나는지 하드웨어 측면에서 점검함으로써 메모리를 보호한다. 

 

부팅  

컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 booting이라고 한다. 사용자가 컴퓨터의 전원을 켜면 롬에 저장된 바이오스(BIOS)가 실행된다.

하드웨어 점검이 완료되면 바이오스가 맨 마지막 작업은 하드디스크의 마무리 부트 레코드에 저장된 작은 프로그램을 메모리로 가져와 실행하는 것이다.

마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며 운영체제를 실행하기 위한 코드인 부트스트랩이 저장되어 있다. 

728x90

'Lecture > OS' 카테고리의 다른 글

멀티 프로세싱  (4) 2023.10.16
컴퓨터 성능 향상 기술  (2) 2023.10.14
컴퓨터의 기본 구성  (0) 2023.10.10
운영체제의 구성  (0) 2023.09.21
운영체제의 발전  (2) 2023.09.20