CS/전자계산기구조론

중앙처리장치(CPU) - 명령실행과 제어, 마이크로 오퍼레이션

망재이 2024. 1. 23. 13:30
  • 명령어 실행을 위해 기본적으로 필요한 CPU 내부 레지스터
  • 프로그램 카운터 (Program Counter; PC)
    - 다음에 인출할 명령어의 주소를 가짐
    - 명령어가 인출된 후 자동적으로 1 또는 명령어 길이만큼 증가
    - 분기 명령어 실행 시 그 목적지 주소로 바뀜

  • 명령어 레지스터 (Instruction Register; IR)
    - 가장 최근에 인출된 명령어가 저장되어 있음

  • 누산기 (Accumulator; AC)
    - 데이터를 일시적으로 저장
    - CPU가 한 번에 처리할 수 있는 데이터 비트 수, 즉 단어 길이와 같음

  • 기억장치 주소 레지스터 (Memory Address Register; MAR)
    - PC 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터

  • 기억장치 버퍼 레지스터 (Memory Buffer Register; MBR)
    - 기억장치에 쓰여질 데이터 혹은 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터

더보기

Q. 기억장치가 1024 워드(word)로 구성되어 있고, 각 워드는 16비트(bit)로 구성되어 있다고 가정할 때, PC, MAR, MBR의 비트수를 옳게 나타낸 것은?

1. PC:10, MAR:10, MBR:10

2. PC:10, MAR:10, MBR:16

3. PC:16, MAR:10, MBR:16

4. PC:16, MAR:16, MBR:16

 

-> 기억장치가 1024 워드로 구성되어 있다면 PC와 MAR는 10bit(2^10 = 1024, 10bit로 주소 구분 가능)일 것이고, MBR은 워드 크기인 16비트와 같습니다.

 

 

  • 마이크로 오퍼레이션
    - 프로그램은 여러 명령어 사이클을 수행
    - 명령어 사이클은 인출 사이클, 간접 사이클, 실행 사이클, 인터럽트 사이클로 구성
    - 각 사이클들은 마이크로 오퍼레이션으로 구성
    - 마이크로 오퍼레이션은 각 사이클의 단계에서 실제 수행되는 동작으로 프로그램 수행에서 가장 기본 단위의 수행
  • 인출 사이클 (fetch cycle)
    - 기억장치의 지정된 위치로부터 명령어를 읽어오는 과정
t0 MAR <- PC
현재의 PC 내용을 CPU 내부 버스를 통해 MAR로 보냄
t1 MBR <- M[MAR], PC <- PC + 1
주소가 지정하는 기억장치로부터 읽혀진 명령어가 데이터 버스를 통해 MBR에 적재
PC의 내용에 1을 더하여 다음 명령어의 주소를 가리키게 함
t2 IR <- MBR
MBR에 저장되어 있는 명령어가 명령어 레지스터인 IR로 이동
  • 실행 사이클 (execute cycle)
    - 명령어를 실제적으로 실행하는 단계
    - 데이터 이동 : CPU와 기억장치 또는 CPU와 I/O 장치 사이에 데이터를 이동 (LOAD)
t0 MAR <- IR(addr)
IR의 오퍼랜드(주소)를 MAR로 보냄
t1 MBR <- M[MAR]
주소가 가리키는 기억장소로부터 데이터를 인출하여 MBR로 보냄
t2 IR <- MBR
MBR에 저장되어 있는 명령어가 명령어 레지스터인 IR로 이동


    - 데이터 처리 : 데이터에 대해 산술 또는 논리연산을 수행 (ADD)

t0 MAR <- IR(addr)
IR의 오퍼랜드(주소)를 MAR로 보냄
t1 MBR <- M[MAR]
주소가 가리키는 기억장소로부터 데이터를 인출하여 MBR로 보냄
t2 AC <- AC + MBR
데이터와 AC의 내용을 더하고 결과를 다시 AC에 저장

 

    - 데이터 저장 : 연산 결과 데이터 혹은 입력장치로부터 읽어들인 데이터를 기억장치에 저장 (STORE)

t0 MAR <- IR(addr)
데이터를 저장할 기억장치의 주소를 MAR로 보냄
t1 MBR <- AC
저장할 데이터를 MBR로 보냄
t2 M[MAR] <- MBR
MBR의 내용을 MAR이 지정하는 기억 장소에 저장

 

    - 제어 : 프로그램의 실행 순서로 결정

