컴퓨터구조 - CPU의 구조와 기능

델리만쥬 디퓨저·2024년 8월 10일
0

컴퓨터구조

목록 보기
2/6

CPU가 수행해야 하는 동작

  1. 명령어 인출(Instruction fetch) : 기억장치로부터 명령어를 읽어온다
  2. 명령어 해독(Instruction decode) : 수행해야 할 동작을 결정하기 위하여 명령어를 해독한다
  3. 데이터 인출(Data fetch) : 명령어 실행을 위하여 데이터가 필요한 경우에는 기억장치 혹은 I/O 장치로부터 그 데이터를 읽어온다
  4. 데이터 처리(Data process) : 데이터에 대한 산술적 혹은 논리적 연산을 수행한다
  5. 데이터 저장(Data store) : 수행한 결과를 저장한다
  • 첫 번째 및 두 번째 동작은 모든 명령어들에 대하여 공통적으로 수행
  • 세 번째부터 다섯 번째까지 동작들은 명령어에 따라 필요한 경우에만 수행

CPU의 기본 구조

  • 산술논리연산장치(Arithmetic and Logical Unit, ALU)
    - 산술 연산들과 논리 연산들을 수행하는 회로들로 이루어진 하드웨어 모듈
    - AND, OR, NOT 연산 등
  • 레지스터
    - CPU 내부에 위치한 기억장치
    - 액세스 속도가 컴퓨터의 기억장치 중에서 가장 빠르다
    - 내부 회로가 복잡하여 큰 공간을 차지하므로 많은 수를 CPU 내에 포함시키기 어렵다
    - 따라서 특수 목적용 레지스터들과 적은 수의 일반 목적용 레지스터로 구성
  • 제어 유니트
    - 프로그램 코드(명령어)를 해석하고, 그것을 실행하기 위한 제어 신호들(control signals)을 순차적으로 발생시키는 하드웨어 모듈
    - 명령어 실행에 필요한 각종 정보들의 전송 통로와 방향을 지정
    - CPU 내부 요소들과 시스템 구성 요소들의 동작 시간도 결정
  • CPU 내부 버스
    - ALU와 레지스터들 간의 데이터 이동을 위한 데이터 선들과 주소 선들, 제어 유니트로부터 발생되는 제어 신호들을 전송하는 선들로 구성
    - 이러한 내부 버스 선들은 외부의 시스템 버스와는 직접 연결되지 않으며, 반드시 버퍼 레지터 혹은 인터페이스 회로를 통하여 시스템 버스와 접속

명령어 실행

  • 한 개의 명령어를 실행하는데 필요한 전체 과정을 명령어 사이클(instruction cycle) 이라 부른다
  • 명령어 인출(instruction fetch) 단계와 명령어 실행(execution) 단계로 구성

CPU 내부 레지스터

  • 프로그램 카운터(Program Counter: PC)
    - 다음에 인출될 명령어의 주소를 가지고 있는 레지스터
    - 각 명령어 인출 후에 자동으로 1 증가
    - 분기(branch) 명령어가 실행되는 경우 그 목적지 주소로 갱신
  • 누산기(Accumulator: AC)
    - 데이터를 일시적으로 저장하는 레지스터
  • 명령어 레지스터(Instruction Register: IR)
    - 가장 최근에 인출된 명령어가 저장되어 있는 레지스터
  • 기억장치 주소 레지스터(Memory Address Register: MAR)
    - 프로그램 카운터(PC)에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터
    - 즉, 이 레지스터의 출력 선들이 주소 버스 선들과 직접 접속
  • 기억장치 버퍼 레지스터(Memory Buffer Register: MBR)
    - 기억장치에 저장될 데이터 혹은 기억장치로부터 읽혀진 데이터가 일시적으로 저장되는 버 레지스터
    - 이 레지스터의 입력 및 출력 선들은 데이터 버스 선들과 직접 접속

인출 사이클

  • CPU는 프로그램 카운터(PC)가 가리키는 기억장치의 위치로부터 명령어를 인출해 온다
  • CPU는 PC의 내용을 1 증가시킴으로써 명령어들을 기억장치에 저장되어 있는 순서대로 읽어올 수 있도록 해준다
  1. 어떤 컴퓨터에서 현재 PC의 내용이 '215'다
  2. 명령어 사이클이 시작되면 CPU는 기억장치의 215번지에 저장되어 있는 명령어를 인출한다
  3. PC의 내용을 '216'으로 증가시킨다
  4. 이러한 과정들을 반복하며 PC를 증가시키며 차례때로 명령어들을 인출한다
  • 마이크로 연산은 다음과 같다
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR

실행 사이클

  • CPU가 인출된 명령어 코드를 해독(decode)하고, 그 결과에 따라 필요한 연산을 수행
  • 데이터 이동/처리/저장/제어 연산을 수행
  • ADD addr 명령어 연산
T0 : MAR ← IR(Addr)
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
  1. 첫 번째 주기에서 명령어 레지스터 IR에 적재된 명령어의 오퍼랜드인 주소 (addr)를 통하여 MAR를 통하여 기억장치로 보낸다
  2. 두 번째 주기에서는 그 주소가 지정하는 기억 장소로부터 데이터를 인출하여 MBR에 저장한다
  3. 그 데이터를 세 번째 주기에 AC 레지스터에 적재함으로써 LOAD 명령어의 실행이 완료된다.
profile
< 너만의 듀얼을 해!!! )

0개의 댓글