Mint Flavor Chocolate DEV

CPU의 구조와 기능 본문

컴퓨터 구조

CPU의 구조와 기능

츠르e 2017. 9. 19. 01:21

CPU의 구조와 기능


CPU의 기능

  • 명렁어 인출
  • 명령어 해독
  • 데이터 인출
  • 데이터 처리
  • 데이터 쓰기

CPU의 내부 구성요소

  • ALU : 각종 산술 연산들과 논리 연산들을 수행하는 회로들로 이루어진 하드웨어 모듈
  • 레지스터 : 액세스 속도가 가장 빠른 기억장치
  • 제어 유니트 : 프로그램 코드(명령어)를 해석하고, 그것을 실행하기 위한 제어 신호들을 순차적으로 발생하는 하드웨어 모듈
  • CPU 내부 버스 : ALU와 레지스터들 간의 데이터 이동을 위한 데이터 선들과 제어 유니트로부터 발생되는 제어 신호 선들로 구성된 내부버스

명령어 실행에 필요한 내부 레지스터들

  • 프로그램 카운터(PC) : 다음에 인출할 명령어의 주소를 가지고 있는 레지스터
  • 누산기(Accumulator: AC) : 데이터를 일시적으로 저장하는 레지스터
  • 명령어 레지스터(Instruction Register : IR) : 가장 최근에 인출된 명령어 코드가 저장되어 있는 레지스터
  • 기억장치 주소 레지스터(Memory Address Register : MAR) : PC에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터
  • 기억장치 버퍼 레지스터(MBR) : 기억장치에 쓰여질 데이터 혹은 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터

인출사이클의 마이크로 연산

  • t0 : MAR ← PC
  • t1 : MBR ← M[MAR], PC ← PC + 1
  • t2 : IR ← MBR

실행 사이클의 마이크로 연산

LOAD addr 명령어

  • t0 : MAR ← IR(addr)
  • t1 : MBR ← M[MAR]
  • t2 : AC ← MBR

STA addr 명령어

  • t0 : MAR ← IR(addr)
  • t1 : MBR ← AC
  • t2 : M[MAR] ← MBR

ADD addr 명령어

  • t0 : MAR ← IR(addr)
  • t1 : MBR ← M[MAR]
  • t2 : AC ← AC + MBR

인터럽트 사이클

  • 인터럽트 : 프로그램 실행 중에 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작
  • 인터럽트 서비스 루틴(interrupt service routine :ISR) : 인터럽트를 처리하기 위하여 수행되는 프로그램 루틴

인터럽트 사이클의 마이크로 연산

  • t0 : MBR ← PC
  • t1 : MAR ← SP, PC ← ISR의 시작주소
  • t2 : M[MAR] ← MBR

다중 인터럽트

  • 인터럽트의 서비스 루틴을 수행하는 동안에 다른 인터럽트 발생
  • 다중인터럽트 처리방법
    1) CPU가 인터럽트 서비스 루틴을 처리하고 있는 도중에는 새로운 인터럽트 요구가 들어오더라도 CPU가 인터럽트 사이클을 수행하지 않도록 방지 - 인터럽트 플래그, 시스템 운영상 중요한 프로그램이나 도중에 중단할 수 없는 동작 등을 위한 인터럽트 처리

    2) 인터럽트 우선순위 선정

간접 사이클

  • 명령어에 포함되어 있는 주소를 이용하여, 그 명령어 실행에 필요한 데이터의 주소를 인출하는 사이클
  • 간접 주소지정 방식에서 사용
  • 인출 사이클과 실행 사이클 사이에 위치
  • 간접 사이클에서 수행될 마이크로-연산
  • t0 : MAR ← IR(addr)
  • t1 : MBR ← M[MAR]
  • t2 : IR(addr) ← MBR
  • 인출된 명령어의 주소 필드 내용을 이용하여 기억장치로부터 데이터의 실제 주소를 인출하여 IR의 주소 필드에 저장

명령 파이프라이닝

  • CPU의 프로그램 처리 속도를 높이기 위하여 CPU 내부 하드웨어를 여러단계로 나누어 동시에 처리하는 기술

2단계 명령어 파이프라인

  • 인출 단계와 실행 단계라는 두 개의 독립적인 파이프라인 모듈로 분리
  • 알반적으로 단계 수만큼의 속도향상 (여기선 2배)
  • 문제점 : 두 단계의 처리시간이 동일하지 않으면 두 배의 속도향상을 얻지 못함
  • 해결책 : 파이프라인의 단계의 수를 증가시켜 각 단계의 처리 시간을 같게 함

