지연 시간 지향 프로세서 아키텍처

Latency oriented processor architecture

지연 시간 지향 프로세서 아키텍처는 짧은 지연 시간으로 직렬 컴퓨팅 스레드를 처리하도록 설계된 마이크로프로세서마이크로 아키텍처다.이는 1970년대 이후 개발되고 있는 대부분의 중앙처리장치(CPU)의 전형이다.이러한 아키텍처들은 일반적으로 주어진 시간 내에 단일 직렬 스레드에 속하는 가능한 많은 지침을 실행하는 것을 목표로 한다. 그러나, 가져오기 단계부터 은퇴 단계까지의 단일 명령을 완전히 실행하는 시간은 경우에 따라 몇 사이클에서 심지어 몇 백 사이클까지 달라질 수 있다.[1][page needed]지연 시간 지향 프로세서 아키텍처는 자신이 작업하는 모든 개별 스레드에 대한 서비스 지연이 아니라 시스템의 총 처리량에 더 신경을 쓰는 처리량 지향 프로세서와 정반대다.[2][page needed][3]null

플린의 분류법

지연 시간 지향 프로세서 아키텍처는 일반적으로 플린의 분류법에 따라 SSISD 분류 범주에 포함된다.이는 대기 시간 지향 프로세서 아키텍처의 일반적인 특성이 단일 데이터 스트림에서 작동하는 단일 작업을 실행하는 것임을 암시한다.Intel MMXSSE 지침과 같이 인기 있는 명령 집합의 일부 SIMD 스타일 멀티미디어 확장도 지연 시간 지향 프로세서 아키텍처의 범주에 속해야 한다.[2] 왜냐하면, 대용량 데이터 집합에서 작동하지만, 이들의 주요 목표는 또한 당면한 전체 작업에 대한 전반적인 지연 시간을 줄이는 것이기 때문이다.null

구현 기법

단일 컴퓨팅 작업의 전체 대기 시간을 줄이기 위해 사용되는 아키텍처 기법이 많다.여기에는 일반적으로 하드웨어메모리 또는 명령 캐시에서 가져오는 즉시 지침을 제공하기 위해 파이프라인에 하드웨어를 추가하는 것이 포함된다.이러한 아키텍처의 주목할 만한 특징은 칩의 중요한 영역이 실행 단위 자체 이외의 부품에서 사용된다는 것이다.그 의도는 컴퓨팅 환경에서 '일반적인' 작업을 완료하는 데 필요한 시간을 줄이는 것이기 때문이다.일반적인 컴퓨팅 작업은 일련의 명령어 집합으로, 동일한 작업의 이전 명령어에 의해 생성된 결과에 대한 의존도가 높다.따라서 마이크로프로세서는 개별 지침 자체에서 요구하는 계산 이외의 다른 많은 작업을 수행하는데 시간을 할애할 것이라는 것이 타당하다.계산 중에 발생하는 위험이 신속하게 해결되지 않으면 나사산의 지연 시간이 증가한다.이는 위험이 후속 지침의 실행을 지연시키고 파이프라인 구현에 따라 의존성이 해소될 때까지 진행 과정을 완전히 지연시키거나 향후 지침에서 더 많은 위험의 눈사태로 이어질 수 있기 때문에 나사산의 실행 시간을 더욱 악화시킬 수 있기 때문이다.[4][5]null

마이크로 건축 기법의 설계 공간은 매우 넓다.다음은 스레드의 전체 대기 시간을 줄이기 위해 가장 일반적으로 사용되는 몇 가지 기법이다.null

지침 집합 아키텍처(ISA)

오늘날 대부분의 아키텍처는 로드/스토어 아키텍처와 같이 더 짧고 단순한 지침을 사용하며, 이는 더 빠른 실행을 위해 명령 파이프라인을 최적화하는 데 도움이 된다.지침은 일반적으로 모두 동일한 크기여서 명령어 가져오기 논리를 최적화하는 데에도 도움이 된다.그러한 ISA를 RISC 아키텍처라고 한다.[6]null

지시 파이프라인

파이프라이닝은 클럭 주파수를 증가시키거나 단위 시간당 완료되는 명령의 수를 증가시키기 위해 동일한 실행 스레드에서 여러 명령의 실행을 겹쳐서 스레드의 전체 실행 시간을 줄인다.모든 실행 단계를 완료하기 위한 단일 명령을 기다리는 대신, 파이프라인 내부의 각 단계에서 동시에 여러 명령이 처리된다.[a]

