이야기박스
데이터 패스 본문
§ 백그라운드 지식
○ 멀티플렉서 : 다수의 근원지 중 하나 선택
○ 제어 유닛 : 기능 유닛들과 두 멀티플렉서의 제어선 값을 결정하는데 사용하는 것
○ 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 |