4단계 명령어 파이프라인

  • 명령어 인출, 명령어 해독, 오퍼랜드 인출, 실행 단계로 구성

파이프라인에 의한 전체 명령어 실행 시간

  • 파이프라인 단계 수 = k
  • 실행할 명령어들의 수 = N
  • 각 파이프라인 단계가 한 클럭 주기씩 걸린다고 가정한다면

    파이프라인에 의한 전체 명령어 실행 시간 T :
    T = k + (N -1)
    파이프라인 되지 않은 경우의 N개의 명령어들의 실행 시간 T :
    T = k × N

  • 예제 문제
    파이프라인 단계 수 = 4,
    파이프라인 클록 = 1GHz (각 단계에서의 소요시간 = 1 ns)일 때,
    10개의 명령어를 실행하는 경우의 속도향상은?

    <풀이>
    첫 번째 명령어 실행에 걸리는 시간 = 4 ns
    다음부터는 매 1 ns 마다 한 개씩의 명령어 실행 완료
    10개의 명령어 실행 시간 = 4 + (10 - 1) = 13 ns

    • 속도향상 = (10 × 4) / 13 ≒ 3.08 배

    [예] k = 4일 때,
    N = 100 이라면, Sp = 400/103 = 3.88
    N = 1000 이라면, Sp = 4000/1003 = 3.988
    N = 10000 이라면, Sp = 40000/10003 = 3.9988
    N → ∞ 라면, Sp = 4

파이프라인의 효율 저하 요인들

  • 모든 명령어들이 파이프라인 단계들을 모두 거치지는 않는다
  • 파이프라인의 클록은 처리 시간이 가장 오래 걸리는 단계를 기준으로 결정된다
  • IF 단계와 OF 단계가 동시에 기억장치를 액세스하는 경우에, 기억장치 충돌(memory conflict)이 일어나면 지연이 발생한다
  • 조건 분기(conditional branch) 명령어가 실행되면, 미리 인출하여 처리하던 명령어들이 무효화된다.

  • 조건분기시의 시간 흐름도

슈퍼스칼라

  • CPU의 처리 속도를 더욱 높이기 위하여 내부에 두 개 혹은 그 이상의 명령어 파이프라인들을 포함시킨 구조
  • 매 클록 주기마다 각 명령어 파이프라인이 별도의 명령어를 인출하여 동시에 실행할 수 있기 때문에,이론적으로는 프로그램 처리 속도가 파이프라인의 수만큼 향상 가능
  • 파이프라인의 수 = m : m-way 슈퍼스칼라 

  • 명령어 수 N → ∞, Sp → m

  • 슈퍼스칼라의 속도 저하 (Sp < m) 요인 :
    명령어들 간의 데이터 의존 관계
    하드웨어(ALU, 레지스터, 등) 이용에 대한 경합 발생
    → 동시 실행 가능한 명령어 수 < m

    <해결책>
    명령어 실행 순서 재배치
    → 명령어들 간의 데이터 의존성 제거 
    하드웨어 추가(중복) 설치
    → 기억장치 및 레지스터에 대한 경합 감소

서브루틴 호출을 위한 명령어들

  • CALL 명령어 : 현재의 PC 내용을 스택에 저장하고 서브루틴의 시작 주소로 분기하는 명령어
  • RET 명령어 : CPU가 원래 실행하던 프로그램으로 복귀(return)시키는 명령어

CALL X 명령어에 대한 마이크로-연산

  • t0 : MBR ← PC
  • t1 : MAR ← SP, PC ← X
  • t2 : M[MAR] ← MBR, SP ← SP - 1

현재의 PC 내용(서브루틴 수행 완료 후에 복귀할 주소)을 SP가 지정하는 스택의 최상위(top of stack)에 저장 
만약 주소지정 단위가 바이트이고 저장될 주소는 16비트라면,
SP ← SP – 2 로 변경

RET 명령어의 마이크로-연산

  • t0 : SP ← SP + 1
  • t1 : MAR ← SP
  • t2 : PC ← M[MAR]


'컴퓨터 구조' 카테고리의 다른 글

RAID의 구성 및 특성  (0) 2017.12.21
기억장치 시스템의 특성/구조  (0) 2017.12.21
제어 유니트의 구조와 기능  (0) 2017.12.21
컴퓨터의 기본구조  (2) 2017.09.19