이전 게시글에서 총 하드웨어의 기본 구성 및 설명을 다루었다. 이번에는 하드웨어 중에서 가장 중요한 역할을 맡고 있는 CPU에 대해서 좀 더 알아보려고 한다.

 

- CPU의 기능

    • 명령어 인출(Instruction Fetch)
      기억장치로부터 명령을 읽어온다. 혹은 가지고 온다. (데이터, 주소)
    • 명령어 해독(Instruction Decode)
      수행해야 할 동작을 결정하기 위하여 인출된 명령어를 해독한다.
    • 데이터 인출(Data Fetch)
      명령어 실행을 위해 데이터가 필요한 경우에는 기억 장치 또는 입출력 장치로부터 그 데이터를 읽어온다.
    • 데이터 처리(Data Process)
      데이터에 대한 산술적 또는 논리적 연산을 수행한다.
    • 데이터 저장(Data Store)
      수행한 결과를 저장한다.

위의 기능들 중에서 빨간색으로 표시한 내용은 모든 명령에 공통으로 수행되지만, 파란색으로 표시한 내용은 필요한 경우에만 실행된다.

- CPU의 내부 구조

    • 산술 논리 장치(ALU)
      각종 산술 연산들과 논리 연산들을 수행하는 회로들로 이루어진 하드웨어 모듈이다. 사칙연산과 같은 산술연산 그리고 AND, OR, NOT, XOR 등과 같은 논리 연산 및 >, <, = 등과 같은 관계 연산, 비교 연산을 수행한다.

    • 레지스터 세트(register set)
      CPU 내부 레지스터들의 집합이다. 기억장치들 중에서 액세스 속도가 가장 빠르며, CPU 내부에 포함할 수 있는 레지스터들의 수가 제한된다. 따라서 레지스터는 전용 레지스터와 범용 레지스터로 나뉜다. 또한 레지스터에 저장되는 종류에 따라서 데이터 레지스터, 주소 레지스터, 상태 레지스터로 구분한다.

      • 프로그램 카운터(PC : Program Counter)
        다음에 인출한 명령어의 주소를 가지고 있는 레지스터이다. 프로그램 카운터는 분기(branch) 명령어가 실행될 때 목적지 주소로 갱신(목적지가 변경)된다.

      • 누산기(AC : Accumulator)
        데이터를 일시적으로 저장하는 레지스터이다.

      • 명령어 레지스터(IR : Instruction Register)
        가장 최근에 인출된 명령어 코드가 저장되어 있는 레지스터이다.

      • 기억 장치 주소 레지스터(MAR : Memory Address Register)
        프로그램 카운터(PC)에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터이다.

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

위의 레지스터 세트를 그림으로 나타내면 아래와 같이 나타낼 수 있다. 

[ CPU 내부 구조 ]

 

그림에서 보다시피 CPU 내부에는 해당 기능을 담당하는 레지스터들이 배치되어 있다. 그리고 이러한 레지스터들은 각각의 데이터 혹은 명령어를 저장하고 입출력을 하며 메인 메모리로 값을 전달하고 전달받는다.

    • 제어유니트(제어 장치)
      프로그램 코드(명령어)를 해석하고, 그것을 실행하는 제어 신호(Control Signals)가 순차적으로 발생하는 하드웨어 모듈

    • 내부 CPU 버스(Internal CPU bus)
      ALU와 레지스터들 간의 데이터 이동을 위해 데이터 선들과 제어 유니트로부터 발생하는 제어 신호 선들로 구성된 내부 버스이다. 외부의 시스템 버스들과는 직접 연결되지 않으며, 반드시 버퍼 레지스터(MBR) 혹은 시스템 버스 인터페이스 회로를 통하여 시스템 버스와 접속한다.

 

Posted by doubler
,