CPU의 구성과 동작(1)

GwanMtCat·2023년 9월 12일
0

CPU는 명령어를 해석하여 실행하는 장치로

  • 산술논리 연산장치(ALU, Arithmetic and Logical Unit)

    • CPU에서 데이터를 연산하는 장치로 산술 연산과, 논리 연산을 수행한다.
  • 제어 장치(Control Unit)

    • CPU에서 작업을 지시하는 부분으로 메모리 읽기 쓰기등의 제어신호를 보낸다.
  • 레지스터(Register)

    • CPU에서 데이터를 임시로 보관하는 곳

로 구성되며, 이것들의 협업으로 작업을 처리한다.


CPU의 명령어 처리 과정

가령 c 언어로 작성한 덧셈 프로그램이 있다고하면

int D2=2, D3=3, sum;
sum = D2+D3;

컴파일러를 통해 컴퓨터가 이해할 수 있도록 기계어로 변환하여 실행해야 한다.

이를 이해하기 쉽게 어셈블리어로 표현하면

01 LOAD mem(100), reigster 2; 
02 LOAD mem(120), register 3;
03 ADD register 5, register 2, register 3;
04 MOVE reigster 5, mem(160);

01행: 메모리의 100번지에 있는 값을 레지스터 2로 가져온다.
02행: 메모리의 120번지에 있는 값을 레지스터 3으로 가져온다.
03행: 레지스터 2와 레지스터 3에 저장된 값을 더한 결과를 레지스터 5에 넣는다.
04행: 레지스터 5의 값을 메모리의 160번으로 옮긴다.

CPU가 연산을 하려면 필요한 데이터를 CPU 로 가져와 임시로 보관해야 하는데 이때 사용되는 장소가 레지스터이다.


명령어의 구조

위에서 어셈블리어로 표현을 해봤는데 이 구조를 자세히 살펴보자.
하나의 명령어를 자세히 들여다보면 연산 코드, 오퍼랜드라는 것이 있다.

연산코드는 명령어가 수행할 연산을 말한다.

오퍼랜드는 연산에 사용할 데이터 혹은 연산에 사용할 데이터가 저장된 위치를 말한다.

위에서 오퍼랜드에 사용할 데이터가 저장된 위치를 가리키기도 한다고 했는데 연산에 사용할 데이터가 많은 경우, 메모리 주소나 레지스터 이름이 담긴다. 그래서 주소 필드라고 부르기도 한다.

오퍼랜드는 명령어 안에 하나도 없을 수도 있고, 한개만 있을 수도 있고, 두개 또는 세개만 있을수도 있어 이에 따라 0-주소 명령어, 1-주소 명령어, 2-주소 명령어, 3-주소 명령어 등으로 분류한다.


레지스터의 종류

레지스터는 임시 기억장치로, 연산을 위해서는 당연하게도 역할마다 다양한 종류의 레지스터가 존재한다.

위의 경우 사용되었던 레지스터에는 데이터 레지스터와 주소 레지스터가 사용되었는데 사용자 프로그램에 의해 변경되어 사용자 가시 레지스터(user-visible register) 라고 부른다.

  • 데이터 레지스터(DR, Data Register) : 메모리에서 가져온 데이터를 임시로 보관

  • 주소 레지스터(AR, Address Register) : 데이터 또는 명령어가 저장된 메모리의 주소를 저장

이외에 특별한 용도로 사용되는 레지스터들 도 있는데 이를 특수 레지스터라고 한다. 특수 레지스터는 사용자가 임의로 변경 할 수 없어, 사용자 불가시 레지스터(user-invisible register) 라고 부른다.

  • 프로그램 카운터(PC, Program Counter) : 다음에 실행할 명령어의 주소를 기억하고 있음, 명령어 포인터라고도 함

  • 명령어 레지스터(IR, Instruction Register) : 현재 실행 중인 명령어를 저장, 제어장치가 명령어 레지스터에 있는 명령을 해석한 후, 외부 장치에 적절한 제어 신호를 보낸다.

  • 메모리 주소 레지스터(MAR, Memory Address Register) : 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용한다.

  • 메모리 버퍼 레지스터(MBR, Memory Buffer Register) :메모리에서 가져온 데이터나 메모리롤 옮겨 갈 데이터를 임시로 저장한다.

  • 프로그램 상태 레지스터(PSR, Program Status Register)로 연산 결과가 양수인지, 음수인지, 0이 아닌지 혹은 자리 올림의 유무를 저장하는 레지스터가 있다.

플래그 레지스터(FR, Flag Register), 상태 레지스터(SR, Status Register), 컨디션 레지스터(CR, Condition Register) 라고도 부른다.


참조한 책 및 사이트

쉽게 배우는 운영체제
혼자 배우는 컴퓨터구조 + 운영체제

0개의 댓글