본문 바로가기

운영체제

중앙처리장치(CPU) - 4 (명령어 파이프라인)

728x90
반응형

Goal

  • 명령어 파이프라인 구조에 대한 이해
  • 명령어 파이프라인 발전 흐름에 대한 이해(구조적 문제점 및 등장 배경의 기초적인 이해)

명령어 파이프라인

CPU 처리성능 향상을 위해 Instruction 처리 과정을 여러 단계로 세분화하는 병렬처리 기법

 

파이프라인 발전 단계

 

파이프라인의 유형

T: 명령어 실행 시간, k: 파이프라인 단계, N 실행 명령어 수

  • 명령어 인출(IF, Instruction fetch)
  • 명령어 해독(ID, Instruction Decode)
  • 연산 실행(EX, EXecution)
  • 연산결과 저장(WB, Write Back)

 

파이프라인(pipeline)

파이프라인(pipeline)

특징

  • Micro Instruction 기반 병렬처리
  • 성능 : Pt = k + (N – 1)

 

슈퍼 파이프라인(super-pipeline)

spuer-pipeline

특징

  • 파이프라인 단계수는 유지하면서 각 단계 내에서 처리속도를 몇 배로 높여주는 CPU 설계 기술
  • 계산 유형 : CPU Clock Degree 기반 파이프라인
  • 성능 : SPt = k + 1/n * (N – 1)
    • n: CPU Clock degree (1 Clock 당 수행 횟수)
    • n값이 커질수록 수행 시간은 줄어든다.

 

슈퍼 스칼라(superscala)

superscala

  • CPU 내에 파이프라인을 여러 개 두어(중첩) 여러 명령어를 동시에 실행하는 기술
    • 여러 개의 명령어 인출 장치, 실행 장치들이 필요
    • 동시에 실행되어도 무관한 독립적인 명령어들을 판단해 골라내는 장치 필요
  • 성능 : SSt = k + (N – m)/m
    • m : 파이프라인 중첩 수

 

슈퍼 파이프라인 슈퍼 스칼라(spuer-piped superscala)

spuer-piped superscala

  • 슈퍼 파이프라인 + 슈퍼 스칼라
  • 성능 : SPSSt = k + (N – m)/(m * n)

 

VLIW(Very Long Instruction Word)

<참고>

더보기

CISC, RISC, VIEW, EPIC 관련 내용을 정리한 자료

 

CISC(Complex instruction set computer)

  • 간단한 명령어 부터 복잡한 명령어까지 다양하게 존재
  • 명령어에 따라 명령어 길이도 제각각
  • 복잡한 기계어 명령까지 모두 고려해야 하므로 명령어 실행 단계가 많아지고 설계가 복잡해짐
  • 또한, 명령어에 따라 수행에 필요한 클럭 개수도 제각각 다르다.

위와 같은 이유로 RISC가 등장하게 되었다. (RISC 등장 배경)

RISC(Reduced Instruction Set Computer)

  • 많이 사용되는 명령어들의 대부분이 간단한 명령어라는 것에 착안하여 복잡한 명령어를 없앰
  • 이론적으로 한 클럭에 한 명령어가 처리되도록 설계
  • 명령어 크기가 일정
  • 범용 레지스터의 개수를 대폭 늘려 메모리 접근 횟수를 최소화(많은 레지스터 필요)
  • 하드웨어 설계에 유리 : CISC에 비해 회로가 덜 복잡해 병렬처리 CPU를 설계하는데 효율적
  • 프로그램 설계에 유리 : 적은 수의 명령어(종류)를 조합해 프로그램 설계 가능 

RISC의 한계와 VLIW 의 등장

명령어 종류를 줄이는 방식으로 CPU 성능을 향상 시키는 것에는 한계가 있다.

컴파일러에 의해 전달받은 명령어들을 적절히 배치해 병렬 처리를 해야 하는데, 이때 상당한 하드웨어 자원 낭비가 발생한다. 그래서 그 해결책 중 하나로 등장한 것이 VLIW 구조이다.

