KR20210100076A - 벡터 술어 요약 생성 - Google Patents

벡터 술어 요약 생성 Download PDF

Info

Publication number
KR20210100076A
KR20210100076A KR1020217005764A KR20217005764A KR20210100076A KR 20210100076 A KR20210100076 A KR 20210100076A KR 1020217005764 A KR1020217005764 A KR 1020217005764A KR 20217005764 A KR20217005764 A KR 20217005764A KR 20210100076 A KR20210100076 A KR 20210100076A
Authority
KR
South Korea
Prior art keywords
predicate
vector
value
bit
true
Prior art date
Application number
KR1020217005764A
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 KR20210100076A publication Critical patent/KR20210100076A/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/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/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30094Condition code generation, e.g. Carry, Zero flag

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)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

장치 및 이러한 장치를 동작하는 방법이 개시된다. 벡터 처리 회로소자가 다중 병렬 처리 레인에서 데이터 처리를 수행하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행된다. 술어 감시 회로소자는 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성한다. 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 희소 조건은 참이다. 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다. 따라서, 개선된 술어 제어된 벡터 처리가 지원된다.

Description

벡터 술어 요약 생성
본 발명 기술은 데이터 처리의 분야에 관한 것이다.
다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 회로소자를 포함하는 데이터 처리 장치에 있어서, 데이터 처리가 다중 병렬 처리 레인의 서브세트에서만 선택적으로 수행되는 것으로 배열될 수 있다. 더욱이, 벡터 처리 회로소자의 이 연산을 통한 제어는 벡터 술어에 의해서 제공될 수 있는데, 이 벡터 술어는, 전형적으로, 다중 병렬 처리 레인의 수에 대응하는 비트 값의 수로서 제공되고, 그 비트 값은 특별한 처리 레인이 활성이 되어야 하는지를 표시하도록 설정될 수 있다. 따라서, 벡터 처리 회로소자는, 벡터 처리의 그 반복(iteration)과 관련해서 수신된 특별한 벡터 술어에 의존해서 자체의 데이터 처리 연산을 다르게 수행할 수 있는데, 그 반복을 제어하기 위해서 제공된 벡터 술어의 비트 값에 따라서 처리 레인을 활성화 및 비활성화한다.
적어도 일부 예는 장치를 제공하는데, 이 장치는: 다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 회로소자를 포함하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행되고; 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 회로소자를 포함하며, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
적어도 일부 예는 방법을 제공하는데, 이 방법은: 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하는 것과; 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 것을 포함하고, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
적어도 일부 예는 장치를 제공하는데, 이 장치는: 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하기 위한 수단과, 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하기 위한 수단을 포함하고, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
적어도 일부 예는, 명령 실행 환경을 제공하는 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램이 제공되는데, 이 컴퓨터 프로그램은: 다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 로직을 포함하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행되고; 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 로직을 포함하며, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 희소 조건은 참이며, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
본 발명 기술이, 예로서만, 첨부 도면에 도시된 그 실시예를 참조로 더 기술될 것이고, 다음의 설명과 함께 읽혀질 것이다:
도 1은, 하나의 예의 실시예에 있어서, 데이터 처리 장치의 일반적인 레이아웃을 개략적으로 도시한다;
도 2a는, 목적지 벡터를 생성하기 위해서 2개의 소스 상에서 수행되는 벡터 처리를 개략적으로 도시하는데, 여기서, 벡터 술어의 대응 비트 값이 설정되는 이들 레인만이 활성이다;
도 2b는 하나의 예의 실시예에 따라서 장치를 개략적으로 도시한다;
도 3a는, 하나의 예의 실시예에 있어서, 희소 조건을 나타내는 술어 요약 값을 생성하는 술어 감시 회로소자를 개략적으로 도시한다;
도 3b는, 희소 조건이 참일 때, 일례의 실시예에 있어서, 술어 요약 값의 생성을 나타낸다;
도 3c는, 희소 조건이 참이 아닐 때, 술어 요약 값의 생성을 나타낸다;
도 4a, 4b, 4c, 및 4d는, 2-비트 예의 실시예에 있어서, 4개의 다른 가능한 술어 요약 값으로 귀결하는 벡터 술어의 예들에 대한 술어 요약 값을 나타낸다;
도 5a는, 일례의 실시예에 있어서, 벡터 술어의 2개의 동일한 사이즈의 부분에 대한 제1 및 제2술어 요약 값을 생성하기 위해서 배열된 술어 감시 회로소자를 개략적으로 도시한다;
도 5b는, 일례의 실시예에 있어서, 사이즈가 다른 벡터 술어의 제1 및 제2부분에 대한 제1 및 제2술어 요약 값을 생성하기 위해서 배열된 술어 감시 회로소자를 개략적으로 도시한다;
도 6은, 하나의 예의 실시예에 있어서, 벡터 술어 내의 술어 요약 값 및 세트 비트의 카운트를 생성하기 위해서 배열된 술어 감시 회로소자를 개략적으로 도시한다;
도 7은, 하나의 예의 실시예에 있어서, 벡터 명령 요약을 생성하기 위해서 배열된 벡터 처리 회로소자와 관련된 벡터 처리 샘플링 회로소자를 개략적으로 도시한다;
도 8은, 하나의 예의 실시예의 방법에 따라서 취해진 단계의 시퀀스를 나타내는 흐름도이다;
도 9는, 하나의 예의 실시예의 방법에 따라서 취해진 단계의 시퀀스를 나타내는 흐름도이다;
도 10은, 예의 실시예에 있어서 시뮬레이터 구현을 개략적으로 도시한다.
본 개시의 하나의 예에 있어서, 장치는: 다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 회로소자를 포함하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행되고; 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 회로소자를 포함하며, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
장치의 벡터 처리 회로소자는, 벡터 술어의 비트 값에 의해서 제어된 다중 병렬 처리 레인에서 데이터 처리를 수행하도록 배열된다. 주어진 인덱스에서 벡터 엘리먼트에 대응하는 비트 값을 설정하는 것은 처리 레인이 데이터 처리에 대해서 활성이 되게 하는 반면, 특별한 벡터 엘리먼트에 대응하는 비트를 설정하지 않는 것은 그 처리 레인이 데이터 처리에 대해서 비활성이 되게 한다. 다른 벡터 술어가 실행된 각각의 벡터 처리 명령에 대해서 사용될 수 있다. 벡터 활용을 이해 및 개선하고자 할 때, 술어 벡터 명령과 관련되는 술어 정보를 캡처하는 것이 유용하다. 그런데, 전체 벡터 술어를 캡처하는 것은 비용이 많이 든다. 퍼퓰레이션 카운트(population count) 또는 3-웨이 인디케이터(없는/일부/모든 비트 세트를 나타내는)와 같은 접근은 제한들을 갖는다. 예를 들어, 본 발명자는, 퍼퓰레이션 또는 3-웨이 인디케이터가 인접하는 부분적인 술어(예를 들어, 프로그램 내의 짧은 루프에 기인한)와 희소 술어(예를 들어, 프로그램 내의 테스트에 기인한, 아마도 루프 내에서) 사이에서 구별할 수 없는 것을 인식했다. 부분적인 술어의 사용을 위한 이러한 다른 원인은 활용을 개선하는 액션의 다른 코스를 가리킬 수 있다. 그러므로, 이는, 벡터 술어의 세트 및 비-세트 비트와 관련되는 정보를 생성하는 이 방식에서의 벡터 술어에 의해서 벡터 처리 회로소자를 제어할 때 유용하다. 예를 들어, 벡터 술어 제어된 벡터 처리가 수행되는 방식에 관한 통계치를 모우기 위해서, 이 정보는 벡터 처리의 다수의 반복을 통해서 모을 수 있고, 그 각각은 다르게 설정된 벡터 술어를 가질 수 있다. 이 문맥에 있어서, 희소 조건이 벡터 술어에 대해서 참인지 또는 참이 아닌지를 표시하도록 술어 요약 값을 생성하는 것이 유용한 것을 발견했다. 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트-비트를 포함할 때, 희소 조건은 참이다. 반대로, 낮은 인덱스에서 비 세트 비트가 바로 뒤따르는 높은 인덱스에서 세트 비트의 이 조합이 참이 아닐 때, 희소 조건은 참이 아니다. 이는, 예를 들어, 벡터 술어의 모든 비트가 설정되기 때문에, 설정되는 벡터 술어의 비트가 없기 때문에, 또는 벡터 술어 내에서 이 특별한 비트 조합을 발견할 수 없기 때문에, 참이 될 수 있다.
일부 실시예에 있어서, 술어 요약 값의 제1값은, 술어 요약 값의 제1값이 벡터 술어의 비트 값의 엄격한 서브세트가 설정되는 것을 표시하는 것을 표시하고, 여기서, 세트 비트의 엄격한 서브세트는 벡터 술어의 최하위 비트를 포함하는 비-인접하는 시퀀스 내에 있지 않다. 따라서, 술어 요약 값의 제1값은 설정되는 벡터 술어의 비트 값의 엄격한 서브세트에 대응한다. 따라서, 본 개시에서 언급된 "엄격한 서브세트"는 이것이 설정되는 벡터 술어의 모든 비트 값들 미만에 대응하는 것을 의미하는 것으로 이해되어야 한다. 이는, 활성화되는 이들 레인을 기술하기 위해서 사용된 용어 "다중 병렬 처리 레인의 서브세트"의 사용과 비교되어야 하는데, 이는, 벡터 처리 회로소자의 모든 다중 병렬 처리 레인이 벡터 술어의 모든 비트 값이 설정될 때 활성화되는 것이 가능한 것을 의미한다. 더욱이, 술어 요약 값의 제1값은, 세트 비트의 엄격한 서브세트가 벡터 술어의 최하위 비트를 포함하는 연속적인 시퀀스가 아닌 것을 표시한다. 따라서, 세트비트의 엄격한 서브세트가 세트-비트의 인접하는 시퀀스이면, 이는, 생성되는 술어 값 요약의 제1값에 대한 벡터 술어의 최하위 비트를 포함하지 않을 수 있다.
반대로, 일부 실시예에 있어서, 술어 요약 값의 제2값은 벡터 술어의 비트 값의 엄격한 서브세트가 인접하는 시퀀스 내에 설정되는 것을 표시한다.
더욱이, 일부 실시예에 있어서, 술어 감시 회로소자는, 벡터 술어에 응답해서, 인접하는 시퀀스가 벡터 술어의 최하위 비트를 포함할 때 제2값을 갖는 술어 요약 값을 생성한다. 따라서, 벡터 술어의 비트 값의 엄격한 서브세트가 인접하는 시퀀스 내에 설정되고, 이 인접하는 시퀀스가 벡터 술어의 최하위 비트를 포함할 때, 술어 감시 회로소자는 술어 요약 값의 제2값을 생성한다.
다른 술어 요약 값이 또한 추가적으로 규정될 수 있고, 일부 실시예에 있어서, 술어 감시 회로소자는, 벡터 술어에 응답해서, 설정되는 벡터 술어의 비트 값이 없을 때 술어 요약 값의 제3값을 갖는 및 벡터 술어의 모든 비트 값이 설정될 때 제4값을 갖는 술어 요약 값을 생성한다.
이는, 이들 4개의 값이 관심의 유일한 술어 요약 값이고 이 출력이 2개의 비트 값에만 효과적으로 표현될 수 있는 경우가 될 수 있고, 따라서, 일부 예의 실시예에 있어서, 술어 감시 회로소자는 2-비트 값으로서 술어 요약 값을 생성하도록 배열된다.
일부 예의 실시예에 있어서, 술어 요약 값은 자기 유래(autologous)이다. 즉, 벡터 술어 자체 내에서 특별한 비트 패턴을 나타내도록 선택된 술어 요약 값의 특별한 비트 패턴은 벡터 술어의 이들 비트 패턴을 규정하는 동일한 규칙을 만족한다. 술어 요약 값의 이 속성은 다양한 애플리케이션을 발견할 수 있는데, 예를 들어, 적어도 하나의 또 다른 벡터 술어가 또 다른 술어 요약 값이 생성되도록 적어도 하나의 또 다른 벡터 술어와 조합되게 허용하며, 여기서, 또 다른 술어 요약 값은, 그러면, 적어도 하나의 또 다른 벡터 술어와 오리지널 술어 요약 값의 조합만 아니라, 실제로, 적어도 하나의 또 다른 벡터 술어와 오리지널 벡터 술어의 조합을 정확하게 나타낼 것이다. 다중 벡터 술어의 요약이 생성될 때 다양한 처리 효율은 이에 의해서 달성될 수 있다.
이 자기 유래 속성을 만족하는 술어 요약 값의 값들의 하나의 특별한 선택이 실시예들에서 발생하는데, 여기서, 술어 요약 값의 제3값은 00이고, 술어 요약 값의 제2값은 01이며, 술어 요약 값의 제1값은 10, 및, 술어 요약 값의 제4값은 11이다.
일부 실시예에 있어서, 술어 감시 회로소자는 벡터 술어를 적어도 2개의 부분으로 서브 분할하고, 각각에 대한 술어 요약 값을 생성할 수 있다. 따라서, 일부 실시예에 있어서, 술어 감시 회로소자는, 벡터 술어에 응답해서, 벡터 술어의 비트 값에 의존해서 제1술어 요약 값 및 적어도 하나의 또 다른 술어 요약 값을 생성하는데, 여기서, 제1술어 요약 값 및 적어도 하나의 또 다른 술어 요약 값은 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분에 대응한다.
일부 실시예에 있어서, 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분의 사이즈는 동일하다. 일부 실시예에 있어서, 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분의 사이즈는 다르다.
술어 요약 값을 생성하는 것에 추가해서, 술어 감시 회로소자는 벡터 술어와 관련되는 다른 정보를 생성할 수 있다. 예를 들어, 일부 실시예에 있어서, 술어 감시 회로소자는, 벡터 술어에 더 응답해서, 벡터 술어 내의 세트 비트의 카운트를 표시하는 술어 카운트 값을 생성한다.
술어 감시 회로소자는, 다양한 조건에 응답해서 술어 카운트 값을 리턴하도록 배열될 수 있지만, 일부 실시예에 있어서, 술어 감시 회로소자는 카운트 명령에 응답해서 벡터 술어 내의 세트 비트의 카운트를 표시하는 술어 카운트 값을 리턴한다.
따라서, 카운트 명령은, 술어 감시 회로소자가 술어 카운트 값을 리턴하게 하는 트리거가 될 수 있고, 일부 실시예에 있어서, 술어 감시 회로소자는 추가적으로 다른 정보를 리턴할 수 있다. 예를 들어, 술어 감시 회로소자는, 카운트 명령에 더 응답해서, 술어 요약 값을 리턴할 수 있다.
장치가 벡터 처리 회로소자를 포함하는 곳에서, 다양한 방법으로 벡터 처리 회로소자의 연산을 감시하는 것이 유용할 수 있다. 따라서, 일부 실시예에 있어서, 장치는, 벡터 처리 회로소자와 관련된 벡터 처리 샘플링 회로소자를 더 포함해서, 벡터 처리 회로소자에 의해서 실행된 벡터 명령에 대한 벡터 명령 요약을 생성하는데, 여기서, 벡터 처리 샘플링 회로소자는 술어 감시 회로소자를 포함한다.
벡터 명령 요약은 다양한 조건에 따라서 생성될 수 있지만, 일부 예의 실시예에 있어서, 벡터 처리 샘플링 회로소자는, 샘플 트리거 조건에 응답해서, 벡터 명령 요약을 생성한다.
제1값 및 제2값 중 적어도 하나를 갖는 술어 요약 값의 생성은 벡터 처리 회로소자의 연산을 감시하는데 있어서 특별한 관심을 가질 수 있고, 따라서, 일부 실시예에 있어서, 술어 감시 회로소자는 적어도 하나의 카운터를 더 포함해서 제1값 및 제2값 중 적어도 하나를 갖는 술어 요약 값의 생성의 발생을 카운트한다. 그러므로, 통계치는 적어도 하나의 카운터에 기반해서 모을 수 있다.
일부 이러한 실시예에 있어서, 술어 감시 회로소자는, 카운트 요약 트리거에 응답해서, 적어도 하나의 카운터의 적어도 하나의 값을 출력한다. 따라서, 카운트 요약 트리거는 적어도 하나의 카운터의 값에 액세스하기 위해서 및 이러한 통계치의 사용을 위해서 다양하게 규정될 수 있다.
본 개시의 하나의 예에 있어서, 방법은: 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하는 것과; 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 것을 포함하고, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
본 개시의 하나의 예에 있어서, 장치는: 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하기 위한 수단과, 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하기 위한 수단을 포함하고, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 희소 조건은 참이며, 여기서, 벡터 술어의 비트 값은 비-세트 덜-중요한 비트가 바로 뒤따르는 세트 더-중요한 비트를 포함하고, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
본 개시의 하나의 예에 있어서, 명령 실행 환경을 제공하도록 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램이 제공되는데, 이 컴퓨터 프로그램은: 다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 로직을 포함하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행되고; 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 로직을 포함하며, 여기서, 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 희소 조건은 참이며, 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다.
이제, 일부 특별한 실시예가 도면을 참조해서 기술된다.
도 1은 본 발명 기술의 다양한 예를 구현할 수 있는 데이터 처리 장치(10)를 개략적으로 도시한다. 본 장치는, 이것이 실행하는 명령의 시퀀스에 응답해서 데이터 아이템 상에서 데이터 처리 연산을 수행하는 처리 회로소자(12)를 포함한다. 이들 명령은, 데이터 처리 장치가 액세스한 메모리(14)로부터 검색되는데, 본 기술 분야의 당업자가 친숙한 방식으로, 페치 회로소자(16)가 이 목적을 위해서 제공된다. 더욱이, 페치 회로소자(16)에 의해서 검색된 명령은, 처리 회로소자(12)의 구성 및 동작의 다양한 측면만 아니라 레지스터(20)의 세트 및 로드/저장 유닛(22)을 제어하도록 배열된 명령 디코더 회로소자(18)로 전달된다. 일반적으로, 데이터 처리 회로소자(12)는 파이프라인된 양식으로 배열될 수 있는데, 그 특정 사항은 본 발명 기술과 관련 없다. 본 기술 분야의 당업자는, 도 1이 나타내는 일반적인 구성에 익숙하게 될 것이고, 더 상세한 설명은 간결성을 위해 여기서 생략된다. 도 1에서 볼 수 있는 바와 같은 레지스터(20)는, 각각이 다중 데이터 엘리먼트에 대한 스토리지를 포함하여, 처리 회로소자가 특정된 레지스터 내에서 특정된 데이터에 데이터 처리 연산을 적용할 수 있도록 하거나, 또는 특정된 레지스터 내에서 데이터 엘리먼트("벡터")의 특정된 그룹에 데이터 처리 연산을 적용할 수 있도록 한다. 특히, 도시된 데이터 처리 장치는 벡터화된 데이터 처리 연산의 성능과 관련되고, 특히, 레지스터(20) 내에 유지된 데이터 엘리먼트에 대한 벡터 명령의 실행과 관련되며, 그 실행은 활성인 어떤 벡터 처리 레인을 제어하는 벡터 술어에 의존하고, 그 추가 설명은 일부 특정 실시예를 참조해서 이하 더 상세히 뒤따를 것이다. 명령의 실행에서 데이터 처리 회로소자(12)에 의해서 요구된 데이터 값 및, 이들 데이터 처리 명령의 결과로서 생성된 데이터 값은, 로드/저장 유닛(22)에 의해서 메모리(14)에 기입 및 이로부터 판독된다. 또한, 일반적으로, 도 1에서의 메모리(14)는, 본 발명 기술의 명령이, 전형적으로, 명령("프로그램")의 사전 규정된 시퀀스의 부분으로서 저장될 수 있는 일례의 컴퓨터-판독 가능한 스토리지 매체로서 볼 수 있고, 이는, 그러면, 처리 회로소자가 실행하는 것에 유의하자. 그런데, 처리 회로소자는, 네트워크 인터페이스를 통해서, RAM에서, ROM에서와 같이, 다양한 다른 소스로부터의 이러한 프로그램에 액세스할 수 있는 등으로 된다.
도 2a는, 예를 들어, 도 1에 나타낸 장치(10)의 처리 회로소자(12) 내에 존재할 수 있는 벡터 처리 회로소자를 개략적으로 도시한다. 2개의 소스 벡터 레지스터 A 및 B를 나타내는데, 이로부터 엘리먼트들이 취해지고 특정 연산 "OP"에 대한 입력을 형성하며, 그 결과는 목적지 벡터 레지스터의 대응 엘리먼트 내에 기입된다. 특히, 벡터 술어를 또한 나타내고, 이 벡터 술어 내의 비트의 설정은 어떤 "레인", 즉, 소스 및 목적지 레지스터의 각각의 엘리먼트가 벡터 처리에 포함되는 것을 제어하는 것에 유의해야 한다. 나타낸 예에 있어서, 3개의 비트는 8-비트 벡터 술어에서 설정되고, 그러므로, 3개의 대응 연산이 목적지 벡터 레지스터의 각각의 엘리먼트에 대한 3개의 결과를 생성하는 소스 벡터 레지스터 A 및 B로부터 취해진 3개의 대응 쌍의 엘리먼트에 대해서 수행된다. 도 2a의 예에 있어서, 8-엘리먼트 벡터 레지스터 및 8-비트 벡터 술어가 보이지만, 본 발명 기술은 벡터 레지스터 또는 벡터 술어의 특별한 사이즈에 제한되지 않는 것에 더 유의해야 한다.
도 2b는, 하나의 예의 실시예에 따라서, 장치(50)를 개략적으로 도시한다. 장치(50)는 벡터 처리 회로소자(51)를 포함하는데, 이는, 다중 병렬 처리 레인에서 데이터 처리를 수행하도록 배열되고(예를 들어, 도 2a에 도시된 바와 같이), 이 목적을 위해서 레지스터(52) 내의 벡터 레지스터에 액세스한다. 따라서, 소스 벡터 레지스터는 레지스터(52) 내에 액세스되어, 데이터 처리 연산의 입력을 형성하고, 이들 연산의 결과로서 생성된 결과 값은 레지스터(52)의 목적지 벡터 레지스터 내에 기입된다. 벡터 술어(53)를 또한 나타내는데, 레지스터(52)로부터 검색되고 벡터 처리 회로소자(51)로 전달된다. 도시의 이 선택이 벡터 술어(53)의 사용을 강조하고, 벡터 술어가 벡터 처리 회로소자(51) 및 레지스터(52) 외측에 분리해서 저장될 필요는 없는 것에 유의해야 한다. 그런데, 이 도시는 술어(53)의 본성, 벡터 처리 회로소자(51)에 대한 그 영향, 및 이 값이 또한 술어 감시 회로소자(54)에 의해서 수신되는 사실의 이해를 용이하게 한다. 술어 감시 회로소자(54)는 벡터 술어(53)를 수신하고, 벡터 술어 내의 비트의 설정에 의존해서 술어 요약 값(55)을 생성하도록 배열된다. 술어 요약 값(55)이 벡터 술어(53)에 의존하는 특별한 방식은 변화할 수 있고, 따라서 처리는 술어 감시 회로소자(54)에 의해서 수행된다. 이의 다른 예들은 다음 도면을 참조로 이하 기술된다.
도 3a는 술어 감시 회로소자(60)의 구성의 일례를 개략적으로 도시한다. 이 회로소자에 대한 입력은 벡터 술어의 각각의 엘리먼트에 의해서 제공되는데, 이 예에서는 4개의 엘리먼트만을 도시의 명확성을 위해서 나타낸다. 술어 감시 회로소자(60)는 3개의 NOT 게이트(61, 62, 63)의 세트 및 AND 게이트(64, 65, 66)의 세트를 포함한다. 최종 OR 게이트(67)은 3개의 AND 게이트로부터의 출력을 조합한다. 출력은, 이 예에 있어서 "희소 조건" 인디케이터에 직접 대응하는 술어 요약 값의 일례이다. 도 3a의 게이트 구조의 예는, 참이 되는 희소 조건에 대해서, 높은 인덱스에서 벡터 엘리먼트에 대응하는 비트(도 3a에서 더 좌측)가 설정되어야 하고 설정되지 않은 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비트가 (도 3a에서 우측으로 읽어서) 바로 뒤따르도록 벡터 술어의 비트 값이 되어야 하는 것을 나타낸다. 대안적으로, "더 중요한"으로서 벡터 술어의 더 좌측 비트를 및 "덜 중요한"으로서 벡터 술어의 더 우측 비트를 놓고 보면, 희소 조건은, 벡터 술어의 비트 값이 비-세트 덜 중요한 비트가 바로 뒤따르는 세트 더 중요한 비트를 포함(하고 OR 게이트(67)로부터의 출력이 1)인 것을 요구한다. 비트의 이 배열이 충족되지 않으면, 희소 조건은 참이 아니고 (OR 게이트(67)로부터의 회로소자의 출력은 0이다). 도 3b는, 희소 조건이 참인 벡터 술어 내의 비트의 일례의 설정을 도시하는 한편, 도 3c는 희소 조건이 참이 아닌 벡터 술어 내의 비트의 일례의 설정을 나타낸다.
도 4a-4d는 2-비트 출력 구성에 따른 술어 요약 생성 회로소자의 또 다른 예의 구성(술어 감시 회로소자의 부분으로서)을 도시하는데, 여기서, 출력의 각각의 4개의 가능한 비트 패턴은 벡터 술어의 세트 비트의 다른 식별된 상태를 나타낸다. 도 4a는, 벡터 술어의 모두가 아닌 일부 비트가 설정되고, 더욱이 이들이 낮은 (우측) 단부로부터 인접하는 일례를 나타낸다. 도 4b는, 일부(모두가 아닌) 비트가 설정되는 일례를 나타내는데, 이들 비트는 (낮은 (우측)으로부터 인접하지 않은) 희소 단부를 나타낸다. 도 4c는 비트가 설정되지 않은 일례를 나타낸다. 도 4d는 모든 비트가 설정되는 일례를 나타낸다. 추가적으로, 사용된 특별한 2-비트 패턴(인코딩)이 자기 유래적인 속성을 추가적으로 갖는, 즉, 술어 요약 값들이 이들이 표시하는 동일한 속성을 갖는 것을 도 4a 내지 4d를 참조해서 더 유의해야 한다. 즉, 도 4a의 예에 있어서, 출력 "01"은, 이에 따라서 출력이 생성되었던, 즉, 모두가 아닌 일부 비트가 설정되는 및 세트 비트가 낮은 단부로부터 인접하는 규정을 만족한다. 도 4b에 있어서, 출력 "10"은, 일부 비트가 설정되지만 희소하게 (낮은 단부로부터 인접하지 않은) 규정을 만족한다. "00"의 도 4c에서의 출력은 설정되는 비트가 없는 규정을 만족한다. "11"의 도 4d에서의 출력은 모든 비트가 설정되는 규정을 만족한다. 인코딩의 이 속성은, 술어 요약 값이 벡터 술어, 벡터 술어의 부분 또는 술어 요약 값의 소정의 연쇄(concatenation)에 동일한 술어 요약 값 생성 규칙을 적용함으로써 생성될 수 있는 추가적인 장점을 갖는다.
예를 들어, 벡터 술어:
0001111100110011은 "10"의 술어 요약 값을 갖는다(이것이 희소하므로).
그런데, 또한, 이 벡터 술어는 2개의 부분으로 나타낼 수 있는데:
00011111, 이는, "01"의 술어 요약 값을 갖고(일부 비트가 설정되므로, 낮은 단부로부터 인접하게);
00110011, 이는, "10"의 술어 요약 값을 갖는다(일부 비트가 설정되지만, 희소하다).
연쇄된, 이들 2개의 술어 요약 값은 "0101"을 제공하는데, 그 자체는 희소하고, "10"의 술어 요약 값을 생성한다.
도 5a는 벡터 술어의 입력이 2개의 부분으로 분할되고, 이들 각각에 대해서 술어 요약 값이 각각의 요약 생성 회로소자(81 및 82)에 의해서 생성되는, 술어 감시 회로소자(80)를 개략적으로 도시한다. 도 5b는, 입력 벡터 술어가 부분들로 분할되고, 이들 각각에 대해서 술어 요약 값이 생성되는 유사한 배열을 개략적으로 도시하지만, 도 5b의 술어 감시 회로소자(90)는 도 5a의 술어 감시 회로소자(80)와 다른 반면, 도 5a 내의 술어 감시 회로소자(80)에 대한 입력 벡터 술어는 벡터 술어를 2개의 동일한 사이즈의 부분(각각은 나타낸 예의 8-엘리먼트 벡터의 4개의 엘리먼트이다)으로 분할하고, 도 5b의 술어 감시 회로소자(90)는 벡터 술어를 2개의 다른 사이즈의 부분(나타낸 예의 6-엘리먼트 부분 및 2-엘리먼트 부분)으로 분할한다. 도 5a 및 도 5b와 더 관련해서, 각각의 예의 술어 감시 회로소자 내의 양쪽 요약 생성 회로소자 인스턴스는 활성화될 필요가 없고, 따라서 술어 요약 값은 벡터 술어 단독의 서브-부분에 대해서 생성될 수 있는 것에 유의해야 한다.
도 6은, 하나의 예의 실시예에 따라서, 장치(100)를 개략적으로 도시한다. 여기서, 술어 감시 회로소자(102)는 술어 요약 값 생성 회로소자(104)만 아니라 카운트 생성 회로소자(106)를 포함한다. 요약 생성 회로소자(104)는 술어 요약 값(108)을 생성하도록 배열되는 반면(상기된 바와 같이), 카운트 생성 회로소자(106)는 벡터 술어 내에 설정되는 비트의 수의 카운트를 표시하는 술어 카운트 값(110)을 생성하도록 배열된다. 카운트 생성 회로소자(106)의 연산은 옵션이 될 수 있고, 이러한 일례에 있어서, 예를 들어, 도 1의 예에서 페칭 유닛(16)에 의해서 메모리(14)로부터 페치된 명령 중 하나로서 장치에 의해서 수신된 카운트 명령에 의해서 트리거될 수 있다. 이 카운트 명령 트리거는, 또한, 술어 감시 회로소자의 출력이 무엇일지를 결정하는 술어 감시 출력 제어(112)에 의해서 수신될 수 있다. 따라서, 술어 감시 출력 제어(112)는 요약 생성 회로소자(104) 및 카운트 생성 회로소자(106) 양쪽의 출력, 즉, 술어 요약 값(108) 및 술어 카운트 값(110) 각각을 수신한다. 예를 들어, 그러므로, 카운트 생성 회로소자가 활성이 아닐 때, 술어 감시 출력 제어는 술어 요약 값이 출력으로서 제공되게 할 수 있는 반면, 카운트 명령 트리거에 응답해서, 술어 감시 출력 제어 회로소자(112)는, 추가적으로, 술어 카운트 값을 출력의 부분으로서 제공할 수 있다.
도 7은 하나의 예의 실시예에 있어서 장치(120)를 개략적으로 도시한다. 벡터 처리 회로소자(121)는 제공된 벡터 처리 샘플링 회로소자(122)와 관련되는데, 이는, 벡터 처리 회로소자의 연산을 감시하고 벡터 처리 회로소자의 연산의 이해를 허용하는 벡터 명령 요약(127)을 제공하도록 배열된다. 특히, 벡터 처리 샘플링 회로소자는 술어 감시 회로소자(123)를 포함하는데, 이는, 소정의 상기된 예에 따라서 구성될 수 있다. 벡터 처리 회로소자(112)의 연산에서 사용된 벡터 술어와 관련되는 술어 정보를 캡처하는 것은 벡터 활용의 이해를 돕는데 유용하다. 그런데, 수행된 각각의 벡터 연산에 대한 전체 술어를 캡처하는 것은 비용이 많이 들고, 이 이유로, 술어 감시 회로소자(123)는 벡터 명령 요약의 일부 또는 모두를 형성하는 술어 요약 값을 생성하도록 배열된다.
술어 감시 회로소자는, 특별한 술어 요약 값의 생성의 발생들을 카운트하도록 구성되는 카운터(124)를 더 포함한다. 이 예에 있어서, 카운터(124)는, 도 4a-4d에 대해서 기술된 2-비트 구성에 따라서 술어 요약 값의 생성의 발생들을 카운트하는 2개의 카운터로서 제공된다. 특히, 모두가 아닌 일부 비트가 설정되고 이들이 낮은 단부로부터 인접할 때, 출력 값 "01"을 갖는 술어 값의 생성의 발생을 카운트하고, 일부 비트가 설정되지만 이들이 희소한(낮은 단부로부터 인접하지 않은) 값 "10"을 갖는 술어 요약 값의 생성의 발생들을 카운트하는 2개의 카운터가 제공된다. 이는, 짧은 루프에 기인한 인접하는 부분적인 술어와 루프 내의 테스트에 기인한 희소 술어 사이의 구별을 가능하게 한다. 이 정보를 캡처하는 것은 벡터 술어의 사용의 다른 원인을 발생시키고, 활용을 개선하는 다른 코스의 액션을 가리킬 수 있다. 벡터 처리 샘플링(122)은 시스템 요건에 의존해서 다양하게 규정될 수 있는 샘플링 트리거 조건(125)에 응답할 수 있다. 그런데, 도시된 예에 있어서, 샘플링 트리거 조건은 적어도 하나의 카운터(124)가 임계치 값에 도달할 때 만족된다. 이에 응답해서, 카운터(124)는 카운트 요약(126)을 생성하는데, 이는, 그러면, 출력을 형성하는 벡터 명령 요약(127)의 부분을 형성할 수 있다. 이 출력은 장치(120) 내에서 사용되거나 또는 분석, 스토리지, 및/또는 응답해서 취해진 액션을 위해서 시스템의 또 다른 부분으로 전달될 수 있다.
도 8은 하나의 예의 실시예의 방법에 따라서 취해진 단계의 시퀀스를 나타낸다. 흐름은, 단계 150에서 시작하는 것으로 고려될 수 있는데, 여기서, 실행할 벡터 처리 명령이 있는지가 결정된다. 도시된 방법은 이러한 벡터 처리에만 관련되지만, 이것이 참이 아니면, 그 흐름은 단계 150에서 자체적으로 루핑한다. 그런데, 이것이 참일 때, 흐름은 단계 151로 진행하고, 여기서, 벡터 술어가 비-세트 덜 중요한 비트가 바로 뒤따르는 세트 더 중요한 비트를 갖는지가 결정된다. 즉, 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트-비트를 포함하는지가 결정된다. 이것이 참이면, 술어 요약 값이 단계 152에서 제1값으로 생성되는 반면, 이것이 참이 아니면, 술어 요약 값이 단계 153에서 제2값으로 생성된다. 제1 및 제2값은, 예를 들어, 상기 제공된 예들 중 하나에 따라서 "10" 및 "01"이 될 수 있다. 그런데, 이 특별한 인코딩은 필수적이지 않다. 최종적으로, 단계 154에서, 명령에 의해서 규정된 벡터 데이터 처리는 벡터 술어 내에 세트 비트를 갖는 이들 레인에서 수행된다. 그 다음, 흐름은 단계 150으로 리턴된다.
도 9는 하나의 예의 실시예에 따라서 취해진 단계의 시퀀스를 나타내는 흐름도이다. 흐름은, 단계 160에서 시작하는 것으로 고려될 수 있는데, 여기서, 실행할 벡터 처리 명령이 있는지가 결정된다. 이것이 참인 동안 흐름은 단계 160에서 자체적으로 루핑한다. 그런데, 그 경우일 때, 흐름은 단계 161로 진행하고, 여기서,벡터 술어가 비트 세트를 갖지 않는지가 결정된다. 이것이 참이면, 단계 162에서 술어 요약 값은 "00"으로서 생성된다. 그렇지 않으면, 흐름은 단계 163으로 진행하고, 여기서, 벡터 술어가 모든 비트 세트를 갖는지가 결정된다. 이것이 참이면, 단계 164에서 술어 요약 값은 "11"로서 출력된다. 그렇지 않으면, 단계 165에서, 벡터 술어가 모두가 아닌 일부 비트 세트를 갖는지가 결정되는데, 이들은 낮은 인덱스 단부(즉, 벡터 술어의 최하위 비트 단부)로부터 인접한다. 이것이 참이면, 단계 166에서 술어 요약 값은 "01"로서 생성된다. 그렇지 않으면, 단계 167에서, 술어 요약 값은 일부 비트가 설정되지만 이들이 희소인, 즉, 낮은 단부로부터 인접하지 않은 것을 표시하는 "10"으로서 생성된다. 어느 라우트(route)를 통해서, 술어 요약 값이 설정되면, 흐름은 단계 168로 이어지는데, 여기서, 벡터 데이터 처리는 술어 내에 세트 비트를 갖는 이들 레인에서 수행되는 벡터 처리 명령에 의해서 규정됨에 따라서 수행된다. 그 다음, 흐름은 단계 160으로 리턴한다.
도 10은 사용될 수 있는 시뮬레이터 구현을 도시한다. 초기에 기술된 실시예가 관련된 기술을 지원하는 특정 처리 하드웨어를 동작하기 위한 장치 및 방법의 면에서 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해서 구현되는 본 개시에 기술된 실시예에 따른 명령 실행 환경을 제공하는 것이 또한 가능하다. 이러한 컴퓨터 프로그램은, 이들이 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공함에 따라서 시뮬레이터로 흔히 언급된다. 다양한 시뮬레이터 컴퓨터 프로그램은, 에뮬레이터, 가상 머신, 모델, 및 동적 2진 변환기를 포함하는 2진 변환기를 포함한다. 전형적으로, 시뮬레이터 구현은 호스트 프로세서(230) 상에서 구동할 수 있고, 옵션으로, 시뮬레이터 프로그램(210)을 지원하는 호스트 오퍼레이팅 시스템(220)을 구동한다. 일부 배열에 있어서, 하드웨어와 제공된 명령 실행 환경 사이의 시뮬레이션의 다중 계층이 있을 수 있고, 및/또는 동일한 호스트 프로세서 상에서 제공된 다중 개별 명령 실행 환경이 있을 수 있다. 역사적으로, 강력한 프로세서가 합리적인 속도로 실행하는 시뮬레이터 구현을 제공하기 위해서 요구되었지만, 호환성 또는 재사용 이유를 위해서 또 다른 프로세서에서 고유한 코드를 구동하려는 희망이 있을 때와 같이, 소정의 환경에서, 이러한 접근은 정당화될 수 있다. 예를 들어, 시뮬레이터 구현은 호스트 프로세서 하드웨어에 의해서 지원되지 않는 추가적인 기능성을 갖는 명령 실행 환경을 제공하거나, 전형적으로 다른 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공할 수 있다. 시뮬레이션의 개관은 "일부 효과적인 아키텍처 시뮬레이션 기술", Robert Bedichek, 겨울 1990 USENIX 컨퍼런스, 페이지 53- 63에서 제공된다.
실시예가 특정 하드웨어 구성 또는 형태를 참조해서 이전에 기술된 범위까지, 시뮬레이션된 실시예에서, 동등한 기능성이 적절한 소프트웨어 구성 또는 형태에 의해서 제공될 수 있다. 예를 들어, 특별한 회로소자는 컴퓨터 프로그램 로직으로서 시뮬레이션된 실시예로 구현될 수 있다. 유사하게, 레지스터 또는 캐시와 같은 메모리 하드웨어는, 소프트웨어 데이터 구조로서 시뮬레이션된 실시예로 구현될 수 있다. 이전에 기술된 실시예에서 참조된 하나 이상의 하드웨어 엘리먼트가 호스트 하드웨어(예를 들어, 호스트 프로세서(230)) 상에 존재하는 배열에 있어서, 일부 시뮬레이션된 실시예는, 적합한 경우, 호스트 하드웨어를 사용할 수 있다.
시뮬레이터 프로그램(210)은 컴퓨터-판독 가능한 스토리지 매체(이는, 비일시적인 매체일 수 있다) 상에 저장될 수 있고, 시뮬레이터 프로그램(210)에 의해서 모델화되는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 동일한 타깃 코드(200)(이는, 애플리케이션, 오퍼레이팅 시스템 및 하이퍼바이저를 포함할 수 있다)에 프로그램 인터페이스(명령 실행 환경)를 제공할 수 있다. 따라서, 타깃 코드(200)의 프로그램 명령은, 상기된 시뮬레이터 프로그램(210)을 사용해서 명령 실행 환경 내에서부터 실행될 수 있으므로, 상기된 장치 예의 하드웨어 형태를 실제로 갖지 않는 호스트 컴퓨터(230)가 이들 형태를 에뮬레이트할 수 있다.
요약하면, 장치 및 이러한 장치를 동작하는 방법이 기술된다. 벡터 처리 회로소자가 다중 병렬 처리 레인에서 데이터 처리를 수행하고, 여기서, 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 수행된다. 술어 감시 회로소자는 벡터 술어에 응답해서 벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성한다. 술어 요약 값의 제1값은 희소 조건이 벡터 술어에 대해서 참인 것을 표시하고, 벡터 술어의 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 희소 조건은 참이다. 술어 요약 값의 제2값은 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시한다. 따라서, 개선된 술어 제어된 벡터 처리가 지원된다.
본 출원에서, 단어 "...하도록 구성된"은 장치의 엘리먼트가 규정된 동작을 수행할 수 있게 하는 구성을 갖는 것을 의미하도록 사용된다. 이 콘텍스트에 있어서, "구성"은 하드웨어 또는 소프트웨어의 상호 접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 규정된 동작을 제공하는 전용의 하드웨어를 가질 수 있거나, 또는 프로세서 또는 다른 처리 디바이스가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은 규정된 연산을 제공하기 위해 소정의 방법으로 장치 엘리먼트가 변경될 필요가 있는 것을 의미하지는 않는다.
예시적인 실시예가 첨부 도면을 참조해서 본 명세서에서 상세하게 설명되었지만, 본 발명은, 첨부된 청구 범위에 의해 정의된 바와 같은 본 발명의 범위를 벗어남이 없이, 이러한 정확한 실시예로 제한되지 않으며, 본 기술 분야의 당업자에게는 다양한 변경, 추가 및 수정이 이루어질 수 있음을 이해해야 한다. 예를 들어, 종속항의 특징의 다양한 조합은 본 발명의 범위를 벗어나지 않고 독립항의 특징과 함께 만들어질 수 있다.

