본문 바로가기
CS/컴퓨터 구조

[Chapter 4.1 컴퓨터 구조 및 설계] 프로세서 구현에 대한 개요 (명령어는 하드웨어에서 어떻게 실행되는가)

by 베어 그릴스 2022. 7. 17.
본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson, 존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다.

 

CPU 성능을 결정 짓는 요소


명령어의 수 - ISA ( 명령어 집합 구조 Instruction set Architecture ), compiler에 의해 결정 된다.

 

CPI, Cycle Time - CPU hardware(프로세서의 구현 방법)에 따라 결정된다.

 

본 4장은 이 프로세서를 구현하는데 사용되는 원리와 기법에 대한 설명을 포함한다. 

 

 

명령어의 실행


2장에서 정수형 산술/논리 명령어, 메모리 참조 명령어, 분기 명령어를 포함하는 핵심적인 MIPS 명령어들을 살펴 보았다.

 

어떤 명령어이든지 명령어 실행 단계는 다음과 같이 모두 동일하다.

 

  1. 프로그램 카운터(PC)를 프로그램이 저장되어 있는 메모리에 보내어 메모리로부터 명령어를 가져온다. (이후 자동으로 PC = PC +4를 진행하여 다음 명령어의 주소를 담고 있게끔 한다.)
  2. 읽을 레지스터를 선택하는 명령어 필드를 사용하여 하나 또는 두 개의 레지스터를 읽는다. 워드 적재 명령어는 레지스터 하나만 읽으면 되지만 대부분의 다른 명령어는 레지스터 두 개를 읽는다. (Decode)
  3. 명령어에 해당하는 작업을 수행한다. (execute)

 Execute 할 때에는 Decode한 것을 기반으로 알맞은 작업을 해야한다.

 

rs rt field에 들어있는 레지스터 번호를 알맞게 레지스터 파일에 넘겨주거나,ALU 하드웨어에 알맞은 연산 ( 빼기, 더하기, and, or 등)을 시키고 메모리로 부터 load or store 시키는 등의 작업을 알맞게 해야한다,

 

CPU overview

위 그림을 보면 명령어가 대략 어떤 과정을 거쳐서 실행되는지 알 수 있다.

 

서로 다른 근원지에서 나온 데이터가 같은 유닛으로 가는 곳이 몇 군데 있다. 예를 들면 PC에 들어갈 값은 두 덧셈기 중 하나에서 나오고, 레지스터 파일에 쓰일 데이터는 ALU나 데이터 메모리에서 나오며, ALU의 두 번째 입력은 레지스터나 명령어의 수치 필드에서 나온다. 

 

이럴 땐 다른 데이터 중 하나를 선택 하여야 하는데, 이 같은 선택은 일반적으로 멀티플렉서라 불리는 소자를 사용하여 이루어진다.

 

multiplexer - 여러가지 데이터 중 하나를 뽑아 선택할 수 있는 회로.

 

 

또한, 각 유닛들은 명령어마다 다르게 제어되어야 하고, multiplexer에 어떤 데이터를 선택할 지도 정해야한다. 이를 contol unit이 도맡아서 하게 된다.

Multiflexer와 control unit을 포함한 CPU overview

제어 유닛(control unit)은 기능 유닛들과 두 멀티 플렉서의 제어선 값을 결정하는 데 사용하는 것으로, 명령어를 입력으로 한다.

ex) beq의 분기 명령어에 의해 해당 Label 주소로 점프할지 아니면 PC+4의 주소 값을 사용할지 정하는 multiplexer 를 제어한다.