전공/컴퓨터구조

[컴퓨터구조] #10 데이터패스(파이프라인)

Campus Coder 2023. 6. 11. 03:55
728x90
반응형

버퍼

큐(원형 큐) - 버퍼로 사용

스택 - 함수호출(인자 전달, 리턴)에 사용

버퍼 사용 이유

입출력 속도에 차이가 있을 때 사용

  • 서버가 터지지 않도록 조절 - 시스템 안정성 증가
  • 동기식 시스템의 단점 보안 - 모든 구성 요소가 동일한 클럭 속도로 작동해야 함, 버퍼를 사용해 보완

 

CPU 성능 향상

슈퍼스칼라

한 번에 여러 개의 명령어를 동시에 실행시킬 방법

- 파이프마다 실행하는 명령어 간의 연관관계없어야 함(병렬성)

슈퍼스칼라 사용 이유: 프로그램이 시작할 때 파이프라인을 채우기까지 시간이 걸림

하이퍼스레드

물리적으로 하나의 실행 장치를 가지고 있는 CPU에 가상 실행 장치를 두 개 할당

 

 

파이프라인 분기

비교문/반복문에서 조건 분기 발생

- 조건에 따라 파이프라인 지연 발생

분기 비용 줄이기

  • 분기 덧셈기를 EX단계에서 ID단계로 옮기기
    - EX단계의 ALU에서 0 여부 확인 후 분기 판단

  • 동적 분기 예측
    - 분기 예측 버퍼 / 분기 이력표를 이용 - 이전 실행에서 분기가 일어났는지 확인
    - 통계적 예측 사용 - 양성 / 음성 / 위양성 / 위음성

  • 지연 분기 슬롯
    - 분기 명령어에 영향을 주지 않는 명령어를 넣어 페널티 줄이기

  • 연관 예측기
    - 지역 / 전역 행동에 대한 2개의 예측기를 가지고 선택하는 방식

  • 토너먼트 예측기
    - 다수의 예측기를 사용해서 추적하면서 최적의 예측기 사용

  • 조건부이동
    - PC값 대신 mov의 목적 레지스터를 조건부로 선택하는 형식
    - load 명령어 + 조건문: 메모리에 있는 내용을 어디에 넣을 것인지

 

 

예외

프로그램의 흐름을 바꾸는 기술

- 정의 안된 명령어 / 산술 오버플로 처리에서 적용

- 처리 방식: EPC(Exception Program Counter)에 저장하고 특정 주소(운영체제의 핸들러)로 점프

- 예외의 원인 파악

  • 레지스터 사용(MIPS) - 예외 원인을 지정하는 레지스터의 필드 지정
  • 벡터 인터럽드 - 예외 원인에 따라 제어를 넘기는 주소를 다르게 지정하는 방식

파이프라인에서의 예외

한 사이클에서 여러 개의 예외가 동시에 일어날 수 있음

- 예외의 운선순위 반영(MIPS에서는 명령어 순서에 따름)

 

 

명령어를 통한 병렬성

ILP: 명령어 사이의 병렬성

Thread-safe: 동시에 수행되면서도, 일정한 결과

병렬 수준 높이기

파이프라인의 깊이 증가 -> 더 많은 명령어 중첩

다중 내보내기 ->  컴퓨터의 내부의 구성요소를 여러 개 가짐(슈퍼스칼라)

병렬성의 문제점

전력 효율성 감소

해결책 - 빅리틀 아키텍처(상대적으로 단순한 프로세서 여러 개 탑재)

 

728x90
반응형