I. 파이프라인 명령어 의존성 발생, 파이프라인 해저드의 개요
가. 파이프라인 해저드의 정의
- 파이프라인 프로세서에서 명령어 의존성(데이터, 컨트롤, 구조)을 발생시킬 수 있는 문제
II. 파이프라인 해저드의 종류
종류 |
특징 |
설명 |
구조적 해저드 (Structural hazards) |
H/W 자원 충돌 |
- 하드웨어가 여러 명령들의 수행을 지원하지 않기 때문에 발생, 자원충돌 (Resource Conflicts) |
데이터 해저드 (Data hazards) |
선행/후행 명령어 |
- 명령의 값이 현재 파이프라인에서 수행 중인 이전 명령의 값에 종속 (세부적으로 RAW, WAR, WAW 해저드가 있음. RAR은 해저드가 아님) |
제어 해저드 (Control Hazards) |
분기 명령 |
- 분기(Jump, Branch 등) 명령어에 의해서 발생 - 분기를 결정된 시점에, 잘못된 명령이 파이프라인에 있기 때문에 발생 |
III. 구조적 해저드의 개요
가. 구조적 해저드의 개념
- 구조적 해저드는 하드웨어가 동시에 여러 명령 수행을 지원하지 않기 때문에 발생하는 자원 충돌 현상
나. 구조적 해저드 제거방법
구분 |
설명 |
비고 |
하드웨어/리소스 추가 |
- 리소스 혹은 하드웨어를 추가하여, 메모리에 동시에 접근함으로써 해결 |
H/W 병렬 구성 |
하바드 아키텍처 사용 |
- 데이터와 명령어를 각각의 메모리에 분리하여 메모리 동시 접근 |
데이터와 명령어 메모리 분리 |
메모리 인터리빙 |
- 메모리 모듈별로 병렬 접근을 수행하여 메모리 동시접근 |
인터리빙 통한 H/W 병렬구성 |
지연 |
- nop 명령어를 추가하여, 파이프라인 수행을 일시정지 |
nop 명령어 수행 |
IV. 데이터 해저드의 개요
가. 데이터 해저드의 개념
- 데이터 해저드는 명령이 현재 파이프라인에서 수행중인 명령어가 이전 명령어의 결과에 종속되는 경우에 발생
- RAW(Read after Write)의 경우, 첫번째 파이프라인의 R1 쓰기 동작이 완료된 후에 두번째 파이프라인의 R1 읽기 동작이 가능
나. 데이터 해저드 제거방법
구분 |
설명 |
비고 |
전방전달 |
- 레지스터 파일에 반영되기 전에 수행(EX) 단계에서 계산된 결과를 다음 인스트럭션의 수행단계로 전달 |
H/W 추가 필요 |
지연 |
- 컴파일러 수준에서 해저드 발견하고, no-operation 명령어 삽입 |
Nop 명령어 삽입 |
비순차 실행 |
- 접근 중인 데이터와 관련 없는 명령어를 삽입하여 실행 - 이후 레지스터를 바이패스 한다. |
컴파일러 수준에서 코드 실행 변경 |
프로그래밍 방식 |
- 변수를 늘리거나, 계산이 완료된 후 한번에 실행하는 방식으로, 데이터 해저드를 최소화 |
레지스터 고려하여 프로그래밍 |
V. 제어 해저드의 개요
가. 제어 해저드의 개념
- 제어 해저드는 jump와 같은 분기 명령, branch 명령에 의해 발생하는 해저드를 의미
나. 제어 해저드 제거방법
구분 |
설명 |
비고 |
분기예측 |
- 명령이 분기하는지를 미리 예측하여, 명령을 변화시키는 방법으로 지연이 발생하지 않도록 하는 기술 |
정적예측 동적예측 |
브랜치 지연 |
- 컴파일러가 분기문 발견 시, nop 혹은 분기와 관련 없는 명령을 추가하도록 프로그램 순서를 재배치 |
비순차 실행과 유사 |
프로그래밍 방식 |
- 조건분기를 최소화하도록 프로그래밍하여 제어 해저드를 최소화 |
Inline 메소드 사용 Loop unrolling 사용 |
'IT기술노트 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
메모리 계층구조 (0) | 2021.03.12 |
---|---|
CPU 스케줄링(CPU Scheduling) (0) | 2021.03.12 |
다중 프로세서 시스템(Multiple Processor System) (0) | 2021.03.12 |
CUDA(Compute Unified Device Architecture) (0) | 2021.03.12 |
파이프라이닝의 유형 (0) | 2021.03.12 |
명령어 사이클 (0) | 2021.03.12 |
파이프라인(Pipeline) (0) | 2021.03.12 |
마이크로 프로세서(Micro Processor) (0) | 2021.03.11 |
댓글