CPU

aisle333·2024년 6월 4일

컴퓨터 공학

목록 보기
17/19

The Central Processing Unit (CPU)

Instruction 을 해석하여 실행하는 장치이며 컴퓨터의 두뇌에 해당.

Registers

주로 CPU 내에서 data를 저장하고 있는 memory를 가르킴.
가장 빠른 memory이며, CPU의 구성요소.

  • condition code register : overflow, underflow
  • program counter (pc) : 다음 수행할 instruction이 저장된 메모리 -위치를 가르킴.
  • accumulator : ALU의 operation의 result가 저장되는 register.
  • address extension register : 주소확장레지스터, MSB를 포함하는 상위주소 부분을 지정하는 데에 사용됨.
  • index register : relative addressing에서 사용되는 레지스터. 현재 address에 더해질 값을 가지고 있음.
  • indirect address register : memory에서 읽어들인(fetched) indirect address를 저장하고 있는 register.
  • instruction register : memory로부터 fetch된 instruction을 저장하고 있는 register

CU (Control Unit)

  • 수행해야하는 프로그램 혹은 테스크에 따라 메모리에서 실행할 opcode(or operation)과 operand를 ALU에게 전달하고 ALU의 연산 처리 결과를 다시 메모리에 저장함으로서 메모리와 ALU, I/O devic에 제어 신호를 보내고, 해당 장치들로부터 신호를 받아 다음에 처리할 작업을 제어.

  • von Neumann 이 제안한 storead program computer는 메모리에 "처리할 instruction들의 list"(=program)가 저장되어 있고, control unit은 이를 차례대로 fetch, decode, execute, writeback 하도록 제어함.

Signal Traffic Control

Control Unit(or Execution Unit) 은 counter와 opcode, mode들에 할당된 bit를 읽어들여 현재 필요한 제어 signal을 필요한 component들에게 전달한다.
이같은 signal들의 흐름을 제어하는 것을 signal traffic control이라고 부름.

Program Counter and Control Unit

수행해야하는 insturction이 저장된 주소는 program counter register (PC라고도 부름)에 저장되어 있음.

control unit은 PC register에 저장된 주소가 reference(가리키는, 참조하는)하는 memory location에 있는 instruction을 fetch ( instruction을 "instruction register"에 저장시킴)하고 instruction register에 저장된 instruction을 decode하여 실행(execution)시키고 (실행단계), 필요한 경우 메모리에 접근(memory access)하여 데이터를 읽거나 쓰고, 실행결과를 register나 memory에 저장(writeback)하도록 제어신호를 보냄.

PC register는 instruction의 size만큼 증가하는 counter로, 다음에 수행할 instruction이 저장된 memory의 address가 저장됨.

일반적으로 contorl unit의 제어에 따라 instruction을 수행하고나며 instruction이 메모리에 저장된 크기만큼 증가하여 다음에 수행할 instruction을 가르키겨 됨.
일부 instruction들은 PC regster에 저장된 값을 직접 변화시킬 수 있음(branching)

Fetch

  • instruction이 수행되기 위해서는 instruction register에 "수행될 instruction(명령어)"가 저장(이 과정을 fetch라고 부름)되어야 하므로,  해당 수행될 instruction가 저장된 main memory 의 주소를 가지고 있는  PC register를 통해 해당 instruction의 주소를 얻고 main memory의 해당 위치에서 instruction을 얻어오게 된다.

  • Contrl Unit은 이 과정이 일어나도록 지시를 하는 boss라고 할 수 있음.

Execution

  • instructino register의 instruction이 실제 수행되는 단계.
  • instruction의 해당 내용에 따라 instruction은 수행되며 이 시간을 execution cycle이라고 함. 
  • fetch와 execution cycle은 instruction이 수행되는 단계를 구성
  • Control Unit은 ALU와 레지스터 등에 신호를 보내어 실제 연산을 Excute(수행)하도록 함(본인이 직접 수행하는 건 아님)
    Fetch-execute cycle

Instruction (명령어)

컴퓨터가 어떤 동작을 해야하는지를 나타내고 있는 bit pattern.각 특정 모델의 CPU에 따라 이 bit pattern은 다름 (Intel과 AMD 사마다 설계한 instruction이 다름). 

CPU에서 instruction 실행 과정

1.명령어 인출 (Fetch)

Control Unit이 프로그램 카운터(Program Counter, PC)에 저장된 주소를 사용하여 메모리에서 다음 실행할 명령어를 가져옴.
가져온 명령어는 명령어 레지스터(Instruction Register, IR)에 저장.

2.명령어 해독 (Decode)

