컴퓨터/컴퓨터구조

[CA] Processor (1)

xeskin 2020. 4. 20. 01:33
반응형

Logic Design Basics

- 하드웨어는 간단한 블록으로 구성돼있다.

  1. 그 블록은 논리 게이트라고 불림. e.g. AND, OR, NOT, NAND, NOR, XOR..

  2. 논리 게이트는 트랜지스터로 만들어졌다.

  3. 트랜지스터는 펀더멘탈한 기기.

- 디지털 논리 타입 (Digital logic types)

  1. Combinatorial logic

    a. 인풋 데이터로 연산함.

    b. 아웃풋은 현재 인풋에만 의존함.

    c. 내부 스토리지가 없음.

  2. Sequential logic

    a. 아웃풋은 현재 인풋과 인풋의 과거값에 의존함.

    b. 인풋의 과거값을 저장할 내부 스토리지가 필요함.

- 스토리지 장치 (Register)

  1. 이진수로 된 정보를 저장할 수 있는 회로.

  2. Latch: 인풋이 입력되자마자 아웃풋이 바뀔 수 있음. 비동기적인 로직에 사용됨.

  3. Flipflop: clock signal을 이용해서 저장된 값을 업데이트할 시기를 정함. 동기적인 로직에 사용됨.


CPU Overview

- 명령어 실행 (Instruction Execution)

 

 

  1. 첫번째 두 스텝

    a. Fetch and decode instructions: 명령어를 가져와 디코드해서 PC에 주소를 저장함.

    b. Read register: lw는 한개의 레지스터를 읽고, 다른 명령어는 두개의 레지스터를 읽음.

  2. 나머지 스텝은 명령어 클래스 (instruction class)에 달렸음.

    a. 산술 연산 결과.

    b. 메모리 주소

    c. 브랜치 타겟 주소

- Datapath: functional units과 그들의 연결로 이뤄져있음.

 

add $t0, $s2, $t0

 

1. add 명령어와 어떤 녀석들로 연산을 할 지, 명령어 메모리 (Instruction memory)에 가져옴.

2. 이때 피연산자들을 목적에 맞게끔 레지스터에 저장함. 어떤 연산을 할 지는 ALU에 전해짐.

3. ALU에서 $s2, $t0를 add해줌.

4. 3번에서 더한 값을 데이터 메모리 (Data memory)에 저장함. 만약, 브랜치를 판단하는데 쓰였다면 레지스터로 감.

 

lw $t0, 1200($t1)

 

1. lw 명령어와 어떤 녀석들로 연산을 할 지, 명령어 메모리 (Instruction memory)에 가져옴.

2. 이때 피연산자들을 목적에 맞게끔 레지스터에 저장함. lw는 레지스터를 하나만 읽는 레지스터이기 때문에 하나만 할당함.

3. ALU에서 $t1과 1200을 더해서 주소값을 구해서, 메모리에 저장된 값을 구함.

4. 3번에서 구한 값을 레지스터로 보냄. 여기서는 레지스터로 불러오는 명령어를 따랐기 때문이다.

 

 

- 빨간색으로 동그라미 친 곳은 반도체적 물성에 의해서 단절될 수 있음.

- 저 부분은 multiplexer(MUX)를 통해 해결해줌. 논리게이트라고 생각하면 됨.

- Control: 각각의 명령어를 수행하기 위한 연산을 하기 위해서 datapath와 이들 사이의 data flow를 제어하는 것.

*Processor = Datapath + Control

 

Datapath Elements inside Processors

- Memory unit: insruction memory + data memory

- PC (Program Counter): 다음에 실행될 명령어의 주소를 갖고 있는 레지스터, 명령어 포인터라고도 불린다.

- Register file: 산술/논리 연산을 위한 데이터를 저장하기 위한 스토리지. MIPS CPU를 기준으로 32비트짜리 레지스터를 32개 갖고있음.

- ALU: 산술/논리 연산을 하는 디지털 회로.

 

Instruction Fetch

- PC에서 갖고 있는 명령어 주소에 4바이트만큼 더해줘, 다음 명령어를 PC에 저장함. 이와 같은 원리로 PC가 다음에 실행될 명령어를 갖고 있는 것임.

 

