병렬처리
병렬처리는 컴퓨터 시스템의 계산속도 향상을 목적으로 동시 데이터 처리기능을 제공하는 광법위한 개념의 기술을 의미한다.
파이프라인
- 병렬처리 방법에는 여러가지가 있는데 그 중 파이프 라인 처리는 하나의 프로세스를 서로 다른 기능을 가진 여러 개의 서브프로세스로 나누어 각 서브 프로세스가 동시에 서로 다른 데이터를 취급하도록 하는 기법이다.
- 이는 명령어 사이클에서 적용되는데, 여러개의 명령어가 중첩되어 실행되도록 구현할 수 있으며, 수행 단계별로 2단계, 4단계, 6단계 명령어 파이프라인이 있다.
- 이론적으로는 파이프 라인에서 명령어 사이클을 여러단계로 나눌수록 동시에 많은 명령어가 처리되지만, 적어도 파이프라인을 설계할 시 명령어 사이클이 순차적으로 실행되는 것을 고려해서 설계해야 한다.
명령어 사이클
1. 기억장치에 저장된 명령어를 인출
2. 명령어 해독, 연산코드와 오퍼랜드 필드 분리
3. 오퍼랜드 필드에서 실제 피연산자가 포함된 유효주소 찾아냄
4. 유효주소로 메모리에 저장된 실제 피연산자 인출
5. 연산을 실행해 명령어 수행을 완료
6. 연산 결과 저장
2단계 명령어 파이프라인
명령어 사이클을 2단계로 나누어 실행하는 방법이다. 명령어 인출단계와 명령어 실행 단계라는 2개의 독립적인 파이프라인 모듈로 분리하여 수행하는 방법이다.
1. 명령어 실행 흐름도
가. 첫 번째 클록 주기에서 명령어 인출 단계가 실행된다.
나. 두 번째 클록 주기에서는 인출해 온 명령어 실행단계가 수행됨과 동시에 두 번쨰 명령어 인출 단계가 수행된다.
다. 세 번째 클록 주기에서는 두 번째 명령어가 실행됨과 동시에 세 번째 명령어를 인출해 온다.
2. 2단계 명령어 파이프라인의 특징
가. 두 번째 클록 주기에서부터 이전 명령어 실행단계와 현재 명령어 인출 단계가 동시에 수행된다.
나. 명령어 사이클을 인출과 실행 단계가 중첩되도록 하면 명령어의 처리속도가 2배 향상될 수 있다.
다. 두 단계의 처리시간이 항상 동일해야 한다는 제약이 있다.
4단계 명령어 파이프라인
명령어 사이클을 4단계로 나누어 실행하는 방법이다. 명령어 인출, 명령어 해독, 오퍼랜드 인출, 명령어 실행 단계로 나누어진다.
1. 명령어 실행 흐름도
명령어 인출 ---> 명령어 해독 ---> 오퍼랜드 인출 ---> 명령어 실행
가. 명령어 인출에서는 명령어를 기억장치로부터 인출하는 과정이다.
나. 명령어 해독에서는 해독기를 이용해 인출된 명령어를 해석하는 과정이다.
다. 오퍼랜드 인출에서는 해석된 명령어에 의해 기억장치의 참조가 필요하면 오퍼랜드를 인출해 오는 과정이다.
라. 명령어 실행에서는 해석된 결과로서 지정된 연산을 수행하는 단계이다.
2. 4단계 명령어 파이프라인의 특징
가. 두 번째 클록 주기부터 명령어 단계가 중첩되어 병렬로 처리된다.
나. 최대 4개의 단계가 동시에 처리되면서 2단계 명령어 파이프라인보다 더 많은 중첩으로 인해 처리속도가 향상될 수 있다.
6단계 명령어 파이프라인
명령어 사이클을 6단계로 나누어 실행하는 방법이다. 명령어 인출, 명령어 해독, 오퍼랜드 계산, 오퍼랜드 인출, 명령어 실행, 명령어 저장단계로 이루어 진다.
* 그리기가 너무 어려워 6단계 파이프라이닝 이미지는 발췌했습니다.
1. 명령어 실행 흐름도
명령어 인출 ---> 명령어 해독 ---> 오퍼랜드 계산 ---> 오퍼랜드 인출 ---> 명령어 실행 ---> 명령어 저장
가. 4단계 파이프라인에서 2가지 단계(오퍼랜드 계산, 명령어 저장)가 포함되었다.
나. 오퍼랜드는 피연산자로서 일반적인 데이터 값뿐만 아니라 주소일 수도 있기 때문에 실제 사용되는 유효주소를 찾는 계산을 하는 단계가 오퍼랜드 계산 단계이다.
다. 명령어를 저장하는 단계가 명령어 저장 단계이다.
2. 6단계 명령어 파이프라인의 특징
가. 두 번째 클록 주기부터 명령어 단계가 중첩되어 병렬로 처리된다.
나. 최대 6개의 단계가 동시에 처리되면서 4단계 명령어 파이프라인보다 더 많은 중첩으로 인해 처리속도가 향상될 수 있다.
* 파이프라인의 단계 수를 늘리면 명령어의 실행 속도가 향상될 수 있음을 알 수 있다. 하지만 이러한 파이프라인의 성능을 최대로 하기 위해서는 몇 가지 제한이 따른다.
파이프라인의 속도 향상 위한 제한
파이프라인을 통해 속도향상을 얻기 위해서는 다음과 같은 조건을 만족해야 한다.
1. 모든 단계에서의 실행시간이 같아야 한다.
2. 래치시간이 각 단계의 실행시간보다 무시할 정도로 작아야 한다.
3. 실행되어야 할 명령어의 수가 많아야 한다.
4. 2개 또는 그 이상의 명령어가 같은 단계에서 같은 하드웨어에 동시에 접근하지 않아야 한다.
5. 명령어는 정해진 순서대로 수행되어야 한다.
* 래치시간: 하나의 명령어를 실행하고 다음 명령어를 실행하는 사이에 필요한 시간
1,2,3번의 경우에는 조건을 만족시킬 수 있지만, 4,5번의 경우 조건을 만족시키가 쉽지만은 않다.
4번의 경우에는 하나의 사이클 동안에 명령어 인출을 위한 기억장치 접근과 실행 결과를 쓰기 위한 기억장치 접근이 동시에 일어나는 경우가 발생한다.
5번의 경우에는 분기 명령어가 실행되면 그 결과에 따라 명령어의 실행순서가 바뀔 수 있는 위험이 있다.
결론
파이프 라인을 사용하여 속도향상을 얻을 수 있는 방법이 있지만, 몇가지 제한요소로 인해 오히려 속도가 저하될 수도 있다.
그러나 이러한 파이프라인 속도 저하를 초래하는 제한 요소는 명령어 실행을 지연시키거나, 분기 명령어를 미리 예측하여 처리하는 방법 등으로 해결이 가능하며, 파이프라이닝의 궁극적인 목적이 속도 향상을 도모할 수 있는 방법이 존재한다.
< 참고자료 >
https://www.youtube.com/watch?v=EdTtGv9w2sA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4
[도서] 컴퓨터구조 - 김형근, 손진곤 지음 -
<Computer structures> chapter 11, 파이프라이닝 end>
'CS(Computer science) > 컴퓨터 구조&운영체제' 카테고리의 다른 글
제어장치 (1) | 2024.07.03 |
---|---|
처리장치 (1) | 2024.07.01 |
중앙처리장치(CPU) (0) | 2024.06.30 |
Deadlock (0) | 2020.02.15 |
프로세스 동기화 및 상호배제 (0) | 2020.02.02 |