명령어 파이프라인이란?
하나의 명령어 사이클을 여러 단계로 나누고 각 단계에서 동시에 다른 세부 작업을 처리하도록 설계하는 것이다.
파이프라인을 이용해 CPU 성능을 높일 수 있다.
CPU 기본 실행 구조
Instruction Fetch(인출)
실행할 명령어를 메모리에서 읽어 CPU로 가져온다.
Instruction Decode(해석)
인출한 명령어에 포함된 데이터를 가져오고, 명령어를 해독한다.
Instruction Execution(실행)
명령어 실행
Writeback(저장)
실행 결과를 저장한다.
위의 4단계의 실행 구조가 기본이다. 이 4개의 단계로 파이프라인을 적용하면 어떻게 되는지 알아보자.
아래 4개 단계의 명령어를 실행할 때 파이프라인 적용 유무에 따라 어떻게 달라지는지 알아보자
- IF : Instruction Fetch(명령어 인출)
- ID : Instruction Decode(명령어 해석)
- EX : Execution(실행)
- WB : Write Back(결과 저장)
파이프라인 기법을 사용하지 않았을 때
명령어 3개를 실행하는데, 하나의 명령어가 모두 종료된 후 다른 명령어를 실행한다.
하나의 단계를 실행하는데 1사이클이 걸린다고 했을 때,
명령어 1, 2, 3을 실행할 때 각각 4사이클씩 걸리서 총 12사이클이 소모된다.
4단계 파이프라인 구조
파이프라인 구조를 사용시 아래와 같이 병렬적으로 처리가 가능하여 처리 속도가 빨라진다.
위에서 3개에 명령어를 실행하는데 12사이클이 걸린 것에 반해,
6개의 명령어를 실행하는데 9사이클이 걸린 것을 볼 수 있다.
단계 수를 늘려서 더 빠르게 연산 가능
아래처럼 단계 수를 늘리면, 한 단계를 수행하는 데 걸리는 시간이 더 짧아지기 때문에
가로축은 위의 다른 그림들과 단위가 다르다고 생각하면 된다.
단계를 더 세세하게 나누게 되면 성능을 더 향상 시킬 수 있다.
요즘은 수십단계로 나누지만, 무한정 늘리지는 않는다.
요즘 CPU는 여러개의 명령어 파이프라인과 연산 파이프라인을 갖도록 설계된다고 한다.
반응형
'컴퓨터 공학' 카테고리의 다른 글
[Web/암호화] Web개발자 관점에서 보는 여러가지 암호화 방식 (RSA / SHA / AES) (0) | 2024.10.08 |
---|---|
[CS/Network] TCP와 UDP 프로토콜 (0) | 2023.07.20 |
[CS] CPU의 구조와 동작 원리, 데이터 접근 (0) | 2023.07.12 |
[CS] 메모리 계층과 저장 장치(RAM, Register,Cache, HDD) (0) | 2023.07.11 |
[CS/디지털논리회로] 덧셈기(adder), 반 가산기, 전 가산기 (0) | 2023.07.11 |