t0 PC <- IR(addr)
분기할 목적지의 주소가 PC로 적재

 

  • 간접 사이클 (indirect cycle)
    - 간접 주소를 사용할 경우 실행 사이클이 시작되기 전에 유효주소를 기억장치로부터 읽어와 IR의 오퍼랜드에 저장
    - 인출 사이클과 실행 사이클 사이에 위치
t0 MAR <- IR(addr)
명령어의 오퍼랜드를 MAR로 보냄
t1 MBR <- M[MAR]
MAR이 가리키는 기억장치의 내용(데이터의 실제 주소)를 MBR로 보냄
t2 IR(addr) <- MBR
데이터의 실제 주소를 명령어의 오퍼랜드에 넣음

 

  • 인터럽트 사이클 (interrupt cycle)
    - CPU는 한 명령어의 실행 사이클을 종료하고 다음 명령어를 위한 인출 사이클을 시작하기 전에 인터럽트 요구 신호가 대기 중인지를 검사
    - 인터럽트 요구가 들어왔다면 현재의 명령어 실행을 끝내고, 다음에 실행할 명령어의 주소(PC)를 스택에 저장
    - 인터럽트 서비스 루틴을 호출하기 위해 루틴의 시작주소에 PC를 적재! 시작주소는 인터럽트를 요구한 장치로부터 전송되거나 미리 정해진 값으로 결정
t0 MBR <- PC
주프로그램에서 수행될 다음 명령어의 주소를 MBR로 전송
t1 MAR <- SP, PC <- ISR(인터럽트 서비스 루틴)의 시작 주소
SP(stack pointer)의 내용을 MAR로 전송
PC의 내용은 인터럽트 서비스 루틴의 시작주소로 변경
t2 M[MAR] <- MBR
MBR에 저장되어 있던 원래 PC의 값(복귀주소)을 스택에 저장

 

  • 마이크로 오퍼레이션 사이클 타임
    - 동기 고정식
    : 마이크로 오퍼레이션 사이클 타임 중에서 수행시간이 가장 긴 것으로 CPU Clock 주기를 정하는 방식
    : 마이크로 오퍼레이션 사이클 타임이 모두 같으므로 제어기를 구현하기 쉬움
    : 마이크로 오퍼레이션 사이클 타임이 현저한 차이가 날 때 시간 낭비가 생김
    - 동기 가변식
    : 마이크로 오퍼레이션 사이클 타임이 현저한 차이가 날 때 수행시간이 유사한 것끼리 모아서 하나의 군을 만들고, 그 군에 대하여 서로 다른 마이크로 사이클 타임을 주는 방식
    : 마이크로 오퍼레이션 사이클 타임이 현저한 차이가 날 때 동기 고정식보다 시간 낭비를 줄일 수 있음
    : 제어기가 조금 복잡하므로 제어기 설계가 조금 어려움
    - 비동기식
    : 원하는 만큼의 cycle time을 각각 할당하는 방법
    : CPU 시간의 낭비는 발생하지 않으나 제어가 복잡하므로 거의 사용되지 않음

 

 

 

 

 

 

※ 참고

2024.01.22 - [CS/컴퓨터구조] - 중앙처리장치(CPU) - 제어장치

 

중앙처리장치(CPU) - 제어장치

중앙처리장치의 구성요소와 역할 - 산술 논리 연산장치 (ALU) : 각종 연산을 실행 - 레지스터 세트 : 데이터를 임시 저장하는 기능 수행 - 제어 장치 : 명령을 해독하고 제어신호를 발생하여 제어

mangs2e.tistory.com

2024.01.23 - [CS/컴퓨터구조] - 중앙처리장치(CPU) - 연산장치, 인터럽트

 

중앙처리장치(CPU) - 연산장치, 인터럽트

연산장치 - 제어장치의 지시에 따라 사칙연산과 수식의 참, 거짓을 판단하는 논리 연산을 수행하는 장치 - 누산기, 가산기, 데이터 레지스터, 상태 레지서트 등으로 구성 - 상태 레지스터의 상태

mangs2e.tistory.com

 

728x90