Claims (21)

  1. 장치로서:
    다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 회로소자를 포함하고, 여기서, 상기 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 상기 다중 병렬 처리 레인의 서브세트에서 수행되고;
    상기 벡터 술어에 응답해서 상기 벡터 술어의 상기 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 회로소자를 더 포함하며,
    여기서, 상기 술어 요약 값의 제1값은 희소 조건이 상기 벡터 술어에 대해서 참인 것을 표시하고, 상기 벡터 술어의 상기 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 상기 희소 조건은 참이며,
    상기 술어 요약 값의 제2값은 상기 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시하는, 장치.
  2. 제1항에 있어서,
    상기 술어 요약 값의 제1값은 벡터 술어의 비트 값의 엄격한 서브세트가 설정되는 것을 표시하고, 여기서, 세트 비트의 상기 엄격한 서브세트는 상기 벡터 술어의 최하위 비트를 포함하는 인접하는 시퀀스가 아닌, 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 술어 요약 값의 제2값은 상기 벡터 술어의 상기 비트 값의 엄격한 서브세트가 인접하는 시퀀스 내에 설정되는 것을 표시하는, 장치.
  4. 제3항에 있어서,
    상기 술어 감시 회로소자는, 상기 벡터 술어에 응답해서, 상기 인접하는 시퀀스가 상기 벡터 술어의 최하위 비트를 포함할 때 제2값을 갖는 상기 술어 요약 값을 생성하는, 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 술어 감시 회로소자는, 상기 벡터 술어에 응답해서, 설정되는 상기 벡터 술어의 상기 비트 값이 없을 때 상기 술어 요약 값의 제3값을 갖고, 또 상기 벡터 술어의 모든 비트 값이 설정될 때 제4값을 갖는, 상기 술어 요약 값을 생성하는, 장치.
  6. 제5항에 있어서,
    상기 술어 감시 회로소자는 2-비트 값으로서 상기 술어 요약 값을 생성하도록 배열되는, 장치.
  7. 제6항에 있어서,
    상기 술어 요약 값은 자기 유래인, 장치.
  8. 제6항 또는 제7항에 있어서,
    상기 술어 요약 값의 상기 제3값은 00이고, 상기 술어 요약 값의 상기 제2값은 01이며, 상기 술어 요약 값의 상기 제1값은 10이고, 상기 술어 요약 값의 상기 제4값은 11인, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 술어 감시 회로소자는, 상기 벡터 술어에 응답해서, 상기 벡터 술어의 상기 비트 값에 의존해서 제1술어 요약 값 및 적어도 하나의 또 다른 술어 요약 값을 생성하고, 여기서, 상기 제1술어 요약 값 및 적어도 하나의 또 다른 술어 요약 값은 상기 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분에 대응하는, 장치.
  10. 제9항에 있어서,
    상기 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분의 사이즈는 동일한, 장치.
  11. 제9항에 있어서,
    상기 벡터 술어의 제1부분 및 적어도 하나의 또 다른 부분의 사이즈는 다른, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 술어 감시 회로소자는, 상기 벡터 술어에 더 응답해서, 상기 벡터 술어 내의 세트 비트의 카운트를 표시하는 술어 카운트 값을 생성하는, 장치.
  13. 제12항에 있어서,
    상기 술어 감시 회로소자는, 카운트 명령에 응답해서, 상기 벡터 술어 내의 세트 비트의 카운트를 표시하는 술어 카운트 값을 리턴하는, 장치.
  14. 제13항에 있어서,
    상기 술어 감시 회로소자는, 상기 카운트 명령에 더 응답해서, 상기 술어 요약 값을 리턴하는, 장치.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 벡터 처리 회로소자와 관련된 벡터 처리 샘플링 회로소자를 포함해서, 상기 벡터 처리 회로소자에 의해서 실행된 벡터 명령에 대한 벡터 명령 요약을 생성하고, 여기서, 상기 벡터 처리 샘플링 회로소자는 상기 술어 감시 회로소자를 포함하는, 장치.
  16. 제15항에 있어서,
    상기 벡터 처리 샘플링 회로소자는, 샘플 트리거 조건에 응답해서, 상기 벡터 명령 요약을 생성하는, 장치.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 술어 감시 회로소자는 상기 제1값 및 상기 제2값 중 적어도 하나로 상기 술어 요약 값의 생성의 발생들을 카운트하는 적어도 하나의 카운트를 더 포함하는, 장치.
  18. 제17항에 있어서,
    상기 술어 감시 회로소자는, 카운트 요약 트리거에 응답해서, 상기 적어도 하나의 카운터의 적어도 하나의 값을 출력하는, 장치.
  19. 방법으로서:
    설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하고;
    벡터 술어의 비트 값에 의존해서 술어 요약 값을 생성하며,
    여기서, 상기 술어 요약 값의 제1값은 희소 조건이 상기 벡터 술어에 대해서 참인 것을 표시하고, 상기 벡터 술어의 상기 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 상기 희소 조건은 참이며,
    상기 술어 요약 값의 제2값은 상기 희소 조건이 벡터 술어에 대해서 참이 아닌 것을 표시하는, 방법.
  20. 장치로서:
    설정되는 벡터 술어의 비트 값에 의해서 결정된 다중 병렬 처리 레인의 서브세트에서 벡터 데이터 처리를 수행하는 수단과;
    상기 벡터 술어의 상기 비트 값에 의존해서 술어 요약 값을 생성하는 수단을 포함하고,
    여기서, 상기 술어 요약 값의 제1값은 희소 조건이 상기 벡터 술어에 대해서 참인 것을 표시하고, 상기 벡터 술어의 상기 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 상기 희소 조건은 참이며,
    상기 술어 요약 값의 제2값은 상기 희소 조건이 상기 벡터 술어에 대해서 참이 아닌 것을 표시하는, 장치.
  21. 명령 실행 환경을 제공하도록 호스트 데이터 처리 장치를 제어하기 위한 컴퓨터 프로그램으로서:
    다중 병렬 처리 레인에서 데이터 처리를 수행하는 벡터 처리 로직을 포함하고, 여기서, 상기 데이터 처리는 설정되는 벡터 술어의 비트 값에 의해서 결정된 상기 다중 병렬 처리 레인의 서브세트에서 수행되고;
    상기 벡터 술어에 응답해서, 상기 벡터 술어의 상기 비트 값에 의존해서 술어 요약 값을 생성하는 술어 감시 로직을 포함하며,
    여기서, 상기 술어 요약 값의 제1값은 희소 조건이 상기 벡터 술어에 대해서 참인 것을 표시하고, 상기 벡터 술어의 상기 비트 값이 낮은 인덱스에서 벡터 엘리먼트에 대응하는 비-세트 비트가 바로 뒤따르는 높은 인덱스에서 벡터 엘리먼트에 대응하는 세트 비트를 포함할 때 상기 희소 조건은 참이며,
    상기 술어 요약 값의 제2값은 상기 희소 조건이 상기 벡터 술어에 대해서 참이 아닌 것을 표시하는, 컴퓨터 프로그램.