등록이름변경

이 기법은 프로그래머에게 ISA에 명시된 것보다 효과적으로 전체 레지스터 파일 크기를 늘리고, 잘못된 의존성을 제거하기 위해 사용된다.동일한 레지스터를 참조하는 두 개의 연속된 지침이 있다고 가정합시다.첫 번째는 레지스터를 읽는 반면 두 번째는 레지스터에 글을 쓴다.프로그램의 정확성을 유지하기 위해서는 첫 번째 지침이 원래의 가치를 읽을 수 있기 전에 두 번째 지침이 레지스터에 기록되지 않도록 하는 것이 필수적이다.이것은 WAR(Write-After-Read) 종속성의 예다.이러한 의존성을 없애기 위해 파이프라인은 내부 레지스터에 명령을 할당하여 내부적으로 명령을 '새로 변경'할 것이다.따라서 이 지침은 실행이 허용되며, 프로그램이 의도한 실제 목적지 레지스터는 나중에 작성되더라도, 그에 의해 생성된 결과는 이제 모든 후속 지침에서 즉시 사용할 수 있게 된다.마찬가지로, 두 지침이 단순히 동일한 레지스터 WAW(Write-After-Write)에 쓰려는 것이라면, 파이프라인은 두 지침의 이름을 바꾸고 그 결과를 향후 지침에서 연속적으로 사용할 필요 없이 사용할 수 있도록 보장할 것이다.[b]

기억 조직

캐시, 메인 메모리, 하드 디스크와 같은 비휘발성 저장장치(프로그램 명령과 데이터가 상주하는 곳)를 포함하는 메모리 레벨은 공간적 인접성과 시간적 인접성을 이용하여 총 메모리 액세스 시간을 단축하도록 설계되었다.프로세서가 메모리에서 데이터를 가져올 때까지 기다리는 시간이 줄어들수록 명령의 수가 줄어들어 유휴 상태로 있으면서 유용한 작업을 하지 않는 동안 파이프라인 리소스를 소비하게 된다.모든 내부 버퍼(예: 예약 스테이션)가 각각의 용량으로 채워지면 명령 파이프라인은 완전히 정지될 것이다.따라서 지시사항이 파이프라인 내부에 있는 동안 유휴 사이클을 적게 소비하는 경우, 가져오기 논리가 단위 시간당 캐시/메모리로부터 더 많은 수의 지시를 가져올 수 있기 때문에 지시 수준 병렬화(ILP)를 이용할 가능성이 더 크다.[c]

투기집행

파이프라인 스톨의 주요 원인은 제어 흐름 의존성, 즉 분기 명령의 결과가 사전에 알려지지 않은 경우(일반적으로 그렇다)에 있다.오늘날 많은 아키텍처들은 가지의 결과를 추측하기 위해 분기 예측 변수 구성요소를 사용한다.프로그램의 예측 경로를 따라 실행은 계속되지만 지시사항은 추측으로 태그가 지정된다.추측이 맞는 것으로 판명되면 지시사항을 성공적으로 완료하고 파일/메모리를 등록하기 위해 결과를 다시 업데이트할 수 있다.추측이 정확하지 않은 경우, 모든 추측 지침이 파이프라인에서 플러시되고 프로그램의 실제 정확한 경로를 따라 실행(재시작)된다.높은 예측 정확도를 유지함으로써, 파이프라인은 실행 스레드의 처리량을 크게 증가시킬 수 있다.[d]

순서가 맞지 않는 실행

스레드의 모든 지시사항을 실행하는 데 동일한 시간이 걸리는 것은 아니다.슈퍼칼라 파이프라인은 일반적으로 현재 상태와 명령 유형 자체에 따라 여러 개의 가능한 지침 경로를 가지고 있다.따라서, 주기별 지침(IPC)을 증가시키기 위해, 파이프라인은 프로그램 후반부의 지침이 완료하는 데 더 오랜 시간이 걸리는 지침으로 인해 중단되지 않도록 지시사항의 실행을 허용한다.모든 지시사항은 파이프라인에 의해 반입되어, 정확성을 유지하기 위해 원래의 프로그램의 순서로 폐기(즉, 그 결과를 다시 쓰는 것)할 수 있을 때 재주문 버퍼에 등록된다.[e]

슈퍼스칼라 실행

