Computer Science/Computer Architecture

[컴퓨터 구조] CPU의 구조와 기능 2

kyxxn 2023. 11. 12. 18:50
728x90

클록(Clock)

: CPU를 비롯한 컴퓨터의 모든 부품이 일정한 속도로 작동하기 위한 전기적 진동(Pulse)

클록 발생기가 클록을 만들며, 클록 수가 클수록 컴퓨터의 처리 속도가 빠름

클록 주파수(Hz 단위)

: 1초에 클록이 몇 번 발생하는 지를 의미한다.

1초에 1번 클록이 발생하면 클록 주파수는 1Hz

1초에 10^9번 클록이 발생하면 클록 주파수는 1GHz

클록 주기 : 한 신호 뒤에서 다음 신호가 올 때까지의 간격

마이크로 연산

: CPU 클록의 각 주기 동안 수행되는 기본 단위 동작

 

 

명령어 인출 사이클

목표 : 명령 레지스터(IR)에 명령어를 꺼내와 적재 하는 것이 목표

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

  1. T0 = MAR ← PC
    PC가 지정하는 명령어의 주소가 CPU 내부 버스를 통해 MAR로 이동
  2. T1 = MBR ← M[MAR], PC ← PC + 1 (단어 / 주소지정단위)
    MAR에 저장된 명령어의 주소가 기억장치로 이동, 해당 주소의 명령어를 읽어 데이터 버스를 통해 MBR에 적재함과 동시에 PC에 단어/주소지정단위 만큼 더함
  3. T2 = IR ← MBR
    MBR에 있는 명령어가 명령어 레지스터인 IR로 이동

 

명령어 실행 사이클

: CPU는 실행사이클 동안 명령어 코드를 해독(decode)하고, 그 결과에 따라 필요한 연산들을 수행

CPU가 수행하는 연산들의 종류

  1. 데이터 이동 : CPU와 기억장치 간 혹은 I/O 장치 간에 데이터를 이동 (Load, addr)
  2. 데이터 처리 : 데이터에 대해 산술 혹은 논리 연산을 수행 (ADD)
  3. 데이터 저장 : 연산 결과 데이터 || 입력장치로부터 읽어들인 데이터를 기억장치에 저장 (STA)
  4. 프로그램 제어 : 프로그램의 실행 순서를 결정

실행 사이클에서 수행되는 마이크로 연산들은 명령어의 연산코드(OP code)에 따라 결정됨

LOAD, addr 명령어

: 기억장치에 저장되어 있는 데이터를 CPU 내부 레지스터인 AC로 이동하는 명령어

  1. T0 = MAR ← IR(오퍼랜드 addr)
    명령어 레지스터에 있는 명령어의 주소(오퍼랜드 부분)를 MAR로 전송
  2. T1 = MBR ← M[MAR]
    기억장치의 해당 주소에 있는 데이터를 데이터 버스를 통해 MBR에 적재
  3. T2 = AC ← MBR
    누산기에 해당 데이터를 적재함

CPU 클록이 2GHz인 경우, 클록 주기 및 LOAD 명령어 수행시간

클록의 주기 = 1s/(2 * 10^9) = 0.5ns

인출 및 실행 사이클 = 0.5ns * (3 + 3) = 3.0ns

ADD, addr 명령어

: 기억장치에 있는 데이터를 불러와 AC에 더하고, 그 결과를 다시 AC에 저장

  1. T0 = MAR ← IR(addr)
    명령어 레지스터에 있는 명령어의 주소(addr)을 MAR에 적재
  2. T1 = MBR ← M[MAR]
    기억장치의 해당 주소에 있는 데이터를 MBR에 적재
  3. T2 = AC ← AC + MBR
    AC에 있는 데이터와 MBR에 있는 데이터를 더해 다시 AC에 저장

STA(STOR), addr 명령어

: AC 레지스터의 내용을 기억장치에 저장하는 명령어

  1. T0 = MAR ← IR(addr)
    명령어 레지스터의 명령어 주소(오퍼랜드)를 MAR로 넘겨줌
  2. T1 = MBR ← ACMBR은 양방향
    누산기의 데이터를 MBR로 이동.
  3. T2 = M[MAR] ← MBR
    CPU가 주소버스에 저장할 위치를, 데이터 버스에 MBR의 데이터를 넣어 해당 위치에 저장

Jump, addr 명령어

: 오퍼랜드(addr)가 가리키는 위치의 명령어로 실행 순서를 변경하는 분기(branch) 명령어 (제어 명령어)

  1. T0 = PC ← IR(addr)
    명령어 레지스터에 적재된 명령어 오퍼랜드 부분(분기할 목적지 주소)을 PC에 넣어줌

다음 명령어 인출 사이클에서 그 주소의 명령어가 인출되므로, 분기가 발생

Q. CPU 클록이 4GHz인 경우, 클럭 주기 및 Jump 명령어 수행시간

클록주기 : 1s/(4*10^9) = 0.25ns

인출 및 실행 사이클 = 0.25ns * (명령어인출 3 + 분기 1) = 1.0ns