VLIW 구조는 컴파일러가 직접 명령어 병렬처리에 관여할 수 있도록 한다.

처음부터 디코드 유닛에 한꺼번에 종속성이 없는 여러 명령어를 때려박고 그걸 한번에 처리하여 효율성을 높이는 방식이다. 

CISC, RISC, VIEW, EPIC 관련 내용을 정리한 자료

vliw-epic.pdf
0.08MB

 

CISC(Complex instruction set computer)

  • 간단한 명령어 부터 복잡한 명령어까지 다양하게 존재
  • 명령어에 따라 명령어 길이도 제각각
  • 복잡한 기계어 명령까지 모두 고려해야 하므로 명령어 실행 단계가 많아지고 설계가 복잡해짐
  • 또한, 명령어에 따라 수행에 필요한 클럭 개수도 제각각 다르다.

위와 같은 이유로 RISC가 등장하게 되었다. (RISC 등장 배경)

 

RISC(Reduced Instruction Set Computer)

  • 많이 사용되는 명령어들의 대부분이 간단한 명령어라는 것에 착안하여 복잡한 명령어를 없앰
  • 이론적으로 한 클럭에 한 명령어가 처리되도록 설계
  • 명령어 크기가 일정
  • 범용 레지스터의 개수를 대폭 늘려 메모리 접근 횟수를 최소화(많은 레지스터 필요)
  • 하드웨어 설계에 유리 : CISC에 비해 회로가 덜 복잡해 병렬처리 CPU를 설계하는데 효율적
  • 프로그램 설계에 유리 : 적은 수의 명령어(종류)를 조합해 프로그램 설계 가능 

RISC의 한계와 VLIW 의 등장

명령어 종류를 줄이는 방식으로 CPU 성능을 향상 시키는 것에는 한계가 있다.

컴파일러에 의해 전달받은 명령어들을 적절히 배치해 병렬 처리를 해야 하는데, 이때 상당한 하드웨어 자원 낭비가 발생한다. 그래서 그 해결책 중 하나로 등장한 것이 VLIW 구조이다.

VLIW 구조는 컴파일러가 직접 명령어 병렬처리에 관여할 수 있도록 한다.

처음부터 디코드 유닛에 한꺼번에 종속성이 없는 여러 명령어를 때려박고 그걸 한번에 처리하여 효율성을 높이는 방식이다. 

  • 긴 명령어 하나에 여러개의 연산을 포함시켜 내보내는 구조
  • CPU로 명령어를 보내기 전에 병렬 처리 가능한 명령어들을 컴파일러가 미리 판단
    • 동시에 실행될 수 있는 연산을 가진 명령어들을 하나로 묶어 긴 명령어 형식 내에 재배열한다.
  • 정교한 컴파일러 기술이 필요 (하드웨어 구조는 간단해 졌지만, 컴파일러가 복잡해짐)

 

EPIC(Explicit Parallel Instruction Computing)

(IA-64 명령어 구조라고도 함. instruction architecture - 64)

IA-64 명령어 번들 형식
VLIW(EPIC) 구조

  • VLIW의 일종이다.
  • 128bit 길이의 명령어 형식
    • 5bit template : 32개의 템플릿 제공으로 호환성 향상 (실행 방법)
    • 3개의 41bit 명령 슬롯

파이프라인 해저드(hazard)

명령어 실행 지속이 불가하여 지정된 클럭에서 수행되는 파이프라인이 지연, 중지되는 현상

 

hazard

파이프라인에서 자원 충돌, 명령어 의존성 등에 의해 해저드(hazard)가 발생할 수 있기 때문에, 파이프라인의 단계수를 늘리거나 중첩시킨다고 해서 무한정 성능이 향상 되지는 않는다.

 

같이 보면 좋은 참고 사이트

 

<참고>

프로세스 성능 향상

 

References

파이프라인

나무위키 VLIW

해저드

728x90
반응형