이야기박스

데이터 패스 본문

Computer & Data/Computer Architecture

데이터 패스

박스님 2017. 10. 20. 11:40
반응형

§ 백그라운드 지식

○ 멀티플렉서 : 다수의 근원지 중 하나 선택

○ 제어 유닛 : 기능 유닛들과 두 멀티플렉서의 제어선 값을 결정하는데 사용하는 것

○ MIPS

- lw, sw

- add, sub, and, or, slt

- beq, j




§ 데이터 패스

○ Instruction Set에 의한 명령어의 실제 CPU 수행 과정

1. IF (Instruction Fetch)

2. ID (Instruction Decode)

3. EX (Execution)

4. MEM (Memory)

5. WB (Write Back)



○ CPU

- Datapath

: 명령어가 프로세서로 가는 통로

--> register, memory, ALU, Multiplexor 등으로 구성


- Control

: datapath가 어떻게 연산을 수행하는지를 지시하기 위하여 명령어의 opcode등에 따라 제어 신호를 발생시켜 수행함





§ 단일 사이클 구조

○ 단일 사이클 구조의 단점

- 한 사이클의 시간은 가장 오래걸리는 명령어에 의해 결정

--> Clock cycle 활용의 비효율

--> 성능 저하

- Clock cycle 내에서 datapath의 낭비되는 공간이 생김

--> (순차 실행이기 때문에 뒤 쪽 자원은 사용이 안되고 있음 )


==> 해결 책으로 Pipelining 기법






§ Pipelining

: 여러 명령어가 중첩되어 실행되는 구현 기술

--> 할일이 충분히 많다면, 속도향상은 단계수와 같다.

* Clock cycle은 가장 느린 스테이지에 맞춘다.



○ 파이프 라인 사용시

- 각 명령어 하나를 수행하는 시간에는 변화 없음    --> execution time 변화 x

- 단위 시간당 수행하는 명령어의 수 증가    --> throughput 성능 향상


○ Hazard

: 파이프라인의 성능을 저해하는 요소

- 구조적 해저드 (Structual hazard)

: resource가 부족하기 때문에 하드웨어가 지원을 못하게 되는 현상

--> resource를 추가함으로서 해결 가능


- 데이터 해저드 (Data hazard)

: 이전 단계의 데이터가 필요해, 끝나기를 기다려야 할 때

--> data forwarding으로 해결 가능

--> ALU 에서 바로 값을 받아오는 것


- 제어 해저드 (Control hazard)

: 다른 명령어들이 실행 중, 한 명령어의 결과치에 기반을 둔 결정을 할 필요가 있을 때

--> branch prediction을 실행

--> 실패시 stall



○ 예외 처리

--> 복잡함

--> 설계의 복잡도가 크게 증가할 수도 있음

* Exception : 내부 문제  /  Interrupt : 외부 문제


- Handled

1. EPC에 문제를 일으킨 명령어 주소 저장

2. OS로 보냄

3. 알맞은 행동 취함

4. 프로그램 종료 or EPC->PC (프로그램 재개)



○  명령어 수준의 병렬성을 활용하여 성능을 증진시키기 위한 방법

- Superpipelining 기법

: pipeline의 깊이를 심화시킨다.

--> ex) 4단계 -> 6단계


- multiple issue 기법 (superscalar) 

: 한 clock cycle에 복수개의 명령어를 동시에 issue 시킴

ex) 세탁소 -> 세탁기 3대/ 건조기 3대 --> 3배로 많은 일 동시 수행

==> 파이프 라인을 여러개 두는 기법



○ Speculation

: 컴파일러나 프로세서가 어떤 명령어의 결과를 예측하여 다른 명령어들과의 종속성을 제거하도록 하는 기법

- 추정의 정확성

1. 올바른지 체크

2. 추정 후, 실패했던 명령어 되돌리기 or 취소하기

- 잘못된 추정의 대한 처리

1. 소프트웨어 추정 : 컴파일러는 오류 수정 루틴 제공

2. 하드웨어 추정 : 옳으면 메모리/레지스터에 쓰고 틀리면 버퍼를 지움

반응형

'Computer & Data > Computer Architecture' 카테고리의 다른 글

10진수 - 2진수 (hexadecimal - binary)  (0) 2017.11.24
RAID  (0) 2017.11.04
메모리 복습2  (0) 2017.10.19
메모리 복습  (0) 2017.10.19