티스토리 뷰
명령어 파이프라인(Pipeline)
명령어를 실행하는 하드웨어를 여러 단계로 나누고 각각 독립적인 파이프라인 모듈들로 분리
각 단계들에 동일한 클럭을 가하여 동작 시간을 일치
파이프라인 Stall
한 단계(stage)의 기능을 실행하기 위해 한 단계의 시간보다 더 많은 시간이 요구될 때 다른 단계는 수행되지 않고 대기 상태가 돼야 하는 것을 파이프라인 동작이 스톨됐다고 함
Pipeline Hazard
파이프라인 스톨 상태를 만드는 것
I2에서 캐시 미스 I2를 인출하는데 3T 추가 요구
해저드의 발생원인 : 명령어와 데이터 종속성
명령어 종속성
분기 명령어 수행에서 발생
조건 분기 명령어가 있을 경우, 다음 명령어는 조건 분기 명령어 수행이 완료되고 분기 목표를 알 때 까지 인출하지 않음
데이터 종속성
데이터 종속은 명령어 소스 오퍼랜드가 이전의 명령어 수행결과 값에 의존이 있을 때를 데이터 종속성
ADD R3,R1,R2 ; R3 = R1+R2
SL R3 ; R3 = SL(R3), 1 bit shift left
SUB R4,R5,R6 ; R4=R5-R6
read after write (RAW) 해저드 ; 명령어가 이전 것에 의해 만들어지는 데이터를 사용할 때 나타나는 흐름 종속성이다
명령어가 레지스터나 기억장소에 있는 데이터를 갱신하고 후속 명령어가 그 데이터가 갱신되기도 전에 액세스하는 것
A = B + C; D = A + E;
해결: 결과값을 쓰기를 할 때까지 기다려야 한다.
write after read (WAR) 해저드 ; 명령어가 이전 명령어에서 계속 필요한 값에 대해서 새로운 값을 덮어 쓰려고 할 때 나타나는 반-종속성이다
A = B + C; B = D + E;
명령어가 오퍼랜드를 읽기 전에 후속 명령어 가 같은 오퍼랜드를 쓰는 경우 발생
write after write (WAW) 해저드 ; 두 개의 병렬 명령어가 같은 레지스터에 쓰기를 하는데, 이슈된 순서대로 써야 할 경우에 생기는 출력 종속성이다
A = B + C; A = D + E;
오퍼랜드를 쓰기 전에 다음명령어가 같은 오퍼랜드를 쓰는 경우 발생
'It' 카테고리의 다른 글
물류관리론2 (0) | 2023.02.12 |
---|---|
물류관리론3 (0) | 2023.02.11 |
PHP 쿠키와 세션 (PHP 쿠키 세션) (0) | 2023.01.29 |
Walkthrough (기술검토회) (0) | 2023.01.28 |
거래분석 (0) | 2023.01.27 |