Pipeline CPU의 성능 분석
* 파이프라인 분기 예측
* RISC Processor
* 파이프라인 CPU 성능 분석
파이프라인 분기 예측
* 명령어 파이프라인이 정상적인 동작에서 벗어나게 되는 요인
- 자원 충돌 (Resource conflict) : 두 세그먼트가 동시에 메모리를 접근하려고 하는 데에서 기인한다 -> 명령어 메모리와 데이터 메모리를 분리함으로써 대부분 해결한다
- 데이터 의존성 (data dependency) : 충돌은 어떤 명령어가 이전 명령어의 결과에 의존하여 수행되는데, 그 값이 아직 준비되지 않은 경우에 발생한다
- 분기 곤란 (branch difficulty) : 분기 명령어같이 PC의 값을 변경 시키려는 명령어에 의해 발생한다
* 데이터 의존성
- 데이터나 주소의 충돌은 명령어 파이프라인의 성능을 저하 시키는 요인
> 데이터 의존성 : 아직 준비되지 않은 데이터를 기다리는 경우
> 주소 의존성 : 마이크로 연산 시 레지스터 간접모드를 사용하는 명령어는 이전 명령어가 주소 값을 메모리로부터 로드하는 명령어라면 곧바로 피연산자를 fetch하지 못하고 기다리게 된다
* 분기 명령어의 처리
- 조건 분기 또는 무조건 분기 등은 처리 여하에 따라 파이프라인의 정상적인 프로그램 순서를 바꾸어 버리기 때문에 파이프라인 시스템을 채택하고 있는 컴퓨터의 성능을 저하시키는 주 요인으로 간주되고 있다
> 순차적으로 처리될 명령어를 분기의 목표가 되는 명령어와 함께 저장하는 방법
> 분기 목표 버퍼(branch target buffer, BTB)의 사용 : fetch 세그먼트에 속해 있는 associative memory : 이전에 실행된 분기 명령어와 분기 목표 명령어를 저장하여 활용(loop buffer - 일종의 레지스터)
※ associative memory(어소시에이티브 메모리) : 주소가 아닌 내용에 의해 검색이 가능한 기억장치
- 실제 다양한 프로그램의 실행 결과를 분석한 결과 참조의 시간적 지연성과 유사하게 일부 명령어들은 반복 수행되며 반복 실행시에는 규칙성을 갖는다
- 이러한 예측 기법을 이용하여 분기 및 적재 명령어가 참조하는 오퍼랜드도 반복 참조 시 규칙성을 갖고 있으며 이를 이용할 경우 명령어 fetch 과정에서 신속하게 오퍼랜드의 제공 및 fetch가 수월해 질 수 있다 다만 예측실패시 지불해야 할 패널티(시간 지연)가 있을 수 있다
RISC Processor
* RISC 프로세서의 설계목표
- 실행 명령어 수는 증가 하더라고 작업 처리 시간의 감소가 가능하다
- 명령어당 실행 클록 수(CPI)와 클록 주기를 파이프라인 구조를 이용하여 감소시킬 수 있다
* RISC 프로세서의 구조적 특징
- 명령어의 1 사이클 실행을 위한 파이프라인 구조, 메모리 참조를 위한 온칩 캐쉬(CPU내 메모리 구현, 명령어 캐쉬, 자료 캐쉬로 구성)
- 간단한 명령 코드와 주소 지정 모드 및 하드와이어 적 제어 장치
- 신속한 오퍼랜드 참조/문맥 전환을 위한 레지스터 집합 (중첩된 레지스터 윈도우)
- 실수 연산의 별도 처리를 위한 코프로세서(Co-processor)
* RISC 파이프 라인
- 명령어 사이클은 세 개의 부연산으로 나뉘어 다음과 같은 세 세그먼트로 구성
> I : 명령어의 fetch
> A : ALU의 동작
> E : 명령어의 실행
파이프라인 CPU 성능 분석
* 이론적으로는 명령어 세그먼트의 횟수가 많아질수록 파이프라인의 이론적 최대 속도가 증가할 것으로 분석 되었으나 실제 상황은 그렇게 단순하지 않다
- 모든 명령어는 동일한 처리 과정(세그먼트의 적용)으로 처리되어야 한다
- 파이프라인을 구성하는 각 단계의 처리 시간이 일정해야 한다
- 모든 명령어는 작성된 순서에 따라 순차적(분기 명령, 함수 호출, 반환 명령 등에 의해 순차성이 깨짐)으로 실행되어야 한다
- 사용 명령어들 사이에는 상호 의존성이 없어야 한다
- 명령어들 처리 시 공유 자원의 충돌이 없어야 한다
출처 : 제로베이스
'공부 Note > 컴퓨터 구조' 카테고리의 다른 글
Chapter 05 메모리 구조 (2) (0) | 2022.02.24 |
---|---|
Chapter 05 메모리 구조 (1) (0) | 2022.02.24 |
Chapter 04 파이프라인과 벡터처리(3) (0) | 2022.02.24 |
Chapter 04 파이프라인과 벡터처리(2) (0) | 2022.02.24 |
Chapter 04 파이프라인과 벡터처리(1) (0) | 2022.02.24 |