초경사 지시 파이프라인은 단순한 스칼라 파이프라인과는 반대로 모든 클럭 사이클에서 여러 개의 지시사항을 끌어온다.이는 데이터 또는 제어 흐름 종속성으로 인해 파이프라인이 정지된 경우를 제외하고 각 사이클에서 가져온 명령의 수만큼 명령 수준 병렬화(ILP)를 증가시킨다.슈퍼칼라 파이프라인의 은퇴율이 보통 그들의 회수율보다 적지만, 단위 시간 당 실행된 명령의 전체 수(> 1)는 일반적으로 스칼라 파이프라인보다 크다.[f]

처리량 지향 프로세서 아키텍처와 대비

이와는 대조적으로, 처리량 지향 프로세서 아키텍처는 상당한 시간 동안 수행되는 '유용한 작업'의 양을 최대화하도록 설계된다.유용한 업무란 상당한 양의 데이터에 대한 대량의 계산을 말한다.그들은 많은 계산이 동시에 수행될 수 있도록 작업 부하를 병렬화하여 이를 수행한다.계산은 단일 과제에 속하거나 제한된 수의 복수 과제에 속할 수 있다.1개의 실행을 완료하는 데 필요한 총 시간은 대기 시간 지향 프로세서 아키텍처의 총 시간보다 훨씬 더 크지만, 대규모 계산을 완료하는 총 시간은 상당히 감소한다.대기 시간은 사이클당 처리량을 높이기 위해 종종 희생된다.[3]결과적으로, 지연 시간 지향 프로세서는 처리량 지향 프로세서보다 훨씬 더 빠르게 단일 계산을 완료할 수 있지만, 처리량 지향 프로세서는 지연 시간 지향 프로세서가 1 계산을 완료할 때까지 수백 개의 그러한 계산을 통해 분할될 수 있다.[2]null

지연 시간 지향 프로세서는 분기 예측, 데이터 전달, 재주문 버퍼, 대형 레지스터 파일 및 캐시와 같은 정교한 제어 구조에 상당한 칩 영역을 소모한다.이러한 구조는 명령당 운영 지연 시간과 메모리 액세스 시간을 줄이고 가능한 한 빨리 결과를 이용할 수 있도록 돕는다.반면에 처리량 지향 아키텍처들은 대개 훨씬 더 작은 캐시와 더 단순한 제어 로직을 가진 다수의 프로세서를 가지고 있다.이는 메모리 대역폭을 효율적으로 활용하고 동일한 칩 영역에 있는 총 실행 단위 수를 증가시키는 데 도움이 된다.[3]null

GPU는 처리량 지향 프로세서 아키텍처의 대표적인 예다.null

메모들

  1. ^ 컴퓨터 구성 및 설계: 하드웨어/소프트웨어 인터페이스, 4장[5]
  2. ^ 컴퓨터 아키텍처: 양적 접근법, 섹션[4] 3.1
  3. ^ 컴퓨터 구성 및 설계: 하드웨어/소프트웨어 인터페이스, 5장[5]
  4. ^ 컴퓨터 아키텍처: 양적 접근법, 섹션 3[4].3
  5. ^ 컴퓨터 아키텍처: 양적 접근법, 섹션 3.4, 3.5[4]
  6. ^ 컴퓨터 아키텍처: 양적 접근법, 섹션 3.6-3[4].8

참조

  1. ^ John Paul Shen; Mikko H. Lipasti (2013). Modern Processor Design. McGraw-Hill Professional. ISBN 978-1478607830.
  2. ^ a b c Yan Solihin (2016). Fundamentals of Parallel Multicore Architecture. Chapman & Hall/CRC Computational Science. ISBN 978-1482211184.
  3. ^ a b c Michael Garland; David B. Kirk (2010). "Understanding Throughput-Oriented Architectures". Communications of the ACM. 53 (11): 58–66. doi:10.1145/1839676.1839694.
  4. ^ a b c d e John L. Hennessy; David A. Patterson (2013). Computer Architecture: A Quantitative Approach (Fifth ed.). Morgan Kaufmann Publishers. ISBN 978-0123838728.
  5. ^ a b c David A. Patterson; John L. Hennessy (2013). Computer Organization and Design: The Hardware/software Interface (Fifth ed.). Morgan Kaufmann Publishers. ISBN 9780124078864.
  6. ^ Bhandarkar, Dileep; Clark, Douglas W. (1 January 1991). Performance from Architecture: Comparing a RISC and a CISC with Similar Hardware Organization. Proceedings of the Fourth International Conference on Architectural Support for Programming Languages and Operating Systems. ACM. pp. 310–319. doi:10.1145/106972.107003.