Link Search Menu Expand Document

CPU 내부 구조와 레지스터

CPU 구성요소

중앙 처리 장치 (CPU, Central Processing Unit): 컴퓨터에서 데이터 처리 동작을 수행하는 부분

  • 레지스터 세트 (Register set): 명령어를 실행하는 데에 필요한 데이터를 보관
  • 산술논리장치 (ALU, Arithmetic Logic Unit): 명령어를 실행하기 위한 마이크로 연산 수행
  • 제어장치 (Control Unit) : RS간 정보전송 감시, ALU에게 수행할 동작을 지시

CPU 내부 구조

3 1 CPU 구성요소 01 CPU 내부 구조

각종 레지스터들의 명칭과 기능

  • MAR (Memory Address Register) : MBR로부터 쓰여지거나 읽혀질 워드의 메모리 주소를 저장
  • MBR (Memory Buffer Register) : 메모리에 쓰여질 워드를 가지고 있거나 메모리로부터 읽혀진 워드를 저장
  • PC (Program Counter) : 다음에 수행될 명령어가 들어있는 주기억장치의 주소를 저장
  • IR (Instruction Register) : PC가 지정하는 주소에 저장되어 있는 명령어를 저장
  • ID (Instruction Decoder) : IR에 들어있는 명령어의 해석을 담당하는 논리회로
  • CU (Control Unit) : ID에서 보내진 신호에 따라 명령어를 실행 (clock에 의해 발생)
  • WR (Working Register) : 산술 논리연산을 실행할 수 있도록 자료를 저장하고 그 결과를 저장. GPR과 달리 ALU에 직접 연결되어 있음.
  • SR (Status Register) : CPU의 상태를 나타내는 특수목적의 레지스터
명칭 약자 설명
Z zero
부호 S sign
오버플로우 V overflow
캐리 C carry
인터럽트 I interrupt
  • 범용 레지스터 (GR, General purpose Register) : WR에서 정보가 용이하게 처리되도록 임시로 자료를 저장
  • 3 1 CPU 구성요소 02 ADD 명령어의 실행 예

CPU 내부 구조와 명령어 집합

명령어(instruction) 구성과 실행

레지스터 전송 언어

마이크로 연산(micro-operation) : Register에 저장된 데이터의 조작을 위해 실행되는 동작으로 하나의 clock pulse 내에서 실행되는 기본적인 동작

  • 전송 : 레지스터 사이 이진 정보를 전송
  • 산술 : 레지스터에 저장된 수치 데이터에 대해 산술 연산 수행
  • 논리 : 레지스터에 저장된 비수치 데이터에 대해 비트 조작 연산 수행
  • 시프트 : 레지스터에 저장된 데이터에 대해 시프트 연산 수행

레지스터 전송

3 3 명령어(instruction) 구성과 실행 01 가장 일반적 표현들

3 3 명령어(instruction) 구성과 실행 02 레지스터 전송의 기본기호

CPU(central processing unit) 디자인

CPU 내의 다양한 장치 간 상호 연결 방법

직접 연결 버스 연결
연결 복잡도가 장치수의 제곱에 비례
공용선에 의한 연결
가장 가성비 높은 연결 방식으로 다양한 관리 방법 존재
3 4 CPU 디자인 01 직접 연결 3 4 CPU 디자인 02 버스 연결

공용선에 의한 레지스터 상호 연결 예 - 멀티 플렉서를 이용

3 4 CPU 디자인 03 공용선에 의한 레지스터 상호 연결 예

  • 여기서 각 MUX는 각각의 Register의 번지 수에 대응한다.

  • S0, S1의 입력 조합에 따라서 A-D의 레지스터 중 하나의 레지스터만이 선택된다.

공용선에 의한 레지스터 상호 연결 예 - 3-상태 버스 버퍼

3 4 CPU 디자인 04 3-상태 버스 버퍼

  • Enable 값이 0일 경우 어떠한 레지스터도 정보를 보낼 수 없으므로 이전 정보가 유지(기억)된다.
  • Enable 값이 1일 경우 S0, S1에 의하여 A-D 중 하나의 레지스터를 선택한다.

CPU 활용 자료 구조

3 4 CPU 디자인 05 스택, 큐, 데크

마이크로 명령과 ALU

마이크로 연산과 ALU

ALU (Arithmetic Logic Unit) : 산술 연산과 논리 연산

  • 주로 정수 연산을 처리
  • FPU (Floating-Point Unit) : 부동 소수 연산
  • 최근에는 ALU가 부동 소수 연산까지 처리

3.6 마이크로 연산과 ALU 01. ALU

  • Parity bit :
  • AC (Accumulator) : 처리된 결과를 일시적으로 저장하는 공간

산술 연산