To Implement R-format Instructions

Implementation of R-format Instruction

- R-foramt arithmetic/logic instructions

  1. 두개의 피연산자를 읽는 레지스터가 필요함.

  2. 산술/논리 연산을 수행해야함.

  3. 산술/논리 연산의 결과를 저장하는 레지스터가 필요함.

  e.g. add $t1, $t2, $t3

- R-format instructions을 구현하려면 두가지 element가 필요함.

- Register file

  1. 레지스터셋은 레지스터 넘버로 접근 가능함.

  2. Reading: 두개의 레지스터 넘버와 두개의 데이터 아웃풋을 갖고 있음.

  3. Writing: 한개의 데이터 넘버와 앞으로 쓸 데이터를 갖고 있음.

    a. write control signal로 제어됨.

 

To Implement Load/Store Instructions

- Load/store instructions (e.g. lw $t1, offset($t2))

  1. base adress를 가져올 수 있는 레지스터가 필요함.

  2. 16bit offset을 사용하는 주소와 base adress를 계산할 수 있어야함. ALU를 사용하지만, sign-extend offset을 사용해야함.

  3. Load: 메모리를 읽고, 레지스터를 업데이트함.

  4. Store: 레지스터 값을 메모리에 씀.

- load/store insturction을 구현하기 위해서는 load/store를 위한 두가지 element, 즉 레지스터가 있으면 됨.

 

To Implement Branch Instructions

- Branch Instructions (e.g. beq $t1, $t2, offset: $t1과 $t2가 같으면 offset으로 가라.)

  1. 피연산자를 읽을 두개의 레지스터가 필요함.

  2. 피연산자를 비교해야함. ALU를 사용해서 뺄셈을 한 뒤에 아웃풋이 0인지 체크하면 됨.

  3. target address를 계산해야함.

    a. offset의 2bit을 왼쪽으로 이동시킴.

    b. sign-extended offset과 PC를 더해줘야함.

  4. Branch를 만족했을 때, PC (new) = offset + PC (current) + 4

  5. Branch를 만족하지 않았을 때, PC (new) = PC (current) + 4

 

Full Datapath

위의 명령어들이 모두 구현된 datapath.

 

ALU Contrl Unit

- ALU는 Load/Store 명령어에는 덧셈 연산을, Branch 명령어에는 뺄셈 연산을, R-type 명령어에는 6bit 짜리 funct field에 있는 function에 따라 연산을 함.

- MIPS R-format instructions의 instruction fields에는 op, funct가 있음.

  a. op: 명령어가 수행해야하는 연산을 가리킴. (opcode라고도 불림)

  b. funct: 명령어의 종류를 나타냄.

- ALU에게 어떤 연산을 할 지, 어떻게 알려줄 것인가? 'ALU control unit'

- ALU control unit

  1. 2 inputs

    a. ALUOp: main control unit으로 생성되는 값

    b. 명령어가 갖고 있는 funct field 

  2. 1 Output: 4-bit ALU control signal

>> 즉, ALUOp과 funct field를 인풋으로 받으면 4bit ALU control signal을 아웃풋으로 내놓음. 이때 truth table을 사용함.

 

Main Control Unit

- Main control unit은 명령어가 들어오면 control signal을 생성함

  1. 레지스터 두개는 항상 rs, rt를 저장함.

  2. lw, sw 명령어에 대한 base register는 rs에 저장함.

  3. 16bit offset은 address 부분에 저장함

  4. Destination register: lw는 rt, r-type 명령어는 rd로 가짐.

>> 이전 datapath에는 ALU control unit이 없엇음. 그리고 어떤 instruction인지 판단하기 위해 멀테플렉서가 필요함.

- 그리고 ALU control에 어떤 control을 보내줄 지 알려주는 unit이 필요함.

 

Datapath with Full Control

 

반응형

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

[CA] Arithmetic for Computer  (0) 2020.04.19
[CA] Instructions: Language of Computer  (0) 2020.04.18
[CA] Computer Abstraction and Technology  (0) 2020.04.18