파이프라인이란 무엇인가?
중앙처리장치(CPU)의 작동원리

컴퓨터 구조 분야에는 일곱가지의 위대한 아이디어가 있다. (Computer Organization and Design Mips Edition, David A. Patterson) 

설계를 단순화하는 추상화(abstraction)
자주 생기는 일을 빠르게(common case fast)
병렬성을 통한 성능 개선(parallelism)
파이프라이닝을 통한 성능 개선(pipelining)
예측을 통한 성능 개선(prediction)
메모리 계층구조(memory hierarchy)
여유분을 이용한 신용도 개선(dependability)

이 중에서 파이프라이닝은 컴퓨터 구조에서 많이 볼 수 있는 병렬성의 특별한 형태이다. 연탄나르기를 할때 모두가 서있고 연탄을 바로 옆사람에게 넘기는 구조라고 생각하면 된다. 

더 자세히 이야기하자면, 여러 명령어가 중첩되어 실행되는 구현 기술이다. 구체적인 예시로 세탁을 할 때를 들어보겠다. 빨래를 많이 안해본 사람들은 다음과 같이 파이프라이닝되지 않은(nonpipelined) 세탁 방법을 사용한다.

1. 세탁기에 한 뭉치의 더러운 옷을 넣는다.
2. 세탁기 작동이 끝나면 젖은 옷을 건조기에 넣는다.
3. 건조기 작동이 끝나면 건조된 옷을 탁자 위에 놓고 접는다.
4. 접는 일이 끝나면 같은 방 친구에게 옷을 옷장에 넣어달라고 부탁한다.
5. 이 사이클을 반복한다.

그렇다면 파이프라이닝된 세탁 방법은 무엇일까?

 

세탁기 작동이 끝나고 젖은 옷을 건조기에 넣을때, 다른 옷감을 세탁기에 넣어 세탁하는 것이다. 이런 식으로 병렬되게 세탁을 하면 전체 태스크의 시간이 줄어든다.

파이프라이닝되지 않은 세탁(위)과 파이프라이닝된 세탁(아래)

중요한 점은 파이프라이닝을 한다고 해서 각 단계에서 소요되는 시간이 줄어드는 것은 아니다. 파이프라이닝되기 전의 세탁기 작동시간이 1시간이었다면, 파이프라이닝되었을 때에도 1시간의 작동시간을 갖는다.

할 일이 충분히 많고, 위의 그림처럼 모든 단계가 거의 같은 시간이 걸린다면, 파이프라이닝에 의한 속도 향상은 파이프라이닝의 단계 수와 같다. 위의 경우에는 세탁, 건조, 개기, 넣기의 네 단계가 있으므로 단계 수는 4이다. 

프로세서에서는 단계가 다음처럼 나뉘어진다.

1. 메모리에서 명령어를 가져온다
2. 명령어를 해독하는 동시에 레지스터를 읽는다. MIPS 명령어는 형식이 규칙적이므로 읽기와 해독이 동시에 일어날 수 있다.
3. 연산을 수행하거나 주소를 계산한다.
4. 데이터 메모리에 있는 피연산자에 접근한다.
5. 결과값을 레지스터에 쓴다.

프로세서는 논리적으로 데이터패스와 제어 유닛의 두 부분으로 구성된다. 각각은 프로세서의 근육과 두뇌에 해당한다. 데이터패스는 연산을 수행하고, 제어 유닛은 명령어가 뜻하는 바에 따라 데이터패스, 메모리, 입출력장치가 할 일을 지시한다. 프로세서 내부에는 또 다른 종류의 메모리가 있는데 이것을 캐시메모리라고 한다. 캐시 메모리는 DRAM의 버퍼 역할을 하는 작고 빠른 메모리이다.

CPU 내부 구조

 

'스터디 관련' 카테고리의 다른 글

CS 스터디 04회차, ~ 7월 7일(목)  (0) 2022.07.07
CS 스터디 03회차, ~ 6월 30일(목)  (0) 2022.06.30
CS스터디 01회차, ~06월 02일(목)  (0) 2022.06.02
2/3(수) 과제  (0) 2021.02.03
1/6일 스터디 과제  (0) 2021.01.06

+ Recent posts