SSAFY-CSStudy / OS

SSAFY CS 운영체제 스터디입니다.
12 stars 0 forks source link

[2. 컴퓨터시스템의 구조] 컴퓨터 구조론에서 파이프 라이닝을 쓰는 이유와 효율을 설명하시오 #31

Open SooYoungJi opened 6 months ago

SooYoungJi commented 6 months ago

1Depth

컴퓨터 구조론에서 파이프 라이닝을 쓰는 이유


Answer 파이프 라이닝이란 명령어를 순차적으로 실행하는 프로세서에 적용되는 기술로, 한번에 하나의 명령어만 사용하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어를 실행하는 식으로 동시에 여러개의 명령어를 실행하는 기법입니다. 아래 사진과 같이 같은 단계가 겹치지만 않는다면 각 단계를 동시에 실행할 수 있습니다.
스크린샷 2024-03-04 오후 9 39 14
만약, 파이프라인을 사용하지 않고 단일 사이클 (Single Cycle)을 사용하면 한 명령어가 끝날 때까지 다른 명령어를 실행하지 못하게 됩니다. 아래 사진 처럼 같은 명령어를 실행하더라도 시간이 매우 길어지는 것을 알 수 있습니다. 이에 현재 CPU에서는 명령어를 동시에 실행하는 기법인 파이프라이닝이 중요한 기술로서 자리매김했습니다. 스크린샷 2024-03-04 오후 9 41 24

2Depth

파이프라인에 의한 속도 향상


Answer 파이프라인의 단계수를 k, 실행할 명령어의 수는 N, 각 파이프라인 단계가 한 클록 주기씩 걸린다고 가정하면 전처 명령어 실행시간 T는 다음과 같습니다.
$T=k+(N−1)$
즉 첫번째 명령어를 실행하는데 k주기 걸리고, 나머지 N-1개의 명령어 개수만큼 한 주기씩 추가됩니다. 한편 파이프라인을 적용하지 않았을 경우 소요시간은 단순히 k*N일 것입니다. 따라서 파이프라인 속도 향상은 다음과 같이 얻어집니다.
$Sp = \frac{kN}{k+(N-1)}$
명령어의 수 N이 무한히 증가할 때 다음 수식이 완성됩니다.
$\displaystyle\lim_{N \to \infty} Sp = \displaystyle\lim_{N \to \infty} \frac{kN}{k+(N-1)} = k$
즉, 파이프라인의 단계 수만큼 속도가 빨라지는데 경우에 따라 이 효과를 100% 충족할 순 없습니다.

Additional Explain

파이프라인 해저드(Pipeline Hazard)
명령어 파이프라인이 CPU 성능향상에 실패하는 경우를 파이프라인 해저드(위험)라고 합니다.

<파이프라인 해저드의 3가지 종류>
1. 구조적 해저드 - 하드웨어가 여러 명령어들의 수행을 지원하지 않기 때문에 발생, 자원 충돌(Resource Conflicts) 2. 데이터 해저드 - 명령어 간의 의존성에 의해 발생 - RAW, WAR, WAW 해저드가 존재 3. 제어 해저드 - 분기(jump나 bruch 등) 명령어에 의해서 발생. (분기를 결정하는 시점에 잘못된 명령어 파이프라인이에 있을 경우)