명령어 파이프라이닝과 해저드 #259
Replies: 2 comments
-
명령어 파이프라인명령어 파이프라인은 여러 명령어를 동시에 처리하기 위해 각 명령어를 여러 단계로 분할하고, 각 단계를 다른 명령어와 겹쳐서 실행하는 방법이다. 전통적인 CPU는 한 번에 하나의 명령어를 처리하는 반면, 파이프라인 기법을 사용하면 여러 명령어를 각기 다른 단계에서 동시에 처리할 수 있다. 하나의 명령어는 여러 단계에 걸쳐 실행된다. 각 단계는 비슷한 시간 간격으로 나눌 수 있다. 주로 다음 4단계를 거치며 CPU에 따라 다르다.
CPU는 각 단계를 동시에 실행할 수 있다. 명령어 A를 인출하는 동시에 명령어 B를 해석하고, 명령어 C를 실행할 수 있다. 이처럼 명령어를 겹쳐서 실행하면 순차 실행보다 효율적이다. 파이프라인 위험(해저드)CPU의 명령어 파이프라인에서 성능 저하를 일으키는 문제를 말한다. 파이프라인 해저드는 파이프라인이 최적의 성능으로 실행되지 못하게 만드는 상황을 일으키며, 주로 명령어 간의 종속성이나 자원 충돌에서 발생한다. 1. 데이터 위험 데이터 의존성에 의해 발생한다. 아래 상황에서 명령어 B는 명령어 A의 연산 결과인 R1에 의존하고 있다. 명령어 A의 결과 저장 단계가 완료되어야 명령어 B는 R1을 사용할 수 있다.
2. 제어 위험 분기(branch)나 조건문 등으로 인해 다음에 실행할 명령어가 무엇인지 결정되지 않아 파이프라인이 멈추게 되는 상황이다. 분기 예측 기법이 사용되기도 하지만, 예측에 실패하면 계산된 파이프라인은 모두 버려야 해서 성능 저하가 발생한다. 3. 구조적 위험 서로 다른 명령어가 동시에 ALU, 레지스터와 같은 CPU 자원을 사용하려 할 때 발생한다. 한 명령어가 자원을 사용하면 다른 명령어는 멈추게 되어 파이프라인은 동작을 멈추고 성능 저하가 발생한다. |
Beta Was this translation helpful? Give feedback.
-
명령어 파이프라이닝(instruction pipelining)은 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계(stage)로 분할하고, 각 하드웨어를 동시에 서로 다른 명령어들을 처리하도록 함으로써 CPU의 성능을 높여주는 기술을 말한다. 이때, 명령어 파이프라인의 분할 단계가 많아질수록 처리 속도가 높아진다. 2-단계 명령어 파이프라인
4-단계 명령어 파이프라인 파이프라인 단계들의 처리 시간이 동일하지 않음으로 인해 발생하는 효율저하를 방지하기 위해서는 단계를 더 많이 분할하여 단계 별 처리 시간을 거의 같아지도록 하는 것이다. 2-단계 파이프라인의 실행 단계를 세부적 동작에 따라 분할하여 다음과 같이 구성하는 경우를 생각해보자. 아래와 같이 4-단계 명령어 파이프라인으로 구성하면 각 단계에서 걸리는 시간들이 거의 같아질 수 있다.
파이프라인 위험(pipeline hazard)
각 위험의 해결 방안은 이곳에서 더욱 자세하게 볼 것 |
Beta Was this translation helpful? Give feedback.
-
.
Beta Was this translation helpful? Give feedback.
All reactions