학습 목표 
- 컴퓨터를 구성하는 하드웨어의 특성을 이해한다.
- CPU와 메모리 구서 및 동작방식을 이해한다.
- 컴퓨터의 성능을 향상하는 기술을 알아본다.
- 벙렬 처리의 개념을 이해하고 병렬 처리 기법을 알아본다.

 


목차

  • CPU의 구성과 동작
  • 메모리의 종류와 부팅

 


CPU의 구성과 동작

CPU의 기본 구성

CPU명령어를 해석하여 실행하는 장치이다. CPU는 산술논리 연산장치, 제어장치, 레지스터로 구성된다.

 

  • 산술논리 연산장치(Arithmetic and Logic Unit, ALU)
    CPU에서 데이터를 연산하는 장치이다. 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산AND, OR 같은 논리 연산을 수행한다.
  • 제어장치(Control Unit)
    CPU에서 작업을 지시하는 부분 제어장치라고 한다.
  • 레지스터(register)
    CPU내에 데이터를 임시로 보관한 곳 레지스터라고 한다.

 

CPU의 명령어 처리 과정
// C언어로 작성한 덧셈 프로그램
int D2=2, D3=3, sum;
sum = D2+D3;


// 어셈블리어로 변환한 덧셈 프로그램
LOAD mem(100), register 2;
LOAD mem(120), register 3;
ADD register 5, register 2, register 3;
MOVE register 5, mem(160);

 

  • 메모리 100번지에 있는 값을 레지스터 2로 가져온다.
  • 메모리 120번지에 있는 값을 레지스터 3으로 가져온다.
  • 레지스터2와 레지스터3에 저장된 값을 더한 결과를 레지스터 5에 넣는다.
  • 레지스터5의 값을 메모리 160번지(sum)로 옮긴다.

 

CPU가 연산하기전 레지스터로 데이터를 가져와 임시 보관한다. 이후 산술논리 연산장치에서 두 값을 더해서 레지스터5에 저장한다. 제어장치는 명령어를 해석해서 제어 신호를 보내고 CPU내의 데이터 흐름을 조절하는 역할을 한다.

 

레지스터의 종류
  • 가시 레지스터(User-visible register): 사용자에 의해 변경되는 레지스터
  • 데이터 레지스터(DR)
    메모리에서 가져온 데이터를 임시 보관할 때 사용
  • 주소 레지스터(AR)
    데이터 또는 명령어가 저장된 메모리의 주소

 

  • 불가시 레지스터(User-invisible register): 사용자가 임의로 변경할 수 없는 레지스터
  • 프로그램 카운터(PC)
    CPU가 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 다음에 실행할 데이터를 가리키기 때문에 포인터(instruction pointer)라고도 한다..
  • 명령어 레지스터(IR)
    현재 실행중인 명령어를 저장한다.
  • 메모리 버퍼 레지스터(MBR)
    메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장한다. 항상 메모리 주소 레지스터와 함께 동작한다.
  • 메모리 주소 레지스터(MAR)
    메모리에서 데이터를 가져오거나 보낼 때 주소를 지정하기 위해 사용한다.
  • 상태 레지스터(PSR: Program Status Register)
    산술논리 장치와 연결되어 있으며, 양수, 음수, 0 또는 자리 올림 유무 등을 저장한다.

 

 

버스의 종류

버스는 cpu와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 각 작업은 제어 버스, 주소 버스, 데이터 버스에 실린다.

 

  • 제어 버스(양방향)
    다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다.
    데이터의 읽기, 쓰기, 이동을 메모리에 신호를 보내거나 주변장치에 저장 신호를 보낸다. 마찬가지로 주변장치나 메모리에서 데이터가 모두 도착했다는 신호를 제어장치에 보내므로 양방향 통신이다.
  • 주소 버스(단방향)
    메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지 알려주는 위치 정보(주소)가 오고간다. cpu에서 메모리나 주변 장치로 나가는 주소 정보는 있지만, 주변장치나 메모리에서 cpu로 보내는 주소 정보는 없다.
  • 데이터 버스(양방향)
    제어 버스가 어떤 작업을 할지 신호를 보내고 주소 버스가 위치 정보를 전달하면 데이터 버스로 목적지까지 이동한다. 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.

 

-버스의 대역폭
버스의 대역폭은 한 번에 전달할 수 있는 데이터의 최대 크기를 말한다. 흔히 32bit CPU, 64bit CPU라고 하는데 32, 64bit는 한 번에 처리할 수 있는 최대 크기이다. 참고로 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기를 워드(word)라고 하며 1워드는 32bit이다.

 

메모리의 종류와 부팅

모든 프로그램은 메모리에 올라와야 실행될 수 있다. 운영체제로 프로그램의 일부이다. 메모리는 소자 하나의 크기로 1bit로 0 또는 1로 저장된다. 그러나 소자 하나만으로 데이터를 표현할 수 없어 메모리 주소는 바이트 단위로 지정되고, 워드 단위로 움직인다. 

 

메모리의 종류

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

 

  • 휘발성 메모리(volatility memory)
    DRAM(Dynamic RAM) 동적램, SRAM(Static RAM) 정적램이 있다.
    DRAM은 일정 시간후 데이터가 소멸되며, SRAM은 전력이 공급되는 동안 데이터가 유지된다.
    메인메모리는 DRAM을 사용, 캐시같은 고속 메모리는 SRAM을 사용한다.
  • 비휘발성 메모리(non-volatility memory)
    플래시 메모리(flash memory), FRAM(Ferroelectric RAM), PRAM(Phase change RAM)등이 있다. 
    플래시 메모리는 디지털 카메라, MP3 플레이어, USB 드라이버에 많이 사용된다.
    플래시 메모리의 각 소자는 사용 횟수가 제한되어 있어 오래 사용하면 제 기능을 잃는다.

 

램과 달리 롬은 전력이 끊겨도 데이터를 보관하는 것이 장점이지만 데이터를 한 번 저장하면 바꿀 수 없다. 이러한 특성때문에 바이오스(BIOS, Basic Input/Output System)를 롬에 저장한다.

 

메모리 보호

메모리를 보호하기 위해 CPU는 현재 작업 중인 작업의 메모리 시작 주소경계 레지스터에 저장한 후 작업을 시작한다. 그리고 작업이 차지하고 있는 메모리의 크기, 즉 마지막 주소까지의 차이를 한계 레지스터에 저장한다. 만약 두 범위를 벗어나는 작업을 한다면 인터럽트를 발생시키고 운영체제가 해당 프로그램을 강제 종료 시킨다.

 

부팅

응용 프로그램은 운영체제가 메모리에 올려놓듯이, 운영체제는 바이오스에 의해 메모리에 올려진다

 

  1. 사용자가 컴퓨터 전원을 켜면 롬에 저장된 바이오스가 실행된다.
  2. 이상이 있으면 '삐~'소리와 함께 오류 메세지를 출력한다. 이상이 없다면 하드디스크의 마스터 부트 레코드(MBR)에 저장된 프로그램을 메모리로 가져와 실행한다.
  3. 운영체제를 실행하기 위한 코드인 부트스트랩(bootstrap)이 이곳에 저장되어있다.
  4. 일부 바이오스는 사용자 옵션 부분에 운영체제 보호 항목을 만들어 마스터 부트 레코드를 수정할 수 없게한다. 만약 새로운 운영체제를 다시 설치해야한다면 이 옵션을 해제해야한다.