KR1020217005764A 2018-12-20 2019-10-17 벡터 술어 요약 생성 KR20210100076A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1820841.3 2018-12-20
GB1820841.3A GB2580068B (en) 2018-12-20 2018-12-20 Generating a vector predicate summary
PCT/GB2019/052969 WO2020128414A1 (en) 2018-12-20 2019-10-17 Generating a vector predicate summary

Publications (1)

Publication Number Publication Date
KR20210100076A true KR20210100076A (ko) 2021-08-13

Family

ID=65364352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217005764A KR20210100076A (ko) 2018-12-20 2019-10-17 벡터 술어 요약 생성

Country Status (6)

Country Link
US (1) US11550574B2 (ko)
JP (1) JP7335952B2 (ko)
KR (1) KR20210100076A (ko)
CN (1) CN112602059A (ko)
GB (1) GB2580068B (ko)
WO (1) WO2020128414A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2613178B (en) * 2021-11-25 2024-01-10 Advanced Risc Mach Ltd Techniques for controlling vector processing operations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008259094A (ja) * 2007-04-09 2008-10-23 Matsushita Electric Ind Co Ltd 無線lan電話通信方法及びシステム
GB2470782B (en) 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US9280342B2 (en) * 2011-07-20 2016-03-08 Oracle International Corporation Vector operations for compressing selected vector elements
US9569211B2 (en) * 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9378182B2 (en) * 2012-09-28 2016-06-28 Intel Corporation Vector move instruction controlled by read and write masks
US9606961B2 (en) 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9557995B2 (en) * 2014-02-07 2017-01-31 Arm Limited Data processing apparatus and method for performing segmented operations
US20160092398A1 (en) * 2014-09-29 2016-03-31 Apple Inc. Conditional Termination and Conditional Termination Predicate Instructions
GB2540939B (en) 2015-07-31 2019-01-23 Advanced Risc Mach Ltd An apparatus and method for performing a splice operation
GB2540941B (en) 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing
JP6493088B2 (ja) 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11080054B2 (en) * 2016-08-15 2021-08-03 Arm Limited Data processing apparatus and method for generating a status flag using predicate indicators

