파이프라이닝(pipelining)은 여러 명령어가 중첩되어 실행되는 구현 기술이다.
RISC-V 명령어에서는 전통적으로 5단계가 걸린다.
- 메모리에서 명령어 가져온다.
- 명령어 해독하는 동시에 레지스터를 읽는다.
- 연산 수행하거나 주소 계산
- 데이터 메모리에 있는 피연산자에 접근
- 결과값을 레지스터에 쓴다.
4번 5번 과정의 경우 필수는 아니며 명령어에 따라서 실행되지 않을 수 있다.
단일 사이클과의 성능을 비교해보자.
단일 사이클 모델에서는 모든 명령어가 한 클럭 사이클 이내에 실행된다. 따라서 가장 느린 명령어를 수용할 수 있을 만큼 클럭 사이클이 충분히 길어야 한다. 가장 느린 명령어는 lw로 위의 표에서 800ps가 걸린다.
파이프라인 구현에서는 모든 단계가 한 클럭 사이클에 처리된다. 따라서 클럭 사이클은 가장 느린 동작을 수용할 만큼 충분히 길어야 한다. 최악의 경우인 200ps를 한 클럭 사이클로 잡는다.
보통 명령어의 수가 많아질 수록, 이상적인 조건 하에서 파이프라이닝되지 않은 컴퓨터와 파이프라인 컴퓨터에서 실제 프로그램의 실행시간 비율은 명령어 사이의 시간 비율과 비슷하다. (800/200 = 4.0)
파이프라이닝은 개별 명령어의 실행시간을 줄이지는 못하지만 대신 명령어 처리량을 증대시킴으로써 성능을 향상시킨다.
RISC-V 명령어 집합은 원래 파이프라인 실행을 위해 설계된 것으로 다음과 같은 특징을 갖는다.
- 모든 RISC-V 명령어는 같은 길이를 갖는다.
- 명령어 형식이 몇 가지 안되고, rs1, rs2 필드가 항상 같은 위치에 있다.
- 메모리 피연산자가 적재/저장 명령어에서만 나타난다.
다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황이 있다. 이러한 경우를 hazard라고 부르는데 세 가지 종류가 있다. 여기서는 간단히 살펴보기만 하자.
- structural hazard : 같은 클럭 사이클에 실행하기를 원하는 명령어의 조합을 하드웨어가 지원할 수 없어 발생한다.
- data hazard : 어떤 단계가 다른 단계가 끝나기를 기다려야 하기 때문에 파이프라인이 지연되는 경우 발생한다.
- control hazard : 다른 명령어들이 실행 중에 하나의 명령어의 결과값에 기반을 둔 결정을 할 필요가 있을 때 일어난다.
자세한 hazard와 그 해결 방법은 추후에 더 자세히 알아보도록 할 것이다.
'Computer > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] Pipelining(3): 파이프라인 제어 (0) | 2024.06.01 |
---|---|
[컴퓨터구조] Pipelining(2): 파이프라인 데이터패스 (0) | 2024.06.01 |
[컴퓨터구조] Processor(3): 제어 유닛 (control unit) (0) | 2024.06.01 |
[컴퓨터구조] Processor(2): 데이터패스 만들기 (0) | 2024.05.30 |