1. 명령어 파이프 라인
- 명령어 처리 과정 (클럭 단위)
1. 명령어 인출 (Instruction Fetch)
2. 명령어 해석 (Instruction Decode)
3. 명령어 실행 (Execute Instruction)
4. 결과 저장 (Write Back)
- 단계가 겹치지 않는 경우에 CPU는 각 단계를 동시에 실행 가능하다.
- 위의 각 단계에서 명령어1이 해석 단계에 들어갔다면, 인출 단계가 비게되는데 이때 명령어2가 인출단계에 들어가는 식으로 처리
- 따라서 파이프라이닝을 사용하면 명령어1 이후의 명령어2, 3, ... 부터는 실행까지 1클럭 주기만 필요하게 됨
- 이와같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 것을 명령어 파이프 라이닝이라고 함
2. 파이프 라인 위험
2-1. 데이터 위험
- 명령어 간 데이터 의존성에 의해 발생
- 데이터 의존적인 두 명령어를 무작정 동시에 실행하려하면 파이프 라인이 제대로 동작하지 않음
2-2. 제어 위험
- 분기 등에 의한 프로그램 카운터의 갑작스러운 변화에 의해 발생
- 기본적으로 프로그램 카운터는 현재 실행 중인 명령어의 다음 주소로 갱신됨
- 하지만 프로그램의 실행 흐름이 바뀌어 미리 가져와서 처리 중이던 명령어들이 쓸모 없어지는 경우
- 분기 예측
- 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술
2-3. 구조적 위험
- 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU나 CPU 부품을 사용하려고 할 때 발생
- 자원 위험이라고도 부름
3. 슈퍼스칼라
- CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
- 명령어 파이프 라인을 여러개 둠
- 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU를 슈퍼스칼라 프로세서 또는 슈퍼스칼라 CPU라고 함
- 슈퍼스칼라 프로세서는 이론적으로 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라짐
- 불가능한 이유
- 여러 개의 파이프라인을 이용하면 하나의 파이프라인을 사용할 때보다 데이터 위험, 제어 위험, 자원 위험을 피하기가 어려움
4. 비순차적 명령어 처리
- OoOE로 줄여 부름
- 명령어를 순차적으로 실행하지 않는 기법
- 명령어의 합법적 새치기
- 의존성이 없는 등의 순서를 바꿔 실행해도 무방한 명령어를 먼저 실행하여 명령어 파이프라인이 멈추는 것을 방지하는 기법
- 의존성이 없기 때문에 순서를 바꿔도 프로그램 실행 흐름에는 전혀 문제가 없음
'CS > 컴퓨터 구조' 카테고리의 다른 글
RAM의 특징과 종류 [혼공컴구] (0) | 2023.11.29 |
---|---|
CISC와 RISC [혼공컴구] (0) | 2023.11.22 |
컴퓨터 구조 - 클럭, 코어, 스레드 [혼공컴구] (0) | 2023.11.17 |
컴퓨터 구조 - 명령어 사이클과 인터럽트 [혼공컴구] (0) | 2023.11.17 |
컴퓨터 구조 - CPU ( 코어 ) [혼공컴구] (0) | 2023.11.17 |