Also Published As

Publication number Publication date
CN112602059A (zh) 2021-04-02
US11550574B2 (en) 2023-01-10
US20210334102A1 (en) 2021-10-28
JP7335952B2 (ja) 2023-08-30
GB2580068B (en) 2021-02-24
GB2580068A (en) 2020-07-15
JP2022511278A (ja) 2022-01-31
GB201820841D0 (en) 2019-02-06
WO2020128414A1 (en) 2020-06-25

Similar Documents

Publication Publication Date Title
JP7335225B2 (ja) データ処理装置におけるデータ項目内のカウント要素
KR102590679B1 (ko) 벡터 요소들 내부의 비트 값들의 시험
JP2022543331A (ja) データ構造処理
JP7245817B2 (ja) データ処理装置における連続値の照合
KR20210100076A (ko) 벡터 술어 요약 생성
TWI766056B (zh) 用於資料處理的方法、設備、電腦程式及電腦可讀取儲存媒體
JP7324754B2 (ja) ベクトル・キャリー付き加算命令
JP7377208B2 (ja) データ処理
US11630667B2 (en) Dedicated vector sub-processor system
US20200371806A1 (en) Statistical mode determination
TW202307653A (zh) 陳述技術
TW202349232A (zh) 用於執行外積操作之技術
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
WO2023199015A1 (en) Technique for handling data elements stored in an array storage

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right