파이프라인 CPU의 성능 분석 1

2021. 3. 23. 16:14Computer(인강)/컴퓨터 구조

728x90
반응형

안녕하세요 banavi입니다^ㅅ^

오늘은 파이프라인 CPU의 성능분석 첫번째 시간이에요

바로 시작해보도록 하겠습니다

 

 

 

Pipeline CPU의 성능분석

1. 파이프라인 분기예측

2. RISC Processor

3. 파이프라인 CPU 성능 분석

 

 

4.8 파이프라인 분기예측

# 명령어 파이프라인이 정상적인 동작에서 벗어나게 되는 요인

 

1. 자원충돌(Resource conflict) : 두 세그먼트가 동시에 메모리를 접근하려고 하는 데에서 기인한다 -> 명령어 메모리와 데이터 메모리를 분리함으로써 대부분 해결한다.

2. 데이터 의존성(data dependency) : 충돌은 어떤 명령어가 이전 명령어의 결과에 의존하여 수행되는데, 그 값이 아직 준비되지 않은 경우에 발생한다.

3. 분기 곤란(branch difficulty) : 분기 명령어같이 PC의 값을 변경시키려는 명령어에 의해 발생한다.

 

 

# 데이터 의존성

* 데이터나 주소의 충돌은 명령어 파이프라인의 성능을 저하 시키는 요인

1. 데이터 의존성 : 아직 준비되지 않은 데이터를 기다리는 경우(ex. FO에 의해 피연산자를 fetch하려고 하는 경우 아직 EX 세그먼트에 의해 데이터가 만들어지지 않은 경우)

2. 주소 의존성 : 마이크로 연산 시 레지스터 간접모드를 사용하는 명령어는 이전 명령어가 주소값을 메모리로부터 로드하는 명령어라면 곧바로 피연산자를 fetch하지 못하고 기다리게 된다.

 

 

# 데이터 의존성 해결방법

1. 하드웨어 인터락(hardware interlock) : 어떤 명령어의 피연산자가 파이프라인에서 앞서간 명령어의 목적지와 일치하는지를 검사하는회로 -> 이러한 상황이 감지되면 피연산자가 준비되지 않은 명령어는 충돌을 피할 수 있을 만큼 충분한 클럭 사이클을 두어 지연시킨다.

2. 오퍼랜드 포워딩(operand forwarding) : 충돌을 감지하는 경우 특별한 통로를 통해 직접 파이프라인 세그먼트에 전달하는 경우

 

 

# 분기 명령어의 처리

1. 조건 분기 또는무조건 분기 등은 처리 여하에 따라 파이프라인의 정상적인 프로그램 순서를 바꾸어 버리기 때문에 파이프라인 시스템을 채택하고 있는 컴퓨터의 성능을 저하시키는 주 요인으로 간주되고 있다

1) 순차적으로 처리될 명령어를 분기의 목표가 되는 명령어와 함께 저장하는 방법

2) 분기 목표 버퍼(branch target buffer, BTB)의 사용 : fetch 세그먼트에 속해있는 associative memory : 이전에 실행된 분기 명령어와 분기 목표 명령어를 저장하여 활용(loop buffer - 일종의 레지스터)

728x90
반응형