[컴퓨터구조] ch.9 파이프라인과 벡터 처리 (1) 파이프라인
Mano의 컴퓨터시스템구조 제3판, 프로텍 미디어, 김종상 옮김 도서를 정리, 요약하는 글입니다.
1. 병렬처리
- 병렬처리는 컴퓨터 시스템의 계산 속도 향상과 처리율(throughput) 증가를 목적으로 동시 데이터 처리 기능을 제공하는 기술을 의미한다.
- 파이프라인 처리는 산술 연산의 세부 동작이나 컴퓨터 명령어 사이클의 각 단계를 중첩시키기 위한 기술이다.
2. 파이프라인
- 파이프라인은 하나의 프로세서를 서로 다른 기능을 가진 여러 개의 서브프로세서로 나누어 각 서브프로세서서가 동시에 서로 다른 데이터를 취급하도록 하는 기법이다. 각 세그먼트에서 수행된 연산 결과는 그 다음 세그먼트로 연속적으로 넘어가게 되어 데이터가 마지막 세그먼트를 통과하게 되면 최종적인 연산 결과를 얻게 된다. 각 세그먼트 마다 연산 결과를 각 레지스터들에 보관할 수 있다.
- 파이프라인 기술은 매번 다른 데이터 집합을 동일한 태스크에 적용시켜 여러 번 반복하는 응용에 효과적이다.
- 위 그림은 파이프라인 동작을 space-time 표에 의해 설명하고 있다. 이 표에서는 T1 ~ T6까지 6개의 태스크가 있다. T1은 처음에 segment 1에서 처리되고 있고 그 다음 클럭에서는 segment 2에서 처리되고 그 다음 클럭에서는 segment 3에서 처리된다. 그리고 4 클럭 후 segment 4에서 T1이 처리되고 이 이후부터는 매 클럭마다 하나씩 태스크가 완료된다. 즉 일단 파이프라인이 다 채워진 이후부터는 매 클럭마다 출력값을 얻을 수 있다.
- 예를 들어, 수행 시간이 다음과 같다.
클럭 사이클 시간 : tp
세그먼트 개수 : k개
태스크 수 : n개
(1) 파이프 라인의 경우
- 첫 번째 태스크 T1을 완료하는 데 걸리는 시간 : ktp
- 나머지 n-1 태스크 완료하는 데 걸리는 시간 : (n - 1)tp
- 모든 태스크 완료하는 데 걸리는 클럭 사이클 수 : k + (n - 1)
(2) 비파이프라인의 경우
- 모든 태스크 완료하는 데 걸리는 시간 : ntn
(3) 파이프라인으로 인한 속도 증가율
- S = ntn / (k + n - 1)tp
이때 태스크 수가 증가하면 n이 계속 커지므로 k + n - 1이 n에 근사하게 되어 속도증가율은 다음과 같다.
- S = tn / tp
즉 파이프라인으로는 이론적 최대 속도 증가율이 파이프라인의 세그먼트 수(k)와 같다. 하지만 실제적으로는 최대 속도로 수행되지 못하게 된다. 각 세그먼트의 부연산을 수행하는 시간이 서로 다르고, 클럭 사이클은 최대 전파 시간을 갖는 세그먼트의 지연과 동일하게 결정해야 해서 다른 세그먼트들은 다음 클럭을 기다리는 동안 시간을 낭비해야 한다. 그렇다 하더라도 파이프라인 기술이 순수하게 순차적으로 동작하는 회로보다 수행 속도가 빠르다는 것은 사실이다.