시냅스

CPU의 구조와 기능 본문

컴퓨터구조

CPU의 구조와 기능

ted k 2022. 8. 2. 21:14

CPU가 수행하는 동작들

  • 명령어 인출 Instruction fetch
  • 명령어 해독 Instruction decode
    • 위 두 항목은 무조건 수행
  • 데이터 인출 Data fetch
  • 데이터 처리 Data process (산술적 연산)
  • 데이터 저장 Data store
    • 위 세 항목은 선택적 수행

 

CPU 기본 구조

  • 산술논리연산장치 Arithmetic and Logical Unit : ALU
    • 사칙연산
    • 논리연산 (And, or, not...etc)
  • 레지스터 세트 Register set
    • CPU 내부에 있는 가장 빠른 저장장치
    • CPU 가 임시로 저장하는 공간
    • 특수목적/일반목적 레지스터
  • 제어 유니트 Control unit
    • 인출된 명령어를 해독하고 제어 신호를 발생시키는 유니트
  • CPU 내부 버스
    • CPU의 내부 버스는 외부의 시스템 버스와 직접적으로 연결되지 않는다.
    • 버퍼 레지스터 혹은 시스템 버스 인터페이스 회로를 통해 시스템 버스와 연결

 

명령어 실행

 

  • 명령어 사이클 Instruction cycle
    • CPU가 한 개의 명령어를  실행하는 데 필요한 전체 과정
      • 인출(fetch) 사이클 
        • 기억장치로 부터 명령어를 읽어오는 단계
      • 실행(excution) 사이클
        • 인출된 명령어를 실행하는 단계
  • 명령어 실행에 필요한 CPU 내부 레지스터
    • 프로그램 카운터 PC : Program Counter
      • 다음에 인출될 명령어의 주소
    • 누산기 AC : Accumulater
      • CPU 내 데이터를 일시적으로 저장
    • 명령어 레지스터 IR : Instruction Register
      • 가장 최근에 인출된 명령어를 보관해서 저장한다.
    • 기억장치 주소 레지스터 MAR : Memory Address Register
      • PC의 명령어 주소가 시스템 주소버스에 출력되기 전에 일시적으로 저장한다.
    • 기억장치 버퍼 레지스터 MBR : Memory Buffer Register
      • 데이터 버스와 직접 접속
      • 기억장치에 저장, 읽어올 데이터가 CPU 내부에서 일시적으로 저장되는 레지스터

 

  • 인출 사이클 fetch cycle
    • CPU가 기억장치의 지정된 위치로부터 명령어를 읽어오는 과정
    • 마이크로 연산 micro operation
      • CPU 클록의 각 주기 동안 수행되는 기본적인 동장
    • 인출 사이클 단계별 마이크로 연산
    • t0 : MAR <- PC 
    • t1 : MBR <- M[MAR], PC <- PC + 1
    • t2 : IR <- MBR

 

 

 

  • 실행 사이클 excution cycle
    • CPU가 명령어를 해독하고 그 결과에 따라 필요한 연산들을 수행
    • CPU가 수행하는 연산 종류
      • 데이터 이동
      • 데이터 처리
      • 데이터 저장
      • 프로그램 제어
    • LOAD addr
      • t0 : MAR <- IR(addr)
      • t1 : MBR <- M[MAR]
      • t2 : AC <- MBR
    • STA addr (store)
      • 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

 

 

  • 인터럽트 사이클 Interrupt cycle
    • 인터럽트 요구가 들어왔는지 검사하고, 그처리에 필요한 동작들을 수행하는 과정
    • 인터럽트
      • 프로그램 실행 중에 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동장
    • 인터럽트 서비스 루틴 ISR
      • 인터럽트 요구를 처리해주기 위해 수행하는 프로그램 루틴

  • 간접 사이클 Indirect cycle
    • 실행 사이클에서 사용될 데이터의 실제 주소를 기억장치로부터 읽어오는 과정
    • 간접 주소지정 방식에서 사용
    • 인출 사이클과 실행 사이클 사이에 위치

 

명령어 파이프라이닝

  • 명령어 실행에 사용되는 하드웨어를 여러 단계로 분할하여 처리속도를 높여주는 기술
    • 2단계 명령어 파이프라이닝
    • 4단계 명령어 파이프라이닝
    • RISC에서 주로 쓰이는 기법
    • CISC에서는 VLIW 사용

 

