반응형
Ⅰ. 파이프라인 지연 현상, 파이프라인 해저드의 개요
가. 파이프라인 해저드의 개념
- 명령어 실행 지속이 불가하여 지정된 클럭에서 수행되는 파이프라인이 지연, 중지되는 현상
나. 파이프라인 해저드의 유형
유형 | 특징 | 발생 원인 |
구조적 | H/W 자원 충돌 | - 자원 충돌로 여러 명령의 동시 수행 시 발생 |
데이터 | 선행/후행 명령어 충돌 | - 미수행된 명령의 결과값 참조 시도 시 발생 |
제어 | 분기 명령 충돌 | - 순차적 명령어가 분기에 의해 버려지는 경우 발생 |
Ⅱ. 해저드 유형별 해결 방안
가. 구조적 해저드 해결 방안
구분 | 설명 | 비고 |
하드웨어/리소스 추가 | - 리소스 혹은 하드웨어 추가 - 메모리 동시 접근으로 해결 |
- H/W 병렬 구성 |
하버드 아키택처 사용 | - 데이터와 명령어를 각가의 메모리에 분리하여 메모리 동시 접근 | - 데이터, 명령어 메모리 분리 |
메모리 인터리빙 | - 메모리 모듈별로 병렬 접근을 수행하여 메모리 동시 접근 | - 인터리빙 통한 H/W 병렬 구성 |
지연 | - NOP 명령어 추가하여 파이프라인 수행 일시정지 | - No Operation 명령어 |
나. 데이터 해저드 해결방안
구분 | 설명 | 비고 |
전방 전달 | - 레지스터 파일에 반영되기 전에 수행 단계에서 계산된 결과 다음 으로 전달 | - H/W 추가 필요 |
지연 | - 컴파일러 수준에서 해저드 발견, NOP 명령어 삽입 | - NOP 명령어 |
비순차 실행 | - 접근 중인 데이터와 관련 없는 명령어 삽입 실행 | - 컴파일러 수준 코드 실행 변경 |
프로그래밍 방식 | - 변수를 늘리거나 계산이 완료된 후 한번에 실행 | - 레지스터 고려 프로그래밍 |
다. 제어 해저드 해결 방안
구분 | 설명 | 비고 |
분기 예측 | - 분기 예측하고 지연 발생 예방 | - 정적 예측, 동적 예측 |
브랜치 지연 | - 컴파일러가 분기 발견, 프로그램 순서 재배치 | - 비순차 실행과 유사 |
프로그래밍 방식 | - 조건 분기 최소화하도록 프로그래밍 | - Inline 메소드, Loop unrolling |
반응형