컴퓨터구조와 운영체제

11. 명령어 병렬 처리 기법

waterclean101 2023. 11. 13. 09:13

명령어 병렬 처리 기법

명령어 병렬 처리 기법

멀티코어와 멀티스레드 CPU 처럼 CPU를 조금 더 빠르게 처리할 수 있도록 설계를 하는 것도 중요하지만 어떻게 CPU가 시간 낭비없이 시간을 쓰며 메모리에 있는 명령어들을 빠르게 실행할 수 있는지도 중요하다. 이와 관련해서 공부할 것이 명령어 병렬 처리 기법.

 

명령어 파이프라인

명령어가 CPU에서 처리되는 과정을 비슷한 시간 간격으로 나누면 다음과 같이 나눌 수 있다.

  • 명령어 인출(Instruction Fetch)
  • 명령어 해석(Instrunction Decode)
  • 명령어 실행(Execute Instruction)
  • 결과 저장(Write Back)

같은 단계가 겹치지만 않으면 CPU는 각각의 단계를 동시에 실행을 할 수 있다.

t2이라는 시간 동안에는 하나의 CPU가 해석을 하는 동안에 다른 명령어를 동시에 갖고 올 수 있다. t3에는 하나의 명령어를 실행하는 동안에는 다른 명령을 해석하고 인출을 할 수 있다 즉, 메모리로부터 갖고 올 수 있다. 이런 식으로 명령어 1, 2, 3, 4 겹쳐서 실행을 할 수 있다. 이것이 바로 명령어 파이프라인. 동시에 여러 개의 명령어를 겹쳐서 실행하는 기법이다.

 

파이프라인 위험

명령어 파이프라인이 항상 이상적으로 명령어를 겹쳐서 실행할 수 있는 건 아니다. 때로는 명령어 파이프라인이 이렇게 성능 향상에 실패하는 경우가 있다. 동시에 명령어를 처리할 수 없는 경우도 있다.

  • 데이터 위험: 명령어 간의 의존성 때문에 생겨나는 위험. 즉 명령어들 사이에 의존성이 있어 명령어를 단순하게 병렬로 처리할 수 없는 상황을 데이터 위험이라고 한다.
  • 제어 위험: 프로그램 카운터의 갑작스러운 변화 때문에 야기되는 문제. CPU가 실행하고자 하는 메모리의 주소 번지가 다른 특정 메모리 주소 번지로 실행의 흐름을 바꾸게 되는 명령들이 있다(ex. JUMP, CALL, interupt 등). 기본적으로 명령어들은 순차적으로 가져와서 겹쳐서 실행하게 되는데 프로그램 카운터가 갑자기 특정 메모리 주소로 변경되면 실행하던 명령어는 쓸모가 없어져 버린다.
    • 분기 예측: 프로그램 카운터가 어느 번지로 어디로 점프할 것인지를 미리 예측하는 기술

  • 구조적 위험: 서로 다른 명령과 같은 CPU 부품 이를 테면 ALU나 레지스터를 쓰려고 할 때 발생하는 위험

 

슈퍼스칼라

CPU 내부에 여러 개의 파이프라이닝을 두는 구조. 각각의 코어가 동시에 수행할 수 있는 명령어의 단위를 하드웨어적 스레드라고 했는데 그것이 여러 개 있는 CPU를 멀티스레드 프로세스라고 불렀다. 예를 들어 8코어 16스레드 CPU라고 한다면 한 번에 16개의 명령어를 가져와 해석하고 실행할 수 있는 CPU 라고도 볼 수 있다고 했다. 그런 경우에는 슈퍼스칼라 구조를 사용할 수 있다 그 한 번에 여러 개의 명령어를 인출하고 해석하고 실행하고 저장하고 그리고 이 구조를 겹쳐서 실행을 할 수 있다

 

이론적으로는 이 슈퍼스칼라 기법을 사용하면 파이프라인 개수에 비례해서 처리 속도가 증가한다. 그런데 현실적으로 꼭 그렇지는 않다. 왜냐하면 슈퍼스칼라 기법을 사용을 하면 당연히 관리해야 되는 파이프라인도 여러 개로 증가하고, 그만큼 파이프라인 위험도 증가한다. 그렇기 때문에 반드시 파인개수에 비례해서 처리 속도가 증가하지는 않는다.

 

비순차적 명령어 처리

파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법. 즉 ‘합법적 새치기’. 지금까지 말했던 명령어 처리 기법은 모두 순차적으로 명령어를 처리하는 방식.

아무렇게나 명령으로 순서를 바꿀 수는 없고 의존성이 없는 명령어만 순서를 바꿔서 실행을 할 수 있다. 순서를 바꿔도 전체 프로그램의 실행 결과 실행 흐름에는 영향이 없는 경우에만 바꿔서 명령어를 처리할 수 있는 것. 이렇게 의존성이 없는 명령어의 순서를 바꾸는 것만으로도 파이프라이닝의 중단을 방지할 수 있고 파이프라이닝이 더 원활하게 동작할 수 있다.