용's
[Chap 1] An Introduction of Processor Design 본문
[Chap 1] An Introduction of Processor Design
TaeYOng's 2014. 10. 11. 16:301.1 Processor Architecture & Organization
- 모든 현대의 일반목적의 컴퓨터들은 "Stored Program Concept"을 따른다.
- 프로세서는 50년이라는 시간이 지남에 따라 성능은 향상되고, 가격은 하락해오고 있음.
- 가장 큰 변화 및 발견으로는 Vacuum tubes -> Transistors -> ICs -> VLSI
- 새로운 변화 및 발견으로는 Virtual Memory, Cache Memory, Pipeline, RISC
1.2 Abstraction in Hardware Design
- 컴퓨터의 시작이라 함은 Transistor들이 모여서(4개) 만들어진 NAND가 가장 큰 부분인데, 이 NAND와 같은 Gate들은 Gate Abstraction이라는 것으로 추상화 시켰음.
- 이로 인해 회로 설계자들은 복잡한 Transistor들을 알 필요가 없어졌다.
- 컴퓨터는 Transistor의 종류에 의해 성능이 달라지기는 하지만, 기능은 달라지지 않는다
- Abstraction의 Level에 따라 Trs -> Gates, Memory -> Adder, Mux, Decorder, Resister -> ALUs, Shifters, Memory blocks -> Processors, Peripherals, Memories 등등으로 나뉠 수 있다.
1.3 MU0 - A Simple Processor
- 간단한 프로세서의 형태로 다음과 같은 간단한 컴포넌트(Components)들을 포함하고 있다
=> PC(Program Counter), ALU(Arithmetic-logic Unit), ACC(Accumulator), IR(Instruction Resister), Instruction decorder, Control Logic
- MU0의 instruction set은 16bit를 기본으로 한다. (4bit: Opcode, 12bit: Address)
- 다음은 MU0의 Instruction Set 이다.
- DataPath: PC에서 가르키는 주소가 Address bus를 통해 Memory로 가게 되고 해당 메모리 주소에 있던 값이 Data bus를 통해 IR로 가게 된다. IR에서 해당 값의 opcode를 분석하여, control signal을 발생시키며, Address값을 분석하여 다시 해당 메모리주소의 값을 불러 들인다. 메모리에서 불러 들인 값은 다시 data bus을 통해 ALU로 가게 되며 여기서 아까 IR의 opcode의 명령에 맞게 알맞은 계산이 수행된다. 수행된 결과값은 ACC에 저장된다. PC또한 ALU를 통해 값이 증가됨을 아래의 그림을 통해 알 수 있다.
- RTL(Resister Transfer Level)에서의 그림은 아래와 같다. 아래의 사진을 보면 추가된 것은MUX와 Memory 이며, 추가된 Control SIgnal 들은
MEMra(Memory Request): Memory에 접근이 되어질 때 1(LDA, STO ADD SUB), 그렇지 않을 때 0
RnW(Read, if negative, Write): 1이면 Read, 0이면 Write
Asel, Bsel: MUX에서의 Selector 역할
PCce, ACCce, IRce: 각 레지스터 Enable Signal
ALUfs(ALU function signal): ALU의 덧셈, 뺄셈들을 결정하는 신호
- Control Logic을 따져보자. 예를 들어 LDA S(ACC:=MEM[16]S)
=> 명령어 실행(Excute): Opcode: 0000, ex/ft: 0, ACC15/ACCz: x에 다른 Control Signal은
Asel: 1, Bsel: 1, PCce: 0, ACCce: 1, IRce: 0, ALUfs: =B, MEMrq:1, RnW:1
=> 모든 명령어에 대한 Control logic은 아래 그림과 같다.
1.4 Instruction Set Design
- 향상된 프로세서의 성능을 보이기 위해서 명령어 셋 설계는 매우 중요한 부분이다
- 명령어 설계의 종류를 살펴 보면
=> 4 address inst (add d, s1, s2, next_i; d:=s1+s2를 나타내지만 다음 PC 값을 함께 포함하는 장점과 명령어가 길어지 는 단점
=> 3 address inst (add d, s1, s2; d:=s1+s2를 나타내며, 따로 PC값을 계산함)
=> 2 address inst (add d, s1; d:=d+s1으로 목적 주소에 s1값을 더하는 형태)
=> 1 address inst (add s1; AC:=AC+d으로 AC값을 목적주소로 s1값을 더하는 형태)
=> 0 address inst (add; tos:=tos+Next on stack으로서 스택 구조를 이용. tos 값을 기준으로 더하고 뺌)
- MU0는 1 address inst를 따르며, 표준 ARM 같은 경우는 3 address inst를 따른다.
1.5 Processor Design Trade-offs
- CISC vs RISC
=> CISC: Semantic gap을 줄이는데 중점을 두었으며, 복잡한 명령어들의 Sequence를 가짐. 컴파일러의 일을 쉽게 함
=> RISC: Semantic gap을 줄이는 것이 컴퓨터의 작업 효율을 높이는 것만은 아니다라는 것에서 나옴. 등장배경은?
- 프로세서가 사용하는 명령어들의 타입을 살펴보면, 레지스터와 메모리 사이의 데이터 이동의 명령어가 거의 반이상이었다. (branch나 procedure call과 같은 control flow의 명령어는 25%이상, 산술 연산은 15%) 이로 인해, Pipelining과 Cache Memory는 프로세서를 더욱 빠르게 하는데에 중요한 역할을 하게 됨.
-Pipeline
- 하지만 Pipelining에는 Hazard가 있음. 먼저 data dependency에 의해 발생하는 data hazard는 데이터들의 순서때문에 생기는 것으로 상황에 따라 방법이 있는데, WAW나 WAR같은 경우는 Renaming기법을 통해 해결하며 RAW같은 경우는 internal forwarding으로 ALU과정을 다하면 원하는 값이 만들어지니까 ALU과정 뒤에 feedback같은 것들을 통해 바로 그 자료를 쓸 수 있도록 하여 1cycle을 절약하는 방법으로 해결하였다. 다음 hazard로는 branch hazard로 jump같은 것들로 인해 미리 fetch해온 inst들이 필요가 없게 되면서 발생하는 hazard이다. 이를 위해 branch와는 상관없는 것들을 중간에 넣어주는 지연분기(Delayed Branch)와 branch할지 말지는 모르지만 Decode 단계에서 미리 주소를 계산해두는 방법도
있다.
- 하지만 그렇다고 CISC를? 아니다. 명령어의 길이가 길어지기 때문에 Hazard의 가능성이 더 커져 파이프라인의 효율이 더 줄어든다.
- RISC의 특징을 더 살펴보면,
=> 고정된 32bit 크기의 format
=> Load-store 구조(데이터를 처리하는 명령어들은 오직 레지스터에서 계산됨. 메모리에 접근하는 명령어들을 분리함. 다양한 레지스터 수를 가짐으로써 load-store구조를 더 효과적으로 운영)
=> Hard-wired 형태의 명령어 해독 로직(Decode logic)
=> Pipeline execution
=> Single cycle execution
- RISC의 단점은?
=> 명령어들이 간단해지면서 자주 사용하게 됨(Code의 밀도가 좋지 않아짐). 따라서 메모리에 대한 접근과 점유가 많아지는 단점이 발생.
'Computer Science > Embedded System' 카테고리의 다른 글
[Chap 5] The ARM Instruction Set (0) | 2014.10.22 |
---|---|
[Chap 4] ARM Organization & Implementation (0) | 2014.10.21 |
[Chap 3] ARM Assembly Language Programming (0) | 2014.10.17 |
[Chap 2] The ARM Architecture (0) | 2014.10.11 |
[Before] ARM은 무엇인가? (1) | 2014.09.17 |