KR102271992B1 - 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법 - Google Patents

데이터 처리장치 및 추론 벡터 연산의 수행 제어방법 Download PDF

Info

Publication number
KR102271992B1
KR102271992B1 KR1020167011068A KR20167011068A KR102271992B1 KR 102271992 B1 KR102271992 B1 KR 102271992B1 KR 1020167011068 A KR1020167011068 A KR 1020167011068A KR 20167011068 A KR20167011068 A KR 20167011068A KR 102271992 B1 KR102271992 B1 KR 102271992B1
Authority
KR
South Korea
Prior art keywords
vector
speculation
speculative
operations
performance
Prior art date
Application number
KR1020167011068A
Other languages
English (en)
Other versions
KR20160065145A (ko
Inventor
엘라스테어 데이비드 라이드
다니엘 커셔
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20160065145A publication Critical patent/KR20160065145A/ko
Application granted granted Critical
Publication of KR102271992B1 publication Critical patent/KR102271992B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

데이터 처리장치와 추론 벡터 연산의 수행을 제어하는 방법이 제공된다. 이 장치는, 복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하는 처리회로와, 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하는 추론 폭 표시를 유지하는 추론 제어회로를 구비한다. 추론 폭 표시는 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 설정된다. 처리회로는 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하고, 추론 제어회로는, 진행 표시들과 추론 축소 기준을 참조하여 추론 축소 상태의 존재를 검출한다. 추론 축소 상태는, 추론 폭 표시의 축소가 추론 폭 표시의 축소가 없는 연속된 연산에 대해 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태이다. 추론 제어회로는 추론 축소 상태의 검출에 응답하여 추론 폭 표시를 축소시킨다. 이와 같은 구성은 추론 벡터 연산을 수행할 때 (예를 들어 스루풋 및/또는 에너지 소비 면에서) 성능을 증가시킨다.

Description

데이터 처리장치 및 추론 벡터 연산의 수행 제어방법{A DATA PROCESSING APPARATUS AND METHOD FOR CONTROLLING PERFORMANCE OF SPECULATIVE VECTOR OPERATIONS}
본 발명은, 데이터 처리장치와 추론적(speculative) 벡터 연산의 수행을 제어하는 방법에 관한 것이다.
데이터 처리장치의 성능을 향상시키는 한가지 공지된 기술은 벡터 연산의 실행을 지원하는 회로를 설치하는 것이다. 벡터 연산은 적어도 한 개의 벡터 피연산자에 대해 행해지고, 이때 각각의 벡터 피연산자는 복수의 벡터 성분을 포함한다. 그후, 벡터 연산의 수행은 벡터 피연산자(들) 내부의 다수의 벡터 성분들에 걸쳐 반복적으로 연산을 적용하는 과정을 포함한다.
벡터 연산의 수행을 지원하는 전형적인 데이터 처리 시스템에서는, 벡터 피연산자들을 기억하기 위해 벡터 레지스터 뱅크가 설치된다. 따라서, 일례로서, 벡터 레지스터 뱅크 내부의 각각의 벡터 레지스터는 복수의 벡터 성분들을 포함하는 벡터 피연산자를 기억한다.
고성능 구현예서는, 벡터 피연산자들 내부의 다수의 벡터 성분들에 대해 필요한 연산을 병렬로 행할 수 있는 벡터 처리회로(SIMD(Single Instruction Multiple Data) 처리회로로 불리는 일이 많은)를 설치하는 것도 알려져 있다. 또 다른 실시예에서는, 스칼라 처리회로를 여전히 사용하여 벡터 연산을 구현할 수 있지만, 이 경우에는 벡터 연산이 스칼라 처리회로를 통한 반복적인 연산의 실행에 의해 구현되고, 각각의 반복은 벡터 피연산자들의 서로 다른 벡터 성분들에 대해 행해진다.
벡터 연산들의 사용을 통해, 동등한 일련의 스칼라 연산들의 수행과 비교할 때 상당한 수행상의 이점이 실현될 수 있다.
벡터 처리의 수행상의 이득을 얻으려고 시도할 때, 일련의 스칼라 연산들을 동등한 일련의 벡터 연산들로 교체하기 위해 이들 일련의 스칼라 연산들을 벡터화하는 것을 시도하는 것이 알려져 있다. 예를 들어, 일련의 스칼라 명령들을 포함하는 루프에 대해, 이들 일련의 스칼라 명령들을 동등한 일련의 벡터 명령들로 교체하여 이 루프를 벡터화하고, 벡터 피연산자들이 벡터 성분들로서 원래의 스칼라 루프의 서로 다른 반복들에 관련된 성분을 포함하는 것이 가능하다.
그러나, 원래의 스칼라 루프를 통해 필요한 반복의 수가 사전에 결정될 때에는 이와 같은 접근방식이 양호하게 작용할 수 있지만, 반복의 수가 사전에 결정되지 않을 때에는 이와 같은 루프들을 벡터화하는 것이 더욱 곤란하다. 특히, 반복의 수가 사전에 결정되지 않기 때문에, 각각의 벡터 피연산자에서 얼마나 많은 수의 벡터 성분들이 필요하게 되는지를 사전에 결정할 수 없다.
전술한 종류의 일부 상황에서는, 추론 벡터 처리를 행하는 것이 가능한데, 이때 추론은 필요한 수의 벡터 성분들에 대해 행해지고, 나중에 필요한 정확한 수의 벡터 성분들이 결정될 때 교정 동작이 행해진다.
K. Asanovic, Berkeley, 1998, pp 116-121의 "Vector Microprocessor"라는 제목의 박사학위 논문은, 벡터 피연산자들의 전체 폭에 걸쳐 추론을 행하고, 더구나 이 추론중에 발생하는 아키텍처 이벤트(에를 들어, 페이지 결함)를 추적하는 것을 기재하고 있다. 이와 같은 아키텍처 이벤트는 예외를 기동하여, 이 예외를 해결하기 위해 예외 루틴이 운영체계에 의해 실행되도록 한다. 제안된 접근방식은 이와 같은 아키텍처 이벤트가 검출된 벡터 폭 내부의 각각의 벡터 성분 위치의 기록을 유지한다. 나중에, 벡터 성분 위치들의 필요한 세트가 알려진 커미트 시점(commit point)에 도달하면, 각각의 필요한 벡터 성분 위치를 이와 같은 아키텍처 이벤트의 기록과 비교한다. 필요한 벡터 성분 위치들과 관련된 아키텍처 이벤트는 벡터 처리회로가 벡터 연산들을 올바르게 행하지 못하게 하기 때문에, 커미트 시점에서 이와 같은 지연된 예외가 기동된다. 벡터 성분 위치들의 필요한 세트 중에서 어느 것도 아키텍처 이벤트와 관련되지 않는 경우에는, 백터 길이 및 마스크가 갱신되고 아키텍처 이벤트의 기록이 소거된다.
전술한 처리는 추론 벡터 처리가 행해질 수 있도록 하는 한편, 커미트 시점에서 아키텍처 이벤트들을 마스킹(masking)하여 올바른 연산을 보장한다.
그러나, 전술한 접근방식이 추론 벡터 처리 연산을 행하는 동안 올바른 연산을 보장할 수 있지만, 추론 벡터 처리를 행하는 이점에 영향을 미칠 수 있는 다른 인자들이 존재한다. 전술한 것과 같이, 추론이 행해지는 시점에는, 필요한 반복의 수를 알지 못하므로, 장치의 성능 특성(예를 들면, 스루풋 또는 에너지 소비)에 악영향을 미칠지 모르는 특정한 연산을 행할 가능성이 존재하며, 나중에서야 이들 연산이 필요하지 않았다는 것을 알게 된다. 따라서, 장치의 성능 특성에 대한 이와 같은 추론 벡터 처리의 영향을 관리하면서, 추론 벡터 연산을 행하는 메카니즘을 제공하는 것이 바람직할 것이다.
일면에 따르면, 본 발명은, 데이터 처리장치로서, 복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하도록 구성된 처리회로와, 상기 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하도록 구성된 추론 제어회로를 구비하고, 상기 처리회로는 상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하도록 구성되고, 상기 추론 제어회로는, 진행 표시들과 추론 축소(speculation reduction) 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 상기 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하도록 더 구성되고, 상기 추론 제어회로는 상기 추론 축소 상태의 검출에 더 응답하여 상기 추론 폭 표시를 축소시키는 데이터 처리장치를 제공한다.
추론 벡터 연산들의 시퀀스의 수행중에 진행 표시를 발생하도록 처리회로를 구성함으로써, 추론 제어회로가 추론 축소 기준(이것은 고정된 기준이거나, 추론 제어회로에 의해 액세스하기 위해 기억되고 재설정가능한 기준이어도 된다)에 대해 이들 진행 표시를 평가함으로써, 현재의 추론 폭이 데이터 처리장치의 선택된 성능 특성(예를 들어, 스루풋 또는 에너지 소비)에 대한 상당한 악영향을 미치는 것으로 보이는 상황을 판단할 수 있도록 한다. 그후, 이와 같은 상황의 검출시에, 추론 제어회로는 추론 폭 표시를 축소함으로써, 추론 벡터 연산을 받는 각각의 벡터 피연산자의 벡터 성분들의 수를 축소하도록 구성된다.
진행 표시는 일반적으로 추론 제어회로가 추론 벡터 연산들의 수행이 성능 특성에 악영향을 미치고 있는 벡터 성분의 위치를 식별할 수 있도록 구성된다. 예를 들어, 각각의 진행 표시는 이 진행 표시와 관련되는 벡터 성분 위치를 명확하게 식별한다.
단순히 예를 들면, 추론 벡터 로드(load) 연산의 수행중에 성분 위치 x에 위치한 메모리로부터 로드할 특정한 벡터 성분이 시스템의 캐시 계층 내의 특정한 캐시 레벨에서 캐시 부적중(miss)을 발생한 경우에 , 추론 축소 기준은, 이와 같은 캐시 부적중 이벤트와 관련되는 예측된 대기시간을 식별하거나, 이와 같은 이벤트의 발생이 추론 축소 상태를 표시한다는 것을 직접 식별한다. 추론 벡터 처리가 여전히 현재 명시된 추론 폭에서 계속 행해질 수도 있지만, 이것은 캐시 부적중에 의해 도입된 대기시간으로 인해 성능에 상당히 영향을 미칠 수도 있으며, 이 시점에서 성분 위치 x와 그것보다 더 높은 위치를 배체하도록 추론 폭을 축소함으로써, 이 대기시간을 피할 수 있다. 그후, 필요한 경우에는 벡터 연산들의 시퀀스가 반복되어, 생략된 벡터 성분들에 대해 벡터 연산을 행하도록 시도할 수도 있으며, 이 벡터 연산들의 시퀀스가 반복되는 시간으로 인해, 동일한 대기시간 문제가 일어나지 않을 수 있다(예를 들어, 필요한 데이터 성분이 캐시 내부에 존재할 때 쯤이면, 캐시 부적중이 일어나지 않는다).
따라서, 본 발명을 이용함으로써, 특정한 추론 폭에서의 추론 벡터 연산의 수행이 이 선택된 성능 특성에 과도한 악영향을 미치게 되는 상황을 피하도록 시도함으로써, 추론 벡터 연산을 행하는 동안 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 수 있다.
상기한 진행 표시는 다양한 형태를 취할 수 있다. 일 실시예에서, 진행 표시들은 추론 벡터 연산들의 수행중에 상기 처리회로 내에서 발생하는 스루풋에 영향을 미치는 이벤트들을 표시한다. 이와 달리, 또는 이에 덧붙여, 진행 표시들은 추론 벡터 연산들의 수행중에 처리회로 내에서 발생하는 에너지 소비에 영향을 미치는 이벤트들을 표시한다. 일 실시예에서는, 진행 표시들에 의해 표시되는 영향을 미치는 이벤트들은 성능 특성에 부정적인 영향을 미치고 있는 이벤트이지만, 일 실시예에서는, 영향을 미치는 이벤트들은 성능 특성에 대해 긍정적인 영향을 미치고 있는 이벤트, 예를 들어, 예상한 것보다 더 빨리 행해지고 있거나 또는 에너지를 덜 소모하는 특정한 연산을 식별해도 된다.
진행 표시의 발생을 기동하는 이벤트들은 다양한 형태를 취할 수 있다. 일 실시예에서, 진행 표시들의 적어도 일부는 추론 벡터 연산들의 수행중에 상기 처리회로 내부에서 발생하는 마이크로아키텍처 이벤트들에 응답하여 발행된다.
프로세서의 특징, 구성요소 또는 거동이 구현의 정확함(즉, 이것이 명령 세트 아키텍처를 정확하게 구현하는지 여부)이 아니라 구현의 품질(예를 들어, 프로세서가 프로그램을 실행하기 위해 더 많은 또는 더 적은 시간 또는 에너지를 사용하게 하는 것)에만 영향을 미치는 경우에, 프로세서의 특징, 구성요소 또는 거동을 "마이크로아키텍처"인 것으로 생각할 수 있다. 예를 들어, 현대의 프로세서는 분기를 가속하기 위해 분기 예측기를 사용하고, 메모리 판독을 가속하기 위해 캐시를 사용하고, 메모리 기록을 가속하기 위해 기록 버퍼를 사용하고, 페이지 테이블 검색을 가속하기 위해 변환 색인 버퍼를 사용하고, 명령들의 시퀀스의 실행을 가속하기 위해 파이프라인을 사용한다. 이들 특징은 모두 실행을 가속하지만 프로그램의 최종 결과에 영향을 미치지 않기 때문에 마이크로아키텍처 특징으로 생각할 수 잇다.
이것은 구현의 정확함에 영향을 미치는 프로세서의 특징, 구성요소 또는 거동과 대비되어야 하는데, 이와 같은 특징, 구성요소 또는 거동은 "아키텍처"인 것으로 생각된다. 예를 들어, 현대의 프로세서는 가상 메모리를 구현하기 위해 페이지 테이블 및 페이지 결함 예외를 사용하고, 콘텍스트 스위칭을 지원하기 위해 인터럽트를 사용하고, "0으로 나누기(divide by zero)" 등의 연산 에러 상태를 처리하기 위해 연산 예외를 사용한다. 아키텍처 특징, 구성요소 또는 거동은, 예를 들어, 추가적인 명령들이 실행되도록 함으로써, 일반적으로 프로그램 실행에 영향을 미치는 아키텍처 이벤트를 발생한다. 이에 반해, 마이크로아키텍처 특징, 구성요소 또는 거동은 마이크로아키텍처의 거동에 영향을 미치지만 아키텍처 레벨에서 영향을 미치지 않는 마이크로아키텍처 이벤트를 발생한다. 이것들은 예를 들어 프로그램이 그렇지 않은 경우보다 약간 더 느리게 실행되게 하지만 프로그램 실행에 영향을 미치지 않는다.
추론 폭 표시는 다양한 형태를 취할 수 있다. 예를 들어, 추론 폭 표시는, 특정한 성분 위치들, 마스크, 또는, 예를 들어 개시 성분 위치 및/또는 종료 성분 위치를 식별하는 한 개 이상의 레지스터의 콘텐츠에 의해 명시될 수 있다. 일 실시예에서, 추론 폭 표시는, 추론 벡터 연산을 받을 각 벡터 피연산자의 벡터 성분의 수를 표시할 뿐만 아니라, 상기한 추론적 연산을 받을 각각의 벡터 피연산자의 제 1 벡터 성분을 식별한다.
추론 벡터 연산을 받게 될 벡터 성분들의 수가 일련의 인접한 벡터 성분 위치들을 차지할 필요가 없기는 하지만, 일 실시예에서, 추론 폭 표시는 상기한 추론 벡터 연산을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 상기 제 1 벡터 성분에서 개시하는 순차적인 벡터 성분들의 지정된 수로서 식별한다.
일 실시예에서, 처리회로는 명령들의 벡터 루프를 실행하도록 구성되고, 상기 벡터 루프는 상기 벡터 연산들의 시퀀스를 정의하는 명령들과 상기 벡터 연산들의 시퀀스의 수행 후에 상기 벡터 루프 내의 커미트 시점에서 실행된 적어도 한 개의 평가 명령을 포함하고, 상기 적어도 한 개의 평가 명령의 실행은 필요한 벡터 폭이 결정되도록 한다. 더구나, 상기한 추론 제어회로는, 상기 필요한 벡터 폭의 결정에 응답하여, 상기 추론 폭 표시의 현재 값을 참조하여, 상기 벡터 연산들의 시퀀스의 수행이 과도 추론(over-speculation) 또는 추론 부족(under-speculation)을 발생하였는지 판정하고, 상기 추론 부족의 경우에는, 상기 명령들의 벡터 루프의 추가적인 반복이 실행되도록 반복 플래그를 설정한다. 따라서, 추론 벡터 연산들의 수행중에 필요에 따라 추론 폭이 변동될 수 있으며, 필요에 따라 그후의 추론 벡터 연산들의 시퀀스의 반복이 행해져, 모든 필요한 벡터 성분들에 대해 벡터 연산이 궁극적으로 행해지도록 보장한다.
일 실시예에서, 상기한 명령들의 벡터 루프의 추가적인 반복시에, 추론 제어회로는 상기한 명령들의 벡터 루프의 이전의 반복 중에 처리된 벡터 성분들의 수를 고려하여 상기한 추론 폭 표시를 수정된 초기값으로 초기화하도록 구성된다.
일 실시예에서, 상기 벡터 루프는 상기 커미트 시점 이후에 실행될 한 개 이상의 비추론적(non-speculative) 명령들을 포함하고, 상기 추론 제어회로는 상기 한 개 이상의 비추론적 명령들에 의해 정의된 비추론적 연산을 받을 각각의 벡터 피연산자의 상기 벡터 성분들의 수를 식별하도록 마스크 값을 설정하도록 더 구성된다. 일 실시예에서, 추론 부족의 경우에는 이 마스크가 커미트 시점에서 존재한 추론 폭의 값을 식별하도록 설정되는 반면에, 과도 추론의 경우에는 마스크가 커미트 시점에서 결정되는 필요한 벡터 폭을 식별하도록 설정되게 된다.
일 실시예에서, 상기 데이터 처리장치는 상기 처리회로에 의해 액세스하기 위한 벡터 피연산자들을 기억하도록 구성된 벡터 레지스터 뱅크를 포함하고, 상기 처리회로는 상기 벡터 레지스터 뱅크와 적어도 한 개의 레벨의 캐시 저장소를 포함하는 메모리 시스템 사이에서 벡터 피연산자들을 이동하기 위해 벡터 액세스 연산을 행하도록 구성된 데이터 액세스 회로를 포함한다. 이와 같은 실시예에서, 상기 데이터 액세스 회로는 상기 벡터 액세스 연산의 수행중에 발생되는 캐시 부적중에 관련된 정보를 진행 표시들로서 발행하도록 구성된다. 이와 같은 캐시 부적중은 상당한 대기시간을 발생할 수 있으며, 따라서 추론 폭을 축소할 것인지 여부를 결정할 때 유용한 정보를 제공할 수 있다.
일 실시예에서, 상기 데이터 처리장치는 상기 벡터 액세스 연산의 수행중에 상기 데이터 액세스 회로에 의해 참조되는 변환 색인 버퍼(translation lookaside buffer: TLB)를 더 구비하고, 상기 데이터 액세스 회로는 상기 벡터 액세스 연산의 수행중에 발생하는 TLB 부적중에 관련된 정보를 진행 표시들로서 발행하도록 더 구성된다. TLB 부적중이 발생한 경우에는, TLB 내부의 기억을 위해 필요한 페이지 테이블 정보를 메모리에서 검색하기 위해 "페이지 테이블 워크(page table walk)"를 행하는 것이 필요하기 때문에, TLB 부적중도 상당한 대기시간을 발생할 수 있으며, 따라서 TLB 부적중의 표시도 추론 폭을 축소할 것인지 여부를 결정할 때 유용한 정보를 제공할 수 있다.
전술한 진행 표시의 두가지 예는 데이터 액세스 회로의 활동에 관련된 것이지만, 처리회로의 다른 구성요소들도 추론 제어회로에 진행 표시를 제공하도록 구성될 수도 있다는 것은 자명하다. 확실히, 추론 벡터 연산을 행하고 있는 처리회로에 의해 발생되고 있는 진행 표시 이외에, 행해지고 있는 추론 벡터 연산이 시스템 내부의 다른 구성요소에 대한 수행상의 영향을 미칠 수도 있기 때문에, 진행 표시가 시스템 내부의 다른 구성요소들, 예를 들면, 스칼라 연산을 행하도록 구성된 스칼라 회로에 의해 발행되어도 된다. 예를 들어, 추론 루프가 다수의 연산(벡터인지 스칼라인지 무관하게)을 포함하는 경우에, 추론 폭이 너무 많이 축소되는 경우에는, 이들 연산이 반복되어야 한다. 행해지는 스칼라 및 벡터 연산들의 수를 추적하는 것은 이와 같은 잠재적인 반복 비용이 추론 폭을 축소시키는 판정에 영향을 미칠 수 있게 한다.
일 실시예에서, 상기 데이터 처리장치는, 상기 추론 폭 표시의 축소에 응답하여, 상기 추론 폭 표시가 축소되도록 한 추론 축소 상태의 검출을 일으킨 진행 표시들을 갖는 벡터 연산에서 개시하는 상기 시퀀스에서 발생하는 선택된 벡터 연산을 받은 각각의 벡터 피연산자의 벡터 성분들의 수를 변경한다. 특정한 일 실시예에서, 선택된 벡터 연산은, 추론 폭 축소를 발생한 진행 표시를 갖는 벡터 연산과 그후의 시퀀스 내부의 모든 벡터 연산들을 포함한다.
더구나, 일 실시예에서는, 이와 같은 접근방법이, 추론 폭 표시가 축소되도록 한 추론 축소 상태의 검출을 일으킨 진행 표시를 갖는 벡터 연산 전의 시퀀스에서 발생하는 완료되지 않은 벡터 연산들을 받은 각각의 벡터 피연산자의 벡터 성분들의 수를 추가적으로 변경하도록 확장될 수 있다. 따라서, 이것은 추론 폭 표시가 축소될 때 여전히 진행되고 있는 이전에 발행된 벡터 연산들을 받은 벡터 성분들의 수의 회귀적 트리밍(retrospective trimming)을 허용한다. 따라서, 이와 같은 구성은, 이들 이전에 발행된 추론 벡터 연산을 완료함에 있어서 다른 식으로 소모되는 에너지 소비를 줄일 수 있다.
일 실시예에서, 상기 데이터 처리장치는, 상기 추론 폭 표시의 축소에 응답하여, 상기 처리회로의 한 개 이상의 구성요소들 내부의 소비전력을 줄이도록 구성된 제어회로를 더 구비한다. 이것은 다양한 방법으로 달성될 수 있지만, 일 실시예에서, 상기 제어회로는 상기 한 개 이상의 구성요소들 내부의 소비전력을 줄이기 위해 클록 게이팅 및 전력 게이팅 중에서 적어도 한가지를 채용한다. 따라서, 클록 게이팅 메카니즘이 사용되는 경우에는, 처리회로 내부의 특정한 구성요소들이 수정된 추론 폭의 외부에 있는 성분 위치들에서 추론 벡터 연산의 수행시의 전력을 소모하지 않도록 하기 위해 그들의 클록신호를 제거되로록 할 수 있다. 어떤 상황에서는, 전력 게이트를 그 대신에 사용하여 관련 구성요소들로부터 전원 공급을 제거할 수도 있다. 일 실시예에서는, 제어회로가 현재의 추론 폭의 표시를 계속해서 수신하도록 구성될 수 있으며, 또는 이와 달리 추론 폭이 변경되었을 때에만 표시를 수신하도록 구성될 수도 있다.
추론 폭 표시에 대한 초기값과 추론 축소 기준을 명시할 수 있는 다양한 방법이 존재한다. 예를 들어, 일 실시예에서, 상기 추론 폭 표시가 초기화되는 상기 초기값과 상기 추론 축소 기준 중에서 적어도 한 개는 상기 데이터 처리장치에 의해 실행할 명령에 의해 명시된다. 이 명령은 처리회로에 의해 실행된 명령들 중에서 한 개이어도 되고, 또는 사실상 추론 제어회로에 의해 실행된 특정한 명령, 예를 들어 추론을 개시하는 명령이어도 된다. 또 다른 실시예에서, 상기 추론 폭 표시가 초기화되는 상기 초기값과 상기 추론 축소 기준 중에서 적어도 한 개는 사전에 결정된다.
또 다른 실시예에서, 상기 데이터 처리장치는, 상기 처리회로에 의해 이전에 행해진 추론 벡터 연산들의 시퀀스에 대한 커미트 시점에서 사용된 추론 폭 값들과 관련된 이력 데이터를 유지하도록 구성된 예측회로를 더 구비한다. 그후, 예측회로는, 상기 처리회로에 의해 행해질 추론 벡터 연산들의 현재의 시퀀스에 대해, 상기 이력 데이터를 참조하여, 상기 추론 벡터 연산들의 현재 시퀀스의 수행 이전에 상기 추론 폭 표시가 설정될 상기 초기값을 결정하도록 구성된다. 이와 달리, 또는 이에 덧붙여, 상기 예측회로는 추론 벡터 연산들의 이전의 시퀀스들에 대해 사용된 추론 축소 기준에 관련된 이력 데이터를 유지하고, 그후 상기 이력 데이터를 참조하여, 상기 추론 벡터 연산들의 현재의 시퀀스에 대해 사용될 상기 추론 축소 기준을 결정한다.
추론 벡터 연산들의 시퀀스는 다양한 방법으로 식별될 수 있다. 예를 들어, 명령 세트는 특정한 벡터 명령들의 비추론적 및 추론적 버전들을 포함하므로, 특정한 명령들이 추론적인 것으로 명시적으로 식별될 수 있다. 이와 달리, 데이터 처리장치는 추론적 동작 모드에 진입하고 이 동작 모드에서 벗어나도록 구성되고, 추론적 동작 모드 내에서 마주치는 모든 명령들이 추론적으로 실행된다. 이와 같은 추론적 동작 모드가 지원되는 일 실시예에서, 상기 추론 제어회로는 개시 추론 명령의 실행에 응답하여 추론적 동작 모드를 기동하고, 상기 처리회로는 상기 추론적 동작 모드중에 실행된 명령들에 응답하여 상기 추론 벡터 연산을 행하도록 구성된다.
이와 같은 일 실시예에서, 상기 추론 제어회로는 커미트 명령의 실행에 더 응답하여 상기 추론적 동작 모드를 종료한다.
일 실시예에서, 상기 추론 제어회로는 상기 추론 축소 상태에 응답하여 상기 추론 폭 표시를 수정함으로써 각각의 벡터 피연산자의 적어도 한 개의 벡터 성분이 상기 추론 벡터 연산을 받게 될 것이라는 것을 표시한다. 각각의 벡터 피연산자의 적어도 한 개의 벡터 성분이 처리되도록 추론 폭 표시에 대해 하한을 설정함으로써, 이것이 순방향 진행이 항상 행해지도록 보장한다. 추론 폭 표시가 한 개의 벡터 성분을 식별할 때, 이것은 사실상 추론이 행해지고 있지 않는 상태에 해당한다.
추론 축소 기준이 이 기준을 만족하는 경우에 추론 축소 상태의 존재를 표시하는 한 개 이상의 기준을 직접적으로 명시하여도 되지만, 이와 달리, 또는 이에 덧붙여, 상기 추론 축소 기준은 상기 추론 제어회로에 의해 유지되는 성능 허용오차(performance tolerance) 정보를 포함하고, 상기 추론 제어회로는 상기 추론 벡터 연산들의 시퀀스의 수행중에 발생된 진행 표시를 고려하여 상기 성능 허용오차 정보를 조정하도록 구성된다. 이와 같은 일 실시예에서는, 추론 벡터 연산의 처리중에 성능 특성이 영향을 받는 방식에 있어서 이용가능한 슬랙(slack)의 표시를 제공하는 것으로서 성능 허용오차 정보를 생각할 수 있으며, 이 슬랙 정보는 수신된 진행 표시에 따라 조정된다. 일 실시예에서, 진행 표시는 선택된 성능 특성에 대해 부정적인 영향을 미치는 이벤트만을 표시하므로, 슬랙 표시가 일 방향으로만 조정된다. 그러나, 또 다른 실시예에서는, 진행 표시가 부정적인 영향 및 긍정적인 영향 모두를 갖는 이벤트들을 표시하고, 이와 같은 실시예에서는 슬랙 표시가 양방향으로 조정된다. 그러나, 성능 허용오차 정보(슬랙 표시)가 조정되며, 이때 상기 성능 허용오차 정보가 기동점(trigger point)에 도달하면 상기 추론 제어회로가 추론 축소 상태를 검출하도록 구성될 수 있다.
일 실시예에서, 상기 추론 제어회로는, 상기 추론 폭 표시가 축소될 양을 결정할 때 상기 성능 허용오차 정보를 참조한다. 이와 같은 구성은 성능 허용오차를 초과한 크기를 고려하여 추론 폭 축소의 양을 동적으로 관리할 수 있게 할 수 있다.
이와 달리, 상기 추론 축소 상태의 검출시에 상기 추론 폭 표시가 축소될 양이 사전에 결정되어도 된다. 이것은, 추론 폭이 축소될 미리 설정된 수의 소자 위치들을 식별함으로써 사전에 결정되어도 되고, 또는 추론 폭을 조정하는 방식을 결정할 때 사용될 특정한 규칙을 식별함으로써 사전에 결정되어도 된다.
제 2 면에 따르면, 본 발명은, 추론 벡터 연산의 수행을 제어하는 방법으로서, 복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하는 단계와, 상기 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하는 단계와, 상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하는 단계와, 상기 진행 표시들과 추론 축소 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하는 단계와, 상기 추론 축소 상태의 검출시에, 상기 추론 폭 표시를 축소하는 단계를 포함하는 추론 벡터 연산의 수행 제어방법을 제공한다.
제 3 면에 따르면, 본 발명은, 컴퓨터가 본 발명의 제 1 면에 따른 데이터 처리장치로서 동작하게 하는 프로그램 명령들에 대해 가상 머신 실행 환경을 제공하도록 컴퓨터를 제어하는 컴퓨터 프로그램을 비일시적인 형태로 기억하는 컴퓨터 프로그램 제품을 제공한다.
제 4 면에 따르면, 본 발명은, 데이터 처리장치로서, 복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하는 처리수단과, 상기 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하는 추론 제어수단을 구비하고, 상기 처리수단은 상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하고, 상기 추론 제어수단은, 진행 표시들과 추론 축소 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 상기 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하고, 상기 추론 제어수단은 상기 추론 축소 상태의 검출에 응답하여 상기 추론 폭 표시를 축소시키는 데이터 처리장치를 제공한다.
이하, 다음의 첨부도면에 도시된 실시예들을 참조하여 본 발명을 더욱 상세히 설명한다:
도 1은 일 실시예에 따른 데이터 처리장치의 블록도이다.
도 2a 내지 도 2c는 일 실시예에 따른 도 1의 추론 제어회로 내부에 설치된 다양한 제어 레지스터들을 개략적으로 나타낸 것이다.
도 3은 전술한 실시예들의 기술을 이용하여 벡터화될 수 있는 스칼라 명령들의 루프를 개략적으로 나타낸 것이다.
도 4 및 도 5는 일 실시예에 따른 도 3의 스칼라 루프를 벡터화하는데 사용된 벡터 명령들의 시퀀스를 개략적으로 나타낸 것이다.
도 6은 추론 벡터 연산들의 시퀀스의 수행중에 일 실시예에 따라 추론 폭이 축소되는 방법을 개략적으로 나타낸 흐름도이다.
도 7은 일 실시예에 따른 추론 개시시에 행해진 단계들을 나타낸 흐름도이다.
도 8은 일 실시예에 따른 커미트 처리중에 취해지는 단계들을 나타낸 흐름도이다.
도 9는 일 실시예에 따른 벡터 연산들의 시퀀스의 수행중에 조건부 종료(conditional exit) 스테이지에서 행해진 단계들을 나타낸 흐름도이다.
도 10a 및 도 10b는, 특정한 실시예들에 따른, 추론 폭의 축소 후에 보류중인(pending) 추론 벡터 연산들의 처리가 변경되는 방법을 개략적으로 나타낸 것이다.
도 11 및 도 11b는, 또 다른 실시예에 따른, 추론 폭의 축소 후에 보류중인 추론 벡터 연산들의 연산이 변경되는 방법을 개략적으로 나타낸 것이다.
도 12a 및 도 12b는 전술한 실시예들의 기술을 사용하지 않은 추론 벡터 연산들의 성능(도 12a)과 비교할 때 전술한 실시예들을 기술을 사용하여 구현될 수 있는 성능(도 12b)의 차이를 개략적으로 나타낸 것이다.
도 13은, 일 실시예에 따른, 축소 기준이 슬랙 표시의 형태를 갖는 성능 허용오차 정보를 포함하는 실시예들에서 추론 폭이 조정되는 방법을 나타낸 흐름도이다.
도 14a 및 도 14b는, 2개의 실시예에 따른, 도 13의 접근방법을 채용할 때 슬랙 표시가 변동되는 방식을 개략적으로 나타낸 것이다.
도 15는 일 실시예에 따른 데이터 처리장치의 가상 머신 구현예를 개략적으로 나타낸 것이다.
도 1은 일 실시예에 따른 데이터 처리장치(5)의 일부를 나타낸 것이다. 이 도면에는 벡터 처리 부분만 도시되어 있으며, 벡터 및 스칼라 명령들이 디코드 및 실행될 수 있도록, 스칼라 처리회로, 스칼라 로드/저장 유닛 및 스칼라 레지스터 뱅크가 존재하여도 된다.
실행된 명령을 유지하는 명령 캐시(10)가 설치되고, 명령을 디코드하고 제어신호들을 도 1의 장치 내부의 적절한 회로들에 송신하도록 구성된 디코드회로(20)에 이들 명령이 전달된다. 특히, 범용 벡터 처리 명령들에 대해, 디코드회로(20)는 벡터 처리회로(30) 내부의 해당 벡터 처리 유닛들(35)에 제어신호들을 발생하고, 그후 이 벡터 처리 유닛은 벡터 레지스터 뱅크(40) 내부에 기억된 한 개 이상의 벡터 소스 피연산자들을 참조하여 필요한 벡터 처리 연산을 수행하게 된다. 일반적으로, 이들 연산의 결과들은 한 개 이상의 벡터 목적지 피연산자들로서 벡터 레지스터 뱅크(40)에 다시 기억된다. 도 1에 개략적으로 나타낸 것과 같이, 벡터 처리 유닛은 다양한 형태, 예를 들어 한 개 이상의 연산 논리 유닛(ALU), 부동소수점 유닛(FPU) 등을 취할 수 잇다.
모든 벡터 데이터 액세스 명령들에 대해, 이들 명령들의 디코딩은 제어신호가 벡터 처리회로(30) 내부의 벡터 로드/저장 유닛(50)에 발행되게 하며, 이 벡터 로드/저장 유닛은 벡터 레지스터 뱅크(40)와 캐시/메모리(여기에서 캐시/메모리는 메모리 시스템으로 불린다) 사이에서 어느 한 방향으로 한 개 이상의 데이터 피연산자들을 이동하도록 구성된다. 예시용으로 도시한 것과 같이, 메모리 시스템은 레벨 1 캐시(72), 레벨 2 캐시(74)와, 벡터 레지스터 뱅크와 메인 메모리(76) 사이에 배치된 잠재적인 추가적인 캐시 레벨들로 이루어진 계층 캐시 구조를 포함한다.
벡터 데이터 액세스 명령이 벡터 로드 명령인 경우에는, 로드/저장 유닛(50)이 적어도 한 개의 벡터 피연산자를 메모리 시스템으로부터 벡터 레지스터 뱅크(40)에 로드하게 된다. 마찬가지로, 벡터 데이터 액세스 명령이 벡터 저장 명령인 경우에는, 로드/저장 유닛(50)이 적어도 한 개의 벡터 피연산자를 벡터 레지스터 뱅크(40)로부터 메모리 시스템에 기억하게 된다.
전술한 실시예에 따르면, 처리회로(30)는 추론 벡터 연산들의 시퀀스를 행하도록 구성될 수 있고, 추론 제어회로(60)가 추론 벡터 연산을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하는 추론 폭 표시를 유지하기 위해 설치된다. 특히, 추론 제어회로는 다수의 제어 레지스터들(65)을 갖고, 일 실시예에서 이들 제어 레지스터들의 상태는, 추론적 연산이 언제 행해질 것인지를 식별하고, 현재의 추론 폭을 더 식별하고, 이 제어정보는 경로 82를 거쳐 벡터 처리회로(30)로 전달된다.
도 1에 도시된 실시예에서는, 명령 큐(10)에 기억된 명령들의 시퀀스가 개시 추론 명령을 포함하고, 이 명령은 디코드회로(20)에 의해 디코드되면 제어신호들이 추론 제어회로(60)로 발행되도록 하여 추론 동작 모드를 개시하게 된다. 특히, 일 실시예에서는, 추론 제어회로(60)가 이와 같은 제어신호에 응답하여, 추론 모드가 이제 활성인 것을 식별하기 위해 제어 레지스터들(65) 내부의 추론 플래그를 설정한다. 그후, 이 정보는 경로 82를 거쳐 벡터회로(30)에 전달되고, 그후 디코드회로(20)로부터 수신된 제어신호들에 따라 벡터 처리회로(30)에 의해 실행될 다음의 연산들은, 추론 동작 모드를 벗어날 때까지, 추론적으로 행해지게 된다. 일 실시예에 따르면, 커미트 명령을 통해 추론 모드를 벗어나는데, 이 커미트 명령은 디코드회로(20)에 의해 디코드될 때 제어신호들이 추론 제어회로(60)로 송신되도록 하여 제어회로가 추론 플래그를 소거하게 한다.
전술한 실시예에서는, 특정한 추론 동작 모드가 제공되었지만, 특정한 추론 동작 모드에 대해 요구사항이 존재하지 않는다. 그 대신에, 또 다른 실시예에서는, 명령 세트 내부의 적어도 명령들의 서브셋의 추론적 및 비추론적 버전들이 설치되어, 시퀀스 내부의 개별적인 명령들이 추론적으로 실행될 수 있다.
벡터 처리회로(30)에 의해 행해진 모든 추론적 연산들에 대해, 추론 폭 표시가 경로 92를 거쳐 추론 제어회로960) 내부의 제어 레지스터들(65)로부터 전달되어, 이들 추론 벡터 연산을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 식별한다. 추론이 개시될 때, 예를 들어 일 실시예에서는 피연산자의 전체 벡터 폭이 될 수도 있는 초기값으로 추론 폭 표시가 초기화된다. 따라서, 단지 예를 들면, 벡터 피연산자가 16개의 벡터 성분들을 포함하는 경우, 추론 폭 표시의 초기값이 16으로 설정될 수도 있다.
추론 벡터 연산의 수행중에, 처리회로(30)는 경로 80을 거쳐 추론 제어회로(60)에 진행 표시를 발행하도록 구성된다. 진행 표시는 벡터 처리회로에 의해 실행되고 있는 다양한 연산의 진행에 대한 정보를 제공한다. 진행 표시는 다양한 방식으로 발행될 수 잇지만, 일 실시예에서는 벡터 처리회로 내부의 다수의 이벤트들이 진행 표시가 출력되게 한다. 일 실시예에 있어서, 이들 진행 표시는 스루풋에 영향을 미치는 이벤트들 및/또는 에너지 소비에 영향을 미치는 이벤트들을 표시한다. 일 실시예에서, 이들 이벤트는 스루풋이나 에너지 소비에 대해 부정적인 영향을 미치는 종류의 이벤트이다. 그러나, 도 13을 참조하여 나중에 설정하는 것과 같은 또 다른 실시예에서는, 이들 이벤트가 스루풋이나 에너지 소비에 대해 긍정적인 영향을 미치는 이벤트를 포함할 수 있다.
이와 같은 진행 표시를 일으키는 이벤트들의 종류는 다양한 형태를 취할 수 있지만, 일 실시예에서, 이들 이벤트는 추론 벡터 연산의 수행중에 처리회로(30) 내부에서 발생하는 마이크로아키텍처 이벤트이다. 전술한 것과 같이, 이와 같은 마이크로아키텍처는, 실행되고 있는 명령들을 포함하는 프로그램을 실행할 때 처리회로가 더 많은 또는 더 적은 시간 또는 에너지를 사용하게 함으로써 구현의 품질에 영향을 미치지만. 구현의 정확함은 영향을 받지 않는다. 따라서, 마이크로아키텍처 이벤트들의 존재 그 자체가 회로의 동작이 변경되기 위한 요구조건을 제공하지 않는다. 그러나, 이하에서 더욱 상세히 설명하는 것과 같이, 전술한 실시예에 따르면, 추론 폭의 축소가 이 추론 폭의 축소가 일어나지 않는 연속된 연산에 대해 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것 같은 상태를 결정하기 위해 추론 제어회로가 진행 표시를 사용한다.
특히, 추론 제어회로(60)는, 고정되거나, 또는 이와 달리, 예를 들어 명령 스트림 내부의 명령의 실행을 통해, 설정가능한 축소 기준(70)을 액세스한다. 축소 기준이 명시될 수 있는 다양한 방법이 존재한다. 예를 들어, 추론 축소 기준은 진행 표시를 통해 보고된 특정한 이벤트들과 관련될 예측된 대기시간 및/또는 에너지 소비를 식별하고, 추론 제어회로(60)는 시간의 경과에 수신된 이벤트들과 관련된 대기시간 및/또는 에너지 소비의 기록을 유지하고 특정한 기동점에 도달할 때 추론 축소 상태를 검출한다. 이와 달리, 축소 기준은, 특정한 이벤트들이 발생할 때, 추론 축소 상태의 존재를 표시하는 특정한 이벤트들을 직접적으로 식별해도 된다.
추론 축소 상태의 검출시에, 경로 80을 거쳐 수신된 진행 표시의 축소 기준(70)과의 대조를 통한 분석을 거쳐, 추론 제어회로(60)가 추론 폭을 축소하도록 구성되고, 이 시점에서 제어 레지스터들(65)의 콘텐츠가 이 축소된 추론 폭을 식별하도록 갱신되어, 새로운 추론 폭이 경로 82를 거쳐 벡터 처리회로(30)로 전달되도록 한다. 이것은 벡터 처리회로(30)가 현재 진행중인 벡터 처리 연산을 받는 벡터 성분들의 수를 축소하게 한다. 특히, 추론 폭 축소를 일으키는 진행 표시를 발생한 연산 후에 행해지고 있는 적어도 벡터 연산들은 일반적으로 축소된 수의 벡터 성분들에 대해 행해지게 된다. 일 실시예에서는, 추론 폭 축소를 발생하게 한 진행 표시를 일으킨 연산이 여전히 진행중이라고 가정하여, 축소된 추론 폭이 이 연산에도 적용될 수 있다. 더구나, 도 10b를 참조하여 설명하는 일 실시예에서는, 축소가 발생할 때 여전히 진행중인 벡터 연산들이 추론 폭을 축소시킨 진행 표시를 발생하는 연산 이전에 발행되었더라도, 추론 폭 축소가 이들 연산에도 영향을 미칠 수 있다.
진행 표시를 이용하여, 현재의 추론 폭을 사용한 연속된 연산이 스루풋이나 에너지 소비 등의 성능 특성에 악영향을 미칠 가능성이 있는 상태를 검출함으로써, 추론 제어회로는 추론 폭을 축소시켜 이 영향을 없애려도 시도할 수 있다. 그후, 필요한 벡터 성분의 폭이 축소된 추론 폭보다 큰 것으로 나중에 판정된 경우에, 이 추론 폭 축소의 결과로써 추론적 연산으로부터 배치된 벡터 성분들이 추론 벡터 연산들의 다음의 반복의 대상으로 될 수 있다.
추론 폭이 축소될 때 벡터 처리회로(30)의 에너지 소비를 줄이기 위해, 클록/전력 게이팅 회로(92)가 옵션으로 설치되고 경로 90을 거쳐 현재의 추론 폭의 표시를 수신하도록 구성된다. 현재의 추론 폭 정보에 근거하여, 클록/전력 게이팅 회로는 벡터 처리회로(30) 내부의 다양한 구성요소들에 공급된 클록 또는 전력을 변경할 수 있다. 예를 들어, 추론 폭의 축소의 결과로써, 처리회로 내부의 특정한 구성요소들이 한 개 이상의 클록 사이클동안 연산을 행할 필요가 없는 경우에는, 클록신호를 이들 구성요소들로부터 제거하여 이들 구성요소가 소모하는 전력을 줄인다. 더 긴 기간동안 이들 구성요소가 필요하지 않은 경우에는, 장치가 동적 전력 스케일링 기술을 지원하는 상태에서는 이들 구성요소들에 대한 전원 공급을 제거하거나 줄임으로써, 이들 구성요소를 저전력 동작 모드로 배치하는 것이 적절할 수도 있다.
벡터 처리회로 내부의 모든 구성요소들은 경로 80을 거쳐 진행 표시를 발생하도록 구성될 수도 있다. 그러나, 스루풋에 대해 악영향을 미칠 것 같은 이벤트들을 고려하면, 이들 이벤트는 벡터 로드/저장 유닛(LSU)(50)을 사용하여 로드 또는 저장 연산을 행할 때 발생하는 캐시 부적중과 관련된다. 특히, LSU가 벡터 로드 또는 저장 연산을 행할 때 특정한 벡터 성분 위치와 관련된 레벨 1 캐시(72) 또는 레벨 2 캐시(74) 내부의 캐시 부적중을 검출하는 경우에, 이 LSU는 부적중이 검출된 캐시 레벨과 캐시 부적중이 발생하는 성분 위치를 식별하는 진행 표시를 경로 80을 거쳐 송신한다. 그후, 추론 제어회로는 축소 기준(70)과 관련시켜 이 정보를 사용하여, 추론 폭을 축소시킬 것인지 여부를 결정한다. 축소 기준은, 예를 들어, (일반적으로 상당한 대기시간을 유발하는) 레벨 2 캐시 부적중이 추론 폭이 축소되게 하여, 레벨 2 캐시 부적중을 일으키는 벡터 성분 위치를 배제해야 한다는 것을 식별한다. 이와 달리, 축소 기준은 서로 다른 성분 위치들에 대해 서로 다른 기준을 효율적으로 제공한다. 예를 들어, 벡터 내부의 성분 위치가 증가할 때, 이것은 더 높은 정도의 추론을 표시하며, 따라서 높은 성분의 위치들과 관련된 캐시 부적중이 즉시 추론 폭이 축소되게 하는 반면에, 더 낮은 성분 위치들과 관련된 캐시 부적중은 추론 폭이 축소되게 할 필요가 없다.
데이터 처리 시스템이 메모리를 액세스할 때 가상 어드레스를 사용하는 경우가 많으며, TLB 저장소(55)를 사용하여 이들 가상 어드레스들을 메모리 시스템을 액세스하기 위한 물리 어드레스들로 변환한다. 주지하는 것과 같기, TLB 저장소(55)는, 구체적인 가상 어드레스를 식별하는 다수의 엔트리들과, 각각의 가상 어드레스를 물리 어드레스로 변환하는데 사용되는 정보와, 어드레스가 메모리의 캐시 가능한 또는 버퍼 가능한 영역과 관련되는지 여부 등의 특정한 허가 속성 정보를 갖는다. 따라서, LSU는 TLB 저장소로 가상 어드레스를 발생하게 되고, 이 가상 어드레스에 대해 TLB 저장소 내에서 적중이 검출되는 경우에는, 필요한 물리 어드레스와 허가 속성 정보가 즉시 LSU로 반환될 수 있다. 그러나, 부적중의 경우에는, TLB 저장소가 일반적으로 페이지 테이블 워크 처리를 행하여 필요한 정보를 포함하는 메모리 시스템으로부터 페이지 테이블을 검색함으로써, 가상 어드레스를 물리 어드레스로 변환되도록 하고 관련된 허가 속성을 제공할 수 있도록 할 필요가 있다. 이 처리중에, 필요한 페이지 테이블 정보를 검색하기 위해 필요에 따라 레벨 1 캐시(72)와 그것보다 하위 레벨의 메모리 계층을 액세스하게 된다. 이 처리중에 캐시 부적중이 발생하는 경우에는, 이것이 다시 경로 80을 거쳐 진행 표시로서 추론 제어회로에 보고되고, 추론 제어회로에 의해 사용되어 추론 폭을 축소할 것인지 여부를 결정할 수 있다.
일 실시예에서는, 추론 폭 표시가 초기화되는 초기값과 추론 축소 기준이 사전에 결정될 수 있다. 그러나, 이와 달리, 이것들은 데이터 처리장치에 의해 실행된 명령들 중에서 적어도 한 개에 의해 명시될 수 있다. 예를 들어, 개시 추론 명령은 제어 레지스터들(65) 내부에서 설정될 초기 추론 폭을 식별할 수 있다. 이 개시 추론 명령은 추론 벡터 연산의 수행중에 추론 폭을 축소시킬지 여부를 평가할 때 추론 제어회로(60)에 의해 사용되는 특정한 추론 축소 기준을 식별해도 된다. 또 다른 옵션으로서, 추론 폭 값들과 관련된 이력 데이터 및/또는 이전의 추론 벡터 연산들의 시퀀스들을 위해 사용된 추론 축소 기준을 유지하는데 사용되는 추론 예측회로(85)가 설치되어도 된다. 추론 폭 값들에 대해, 이력 데이터는 추론 벡터 연산들의 이전의 시퀀스들의 실행중에 커미트 시점에 존재하는 최종적인 추론 폭 값을 식별해도 된다. 그후, 예측회로는, 추론을 개시하고 있는 명령과 관련된 프로그램 카운터 값을 수신하고, 이것에 근거하여, 이 프로그램 카운터 값으로부터 개시된 추론 벡터 연산들의 이전의 시퀀스들을 고려하여, 이력 데이터를 참조함으로써 추론 폭 표시를 위해 사용할 초기값을 결정하고, 필요한 경우에는, 사용될 추론 축소 기준을 경정하도록 구성될 수 있다. 이력 데이터는 추론 예측회로(85)가 액세스 가능한 이력 저장소(87) 내부에 기억되게 된다.
도 1에는, 진행 표시가 벡터 처리회로(30)에 의해서만 발행되는 것으로 도시되어 있지만, 또 다른 실시예에서는, 추론 제어회로(60)가 시스템 내부의 다른 곳에서, 예를 들어 스칼라 처리회로에서 진행 표시를 수신할 수도 있다.
제어 레지스터(65)는 다양한 형태를 취할 수 있으며, 도 2a는 제어 레지스터들 내부에 기억될 수 있는 다수의 파라미터들을 나타낸 것이다. 먼저, 추론 폭 값(100)이 유지되는데, 일 실시예에서는, 이 값이 1과 16 사이의 값을 취할 수 있어, 추론 벡터 연산을 받을 각각의 벡터 피연산자의 벡터 성분들의 수가 1과 16개의 벡터 성분들 사이에서 변동된다는 것을 나타낸다.(일 실시예에서는 16개의 벡터 성분은 벡터 피연산자들의 전체 폭을 표시한다).
일 실시예에서는, 추론이 켜졌는지 아닌지 표시하기 위해 설정되는 추론 플래그(105)를 제어 레지스터들(65)이 포함한다. 추론이 꺼지면, 비추론적으로 벡터 연산이 행해진다. 그러나, 추론이 켜지면, 벡터 연산들이 추론적으로 행해진다.
추론 폭 표시(100)는 다양한 방식으로 명시될 수 있다. 그러나, 일 실시예에서, 제어 레지스터들(65)은 제 1 성분 위치 레지스터(110)와 추론 폭 레지스터(115) 모두를 구비한다. 제 1 성분 위치 레지스터(110)는 벡터 처리 연산을 받을 제 1 벡터 성분 위치를 식별하는 한편, 추론 폭 레지스터(115)는 최종 벡터 성분 위치를 식별하고, 이에 따라 벡터 피연산자(120) 내부의 추론 폭은 이들 2개의 레지스터들의 콘텐츠 사이의 차이로 표시된다.
벡터 연산들의 시퀀스의 첫 번째 반복중에, 제 1 성분 위치 레지스터가 벡터 120 내부의 제 1 벡터 성분을 가리키고, 추론 폭 레지스터(115)가, 예를 들어, 최종 벡터 성분을 가리켜, 전체 벡터 폭을 명시하는 경우가 있을 수 있다. 벡터 연산의 수행중에, 추론 폭 레지스터 콘텐츠가 축소되어 축소된 추론 폭을 식별해도 된다. 커미트 시점에 도달되었을 때, 추론 폭이 커미트 시점에서 결정된 필요한 벡터 성분들의 수보다 작게 줄어든 경우에는, 벡터 연산들의 다음의 반복이 행해질 수 있고, 이때 제 1 성분 위치 레지스터(110)는 추론 벡터 연산들의 이전의 반복을 통해 처리되지 않았던 첫 번째 필요한 벡터 성분을 식별하도록 설정된다. 그후, 추론 폭 레지스터(115)는 다음의 반복에 대해 필요한 추론 폭을 식별하도록 설정되게 된다.
도 2b의 실시예에서는, 2개의 별개의 레지스터들이 유지되지만, 또 다른 실시예에서는, 추론 폭 표시를 식별하기 위해 마스크 레지스터(130)가 설치된다. 특히, 마스크는 벡터 피연산자(120) 내부의 각각의 성분 위치에 대해 한 개의 비트를 포함하고, 이들 비트는 제로값 또는 1로 설정되어 추론 폭을 식별한다. 일 실시예에서, 추론 폭은 마스크 내에 포함된 일련의 논리 1 값들에 의해 명시되고, 이들 논리 1 값들의 특정한 값이 논리 제로값으로 변환되어 축소된 추론 폭을 식별함으로써, 추론 폭이 축소될 때 이 마스크의 콘텐츠가 연산들의 수행중에 갱신된다. 이때, 또 다른 실시예에서는, 마스크 내부의 논리 1 및 논리 제로값들에 속하는 의미가 역전되어 된다는 것은 자명하다.
도 3은 전술한 실시예를 사용하여 벡터화될 수 있는 스칼라 루프를 개략적으로 나타낸 것이다. 이와 같은 스칼라 명령들의 루프는 일련의 명령들을 포함하는데, 이들 중에서 일부는 루프를 벗어날 것인지 여부를 결정하기 위해 행해지는 조건 테스트 이전에 발생하고, 이들 중에서 일부는 이 조건 테스트 이후에 발생한다. 도시된 예시적인 시퀀스에서는, 루프가 3회의 완전한 반복(200, 205, 210)을 받은 후, 조건 테스트가 평가되어, 이 루프가 네 번째 반복(215) 도중에 지점 220에서 종료되어야 한다는 것을 표시한다. 필요한 반복의 횟수가 알려지지 않는 조건 테스트인 경우가 많으므로, 본 실시예에서는 루프가 네 번째 반복 도중에 종료하지만, 다음 예에서는, 더 많은 반복이 행해질 때까지 루프가 종료하지 않거나, 더 일찍 루프가 종료할 수도 있다.
이와 같은 스칼라 루프를 벡터화하기 위해 추론 벡터 연산을 행할 때, 각각의 스칼라 명령이 벡터 명령으로 대체되는데, 이때 명시된 벡터 피연산자는 복수의 벡터 성분을 포함하고, 각각의 벡터 성분은 서로 다른 반복에 관련된다. 어떤 반복에서 스칼라 루프가 벗어날지 알지 못하기 때문에, 특정한 수의 벡터 성분들을 갖는 벡터 피연산자들을 명시함으로써 루프가 벡터화될 수 없다. 그 대신에, 도 4에 도시된 것과 같이, 조건 테스트 이전에 발생한 스칼라 명령들과 동등한 벡터 명령들에 대해, 추론 폭을 사용하여 필요한 벡터 성분들의 수에 대해 추론을 한다. 전술한 것과 같이, 일 실시예에서는 이 추론 폭이 처음에 16 등의 선택된 값으로 설정되며, 따라서 이 실시예에서는 이들 벡터 명령들 각각의 수행이 먼저 동등한 스칼라 명령의 수행을 16회(즉, 16번의 별개의 반복들 각각에 걸쳐 1회) 복제하는 것이다. 현재의 추론 폭이 추론 폭 상태가 검출되도록 하는 진행 표시가 발생하게 하는 경우에는, 각각의 벡터 피연산자로부터의 적어도 한 개의 벡터 성분이 계속 처리되도록 보장하면서, 전술한 것과 같이 추론 폭이 축소된다.
그후 조건 테스트가 평가될 때, 얼마나 많은 수의 벡터 성분들이 필요한지 결정할 수 있다. 예를 들어, 동등한 스칼라 루프가 세 번째 반복시에 종료될 것이므로, 필요한 추론 폭이 3이었다고 평가할 수 있다. 추론 폭이 3보다 훨씬 크다고 가정하면, 모든 필요한 벡터 성분들이 처리될 것이다. 그러나, 현재의 추론 폭이 조건 테스트에 의해 표시된 반복 횟수보다 작으면, 그후에 필요한 나머지 벡터 성분들을 처리하기 위해 적어도 한 개의 추가적인 벡터 연산들의 시퀀스의 반복을 행하는 것이 필요하게 된다.
커미트 시점 이후에는, 나머지 벡터 명령들이 비추론적으로 행해진다. 그러나, 조건 테스트 분석중에 식별된 폭을 고려하여, 필요한 수(또는 이 수가 필요한 폭보다 적어서 추가적인 반복이 필요하게 된 경우에는 현재의 추론 폭과 동등한 수)의 벡터 성분들만 처리되도록 보장하도록 마스크가 설정될 수 있다. 특히, 모든 필요한 데이터가 기록된 것으로 조건 테스트가 표시하는 경우에는, 처리를 종료하는 한편, 그렇지 않은 경우에는, 적어도 한번 더 처리가 반복된다.
도 5는 특정한 추론 및 커미트 명령들이 사용되는 상태에 대한 벡터 루프를 나타낸 것이다. 추론 명령을 사용하여 추론을 켜서 추론 플래그(105)를 설정한다. 그후, 일련의 명령들이 추론적으로 실행되고, 추론 폭(100)을 사용하여 각각의 벡터 피연산자 내부의 벡터 성분의 수를 식별한다. 전술한 것과 같이, 추론 축소 상태의 검출에 따라 벡터 연산의 수행중에 추론 폭이 축소된다. 그후, 한 개 이상의 명령이 실행되어, 커미트할 적절한 폭을 결정하고, 그후 별개의 커미트 명령이 실행되어 추론이 꺼지도록 한다. 이후에, 일련의 비추론적 명령들이 실행되고, 전술한 것과 같이 이들 명령과 관련하여 마스크 또는 길이 값을 사용하여, 커미트 시점 이전에 행해진 결정을 고려하여 벡터 성분 폭을 적절히 설정할 수 있다. 그후, 루프를 반복해야 할 것인지 또는 루프를 벗어나야 하는지를 판정하기 위해 분기 명령을 사용할 수 있다.
도 6은 일 실시예에 따라 행해지는 추론 폭 축소처리를 나타낸 흐름도이다. 스텝 300에서, 추론 제어회로는 진행 표시의 수신을 대기하고, 추론 플래그가 여전히 제어 레지스터들(65) 내부에서 어서트(assert)되기 때문에, 스텝 300에서 진행 표시가 수신되지 않은 것으로 판정되고, 스텝 305에서 추론이 아직 종료하지 않은 것으로 판정된 경우에는, 진행 표시가 수신될 때까지 스텝 300에서 처리를 대기한다. 추론이 종료되면, 스텝 305로부터 310으로 처리를 진행하여, 처리를 종료한다.
진행 표시의 수신시에, 추론 제어회로(60)는, 스텝 315에서 추론 축소 기준(70)을 참조하여 진행 표시를 분석하고, 그후 스텝 320에서 추론 축소 상태가 검출되었는지 판정한다. 검출되지 않은 경우에는, 스텝 300으로 처리를 되돌린다. 그러나, 추론 축소 상태가 검출되면, 스텝 325에서 추론 제어회로가 필요한 추론 축소의 정도를 결정한다. 이것은 소정의 양으로, 추론 제어회로가 소정의 양만큼 추론 폭을 축소하게 하거나, 그 대신에, 이것이 적용하려는 규칙에 관해 사전에 결정되어, 예를 들어, 최상위 위치가 진행 표시를 발생하는 식별된 성분의 위치의 좌측에 잇는 위치가 됨으로써, 수정된 추론 폭으로부터 이 식별된 성분 위치를 제외하도록 새로운 추론 폭을 설정하는 것이어도 된다.
또 다른 실시예에서는, 추론 폭의 정도가 추론 축소 기준 자체를 고려하여 결정되어도 된다. 이와 같은 접근방식의 예는 도 13을 참조하여 후술되는데, 이때 축소 기준은 추론 벡터 연산의 처리중에 성능 특성이 영향을 미치는 방식에 있어서 이용가능한 슬랙의 표시를 제공하는 슬랙값을 유지하며, 슬랙이 초과한 크기를 고려하여 추론 폭 축소의 양이 동적으로 관리된다.
스텝 325에서 추론 축소의 정도를 결정한 후에, 스텝 330에서 추론 폭이 축소되고, 그후 스텝 300으로 처리를 되돌린다. 전술한 것과 같이, 추론 폭이 일단 축소되면, 이 정보가 경로 82를 거쳐 벡터 처리회로(30)로 전달되어, 미처리된 추론 연산의 수행 중에 처리된 벡터 성분들의 수가 줄어들도록 한다.
도 7은 추론 개시시에 행해지는 처리를 나타낸 흐름도이다. 추론은 다양한 방식으로 개시되어도 되지만, 일 실시예에서는, 명시적인 개시 추론 명령이 제공되고, 이 명령은 디코드회로(20)에 의해 디코드될 때 적절한 제어신호가 추론 제어회로(60)에 발행되도록 한다. 스텝 340에서, 초기 추론 폭이 결정되고 적절한 제어 레지스터(들)(65)를 설정함으로써 이 추론 폭이 설정된다. 전술한 것과 같이, 초기 추론 폭은 사전에 결정되어도 되고, 디코드회로로부터 전달된 제어정보 내에서 식별되어도 되고, 또는 사실상 초기 추론 폭이 추론 예측회로(85)에 의해 주어져도 된다. 스텝 340 후에, 장치가 명시적인 추론 모드를 사용하고 잇는지 아닌지에 따라, 스텝 345에서 추론 모드가 옵션으로 켜진다.
도 8은 도 5의 벡터 루프 내부에 일련의 추론 연산이 행해진 후 비추론적 연산의 수행 이전에 행해지는 커미트 처리를 나타낸 흐름도이다. 도 8에 도시된 단계들을 행하기 위해 한 개 이상의 명령이 실행된다. 스텝 350에서, 조건 테스트를 행하여 필요한 벡터 폭, 즉 처리하고자 하는 벡터 성분들의 필요한 수를 결정한다. 그후, 스텝 355에서 현재의 추론 폭이 판독된 후, 스텝 360에서 현재의 추론 폭을 필요한 벡터 폭과 비교한다.
그후, 스텝 365에서는, 추론 벡터 연산이 추론 부족을 발생하였는지 여부를 판정한다. 이것은, 커미트 시점에 도달했을 때 필요한 벡터 폭보다 작은 지점으로 추론 폭이 축소된 경우에 해당한다. 이와 달리, 현재의 추론 폭이 필요한 벡터 폭보다 크면, 처리가 과도 추론이 된다.
과도 추론의 경우에는, 스텝 385로 처리를 진행하여, 반복 플래그가 소거되어, 벡터 루프의 추가적인 반복이 필요하지 않다는 것을 나타낸다. 그후, 스텝 390에서, 비추론적 명령들이 필요한 벡터 폭을 식별하기 위해 마스크가 설정된다. 이와 같은 구성은 벡터 루프가 또 다른 반복을 요구하지 않으면서 동등한 스칼라 루프를 벡터화할 수 있도록 한다.
그러나, 추론 부족의 경우에는, 스텝 370에서, 벡터 루프의 다음의 반복을 호출하도록 반복 플래그가 설정된다. 그후, 스텝 375에서 비추론적 명령이 현재의 추론 폭을 식별하기 위해 마스크가 설정된다. 따라서, 현재의 벡터 루프가 완료되면, 추론 벡터 연산 및 비추론적 연산이 동일한 수의 벡터 성분을 처리하게 된다. 그후, 벡터 루프가 1회 이상 반복되어, 필요한 벡터 폭 내부의 나머지 벡터 성분들을 처리할 수 있다.
스텝 375 또는 390 이후에, 명시적인 추론 모드가 사용되는 실시예에서는, 스텝 380에서 추론 모드를 끈다. 이것은, 벡터 루프 내부의 다음의 명령들이 비추론적으로 수행되도록 보장한다.
도 9는 일련의 추론 명령과 비추론적 명령들의 실행 후에, 도 5에 도시된 것과 같이, 분기 명령에 의해 보통 행해지는 조건부 종료 처리를 나타낸 것이다. 스텝 400에서는, 반복 플래그가 설정되어 있는지 판정한다. 설정되어 있으면, 스텝 405에서 벡터 루프의 시작 부분에 있는 개시 추론 지점으로 되돌아가는 한편, 설정되어 있지 않으면 스텝 410에서 처리를 종료한다.
도 10a는 추론 폭이 축소되었을 때 추론 벡터 연산의 처리가 변경되는 방법을 개략적으로 나타낸 도면이다. 초기에, 추론 명령이 실행되어 추론 모드를 켜고 추론 폭을 명시된 양, 본 실시예에서는 16개의 벡터 성분으로 설정한다. 도시된 실시예에서는, 벡터 처리회로 내부의 구성요소들이 한 개의 사이클 동안에 각각의 소스 피연산자로부터 2개의 벡터 성분을 처리할 수 있는 것으로 가정하므로, 벡터 연산 VOP1(420)을 실행하는 구성요소는 모든 필요한 연산을 완료하는데 8 사이클이 걸린다.
도시된 실시예에서는, VOP1과 VOP2(본 실시예에서 VOP2는 벡터 로드이다) 사이에 데이터 의존성이 존재하므로, VOP1의 수행이 개시한 후 1 사이클 후에 VOP2의 수행이 개시되는 것으로 가정한다.
본 실시예에 나타낸 것과 같이, LSU(50)가 벡터 로드를 처리하고 있을 때, LSU는 벡터 성분 9(즉, 벡터 위치 10에 있는 벡터 성분)와 관련된 마이크로아키텍처 이벤트를 검출하고, 도 10a에서 참조번호 430으로 나타낸 것과 같이, 이벤트와 성분 위치를 식별하는 진행 표시를 발행한다. 이와 같은 마이크로아키텍처 이벤트는 예를 들어 벡터 성분 9를 로드하려고 시도할 때 발생하는 캐시 부적중일 수 있으며, 본 실시예에서는, 진행 표시를 축소 기준(70)과 비교하여 평가할 때, 추론 제어회로(60)가 초론 폭을 9개의 성분들의 폭으로 축소하도록 결정함으로써, 벡터 성분 9(전술한 것과 같이 성분 위치 9에 위치한다)를 제외하는 것으로 가정한다. 벡터 연산 VOP3는 진행 표시와 이와 관련된 추론 폭 축소 이전에 처리를 개시하지만, 추론 폭이 축소될 때 여전히 진행중인 벡터 연산의 일례를 나타낸 것이다. VOP3(435) 내부에 십자로 나타낸 것과 같이, VOP3를 행하는 구성요소는, 추론 폭 축소에 응답하여, 성분 위치 10 이상에 있는 벡터 성분의 처리를 도태시키도록 구성될 수 있다. 도 1을 참조하여 전술한 것과 같이, 축소된 추론 폭에 근거하여, 클록 게이팅 및/또는 전력 게이팅 기술을 이용하여 VOP3를 행하는 구성요소의 에너지 소모를 줄일 수 있다.
벡터 연산 VOP4는 추론 폭 축소가 행해진 이후에만 개시되는 벡터 연산을 나타낸 것으로, 본 실시예에서는, 참조번호 440으로 나타낸 것과 같이, (더 이상의 추론 폭 축소를 받지 않는) 초기에, 최초의 9개의 벡터 성분에 대해 벡터 연산이 행해질 필요가 있다는 것을 알 수 있다.
도 10a에서는, 벡터 연산 VOP4(440)가 또 다른 벡터 로드 연산이며, 이전의 벡터 로드 VOP2가 완료할 때까지 벡터 로드의 수행이 개시될 수 없는 것으로 가정한다.
도 10b는 추론 폭의 조정이 향후의 벡터 연산에 영향을 미칠 뿐만 아니라, 이전의 벡터 연산에도 영향을 미치는 또 다른 실시예를 나타낸 것이다. 특히, 참조번호 450으로 나타낸 것과 같이, 추론 폭이 축소될 때, 이것은 VOP2(즉, 추론 폭 축소를 일으킨 벡터 연산)를 행하는 구성요소가 한 개 이상의 다음의 반복, 이 경우에는 최종 4개의 벡터 성분들에 관련된 2회의 반복의 처리도 종료하게 할 수 있다.
더구나, 일 실시예에서는, 이 처리를 사용하여 심지어 VOP2 이전에 발행된 벡터 연산들의 연산을 회귀적으로 잘라낼 수 있다. 도시된 실시예에서는, 참조번호 445로 나타낸 것과 같이, VOP1의 최종 반복도 축소된 추론 폭에 근거하여 종료된다. 마찬가지로, 클록 및 전력 게이팅 기술을 이용하여 이들 연산을 행하는 구성요소들의 에너지 소모를 절감할 수 있다. 다른 연산을 더 신속하게 처리하기 위한 구성요소가 이용가능하기 때문에, 실현 가능한 또 다른 이점은 성능을 증가시킨다는 것이다. 예를 들어, VOP4를 고려하면, LSU(50)가 2 사이클 이르게 VOP2의 수행을 종료시키므로, 도 10a의 실시예와 비교할 때 도 10b의 실시예에서는 VOP4가 2 사이클 이르게 개시할 수 있다.
도 11a 및 도 11b는 추론 축소가 다음의 연산들의 수행에 있어서 수정을 기동하는 방법의 또 다른 실시예를 나타낸 것이다. 본 실시예에서는, VOP1 및 VOP2를 행하는 구성요소들이 각각의 반복시에 각각의 소스 벡터 피연산자로부터 8개의 벡터 성분들을 처리할 수 있으므로, 원래 명시된 16개의 벡터 성분들이 2회의 사이클에 처리될 수 있는 것으로 가정한다. VOP1(460)을 실행할 때 지점 465에서 추론 축소 기동이 발생하면, 이것을 이용하여 (참조번호 475로 표시되는) VOP2를 처리하는 특정한 구성요소들, 특히 추론 축소를 일으킨 성분 위치 465와 이 위의 성분 위치들을 처리하는 구성요소들을 클록 게이트(또는 사실상 전력 게이트)한다. 그러나, 추론 축소를 일으킨 이 위치와 이 위의 성분 위치들 모두가 클록 게이트될 필요는 없으며, 도 11b에 도시된 것과 같이, 또 다른 실시예들에서는, 참조번호 480으로 나타낸 것과 같이, 더 높은 성분 위치들의 서브셋만이 클록 게이트되어도 된다. 도 14를 참조하여 후술하는 것과 같이, 이것은, 예를 들면, 추론 제어회로(60)가 축소 기준을 참조하여, 추론 폭이 벡터 성분 위치 465 및 그 이상을 제외하도록 모두 잘래내는 것이 아니라, 사실상 2개만 잘라내어야 한다고 판정하는 것에 기인할 수 있다.
도 12a는 추론 벡터 연산을 행할 때 레벨 2 캐시 부적중 등의 마이크로아키텍처 이벤트가 어떻게 상당한 대기시간을 도입할 수 있는지를 나타낸 것이다. 이 예에서는, 지점 500에서 추론 명령이 실행되어 16의 초기 추론 폭을 설정한다. 그후, 벡터 로드 명령(510)이 실행되지만, 이 경우에는 벡터성분 6(즉, 벡터 성분 위치 7에 위치한 데이터 성분)을 로드하려고 시도할 때 레벨 2 캐시 부적중이 발생한다. 벡터 로드 연산이 벡터 성분 6과 나머지 벡터 성분들을 로드할 수 있기 전에 이것은 이 예에서는 200 사이클의 대기시간을 도입한다. 이것은, 이들 다수의 벡터 연산들 사이의 데이터 의존성으로 인해, 다음의 2개의 벡터 연산들 VOP1(515) 및 VOP2(520)에 대해 노크온(knock-on) 효과를 일으킨다. 그후, 지점 525에서 또 다른 사이클이 소모되며, 커미트 처리가 행해질 때, 이 지점에서 추론 폭은 여전히 16이 된다. 여기에서 볼 수 잇는 것과 같이, 이것은 전체 212 사이클이 필요한 벡터 연산들을 수행하게 하는데, 이것은 벡터 성분당 평균 13.25 사이클이다.
이에 반해, 도 12b는 전술한 실시예들의 적응형 추론 폭 접근방식이 사용될 때의 상황을 나타낸 것이다. 스텝 500에서, 추론 폭이 마찬가지로 초기에 16으로 설정되고, 벡터 로드 연산(530)의 데이터 성분 6(성분 위치 &)과 관련하여 레벨 2 캐시 부적중이 검출될 때, 이것은 추론 제어회로(60)가 (진행 표시를 축소 기준과 비교하여 평가하고 축소가 행해지도록 결정하는데 걸리는 시간으로 인한) 짧은 지연 이후에 추론 폭을 6으로 동적으로 축소하게 만든다. 축소된 추론 폭의 결과, VOP1(535) 및 VOP2(540)가 첫 번째 6개의 성분 위치들만을 처리하므로, VOP2의 첫 번째 6개의 성분들이 행해지는 즉시, 6의 현재의 추론 폭에 근거하여, 지점 525에서 커미트 처리가 행해질 수 있다. 그 결과, 이 처리는 6개의 성분을 처리하는데 7개의 사이클이 걸리는데, 이것은 벡터 성분당 평균 1.167 사이클이다.
커미트 시점에서, 필요한 추론 폭이 6 이하인 것으로 결정되었다고 가장하면, 벡터 루프의 더 이상의 반복이 필요하지 않으며, 처리가 완료하게 된다. 그 대신에 필요한 벡터 폭이 6보다 큰 것으로 결정하면, 나머지 성분들을 처리하기 위해 벡터 루프의 1회 이상의 추가적인 반복이 행해질 필요가 있다. 그렇지만, 후속하는 반복이 행해질 때까지는, 벡터 성분 6과 관련하여 더 이상 레벨 2 캐시 부적중이 일어나지 않으므로, 그후의 반복이 훨씬 더 효율적으로 진행될 것이기 때문에, 이와 같은 구성은 여전히 성능의 상당한 증가를 제공할 수 있다.
추론 축소 기준이, 이것을 만족할 때, 추론 축소 상태의 존재를 표시하는 한 개 이상의 기준을 직접 명시하지만, 이와 달리, 또는 이에 덧붙여, 추론 축소 기준은, 추론 제어회로에 의해 유지되고 추론 벡터 연산들의 시퀀스의 수행 중에 발생된 진행 표시를 고려하여 조정되는 성능 허용오차 정보를 포함해도 된다. 도 13은 이와 같은 일 실시예에 따른 추론 축소 처리의 수행을 나타낸 흐름도이며, 이때 성능 허용오차 정보는 추론 벡터 연산들의 처리중에 성능 특성이 영향을 받는 방식에 있어서 이용가능한 슬랙의 표시를 제공하는 슬랙 표시의 형태를 취한다.
스텝 600에서, 추론의 개시시에 추론 폭이 초기값으로 설정되고, 스텝 605에서 파리미터 "슬랙"이 명시된 버짓값(budget value)으로 설정된다. 이 값은, 추론을 개시하는 명령에 의해 주어지거나, 사전에 설정되거나, 다른 방법으로, 예를 들어, 추론 예측회로를 포함하는 실시예에서는 추론 예측회로(85)로부터 주어져도 된다.
스텝 610에서, 진행 표시가 수신되었는지 여부를 판정하고, 수신되지 않은 경우에는, 스텝 615에서 추론이 종료되었는지 여부를 판정한다. 종료된 경우에는, 스텝 620에서 처리를 종료하지만, 그렇지 않은 경우에는 스텝 610으로 처리를 되돌린다.
진행 표시가 수신되면, 이 진행 표시가 성능 특성에 대해 부정적인 영향을 나타내는지 긍정적인 영향을 나타내는지 판정한다. 특히, 옵션의 일 실시예에서는, 처리회로(30)가 성능 특성에 대해 부정적인 영향을 미치는 이벤트들과 관련될 뿐 아니라, 예를 들어, 특정한 연산이 예측한 것보다 더 신속하게 행해진 것을 나타내는, 긍정적인 영향을 미치는 특정한 이벤트에 관련된 진행 표시를 제공해도 된다. 긍정적인 진행 표시의 경우에는, 스텝 630에서 진행 표시로 표시된 양만큼 슬랙값이 증가한 후, 스텝 610으로 처리를 되돌린다.
이에 반해, 스텝 625에서 부정적인 진행 표시가 검출된 경우에는, 스텝 635에서 파라미터 "비용(cost)"이 평가되는데, 이것은 이 부정적인 표시와 관련된 성능 비용을 표시한다. 그후, 현재의 슬랙값으로부터 비용값을 감산하여 슬랙값이 조정된다. 그후, 스텝 655에서는, 슬랙값이 음인지 여부를 판정하고, 음이 아닌 경우에는 스텝 610으로 처리를 되돌린다.
스텝 655에서, 슬랙값이 음인 것으로 판정되면, 현재의 슬랙값의 함수로써 결정된 값을 현재의 추론 폭에서 감산함으로써 내부 파라미터(SW)가 설정된다. 함수는 다양한 방식으로 설정될 수 있지만, 일 실시예에서는, 슬랙값이 더 큰 음의 값을 가질수록 더 큰 양이 추론 폭에서 감산되도록 한다.
스텝 665에서는, 파라미터 SW가 1보다 작은지 여부를 검출한다. 1보다 작으면, 스텝 675로 처리를 진행하기 전에 스텝 670에서 SW가 1로 설정되는 한편, 그렇지 않은 경우에는, 스텝 665로부터 스텝 675로 곧바로 처리를 진행한다. 스텝 665 및 670의 목적은, 벡터 루프의 현재의 반복이 항상 긍정적인 진행을 생성하도록 보장하기 위해, 내부 파라미터 SW가 결코 1보다 작게 감소하기 않도록 보장하는 것이다. 특히, 스텝 685에서는, 처리가 스텝 610으로 되돌아가기 전에, 추론 폭이 SW로 설정되므로, 1 이상의 값으로 설정되게 된다.
스텝 675와 680은 옵션으로, 스텝 675에서는 현재의 추론 폭(즉, 스텝 685에서 조정하기 전의 추론 폭)에서 내부 파리미터 SW를 감산함으로써 내부 파라미터 "축소"가 결정된다. 그후, 스텝 680에서, 결정된 "축소" 값만큼 슬랙값이 증가한다. 그후, 스텝 685에서 추론 폭이 축소된다. 따라서, 옵션의 단계들 675 및 680을 사용하면, 추론 폭이 축소될 때마다, 추론 폭이 축소되는 양에 따라 슬랙값이 긍정적으로 조정된다는 것을 알 수 있다.
도 14a 및 도 14b는 도 13의 처리를 수행할 때 슬랙값이 변동되는 방식을 개략적으로 나타낸 것이다. 도 14a의 예에서는, 옵션의 단계 630이 행해지는 것으로 가정한다. 경사면 687로 나타낸 것과 같이, 슬랙값은 처음에는 경로 80을 거쳐 수신된 긍정적인 표시에 따라 증가한다. 부정적인 표시는 슬랙값에 첫 번째 하락을 일으킨 후, 두 번째 부정적인 표시는 지점 688에서 슬랙값이 음의 값으로 하락하게 한다. 이 시점에서, 추론 폭이 축소되고, 슬랙값이 축소의 양만큼 양으로 조정된다 경사면 689로 나타낸 것과 같이 계속되는 긍정적인 진행 표시는 슬랙값이 더 증가하게 하지만, 다시 2번의 부정적인 진행 표시 이후에, 슬랙값이 지점 690에서 음으로 복귀한다. 이것은 다시 추론 폭이 축소하게 하고, 옵션으로 추론 폭의 축소에 근거하여 슬랙값이 증가하게 한다. 그후, 긍정적인 진행 표시는 슬랙값이 라인 691을 따르게 한다.
일 실시예에서는, 긍정적인 표시의 수신시에 슬랙값이 양의 방향으로 조정되는 크기는 추론 폭에 의존한다. 특히, 추론 폭이 클수록, 긍정적인 표시의 전체적인 영향이 더 커지므로, 경사면 687은 경사면 691보다 가파른 구배를 갖고, 마찬가지로 경사면 689는 경사면 691보다 가파른 구배를 갖는다.
도 14a에서는, 옵션의 스텝들 675 및 680이 행해지지 않는 것으로 가정하므로, 추론 폭의 축소를 보상하기 위해 슬랙값이 양의 방향으로 조정되지 않는다. 또 다른 실시예에서는, 스텝들 675 및 680이 행해지므로, 지점 688 및 690에서 경사면 689 및 691을 따라가기 전에 슬랙값이 양의 방향의 점프가 존재한다. 슬랙값의 양의 방향의 점프는 슬랙값을 다시 양으로 만들거나 만들지 않을 수 있는데, 이것은 스텝 660에서 적용된 슬랙값의 함수에 의존하므로, 발생하는 추론 폭의 축소의 크기에 의존하기 때문이다.
도 14b는 긍정적인 진행 표시가 수신되지 않아, 슬랙값이 초기의 버짓값에서 개시하지만, 각각의 부정적인 표시가 수신될 때 단계적으로 슬랙값이 감소하는 예를 나타낸 것이다. 슬랙값이 음이 된 후 슬랙값에 하락이 존재할 때마다, 추론 폭이 축소한다.
도 15는 사용될 수 있는 가상 머신 구현예를 예시한 것이다. 전술한 실시예들은 해당 기술을 지원하는 특정한 처리 하드웨어를 동작하는 장치 및 방법에 관해 본 발명을 구현하지만, 하드웨어 장치들의 소위 가상 머신 구현예를 제공하는 것도 가능하다. 이들 가상 머신 구현예는 보통 가상 머신 프로그램(710)을 지원하는 호스트 운영체계(720)를 실행하는 호스트 프로세서(730) 상에서 실행된다. 적절한 속도로 실행되는 가상 머신 구현예를 제공하기 위해 대형의 강력한 프로세서가 필요한 경우가 많지만, 호환성이나 재사용 이유로 인해 다른 프로세서에 고유한 코드를 실행하는 요구가 있을 때 등과 같이, 특정한 상황에서는 이와 같은 접근방식이 정당화된다. 가상 머신 프로그램(710)은 어플리케이션 프로그램(또는 운영체계)(700)을 실행하여, 이와 같은 실제의 하드웨어 장치에 의한 프로그램의 실행에 의해 주어지는 것과 동일한 결과를 제공한다. 따라서, 전술한 추론 벡터 명령들을 포함하는 프로그램 명령들은 가상 머신 프로그램(710)을 이용하여 어플리케이션 프로그램(700) 내에서 실행된다.
전술한 기술을 이용함으로써, 특정한 추론 폭에서 추론 벡터 연산을 행하는 것이 선택된 성능 특성에 상당한 악영향을 미치는 상황을 피하려고 시도함으로써, 추론 벡터 연산을 행하는 동안 데이터 처리장치의 적어도 한 개의 성능 특성(스루풋 또는 에너지 소비 등)을 향상시킬 수 있다. 이와 같은 접근방법에 의해, 필요하지 않을지도 모르는 시간을 소모하거나 에너지를 소비하는 작업을 행하는 것을 피하여 시간과 에너지를 절감하려고 시도하기 위해 추론 폭이 동적으로 조정될 수 있다. 진행을 보장하기 위해, 일 실시예에서는, 추론 폭이 한 개의 성분보다 작게 결코 축소되지 않는다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (28)

  1. 데이터 처리장치로서,
    복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하도록 구성된 처리회로와,
    상기 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하도록 구성된 추론 제어회로를 구비하고,
    상기 처리회로는 상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하도록 구성되고,
    상기 추론 제어회로는, 상기 진행 표시들과 추론 축소 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 상기 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하도록 더 구성되고,
    상기 추론 제어회로는 상기 추론 축소 상태의 검출에 더 응답하여 상기 추론 폭 표시를 축소시키는 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 진행 표시들은 상기 추론 벡터 연산들의 수행중에 상기 처리회로 내에서 발생하는 스루풋에 영향을 미치는 이벤트들을 표시하는 데이터 처리장치.
  3. 제 1항 또는 제 2항에 있어서,
    상기 진행 표시들은 상기 추론 벡터 연산들의 수행중에 상기 처리회로 내에서 발생하는 에너지 소비에 영향을 미치는 이벤트들을 표시하는 데이터 처리장치.
  4. 제 1항 또는 제 2항에 있어서,
    상기 진행 표시들은 상기 추론 벡터 연산들의 수행중에 상기 처리회로 내부에서 발생하는 마이크로아키텍처 이벤트들에 응답하여 발행되는 데이터 처리장치.
  5. 제 1항 또는 제 2항에 있어서,
    상기 추론 폭 표시는 상기 추론 벡터 연산을 받을 상기 각각의 벡터 피연산자의 제 1 벡터 성분을 더 식별하는 데이터 처리장치.
  6. 제 5항에 있어서,
    상기 추론 폭 표시는 상기 추론 벡터 연산을 받을 상기 각각의 벡터 피연산자의 상기 벡터 성분들의 수를 상기 제 1 벡터 성분에서 개시하는 순차적인 벡터 성분들의 지정된 수로서 식별하는 데이터 처리장치.
  7. 제 1항 또는 제 2항에 있어서,
    상기 처리회로는 명령들의 벡터 루프를 실행하도록 구성되고, 상기 벡터 루프는 상기 벡터 연산들의 시퀀스를 정의하는 명령들과 상기 벡터 연산들의 시퀀스의 수행 후에 상기 벡터 루프 내의 커미트 시점에서 실행된 적어도 한 개의 평가 명령을 포함하고, 상기 적어도 한 개의 평가 명령의 실행은 필요한 벡터 폭이 결정되도록 하며,
    상기 추론 제어회로는, 상기 필요한 벡터 폭의 결정에 응답하여, 상기 추론 폭 표시의 현재 값을 참조하여, 상기 벡터 연산들의 시퀀스의 수행이 과도 추론 또는 추론 부족을 발생하였는지 판정하고, 상기 추론 부족의 경우에는, 상기 명령들의 벡터 루프의 추가적인 반복이 실행되도록 반복 플래그를 설정하는 데이터 처리장치.
  8. 제 7항에 있어서,
    상기 명령들의 벡터 루프의 추가적인 반복시에, 상기 추론 제어회로는 상기 명령들의 벡터 루프의 이전의 반복 중에 처리된 벡터 성분들의 수를 고려하여 상기 추론 폭 표시를 수정된 초기값으로 초기화하도록 구성된 데이터 처리장치.
  9. 제 7항에 있어서,
    상기 벡터 루프는 상기 커미트 시점 이후에 실행될 한 개 이상의 비추론적 명령들을 포함하고, 상기 추론 제어회로는 상기 한 개 이상의 비추론적 명령들에 의해 정의된 비추론적 연산을 받을 상기 각각의 벡터 피연산자의 상기 벡터 성분들의 수를 식별하도록 마스크 값을 설정하도록 더 구성된 데이터 처리장치.
  10. 제 1항 또는 제 2항에 있어서,
    상기 처리회로에 의해 액세스하기 위한 상기 벡터 피연산자들을 기억하도록 구성된 벡터 레지스터 뱅크를 포함하고,
    상기 처리회로는 상기 벡터 레지스터 뱅크와 적어도 한 개의 레벨의 캐시 저장소를 포함하는 메모리 시스템 사이에서 벡터 피연산자들을 이동하기 위해 벡터 액세스 연산을 행하도록 구성된 데이터 액세스 회로를 포함하고,
    상기 데이터 액세스 회로는 상기 벡터 액세스 연산의 수행중에 발생되는 캐시 부적중에 관련된 정보를 상기 진행 표시들로서 발행하도록 구성된 데이터 처리장치.
  11. 제 10항에 있어서,
    상기 벡터 액세스 연산의 수행중에 상기 데이터 액세스 회로에 의해 참조되는 변환 색인 버퍼(TLB)를 더 구비하고, 상기 데이터 액세스 회로는 상기 벡터 액세스 연산의 수행중에 발생하는 TLB 부적중에 관련된 정보를 상기 진행 표시들로서 발행하도록 더 구성된 데이터 처리장치.
  12. 제 1항 또는 제 2항에 있어서,
    상기 데이터 처리장치는, 상기 추론 폭 표시의 축소에 응답하여, 상기 추론 폭 표시가 축소되도록 한 상기 추론 축소 상태의 검출을 일으킨 진행 표시들을 갖는 상기 벡터 연산에서 개시하는 상기 시퀀스에서 발생하는 선택된 벡터 연산을 받은 상기 각각의 벡터 피연산자의 상기 벡터 성분들의 수를 변경하는 데이터 처리장치.
  13. 제 12항에 있어서,
    상기 데이터 처리장치는, 상기 추론 폭 표시의 축소에 더 응답하여, 상기 추론 폭 표시가 축소되도록 한 상기 추론 축소 상태의 검출을 일으킨 상기 진행 표시들을 갖는 상기 벡터 연산 이전에 상기 시퀀스에서 발생하는 완료되지 않은 벡터 연산을 받은 상기 각각의 벡터 피연산자의 상기 벡터 성분들의 수를 변경하는 데이터 처리장치.
  14. 제 1항 또는 제 2항에 있어서,
    상기 추론 폭 표시의 축소에 응답하여, 상기 처리회로의 한 개 이상의 구성요소들 내부의 소비전력을 줄이도록 구성된 제어회로를 더 구비한 데이터 처리장치.
  15. 제 14항에 있어서,
    상기 제어회로는 상기 한 개 이상의 구성요소들 내부의 상기 소비전력을 줄이기 위해 클록 게이팅 및 전력 게이팅 중에서 적어도 한가지를 채용하는 데이터 처리장치.
  16. 제 1항 또는 제 2항에 있어서,
    상기 추론 폭 표시가 초기화되는 상기 초기값과 상기 추론 축소 기준 중에서 적어도 한 개는 상기 데이터 처리장치에 의해 실행할 명령에 의해 명시되는 데이터 처리장치.
  17. 제 1항 또는 제 2항에 있어서,
    상기 추론 폭 표시가 초기화되는 상기 초기값과 상기 추론 축소 기준 중에서 적어도 한 개는 사전에 결정되는 데이터 처리장치.
  18. 제 1항 또는 제 2항에 있어서,
    상기 처리회로에 의해 이전에 행해진 상기 추론 벡터 연산들의 시퀀스에 대한 커미트 시점에서 사용된 추론 폭 값들과 관련된 이력 데이터를 유지하도록 구성된 예측회로를 더 구비하고,
    상기 예측회로는, 상기 처리회로에 의해 행해질 상기 추론 벡터 연산들의 현재의 시퀀스에 대해, 상기 이력 데이터를 참조하여, 상기 추론 벡터 연산들의 상기 현재 시퀀스의 수행 이전에 상기 추론 폭 표시가 설정될 상기 초기값을 결정하도록 구성된 데이터 처리장치.
  19. 제 1항 또는 제 2항에 있어서,
    상기 처리회로에 의해 이전에 행해진 상기 추론 벡터 연산들의 시퀀스에 대해 사용된 상기 추론 축소 기준에 관련된 이력 데이터를 유지하도록 구성된 예측회로를 더 구비하고,
    상기 예측회로는, 상기 처리회로에 의해 행해질 상기 추론 벡터 연산들의 현재의 시퀀스에 대해, 상기 이력 데이터를 참조하여, 상기 추론 벡터 연산들의 상기 현재 시퀀스의 수행에 사용될 상기 추론 축소 기준을 결정하도록 구성된 데이터 처리장치.
  20. 제 1항 또는 제 2항에 있어서,
    상기 추론 제어회로는 개시 추론 명령의 실행에 응답하여 추론적 동작 모드를 기동하고, 상기 처리회로는 상기 추론적 동작 모드중에 실행된 명령들에 응답하여 상기 추론 벡터 연산을 행하도록 구성된 데이터 처리장치.
  21. 제 20항에 있어서,
    상기 추론 제어회로는 커미트 명령의 실행에 응답하여 상기 추론적 동작 모드를 종료하는 데이터 처리장치.
  22. 제 1항 또는 제 2항에 있어서,
    상기 추론 제어회로는 상기 추론 축소 상태에 응답하여 상기 추론 폭 표시를 수정함으로써 상기 각각의 벡터 피연산자의 적어도 한 개의 벡터 성분이 상기 추론 벡터 연산을 받게 될 것이라는 것을 표시하는 데이터 처리장치.
  23. 제 1항 또는 제 2항에 있어서,
    상기 추론 축소 기준은 상기 추론 제어회로에 의해 유지되는 성능 허용오차 정보를 포함하고,
    상기 추론 제어회로는 상기 추론 벡터 연산들의 시퀀스의 수행중에 발생된 상기 진행 표시를 고려하여 상기 성능 허용오차 정보를 조정하도록 구성되고,
    상기 성능 허용오차 정보가 기동점에 도달하면 상기 추론 제어회로가 상기 추론 축소 상태를 검출하도록 구성된 데이터 처리장치.
  24. 제 23항에 있어서,
    상기 추론 제어회로는, 상기 추론 폭 표시가 축소될 양을 결정할 때 상기 성능 허용오차 정보를 참조하는 데이터 처리장치.
  25. 제 1항 또는 제 2항에 있어서,
    상기 추론 축소 상태의 검출시에 상기 추론 폭 표시가 축소될 양이 사전에 결정되는 데이터 처리장치.
  26. 추론 벡터 연산의 수행을 제어하는 방법으로서,
    복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하는 단계와,
    상기 추론 벡터 연산들을 받을 상기 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하는 단계와,
    상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하는 단계와,
    상기 진행 표시들과 추론 축소 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하는 단계와,
    상기 추론 축소 상태의 검출시에, 상기 추론 폭 표시를 축소하는 단계를 포함하는 추론 벡터 연산의 수행 제어방법.
  27. 컴퓨터가 청구항 1 또는 2에 기재된 데이터 처리장치로서 동작하게 하는 프로그램 명령들을 위한 가상 머신 실행 환경을 제공하도록 컴퓨터를 제어하는 컴퓨터 프로그램을 비일시적인 형태로 기억하는 컴퓨터 판독 가능한 매체.
  28. 데이터 처리장치로서,
    복수의 벡터 성분들을 각각 포함하는 벡터 피연산자들에 대해 추론 벡터 연산들의 시퀀스를 행하는 처리수단과,
    상기 추론 벡터 연산들을 받을 각각의 벡터 피연산자의 벡터 성분들의 수를 표시하고 상기 추론 벡터 연산들의 시퀀스의 수행 이전에 초기값으로 초기화되는 추론 폭 표시를 유지하는 추론 제어수단을 구비하고,
    상기 처리수단은 상기 추론 벡터 연산들의 시퀀스의 수행중에 진행 표시들을 발생하고,
    상기 추론 제어수단은, 상기 진행 표시들과 추론 축소 기준을 참조하여, 상기 추론 폭 표시의 축소가 상기 추론 폭 표시의 축소가 없는 연속된 연산에 대해 상기 데이터 처리장치의 적어도 한 개의 성능 특성을 향상시킬 것으로 예측된다는 것을 표시하는 상태인 추론 축소 상태의 존재를 검출하고,
    상기 추론 제어수단은 상기 추론 축소 상태의 검출에 응답하여 상기 추론 폭 표시를 축소시키는 데이터 처리장치.
