명령어 파이프라인(Instruction Pipeline) 혹은 파이프라이닝(Pipelining)은 프로세서로 가는 명령어들의 움직임, 또는 명령어를 수행하기 위해 프로세서에 의해 취해진 산술적인 단계가 연속적이고, 다소 겹쳐서 수행하는 것을 의미한다.
파이프라인 기술이 없다면 프로세서는 메모리에서 명령어를 가지고 온 후, 연산을 수행하고, 다음번 명령어를 메모리로부터 가져오는 식으로 동작해야 하는 매우 비효율적인 방식으로 수행해야 한다. 즉, 명령어를 가져오는 동안에 프로세서의 산술연산 부분은 다음 명령어가 도착되기를 기다리며 쉬어야만 한다는 것이다.
파이프라인을 쓰게 되면, 하나의 명령어를 처리하는 동안 다음번 명령어를 가져올 수 있으며, 그것을 다음 명령어 연산이 수행될 수 있을 때까지 프로세서 근처의 버퍼에 가져다놓는다. 즉 쉽게 말해 병렬적으로 작업을 수행할 수 있다
프로세스의 효율적인 처리를 위한, 파이프라인의 개요
파이프라인의 개념
- 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하여 동시에 여러 개의 명령어를 실행하는 기법
파이프라인의 구성도
- Depth : 파이프라인 stage 수, Instruction 당 stage 수를 늘려서, Clock Cycle Time 감소시켜, Clock rate 증가시킴
- Width : 파이프라인 stage 마다 처리되는 instruction 수. Cycle 당 처리되는 Instruction 수 늘려, IPC 증가
파이프라인의 종류
단일 파이프라인
- 명령어 수행과정에서 각 단계를 한번씩만 중첩하여 다수의 동작을 동시에 수행
Super Pipeline
- 하드웨어 장치의 연속 사용을 위해 몇 가지 동작을 명령 수행과정에서 각 단계에 엇갈리게 중첩하는 기술
Super Scalar
- 프로세서 내에 pipeline 된 ALU를 여러개 포함, 매 사이클마다 다수의 명령어들이 동시에 실행되는 기술
- 정수 유닛, 실수 연산 유닛, 분기 예측 유닛 등 구성
Super Pipelined Super Scalar
- 슈퍼스칼라 기법에 슈퍼 파이프라인 기법을 적용하여 수행시간을 보다 더 단축한 기법
VLIW(Very Long Instruction Word)
- 동시에 수행될 수 있는 명령어들을 컴파일러 수준에서 추출, 하나의 명령어로 압축 수행하는 병렬처리 기술
- EPIC 기법 : 컴파일러가 소스 코드로부터 명시적 병렬성을 찾아 병렬처리가 가능하도록 기계어 코드 생성
- FI, DI는 한 회로에서 수행되며, EI만 여러 개의 기능 UNIT에 분할, 수행
파이프라인간 비교
구분 |
Super Pipeline |
Super Scalar |
VLIW |
명령어 해독 |
별개 해독, 동시 인출 |
별개 해독, 동시 인출 |
하나의 회로에서 인출, 해독 |
명령어 밀도 |
클럭 주파수에 좌우 |
ALU 수에 좌우 |
병렬성에 따라 좌우 |
병렬성 검출 |
실행 시 |
실행 시 |
컴파일 시 |
문제점 |
명령어 병렬성에 따라 성능이 좌우됨 |
- ALU : Arithmetic Logic Unit, 산술논리 연산장치
키워드
단일 Pipeline, Super Pipeline, Super Scalar, Super Pipelined Super Scalar, VLIW
'정보처리기술사 > 컴퓨터구조,OS' 카테고리의 다른 글
파이프라인 해저드(Pipeline Hazard) (1) | 2021.05.22 |
---|---|
다중 프로세스의 무한대기, 교착상태(Deadlock) (0) | 2020.11.29 |
장치 상태 변화에 대응하는 인터럽트(Interrupt) (0) | 2020.09.28 |
병렬 컴퓨터의 시간 계산, 암달의 법칙(Amdahl's Law) (0) | 2020.04.24 |
메모리를 분리한 폰노이만 개선 구조, 하버드 아키텍처 (0) | 2019.12.10 |