2단계 명령어 파이프라인 시간 흐름

  • 명령어의 길이를 클록 주기에 맞춤
  • 명령어가 실행되는 동작 시간을 클록 주기에 맞춤
  • 이론적으론 2배이나, 현실적으로 적용되지 않음

 

4단계 명령어 파이프라인 시간 흐름

  • 명령어 인출 IF : Instruction fetch
  • 명령어 해독 ID : Instruction decode
  • 피연산자 인출 OF : operand fetch
  • 실행 EX : excute

 

슈퍼스칼라 Superscalar

  • 한번에 처리하는 양을 늘린다
  • 프로세스 내 ALU를 여러개 배치하여 한 개 이상의 명령어가 동시에 수행

 

VLIW Very Large Instruction Word

  • 동시에 실행할 수 있는 명령어들을 컴파일러가 찾아서 하나의 명령어로 압축
  • 실행할 때는 여러개의 ALU가 분산해서 실행

 

Pipeline Hazard

  • Structural hazard
    • 명령어 두 개 이상이 동시에 같은 프로세서 하드웨어에 요청할 때
  • Data hazard
    • 두 번째 명령어의 결과가 첫 번째 명령어에 의존성이 있는 경우
  • Control hazard
    • 프로세스가 분기 명령어를 만났을 때 나머지 명령어를 버리는 경우

 

명령어 세트

  • 어떤 CPU를 위해 정의되어 있는 명령어들의 집합
  • 명령어 세트 설계를 위한 결정 사항
    • 연산 종류 operation repertoire
      • 데이터 전송
        • 레지스터와 레지스터 간 레지스터와 기억장치 간 또는 기억장치와 기억장치 간에 데이터를 이동하는 동작
      • 사칙 연산
      • 논리 연산
      • 입출력 I/O
        • CPU와 외부 장치들 간의 데이터 이동을 위한 동작
      • 프로그램 제어 : 명령어 실행 순서를 변경하는 연산
        • 분기
        • 서브루틴 호출
          • CALL
          • RET
    • 데이터 유형 data type
    • 명령어 형식 instruction format
      • CISC Complex Instruction Set Computer
        • 다음 세대가 나올 때마다 명령어 개수 추가
        • 명령어의 길이가 가변적
        • 명령어 개수가 많다
      • RISC Reduced Instruction Set Computer
        • 명령어 세트를 단순화
        • 단순한 여러가지 명령어를 조합
        • 명령어의 길이가 고정됨
    • 주소지정 방식 addressing mode
      • 직접 주소지정 방식
      • 간접 주소지정 방식
      • 묵시적 주소지정 방식
      • 즉시 주소지정 방식
      • 레지스터 주소지정 방식
      • 레지스터 간접 주소지정 방식
      • 변위 주소지정 방식
        • 상대 주소지정 방식
        • 인덱스 주소지정 방식
        • 베이스-레지스터 주소지정 방식
    • 명령어 구성요소
      • 연산 코드 operation code
        • 수행될 연산을 지정
      • 오퍼랜드 operand
        • 연산을 수행하는 데 필요한 데이터 혹은 데이터의 주소
      • 다음 명령어 주소 next instruction address
        • 현재의 명령어 실행이 완료된 후에 다음 명령어를 인출할 위치

 

컴퓨터 산술과 논리 연산

산술논리연산장치 Arithmetic and Logical Unit ALU

  • CPU 내부의 핵심 구성요소로서, 산술 연산과 논리 연산을 수행하는 하드웨어 모듈
  • ALU의 구성요소
    • 산술 연산장치
    • 논리 연산장치
      • AND
      • OR
      • XOR
      • NOT
      • 선택적-세트 연산
        • 특정 비트를 1로 셋
      • 선택적-보수 연산
        • 특정 비트들을 보수화
      • 마스크 연산
        • 특정 비트들을 0으로 리셋
      • 삽입 연산
        • 일부 비트들을 새로운 값들로 대체
      • 비교 연산
    • 시프트 레지스터 shirt register
      • 논리적 시프트 logical shift
        • 왼쪽 오른쪽으로 이동
      • 순환 시프트 circular shift
        • 논리적 시프트와 같지만 최상위 혹은 최하위 비트를 반대편 끝으로 이동
      • 산술적 시프트 arithmetic shift
        • 부호를 가진 데이터에 대한 시프트 동작
      • C 플래그를 포함한 시프트 연산
        • 실제 CPU에서는 일반적으로 시프트 연산에 올림수(C) 플래그가 포함
    • 보수기 complementer
    • 상태 레지스터 status register
      • 연산 결과의 상태를 flag로 저장