3 6 마이크로 연산과 ALU 02 산술 연산

논리 연산

3 6 마이크로 연산과 ALU 03 논리 연산

  • A : Arithmetic / L : Logical / R : Rotate
  • ASL = LSL, ASR != LSR

논리 연산 예

3 6 마이크로 연산과 ALU 04 논리 연산 예

시프트 연산 예

3 6 마이크로 연산과 ALU 05 시프트 연산 예

  • MSB (Most Significant Bit) / LSB (Least Significant Bit)

마이크로 명령어 집합과 구성

명령어(instruction) 집합

실행 순서에 따른 명령어 분류

  • 순차적 실행 명령어 - 전체 명렁어의 70-80%
  • 분기 명령어
  • 부 함수 호출 명령어
  • 복귀 명령어

3 7 명령어 집합 01 명령어 분류

명령어 구문 형식

3 7 명령어 집합 01 명령어 구문 형식

  1. 명령 코드 : CPU가 실행할 수 있도록 디자인 된 연산
  2. 오퍼랜드(operand, 피연산자) : 연산에 사용되는 자료 값, 자료가 저장된 주소에 관한 정보
  3. 주소 지정 모드(addressing mode) : 오퍼랜드가 저장된 위치를 인덱싱(지정)하는 방법

명령어 집합의 설계

설계 관점 자연어에 가까운 명령 코드 기계 중심의 명령 코드
프로그램의 관점 - 프로그레밍이 용이
- 전체 프로그램의 길이 감소

- 번역기의 설계 용이
- 프로그래밍 규칙이 많아짐
- 프로그램의 길이 증가
- 번역기의 설계가 복잡해짐
CPU 구조 설계 측면 - 사용언어에 따른 구조적 차이로 인한 오동작 및 처리 어려움
- 명령어의 길이 증가
- 제어장치(ALU, Register 등)의 제어가 매우 복잡해짐
- 다양한 업체별 국가별 프로그래밍의 표준화가 가능
- 명령어의 종류 및 길이 등이 간편화
- 제어장치의 제어가 상대적으로 용이

현업에서 활용되는 명령어군의 활용 비율

명령 코드 실행 비율
load, store, move 38% :arrow_right: 자료전송 명령어
compare, add, and, sub 35% :arrow_right: 산술/논리 연산 명령어
condition branch, call, return 22% :arrow_right: 실행제어 명령어
  • 3종류의 명령어가 전체 실행 명령어의 약 90% 이상

주소 지정 모드(addressing mode)

  • 명령어의 구조상 자료가 저장되어 있는 장소를 지정하는 방법이 필요

  • 하드웨어와 소프트웨어의 독립성을 유지하여 유연한 프로그래밍(pointer, indexing 등)을 가능하게 함

  • 명령어의 수와 길이를 줄이는 세계적 표준화 기법
  • 묵시적 모드(operand가 명령어에 포함되어 있지 않은 특수 모드)
    • NOP : No OPeration, 아무 것도 하지 않으므로 오퍼랜드가 필요 없음
    • INC : 묵시적 오퍼랜드인 누산기(AC, 1을 증가시킴)의 연산 명령어
    • ADD : 스택 구조의 명령어 (스택에 오퍼랜드가 저장)

주소 지정 모드 종류

  1. Immediate addressing mode (즉시 주소 지정 방식)
    • 오퍼랜드가 명령어에 포함되어 있다. ex) MOV R1, #100
    • 장점 : 빠름
    • 단점 : 명령어 길이가 한정되어 있으므로 수의 크기에 제한이 있음
  2. Register mode
    • 오퍼랜드가 레지스터에 저장되어 있다. ex) ADD R1, R2
    • 장점 : 명령어의 주소 필드가 작아도 됨. 메모리 접근이 없어서 매우 빠름
    • 단점 : 레지스터 개수 제한
  3. Direct mode
    • 오퍼랜드가 저장된 메모리 주소를 나타냄. ex) MOV R1, 100
    • 주소공간이 제한되는 문제
  4. Indirect mode
    • 메모리를 이용하여 간접적으로 주소를 지정함. ex) MOV R1, @100; R1 :arrow_left: M[100] or M[100] :arrow_left: R1

3 8 주소 지정 모드 01 간접 주소 모드

주소 지정 모드 예제

Memory 마이크로 명령 R1에 저장된 값
3 8 주소 지정 모드 02 메모리 일부 1. MOV R1, #150
2. MOV R1, R2
3. MOV R1, 192
4. MOV R1, @191
1. Immediate adressing mode, R1 = 150,
2. Register mode, R1 = 200
3. Direct mode, R1 = 300
4. Indirect mode, R1 = 350

References

컴퓨터 공학 전공 필수 올인원 패키지 Online