[컴퓨터 구조] 파이프라인(Pipeline)

2020. 6. 12. 22:47컴퓨터 구조

단일 사이클


한 클럭 동안 하나의 명령어를 수행한다.

가장 길게 실행되는 명령어한 클럭의 기준이 된다.

lw = 가장 길다.
Instruction Memory → register file → ALU → MEM→ register file

=

다른 명령어가 빨리 끝나더라도

클럭 시간이 줄어들지 않는다.

설계원칙 3, 자주일어나는 일을 빠르게

원칙에 어긋난다.

그러므로

파이프라인을 통해 성능 향상 시키자

 

단일 사이클 구현은 오늘날 왜 사용되지 않는가?

단일 사이클 구현

클럭 사이클모든 명령어에 대해 같은 길이를 같는다.

클럭 사이클이 너무 길다
= 
비효율



파이프라이닝

여러 명령어가 중첩되어 실행

 

파이프라인(Pipeline)


파이프라인은 병렬 처리 방식이라고 말할 수 있다.

 

아래는 세탁기로 예를 든 파이프라인의 구조를 설명한다.

세탁, 탈수, 옷 개기, 옷장에 넣기를 세탁의 한 사이클이라고 생각하자.

단일 사이클의 경우

한 사이클이 끝나야 다음 세탁물을 세탁할 수 있다.

그러나 파이프라인을 사용한다면,

세탁이 끝나 놀고있는 세탁기에 다음 세탁물을 세탁하므로써

여러 행동을 중첩해서 실행할 수 있게된다.

 

MIPS 파이프라인


MIPS의 파이프라인은 5단계로 구성되어 있다.

1. IF(Instruction Fetch)
메모리에서 명령어를 가져옴


2. ID(Instruction Decode)
명령어를 읽고/해독, 레지스터를 읽음.

MIPS명령어는 형식이 규칙적이어서
읽기/해독이 동시에 일어난다.

3. EX(Execute)
연산 수행 or 주소 계산


4. MEM(Memory access
데이터 메모리에 있는 피연산자의 접근


5. WB(Writeback) 
결과값을 레지스터에 쓴다.

MIPS


MIPS(Microprocessor without interlocked pipeline stage)는

그 이름에서 찾아볼 수 있듯이 파이프라인 실행을 위해 설계되었다.

1. 모든 MIPS 명령어의 길이가 같다.
IF 단계에서 명령어를 가져오고
ID 단계에서 해독하는 것을 훨씬 쉽게해준다. 

2. 명령어의 형식이 몇가지되지 않는다.
명령어끼리 레지스터의 위치가 같아
ID단계에서 명령어 읽고/해독
레지스터 읽기를 같이 수행할 수 있다.

3. loadstore 명령어에서만 메모리를 사용한다.
메모리에 있는 피연산자에서 바로 연산수행이 가능했다면
EX, MEM 단계가
주소단계, 메모리 단계, 실행단계로
확장되어야 했을 것이다.

4. 피연산자가 메모리에 정렬되어있으므로
메모리에 두번 접근할 이유가 없다.

파이프라인 Diagram

 

파이프라인 데이터패스

 

제어유닛을 포함한 파이프라인