패스트캠퍼스

[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 21회차 미션

돌맹이시터 2020. 11. 8. 19:05

 

 

환급미션 21일째...

 

 

 

컴퓨터 구조 - 파이프라인과 벡터처리 - 파이프라인 cpu의 성능 분석 -1

컴퓨터 구조 - 파이프라인과 벡터처리 - 파이프라인 cpu의 성능 분석 -2

 

 

 

 

지난 시간에 산술 파이프라인과 명령어 파이프라인에 대해 수업이 진행되었는데,

일반적으로 파이프라인의 대다수가 명령어 파이프라인이라고 한다.

 

이러한 pileline CPU 의 성능 분석에 관한 강의가 진행되었다.

 

 

 

 

- 파이프라인 분기 예측

 

명령어 파이프라인이 정상적인 동작에서 벗어나게 되는 요인에는 크게 세 가지가 있다.

 

 

* 자원 충돌 (resource conflict) 

두 개의 세그먼트가 동시에 메모리에 접근하려고 할 때 문제가 될 수 있다.

이 때 충돌이 일어나거나, 혹은 아무런 작업도 일어나지 않는 dead lock(교착 상태)에 들 수 있는데,

->명령어 메모리와 데이터 메모리를 분리함으로써 대부분 해결된다.

 

 

* 분기 곤란 (branch difficulty)

분기 명령어와 같이 PC (program counter) 값을 변경시키는 명령어에 의해 발생한다.

 

 

* 데이터 의존성 (data dependency) / 주소 의존성 

어떤 명령어가 이전 명령어의 결과값에 의존하여 수행될 때, 그 결과값이 아직 준비되지 않은 경우에 발생한다.

이를 underflow 상태라고 하는데, 흔히 말하는 overflow와 반대되는 개념이다.

ex) 

FO에 의해 피연산자를 fetch하려는데 아직 EX 세그먼트로부터 데이터가 만들어지지 않은 경우

 

위의 상황과 유사하게 주소 의존성의 경우

마이크로 연산 시,

레지스터 간접모드를 사용하는 명령어의 경우

이전 명령어가 주소값을 메모리에서 로드하라는 명령어라면 곧바로 피연산자를 fetch하지 못하고 기다리게 되는 것과 같은 상황을 말한다

 

 

-> 데이터 의존성 해결 방법에는 2가지가 있다

 

 

하드웨어 인터락 (hardware interlock)

: 명령어의 피연산자가 파이프라인에서 앞서간 명령어의 목적지와 일치하는지 검사하는 회로

-> 상황이 감지되었을 때 피연산자가 준비되지 않은 명령어는 충돌을 일으키지 않도록 충분한 클럭 사이클을 두어 지연시킨다.

( 중간에 아무런 작업도 일어나지 않는 명령어를 집어넣어서 딜레이시킨다 )

 

 

오퍼랜드 포워딩 (operand forwarding)

-> 충돌을 감지했을 때 특별한 통로를 통해 직접 파이프라인 세그먼트에 전달

( 처리방안을 미리 마련해두고 충돌 발생 시 회피 가능 )

 

 

 

 

 

- 분기 명령어의 처리

 

 

조건 분기 / 무조건 분기의 발생은 파이프라인의 정상적인 프로그램 순서를 바꾸기 때문에 성능을 저하시키게 된다.

ex) go to 와 같은 명령어로, 전체적인 프로그램 흐름을 깨게 된다.

 

 

-> 순차적으로 처리될 명령어를 분기의 목표가 되는 명령어와 함께 저장한다. (용량이 커지고 프로그램이 복잡해진다는 단점이 있다)

 

-> 분기 목표 버퍼 (BTB, branch target buffer) 사용 : fetch segment에 속해있는 associative memory (주소가 아닌, 내용에 의해 검색이 가능한 기억장치)를 사용한다. - 이전에 실행된 분기 명령어와 분기 목표 명령어를 저장하여 활용한다.

 

-> 분기 예측 (branch prediction) : 실행 결과를 분석하여 특정 패턴을 분석하고, 이를 통해 분기가 발생할 지점을 예측하게 된다. 

예측이 제대로 이루어질 경우 명령어 fetch 과정에서 신속하게 오퍼랜드 제공 및 fetch가 수월해질 수 있지만,

예측이 실패했을 경우 시간 지연과 같은 패널티가 발생할 수 있다.

 

 

 

 

 

- RISC Processor (reduced instruction set computer)

 

 

실행 명령어 수는 증가하지만, 작업 처리 시간이 감소된다.

명령어당 실행 클록 수 (CPI, clock per instruction), 클록 주기를 파이프라인 구조를 이용하여 감소시킬 수 있다.

 

 

*RISC processor 구조적 특징

 

명령어의 1 사이클 실행을 위한 파이프라인 구조, 메모리 참조를 위한 on-chip cache (cpu 내에 메모리 구현, 명령어 캐쉬, 자료 캐쉬로 구성)를 갖는다.

 

간단한 명령코드와 주소지정모드 및 하드웨어적 제어장치로 이루어져있다.

 

오퍼랜드 참조/ 문맥 전환을 신속하게 하기 위해 중첩된 레지스터 윈도우로 구성되어 있다.

 

공동 프로세서 (co-processor)를 지녀 실수 연산을 별도로 처리한다.

 

 

-> 이러한 구조적인 특징들로 인해 파이프라인 설계에 용이하다.

 

 

 

 

* RISC pipeline

 

 

 

일반적으로 3개의 segment로 구성된다.

I : 명령어의 fetch

A : ALU(arithmetic logic unit) 동작

E : 명령어의 실행

 

 

위의 표에서 보이는 3번 과정이 delay가 이루어지는 과정을 나타낸다.

 

 

 

 

 

 

 

올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE