Search

05-2 명령어 병렬 처리 기법

Last update: @1/7/2023
혼자 공부하는 컴퓨터구조 + 운영체제

컴퓨터 구조

01 컴퓨터 구조 시작하기

02 데이터

03 명령어

04 CPU의 작동 원리

05 CPU 성능 향상 기법

06 메모리와 캐시 메모리

07 보조기억장치

08 입출력장치

명령어 병렬 처리 기법(ILP; Instruction-Level Parallelism) : 명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법
명령어 처리 과정
명령어 인출(Instruction Fetch)
명령어 해석(Instruction Decode)
명령어 실행(Execute Instruction)
결과 저장(Write Back)
종류
명령어 파이프 라이닝(instruction piprlining : 명령어들을 명렁어 파이프라인(instruction pipeline)에 넣고 동시에 처리하는 기법
CPU는 같은 단계가 겹치지 않는다면 각 명령어 처리 과정을 동시에 실행할 수 있음
파이프라인 위험(pipeline hazard) : 성능 향상에 실패하는 특정 상황
데이터 위험(data hazard) : 한 명령어가 끝까지 실행돼야 다른 명령어가 실행될 수 있는 데이터 의존성에 있을 때, 이 두 명령어를 동시에 실행하려고 할 때 파이프라인이 제대로 작동하지 않는 것
제어 위험(control hazard) : 분기 등으로 인해 프로그램 카운터의 갑작스런 변화가 생겨서 명령어 파이프라인에 미리 가지고 와서 처리 중이었던 명령어들이 아무 쓸모가 없어지는 것
분기 예측(branch prediction) : 제어 위험을 피하기 위해 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출하는 기술
구조적 위험(structural hazrd = resource hazrd) : 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU 부품을 사용하려고 할 때 발생
슈퍼스칼라(superscalar) : CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
슈퍼스칼라 프로세서(슈퍼스칼라 CPU) : 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU. 멀티스레드 프로세서는 슈퍼스칼라 구조를 사용할 수 있음. 여러 개의 파이프라인을 이용하면 하나의 파이프라인을 사용할 때보다 데이터 위험, 제어 위험, 자원 위험을 피하기가 더욱 까다로워지기 때문에 고도로 설계되어야 함
비순차적 명령어 처리(OoOE; Out-of-Order Execution) : 명령어를 순차적으로 실행하지 않는 기법. 데이터 의존성이 전혀 없어서 순서를 바꿔 처리해도 수행 결과에 영향을 미치지 않는 명령어를 먼저 처리함