CPU(파이프라인) Flashcards
파이프라인
[정의] CPU처리 성능향상을 위해 Instruction 처리 과정을 여러 단계로 세분화하는 명령어 병렬처리기법
[유형]
*T : 명령어실행시간, K:파이프라인 단계, N:실행 명령어 수, n : 1Clock 당 수행횟수 , m : 파이프 라인 중첩수
1. Pipeline : Micro Instruction 기반 병렬처리 , 성능: T = k + (n-1)
2. Super Pipeline : CPU CLOCK degree기반 파이프 라인 , 성능 : T = k + ( N - 1) / n
3. Superscalar : 다수 기능 유닛 기반 파이프라인 중첩, 성능 : T = k + (N-m) / m
4. Super Pipelined Superscalar : CPU CLOCK degree기반 파이프 라인 중첩,성능: T = k+( N - m )/( m * n)
5. VLIW : 동시 수행 명령어 컴파일러 수준 추출, Instruction 압축
6. EPIC : 컴파일러가 병렬성을 찾아 내는 아키텍쳐, IA64아키텍쳐에 사용
파이프라인 해저드
[정의] 파이프라인의 성능을 저해하는 요인으로 CPI(명령어당 실행 클럭수)가 1이 되는 것을 방해하는 요소
* 명령어 실행 지속이 불가하여 지정된 클럭에서 수행되는 파이프라인이 지연, 중지되는 현상
[파이프 라인 해저드 유형] 원인 및 해결방안 (구데제)
1. 구조적 해저드 : 자원 충돌로 여러 명령어 동시 수행시 발생, 폰노이만 구조, HW 자원 부족 / HW자원 추가(가산기추가, 전용 연산기추가), 저장장소 활용(캐시 메모리 분리, 레지스터 사용), 하버드 아키텍쳐
2. 데이터 해저드 : 미수행된 명령의 결과값 참조 시도 발생, WAW,RAW,WAR / 전방전달(포워딩), Change Clock Cycle, 명령어 재배치, interlocking/NOP
3. 제어 해저드 : 순차적 명령어 분기(Branch, Jump) 에 의해 발생하여 처리된 명령 무효화 / Delayed Decision, Predict Taken or Not Taken , Stall
구조적 해저드
[정의] 하드웨어가 동시에 여러 명령 수행을 지원하지 않아 발생하는 자원 충돌 현상
[발생원인]
- 하드웨어적 제한으로 서로 다른 명령어가 동일 메모리/레지스터 등을 동시 접근할때 후속 명령어가 지연
- 폰노이만 구조에서 발생(명령어, 데이터가 하나의 메모리)
[해결방안]
- HW 자원 추가 : 가산기추가, 전용 연산기추가
- HW 구조 변경 : 하버드 아키텍쳐, H/W 병렬 구성(메모리 인터리빙)
- 저장장소 활용 : 캐시 메모리 분리, 레지스터 사용
- 지연 : nop 명령어 수행
데이터 해저드
[정의] 명령어들의 결과값 의존성에 의해 미수행된 명령의 결과값 참조로 다음 명령어의 실행 연기 발생 현상
[발생원인]
- 앞의 프로세스에서 사용된 데이터 호출시, 이전 명령어의 값에 종속된 경우 대기 발생
[유형] 쓰기 후 읽기(RAW), 읽기 후 쓰기(WAR), 쓰기후 쓰기(WAW)
[해결방안]
- 전방전달(포워딩), Change Clock Cycle, 명령어 재배치, interlocking/NOP
- 지연 : no operation 명령 수행
- 비순차 실행 : 컴파일러 수준에서 코드 실행 변경
- 프로그램 방식 : 레지스터를 고려 프로그래밍
제어 해저드
[정의] 명령어의 실행 순서를 변경하는 Branch, Jump 등 분기 명령에 의해 발생하여 처리된 명령 무효화
[원인] 분기 명령어(Jump, Branch)에 의해서 수행되지 않는 명령어 파이프라인이 존재
[해결방안]
- 분기 예측 : 정적 예측, 동적 예측
- 브랜치 지연 : 분기문 발견시 프로그램 순서 재배치
- 프로그래밍 방식 : 조건 분기 최소화