Control Unit은 명령어 레지스터에 저장된 명령어를 해독(Decode).
명령어의 종류와 필요한 연산을 파악하고, 어떤 데이터를 사용할지, 그리고 어떤 레지스터나 메모리 주소가 필요한지 결정.

3.명령어 실행 (Execute)

Control Unit은 ALU와 레지스터 등에 신호를 보내어 실제 연산을 수행(execute)
예를 들어, 산술 연산이 필요하다면 ALU에 해당 연산을 수행하도록 신호를 보냄.

4.메모리 접근 (Memory Access)

메모리 읽기/쓰기가 필요하면 메모리 주소와 함께 데이터를 읽거나 쓰도록 함.

5.결과 저장 (Writeback)

연산 결과가 레지스터에 저장되거나, 필요한 경우 메모리에 저장됨.

ALU (Arithmetic Logic Unit)

arithmetic and logical operation (연산) 이 실제 수행되는 장치.
뭔가 신비해 보이지만, selector와 combinatorial logic circuit (gate)로 구성된다

shift operation은 shift register로, data flow control은 control unit에서 이루어짐.
operation을 구성하는 micro-operation은 register transfer,arithmetic op, logical op, shift 등의 4가지로 나누어지는데, ALU는 이중 arithmetic operation과 logical operation을 담당한다. (register에 저장된 data들에 대해 이루어지는 기본적인 operation들을 micro-operation이라고 함)

ALU는 Control unit에서 오는 control signal (opcode)에 따라, data를 가져와서 연산을 수행하여 Accumulator 와 condition code register등에 연산결과와 status가 저장되게 된다.

위 그림에서 status register 가 바로 condition code register임.
ALU 제어 신호는 달리 말하면, opcode (operation code)로 연산의 종류 를 의미함.
상단의 register 에서 들어오는 data를 operand (피연산자) 라고 부름.

Instruction Set Architecture: RISC vs. CISC

Reduced Instruction Set Computer (RISC)와 Complicated Instruction Set Compuer(CISC)는 Instruction Set의 구조(architecutre, 구성방식)으로 컴퓨터를 나눈 대표적 카테고리임.이들은 CPU(or micorprocessor)를 구분하는 기준으로도 사용됨.

Reduced Instruction Set Computer (RISC)

대부분의 프로그램에서 많이 사용되는 instruction만으로 구성된 instruction set을 가짐.

  • 적은 수의 최적화된 instruction들로 구성되어 매우 빠른 실행속도 

  • 단순한 구조의 CPU 설계가 가능

  • 대표적인 예가 Advanced RISC Machine (ARM)과 RISC-V (open source)으로 현재 대부분의 테블릿, 휴대폰 등에서 사용됨.

  • load-store structure를 사용함 (loading 및 storing instruction들만 memory에 접근이 가능하고, evaluating instruction들은 register들에만 접근 가능)

  • '한 clock cycle'당 하나의 instruction이 실행 됨. : Pipelining을 통해instruction들이 일정한 길이를 가지며 종류가 적어 decode가 쉽고 병렬처리가 쉬움.

  • 보다 단순한 내부회로 구성이 가능하여 저전력이면서 낮은 가격으로 구현 가능.

  • CISC와 비교하여 같은 task를 수행하는데 필요한 instruction의 수가 많음 (instruction 하나가 보다 단순한 구조임).

  • RAM 소모 측면에서 CISC보다 불리 (보다 많은 register를 요구).

  • RISC 에서는 하나의 명령어 실행으로 심플한 프로세스를 굉장히 빨리 수행한다. RISC 아키텍처는 간단한 명령어 다수를 신속하게 실행하여 성능을 전반적으로 향상시킨다.

Complicated Instruction Set Computer (CISC)

  • 하나의 instruction이 여러 execution을 처리할 수 있으며, RISC에 비해 복잡하고 다양한 instruction으로 구성된 instruction set을 가짐.

  • Server나 Descktop 등의 우리가 생각하는 전형적인 PC(컴퓨터)에서 많이 사용됨 (Intel의 x86 CPU들이 대표적인 예로 범용 컴퓨터에서 사용됨.)

  • instruction 하나를 수행하는데 여러 clock cycle이 필요.

  • 특정 task를 수행하는데 필요한 instruction 수가 RISC에 비해 적음.

  • 가변길이의 instruction으로 구성됨.

  • RISC에 비해 복잡한 HW가 필요(보다 많은 transistor)하여 생산단가가 높음.

  • 전력소모에서 RISC에 비해 불리한 경우가 많음.

  • Complicated의 부정적인 느낌 때문인지 Complex를 대신 사용하는 경우도 있음.

  • CISC 아키텍처는 하나의 명령어 실행으로 일련의 복잡한 프로세스들을 수행하며,  성능 향상을 위해 복합 명령어를 이용한다.

0개의 댓글