[컴퓨터구조] 파이프라인

resilient

·

2021. 5. 1. 23:56

728x90
반응형

파이프라인 구조

명령어 파이프라인

하나의 명령어 사이클을 여러단계로 나누고 각 단계에서 동시에 다른 명령어를 처리하도록 CPU설계

파이프라인의 깊이는 총 단계 수

2단계 파이프라인 구조

명령어 파이프라인의 단계 수, N=2

  • 단계 1 : 명령어 인출
  • 단계 2 : 명령어 실행

명령어 사이클의 단계 설계

최소 다음 단계의 순차 실행을 고려

  • 메모리에 저장된 명령어를 인출
  • 명령어를 해독 → 연산코드와 오퍼랜드 필드분리
  • 오퍼랜드 필드에서 유효주소를 찾아냄
  • 유효주소로 메모리에 저장된 실제 피연산자를 인출
  • 연산을 실행해 명령어 수행을 완료
  • 연산결과를 저장

4단계 파이프라인 구조

  • 단계 1 : 명령어 인출
  • 단계 2 : 명령어 해독
  • 단계 3 : 연산 실행
  • 단계 4 : 연산결과 저장

요즘은 수십 단계로 나누지만 무한정 늘리지 않음

요즘 CPU →여러 개의 명령어 파이프라인과 연산 파이프라인을 갖도록 설계

  • 3D 그래픽 데이터를 처리하는 파이프라인 별도 구축

파이프라인 구조 사용시 병렬계산의 속도상승→ 명령어 개수가 커지면 단계 수 N에 근접

슈퍼파이프라인

슈퍼 파이프라인구조

기존 파이프라인의 단계 수는 유지하면서 각 단계내에서 처리속도를 몇 배로 높여주는 CPU 설계 기술

슈퍼 파이프라인 차수 SP를 정의

파이프라인의 한계

파이프라인의 동작원리

  • 파이프를 통해 물이 순차적으로 아래로 흐르는 이치
  • 컨베이어 벨트로 물건을 대량 생산하는 원리

파이프라인의 한계

  • 단계를 늘려도 작업이 무한대로 빨라질수는 없다
  • 공장에서 작업자가 작업을 무한대로 빨리 할 수는 없다

파이프라인의 제약조건

파이프라인의 단계 수를 늘릴수록 대체로 속도상승 비율은 좋아짐

파이프라인의 제약조건

  • 시스템 자원의 사용에 충돌이 없어야한다
  • 명령어 간에 상호 의존성이 없어야한다
  • 모든 명령어가 같은 단계를 거쳐야 낭비가없다
  • 각 단계의 처리시간이 동일해야 한다
  • 명령어는 순차적으로 실행되어야 한다

파이프라인의 성능개선

파이프라인의 성능저하를 줄이는 방법

  • 지연 분기 활용

분기 명령 앞뒤에 위치한 다른 명령어들의 순서를 적절히 재배치해 실행 순서를 바꾸는 것

  • 분기예측

명령이 분기하는지 예측했다 분기하면 파이프라인에 유입된 명령들을 변화시켜 처리지연 방지

효율 높고 비순차적 추론이 가능한 실행엔진과 다중 분기예측, 데이터 흐름분석, 예측실행 기술 필요

슈퍼스칼라구조

한 명령어 사이클 동안 여러 개의 명령어를 동시에 처리할 수 있도록 설계한 CPU 구조

여러 개의 여분의 실행 장치들이 필요

요즘 대부분의 CPU는 슈퍼스칼라 구조를 가짐

슈퍼스칼라 차수 SS를 정의 → 한 명령어 사이클 동안 동시에 처리할 수 있는 명령어 개수

슈퍼스칼라 구조에 필요한 장치들

  • 여러 개의 명령어 인출 장치
  • 실행순서에 관계없이 동시에 실행되어도 무관한 서로 독립적인 명령어들을 판단해 골라내는 장치
  • 동시에 병렬로 처리할 수 있는 여러 개의 독립적인 명령어 실행 장치

한 명령어 사이클 동안 여러 명령어를 읽어와 어떤 명령이 독립적인지 찾아 그것들을 먼저 동시에 실행

슈퍼스칼라 + 파이프라인

슈퍼스칼라 차수 ss=3

파이프라인 단계 수 N = 4

 

VLIW 구조

CISC 시스크

간단한 명령부터 복잡한 명령까지 종류가 다양

RISC 리스크

명령 축약형 컴퓨터의 약자

복잡한 명령을 모두 없애고 명령어 처리구조를 단순화해 기게어 명령의 수를 최소로 줄인 CPU

  • 이론적으로 1클럭에 1명령어가 고속 처리되도록 설계
  • 가능한 하드웨어만으로 처리해 속도를 증가
  • 범용 레지스터 개수를 대폭 늘려 외부 메모리의 액세스 횟수를 최소로 줄여 실행 속도 높임

RISC의 장점

병렬처리 프로세서 설계에 효율적

  • 하드웨어가 덜 복잡해 CPU설계 노력과 시간 절약

과거의 통념은 RISC가 고성능 CPU의 정석

  • CISC 구조에 비해 내부 캐시나 여러개의 명령어 파이프라인과 슈퍼스칼라 구조를 구성하기에 유리하다

프로그램 개발에도 유리

RISC의 한계

  • 명령어 종류만 줄여 CPU성능을 높이는데 한계
  • RISC가 제대로 성능을 발휘하려면 병렬처리를 고려해 명령어를 적절히 분산시켜야함
  • RISC는 상당한 하드웨어 자원을 낭비한다

