05. CPU와 메모리
📍 CPU
산술논리 연산장치 / 제어장치 / 레지스터 로 구성됨
📍 산술논리 연산장치 Arithmetic and Logic Unit, ALU
: CPU에서 데이터를 연산하는 장치로 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 과 같은 논리 연산을 수행함
📍제어 장치 Control Unit
: CPU에서 작업을 지시하는 부분
- 명령어를 해석하여 제어 신호를 보내고 CPU내의 데이터 흐름을 조절하는 역할을 한다
📍레지스터 Register
: CPU 내에 데이터를 임시로 보관하는 곳
- CPU가 연산을 할 때 필요한 데이터를 CPU로 가져와 임시로 보관해야 하는데, 이 때 사용되는 장소가 레지스터임
* CPU는 0과 1의 2진수로 이루어진 기계어 machine code만 인식함
➡️ CPU가 이해할 수 있도록 컴파일러를 이용하여 기계어로 바꾸어야 함
* CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산을 한 후, 그 결과를 다시 레지스터에 저장했다가 메모리에 옮기는데, 이때 사용되는 레지스터는 데이터 레지스터와 주소 레지스터임
사용자 가시 레지스터 user-visible register |
데이터 레지스터 DR , Data Register |
메모리에서 가져온 데이터를 임시로 보관할 때 사용 CPU 에 있는 대부분의 레지스터가 데이터 레지스터이기 때문에 일반 레지스터 또는 범용 레지스터라고 불림 |
주소 레지스터 AR, |
데이터 또는 명령어가 저정된 메모리의 주소 | |
사용자 불가시 레지스터 user-invisible register |
프로그램 카운터(PC) Program counter = 멸령어 포인터 intruction pointer |
다음에 실행할 명령어의 위치정보(코드의 행 번호, 메모리 주소)를 저장한다 |
명령어 레지스터(IR) Intruction register |
현재 실행 중인 명령어를 저장한다 제어 장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보냄 |
|
메모리 주소 레지스터 (MAR) Memory Address Register |
메모리 관리자가 접근해야 할 메모리의 주소를 저장한다 명령어를 처리하는 괒어에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장함 |
|
메모리 버퍼 레지스터(MBR) Memory Buffer Register |
메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장한다 항상 메모리 주소 레지스터와 함께 동작함 |
|
프로그램 상태 레지스터(PSR) Program Status Register = 플래그 레지스터 Flag register = 상태 레지스터 status register = 컨디션 레지스터 condition register |
연산 결과(양수, 음수 등)를 저장한다 산술논리 연산장치와 연결되어 있으며 연산 결과가 양수, 음수, 0 인지, 자리 올림의 유무 등을 저장함 |
* 특수 레지스터 : 사용자가 임의로 변경할 수 없음
📍버스
: CPU와 메모리, 주변장치 간에 데이터를 주고 받을 때 사용함
- 다음 작업을 지시하는 제어 신호, 메모리의 위치 정볼르 알려주는 주소, 처리할 데이터가 오고 가며 각각 제어 버스, 주소버스, 데이터 버스에 실림
◼️ 제어버스 Control bus
: 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 감
- 주변 장치도 하드디스크에 저장 명령을 내리거나 사운드 카드에 소리를 내라는 명령을 내릴 때 제어 버스를 통해 전달됨
- CPU, 메모리, 주변장치와 양방향으로 오고감
◼️ 주소 버스 address bus
: 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 알려주는 위치 정보(주소)가 오고 감
- 주변 장치도 하드디스크의 어느 위치에서 데이터를 읽어올지, 어느 위치에 저장할지에 대한 위치 정보가 주소 버스를 통해 전달됨
- 주소 레지스터와 연결되어 있으며 단방향임 ( CPU에서 메모리나 주변장치로 나가는 주소 정보는 있지만 주소 버스를 통해 CPU로 전달되는 정보는 없음 )
◼️ 데이터 버스 data bus
: 제어 버스가 다음에 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터와 데이터 버스data bus에 실려 목적지까지 이동함
- 메모리 버퍼 레지스터와 연결되어 있으며 양방향 으로 이루어짐
* 버스의 대역폭 bandwidth
: 한 번에 전달할 수 있는 데이터의 최대 크기를 말함
= CPU가 한 번에 처리할 수 있는 데이터의 크기와 같음
** 워드 word
: CPU가 한 번에 처리할 수 있는 데이터의 최대 크기
- 버스의 대역폭과 메모리에 한 번에 저장되는 단위
ex. 32bit CPU에서 1word = 32bit
🚨 모든 프로그램은 메모리에 올라와야 실행될 수 있다
- 메모리에는 실행에 필요한 프로그램과 데이터가 존재함
📍RAM / ROM
램 RAM Random Access Memory : 읽거나 쓸 수 있음 |
휘발성 | DRAM, Dynamic RAM : 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 함 |
SRAM Static RAM : 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음 |
||
SDRAM Stnchronous Dynamic Random Access Memory : DRAM이 발전된 형태, SRAM과는 완전히 다른 종류의 램 - 클록틱(펄스)이 발생할 때 마다 데이터를 저장하는 동기 DRAM |
||
비휘발성 non-volatility memeory = 메인 메모리 |
플래시 메모리 ex. 디지털 카메라, MP3 플레이어, USB 드라이버 |
|
FRAM | ||
PRAM | ||
롬 ROM Read Only Memory : 읽기만 가능 |
마스크롬 mask ROM : 데이터를 지우거나 쓸 수 없음 |
|
PROM Programmable ROM : 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음 |
||
EPROM Erasable {rogrammable ROM : 데이터를 여러 번 쓰고 지울 수 있음 - 플래싀 메모리처럼 사용할 수 있지만 비싸서 잘 사용하지 않음 |
* 램 : 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있음
* 롬 : 램과 달리 전력이 끊겨도 데이터를 보관할 수 있지만 데이터를 한 번 저장하면 바꿀 수 없음
ex. CD 는 CD-ROM에 저장함 , 바이오스 BIOS Basic Input/Output system을 롬에 저장함
*바이오스(BIOS; Basic Input/Output System)는 운영 체제 중 가장 기본적인 소프트웨어이자 컴퓨터의 입출력을 처리하는 펌웨어
* 메인 메모리는 전력이 끝겨도 내용이 남기 때문에 비휘발성 메모리를 사용하는데. 데이터 보관이 가능해야 하므로 메모리 내부가 복잡하고 속도가 느리며 가격이 비싸다
📍부팅 booting
: 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정
- 사용자가 컴퓨터의 전원을 켜면
1. 롬에 저장된 바이오스가 실행됨 ➡️ 바이오스는 CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는지 확인함
2. 이상이 없으면 하드디스크의 마스터 부트 레코드 Master Boot Record 에 저작된 작은 프로그램을 메모리로 가져와서 실행함
* 마스터 부트 레코드 Master Boot Record : 하드 디스크의 첫 번째 섹터
- 운영체제를 실행하기 위한 코드인 부트스트랩 bootstrap이 이곳에 저장되어 있음
* 부트스트랩 코드 : 운영체제를 메모리로 가져와 실행하는 역할을 하는 작은 프로그램
3. 마스터 부트 레코드에 있는 부트스트랩이 메모리에 올라오면 하드시시크에 저장된 운영체제를 메모리로 불러옴
➡️ 그래서 한 컴퓨터에 운영체제가 2개이상이면 바이오스가 하드웨어 점검을 마치고 마스터 부트 레코드에서 부트스트랩을 가져와 어떤 운영체제로 사용할 것인지 물어보는 화면이 나온다. 이 화면이 부트스트랩 코드가 실행된 화면임
- 하나의 운영체제가 설치된 컴퓨터의 부트스트랩이라면 어떤 운영체제를 선택할 것인지 물어보는 과정 없이 바로 운영체제를 메모리에 올린다