[컴퓨터 구조] 명령어 병렬 처리 기법
2023. 3. 17. 00:24ㆍ기술 창고/CS 지식
728x90
반응형
SMALL
명령어 파이프라인
- 명령어가 처리되는 과정을 비슷한 시간 간격으로 나누면
- 명령어 인출
- 명령어 해석
- 명령어 실행
- 결과 저장
- 여러 명령어가 수행될 때 각 명령어의 위와 같은 과정들이 겹치지 않는다면 CPU는 각 명령어 단계를 동시에 실행할 수 있다고 본다.
- 이처럼 겹치지않게 여려 명령어를 병렬적으로 수행하는 것을 명령어 파이프라인 이라고 한다.
- 명령어 파이프라인을 사용하지 않는다면?
- 한 명령어의 모든 단계가 끝날 때까지 기다리고 그 다음 명령어가 수행되므로 CPU의 속도가 느리다.
명령어 파이프라인 위험
- 명령어 파이프라인이 성능 향상에 실패하는 경우
1. 데이터 위험 : 명령어 간의 의존성에 의해 발생되는 위험
- 모든 명령어를 동시에 처리할 수는 없다.
(이전 명령어를 완전히 수행해야지만 비로소 실행할 수 있는 경우)
2. 제어 위험 : 프로그램 카운터의 갑작스러운 변화로 인한 위험
- 프로그램 카운터가 갑작스럽게 특정 메모리 주소로 변경되면 다음 명령어는 정상적으로 수행되지 않아 발생되는 위험이다.
3. 구조 위험 : 서로 다른 명령어가 같은 CPU부품(ALU, 레지스터)를 사용하려고 할 때 발생되는 위험
슈퍼 스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
- 이론적으로는 파이프라인 개수에 비례하여 처리 속도가 증가하나 파이프라인 위험도의 증가로 인해 파이프라인 개수에 비례하여 처리 속도가 증가하지는 않는다.
비순차적 명령어 처리
- 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법.
- 앞서 위에 설명했던 파이프라인 설명에서는 순차적으로 명령어를 처리하는 것을 예로 든 것이다.
- 위의 이미지에 나온 명령어들이 순차적으로 수행이 된다고 가정했을 때, 3번의 명령어는 1번과 2번의 명령어가 온전히 수행이 되어야지 반영이 되는 명령어다.
따라서 3번 명령어는 굳이 3번째로 명령어가 수행될 필요는 없으며 맨 마지막에 수행되어도 상관없을 것이다.
- 따라서 처리 속도를 위해서는 파이프라인이 유지되는 것이 중요하며, 파이프라인이 끊기지 않기 위해 비순차적으로 명령어를 처리하는 것이 중요하다.
- 아무 명령어나 바꿀 수 있는 것이 아니라 의존성이 존재하지 않는 명령어에 한해 바꿔서 처리하는 방식을 비순차적 명령어 처리라고 한다.
728x90
반응형
LIST
'기술 창고 > CS 지식' 카테고리의 다른 글
[컴퓨터 구조] RAM의 특성과 종류 (0) | 2023.03.21 |
---|---|
[컴퓨터 구조] 명령어 집합 구조, CISC와 RISC (1) | 2023.03.21 |
[컴퓨터 구조] 빠른 CPU를 위한 설계 기법 (0) | 2023.03.16 |
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2023.03.16 |
[컴퓨터 구조] 레지스터 (CPU) (0) | 2023.03.13 |