본문 바로가기
IT기술노트/컴퓨터구조 및 운영체제

파이프라인 해저드 유형 및 해결방안

by 비트코기 2022. 6. 5.

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 사용

-    파이프라인 해저드 발생을 줄이기 위해 응용 프로그램 제작 시 단순 반복적인 과학 연산의 경우 루프가 많으므로 분기를 항상 참으로 가정하면 예측 시 비용 대비 효과적인이며, 반대로 분기 구조가 복잡한 코드에서는 복잡한 동적 분기 예측 기법 사용을 고려

반응형

댓글