반응형
1. 파이프라인 명령어의 의존성 발생, 파이프라인 해저드의 개요
![]() |
|
개념 | - 파이프라인 프로세서에서 명령어 의존성(데이터, 컨트롤, 자원)을 발생 시킬 수 있는 문제 - 파이프라인의 성능을 저해하는 요인, CPI(명령어당 실행 클럭 수)가 1이 되는 것을 방해하는 요소 |
- 명령의 병렬처리 성능을 향상시키기 위해 처리 과정을 여러 단계로 세분화하여 동시에 서로 다른 작업을 수행하는 H/W설계 기법인 파이프라인에서 파이프라인 해저드 문제 발생
2. 파이프라인 해저드의 유형
가. 파이프라인 해저드의 유형
![]() |
- H/W자원충돌, 선행/후행 명령어, 분기 명령 등의 문제로 인해 파이프라인 해저드 발생
나. 파이프라인 해저드 유형 설명
유형 | 구분 | 설명 |
구조적 해저드 | 개념도 | ![]() |
설명 | - 하드웨어가 동시에 여러 명령 수행을 지원하지 않기 때문에 발생하는 자원 충돌 현상 - 하드웨어적 제한으로 인하여 각각의 다른 명령어가 동일 메모리, 동일 레지스터 등을 동시에 접근하려 할 때 후속 명령어가 지연되는 해저드 - 명령어와 데이터가 하나의 메모리에서 존재하는 폰노이만 구조에서 발생 |
|
데이터 해저드 | 개념도 | ![]() |
설명 | - 명령이 현재 파이프라인에서 수행중인 명령어가 이전 명령어의 결과에 종속되는 경우 발생 - 앞의 프로세스에서 사용된 데이터 호출 시, 이전 명령의 값에 종속된 경우 명령의 결과를 기다려야 함으로써 발생 - 명령의 값이 현재 파이프라인에서 수행중인 이전 명령의 값에 종속 - 데이터 해저드 유형: RAW(Read After Write), WAR(Write After Read), WAW(Write After Write) |
|
제어 해저드 | 개념도 | ![]() |
설명 | - Jump와 같은 분기 명령, Branch 명령에 의해 발생하는 해저드 - 분기(Jump, Branch) 명령어에 의해서 수행되지 않는 명령이 파이프라인에 존재하는 해저드 |
- 파이프라인 해저드 유형(구조적 해저드, 데이터 해저드, 제어 해저드)에 따른 적절한 해결방법 적용 필요
3. 파이프라인 해저드 해결방안
가. 파이프라인 해저드의 해결방안
![]() |
- 파이프라인 해저드의 해결은 하드웨어 구조 변경, 명령어 추가, 프로그래밍을 통한 제어 등을 이용
나. 파이프라인 해저드 해결방안 설명
파이프라인 해저드 | 해결방안 | 설명 |
구조적 해저드 | 하드웨어 리소스 추가 | - 리소스 혹은 하드웨어를 추가하여, 메모리에 동시에 접근함으로써 해결 - H/W 병렬 구성 |
하바드 아키텍처 사용 | - 데이터와 명령어를 각각의 메모리에 분리하여 메모리 동시 접근 | |
메모리 인터리빙 | - 메모리 모듈별로 병렬 접근을 수행하여 메모리 동시접근 - 인터리빙을 통한 H/W 병렬 구성 |
|
지연 | - nop 명령어를 추가하여, 파이프라인 수행을 일시정지 - nop 명령어 수행 |
|
데이터 해저드 | 전방 전달 (Forwarding) |
- 레지스터 파일에 반영되기 전에 수행(EX) 단계에서 계산된 결과를 다음 인스트럭션의 수행단계로 전달 - H/W 추가 필요 |
지연 | - 컴파일러 수준에서 해저드 발견하고, no-operation 명령어 삽입 | |
비순차 실행 | - 접근 중인 데이터와 관련 없는 명령어를 삽입하여 실행 - 이후 레지스터를 바이패스 한다. - 컴파일러 수준에서 코드 실행 변경 |
|
프로그래밍 방식 | - 변수를 늘리거나, 계산이 완료된 후 한번에 실행하는 방식으로, 데이터 해저드를 최소화 - 레지스터 고려하여 프로그래밍 |
|
제어 해저드 | 분기예측 | - 명령이 분기하는지를 미리 예측하여, 명령을 변화시키는 방법으로 지연이 발생하지 않도록 하는 기술 - 정적예측, 동적예측 |
브랜치 지연 | - 컴파일러가 분기문 발견 시, nop 혹은 분기와 관련 없는 명령을 추가하도록 프로그램 순서를 재배치 - 비 순차 실행과 유사 |
|
프로그래밍 방식 | - 조건분기를 최소화하도록 프로그래밍하여 제어 해저드를 최소화 - Lnline 메소드 사용 - Loop unrolling 사용 |
- 파이프라인 해저드 발생을 줄이기 위해 응용 프로그램 제작 시 단순 반복적인 과학 연산의 경우 루프가 많으므로 분기를 항상 참으로 가정하면 예측 시 비용 대비 효과적인이며, 반대로 분기 구조가 복잡한 코드에서는 복잡한 동적 분기 예측 기법 사용을 고려
반응형
'IT기술노트 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
모니터 (Monitor) (0) | 2022.07.28 |
---|---|
세마포어 (Semaphore) (0) | 2022.07.28 |
뉴로모픽 칩(Neuromorphic Chip) (0) | 2022.07.04 |
DAS, NAS, SAN (0) | 2022.06.29 |
HA (High Availability), 고가용성 (0) | 2022.01.27 |
프로세스 간 통신(IPC, Inter-Process Communication) (0) | 2021.12.30 |
우선순위 역전(Priority Inversion) (0) | 2021.10.20 |
데스크탑 가상화(VDI, Virtual Desktop Infrastructure) (0) | 2021.03.12 |
댓글