컴퓨터구조

CPU의 구성

기초공사 2023. 5. 25. 19:00

CPU의 구성요소

  • Register Set
  • Control Unit 
  • ALU

ALU

  • alu는 연산을 수행하는 연산장치이다.
  • alu는 control unit을 통해 제어신호를 받아들이고 해당 제어신호에 맞는 연산을 수행한다
  • 레지스터는 연산을 수행한 뒤 연산결과를 레지스터에 담는데 이 때 연산결과가 레지스터의 크기보다 큰 경우를 오버플로우 라고 한다.
  • 연산결과와 함께 플래그 값을 플래그레지스터에 기록한다. 플래그란 연산결과에 대한 메타데이터이다.

 

플러그 레지스터의 종류

출처 : 상태 레지스터 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

Control Unit 

  • 명령어 레지스터로부터 명령어를 인출한다.
  • 플래그 레지스터로부터 플래그값을 받는다.
  • 제어신호를 받는다.
  • 명령어를 해석한다.
  • 명령어에 맞는 제어신호를 내보낸다.
  • 클럭 신호를 받아들인다.
  • 제어신호를 내보내는 시스템버스는 레지스터나 alu에 보내는 시스템보스뿐만 아니라 입출력장치나 메인메모리에 연결된 버스도 존재한다.

 

ALU

  • 레지스터를 통해 피연산자를 받아들인다.
  • 제어신호에 맞는 연산을 수행한다.
  • 결과값은 레지스터에 저장한다. 
  • 연산결과에 대한 플래그를 플래그 레지스터에 기록한다.

 

 

Register Set

  • Register들의 집합
  • 기본적인 레지스터들 ↓
    • PC (Program Counter)
    • IR (Instruction Register)
    • MAR (Memory Address Register)
    • MBR (Memory Buffer Register)
    • GPR (General Purpose Register)
    • FR (Flag Register)
    • SP (Stack Pointer)
    • BR (Base Register)

 

 

PC ( Program Counter )

  • 다름에 실행될 명령어의 주소를 가지고 있는 레지스터이다. (= 메모리에서 가져올 명령어) 

 

IR (Instruction Register)

  • 현재 해석할 명령어 (= 메모리에서 가져온 명령어)
  • 제어장치는 이 레지스터에 있는 명령어를 해석하고 제어신호를 내보낸다.

 

MAR ( Memory Address Register )

  • CPU가 주소 버스를 이용할 때 주소를 임시 저장하는 레지스터이다.
  • 메모리의 주소가 담긴다.

 

MBR ( Memory Buffer Register )

  • CPU가 데이터 버스를 통해 데이터를 주고 받을 경우 이용되는 레지스터이다. 
  • 명령어와 데이터가 담긴다.

 

 

프로그램 실행 과정도중 레지스터의 변화

PC( 다음 실행할 명령어 저장 )→ MAR ( PC 값 복사 )→ MBR ( MAR의 주소에 있는 먕량어와 데이터를 가져온다. DATABUS ) → PC++ → IR ( MBR안의 명령어를 가져온다. ) 

 

FR ( Flag Register )

  • 연산 결과나 cpu에 대한 부가정보를 저장하는 레지스터이다. ( flag값이 담긴다. )

 

GPR ( General Purpose Register )

  • 여러개가 존재하며 명령어 혹은 데이터, 주소등 자유롭게 사용가능

 

SP ( Stack Pointer )

  • stack의 top을 가리키는 레지스터이다.
  • 스택 주소지정 방식에 사용된다.

 

BR ( Base Register )

  • 변위 주소 지정방식에 사용되는 레지스터이다.
  • Base Register의 값 + 변위 ( 오퍼랜드 필드의 값 ) 을 더해서 유효주소를 얻는다.

 

변위 주소 지정 방식  연산코드  오퍼랜드  유효주소 (= 기준주소 + 변위)
상대 주소 지정 방시   연산코드  변위 pc + 변위 
베이스 레지스터 주소 지정 방식   연산코드  변위  베이스 레스터 + 변위 

 

명령어 사이클 (inctruction cycle) 

명령어는 일정한 주기를 반복하면 실행되는데 이 주기를 명령어 사이클이라고 한다.

 

  1. IF (Instructoin Fetch) 명령어 인출 : 기억장치로부터 명령어를 인출해 온다.
  2. ID (Instruction Decode) 명령어 해독 : 명령어를 해석한다.
  3. DF (Data Fetch) 데이터 인출 : 명령어 수행을 위해 데이터가 필요한 경우 기억장치로부터 데이터를 인출한다.
  4. DP (Data Process) 데이터 처리 : 필요한 경우 산술 논리 연산을 수행한다.
  5. DS (Data Store) 데이터 저장 : 연산을 수행한 결과를 저장한다.