정수의 표현

  • 2진수 체계 : 0, 1, 부호 및 소수점으로 수를 표현
  • 부호 비트
  • 음수 표현 방법
    • 부호화-크기 표현
    • 1의 보수 표현
      • 모든 비트 반전
    • 2의 보수 표현
      • MSB -> sign bit
      • 1과 0을 반전한 값에 1을 더함
      • 음수 표현 및 쉬운 연산을 위함
      • 보수를 취하고 더하면 뺄셈이 됨
      • 실제로 사용

 

제어 유니트 Control Unit

  • 명령어 코드의 해동
  • 명령어 실행에 필요한 제어 신호들의 발생

 

명령어 사이클 제어

  • 마이크로명령어 (microinstruction), 제어 단어 (control word)
    • 명령어 사이클의 각 주기에서 실행되는 마이크로-연산들에 대응되는 비트들로 이루어진 단어
  • 마이크로프로그램 microprogram
    • 마이크로 명령어들의 집합
  • 루틴 routine
    • CPU의 특정 기능을 수행하기 위한 마이크로 프로그램

 

제어 유니트의 구조

 

  • 명령어 해독기 instruction decoder
    • 명령어의 연산코드 OP code만 해독해서 연산을 수행하기 위한 루틴의 시작 주소 지정
  • 제어 주소 레지스터 CAR : control address register 
    • 다음에 수행할 제어유니트 안의 마이크로 명령어의 주소를 저장하기 위한 레지스터
    • 제어 기억장치의 위치를 가리킴
  • 제어 기억장치 control memory
    • 마이크로 프로그램을 저장하는 제어 유니트 내부의 기억 장치
  • 제어 버퍼 레지스터 CBR control buffer register
    • MBR 처럼 제어 기억장치로 부터 읽혀진 마이크로 명령어를 저장하기 위한 레지스터
  • 서브루틴 레지스터 SBR subroutine register
    • 마이크로 프로그램에서 서브 루틴이 호출되는 경우에 CAR의 내용을 일시적으로 저장하는 레지스터
  • 순서제어 모듈 sequencing module
    • 마이크로 명령어의 실행 순서를 결정하는 회로

 

CPU 명령어 세트 설계

  • 명령어들의 종류 및 비트 패턴 정의
  • 명령어들의 실행에 필요한 하드웨어 설계
  • 각 명령어를 위한 실행 사이클 루틴 작성 (마이크로프로그래밍)
  • 마이크로프로그램은 CPU 설계 단계에서 확정되고, 그 후에는 변하지 않음
    • 마이크로프로그램을 저장하는 제어 기억장치는 ROM으로 만들어져 CPU 칩 내에 포함

 

제어 기억장치의 내부 구성

  • 128 word CPU
  • 처음 절반, 64 까지는 공통 루틴
  • 뒷부분은 인출한 코드에 따라 루틴을 저장

 

연산 코드를 이용한 루틴 주소의 사상

  • IR로 적재된 명령어 비트 중 명령어 코드 OPcode만 제어 유니트의 해독기로 들어온다.
  • 해당하는 루틴을 수행하면서 실행된다.
  • 연산 코드 = 0001 -> 실행 사이클 루틴의 시작 주소 = 1000100 (68)
  • 연산 코드 = 0110 -> 실행 사이클 루틴의 시작 주소 = 1011000 (88)

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

컴퓨터구조 기억장치의 분류와 특성  (0) 2022.08.05
ARM (Adavanced RISC Machine) 이란?  (0) 2022.07.17
컴퓨터 구조 기초  (0) 2022.07.10
명령어: 컴퓨터 언어  (0) 2022.07.02
컴퓨터 추상화 및 관련 기술  (0) 2022.06.13
Comments