KR20230162054A - 회로부 및 방법 - Google Patents

회로부 및 방법 Download PDF

Info

Publication number
KR20230162054A
KR20230162054A KR1020237036881A KR20237036881A KR20230162054A KR 20230162054 A KR20230162054 A KR 20230162054A KR 1020237036881 A KR1020237036881 A KR 1020237036881A KR 20237036881 A KR20237036881 A KR 20237036881A KR 20230162054 A KR20230162054 A KR 20230162054A
Authority
KR
South Korea
Prior art keywords
predicate
circuitry
register
processing
registers
Prior art date
Application number
KR1020237036881A
Other languages
English (en)
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 KR20230162054A publication Critical patent/KR20230162054A/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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
    • 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/30018Bit or string instructions
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

회로부는 물리적 레지스터의 세트; 프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨); 물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨); 술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 술부 데이터를 생성하기 위한 술부 생성 회로부; 및 술부 생성 회로부에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부를 포함한다.

Description

회로부 및 방법
본 개시내용은 회로부 및 방법에 관한 것이다.
일부 데이터 프로세싱 배열은 소위 술부 병합 동작(predicated merge operation)과 같은 술부 프로세싱 동작을 허용한다. 이 용어는 통상적으로 (비록 배타적이지는 않지만) 데이터 프로세서에 의해 수행되는 벡터 프로세싱 동작에 적용 가능하고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분 또는 요소의 세트를 전파하는 동작에 관한 것이며, 부분의 세트는 소위 술부 데이터에 의해 정의된다.
예시적인 배열에서, 다음을 포함하는 회로부가 제공된다:
물리적 레지스터의 세트;
프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는, 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨);
술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 술부 데이터를 생성하기 위한 술부 생성 회로부; 및
술부 생성 회로부에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부.
다른 예시적인 배열에서, 다음을 포함하는 방법이 제공된다:
프로세싱 명령어를 디코딩하는 단계(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코딩하는 단계는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하는 단계를 포함하고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키는 단계(검출하는 단계가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 연관시키는 단계는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 해당 프로세싱 명령어와 추가 물리적 레지스터를 연관시키도록 구성됨);
술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위해 술부 데이터를 생성하는 단계; 및
생성하는 단계에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 단계.
본 기술의 추가적인 각자의 양태 및 특징은 첨부된 청구범위에 의해 정의된다.
본 기술은 첨부 도면에 도시된 바와 같은 구현예를 참조하여 단지 실시예로서 추가로 기술될 것이다.
도 1은 데이터 프로세싱 회로부를 개략적으로 도시한다.
도 2는 술부 병합 동작을 개략적으로 도시한다.
도 3a 및 도 3b는 상이한 벡터 길이 및 요소 크기를 개략적으로 도시한다.
도 4는 디코딩 동작의 양태를 개략적으로 도시한다.
도 5는 발행 동작의 양태를 개략적으로 도시한다.
도 6은 리네임 목록을 개략적으로 도시한다.
도 7a는 발행 동작의 추가 양태를 개략적으로 도시한다.
도 7b는 대안적인 동작 모드를 개략적으로 도시한다.
도 8은 방법을 도시하는 개략적인 흐름도이다.
도 9는 시뮬레이터 실시예를 개략적으로 도시한다.
예시적인 프로세싱 회로부
도 1은 프로세싱 회로부의 실시예(100)를 도시하는 개략도이다. 도 1을 참조하면, 레벨 2 캐시(10)는 메모리 시스템(미도시)과 인터페이스한다. 레벨 1 명령어 캐시(20)는 프로세싱 명령어의 더 로컬화된 캐시를 제공하고, 레벨 1 데이터 캐시(15)는 메모리 시스템으로부터 취출(retrieve)되거나 이에 저장될 데이터의 더 로컬화된 캐시를 제공한다.
페치 회로부(30)는 도시된 바와 같이 다양한 캐시를 통해 메모리 시스템으로부터 프로그램 명령어를 페치하고 페치된 프로그램 명령어를 디코더 회로부(40)에 제공한다. 디코더 회로부(40)는 페치된 프로그램 명령어를 디코딩하고 프로세싱 동작을 수행하기 위해 프로세싱 유닛(70)을 제어하는 제어 신호를 생성한다.
디코딩된 명령어는 프로세싱 유닛(70)에 대한 발행을 기다리는 복수의 명령어를 보관하거나 정의할 수 있는 하나 이상의 발행 큐(60)를 유지하는 발행 회로부(50)에 제공된다. 이의 동작의 일부로서, 발행/스케줄러 회로부는 적어도 명령어의 실행에 필요한 모든 소스 피연산자가 준비되는 단계, 즉 이전에 실행된 명령어의 실현에 의해 생성된 단계까지 발행 큐에 명령어를 보관한다. 소스 피연산자로 사용하기 위한 결과의 가용성은 프로세싱 유닛(70)에 의해, 예를 들어 개략적인 데이터 경로(55)에 의해 발행/스케줄러 회로부(50)에 통신된다.
프로세싱 유닛(70)은 다양한 구성요소를 포함할 수 있으며, 도면의 명확성을 위해 이 중 3개, 즉, 벡터 프로세싱 명령어를 처리하는 벡터 프로세서(72), 스칼라 프로세싱 명령어를 처리하는 스칼라 프로세서(74) 및 프로세싱 유닛(70)에 의해 생성된 소스 데이터를 검색하고 결과를 저장하기 위해 레벨 I 데이터 캐시(15)와 통신하는 로드/저장 회로부(74)만이 도 1에 도시되어 있다.
레지스터 파일(90)은 벡터 프로세서(72) 또는 스칼라 프로세서(74)에 의한 결과의 생성에 응답하여 라이트백 회로부(80)를 구매하기 위해 기록된다. 이는 소스 피연산자를 프로세싱 유닛(70)에 제공하기 위해 판독될 수 있다. 레지스터 파일(90)은 물리적 벡터 레지스터(92)의 세트 및 물리적 스칼라 레지스터(94)의 세트를 포함한다. 물리적 벡터 레지스터는 벡터 길이(VL1)를 갖는다. 벡터 길이(VL1)는 벡터 프로세서(72)에 의해 제공된 소위 프로세싱 레인의 수를 나타내고, 각각의 프로세싱 레인은 프로세싱 동작을 데이터 아이템의 벡터의 각자의 데이터 아이템에 적용한다.
아키텍처 및 물리적 레지스터
레지스터 파일(90)은 소위 물리적 레지스터를 제공한다. 그러나, 도 1의 회로부에 의한 실행을 위한 프로그램 코드 명령어는 관련 명령어 세트 아키텍처에 의해 특정된 아키텍처 레지스터의 세트로부터의 판독 및 이에 기록을 특정한다. 프로세스는 "레지스터 리네임밍"이 주어진 프로그램 코드 명령어의 실행을 위해 아키텍처 레지스터를 물리적 레지스터에 맵핑함을 지칭한다.
아키텍처 레지스터를 물리적 레지스터에 맵핑하는 것은, 예를 들어 디코더 회로부(40)에 의해 수행되는 디코드 단계에서 또는 이에 응답하여 일어날 수 있다. 디코더 회로부(40)는, 디코딩 프로세스의 일부로서, 얼마나 많은 아키텍처 레지스터가 특정 디코딩된 명령어에 의해 정의되는지를 검출하고, 검출에 응답하여, 해당 명령어의 실행에서 프로세싱 유닛(70)에 의한 사용을 위해 상응하는 수의 물리적 레지스터가 할당된다. 명령어 자체는 발행 회로부(50)에 의한 발행을 기다리면서 큐잉된다. 실행을 위해 명령어가 발행되기 전(및 발행의 준수가 억제되기 전)에 충족되어야 하는 기준 중 하나는 모든 맵핑된 물리적 레지스터가 이용 가능해야 하며, 즉 다른 명령어의 실행에서 현재 사용되지 않아야 한다.
따라서, 논의된 바와 같은 장치는 명령어 디코더 회로부에 의해 디코딩된 프로세싱 명령어를 실행하는 실행 회로부(70); 실행을 위해 실행 회로부에 프로세싱 명령어를 발행하는 발행 회로부(50)의; 예를 제공하며, 발행 회로부는 해당 프로세싱 명령어와 연관된 물리적 레지스터의 가용성에 따라 프로세싱 명령어의 발행을 제어하도록 구성된다.
따라서, 예시적인 배열에서, 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터는 다수의 프로세싱 레인을 표현하는 벡터 길이를 갖는 데이터 아이템의 벡터를 저장하도록 구성된 각자의 아키텍처 벡터 레지스터를 포함하고, 각각의 레인은 데이터 아이템의 벡터의 각자의 데이터 아이템에 프로세싱 동작을 적용하고; 물리적 레지스터의 세트는 벡터 길이를 갖는 데이터 아이템의 벡터를 저장하도록 구성된 물리적 벡터 레지스터의 세트를 포함한다.
술부 프로세싱 동작
이제 소위 술부 프로세싱 또는 "술부 병합" 동작이 기술될 것이다. 이 용어는 통상적으로 벡터 프로세서(72)에 의해 수행되는 벡터 프로세싱 동작에 적용 가능하고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분 또는 요소의 세트를 전파하는 동작에 관한 것이며, 부분의 세트는 소위 술부 데이터에 의해 정의된다.
술부 병합 기술을 사용하는 동작 유형의 예는 Arm Ltd에 의해 제공되는 소위 "SVE(Scalable Vector Extension)" 또는 SVE2 아키텍처를 사용하는 프로세서의 명령어 세트에서 발견될 수 있다. 특정 예는 다음과 같다:
ADD Z0.D, P0/M, Z1.D, Z2.D
이는 소스 피연산자를 보관하는 아키텍처 레지스터(Z1 및 Z2)의 활성 요소를 추가하고 결과를 목적지 레지스터(Z0)에 넣는 추가 동작의 예이다. P0는 활성이고 비활성인 피연산자의 이들 요소를 나타내는 술부 레지스터이다. P0 후의 접미사 "M"은 임의의 비활성 요소가 병합될 것임을 나타낸다. 즉, Z0의 임의의 비활성 요소는 이들의 원래 값(동작의 실행 전에 이들의 우세한 값)으로 유지될 것이다.
술부 레지스터는 활성화될 0개 이상의 요소의 임의의 수 또는 세트를 정의할 수 있다는 점에 유의한다. 술부 레지스터가 모든 요소가 활성임을 정의하거나 대안적으로 모든 요소가 비활성임을 정의하는 것이 가능하다. 이들 극단 사이에서 활성 요소의 임의의 순열이 또한 가능하다.
또한, 상기 도시된 추가 동작은 단순히 술부 병합 동작의 많은 가능한 예 중 하나인 점에 유의한다.
도 2를 참조하면, 한 쌍의 입력 또는 소스 피연산자(200)가 술부(230)의 세트에 따라 임의의 동작(210)에 의해 프로세싱되는 예시적인 술부 병합 동작이 도시된다. 도 2의 예에서, 다양한 피연산자 및 술부의 각자의 요소가 수직 정렬 방향으로 표시되고(따라서 각각의 소스 피연산자는 수직 방향으로 정렬된 8개의 요소를 가짐) 8개의 술부 위치의 정렬된 세트 내의 특정 위치에서 0의 술부 값은 해당 벡터 위치에서 비활성 레인을 나타내는 표기법이 사용된다. 1의 술부 값은 활성 레인을 나타낸다.
술부 병합 동작을 처리하기 위한 하나의 접근법은 다음과 같다. 목적지 벡터 레지스터(240)의 우세한 (사전 동작) 콘텐츠의 사본(250)이 생성된다. 백(10)에 대한 프로세싱 동작은 소스 피연산자에 적용되어 각각의 프로세싱 레인에 대한 중간 결과(220)를 생성하고, 즉 중간 결과는 우세한 술부(230)와 무관하다. 사본(250) 및 중간 결과(220)는 이어서 술부(230)에 따라 궁극적인 목적지 레지스터(260)에 기록된다. 도 2에서, 대각선 음영은 목적지 레지스터(260)에 기록된 중간 결과(220)로부터의 값을 나타내는 데 사용된다. 이들은 술부(230)가 레인이 활성임을 나타내는 벡터 위치에서의 값에 상응한다. (비활성인 술부에 의해 표시된 벡터 위치에서) 목적지 레지스터(260)에 기록된 다른 값은 목적지 벡터 레지스터의 사전 동작 콘텐츠의 사본(250)으로부터 유래된다.
따라서, 상기 논의된 예시적인 술부 병합 동작을 실행하기 위해, 다음의 4개의 레지스터 맵핑이 설정되어야 한다:
Z0, Z1, Z2, [Z0에 맵핑된 레지스터의 우세한 콘텐츠의 사본]
예시적인 배열은 본질적으로 단지 2개의 소스 레지스터 및 1개의 목적지 레지스터만을 갖는 술부 병합 동작의 실행에 대한 4개의 물리적 레지스터를 맵핑할 필요성이, 특히 술부(230)가 목적지 레지스터의 사전 동작 콘텐츠의 사본(250)이 사용되지 않을 것임을 나타내는 우세한 상태를 갖는 예시적인 상황에서 잠재적으로 프로세싱 동작에 불필요한 대기 시간을 도입할 수 있다는 것을 인식한다. 즉, 술부(230)가 모든 요소 또는 레인이 "활성"임을 나타낼 때, 어떠한 정보도 목적지 레지스터의 사전 동작 콘텐츠로부터 복사되지 않을 것이지만, 대신에 각각의 벡터 위치는 프로세싱 동작(210)의 결과(220)를 전파할 것이다. 따라서, 하기 논의되는 실시예에서, 목적지 벡터 레지스터의 우세한 콘텐츠의 사본을 보관하기 위해 제4 맵핑 레지스터를 제공할 필요가 없다.
따라서, 도 2의 실시예에서, 실행 회로부(70)는 추가 물리적 레지스터를 사용하여 목적지 아키텍처 레지스터(240)의 우세한 콘텐츠의 사본(250)을 저장함으로써 술부 병합 동작을 정의하는 프로세싱 명령어를 실행하여, 하나 이상의 소스 데이터 아이템에 따라 목적지 아키텍처 레지스터에 의한 저장을 위해 출력 다중 비트 데이터 아이템의 모든 비트(220)를 생성하고, 이어서 술부 데이터에 따라 출력 다중 비트 데이터 아이템의 각자의 부분(도시된 바와 같이 260의 대각선 음영 처리된 부분)으로 목적지 아키텍처 레지스터의 사본으로부터 0개 이상의 비트를 전파하도록 구성된다. 실시예에서, 술부 병합 동작을 정의하는 프로세싱 명령어에 대해, 각각의 술부 값(요소, 비트 등)은 목적지 아키텍처 레지스터의 우세한 콘텐츠의 각자의 부분이 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파될 것인지 여부를 나타낸다.
그러나, 주어진 술부 병합 명령어의 디코딩 단계에서, 물리적 레지스터가 맵핑되는 것에 응답하여, (주어진 술부 병합 명령어의 실행에 적용될) 술부(230)의 상태는 아직 반드시 알려져 있지 않다.
따라서, 본 기술의 일부 실시예에서, 추가 물리적 레지스터의 초기 맵핑이 제공되지만, 술부(230)의 실제 상태에 응답하여, 술부 병합 동작을 정의하는 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것은, 적용 가능한 술부 데이터가 목적지 아키텍처 레지스터의 우세한 콘텐츠 중 어느 부분도 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파되지 않을 것임을 나타내는 검출에 응답하여 제거될 수 있다(예를 들어, 불용화되거나, 취소되거나 달리 검증될 수 있음).
즉, 술부 병합 동작에 요구되는 추가 레지스터 맵핑은 디코드 단계(실제 술부는 아직 설정되지 않은 단계)에서 할당되거나 예약되지만 선택적으로 실제 술부가 설정되면 프로세싱의 나중 단계에서 제거될 수 있다. 발행을 기다리는 술부 병합 명령어가 (추가 레지스터 맵핑이 제거된 상황에서) 더 이상 해당 추가 레지스터의 가용성을 기다리지 않기 때문에, 이 조치는 프로세싱 명령어의 처리량을 잠재적으로 개선할 수 있다. 특히, 이들 실시예에서, 하기 논의되는 레지스터 할당 회로부는 술부 검출기 회로부에 의한 해당 주어진 프로세싱 명령어에 대한 술부 생성 회로부에 의해 생성된 술부 데이터가 소정의 값과 동일하다는 검출에 응답하여 술부 병합 동작을 정의하는 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제거하도록 구성된다. 예를 들어, 소정의 값은 목적지 아키텍처 레지스터의 우세한 콘텐츠의 제로 부분이 출력 다중 비트 데이터 아이템의 각자의 부분(즉, 모든 "활성" 술부)으로 전파될 것임을 나타내는 값일 수 있다.
술부 및 벡터 길이
상기 논의된 SVE 및 SVE2 시스템에서, 벡터 길이는 예를 들어 각각의 벡터 요소의 크기(비트 단위)의 변형과 함께 적응적으로 변경될 수 있다. 예를 들어, 물리적 벡터 레지스터는 각각 (가령) 128 비트의 크기를 가질 수 있다. 이는 16 비트 요소(310)를 제공하기 위해 (가령) 8의 벡터 길이와 함께 사용될 수 있다(도 3a). 벡터 길이가 (가령) 4로 설정되면, 32 비트 요소(330)가 사용될 수 있다(도 3b).
술부 레지스터는 각각의 벡터 요소의 최소 허용 가능한 크기로 나눈 비트 단위의 물리적 벡터 레지스터 크기와 동일한 술부 비트의 수에 대한, 벡터 요소의 최대 허용 가능한 수 각각에 대해 하나의 술부 비트(활성 또는 비활성을 나타냄)를 저장하도록 배열될 수 있다. 이 개략적인 논의의 목적을 위해, 도 3a가 벡터 요소의 최대 허용 가능한 수를 8로 나타내고, 이 경우 술부 레지스터(300)의 각각의 비트 위치는 이들 벡터 요소(310) 중 각자의 하나에 적용 가능한 술부 값을 포함한다고 가정한다.
반면, 도 3b에서, 동일한 물리적 벡터 레지스터가 더 적지만 더 큰 벡터 요소(330)로 분할된다. 여기서, 술부 레지스터는 더 적은 술부 값(이 실시예에서, 4개의 값)을 저장하는 데만 요구되므로, 이 실시예에서, 술부 레지스터(320) 내의 대안적인 위치는 술부 값을 저장하는 데 사용되고, 나머지 위치(도 3b에서 음영 처리된 것으로 도시됨)는 무시되거나 유효하지 않다. 이는 물론 술부 레지스터가 상이한 벡터 길이와 관련하여 사용될 수 있는 방법의 일 실시예일 뿐이다.
도 3a와 도 3b의 예시적인 배열 사이의 선택은 SVE 또는 SVE2 가능 프로세서의 적어도 일부 실시예에 의해 프로세싱 명령어 제어 하에서 수행될 수 있다. 각각의 경우에, 또는 다른 예시적인 경우에, 도 3a 및 도 3b에 구체적으로 도시되지 않은 용어 "벡터 길이"는 사용 중인 벡터 요소 또는 프로세싱 레인의 수의 관점에서 우세한 벡터 길이를 지칭하며, 각각의 이러한 프로세싱 레인은 연관된 술부 값을 갖는다고 가정된다.
도 3a 및 도 3b의 실시예 중 어느 하나에서(또는 상기 논의된 바와 같은 다른 변형에서) 술부 데이터는 술부 레지스터에 사용되지 않은 요소를 갖는 것을 수반하더라도 벡터 길이와 동일한 술부 값의 수를 정의한다.
그러나, 본 기술은 SVE 또는 SVE2 시스템의 확장 가능한 양태에 의존하지 않지만, 기술된 방식으로 술부 병합 동작을 사용할 수 있는 임의의 시스템에 적용 가능하다는 점에 유의한다.
디코딩, 리네이밍 및 발행 프로세스
도 4는 프로세싱 유닛(70)에 의한 실행을 위해 수백 개의 명령어 디코더가 마이크로코드를 생성하는 디코더 회로부(40)의 일부 양태를 개략적으로 도시한다. 검출기(410)는 해당 명령어의 실행을 위해 맵핑되도록 요구되는 물리적 레지스터의 수를 검출한다. 일부 경우에서, 이는 명령어에 의해 특정된 아키텍처 레지스터의 수와 동일할 것이지만, 술부 병합 동작의 경우에, 이는 명령어에 의해 특정된 아키텍처 레지스터의 수에 1을 더한 것과 동일할 것이다. 이 정보는 하기 논의될 소위 리네임 목록을 채우는 레지스터 예약 회로부(420)로 전달된다.
도 5를 참조하면, 디코더(40)에 의해 생성된 마이크로코드는 발행 준비가 큐잉되도록 발행 회로부(50)로 전달된다. 발행 회로부는 리네임 목록(520)과 통신하고, 상기 논의된 바와 같이, (예를 들어, 각각의 레지스터의 가용성을 나타냄으로써 또는 특정 물리적 레지스터에 대한 맵핑을 또한 포함하는 진행 명령어의 완료를 나타냄으로써) 물리적 레지스터의 가용성을 직접 또는 간접적으로 나타내는 정보를 프로세싱 유닛(70)으로부터 수신한다. 실행을 위한 디코딩된 명령어의 발행은 해당 명령어의 실행에 필요한 것으로 리네임 목록에 의해 특정된 물리적 레지스터 모두가 이용 가능할 때까지 억제된다(예를 들어 방지됨).
도 6은 각자의 엔트리가 수평 행에 의해 표시되는 리네임 목록의 실시예를 개략적으로 도시하며, 각각은 동작 식별자, 명령어에 의해 사용되는 상이한 소스 및 목적지 레지스터(술부 병합 동작의 경우에 사용되는 추가 소스 레지스터를 포함함)에 대해 요구되는 맵핑의 식별자, 다른 동작 정보 및 유효 플래그를 제공한다. 여기서, 유효 플래그는 리네임 목록에서 각각의 레지스터 맵핑 엔트리와 연관될 수 있다. 리네임 목록에서 특정 레지스터 맵핑(또는 도시된 바와 같은 열)에 대한 유효 플래그가 "유효함"으로 설정되는 경우, 해당 맵핑이 요구되고 맵핑 레지스터가 이용 가능할 때까지 발행은 일어날 수 없다. 유효 플래그가 "유효하지 않음"으로 설정되면, 해당 엔트리에 의해 정의된 맵핑은 요구되지 않는다.
추가 동작은 이제 도 7a를 참조하여 기술될 것이다.
발행 회로부(50)는 명령어 큐와 인터페이스하고 실행을 위해 큐잉된 명령어를 프로세싱 유닛(70)에 제공하는 발행 제어기(710)를 포함하며, 해당 명령어만이 이용가능한 리네임 목록에 의해 정의된 레지스터 맵핑 모두를 갖는 디스패치에 적격이다.
발행 회로부는 또한 큐잉된 명령어의 실행에 사용하기 위한 술부 데이터를 생성하는 술부 생성기(700)를 제공한다.
상태 검출기(720)는 술부 생성기(700)에 의해 생성된 술부 데이터의 상태를 검출한다. 도 3a 및 도 3b의 실시예를 다시 참조하면, 도 3b에 도시된 음영 처리된 요소과 같은 일부 사용되지 않은 값을 갖는 술부의 경우에, 이들 사용되지 않은 값 또는 요소는 상태 검출기(720)에 의해 이루어진 검출에서 무시된다.
상태 검출기(720)가 술부 데이터가 "모두 활성"을 나타내는 것을 검출하여, 목적지 레지스터(사전 동작)의 추가 사본이 요구되지 않을 것임이 명백할 때, 상태 검출기는 목적지 레지스터의 사본으로 역할을 하는 추가 레지스터의 맵핑이 요구되지 않고, 해당 맵핑과 연관된 유효 플래그가 억제되거나 즉 "유효하지 않음"으로 설정됨을 리네임 목록에 나타낸다. 이는 상기 논의된 바와 같이 해당 맵핑을 제거하는 효과를 갖고 이어서 상응하는 명령어가 실행을 위해 발행될 수 있기 전에 해당 특정 맵핑 레지스터가 이용 가능할 필요성을 방지하거나 제거한다.
순차 및 비순차 프로세서
이들 기술은 소위 순차 및 소위 비순차 프로세서에 적용 가능하다. 그러나, 기술은 명령어 실행이 물리적 레지스터의 가용성에 의존할 수 있는 비순차 프로세서에 특히 적용 가능하며, 따라서 이는 하나 이상의 물리적 레지스터의 잠재적으로 더 이른 가용성을 제공하기 위해 성능을 개선하는 것과 관련이 있을 수 있다.
순차 프로세서의 경우, 여기에 기술된 기술이 성능을 개선할 수 있는 상황이 발생할 가능성이 적을 수 있지만(또는 없을 수 있지만), 이들은 여전히 호환성 목적으로 유용할 수 있고, 이들은 프로세싱 성능에 부정적으로 영향을 미치지 않으면서 구현될 수 있다.
추가 변형
보통, 발행 후에, 술부 병합 명령어의 실행을 처리하는 프로세싱 회로부는 해당 명령어의 실행이 의존하는 술부 레지스터를 판독할 것이다. 그러나, 일단 상태 검출기(720)가 "모든 활성" 술부를 검출하면, 원칙적으로 술부 레지스터가 액세스될 필요가 없지만 대신에, 실행의 각각의 관련 단계에서, "모든 활성" 요소를 갖는 더미 또는 프록시 술부는 단순히 생성될 수 있다. 이는, 예를 들어, 명령어가 발행될 때 이와 연관된 플래그 또는 다른 데이터에 응답하여 수행될 수 있다.
이러한 배열의 실시예가 도 7b에 도시되어 있다. 여기서, 상태 검출기(720')(또는 예를 들어, 발생 회로부 및/또는 발행 큐의 다른 부분)는 "모든 활성" 술부를 나타내는 신호(740)를 프로세싱 유닛에 제공한다. 이는 술부 검출기 회로부가 술부 생성 회로부에 의해 생성된 술부 데이터의 상태를 나타내는 신호를 실행 회로부에 통신하도록 구성되는 실시예를 제공한다.
해당 표시를 제공하는 이 신호가 수신될 때, 프로세싱 유닛은 술부 생성기(700)에 의해 실제로 생성된 술부를 무시할 수 있지만, 대신에 프록시 술부 생성기(750)는 벡터 프로세서에 의해 사용하기 위한 "모든 활성" 술부의 세트를 생성하고 이들이 연관된 명령어의 실행을 위해 요구되는 경우 적어도 시간에 맞춰 이들을 벡터 프로세서에 공급한다. 이는, 술부 데이터의 상태를 나타내는 신호에 응답하여, 술부 생성 회로부에 의해 생성된 술부 데이터 대신에 실행 회로부에 의해 사용하기 위해, 실행(또는 프로세싱) 회로부가 대체 술부 데이터를 생성하는 (프록시 술부 생성기(750)와 같은) 회로부를 포함하는 실시예를 제공한다.
전술된 바와 같이, 이 배열은 다음의 이점 중 하나 또는 둘 모두를 갖는다: (a) 술부 레지스터 파일은 벡터 프로세서(70)에 의한 이들의 사용까지 술부 생성기(700)에 의해 생성된 술부를 저장하는 데 반드시 요구되지 않고; 이 조치는 적어도 일부 경우에 물리적 레지스터의 가용성을 잠재적으로 개선할 수 있음; 및/또는 (b) 저장된 술어에 액세스하기 위해 벡터 프로세서(70)에 의해 술부 판독 동작이 반드시 요구되는 것은 아니며; 이 조치는 적어도 일부 경우에 전력 소비 및/또는 실행 속도를 잠재적으로 개선할 수 있음.
예를 들어, 이들 동작의 양태를 잠재적으로 개선하기 위해, 신호(740)는 술부 생성기(700)에 의해 생성된 술부보다 더 적은 요소를 포함할 수 있다(이는 통상적으로 우세한 벡터 길이와 동일한 다수의 요소 또는 술부를 포함할 것임). 예를 들어, 신호(740 m)는 술부가 "모두 활성임"이거나 "모두 활성이 아님"을 나타내는 단일 요소를 포함할 수 있다. 유사하게, 검색을 위해 레지스터 파일 판독 동작을 요구하는 (술부와 같이) 레지스터 파일에 저장되는 대신, 신호(740)는 시간 및 전력 소모 레지스터 판독 동작을 요구하지 않는 방식으로 프록시 술부 생성기(750)에 단순히 래칭되거나 달리 송신될 수 있다.
프록시 술부 레지스터는 우세한 벡터 길이에 따라 술부 데이터에서 위치(320)(도 3b)의 세트의 모든 "유효함" 위치를 채울 수 있거나, 대신에 (예를 들어, 구현의 간략함을 위해) 임의의 유효하지 않은 위치는 벡터 프로세서에 의해 무시되도록 "1" 또는 다른 "활성임"의 표시를 갖는 우세한 벡터 길이에 대한 유효 여부에 관계없이 이러한 모든 위치(320)를 채울 수 있는 점에 유의한다.
여기서 논의된 예에서, 신호(740)는 술부가 모두 활성인 경우에만 생성되고 공급된다. 이는 술부 검출기 회로부는 술부 생성 회로부에 의해 생성된 술부 데이터가 목적지 아키텍처 레지스터의 우세한 콘텐츠의 제로 부분이 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파될 것임을 나타내는 소정의 값과 동일할 때 술부 생성 회로부에 의해 생성된 술부 데이터의 상태를 나타내는 신호를 실행 회로부에 통신하도록 구성되는 실시예를 제공한다.
다른 실시예
본 기술은 단지 둘 이상의 요소의 벡터가 병렬로 처리되는 벡터 프로세싱에 적용 가능하지 않다. 기술은 또한, 예를 들어, 이것이 스칼라 동작이었지만, 그리고 선행 또는 이전 명령어에 의해 설정된 조건 코드 또는 플래그와 관련하여 정의된 것들과 같은 조건부 스칼라 또는 벡터 동작에, 각각의 벡터 요소가 별개로 처리되는 벡터 실행에 적용 가능하다. 순전히 본 설명의 목적을 위해, 이러한 경우에 이러한 조건 코드 또는 플래그는 술부 데이터의 기능을 수행하는 것으로 간주될 수 있다.
장치 개요
위에서 논의된 장치는 다음을 포함하는 회로부의 실시예를 제공한다:
물리적 레지스터(90)의 세트;
프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(40)(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출(410)하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
물리적 레지스터의 세트의 물리적 레지스터를 (리네임 목록(730)에서) 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(420)(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨);
술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 술부 데이터를 생성하기 위한 술부 생성 회로부(700); 및
술부 생성 회로부에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부(720).
방법 실시예
도 8은 다음을 포함하는 방법을 예시하는 개략적인 흐름도이다:
(단계 800에서) 프로세싱 명령어를 디코딩하는 단계(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코딩하는 단계는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하는 단계를 포함하고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
(단계 810에서) 물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키는 단계(검출하는 단계가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 연관시키는 단계는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 해당 프로세싱 명령어와 추가 물리적 레지스터를 연관시키도록 구성됨);
(단계 820에서) 술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위해 술부 데이터를 생성하는 단계; 및
(단계 830에서) 생성하는 단계에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 단계.
시뮬레이터 구현예
도 9는 사용될 수 있는 시뮬레이터 구현예를 도시한다. 전술된 구현예는 고려된 기술을 지원하는 특정 프로세싱 하드웨어를 동작시키기 위한 장치 및 방법과 관련하여 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 명세서에 기술된 구현예에 따라 명령어 실행 환경을 제공하는 것이 또한 가능하다. 이러한 컴퓨터 프로그램은 이들이 하드웨어 아키텍처의 소프트웨어 기반 구현예를 제공하는 한, 종종 시뮬레이터로 지칭된다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상 머신, 모델, 및 동적 이진 변환기(dynamic binary translator)를 포함하는 이진 변환기를 포함한다. 통상적으로, 시뮬레이터 구현예는 호스트 프로세서(930) 상에서 실행되어, 호스트 운영 체제(920)를 선택적으로 실행하여, 시뮬레이터 프로그램(910)을 지원할 수 있다. 일부 배열에서, 하드웨어와 제공된 명령어 실행 환경 사이에 다수의 시뮬레이션 계층이 있을 수 있고/있거나, 동일한 호스트 프로세서 상에 제공된 다수의 별개의 명령어 실행 환경이 있을 수 있다. 이력상, 강력한 프로세서가 합리적인 속도로 실행되는 시뮬레이터 구현예를 제공하는 데 요구되었지만, 이러한 접근법은 호환성 또는 재사용 이유를 위해 다른 프로세서에 고유한 코드를 실행하려는 요구가 있을 때와 같은 특정 상황에서 정당화될 수 있다. 예를 들어, 시뮬레이터 구현예는 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능을 명령어 실행 환경에 제공할 수 있거나, 상이한 하드웨어 아키텍처와 통상적으로 연관된 명령어 실행 환경을 제공할 수 있다. 시뮬레이션의 개요가 문헌["Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63]에서 주어진다.
구현예가 특정 하드웨어 구성물 또는 특징부를 참조하여 전술되었음을 고려한 결과로, 시뮬레이션된 구현예에서, 등가의 기능이 적합한 소프트웨어 구성물 또는 특징부에 의해 제공될 수 있다. 예를 들어, 특정 회로부는 시뮬레이션된 구현예에서 컴퓨터 프로그램 로직으로 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어가 시뮬레이션된 구현예에서 소프트웨어 데이터 구조로 구현될 수 있다. 전술된 구현예에서 언급된 하드웨어 요소 중 하나 이상의 하드웨어 요소가 호스트 하드웨어(예를 들어, 호스트 프로세서(930)) 상에 존재하는 배열에서, 일부 시뮬레이션된 구현예는, 적합한 경우, 호스트 하드웨어를 사용할 수 있다.
시뮬레이터 프로그램(910)은 예를 들어, 명령어 디코딩 프로그램 로직(912), 레지스터 에뮬레이팅 프로그램 로직(914) 및 어드레스 공간 맵핑 프로그램 로직(916)을 포함할 수 있고, 컴퓨터 판독가능 저장 매체(이는 비일시적 매체일 수 있음) 상에 저장될 수 있고, 타깃 코드(900)(이는 애플리케이션, 운영 체제, 및 하이퍼바이저를 포함할 수 있음)에 프로그램 인터페이스(명령어 실행 환경)를 제공하는데, 이는 시뮬레이터 프로그램(910)에 의해 모델링되는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 동일하다. 따라서, 전술된 특징부를 포함하는, 타깃 코드(900)의 프로그램 명령어는 시뮬레이터 프로그램(910)을 사용하여 명령어 실행 환경 내로부터 실행될 수 있어서, 상기 논의된 장치의 하드웨어 특징부를 실제로 갖지 않는 호스트 컴퓨터(930)가 이러한 특징부를 에뮬레이팅할 수 있게 한다.
따라서, 도 9의 배열은, 예를 들어, 도 8을 참조하여 설명된 동작을 시뮬레이션하는 데 사용될 때, 명령어 실행 환경을 제공하기 위해 다음을 포함하는 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램의 실시예를 제공한다:
물리적 레지스터의 세트;
프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨);
술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 술부 데이터를 생성하기 위한 술부 생성 회로부; 및
술부 생성 회로부에 의해 생성된 술부 데이터의 상태에 응답하여 주어진 프로세싱 명령어와 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부.
일반 사항
본 출원에서, "...하도록 구성된"이라는 단어는 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이러한 문맥에서, "구성"은 하드웨어 또는 소프트웨어의 상호접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 프로세싱 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은 장치 요소가 정의된 동작을 제공하기 위해 임의의 방식으로 변경될 필요가 있음을 암시하지는 않는다.
본 발명의 예시적인 구현예는 첨부 도면을 참조하여 본 명세서에 상세히 기술되었지만, 본 발명은 그러한 정확한 구현예로 제한되지 않고, 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 범주 및 사상으로부터 벗어나지 않으면서 당업자에 의해 다양한 변경 및 수정이 이루어질 수 있다는 것이 이해될 것이다.

Claims (17)

  1. 회로부로서,
    물리적 레지스터의 세트;
    프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는 프로세싱 명령어가 술부 병합 동작(predicated merge operation)을 정의하는지 여부를 검출하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
    물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨);
    술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 상기 술부 데이터를 생성하기 위한 술부 생성 회로부; 및
    상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터의 상태에 응답하여 상기 주어진 프로세싱 명령어와 상기 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부를 포함하는 회로부.
  2. 제1항에 있어서, 상기 회로부는,
    상기 명령어 디코더 회로부에 의해 디코딩된 프로세싱 명령어를 실행하는 실행 회로부;
    실행을 위해 상기 실행 회로부에 프로세싱 명령어를 발행하기 위한 발행 회로부를 포함하며,
    상기 발행 회로부는, 해당 프로세싱 명령어와 연관된 물리적 레지스터의 이용 가능성에 따라 프로세싱 명령어의 발행을 제어하도록 구성되는, 회로부.
  3. 제2항에 있어서, 상기 실행 회로부는 상기 추가 물리적 레지스터를 사용하여 상기 목적지 아키텍처 레지스터의 상기 우세한 콘텐츠의 사본을 저장함으로써 술부 병합 동작을 정의하는 프로세싱 명령어를 실행하여, 상기 하나 이상의 소스 데이터 아이템에 따라 상기 목적지 아키텍처 레지스터에 의한 저장을 위해 상기 출력 다중 비트 데이터 아이템의 모든 비트를 생성하고, 이어서 상기 술부 데이터에 따라 상기 출력 다중 비트 데이터 아이템의 각자의 부분으로 상기 목적지 아키텍처 레지스터의 사본으로부터 0개 이상의 비트를 전파하도록 구성되는, 회로부.
  4. 제2항에 있어서, 상기 발행 회로부는 발행을 기다리는 복수의 프로세싱 명령어를 정의하는 데이터를 저장하기 위한 발행 큐를 포함하는, 회로부.
  5. 제4항에 있어서, 상기 발행 회로부는 해당 프로세싱 명령어와 연관된 상기 물리적 레지스터 모두가 이용 가능할 때까지 상기 발행 큐로부터 프로세싱 명령어의 발행을 억제하도록 구성되는, 회로부.
  6. 제2항에 있어서, 상기 술부 검출기 회로부가 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터의 상태를 나타내는 신호를 상기 실행 회로부에 통신하도록 구성되는, 회로부.
  7. 제6항에 있어서, 상기 실행 회로부는 상기 술부 데이터의 상태를 나타내는 상기 신호에 응답하여, 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터 대신에 상기 실행 회로부에 의해 사용하기 위한 대체 술부 데이터를 생성하는 회로부를 포함하는, 회로부.
  8. 제7항에 있어서, 상기 술부 검출기 회로부는 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터가 상기 목적지 아키텍처 레지스터의 우세한 콘텐츠의 제로 부분이 상기 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파될 것임을 나타내는 소정의 값과 동일할 때 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터의 상태를 나타내는 상기 신호를 상기 실행 회로부에 통신하도록 구성되는, 회로부.
  9. 제1항에 있어서, 상기 레지스터 할당 회로부는 상기 술부 검출기 회로부에 의한 해당 주어진 프로세싱 명령어에 대한 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터가 소정의 값과 동일하다는 검출에 응답하여 술부 병합 동작을 정의하는 주어진 프로세싱 명령어와 상기 추가 물리적 레지스터를 연관시키는 것을 제거하도록 구성되는, 회로부.
  10. 제9항에 있어서, 상기 소정의 값은 상기 목적지 아키텍처 레지스터의 상기 우세한 콘텐츠의 제로 부분이 상기 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파될 것임을 나타내는 값인, 회로부.
  11. 제1항에 있어서,
    상기 프로세싱 명령어는 벡터 프로세싱 명령어를 포함하는, 회로부.
  12. 제11항에 있어서,
    상기 목적지 아키텍처 레지스터 및 상기 하나 이상의 소스 아키텍처 레지스터는 프로세싱 레인의 수를 표현하는 벡터 길이를 갖는 데이터 아이템의 벡터를 저장하도록 구성된 각자의 아키텍처 벡터 레지스터를 포함하고(각각의 레인은 상기 프로세싱 동작을 데이터 아이템의 벡터의 각자의 데이터 아이템에 적용함),
    상기 물리적 레지스터의 세트는 상기 벡터 길이를 갖는 데이터 아이템의 벡터를 저장하도록 구성된 물리적 벡터 레지스터의 세트를 포함하는, 회로부.
  13. 제12항에 있어서, 상기 술부 데이터는 상기 벡터 길이와 동일한 술부 값의 수를 정의하는, 회로부.
  14. 제13항에 있어서, 술부 병합 동작을 정의하는 프로세싱 명령어에 대해, 각각의 술부 값은 상기 목적지 아키텍처 레지스터의 상기 우세한 콘텐츠의 각자의 부분이 상기 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파될 것인지 여부를 나타내는, 회로부.
  15. 제13항에 있어서, 상기 레지스터 할당 회로부는 상기 술부 검출기 회로부에 의한 상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터가 상기 목적지 아키텍처 레지스터의 상기 우세한 콘텐츠 중 어떤 부분도 상기 출력 다중 비트 데이터 아이템의 각자의 부분으로 전파되지 않을 것임을 나타내는 검출에 응답하여 술부 병합 동작을 정의하는 주어진 프로세싱 명령어와 상기 추가 물리적 레지스터를 연관시키는 것을 제거하도록 구성되는, 회로부.
  16. 방법으로서,
    프로세싱 명령어를 디코딩하는 단계(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코딩하는 단계는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하는 단계를 포함하고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
    물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키는 단계(검출하는 단계가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 연관시키는 단계는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 해당 프로세싱 명령어와 추가 물리적 레지스터를 연관시키도록 구성됨);
    술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위해 술부 데이터를 생성하는 단계; 및
    상기 생성 단계에 의해 생성된 상기 술부 데이터의 상태에 응답하여 상기 주어진 프로세싱 명령어와 상기 추가 물리적 레지스터를 연관시키는 것을 제어하는 단계를 포함하는 방법.
  17. 명령어 실행 환경을 제공하기 위해 호스트 데이터 프로세싱 장치를 제어하는 컴퓨터 프로그램으로서,
    물리적 레지스터의 세트;
    프로세싱 명령어를 디코딩하기 위한 명령어 디코더 회로부(각각은 하나 이상의 각자의 소스 아키텍처 레지스터에서 하나 이상의 소스 데이터 아이템에 프로세싱 동작을 적용함으로써 목적지 아키텍처 레지스터에 출력 다중 비트 데이터 아이템을 생성하고, 디코더 회로부는 프로세싱 명령어가 술부 병합 동작을 정의하는지 여부를 검출하도록 구성되고, 출력 다중 비트 데이터 아이템의 각자의 부분으로 목적지 아키텍처 레지스터의 우세한 콘텐츠의 0개 이상의 부분의 세트를 전파하는 프로세싱 동작이고, 부분의 세트는 술부 데이터에 의해 정의됨);
    물리적 레지스터의 세트의 물리적 레지스터를 목적지 아키텍처 레지스터 및 하나 이상의 소스 아키텍처 레지스터와 연관시키기 위한 레지스터 할당 회로부(검출기 회로부가 프로세싱 명령어가 술부 병합 동작을 정의하는 것을 검출할 때, 레지스터 할당 회로부는 목적지 아키텍처 레지스터의 우세한 콘텐츠의 사본을 저장하기 위해 추가 물리적 레지스터를 프로세싱 명령어와 연관시키도록 구성됨);
    술부 병합 동작을 정의하는 주어진 프로세싱 명령어의 실행에 사용하기 위한 술부 데이터를 생성하기 위한 술부 생성 회로부; 및
    상기 술부 생성 회로부에 의해 생성된 상기 술부 데이터의 상태에 응답하여 상기 주어진 프로세싱 명령어와 상기 추가 물리적 레지스터를 연관시키는 것을 제어하는 술부 검출기 회로부를 포함하는 컴퓨터 프로그램.
KR1020237036881A 2021-03-31 2022-03-21 회로부 및 방법 KR20230162054A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/218,371 2021-03-31
US17/218,371 US11494190B2 (en) 2021-03-31 2021-03-31 Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state
PCT/GB2022/050704 WO2022208050A1 (en) 2021-03-31 2022-03-21 Circuitry and method

Publications (1)

Publication Number Publication Date
KR20230162054A true KR20230162054A (ko) 2023-11-28

Family

ID=80999670

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237036881A KR20230162054A (ko) 2021-03-31 2022-03-21 회로부 및 방법

Country Status (5)

Country Link
US (1) US11494190B2 (ko)
EP (1) EP4315039A1 (ko)
KR (1) KR20230162054A (ko)
CN (1) CN117120974A (ko)
WO (1) WO2022208050A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230077933A1 (en) * 2021-09-14 2023-03-16 Advanced Micro Devices, Inc. Supporting processing-in-memory execution in a multiprocessing environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
US7809930B2 (en) * 2007-01-24 2010-10-05 Arm Limited Selective suppression of register renaming
US7925868B2 (en) * 2007-01-24 2011-04-12 Arm Limited Suppressing register renaming for conditional instructions predicted as not executed
US9182959B2 (en) 2008-08-15 2015-11-10 Apple Inc. Predicate count and segment count instructions for processing vectors
US10275251B2 (en) * 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9477467B2 (en) 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
US10346170B2 (en) * 2015-05-05 2019-07-09 Intel Corporation Performing partial register write operations in a processor
CN107291425B (zh) * 2017-06-23 2020-11-24 上海兆芯集成电路有限公司 合并解决重命名尺寸问题的部分写入结果的系统和方法
US10365928B2 (en) * 2017-11-01 2019-07-30 International Business Machines Corporation Suppress unnecessary mapping for scratch register

Also Published As

Publication number Publication date
EP4315039A1 (en) 2024-02-07
CN117120974A (zh) 2023-11-24
US20220318016A1 (en) 2022-10-06
WO2022208050A1 (en) 2022-10-06
US11494190B2 (en) 2022-11-08

Similar Documents

Publication Publication Date Title
US9804851B2 (en) Operand size control
JP5027669B2 (ja) マイクロプロセッサ、集積回路、システム及び方法
JP5646656B2 (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
JP6807383B2 (ja) 転送プレフィックス命令
US20110219213A1 (en) Instruction cracking based on machine state
JPH02234248A (ja) 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法
KR102524565B1 (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
JPH07210381A (ja) プロセッサ及びコンピュータ・システム
KR20130098303A (ko) 정렬 제어
US8205032B2 (en) Virtual machine control structure identification decoder
JP5318197B2 (ja) ホストデータ処理装置内におけるデバイスエミュレーションのサポート
KR20230162054A (ko) 회로부 및 방법
US8683178B2 (en) Sharing a fault-status register when processing vector instructions
EP3329361B1 (en) Vector operand bitsize control
JP2023512502A (ja) ケイパビリティベースの処理のための装置及び方法
US11347506B1 (en) Memory copy size determining instruction and data transfer instruction
JP2021515929A (ja) データ処理
JP2856784B2 (ja) 電子計算機
WO2023148467A1 (en) Technique for performing memory access operations