KR1020167011068A 2013-10-09 2014-08-14 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법 KR102271992B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1317876.9A GB2519108A (en) 2013-10-09 2013-10-09 A data processing apparatus and method for controlling performance of speculative vector operations
GB1317876.9 2013-10-09
PCT/GB2014/052508 WO2015052485A1 (en) 2013-10-09 2014-08-14 A data processing apparatus and method for controlling performance of speculative vector operations

Publications (2)

Publication Number Publication Date
KR20160065145A KR20160065145A (ko) 2016-06-08
KR102271992B1 true KR102271992B1 (ko) 2021-07-05

Family

ID=49630436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167011068A KR102271992B1 (ko) 2013-10-09 2014-08-14 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법

Country Status (9)

Country Link
US (1) US10261789B2 (ko)
EP (1) EP3039532B1 (ko)
JP (1) JP6546584B2 (ko)
KR (1) KR102271992B1 (ko)
CN (1) CN105612494B (ko)
GB (1) GB2519108A (ko)
IL (1) IL244408B (ko)
TW (1) TWI649693B (ko)
WO (1) WO2015052485A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2540942B (en) * 2015-07-31 2019-01-23 Advanced Risc Mach Ltd Contingent load suppression
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control
CN111651206B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
CN111651202B (zh) 2016-04-26 2023-09-22 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
US10108581B1 (en) * 2017-04-03 2018-10-23 Google Llc Vector reduction processor
US11372804B2 (en) * 2018-05-16 2022-06-28 Qualcomm Incorporated System and method of loading and replication of sub-vector values

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US6915395B1 (en) * 2000-05-03 2005-07-05 Sun Microsystems, Inc. Active address content addressable memory
WO2002084451A2 (en) 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
US20040123081A1 (en) * 2002-12-20 2004-06-24 Allan Knies Mechanism to increase performance of control speculation
US20040215941A1 (en) 2003-04-24 2004-10-28 Sun Microsystems, Inc. Method and system to handle register window fill and spill
US7149946B2 (en) 2003-06-13 2006-12-12 Microsoft Corporation Systems and methods for enhanced stored data verification utilizing pageable pool memory
US7149851B1 (en) 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
US7500087B2 (en) 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
US7395419B1 (en) 2004-04-23 2008-07-01 Apple Inc. Macroscalar processor architecture
US7961636B1 (en) * 2004-05-27 2011-06-14 Cisco Technology, Inc. Vectorized software packet forwarding
US20060259737A1 (en) * 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
US7739456B1 (en) 2007-03-06 2010-06-15 Oracle America, Inc. Method and apparatus for supporting very large transactions
US8019977B2 (en) 2007-05-14 2011-09-13 Apple Inc. Generating predicate values during vector processing
US8060728B2 (en) 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8019976B2 (en) 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing
US8739141B2 (en) 2008-05-19 2014-05-27 Oracle America, Inc. Parallelizing non-countable loops with hardware transactional memory
US8291202B2 (en) * 2008-08-08 2012-10-16 Qualcomm Incorporated Apparatus and methods for speculative interrupt vector prefetching
JP5279046B2 (ja) * 2008-10-14 2013-09-04 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
US8572341B2 (en) 2009-09-15 2013-10-29 International Business Machines Corporation Overflow handling of speculative store buffers
JP5491113B2 (ja) * 2009-09-18 2014-05-14 エヌイーシーコンピュータテクノ株式会社 ベクトル処理装置、ベクトル処理方法、およびプログラム
JP5573134B2 (ja) * 2009-12-04 2014-08-20 日本電気株式会社 ベクトル型計算機及びベクトル型計算機の命令制御方法
US8887171B2 (en) 2009-12-28 2014-11-11 Intel Corporation Mechanisms to avoid inefficient core hopping and provide hardware assisted low-power state selection
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
TWI636362B (zh) 2011-06-24 2018-09-21 林正浩 高性能快取方法和裝置
CN104025022B (zh) * 2011-12-23 2017-09-19 英特尔公司 用于具有推测支持的向量化的装置和方法
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9116686B2 (en) * 2012-04-02 2015-08-25 Apple Inc. Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction
US9501276B2 (en) 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops

