KR20240027144A - 서술 기법들 - Google Patents

서술 기법들 Download PDF

Info

Publication number
KR20240027144A
KR20240027144A KR1020247005225A KR20247005225A KR20240027144A KR 20240027144 A KR20240027144 A KR 20240027144A KR 1020247005225 A KR1020247005225 A KR 1020247005225A KR 20247005225 A KR20247005225 A KR 20247005225A KR 20240027144 A KR20240027144 A KR 20240027144A
Authority
KR
South Korea
Prior art keywords
predicate
data value
source
vector
indicators
Prior art date
Application number
KR1020247005225A
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 KR20240027144A publication Critical patent/KR20240027144A/ko

Links

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/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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

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)
  • Devices For Executing Special Programs (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

벡터 프로세싱에서의 다수의 벡터들의 서술에 관한 장치들, 방법들 및 프로그램들이 개시된다. 요소 크기 및 요소 카운트를 포함하는 술어 정보의 인코딩이 개시되고, 술어 정보는 요소 카운트에 의해 주어지는 다수의 연속적인 동일 서술 표시자들을 포함하고, 각각의 서술 표시자는 요소 크기에 대응한다.

Description

서술 기법들
본 기법들은 데이터 프로세싱에 관한 것이다. 특히, 벡터 프로세싱 및 벡터 프로세싱을 제어하기 위한 술어들의 사용에 관한 것이다.
데이터 프로세싱 장치들에는 벡터 프로세싱 동작들을 수행하기 위한 프로세싱 회로부가 제공될 수 있다. 벡터 프로세싱 동작은 병렬 연산이 벡터 레지스터에 유지되는 벡터의 각자의 요소들에 수행되는 것을 수반할 수 있다. 벡터에 대한 벡터 프로세싱 동작의 서술은 그 벡터의 어느 요소들이 벡터 프로세싱 동작을 거치는지 제어하는 것을 포함한다.
본 명세서에 설명된 적어도 일부 예들은 장치를 제공하고, 장치는: 명령어들을 디코딩하기 위한 디코딩 회로부; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 포함하고,
디코딩 회로부는:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 회로부로 하여금 소스 피연산자에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
본 명세서에 설명된 적어도 일부 예들은 데이터 프로세싱의 방법을 제공하고, 방법은:
명령어들을 디코딩하는 단계; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 제어하는 단계를 포함하고,
디코딩하는 단계는:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 회로부로 하여금 소스 피연산자에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하는 단계를 포함하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
본 명세서에 설명된 적어도 일부 예들은 명령어 실행 환경을 제공하기 위해 호스트 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램을 제공하며, 컴퓨터 프로그램은:
명령어들을 디코딩하기 위한 디코딩 로직; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 로직을 포함하고,
디코딩 로직은:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 로직으로 하여금 소스 피연산자들에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
본 기법들은, 단지 예로서, 이하의 설명과 관련하여 읽혀지는 첨부 도면들에 예시된 바와 같은 본 발명의 실시예들을 참조하여 추가로 설명될 것이다.
도 1은 본 기술들의 다양한 구성들에 따른 장치를 개략적으로 도시한다.
도 2a 및 도 2b는 본 기술들의 다양한 구성들에 따른 카운트 역할 술어(predicate-as-count) 접근법을 사용하여 인코딩된 술어 정보를 사용하는 벡터 프로세싱 동작을 특정하는 벡터 프로세싱 명령어의 사용을 개략적으로 도시한다.
도 3은 본 기술들의 다양한 구성들에 따른 카운트 역할 술어 접근법을 사용하여 인코딩된 술어 정보를 사용하는 벡터 프로세싱 동작을 특정하는 벡터 프로세싱 명령어의 사용을 개략적으로 도시한다.
도 4a는 본 기술들의 다양한 구성들에 따른 술어 인코딩 내의 반전 표시자의 사용을 개략적으로 도시한다.
도 4b는 본 기술들의 다양한 구성들에 따른 카운트 역할 술어 정의에 사용되는 인코딩에서 요소 카운트의 표시와 요소 크기의 표시 사이의 경계의 가변적인 위치를 개략적으로 도시한다.
도 4c는 본 기술들의 다양한 구성들에 따른 카운트 역할 술어 정의에 사용되는 인코딩에서 요소 카운트의 표시와 요소 크기의 표시 사이의 경계의 위치를 결정하는 비트 값들의 예를 개략적으로 도시한다.
도 5는 본 기술들의 다양한 구성들에 따른 카운트 역할 술어 정의에 사용되는 인코딩을 개략적으로 도시한다.
도 6은 본 기술들의 다양한 구성들에 따른 카운트 역할 술어를 정의하는 술어 데이터 값의 판독 및 기록을 개략적으로 도시한다.
도 7은 본 기술들의 다양한 구성들에 따른 술어 생성 명령어의 사용을 개략적으로 도시한다.
도 8은 본 기술들의 다양한 구성들에 따른 카운터 역할 술어를 마스크 역할 술어(predicate-as-mask)로 변환하는 벡터 프로세싱 명령어 내의 크기 표시자의 사용을 개략적으로 도시한다.
도 9a는 본 기술들의 다양한 구성들에 따른 술어 변환 명령어 내의 서브부분 표시자의 사용을 개략적으로 도시한다.
도 9b는 본 기술들의 다양한 구성들에 따른 모두 참인 술어 생성 명령어를 개략적으로 도시한다.
도 10은 본 기술들의 다양한 구성들에 따른 술어 카운트 명령어의 사용을 개략적으로 도시한다.
도 11은 사용될 수 있는 시뮬레이터 구현예를 개략적으로 도시한다.
본 명세서에 개시된 일 예에서 장치가 있고, 장치는:
명령어들을 디코딩하기 위한 디코딩 회로부; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 포함하고,
디코딩 회로부는:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 회로부로 하여금 소스 피연산자에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
데이터 프로세싱 동작들의 서술은 일반적으로 서술 마스크의 사용에 의해 달성되는데, 이에 따라 서술 마스크는 데이터 프로세싱 동작이 적용될 수 있는 가능한 병렬 위치들에 대응하는 다수의 표시자들을 유지한다. 이어서 표시자들의 각자의 값들은 각자의 위치에서의 데이터 프로세싱 동작이 일어날지 여부를 결정한다. 이 접근법은 본 명세서에서 “마스크 역할 서술”로 지칭된다. 따라서 벡터 프로세싱 동작들의 맥락에서 벡터 프로세싱 동작을 거칠 벡터 내의 요소들의 수에 대응하는 수의 표시자들을 포함하는 서술 마스크가 제공될 수 있다. 이어서 서술 마스크 내의 표시자들의 각자의 값들은 벡터의 어느 요소들이 벡터 프로세싱 동작을 거칠지 결정한다. 그러나, 본 기술들의 발명자들은 많은 양의 서술 정보를 필요로 하는 일부 동작들의 경우 그 데이터 폭을 커버하기 위해 다수의 서술 마스크들을 사용하는 것이 구현하는데 비실용적임을 밝혀냈다. 예를 들어, 이것은 다중-벡터 프로세싱의 맥락에 있는 경우일 수 있고, 스케일가능 벡터 프로세싱의 맥락에서, 즉 데이터 프로세싱 장치가 고정된 수의 요소들을 갖는 고정된 벡터 길이에 벡터 프로세싱을 수행하도록 제한되지 않고, 오히려 이러한 벡터 프로세싱을 스케일가능한, 즉 길이 및/또는 요소 크기가 달라질 수 있는 벡터들에 수행할 수 있는 경우에 어려움이 더 심각할 수 있다.
이러한 맥락에서 본 기술들은 종래의 마스크 역할 서술 접근법에 따라 가능한 것보다 소스 술어 레지스터의 콘텐츠에 의해 더 많은 양의 서술 정보가 제공되는 효율적인 방식을 제공한다. 마스크 역할 서술에 대한 경우와 같이, 소스 술어 레지스터의 콘텐츠를 형성하는 표시자들(예컨대 비트 값들)과 명령어의 피연산자(들)의 대상 요소들 사이에 1대1 대응이 존재하는 것 대신에, 본 기술들은 소스 술어 레지스터에 유지되는 술어 데이터 값에 대한 인코딩을 이용하고, 인코딩은 요소 크기 및 요소 카운트를 특정한다. 요소 카운트는 다수의 연속적인 동일 서술 표시자들을 나타내고, 각각의 서술 표시자는 요소 크기에 대응한다. 본 명세서에서 “카운트 역할 서술”로 지칭되는 이 접근법은 소스 피연산자(들)의 개별 요소들에 대응하는 서술 표시자들의 임의적인 개별 설정을 지원하지 않지만, 술어 사용은 빈번하게 활성 요소들의 세트에 비활성 요소들의 세트가 사이 간격 없이 후속(또는 그 반대)하는 것을 포함한다는 것이 밝혀졌다. 예를 들어, 벡터 프로세싱이 행렬 요소들을 처리할 때, 활성 요소들의 세트에 비활성 요소들이 후속하는 상황이 행렬의 행의 끝에서 발생할 수 있다. 반대로, 비활성 요소들의 세트에 활성 요소들이 후속하는 상황이 행렬의 행의 시작에 발생할 수 있다. 본 기술들에 의해 사용되는 인코딩이 이러한 활성/비활성 요소들의 세트들이 효과적으로 인코딩되게 하는 경우, 이는 곱(product) 데이터 값을 제공하기 위해 단지 단일 소스 술어 레지스터만을 필요로 하고, 이는 그럼에도 불구하고 다수의 벡터 피연산자들의 서술에 요구되는 정보를 표현할 수 있다.
따라서 일부 예들에서 요구되는 서술 표시자들은 활성 요소들의 전체 세트, 또는 반대로 비활성 요소들의 전체 세트를 포함할 수 있지만, 더 일반적으로 다른 예들에서 프로세싱 회로부는 술어 데이터 값을 디코딩하여 연속적인 동일 서술 표시자들 및 동일 서술 표시자들의 추가 시퀀스를 생성하도록 구성되고, 연속적인 동일 서술 표시자들 및 동일 서술 표시자들의 추가 시퀀스는 서로에 대해 반전 활성 표시들을 포함한다.
그럼에도 불구하고 일부 예들에서 때로는 모든 서술 표시자들이 동일(즉 모두 활성 또는 모두 비활성)해야 할 필요성이 존재할 수 있는 경우, 프로세싱 회로부는 사전결정된 값을 갖는 요소 카운트에 응답하여 모든 서술 표시자들을 연속적인 동일 서술 표시자들로서 생성한다.
일부 예들에서 술어 데이터 값의 인코딩은 반전 비트를 추가로 포함하고, 연속적인 동일 서술 표시자들을 형성하는 반복적인 활성 표시는 반전 비트에 의존한다. 따라서, 마스크 정보의 “극성”은 이 반전 비트의 사용에 의해 설정될 수 있다. 또한, 반전 비트는, 요소 크기 및 요소 카운트와 조합하여, 따라서 활성 요소들의 시작을 정의한다(이는 활성 요소들에 비활성 요소들이 후속하는 경우에 요소들의 세트의 시작에 있거나, 또는 비활성 요소들에 활성 요소들이 후속하는 경우에 활성 요소들이 비활성 요소들의 세트를 뒤따르기 시작하는 요소들의 세트 내의 지점에 있을 것이다).
사용되는 인코딩은 요소 크기를 다양한 방식들로 표현할 수 있고, 요소 크기들의 범위를 표현 가능할 수 있지만, 일부 예들에서 술어 데이터 값의 인코딩은 요소 크기 인코딩을 이용하여 요소 크기를 나타내고, 요소 크기 인코딩은:
요소 크기가 바이트 길이인 것;
요소 크기가 하프-워드 길이인 것;
요소 크기가 워드 길이인 것;
요소 크기가 더블-워드 길이인 것; 및
요소 크기가 쿼드-워드 길이인 것 중 적어도 하나에 대한 표시들을 포함한다.
술어 데이터 값의 인코딩은 요소 크기 및 요소 카운트 둘 모두가 술어 데이터 값에 의해 표현되게 하지만, 이러한 각자의 컴포넌트들을 표현하는 술어 데이터 값의 부분들은 고정될 필요가 없다. 실제로, 일부 예들에서 술어 데이터 값의 인코딩은 요소 크기 및 요소 카운트를 나타내는데 사용되는 술어 데이터 값의 사전결정된 부분을 포함하고, 요소 크기를 나타내는 제1 서브부분과 요소 카운트를 나타내는 제2 서브부분 사이의 술어 데이터 값의 사전결정된 부분 내의 경계 위치는 표시된 요소 크기에 의존한다. 두 서브부분 사이의 이러한 가변적인 경계는 술어 데이터 값에서 이용가능한 공간이 사용되는 방법에 유연성을 허용한다. 특히, 이는 요소 크기를 나타내기 위해 더 작은 공간이 요구되는 예들에서 더 많은 공간이 요소 카운트에 사용되도록 허용하는 반면, 반대로 요소 카운트를 나타내기 위해 더 작은 공간이 요구되는 예들에서 더 많은 공간이 요소 크기에 사용되도록 허용한다.
요소 카운트 및 요소 크기가 표현되는 특정 방식은 제한되지 않고 다양한 형태들을 취할 수 있다. 그러나, 경계 위치가 전술된 방식으로 가변적인 일부 예들에서, 제1 서브부분 내의 활성 비트의 비트 위치는 요소 크기를 나타내고 활성 비트의 비트 위치는 경계 위치를 정의한다.
본 기술들의 장점은 카운터 역할 술어에 의해 사용되는 특히 효율적인 인코딩이어서, 많은 양의 술어 표시자들이 술어 데이터 값에서 상대적으로 작은 양의 공간에 의해 표현될 수 있다. 실제로, 장치는 소스 술어 레지스터의 콘텐츠의 제한된 부분에서 술어 데이터 값들을 처리하도록 구성될 수 있다. 이는 본 기술들의 용이한 구현을 가능하게 할 수 있다. 예를 들어, 일부 경우들에서, 술어 데이터 값의 인코딩은 사전결정된 비트수의 술어 데이터 값으로 제한되고, 프로세싱 회로부는, 소스 술어 레지스터로부터 술어 데이터 값을 판독할 때, 사전결정된 비트수의 술어 데이터 값을 형성하는 것들을 넘는 소스 술어 레지스터에 유지되는 임의의 추가적인 비트들을 무시하도록 구성된다. 동일하게 일부 경우들에서, 술어 데이터 값의 인코딩은 사전결정된 비트수의 술어 데이터 값으로 제한되고, 프로세싱 회로부는, 새로운 술어 데이터 값을 타겟 술어 레지스터에 기록할 때, 사전결정된 비트수의 서술 데이터 값을 형성하는 것들을 넘는 타겟 술어 레지스터에 유지될 수 있는 임의의 추가적인 비트들을 사전결정된 값으로 설정하도록 구성된다.
본 기술들은 장치가 응답하여 카운터 역할 술어 예들의 효과적인 생성 및 사용을 지원하는 다양한 추가적인 명령어들을 추가로 제안한다. 따라서, 일부 예들에서 디코딩 회로부는 생성 예정(to-be-generated) 술어 및 생성 예정 술어에 의해 제어될 벡터들의 수를 특정하는 술어 생성 명령어에 응답하여 프로세싱 회로부로 하여금 대응하는 요소 크기 및 대응하는 요소 카운트를 나타내는 술어 데이터 값을 생성하게 하는 제어 신호들을 생성한다.
일부 예들에서, 디코딩 회로부는 모두 참(all-true)인 생성 예정 술어를 특정하는 모두 참인 술어 생성 명령어에 응답하여 프로세싱 회로부로 하여금 서술 표시자들에 대해 모두 활성(all-active)인 요소들을 나타내는 모두 참인 술어 데이터 값을 생성하게 하는 제어 신호들을 생성한다.
일부 예들에서, 디코딩 회로부는 모두 거짓(all-false)인 생성 예정 술어를 특정하는 모두 거짓인 술어 생성 명령어에 응답하여 프로세싱 회로부로 하여금 서술 표시자들에 대해 모두 비활성(all-inactive)인 요소들을 나타내는 모두 거짓인 술어 데이터 값을 생성하게 하는 제어 신호들을 생성한다.
카운터 역할 술어 표현은 술어 정보의 특히 효율적인 인코딩 밀도를 제공하지만, 그럼에도 불구하고 본 기술들은 종래의 마스크 역할 술어 표현이 유용하게 채용될 수 있고, 그에 따라 카운터 역할 술어 표현으로부터 마스크 역할 술어 표현으로의 변환을 가능하게 하는 적어도 하나의 명령어가 제안되는 상황들이 발생할 수 있음을 인식한다. 따라서, 일부 예들에서 디코딩 회로부는 변환 예정 술어 데이터 값을 유지하는 소스 술어 레지스터를 특정하는 술어 변환 명령어에 응답하여 프로세싱 회로부로 하여금 변환 예정 술어 데이터 값을 디코딩하게 하고 변환된 술어 데이터 값을 생성하게 하는 제어 신호들을 생성하고, 변환된 술어 데이터 값은 비트 위치들에 있는 비트 값들이 대상 데이터 아이템 내의 요소들의 서술을 나타내는 직접 마스크-스타일 표현을 포함한다.
카운터 역할 술어 표현이 동등하게 크기설정된 마스크 역할 술어 표현보다 훨씬 더 많은 수의 요소들을 용이하게 커버할 수 있는 경우, 카운터 역할 술어 표현이 하나 초과의 마스크 역할 술어로 변환될 수 있다고 추가로 제안된다. 따라서, 일부 예들에서 술어 변환 명령어는 하나 초과의 목적지 술어 레지스터를 특정하고, 제어 신호들은 프로세싱 회로부로 하여금 하나 초과의 변환된 술어 데이터 값을 생성하게 하고, 하나 초과의 변환된 술어 데이터 값들의 각각은 직접 마스크-스타일 표현을 포함하고, 하나 초과의 변환된 술어 데이터 값들의 각각은 변환 예정 술어 데이터 값에 의해 표현되는 서술 표시자들의 상이한 서브세트에 대응한다.
일부 예들에서 술어 변환 명령어는 생성될 다수의 하나 초과의 변환된 술어 데이터 값들을 특정한다.
일부 예들에서 술어 변환 명령어는 변환 예정 술어 데이터 값에 의해 표현되는 술어 비트들의 다수의 가능한 서브세트들 중 어느 것이 생성되어야 하는지 특정한다.
일부 예들에서 디코딩 회로부는 카운팅 예정(to-be-counted) 술어 데이터 값을 유지하는 소스 술어 레지스터를 특정하는 술어 카운팅 명령어에 응답하여 프로세싱 회로부로 하여금 변환 예정 술어 데이터 값을 디코딩하여 변환 예정 술어 데이터 값에 의해 표시되는 서술 표시자들을 결정하고 목적지 범용 레지스터 내의 서술 표시자들의 활성 요소들의 수에 대응하는 스칼라 값을 저장하게 하는 제어 신호들을 생성한다.
일부 예들에서 술어 카운팅 명령어는 카운팅될 활성 요소들의 수의 상한을 특정하고, 상한은: 2개의 벡터 길이; 및 4개의 벡터 길이 중 하나에 대응한다.
하나 이상의 소스 피연산자들은 벡터 프로세싱 동작의 대상이 될 다양한 유형들의 데이터 아이템 또는 데이터 아이템들을 나타낼 수 있다. 데이터 아이템의 유형은 동작의 일부로서 서술될 수 있는 다수의 요소들을 포함하는 한 본 기술들에 제한하지 않는다. 또한, 단지 하나의 소스 피연산자가 있을 수 있거나 또는 다수의 소스 피연산자들이 있을 수 있다. 다수의 소스 피연산자들의 경우에, 서술이 모든 다수의 소스 피연산자들에 적용될 때, 적절하게 술어 데이터 값에서 인코딩되는 술어 정보의 제1 부분이 제1 소스 피연산자에 적용되고, 술어 데이터 값에서 인코딩되는 술어 정보의 제2 부분이 제2 소스 피연산자에 적용되도록, 피연산자들에 암시되는 순서가 존재한다. 소스 피연산자들은 벡터 레지스터들을 나타낼 수 있거나(특히 스케일가능 벡터 레지스터들일 수 있음) 또는 대안적으로 그것들은 메모리 위치들의 연속적인 범위를 나타낼 수 있다. 실제로, 소스 벡터 자체는 포인터들, 즉 수집(로드) 또는 산란(저장) 동작들에 의해 메모리 위치들의 범위를 나타낼 수 있다. 메모리 위치들의 범위의 경우, 서술은 로드 또는 저장 동작에 대해 어느 특정 위치들이 액세스될지 / 액세스되지 않을지 제어한다.
이와 같이 일부 예들에서 하나 이상의 소스 피연산자들은: 하나의 소스 벡터 레지스터; 2개의 소스 벡터 레지스터들; 또는 3개의 소스 벡터 레지스터들을 포함한다. 추가적인 수의 소스 벡터 레지스터들이 또한 가능하다. 일부 예들에서 하나 이상의 소스 피연산자들은: 메모리 위치들의 범위를 포함한다. 메모리 위치들의 범위는 메모리 위치들의 단일 연속 블록일 수 있거나, 또는 세트 포인터들에 의해 표시되고 그럼으로써 잠재적으로 더 넓은 메모리 공간에 걸쳐 산란될 수 있다.
일부 예들에서 벡터 프로세싱 명령어는 목적지 벡터 레지스터를 추가로 특정한다.
일부 예들에서 벡터 프로세싱 명령어는 목적지 메모리 위치를 추가로 특정한다.
본 명세서에 개시된 일 예에서 데이터 프로세싱의 방법이 있고, 방법은:
명령어들을 디코딩하는 단계; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 제어하는 단계를 포함하고,
디코딩하는 단계는:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 회로부로 하여금 소스 피연산자에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하는 단계를 포함하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
본 명세서에 개시된 일 예에서 명령어 실행 환경을 제공하기 위해 호스트 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램이 있고, 컴퓨터 프로그램은:
명령어들을 디코딩하기 위한 디코딩 로직; 및
명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 로직을 포함하고,
디코딩 로직은:
벡터 프로세싱 동작;
하나 이상의 소스 피연산자들; 및
소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
프로세싱 로직으로 하여금 소스 피연산자들에 대해 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 제어 신호들은 추가로 프로세싱 회로부로 하여금 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 하나 이상의 소스 피연산자들의 요소들에 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
술어 데이터 값은:
요소 크기; 및
다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 요소 크기에 대응한다.
이제 도면들을 참조하여 일부 특정 실시예들이 기술된다.
도 1은 본 기술들의 다양한 예들을 구현할 수 있는 프로세싱 장치(10)를 개략적으로 도시한다. 장치는 데이터 처리 회로부(12)를 포함하고, 이는 그것이 실행시키는 명령어들의 시퀀스에 응답하여 데이터 아이템들에 대한 데이터 프로세싱 동작들을 수행한다. 이들 명령어들은 데이터 프로세싱 장치(120)가 액세스하고 있는 메모리(14)로부터 검색되고, 당업자가 친숙할 방식으로, 페치 회로부(16)가 이러한 목적을 위해 제공된다. 또한, 페치 회로부(16)에 의해 검색된 명령어들은 명령어 디코더 회로부(18)(달리 디코딩 회로부로 지칭됨)로 전달되고, 이는 처리 회로부(12)뿐만 아니라 레지스터들(20)의 세트 및 로드/저장 유닛(22)의 구성 및 동작의 다양한 태양들을 제어하도록 배열되는 제어 신호들을 생성한다. 대체적으로, 데이터 처리 회로부(12)는 파이프라인 방식으로 배열될 수 있지만, 그의 세부 사항들은 본 기법들에 관련되지 않는다. 통상의 기술자는 도 1이 나타내는 일반적인 구성에 익숙할 것이고, 여기에서는 그것의 추가의 상세한 설명이 단지 간결함을 위해 생략된다. 도 1에서 알 수 있는 바와 같이, 레지스터들(20) 각각은 다수의 데이터 요소들을 위한 저장소를 포함하여, 처리 회로부가 특정된 레지스터 내의 특정된 데이터 요소에 데이터 처리 동작들을 적용할 수 있게 하거나, 특정된 레지스터 내의 특정된 그룹의 데이터 요소들("벡터")에 데이터 처리 동작들을 적용할 수 있게 한다. 이용가능한 레지스터들(20)의 세트 내에서, 일부는 주어진 크기의 데이터 값들을 유지하도록 배열된 범용 레지스터들로서 지정되고, 이는 장치의 데이터 프로세싱 특성들을 특징짓는다. 예를 들어, 이들은 64비트 데이터 값들일 수 있지만, 본 기술들은 임의의 특정한 이러한 데이터 값 크기로 제한되지 않는다. 이용가능한 레지스터들의 세트 내의 다른 레지스터들은 벡터 레지스터들로서 명시적으로 구성될 수 있고, 이러한 벡터 레지스터들이 유지하는 벡터 길이는 추가로 “스케일가능한”, 즉 고정되지 않고, 사전결정된 상한 및 하한 사이에서 달라질 수 있다. 예를 들어, 장치(10)는 영국 캠브리지 소재의 암 리미티드(Arm Limited)에 의해 제공되는 Arm AArch64 아키텍처의 SVE(Scalable Vector Extension)에 따라 배열될 수 있고, 이는 최소 128 비트에서 최대 2048 비트까지, 128비트 증분으로 달라질 수 있는 벡터 길이를 지원한다. 세트 내의 다른 레지스터들은 술어 레지스터들로서 그리고 스케일가능 벡터 프로세싱 구성의 맥락에서 스케일가능한 술어 레지스터들로서 지정되고, 대응하는 스케일가능 벡터들에 대한 벡터 프로세싱 동작들의 적용을 제어하기 위한 술어 표시자들을 유지하도록 배열된다. 전술된 SVE 구성으로 구성되면, 장치(10)는 (다른 범용 레지스터들에 더하여) : 32개의 스케일가능 벡터 레지스터들 및 16개의 스케일가능 술어 레지스터들을 포함한다. 다른 예들 및 유형들의 레지스터들이 또한 제공될 수 있지만, 본 기술들에 직접 관련성이 없으므로 본 명세서에서 논의되지 않는다. 레지스터들(20) 내에 유지되는 데이터 요소들에 대한 이러한 (스케일가능한) 벡터 (술어) 레지스터들의 사용은 일부 구체적인 실시예들을 참조하여 아래 더 상세하게 설명될 것이다. 명령어들의 실행 시에 데이터 프로세싱 회로부(12)에 의해 요구되는 데이터 값들, 및 이들 데이터 프로세싱 명령어들의 결과로서 생성된 데이터 값들은 로드/저장 유닛(22)에 의해 메모리(14)에 기록되고 메모리(140)로부터 판독된다. 또한, 대체적으로 도 1의 메모리(14)는, 본 기법들의 명령어들이, 전형적으로는 프로세싱 회로부가 이어서 실행하는 사전정의된 시퀀스의 명령어들("프로그램")의 일부로서 저장될 수 있는 컴퓨터 판독가능 저장 매체의 일례로서 보여질 수 있다는 것에 유의한다. 그러나, 처리 회로부는 다양한 상이한 소스들로부터, 예컨대 RAM에서, ROM에서, 네트워크 인터페이스를 통해서 등으로 그러한 프로그램에 액세스할 수 있다. 본 개시내용은 프로세싱 회로부(12)가 실행할 수 있는 다양한 신규 명령어들을 설명하고, 후속하는 도면들은 추가로 이러한 명령어들의 특성에 대한 설명, 이 명령어들의 실행을 지원하기 위한 데이터 프로세싱 회로부의 변형예 등을 제공한다.
도 2a는 일부 예들에서 카운트 역할 술어(predicate-as-count) 접근법을 사용하여 인코딩된 술어 정보를 사용하는 벡터 프로세싱 동작을 특정하는 벡터 프로세싱 명령어의 사용을 개략적으로 도시한다. 연산부호(81), 소스 피연산자(82)의 표시, 및 소스 술어 레지스터(83)의 표시를 포함하는 벡터 프로세싱 명령어(80)가 도시된다. 소스 술어 레지스터(83)로부터 검색된 술어 데이터 값(84)은 요소 카운트 표시(85) 및 요소 크기 표시(86)를 포함한다. 따라서 술어 데이터 값(84)에 의해 표현되는 서술 정보는 서술 표시자들의 시퀀스를 표현하고, 각각은 크기(86)이고 카운트(85) 횟수만큼 반복한다. 예를 들어, 크기(86)가 서술 표시자들이 8비트의 요소 크기에 대응한다고 나타내고 카운트(85)가 “8”을 표현하는 경우, 64비트 폭(즉 요소 크기 x 요소 카운트)을 커버하는 서술 정보를 나타낸다. 서술 표시자들(87)의 세트의 예가 도시되고, 각각은 “1”로 라벨링되고, 이는 활성 요소들의 세트를 나타낸다. 이어서 서술 표시자들(87)의 이러한 세트는 데이터 아이템의 어느 요소들(명령어(80) 내의 표시된 소스(82)로부터 검색됨)이 벡터 프로세싱 동작을 거치는지 제어한다. 이 벡터 프로세싱 동작은 명령어(80) 내의 특정 연산부호(82)에 의해 정의된다. 이어서 벡터 프로세싱의 결과(90)는 다양한 방식들로 사용될 수 있다(예컨대 목적지 레지스터에 저장되고 또한 명령어에 특정되지만, 이 양태는 단순히 간결성을 위해 도 2a의 예시에서 생략되었음). 따라서, 벡터 프로세싱 회로부(89)는 도 1에 도시된 프로세싱 회로부(12)의 일부로서 제공되고, 술어 데이터 값의 디코딩은 또한 이 프로세싱 회로부(52) 내에서 일어난다. 도 2a에 도시된 예는 8개의 동일 서술 표시자들(87)의 특히 짧고 단순한 세트의 것이고, 이는 단순히 예시의 간결성을 위해 수행되었음이 또한 이해되어야 한다. 더 일반적으로 본 기술들은 전술된 Arm AArch64 아키텍처의 SVE에 따르는 것들과 같은, 스케일가능 벡터 프로세싱 예들에 적용가능한 것과 같이 동일 서술 표시자들의 훨씬 더 긴 시퀀스들을 인코딩하는데 용이하게 사용될 수 있다.
도 2b는 일부 예들에서 카운트 역할 술어 접근법을 사용하여 인코딩된 술어 정보를 사용하는 벡터 프로세싱 동작을 특정하는 벡터 프로세싱 명령어의 사용을 개략적으로 도시한다. 연산부호(251), 목적지 피연산자(252)의 표시, 소스 피연산자(253)의 표시, 및 소스 술어 레지스터(254)를 포함하는 벡터 프로세싱 명령어(250)가 도시된다. 소스 술어 레지스터(254)로부터 검색된 술어 데이터 값(255)은 요소 카운트 표시(256) 및 요소 크기 표시(257)를 포함한다. 따라서 술어 데이터 값(255)에 의해 표현되는 서술 정보는 술어 표시자들의 시퀀스를 표현하고, 각각은 크기(257)이고 카운트(256) 횟수만큼 반복한다. 예를 들어, 크기(257)가 서술 표시자들이 16비트의 요소 크기에 대응한다고 나타내고 카운트(256)가 “32”를 표현하는 경우, 512비트 폭(즉 요소 크기 x 요소 카운트)을 커버하는 서술 정보를 나타낸다. 도 2b의 경우에 명령어(250) 내의 특정 연산부호(251)에 의해 정의된 연산은 벡터 로드 또는 벡터 저장 동작이고, 로드 / 저장 회로부(260)에 의해 수행된다(이는 일반적으로 프로그래밍된 프로세싱 회로부의 일부로서 간주될 수 있지만, 예시의 간결성을 위해 도 1에서 따로 도시됨). 로드 동작의 경우, 소스 피연산자(253)는 메모리 위치들의 범위를 나타내고, 서술 표시자들(258)의 세트는 어느 “요소들”이 메모리 위치들의 범위로부터 로딩되는지 제어하고, 이들은 목적지 벡터 레지스터(252)에 로딩된다. 로드 / 저장 회로부(260)는 메모리(262) 및 레지스터들(261)(예컨대 도 1의 메모리(14) 및 레지스터들(20))에 액세스한다. 저장 동작의 경우, 소스 피연산자(253)는 소스 벡터 레지스터를 나타내고, 서술 표시자들(258)의 세트는 그 소스로부터의 어느 요소들이 메모리 위치들의 범위에 저장되는지 제어하고, 이들은 목적지 피연산자(252)에 의해 표시된다. 로드 및 저장 동작 둘 모두에 대해, 메모리 위치들의 범위는 포인터들의 세트에 의해 표시되어(즉 메모리 위치들에 관계된 소스 또는 목적지 피연산자는 실제로 포인터들의 세트를 유지하는 벡터 레지스터임), 수집 / 산란 유형 로드 및 저장이 수행(술어 데이터 값에 의해 서술)되게 한다.
도 3은 일부 예들에서 카운트 역할 술어 접근법을 사용하여 인코딩된 술어 정보를 사용하는 벡터 프로세싱 동작을 특정하는 벡터 프로세싱 명령어의 사용을 개략적으로 도시한다. 연산부호(32), 제1 소스 벡터 레지스터(34)의 표시, 제2 소스 벡터 레지스터(36)의 표시, 및 소스 술어 레지스터(38)의 표시를 포함하는 벡터 프로세싱 명령어(30)가 도시된다. 소스 술어 레지스터(38)로부터 검색된 술어 데이터 값(40)은 요소 카운트 표시(42) 및 요소 크기 표시(44)를 포함한다. 따라서 술어 데이터 값(40)에 의해 표현되는 서술 정보는 술어 표시자들의 시퀀스를 표현하고, 각각은 크기(44)이고 카운트(42) 횟수만큼 반복한다. 예를 들어, 크기(44)가 서술 표시자들이 8비트의 요소 크기에 대응한다고 나타내고 카운트(42)가 “8”을 표현하는 경우, 64비트 폭(즉 요소 크기 x 요소 카운트)을 커버하는 서술 정보를 나타낸다. 서술 표시자들(46)의 세트의 예가 도시되고, 각각은 “1”로 라벨링되고, 이는 활성 요소들의 세트를 나타낸다. 이어서 서술 표시자들(46)의 이러한 세트는 각자의 벡터들(48, 50)의 어느 요소들(명령어(30) 내의 표시들(34, 36)에 따라 2개의 소스 벡터 레지스터들로부터 검색됨)이 벡터 프로세싱 동작을 거치는지 제어한다. 이 벡터 프로세싱 동작은 명령어(30) 내의 특정 연산부호(32)에 의해 정의된다. 이어서 벡터 프로세싱의 결과는 하나 이상의 결과 벡터들(54)일 수 있다. 실제로, 통상적으로 하나 이상의 목적지 벡터 레지스터들이 또한 명령어에 특정될 것이지만, 단순히 간결성을 위해 도 3의 예시에서 그 양태는 생략되었다. 따라서, 벡터 프로세싱 회로부(52)는 도 1에 도시된 프로세싱 회로부(12)의 일부로서 제공되고, 술어 데이터 값의 디코딩은 또한 이 벡터 프로세싱 회로부(52) 내에서 일어난다. 도 3에 도시된 예는 8개의 동일 서술 표시자들(46)의 특히 짧고 단순한 세트의 것이고, 이는 단순히 예시의 간결성을 위해 수행되었음이 또한 이해되어야 한다. 더 일반적으로 본 기술들은 전술된 Arm AArch64 아키텍처의 SVE에 따르는 것들과 같은, 스케일가능 벡터 프로세싱 예들에 적용가능한 것과 같이 동일 서술 표시자들의 훨씬 더 긴 시퀀스들을 인코딩하는데 용이하게 사용될 수 있다.
도 4a는 일부 예들에 따른 술어 인코딩 내의 반전 표시자의 사용을 개략적으로 도시한다. 서술 데이터 값(60)은 위에서 논의된 요소 카운트(64) 및 요소 크기(66)에 더하여, 반전 표시(62)(반전 또는 반전 없음을 나타내는 단일 비트로서 제공될 수 있음)를 추가로 포함한다. 반전 표시(62)의 효과는 활성 및 비활성 서술 요소들의 상대 위치들을 반전시키는 것이다. 따라서 제1 구성(68)에서 활성 요소들에는 비활성 요소들이 후속하는 반면, 제2 구성(70)에서 비활성 요소들에는 활성 요소들이 후속한다. 도 4a에 도시된 예는 또한 서술 표시자들의 특히 짧고 단순한 세트의 것이고, 이는 단순히 예시의 간결성을 위해 수행되었음이 한 번 더 이해되어야 한다. 더 일반적으로 본 기술들은 글래스의 동일한 활성 및/또는 비활성 요소들의 훨씬 더 긴 시퀀스들을 용이하게 표현할 수 있다. 약간 다른 관점에서 보면, 반전 표시(62)의 값이 활성 요소들의 시작을 나타내고, 그럼으로써 일 구성에서 활성 요소들은 가장 좌측 서술 위치에서 시작하고 카운트 값에 따라 반복하고, 서술 표시들의 나머지는 비활성 요소들임을 알 수 있다. 다른 구성에서 비활성 요소들은 가장 좌측 서술 위치에서 시작하여, 활성 요소들의 서술 표시들의 나머지가 카운트 값에 매칭되는 다수를 갖게 하는 위치에 도달할 때까지 반복된다.
도 4b는 다양한 예들에 따른 카운트 역할 술어 정의에 사용되는 인코딩에서 요소 카운트의 표시와 요소 크기의 표시 사이의 경계의 가변적인 위치를 개략적으로 도시한다. 도시된 인코딩은 반전 표시자(I), 요소 카운트 표시자, 및 요소 크기 표시자를 포함한다. 또한, 도면에 도시된 바와 같이, 요소 카운트 표시자를 유지하는 부분과 요소 크기 표시자를 유지하는 부분 사이의 경계는 위치가 달라질 수 있다. 특히, 그것은 표시된 요소 크기에 따라 달라지는데, 이로써 요소 카운트 표시자에 더 많거나 더 적은 공간이 허용된다.
도 4c는 다양한 예들에 따른 카운트 역할 술어 정의에 사용되는 인코딩에서 요소 카운트의 표시와 요소 크기의 표시 사이의 경계의 위치를 결정하는 비트 값들의 예를 개략적으로 도시한다. 여기서 사용되는 인코딩은 요소 크기를 “1000”으로 표현한다. 따라서 앞의 1은 표시된 값을 결정하고, 따라서 이 “활성 비트”는 요소 카운트 표시자를 유지하는 부분과 요소 크기 표시자를 유지하는 부분 사이의 경계를 결정한다. 상이한 요소 크기가 “10”에 의해 표시된다면, 이는 경계를 우측으로(도시된 배향으로) 이동시키고, 요소 카운트 표시자에 2비트 더 사용되게 할 것이다.
도 5는 다양한 예들에 따른 카운트 역할 술어 정의에 사용되는 인코딩을 개략적으로 도시한다. 이 특정 인코딩은 SVE 술어 레지스터의 가장 낮은 수의 16비트를 이용한다. 비트 [15]는 반전 표시자로서 사용되고, 1은 반전을 나타내고 0은 반전이 없음을 나타낸다. 비트 [14:0]은 요소 카운트 및 요소 크기를 표현하는데 사용되고, 요소 카운트 부분과 요소 크기 부분 사이의 경계는 요소 크기 표시에 따라 가변적인 위치에 있다. 도 4b에서 알 수 있는 바와 같이, 요소 크기를 표현하는데 사용되는 인코딩은 이진 1이고, 그 뒤에 0과 4 사이에 이진 0이 후속한다. 도면에 도시된 바와 같이:
[0] = 1은 바이트 요소 크기를 나타냄(그리고 비트 [14:1]는 요소 카운트를 인코딩하는데 이용가능하게 함;
[1:0] = 10은 하프 워드 요소 크기를 나타냄(그리고 비트 [14:2]는 요소 카운트를 인코딩하는데 이용가능하게 함;
[2:0] = 100은 워드 요소 크기를 나타냄(그리고 비트 [14:3]가 요소 카운트를 인코딩하는데 이용가능하게 함;
[3:0] = 1000은 더블 워드 요소 크기를 나타냄(그리고 비트 [14:4]가 요소 카운트를 인코딩하는데 이용가능하게 함;
[4:0] = 10000은 쿼드 워드 요소 크기를 나타냄(그리고 비트 [14:5]가 요소 카운트를 인코딩하는데 이용가능하게 함.
추가로 [4:0] = 00000의 인코딩에는 모두 거짓(비활성) 요소들의 특수 의미가 할당된다. 따라서, [15] = 1이고 [4:0] = 00000이면, 이는 모두 참(활성) 요소들을 나타내는데, 즉 이는 카운터 역할 술어 표현을 이용한 모두 활성 술어의 표준 형태이다.
도 6은 다양한 예들에 따른 카운트 역할 술어를 정의하는 술어 데이터 값의 판독 및 기록을 개략적으로 도시한다. 술어 레지스터가 도시되고, 술어 레지스터에 대한 판독 동작은 가장 낮은 16비트만을 취하고, 그 위의 임의의 비트들은 무시된다. 술어 레지스터의 최상위 비트는 도면에서 “MAX”로 라벨링되는데, 그 이유는 술어 레지스터의 크기가, 특히 스케일가능 벡터 프로세싱 구현예의 맥락에서 달라질 수 있기 때문이다. 예를 들어, SVE 구성은 길이 128 내지 2048비트인 스케일가능 벡터 레지스터들로 구현될 수 있고, 64, 32, 16, 또는 8비트 요소들을 유지할 수 있다. 이에 대응하여, (8 비트 요소들을 서술할 수 있도록) 스케일가능 벡터 길이의 1/8인 스케일가능 술어 레지스터들은 길이가 16 내지 256비트일 수 있다. 최소 술어 레지스터 길이가 16비트인 경우, 본 기술들은 16비트 공간을 점유하는 카운터 역할 술어 인코딩을 갖는 맥락에서 제시된다. 따라서 술어 데이터 값을 판독할 때, 도 6에 도시된 바와 같이, 그 위의 임의의 비트들은 무시된다. 반대로, 술어 데이터 값이 술어 레지스터에 기록될 때, 카운터 역할 술어 인코딩에 따라 가장 낮은 16비트만이 설정되고 그 위의 임의의 비트들은 0으로 설정된다.
도 7은 다양한 예들에 따른 술어 생성 명령어의 사용을 개략적으로 도시한다. 술어 생성 명령어(100) 명령어의 유형을 나타내는 연산부호(102), 목적지 술어 레지스터(104)의 표시, 요소 크기 표시(106), 2개의 소스 범용 레지스터 표시들(107, 108), 및 피연산자(VL)(110)를 포함하고, 이는 이 술어에 의해 제어될 벡터들의 수를 나타낸다. 술어 생성 명령어(100)가 2개의 소스 범용 레지스터들의 콘텐츠로부터 술어의 콘텐츠를 생성하기 위해 트리거하는 특정 연산은 범위 형태를 취하고, 하기 내용은 단지 몇몇 예들이다:
Figure pct00001
부호있는 제2 스칼라 피연산자와 부호있는 제1 스칼라 피연산자 사이의 차이가 양 또는 달리 0인 경우, 이를 갖는 카운트 역할 술어를 생성함.
부호없는 제2 스칼라 피연산자와 부호없는 제1 스칼라 피연산자 사이의 차이가 양 또는 달리 0인 경우, 이를 갖는 카운트 역할 술어를 생성함.
부호있는 제1 스칼라 피연산자와 부호있는 제2 스칼라 피연산자 사이의 차이가 양 또는 달리 0인 경우, 이를 갖는 카운트 역할 술어를 생성함.
부호없는 제1 스칼라 피연산자와 부호없는 제2 스칼라 피연산자 사이의 차이가 양 또는 달리 0인 경우, 이를 갖는 카운트 역할 술어를 생성함.
이 예에서 이 술어에 의해 제어될 벡터들을 나타내는 피연산자(VL)(110)는 단일 비트이고, 2개 또는 4개의 벡터들이 제어될 것을 나타낸다. 이어서 이는 마스크 역할 술어의 요소 카운트에 저장될 수 있는 최대 값을 결정한다. 예를 들어, 512비트 스케일가능 벡터 길이(SVL)의 경우 그리고 4개의 벡터들이 술어에 의해 제어되는 경우 256 바이트의 총 (4중) SVL을 제공한다. 바이트 길이의 가장 작은 요소 크기를 갖는 경우, 최대 카운트 값은 256이다. 도 5의 예시적인 인코딩을 참조하면, 이는 비트 [8:1]이 요소 카운트에 사용되도록 요구할 것이고, 비트 [0]은 1로 설정되어 바이트 크기 요소들을 나타낸다. 이어서 비트 [14:9]는 이 예에서 (예컨대 512비트 SVL을 제어하는데 사용하기 위해 술어가 판독될 때) 무시된다. 비트 [15]는 여전히 반전 표시자로 판독된다. 따라서 술어는 술어 인코딩 회로부(112)에 의해 그에 따라 생성되었고, 이는 도 1에 도시된 프로세싱 회로부(12)의 일부로서 제공된다. 따라서 이 술어에 의해 제어될 벡터들의 수를 나타내는 피연산자(VL)(110)는 또한 조건 플래그들을 설정할 때 모두 활성 및 마지막 활성 체크에 대해 고려되어야 하는 요소들의 수를 결정했다.
도 8은 다양한 예들에 따른 카운터 역할 술어를 마스크 역할 술어로 변환하는 벡터 프로세싱 명령어 내의 크기 표시자의 사용을 개략적으로 도시한다. 술어 변환 명령어(120)는 명령어의 유형을 나타내는 연산부호(122), 제1 목적지 술어 레지스터(124)의 표시, 제2 목적지 술어 레지스터(125)의 표시, 요소 크기 표시(126), 및 소스 술어 레지스터 표시(128)를 포함한다. 술어 데이터 값(130)(카운터 역할 술어 인코딩 이용)은 소스 술어 레지스터(128)로부터 검색되고, 술어 디코딩(132)(이는 도 1에 도시된 프로세싱 회로부(12)에 의해 수행됨)의 대상을 형성한다. 이어서 생성된 마스크 역할 술어는 2개의 목적지 술어 레지스터들(134, 136)에 걸쳐 저장된다.
도 9a는 다양한 예들에 따른 술어 변환 명령어 내의 서브부분 표시자의 사용을 개략적으로 도시한다. 술어 변환 명령어(150)는 명령어의 유형을 나타내는 연산부호(151), 목적지 술어 레지스터(152)의 표시, 요소 크기 표시(153), 소스 술어 레지스터 표시(154), 및 서브부분 선택 표시자(155)를 포함한다. 술어 데이터 값(160)(카운터 역할 술어 인코딩 이용)은 소스 술어 레지스터(154)로부터 검색되고, 술어 디코딩(161)(이는 도 1에 도시된 프로세싱 회로부(12)에 의해 수행됨)의 대상을 형성한다. 이는 “확장된” 마스크 역할 술어(162)를 생성하고, 이는 전체적으로 (이 예에서) 4개의 벡터 길이에 대응하는 길이를 갖는다. 서브부분 선택 표시자(155)는 선택 회로부(163)를 제어하고, 이는 서브부분들 중 선택된 것이 목적지 술어 레지스터(164)에 저장되게 한다.
도 9b는 다양한 예들에 따른 모두 참인 술어 생성 명령어(170)를 개략적으로 도시하고, 이는 명령어의 유형을 나타내는 연산부호(171), 목적지 술어 레지스터(172)의 표시, 요소 크기 표시(173), 및 피연산자(VL)(174)를 포함하고, 이는 이 술어에 의해 제어될 벡터들의 수를 나타낸다. 이 명령어는 활성 요소들의 가치가 있는 정의된 수의 벡터들로 하여금 카운터 역할 술어 인코딩에서 생성되게 한다.
도 10은 다양한 예들에 따른 술어 카운트 명령어의 사용을 개략적으로 도시한다. 술어 카운트 명령어(180)는 명령어의 유형을 나타내는 연산부호(181), 목적지 범용 레지스터(182)의 표시, 소스 술어 레지스터 표시(183), 요소 크기 표시(184), 및 피연산자(VL)(185)를 포함하고, 이는 카운트될 요소들의 수의 한계를 나타내고, 이는 이 술어에 의해 제어되는 벡터들의 수에 대응한다. 술어 데이터 값(186)(카운터 역할 술어 인코딩 이용)은 소스 술어 레지스터(186)로부터 검색되고, 술어 디코딩(187)(이는 도 1에 도시된 프로세싱 회로부(12)에 의해 수행됨)의 대상을 형성한다. 이어서 요소 카운팅 회로부(188)(또한 도 1에 도시된 프로세싱 회로부(12)를 형성함) 디코딩된 술어로부터 요소 카운트를 결정하고 이 스칼라 카운트 값으로 하여금 범용 레지스터(189)에 저장되게 한다. 이러한 카운팅은 요소 크기를 표시된 벡터들의 수에 고려한다.
명령어들의 다양한 예들이 카운터 역할 술어에 관련하여 위에 주어졌다. 일반적으로, 서술된 다중-벡터 명령어들은 카운터 역할 술어를 지배적 술어로 소비한다. 이러한 명령어들에서 카운터 역할 술어 인코딩에서의 활성 요소들의 수 및 요소들의 폭(크기) 둘 모두 고려된다. 이는 카운터 역할 술어 인코딩에서 동작의 폭이 요소 크기보다 더 좁아지거나 넓어지게 한다.
도 11은 사용될 수 있는 시뮬레이터 구현예를 개략적으로 도시한다. 전술된 구현예는 고려된 기술을 지원하는 특정 프로세싱 하드웨어를 동작시키기 위한 장치 및 방법과 관련하여 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 명세서에 기술된 구현예에 따라 명령어 실행 환경을 제공하는 것이 또한 가능하다. 이러한 컴퓨터 프로그램은, 하드웨어 아키텍처의 소프트웨어 기반 구현예를 제공하는 한, 종종 시뮬레이터로 지칭된다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상 머신, 모델, 및 동적 이진 변환기(dynamic binary translator)를 포함하는 이진 변환기를 포함한다. 통상적으로, 시뮬레이터 구현예는 호스트 프로세서(200) 상에서 실행되어, 호스트 운영 체제(210)를 선택적으로 실행하여, 시뮬레이터 프로그램(220)을 지원할 수 있다. 일부 배열에서, 하드웨어와 제공된 명령어 실행 환경 사이에 다수의 시뮬레이션 계층이 있을 수 있고/있거나, 동일한 호스트 프로세서 상에 제공된 다수의 별개의 명령어 실행 환경이 있을 수 있다. 역사상, 합리적인 속도로 실행되는 시뮬레이터 구현예를 제공하는 데 강력한 프로세서가 필요했지만, 그러한 접근법은 호환성 또는 재사용을 이유로 다른 프로세서에 고유한 코드를 실행하려는 요구가 있을 때와 같은 특정 상황에서 정당화될 수 있다. 예를 들어, 시뮬레이터 구현예는 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능을 명령어 실행 환경에 제공할 수 있거나, 또는 상이한 하드웨어 아키텍처와 전형적으로 연관된 명령어 실행 환경을 제공할 수 있다. 시뮬레이션의 개요가 문헌[“Some Efficient Architecture Simulation Techniques”, Robert Bedichek, Winter 1990 USENIX Conference, Pages 53 - 63]에서 주어진다.
구현예가 특정 하드웨어 구성물 또는 특징부를 참조하여 전술되었음을 고려한 결과로, 시뮬레이션된 구현예에서, 등가의 기능이 적합한 소프트웨어 구성물 또는 특징부에 의해 제공될 수 있다. 예를 들어, 특정 회로부는 시뮬레이션된 구현예에서 컴퓨터 프로그램 로직으로 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어가 시뮬레이션된 구현예에서 소프트웨어 데이터 구조로 구현될 수 있다. 전술된 구현예에서 언급된 하드웨어 요소 중 하나 이상의 하드웨어 요소가 호스트 하드웨어(예를 들어, 호스트 프로세서(200)) 상에 존재하는 배열에서, 일부 시뮬레이션된 구현예는, 적합한 경우, 호스트 하드웨어를 사용할 수 있다.
시뮬레이터 프로그램(220)은 컴퓨터 판독가능 저장 매체(이는 비일시적 매체일 수 있음) 상에 저장될 수 있고, 타깃 코드(230)(이는 애플리케이션들, 운영 체제들, 및 하이퍼바이저를 포함할 수 있음)에 프로그램 인터페이스(명령어 실행 환경)를 제공하는데, 이는 시뮬레이터 프로그램(220)에 의해 모델링되는 하드웨어 아키텍처의 인터페이스와 동일하다. 따라서, 위에서 설명된 카운터 역할 술어 인코딩된 술어들의 생성 및 조작을 위한 전술된 명령어들을 포함하는, 타겟 코드(230)의 프로그램 명령어들은 시뮬레이터 프로그램(220)을 이용하여 명령어 실행 환경 내로부터 실행되어, 위에서 논의된 장치(10)의 하드웨어 특징부들을 실제로 갖지 않는 호스트 컴퓨터(200)가 이러한 특징부들을 에뮬레이팅할 수 있게 할 수 있다.
전체적으로 간략하게 요약하면, 벡터 프로세싱에서의 다수의 벡터들의 서술에 관한 장치들, 방법들 및 프로그램들이 개시된다. 요소 크기 및 요소 카운트를 포함하는 술어 정보의 인코딩이 개시되고, 술어 정보는 요소 카운트에 의해 주어지는 다수의 연속적인 동일 서술 표시자들을 포함하고, 각각의 서술 표시자는 요소 크기에 대응한다.
본 출원에서 "...하도록 구성된"이라는 단어는 장치의 요소가 정의된 동작을 수행할 수 있는 구성을 갖는다는 것을 의미하는 데 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배열 또는 상호 연결 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 가질 수 있거나, 프로세서 또는 다른 처리 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "구성된"은 정의된 동작을 제공하기 위해 장치 요소를 어떤 방식으로든 변경해야 한다는 것을 의미하지 않는다.
예시적인 실시예들이 첨부 도면들을 참조하여 본 명세서에 상세히 설명되었지만, 본 발명은 그러한 정확한 실시예들로 제한되지 않는다는 것 그리고 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 범주로부터 벗어나지 않으면서 당업자에 의해 다양한 변경들, 추가들, 및 수정들이 이루어질 수 있다는 것이 이해될 것이다. 예를 들어, 본 발명의 범주로부터 벗어남이 없이 독립 청구항들의 특징들과의 종속 청구항들의 특징들의 다양한 조합들이 이루어질 수 있다.

Claims (25)

  1. 장치로서,
    명령어들을 디코딩하기 위한 디코딩 회로부; 및
    상기 명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 포함하고,
    상기 디코딩 회로부는:
    벡터 프로세싱 동작;
    하나 이상의 소스 피연산자들; 및
    소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
    상기 프로세싱 회로부로 하여금 상기 소스 피연산자에 대해 상기 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 상기 제어 신호들은 추가로 상기 프로세싱 회로부로 하여금 상기 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 상기 하나 이상의 소스 피연산자들의 요소들에 상기 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
    상기 술어 데이터 값은:
    요소 크기; 및
    다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 상기 요소 크기에 대응하는, 장치.
  2. 제1항에 있어서, 상기 프로세싱 회로부는 상기 술어 데이터 값을 디코딩하여 상기 연속적인 동일 서술 표시자들 및 동일 서술 표시자들의 추가 시퀀스를 생성하도록 구성되고, 상기 연속적인 동일 서술 표시자들 및 상기 동일 서술 표시자들의 추가 시퀀스는 서로에 대해 반전 활성 표시들을 포함하는, 장치.
  3. 제1항에 있어서, 상기 프로세싱 회로부는 사전결정된 값을 갖는 상기 요소 카운트에 응답하여 모든 서술 표시자들을 상기 연속적인 동일 서술 표시자들로서 생성하는, 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 술어 데이터 값의 상기 인코딩은 반전 비트를 추가로 포함하고, 상기 연속적인 동일 서술 표시자들을 형성하는 반복적인 활성 표시는 상기 반전 비트에 의존하는, 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 술어 데이터 값의 상기 인코딩은 요소 크기 인코딩을 이용하여 상기 요소 크기를 나타내고, 상기 요소 크기 인코딩은:
    상기 요소 크기가 바이트 길이인 것;
    상기 요소 크기가 하프-워드 길이인 것;
    상기 요소 크기가 워드 길이인 것;
    상기 요소 크기가 더블-워드 길이인 것; 및
    상기 요소 크기가 쿼드-워드 길이인 것 중 적어도 하나에 대한 표시들을 포함하는, 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 술어 데이터 값의 상기 인코딩은 상기 요소 크기 및 상기 요소 카운트를 나타내는데 사용되는 상기 술어 데이터 값의 사전결정된 부분을 포함하고,
    상기 요소 크기를 나타내는 제1 서브부분과 상기 요소 카운트를 나타내는 제2 서브부분 사이의 상기 술어 데이터 값의 상기 사전결정된 부분 내의 경계 위치는 표시되는 상기 요소 크기에 의존하는, 장치.
  7. 제6항에 있어서, 제5항에 종속하여, 상기 제1 서브부분 내의 활성 비트의 비트 위치는 상기 요소 크기를 나타내고 상기 활성 비트의 상기 비트 위치는 상기 경계 위치를 정의하는, 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 술어 데이터 값의 상기 인코딩은 사전결정된 비트수의 상기 술어 데이터 값에 제한되고,
    상기 프로세싱 회로부는, 상기 소스 술어 레지스터로부터 상기 술어 데이터 값을 판독할 때, 상기 사전결정된 비트수의 상기 술어 데이터 값을 형성하는 것들을 넘는 상기 소스 술어 레지스터에 유지되는 임의의 추가적인 비트들을 무시하도록 구성된, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 술어 데이터 값의 상기 인코딩은 사전결정된 비트수의 상기 술어 데이터 값에 제한되고,
    상기 프로세싱 회로부는, 새로운 술어 데이터 값을 타겟 술어 레지스터에 기록할 때, 상기 사전결정된 비트수의 상기 서술 데이터 값을 형성하는 것들을 넘는 상기 타겟 술어 레지스터에 유지될 수 있는 임의의 추가적인 비트들을 사전결정된 값으로 설정하도록 구성된, 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 디코딩 회로부는 생성 예정(to-be-generated) 술어 및 상기 생성 예정 술어에 의해 제어될 벡터들의 수를 특정하는 술어 생성 명령어에 응답하여 상기 프로세싱 회로부로 하여금 대응하는 요소 크기 및 대응하는 요소 카운트를 나타내는 술어 데이터 값을 생성하게 하는 제어 신호들을 생성하는, 장치.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 디코딩 회로부는 모두 참(all-true)인 생성 예정 술어를 특정하는 모두 참인 술어 생성 명령어에 응답하여 상기 프로세싱 회로부로 하여금 상기 서술 표시자들에 대해 모두 활성(all-active)인 요소들을 나타내는 모두 참인 술어 데이터 값을 생성하게 하는 제어 신호들을 생성하는, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 디코딩 회로부는 모두 거짓(all-false)인 생성 예정 술어를 특정하는 모두 거짓인 술어 생성 명령어에 응답하여 상기 프로세싱 회로부로 하여금 상기 서술 표시자들에 대해 모두 비활성(all-inactive)인 요소들을 나타내는 모두 거짓인 술어 데이터 값을 생성하게 하는 제어 신호들을 생성하는, 장치.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 디코딩 회로부는 변환 예정(to-be-converted) 술어 데이터 값을 유지하는 소스 술어 레지스터를 특정하는 술어 변환 명령어에 응답하여 상기 프로세싱 회로부로 하여금 상기 변환 예정 술어 데이터 값을 디코딩하고 변환된 술어 데이터 값을 생성하게 하는 제어 신호들을 생성하고,
    상기 변환된 술어 데이터 값은 비트 위치들에 있는 비트 값들이 대상 데이터 아이템 내의 요소들의 서술을 나타내는 직접 마스크-스타일 표현을 포함하는, 장치.
  14. 제13항에 있어서, 상기 술어 변환 명령어는 하나 초과의 목적지 술어 레지스터를 특정하고, 상기 제어 신호들은 상기 프로세싱 회로부로 하여금 하나 초과의 변환된 술어 데이터 값을 생성하게 하고, 상기 하나 초과의 변환된 술어 데이터 값들의 각각은 상기 직접 마스크-스타일 표현을 포함하고, 상기 하나 초과의 변환된 술어 데이터 값들의 각각은 상기 변환 예정 술어 데이터 값에 의해 표현되는 상기 서술 표시자들의 상이한 서브세트에 대응하는, 장치.
  15. 제14항에 있어서, 상기 술어 변환 명령어는 생성될 다수의 상기 하나 초과의 변환된 술어 데이터 값들을 특정하는, 장치.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서, 상기 술어 변환 명령어는 상기 변환 예정 술어 데이터 값에 의해 표현되는 상기 술어 비트들의 다수의 가능한 서브세트들 중 어느 것이 생성되어야 하는지 특정하는, 장치.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서, 상기 디코딩 회로부는 카운팅 예정(to-be-counted) 술어 데이터 값을 유지하는 소스 술어 레지스터를 특정하는 술어 카운팅 명령어에 응답하여 상기 프로세싱 회로부로 하여금 상기 변환 예정 술어 데이터 값을 디코딩하여 상기 변환 예정 술어 데이터 값에 의해 표시되는 서술 표시자들을 결정하고 목적지 범용 레지스터 내의 상기 서술 표시자들의 활성 요소들의 수에 대응하는 스칼라 값을 저장하게 하는 제어 신호들을 생성하는, 장치.
  18. 제17항에 있어서, 상기 술어 카운팅 명령어는 카운팅될 활성 요소들의 수의 상한을 특정하고, 상기 상한은:
    2개의 벡터 길이; 및
    4개의 벡터 길이 중 하나에 대응하는, 장치.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서, 상기 하나 이상의 소스 피연산자들은:
    하나의 소스 벡터 레지스터;
    2개의 소스 벡터 레지스터들; 또는
    3개의 소스 벡터 레지스터들을 포함하는, 장치.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서, 상기 하나 이상의 소스 피연산자들은:
    메모리 위치들의 범위를 포함하는, 장치.
  21. 제20항에 있어서, 메모리 위치들의 범위는 포인터들의 세트에 의해 표시되는, 장치.
  22. 제1항 내지 제21항 중 어느 한 항에 있어서, 상기 벡터 프로세싱 명령어는 목적지 벡터 레지스터를 추가로 특정하는, 장치.
  23. 제1항 내지 제22항 중 어느 한 항에 있어서, 상기 벡터 프로세싱 명령어는 목적지 메모리 위치를 추가로 특정하는, 장치.
  24. 데이터 처리 방법으로서,
    명령어들을 디코딩하는 단계; 및
    상기 명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 회로부를 제어하는 단계를 포함하고,
    상기 디코딩하는 단계는:
    벡터 프로세싱 동작;
    하나 이상의 소스 피연산자들; 및
    소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
    상기 프로세싱 회로부로 하여금 상기 소스 피연산자에 대해 상기 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하는 단계를 포함하고, 상기 제어 신호들은 추가로 상기 프로세싱 회로부로 하여금 상기 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 상기 하나 이상의 소스 피연산자들의 요소들에 상기 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
    상기 술어 데이터 값은:
    요소 크기; 및
    다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 상기 요소 크기에 대응하는, 방법.
  25. 명령어 실행 환경을 제공하는 호스트 프로세싱 장치를 제어하기 위한 컴퓨터 프로그램으로서,
    명령어들을 디코딩하기 위한 디코딩 로직; 및
    상기 명령어들에 의해 특정된 벡터 프로세싱 동작들을 입력 데이터 벡터들에 적용하기 위한 프로세싱 로직을 포함하고,
    상기 디코딩 로직은:
    벡터 프로세싱 동작;
    하나 이상의 소스 피연산자들; 및
    소스 술어 레지스터를 특정하는 벡터 프로세싱 명령어에 응답하여,
    상기 프로세싱 로직으로 하여금 소스 피연산자들에 대해 상기 벡터 프로세싱 동작을 수행하게 하는 제어 신호들을 생성하고, 상기 제어 신호들은 추가로 상기 프로세싱 회로부로 하여금 상기 소스 술어 레지스터로부터 검색된 술어 데이터 값으로부터 디코딩된 서술 표시자들에 의해 서술된 상기 하나 이상의 소스 피연산자들의 요소들에 상기 벡터 프로세싱 동작을 선택적으로 적용하게 하고,
    상기 술어 데이터 값은:
    요소 크기; 및
    다수의 연속적인 동일 서술 표시자들을 나타내는 요소 카운트를 포함하는 인코딩을 갖고, 각각의 서술 표시자는 상기 요소 크기에 대응하는, 컴퓨터 프로그램.
KR1020247005225A 2021-07-21 2022-06-22 서술 기법들 KR20240027144A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2110500.2 2021-07-21
GB2110500.2A GB2612010B (en) 2021-07-21 2021-07-21 Predication techniques
PCT/GB2022/051586 WO2023002147A1 (en) 2021-07-21 2022-06-22 Predication techniques

Publications (1)

Publication Number Publication Date
KR20240027144A true KR20240027144A (ko) 2024-02-29

Family

ID=77443517

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247005225A KR20240027144A (ko) 2021-07-21 2022-06-22 서술 기법들

Country Status (6)

Country Link
KR (1) KR20240027144A (ko)
CN (1) CN117795477A (ko)
GB (1) GB2612010B (ko)
IL (1) IL310119A (ko)
TW (1) TW202307653A (ko)
WO (1) WO2023002147A1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9400651B2 (en) * 2013-09-24 2016-07-26 Apple Inc. Early issue of null-predicated operations

Also Published As

Publication number Publication date
GB2612010A (en) 2023-04-26
CN117795477A (zh) 2024-03-29
WO2023002147A1 (en) 2023-01-26
GB202110500D0 (en) 2021-09-01
TW202307653A (zh) 2023-02-16
IL310119A (en) 2024-03-01
GB2612010B (en) 2023-11-08

Similar Documents

Publication Publication Date Title
CN109643233B (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
KR101599604B1 (ko) 제한 범위 벡터 메모리 액세스 인스트럭션들, 프로세서들, 방법들 및 시스템들
JP5646656B2 (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
EP3629158A2 (en) Systems and methods for performing instructions to transform matrices into row-interleaved format
JP6708334B2 (ja) モートン座標調整プロセッサ、方法、システム、及び命令
EP3588306A1 (en) Hardware-assisted paging mechanisms
JP4653236B2 (ja) ユーザ選択可能なストレージ・アクセス・キーを用いてデータを移動する方法及びシステム
CN110832455B (zh) 测试向量元素内部的位值
KR20200031150A (ko) 데이터 처리장치의 데이터 항목들 내의 성분들의 계수
JP6696674B2 (ja) 3次元モートン座標変換プロセッサ、方法、システム、及び命令
KR20230042498A (ko) 데이터 전송 명령어를 위한 레지스터 어드레싱 정보
KR20060028403A (ko) 데이터 액세스 프로그램 명령 인코딩
JP6818010B2 (ja) ベクトル長クエリ命令
US10564964B2 (en) Vector cross-compare count and sequence instructions
EP3655852B1 (en) Vector interleaving in a data processing apparatus
KR20240027144A (ko) 서술 기법들
US20240028337A1 (en) Masked-vector-comparison instruction
CN107851015B (zh) 向量操作数位大小控制
EP3757822B1 (en) Apparatuses, methods, and systems for enhanced matrix multiplier architecture
JP7335952B2 (ja) ベクトル述語要約の生成
EP3759592B1 (en) Data processing
US9880843B2 (en) Data processing apparatus and method for decoding program instructions in order to generate control signals for processing circuitry of the data processing apparatus
GB2617829A (en) Technique for handling data elements stored in an array storage
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
WO2023242531A1 (en) Technique for performing outer product operations