→ VLIW처럼 명령어구조를 개선하고 컴파일러의 정밀성과 비중을 확대해야한다.

VLIW구조

여러 명령을 묶어 매우 긴 명령어 형식을 만든 구조

<매우 긴 명령어 워드>의 영문약자

분명하게 명시한 명령어들은 동시에 병렬로 실행

  • 병렬 처리할 명령을 컴파일러에서 미리판단
  • 동시에 실행될 수 있는 명령들을 하나로 묶어 긴 명령어 형식 내에 재배열, CPU는 별도 판정 없이 병렬처리

하드웨어 설계의 복잡성을 갖지 않는 대신 정교한 컴파일러 기술이 필요하다.

IA-64구조

인텔과 HP가 공동으로 개발한 64비트 프로세서용 명령어 구조

  • 명시적 병렬 명령 계산 기술
  • VLIW 구조 중 하나

정교한 컴파일러 기술이용

128비트 길이 명령어 번들 형식 사용

템플릿 → 번들 내에 포함된 명령 슬롯이 실행되는 방법을 적어 놓은표

VLIW와 파이프라인

VLIW 구조에서 하나의 명령어 번들 형식에 포함되어 동시에 병렬처리로 실행될 수 있는 명령어의 개수

ARM 회사

RISC 기반의 ARM 프로세서

명령어 수가 적어 적은 수의 트랜지스터로 설계

32비트 명령어세트구조에서 64비트 ARMv8 구조로 이동용 및 서버 시장 확대

ARM프로세서 시장점유율 34%

지적재산권 업체 → 설계만 하고 생상은 전문 반도체 제조사에서 함

병렬컴퓨터

다중 프로세서, 병렬컴퓨터 구조

복수의 프로세서를 연결해서 동시에처리

대규묘 병렬컴퓨터,초병렬컴퓨터

대규모 프로세서를 갖는 컴퓨터시스템

  • 그리드 컴퓨팅
  • 클러스터 컴퓨팅

플린의 분류법

플린의 분류법

컴퓨터의 구조를 명령어와 자료의 흐름으로 분류해서 설명

병렬컴퓨터라고 할 수 있는 것 →SIMD,MIMD

SISD

단일 명령 , 단일 데이터 흐름 구조

SIMD

단일 명령, 복수 데이터 흐름 구조

MISD

복수 명령, 단일 데이터 흐름 구조

MIMD

복수 명령, 복수 데이터 흐름 구조

벡터 프로세서(vector processor)

복수의 연산장치를 병렬로 연결해 큰 규모의 행렬이 나 배열 연산을 고속으로 한꺼번에 처리하는 장치

❑ 배열 프로세서(array processor)라고도 함 ❑ (cf.) 스칼라 프로세서(scalar processor) ⚫ 한 번의 명령으로 하나의 데이터를 처리, SISD 구조

❑ SIMD 구조의 하나 ☞ SIMD는 명령어 하나로 대량의 데이터를 처리할 수 있는 구조나 명령어 기술 ⚫ 데이터 속성상 비슷한 패턴을 갖게 되는 멀티미디어 데이터를 빠르게 처리하기에 적합 계속 반복되는 루프를 단 하나의 명령어로 실행 펜티엄 MMX 등 1990’s 말 프로세서들도 이미 채택

다중프로세서

멀티프로세서 구조

= 병렬컴퓨터

동시에 동작하는 여러 개의 프로세서를 병렬로 연결

  • 외부 기억장치나 입출력장치는 공유할수 있지마 내부 레지스터와 실행 장치는 독립적으로 사용해야 함

다중프로세서를 구성하는 방법

  • 하나의 칩에 여러 코어를 내장한 멀티코어 프로세서
  • 하나의 시스템보드에 여러 개의 프로세서 칩을 장착
  • 한 컴퓨터 내에서 여러 개의 시스템보드를 장착
  • 여러 대의 컴퓨터를 공동의 작업을 위해 병렬로 연결

멀티코어 프로세서

칩-레벨 다중프로세서 병렬 컴퓨터의 기본 형태

코어로 불리는 2개 이상의 독립적인 실제 CPU 내장

칩 내부 코어가 동일 다이에 존재하지 않을 수 있음

하이퍼스레딩

멀티스레드 개념과 CPU활용도

파이프라인 단계 수가 많아지면 각 단계 길이는 줄고, 작업은 더욱 세분화

모든 스레드가 각 단계를 다 거치는 것이 아님

일하지않고 유휴 단계가 발생

<하나의 실행 장치에서 두 개의 스레드를 겹치지 않게 동시에 작업할 수 있도록 설계>

작업이 할당되지 않은 실행 단계는 다른 스레드의 작업을 함께 끼워 넣어 동시에 작업

하이퍼스레딩 → CPu가 놀지 않게 쥐어짜려는 기술

인텔의 하이퍼스레딩 기술

일종의 멀티스레드, 하나의 물리적인 프로세서가 2개의 가상 프로세서 처럼 동작하도록 만든 기술 하나의 CPU 코어 내부에 2개의 ALU 장치와 하나의 명령어 실행 장치를 넣어 가상의 듀얼 코어로 작동 ❑ 운영체제에서 보면 마치 2개의 CPU가 있는 것처럼 보이나, 실제 듀얼 코어에 비해 성능은 떨어짐

반응형

'CS & Network > 운영체제(OS) & 컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 메모리  (0) 2021.05.05
[컴퓨터구조] 기억장치  (0) 2021.05.03
[컴퓨터구조] 정리_3  (0) 2021.04.29
[컴퓨터구조] 정리_2  (0) 2021.04.28
[컴퓨터구조] 정리_1  (0) 2021.04.26