Also Published As

Publication number Publication date
TWI649693B (zh) 2019-02-01
EP3039532A1 (en) 2016-07-06
US10261789B2 (en) 2019-04-16
EP3039532B1 (en) 2020-11-11
CN105612494B (zh) 2019-07-12
KR20160065145A (ko) 2016-06-08
TW201514850A (zh) 2015-04-16
CN105612494A (zh) 2016-05-25
WO2015052485A1 (en) 2015-04-16
JP6546584B2 (ja) 2019-07-17
IL244408B (en) 2020-03-31
JP2016536665A (ja) 2016-11-24
GB201317876D0 (en) 2013-11-20
GB2519108A (en) 2015-04-15
US20150100755A1 (en) 2015-04-09
IL244408A0 (en) 2016-04-21

Similar Documents

Publication Publication Date Title
KR102271992B1 (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
EP3516508B1 (en) Memory violation prediction
US6934865B2 (en) Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor
KR101511837B1 (ko) 벡터 분할 루프들의 성능 향상
US6393556B1 (en) Apparatus and method to change processor privilege without pipeline flush
US20020087794A1 (en) Apparatus and method for speculative prefetching after data cache misses
US20100095151A1 (en) Processor Apparatus for Executing Instructions with Local Slack Prediction of Instructions and Processing Method Therefor
US9483438B2 (en) Apparatus and method for controlling the number of vector elements written to a data store while performing speculative vector write operations
US9110683B2 (en) Predicting branches for vector partitioning loops when processing vector instructions
US9389860B2 (en) Prediction optimizations for Macroscalar vector partitioning loops
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US9122485B2 (en) Predicting a result of a dependency-checking instruction when processing vector instructions
JP2000322257A (ja) 条件分岐命令の投機的実行制御方法
US9098295B2 (en) Predicting a result for an actual instruction when processing vector instructions
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
US8924693B2 (en) Predicting a result for a predicate-generating instruction when processing vector instructions
WO2023185993A1 (en) Systems and methods for load-dependent-branch pre-resolution
JP2020119504A (ja) 分岐予測器
KR100837400B1 (ko) 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치
US11663007B2 (en) Control of branch prediction for zero-overhead loop
Qadri et al. Energy-efficient data prefetch buffering for low-end embedded processors
Tran et al. Transcending hardware limits with software out-of-order execution

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant