KR20200019942A - 레지스터-기반 매트릭스 승산 - Google Patents

레지스터-기반 매트릭스 승산 Download PDF

Info

Publication number
KR20200019942A
KR20200019942A KR1020207000266A KR20207000266A KR20200019942A KR 20200019942 A KR20200019942 A KR 20200019942A KR 1020207000266 A KR1020207000266 A KR 1020207000266A KR 20207000266 A KR20207000266 A KR 20207000266A KR 20200019942 A KR20200019942 A KR 20200019942A
Authority
KR
South Korea
Prior art keywords
matrix
data elements
register
matrix multiplication
source
Prior art date
Application number
KR1020207000266A
Other languages
English (en)
Other versions
KR102583997B1 (ko
Inventor
데이비드 헤나 만셀
룬 홈
이안 마이클 콜필드
옐레나 밀라노비치
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20200019942A publication Critical patent/KR20200019942A/ko
Application granted granted Critical
Publication of KR102583997B1 publication Critical patent/KR102583997B1/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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

장치, 매트릭스 승산 명령, 장치를 동작하는 방법 및 가상 머신 구현을 포함하는, 데이터 처리 장치에서 매트릭스 승산을 수행하는 기술이 개시된다. 적어도 4개의 데이터 엘리먼트를 저장하기 위한 각각의 레지스터인 레지스터는, 매트릭스 승산 명령에 의해 참조되고, 매트릭스 승산 명령에 응답해서 매트릭스 승산 동작이 수행된다. 데이터 엘리먼트의 제1 및 제 2매트릭스는 제1 및 제2소스 레지스터로부터 추출되고, 제1매트릭스의 각각의 로우 및 제2매트릭스의 각각의 컬럼 상에 작용하는 복수의 도트 프로덕트 동작이 수행되어, 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하고, 이는 목적지 레지스터에 적용된다. 주어진 수의 레지스터 오퍼랜드에 대한 더 높은 컴퓨테이션 밀도가 벡터-바이-엘리먼트 기술에 대해서 달성된다.

Description

레지스터-기반 매트릭스 승산
본 발명 개시 내용은 데이터 처리 장치와 관련된다. 특히, 본 발명은 데이터 처리 장치에서의 매트릭스 승산의 실행과 관련된다.
전형적으로, 동시대의 데이터 처리 장치에는, 데이터 처리 장치의 데이터 처리 동작에 종속되는 데이터 값을 유지할 수 있는 다수의 레지스터가 제공된다. 데이터 처리 장치는 이러한 레지스터의 콘텐츠를 값들의 어레이로서 처리할 수 있는데, 예를 들어 레지스터가 512 비트를 유지하는 스토리지 커패시티를 갖는 경우, 데이터 처리 장치는 16개의 32-비트 값들의 어레이를 처리할 수 있다. 그 다음, 데이터 처리 장치는, 예를 들어, 데이터 처리 동작을 그 어레이의 개별적으로 특정된 엘리먼트에 적용하거나, 또는, 예를 들어 특정된 값에 의해서 각각의 엘리먼트를 승산하도록 SIMD(단일 명령 다중 데이터) 방식으로 값들의 어레이의 각각의 엘리먼트에 적용할 수 있다.
일례의 실시예에 있어서, 장치는, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 복수의 레지스터를 갖는 레지스터 스토리지 회로와; 매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 디코더 회로로서, 매트릭스 승산 명령은 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 디코더 회로와; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 데이터 처리 회로로서, 매트릭스 승산 동작은: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하는 것; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 데이터 처리 회로를 포함한다.
다른 예의 실시예에 있어서, 데이터 처리 장치를 동작하는 방법은, 매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 단계로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하는 단계와; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 단계로서, 매트릭스 승산 동작은: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하는 것; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 매트릭스 승산 동작을 수행하는 단계를 포함한다.
다른 예의 실시예에 있어서, 장치는, 매트릭스 승산 명령에 응답해서 제어 신호를 생성하기 위한 수단으로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하기 위한 수단과; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하기 위한 수단으로서: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하기 위한 수단; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하기 위한 수단; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하기 위한 수단으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하기 위한 수단; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하기 위한 수단을 포함하는, 매트릭스 승산 동작을 수행하기 위한 수단을 포함한다.
본 발명 기술이, 예로서, 첨부 도면을 참조로 도시된 그 실시예를 참조로 기술될 것이다:
도 1은 본 발명 기술의 다양한 예를 구현할 수 있는 데이터 처리 장치를 개략적으로 도시하고;
도 2a는 소스 레지스터 A로부터 특정된 엘리먼트 및 소스 레지스터 B로부터 값들의 어레이를 사용해서 어큐뮬레이터 레지스터 C 내의 저장을 위한 4개의 엘리먼트를 생성하기 위한 벡터-바이-엘리먼트 기술을 개략적으로 도시하는 반면, 도 2b는 소스 레지스터 A로부터 취해진 데이터 엘리먼트의 스퀘어 매트릭스에 소스 레지스트 B로부터 취해진 스퀘어 매트릭스가 승산되어 목적지 레지스터 C 내에 누적되는 엘리먼트의 스퀘어 매트릭스를 생성하는, 본 발명 기술의 하나의 실시예를 개략적으로 도시하며;
도 3은 도 2b에 나타낸 것과 같은 매트릭스 승산 동작을 지원하기 위해서 하나의 실시예에서 제공된 회로를 개략적으로 도시하고;
도 4는 4x4 매트릭스가 한 쌍의 4x4 매트릭스의 승산에 의해서 생성되는 본 발명의 기술의 하나의 실시예를 도시하며;
도 5는 소스 엘리먼트 사이즈가 결과 엘리먼트 사이즈와 다르고, 엘리먼트의 2x8 매트릭스에 엘리먼트의 8x2 매트릭스가 승산되어 2x2 매트릭스를 생성하는 본 발명 기술의 일실시예를 도시하고;
도 6은 본 발명 기술에 따른 4x4 매트릭스를 형성하기 위해서 함께 승산되는 한 쌍의 4x4 매트릭스를 개략적으로 도시하며;
도 7a는, 도 6에 도시된 것과 동일한 소스 및 목적지 레지스터에 대해서, 본 발명 기술에 따른 4개의 분리의 2x2 매트릭스 승산의 실행을 개략적으로 도시하며;
도 7b는 하나의 실시예에 있어서 도 7a의 예를 구현하는 더 상세한 회로를 개략적으로 도시하며;
도 8은 본 발명 기술의 하나의 실시예에 있어서 소프트웨어 규정된 최대 벡터 길이의 부과 및 2개의 2x2 매트릭스 승산이 수행되도록 도 6 및 7에 도시된 바와 같은 동일한 소스 및 목적지 레지스터의 사용의 제한을 개략적으로 도시하고;
도 9는 8x8 매트릭스를 생성하기 위해서 2x8 매트릭스가 승산되는 8x2 매트릭스를 개략적으로 도시하고, 동일하게 4x4 매트릭스를 생성하기 위해서 4x2와 2x4 매트릭스 사이의 4개의 매트릭스 승산 동작의 실행을 동일하게 도시하고;
도 10은, 특정된 목적지 레지스터의 부분만이 점유되는 스퀘어 결과 매트릭스 및 부분이 명령 내에서 특정되는 변형을 생성하기 위해서 사용되는 본 발명 기술에 의해서 제공되는 명령을 개략적으로 도시하며;
도 11a는, 소스 레지스터의 부분으로부터 오퍼랜드 매트릭스를 추출하고, 2개의 결과 스퀘어 매트릭스를 생성하기 위해서 또 다른 소스 레지스터의 각각의 부분으로부터 취해진 매트릭스와 함께 그 매트릭스를 사용해서 매트릭스 승산 동작을 수행하는, 본 발명 기술에 의해서 제공된 명령의 동작을 개략적으로 도시하고;
도 11b는, 2개의 스퀘어 결과 매트릭스를 생성하기 위해서 함께 승산되는 이들, 각각으로부터 2개의 스퀘어 결과 매트릭스를 제공하기 위해서 사용되는 2개의 소스 레지스터의 각각의 부분을 개략적으로 도시하며;
도 11c는, 데이터 값이 특정된 메모리 위치로부터 로드되고 목적지 레지스터의 각각의 하프(half) 내에 카피되는 본 발명 기술에 의해서 사용된 카피하는 로드 동작을 개략적으로 도시하며;
도 11d는, 하나의 실시예에 있어서, 도 11a 및 11b의 예를 지원하는 일부 회로의 상세한 예를 개략적으로 도시하고;
도 12a 및 12b는, 이에 따라서 특정된 소스 레지스터의 2개의 하프의 콘텐츠의 스와핑이 명령 내의 플래그를 설정함으로써 또는 설정하지 않음으로써 선택적으로 수행될 수 있는, 본 발명 기술에 의해서 제공된 명령의 동작을 개략적으로 도시하고;
도 12c는, 하나의 실시예에 있어서, 도 12a 및 11b의 예를 지원하는 일부 회로의 상세한 예를 개략적으로 도시하며;
도 13은, 매트릭스 승산을 위한 하나의 오퍼랜드 매트릭스가 2개의 소스 레지스터에 의해서 지원되는, 본 발명 기술에 따른 매트릭스 승산 동작의 실행을 개략적으로 도시하며;
도 14는, 양쪽 오퍼랜드 매트릭스가 2개의 소스 레지스터에 의해서 제공되고, 결과의 스퀘어 매트릭스가 2개의 목적지 레지스터를 가로질러 저장되는, 도 13에 나타낸 기술에 대한 변형을 개략적으로 도시하고;
도 15는 사용될 수 있는 가상 머신 구현을 개략적으로 도시하며;
도 16은 하나의 실시예의 방법에 따라 취해진 단계의 시퀀스를 나타낸다.
적어도 일부 실시예는, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 복수의 레지스터를 갖는 레지스터 스토리지 회로와; 매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 디코더 회로로서, 매트릭스 승산 명령은 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 디코더 회로와; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 데이터 처리 회로로서, 매트릭스 승산 동작은: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하는 것; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 데이터 처리 회로를 포함하는, 장치를 제공한다.
본 발명 기술은, 매트릭스 승산 명령의 제공에 의해서 장치의 레지스터 내에 유지된 매트릭스 엘리먼트를 표현하는 데이터 값을 사용하는 매트릭스 승산 동작의 실행을 용이하게 하고, 그 명령에 응답하는 장치 내의 대응하는 회로는, 명령에서 특정된 레지스터의 콘텐츠가 데이터 엘리먼트의 매트릭스로서 처리되는 접근을 구현한다. 이 방식으로, 매트릭스 승산 명령에 응답해서, 데이터 처리 회로는 특정된 제1 및 제2소스 레지스터 각각으로부터 데이터 엘리먼트의 제1 및 제2매트릭스를 추출한다. 더욱이, 데이터 처리 회로는, 그러면, 복수의 도트 프로덕트 동작을 수행해서 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성한다. 매트릭스 승산의 본성으로부터, 각각의 이들 도트 프로덕트 동작이 데이터 엘리먼트의 하나의 오퍼랜드 매트릭스의 각각의 로우 및 데이터 엘리먼트의 다른 오퍼랜드 매트릭스의 각각의 컬럼을 참조해서 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트에 대해서 수행되는 것으로 이해될 것이다. 결과의 매트릭스는, 스퀘어, 예를 들어 최소 4개의 데이터 엘리먼트(2x2 구성으로)를 포함하지만, 본 발명 기술은 결과 데이터 엘리먼트의 소정의 스퀘어 매트릭스(예를 들어, 3x3, 4x4, 5x5 등)의 생성에 적용 가능한 것에 유의해야 한다. 생성된 결과 데이터 엘리먼트의 결과의 스퀘어 매트릭스는 명령에서 특정된 목적지 레지스터에 적용되고, 여기서 그 목적지 레지스터가 유지하는 매트릭스 표현은 장치에 의해서 이해된다.
더욱이, 본 발명 기술에 의해서 취해진 접근은 단지 하나의 표현, 예를 들어 주어진 레지스터의 콘텐츠의 시메틱(Semantic) 의미의 임의의 선택인 것에 유의해야 한다. 이는, 레지스터가 복수의 데이터 엘리먼트를 유지하는 데이터 처리 장치에서 매트릭스 승산을 수행하기 위한 대안적인 기술을 참조해서 이해될 수 있다. 이 대안적인 기술에 있어서, 다양한 매트릭스 승산은, 2개의 소스 레지스터의 콘텐츠에 대해서 "벡터-바이-엘리먼트" 동작을 수행함으로써 수행될 수 있는데, 여기서 특정된 엘리먼트는 하나의 소스 레지스터로부터 추출되는 반면, 엘리먼트의 벡터는 또 다른 소스 레지스터로부터 추출된다. 이 방식으로, 단일 매트릭스 로우(row)(또는 동일하게, 단일 매트릭스 컬럼(column))의 생성에 대응하는 도트 프로덕트 동작이 수행될 수 있다. 더욱이, 이러한 동작은, 그 다음, 결과 매트릭스의 또 다른 로우(또는 컬럼)에 대응해서 수행될 수 있다. 그런데, 본 발명 기술은, 벡터가 4개의 엘리먼트를 포함하는 일례에 적용될 때, 기술된 벡터-바이-엘리먼트 동작이, 그러면, 전형적으로, 3개의 벡터 판독(2개의 소스 레지스터 및 목적지 어큐뮬레이터 레지스터에 대응하는) 4개의 병렬 승산-누적 동작(즉, 결과 매트릭스의 로우에 대응해서 생성된 벡터에서 각각의 엘리먼트의 생성에 대해서 하나)을 포함하게 되고, 최종적으로 하나의 벡터가 기입(생성된 벡터를 목적지 레지스터 내에 기입하는 것에 대응해서)하게 되는, 본 발명 기술의 것에 대한 이 대안적인 기술의 구현 사이의 또 다른 차이가 있는 것을 인식한다. 이는, 본 발명 기술에 따른 매트릭스 승산 명령이 사용될 때의 상황과 비교될 수 있는데, 여기서 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스에는 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스가 승산되어 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하고, 그러면 (일부 실시예에 있어서) 특정된 목적지 레지스터에서 누적될 수 있다. 따라서, 상기된 대안적인 기술과 유사하게, 이 예에 있어서 본 발명 기술의 구현은, 또한 3개의 벡터 판독(각각의 2개의 소스 레지스터에 대해서 및 어큐뮬레이터 목적지 레지스터에 대해서) 및 하나의 벡터 기입(목적지 어큐뮬레이터 레지스터 내에 누적의 결과를 되돌려 기입하기 위한)을 요구한다. 그런데, 매트릭스 승산을 구현하는데 있어서, 본 발명 기술의 매트릭스 승산 명령은 8개의 동작을 개시한다(예를 들어, 2x2 스퀘어 매트릭스의 생성의 이 예에 있어서, 2개의 데이터 엘리먼트 승산은 결과 스퀘어 매트릭스에서 각각의 결과 데이터 엘리먼트에 대해서 수행되고, 이들은 매트릭스 내의 이 위치에 대한 기존의 값으로 누적될 값을 생성하기 위해서 함께 합산된다). 따라서, 동일한 레지스터 액세스에 대해서, 본 발명 기술은 더 큰 밀도의 승산-누적 동작을 구현한다. 더욱이, 2x2 스퀘어 매트릭스의 생성의 상기된 예에 있어서 승산-누적 동작의 이 밀도는 2배가 되지만, 이 비율은 생성되는 스퀘어 매트릭스의 사이즈로 스케일되는 것에 유의해야 한다. 예를 들어, 결과 데이터 엘리먼트의 4x4 스퀘어 매트릭스를 생성하는데 있어서, 본 발명 기술의 명령은 64 승산-누적 동작, 즉 동일한 수의 레지스터 액세스에 대한 벡터-바이-엘리먼트 접근보다 4배 이상의 승산-누적을 개시한다.
본 발명 기술은, 매트릭스 승산 명령에서 특정된 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 제안하고, 이는 다수의 방법으로 수행될 수 있다. 일부 실시예에 있어서, 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것은 목적지 레지스터 내에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 저장하는 것을 포함한다. 즉, 결과 데이터 엘리먼트의 스퀘어 매트릭스는, 자체의 콘텐츠를 오버라이팅(overwriting)하는 그 목적지 레지스터의 소정의 기존 콘텐츠에 관계없이 목적지 레지스터 내에 직접적으로 저장될 수 있다. 장치에 의해서 수행되는 데이터 처리 동작의 본성에 의존해서, 목적지 레지스터의 기존 콘텐츠가 고려될 수 있고 또는 고려되도록 요구되지 않을 수 있다. 따라서, 목적지 레지스터의 콘텐츠가 고려되어야 하는 및, 특히 목적지 레지스터가 데이터 엘리먼트의 대응하는 스퀘어 매트릭스를 이미 유지하는 다른 예에 있어서, 이는, 결과 데이터 엘리먼트의 생성된 스퀘어 매트릭스가 목적지 레지스터 내에 유지된 기존의 스퀘어 매트릭스로 누적되어야 하는 경우가 될 수 있고, 따라서 일부 실시예에 있어서, 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것은 목적지 레지스터 내에 저장된 결과 데이터 엘리먼트의 이전에 저장된 스퀘어 매트릭스로 결과 데이터 엘리먼트의 스퀘어 매트릭스를 누적하는 것을 포함한다.
더욱이, 소스 레지스터 또는 목적지 레지스터의 콘텐츠가 해석되는 방식에서의 유연성이 또한 제안된다. 특히, (제1 및 제2소스 레지스터로부터 취해진) 데이터 엘리먼트의 제1 및 제2매트릭스 내의 데이터 엘리먼트의 비트 길이가 결과 데이터 엘리먼트의 스퀘어 매트릭스의 데이터 엘리먼트의 비트 길이와 동일하게 될 필요가 없는 것이 제안된다. 그럼에도, 일부 실시예에 있어서, 이들은, 실제로 동일하게 될 수 있다. 따라서, 일부 실시예에 있어서, 데이터 엘리먼트의 제1매트릭스의 각각의 데이터 엘리먼트 및 데이터 엘리먼트의 제2매트릭스의 각각의 데이터 엘리먼트는, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 데이터 엘리먼트의 결과 엘리먼트 비트 길이와 동일한 소스 엘리먼트 비트 길이를 갖는다. 반대로, 다른 실시예에 있어서, 데이터 엘리먼트의 제1매트릭스의 각각의 데이터 엘리먼트 및 데이터 엘리먼트의 제2매트릭스의 각각의 데이터 엘리먼트는, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 데이터 엘리먼트의 결과 엘리먼트 비트 길이와 다른 소스 엘리먼트 비트 길이를 갖는다. 예를 들어, 단지 하나의 예시적인 예만을 취하기 위해서, 128-비트 레지스터를 사용하는 데이터 처리 장치에 있어서, 예를 들어 32-비트 데이터 엘리먼트의 2x2 매트릭스를 표현하는, 32-비트 데이터 엘리먼트의 스퀘어 매트릭스가 저장될 수도 있다. 이러한 결과 스퀘어 매트릭스가 실제로 2개의 2x2 매트릭스의 매트릭스 승산에 의해서 생성될 수 있는 반면, 이들 소스 매트릭스의 엘리먼트는, 그러면, 또한 32-비트 데이터 엘리먼트가 되고, 본 발명 기술은, 또한, 결과 데이터 엘리먼트의 이 스퀘어 매트릭스가, 또한 16-비트 데이터 엘리먼트를 갖는 2개의 소스 매트릭스의 매트릭스 승산에 의해서 생성될 수 있는 것을 제안한다(예를 들어, 16-비트 데이터 엘리먼트의 4x2 매트릭스가 승산된 16-비트 데이터 엘리먼트의 2x4 매트릭스는 32-비트 데이터 엘리먼트의 2x2 매트릭스로 귀결한다). 동일하게, 32-비트 데이터 엘리먼트의 이 2x2 결과 매트릭스는, 또한 8-비트 데이터 엘리먼트의 2x8 매트릭스 및 8x2 매트릭스의 승산에 의해서 생성될 수 있다.
더욱이, 그러므로, 본 발명 기술이, 소스 엘리먼트 비트 길이가 2배만큼 결과 엘리먼트 비트 길이와 다를 수 있는 것을 고려하지만, 일부 실시예에 있어서, 소스 엘리먼트 비트 길이가 2배 이상만큼 결과 엘리먼트 비트 길이와 다를 수 있는 것이 고려되는 것으로 인식해야 한다. 실제로, 본 발명 기술에 의해서 제안된 명령이 구현되는 콘텍스트에 의존해서, 본 발명 기술은, 소스 엘리먼트 비트 길이가 실제로 단일 비트, 예를 들어, 소스 오퍼랜드 매트릭스 내의 1-비트 데이터 엘리먼트로만 될 수 있는 것에 유의해야 한다. 또한, 3진의(Ternary) 구현이 구상되는데(여기서, 소스 엘리먼트는, 그러므로 세트: -1, 0, 1로부터의 값을 취한다), 이러한 예는 입력 데이터 값의 정밀도가 덜 중요하지만, 여기서 본 발명 기술에 의해서 지원된 병렬성(parallelism)이 매우 많이 관련될 수 있는 콘텍스트에 자명하게 적용된다.
구현에 의존해서, 데이터 엘리먼트의 사전 결정된 비트 길이가 있을 수 있는데, 이에 따라서 장치는, 이것이 본 발명 기술을 구현하는데 있어서 사용하는 소정의 소스 또는 목적지 레지스터의 콘텐츠를 해석한다. 그런데, 또한, 상기 논의에서 강조한 바와 같이, 이 비트 길이에서 유연성이 있을 수 있다. 더욱이, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 데이터 엘리먼트의 주어진 비트 길이에 대해서, 이는, 목적지 레지스터의 사이즈에 직접적으로 대응할 수 있는 반면, 본 발명 기술은, 결과 엘리먼트의 스퀘어 매트릭스의 디멘전이 매트릭스 승산 명령에서 특정되는 변형을 더 제공한다. 예를 들어, 이는, 결과 데이터 엘리먼트의 스퀘어 매트릭스가 목적지 레지스터의 전체 커패시티보다 작은 매트릭스 승산 동작이 수행되게 할 수 있다. 더욱이, 장치가 주어진 벡터 길이를 갖는 예에 있어서, 이것이 주어진 벡터 길이와 매칭하도록 결과 엘리먼트의 스퀘어 매트릭스의 특별한 디멘전을 특정하는 매트릭스 승산 명령은, 지원될 수 있는 결과 엘리먼트의 스퀘어 매트릭스의 디멘전 상에서 상한을 표현하게 된다. 그러므로, 예를 들어 128-비트 벡터 길이를 갖는 장치에 있어서, 이는, 4개의 32-비트 데이터 엘리먼트의 스퀘어 매트릭스를 생성하는 동작이 수행되는 것을 요구하는 매트릭스 승산 명령을 실행할 수 있게 할 수지만, 16개의 8-비트 데이터 엘리먼트의 스퀘어 매트릭스(예를 들어, 4x4 스퀘어 매트릭스)에 대한 또 다른 가능성이 있게 된다. 그런데, 4개의 32-비트 데이터 엘리먼트 중 하나의 스퀘어 매트릭스가 128-비트 벡터 길이로 장치 상에서 생성될 수 있는 매트릭스의 사이즈의 상한(적어도 4개의 엘리먼트를 필요로 하는)을 표현하는 경우, 이 명령은 더 넓은 벡터를 지원하는 또 다른 장치 상에서 실행될 수도 있어서, 128-비트 벡터 길이 장치에 대해서 기입된 프로그램이 동일한 또는 더 넓은 벡터 길이로 다른 장치를 가로질러 포터블(portable)로 되는 장점을 제공한다. 실제로, 장치의 기저의 아키텍처는, 가변적인("확장 가능한") 벡터 길이를 갖도록 규정될 수 있는데 - ARM® Limited of Cambridge, UK에 의해서 제공된 ARMv8-A 아키텍처를 위한 확장 가능한 벡터 확장(SVE: Scalable Vector Extension)에 의해서 제공되는 것과 같이 규정되고 - 그러므로 장치의 범위가, 그러면 구성되고, 그 아키텍처로, 하지만 가능한 벡터 길이로 모두 동일하게 준수하며, 따라서, 이들이 다른 벡터 길이를 가질 수 있더라도 동일한 명령이 소정의 이들 장치 상에서 일관되게 실행될 수 있다.
더욱이, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 디멘전을 특정하는 매트릭스 승산 명령의 능력은, 결과 데이터 엘리먼트의 스퀘어 매트릭스가 목적지 레지스터의 커패시티를 반드시 충전하지 않는 상기된 변형을 더 지원할 수 있다. 예를 들어, 128-비트 벡터 길이의 예를 다시 사용하면, 이는, 8-비트 데이터 엘리먼트의 4x4 매트릭스를 수용할 수 있는 반면, 또한, 매트릭스 승산 명령이 2x2 스퀘어 결과 매트릭스의 생성에 대해서 수행된 매트릭스 승산 동작을 제한할 수 있고, 따라서 4개의 8-비트 데이터 엘리먼트가, 그러면, (그 커패시티의 쿼터(quarter)만을 점유하는) 벡터 길이 내에 저장된다.
데이터 엘리먼트의 제1매트릭스의 데이터 엘리먼트, 데이터 엘리먼트의 제2매트릭스의 데이터 엘리먼트, 및 매트릭스 승산 동작으로부터 귀결되는 데이터 엘리먼트는 다양한 형태를 취할 수 있다. 일부 실시예에 있어서, 이들은 부동 소수점 값이 될 수 있는 반면, 다른 실시형태에 있어서, 이들은 정수 값이 될 수 있다. 이들 정수 값은 사인되지 않게 될 수 있거나 또는 사인될 수 있다.
소스 매트릭스(예를 들어, 데이터 엘리먼트의 제1매트릭스 및 데이터 엘리먼트의 제2매트릭스)는, 특히 이들 매트릭스의 각각의 디멘전에 관해서 다양한 형태 및 구성을 취할 수 있는 것이 상기 논의로부터 이해될 것이다. 따라서, 일부 실시예에 있어서, 데이터 엘리먼트의 제1매트릭스 및 데이터 엘리먼트의 제2매트릭스는 스퀘어 매트릭스이다. 다른 실시형태에 있어서, 데이터 엘리먼트의 제1매트릭스 및 데이터 엘리먼트의 제2매트릭스는 비-스퀘어 렉탱귤러 매트릭스이다.
장치에서 규정된 벡터 길이의 사용은, 다수의 데이터 엘리먼트("벡터"로서 본 명세서에서 언급되는 것과 함께)를 저장하는 데이터 처리 벡터 레지스터가 이 길이를 초과하지 않는 처리를 위해서만 벡터를 유지할 수 있는 것을 의미하는데, 벡터의 구성의 데이터 엘리먼트의 총 사이즈에 대한 제약을 자연히 부과할 것이고, 전체적으로, 이들은 그 벡터 길이의 총 사이즈를 초과할 수 없다. 그럼에도 상기된 바와 같이, 사용 가능한 벡터 길이는 하나의 장치로부터 또 다른 장치로 변화할 수 있고, 여기서 다시, 다양한 벡터 길이 상에서 구동할 수 있는 포터블 소프트웨어를 갖게 하는 장점이 있다.
이 콘텍스트에 있어서, 본 발명 기술은, 장치가 이것이 핸들링하는 벡터 길이를 제한하도록 그 사용자에 의해서 구성될 수 있는 실시예를 고려한다. 즉, 장치의 프로그래머는, 허용된 최대 벡터 길이를 갖도록 장치를 구성할 수 있고, 장치에서 수행된 후속 데이터 처리 동작은 그 부가된 최대 벡터 길이를 존중해야 한다. 따라서, 일부 실시예에 있어서, 디코더 회로는 구성 명령에 더 응답해서 구성 제어 신호를 생성하고, 여기서 구성 명령은 최대 벡터 길이를 특정하고, 데이터 처리 회로는 구성 제어 신호에 응답해서 후속 매트릭스 승산 동작을 제약해서 결과 데이터 엘리먼트의 총 사이즈가 최대 벡터 길이를 초과하지 않도록 한다. 예를 들어, 장치가, 소위 512 비트의 "네이티브" 벡터 길이를 갖는 상황에 있어서, 이 구성 명령은 소프트웨어 제한이 장치에 의해서 수행된 데이터 처리 동작에 적용되게 할 수 있게 되고, 이에 따라서, 예를 들어, 256 비트의 최대 벡터 길이에 제한되게 할 수도 있다. 따라서, 이 제약 하에서 실행하는 주어진 피스의 소프트웨어가 256-비트 벡터를 기대하는 경우, 최대 벡터 길이를 부과하는 메커니즘은, 이것이, 상기된 예에서, 소위, 512-비트 네이티브 벡터 길이던지 또는 256-비트 부과된 제한보다 더 긴 소정의 다른 벡터 길이던지, 더 긴 벡터를 갖는 장치 상에서 구동할 것을 보장하기 위해서 사용될 수도 있다.
최대 벡터 길이에 대한 이 종류의 소프트웨어 제한의 부과는, 차례로, 다양한 방식으로 (최대 벡터 길이에 대해서) 후속 매트릭스 승산 동작을 제약할 수 있다. 예를 들어, 일부 실시예에 있어서, 후속 매트릭스 승산 동작을 제약하는 것은, 결과 데이터 엘리먼트의 총 사이즈가 최대 벡터 길이를 초과하지 않게 하는 디멘전을 갖는 결과 데이터 엘리먼트의 스퀘어 매트릭스의 생성을 포함한다. 따라서, 예를 들어 목적지 레지스터의 "네이티브" 커패시티가 데이터 엘리먼트의 4x4 매트릭스가 거기에 저장될 수 있도록 되는 경우, (또는, 그 전체 커패시티, 동일한 사이즈의 데이터 엘리먼트의 3x3 또는 2x2 매트릭스를 점유하지 않을 때), 이 상황에서 소프트웨어-규정된 최대 벡터 길이의 부과는, 데이터 엘리먼트의 4x4 매트릭스가, 그러면, 규정된 최대 벡터 길이에 대해서 너무 큰 경우, 매트릭스 승산 동작을 제약해서, 데이터 엘리먼트의 2x2 또는 3x3 스퀘어 매트릭스만이 생성될 수 있도록 한다.
대안적으로 또는 추가적으로, 다른 실시형태에 있어서, 이러한 소프트웨어-규정된 최대 벡터 길이는 제한되는 결과 데이터 엘리먼트의 다수의 스퀘어 매트릭스로 귀결될 수 있다. 그러므로, 본 발명 기술이, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 생성으로 귀결하는 매트릭스 승산 동작이 수행되게 하는, 매트릭스 승산 동작을 제안하지만, 이는 매트릭스 승산 명령에 응답해서 생성되는 결과 데이터 엘리먼트의 또 다른 스퀘어 매트릭스의 가능성을 불가능하게 하지 않는 점에서 유의할 가치가 있다. 오로지 하나의 예를 취하기 위해서, 목적지 레지스터가 결과 스퀘어 매트릭스의 사이즈의 2배의 커패시티를 갖는 상황에 있어서, 매트릭스 승산 명령에 응답하는 매트릭스 승산 동작이 구현될 수 있는데, 이는, 목적지 레지스터의 스토리지 커패시티의 전체 사용을 행하기 위해서 2개의 스퀘어 매트릭스를 생성한다. 그런데, 더욱이, 상기된 소프트웨어-규정된 최대 벡터 길이의 콘텍스트에 있어서, 이는, 그러면, 매트릭스 승산 명령에 응답해서 생성될 수 있는 스퀘어 매트릭스의 수를 제약할 수 있다. 상기 논의에 따라서, 결과 엘리먼트의 총 사이즈는 목적지 레지스터의 스토리지 커패시티 미만이 될 수 있는 것으로 인식될 것이다.
결과 데이터 엘리먼트의 스퀘어 매트릭스의 디멘전이 매트릭스 승산 명령에서 특정되는 실시예의 콘텍스트에 있어서, 이는, 목적지 레지스터 커패시티에 직접적으로 대응할 수 있고, 따라서 이러한 실시예에 있어서, 매트릭스 승산 명령에서 특정된 디멘전을 갖는 결과 데이터 엘리먼트의 스퀘어 매트릭스는 목적지 레지스터의 스토리지 커패시티에 대응한다.
상기된 바와 같이, 본 발명 기술은, 또한, 목적지 레지스터의 스토리지 커패시티가 결과 데이터 엘리먼트의 결과 스퀘어 매트릭스를 저장하도록 요구되는 것보다 더 큰 실시예를 제안한다. 여기서, 일반적으로, 본 발명 기술에 의해서 사용된 레지스터는, 각각이 적어도 4개의 데이터 엘리먼트를 저장하는 커패시티를 갖는데, 일부 실시예에 있어서, 그러므로, 목적지 레지스터는 적어도 8개의 데이터 엘리먼트를 수용하는 및 결과 데이터 엘리먼트의 적어도 제2스퀘어 매트릭스를 저장하기 위한 스토리지 커패시티를 갖는다. 따라서, 생성된 결과 스퀘어 매트릭스는 4개의 데이터 엘리먼트를 각각 가질 수 있고, 매트릭스 모두는 8 데이터 엘리먼트를 저장하기 위한 스토리지 커패시티를 갖는 목적지에 저장될 수 있는 반면, 다른 예에 있어서, 결과 스퀘어 매트릭스는 9 데이터 엘리먼트(3x3 매트릭스)를 가질 수 있고, 18 데이터 엘리먼트를 수용하기 위한 스토리지 커패시티를 갖는 목적지 레지스터에 저장될 수 있으며, 또는 16 데이터 엘리먼트(4x4 매트릭스)를 각각 갖는 2개의 스퀘어 매트릭스는 32 데이터 엘리먼트를 수용하는 스토리지 커패시티를 갖는 목적지 레지스터 내에 저장될 수 있는 등으로 된다. 더욱이, 목적지 레지스터는 결과 데이터 엘리먼트의 2 이상의 스퀘어 매트릭스를 수용하기 위한 스토리지 커패시티를 가질 수 있는 것으로 인식될 것이다.
따라서, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 디멘전이 매트릭스 승산 명령에서 특정되는 실시예의 콘텍스트에 있어서, 목적지 레지스터의 스토리지 커패시티는 매트릭스 승산 명령에서 특정된 디멘전을 갖는 결과 데이터 엘리먼트의 하나 이상의 스퀘어 매트릭스를 저장할 수 있게 될 수 있다.
목적지 레지스터의 스토리지 커패시티가 하나 이상의 결과 스퀘어 매트릭스를 저장하는데 충분한 실시예에 있어서, 결과 데이터 엘리먼트의 생성된 스퀘어 매트릭스는 다양한 방식으로 목적지 레지스터에 적용될 수 있다. 예를 들어, 일부 실시예에 있어서, 데이터 처리 회로는 제어 신호에 응답해서 목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용한다. 더욱이, 목적지 레지스터의 제1부분이 다수의 방식으로 규정될 수 있고, 일부 실시예에 있어서, 이는, 데이터 처리 회로에 대해서 사전 결정되는데, 예를 들어, 데이터 처리 회로는 목적지 레지스터의 주어진 부분을 항상 선택할 것이고, 이에 대해서, 이는, 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용할 것인 반면, 다른 실시형태에 있어서, 매트릭스 승산 명령은 목적지 레지스터의 제1부분을 더 특정한다. 즉, 사용하기 위한 목적지 레지스터의 그 부분의 선택는, 프로그래머에 공개될 수 있다. 목적지 레지스터의 제1"부분"은, 특별한 환경에 의존해서, 목적지 레지스터의 전체 스토리지 커패시티의 다른 프랙션을 표현할 수 있지만, 이는, 예를 들어, 목적지 레지스터의 소위 하프(half) 또는 쿼터(quarter)일 수 있는 것으로 인식될 것이다.
일부 실시예에 있어서, 목적지 레지스터가 (예를 들어, 결과 데이터 엘리먼트의 스퀘어 매트릭스의) 결과 데이터 엘리먼트의 총 사이즈보다 큰 스토리지 커패시티를 갖는 예에 있어서, 데이터 처리 회로는, 결과 데이터 엘리먼트의 제2스퀘어 매트릭스를 생성하기 위해서 및 목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 제2스퀘어 매트릭스를 적용하기 위해서, 제2매트릭스 승산 동작을 수행하는 제어 신호에 더 응답한다. 따라서, 하나의 매트릭스 승산 명령에 응답해서, 하나 이상의 매트릭스 승산 동작은 하나 이상의 결과 스퀘어 매트릭스를 생성하는 것으로 수행될 수 있고, 이는, 그러면, 목적지 레지스터의 각각의 부분에 적용된다.
따라서, 하나 이상의 매트릭스 승산 동작이 매트릭스 승산 명령에 응답해서 수행되는 경우, 본 발명 기술은, 각각의 이들 매트릭스 승산 동작에 대한 각각의 소스(오퍼랜드) 매트릭스가 도출되는 다양한 방식을 구상한다. 예를 들어, 일부 실시예에 있어서, 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스가 제1소스 레지스터의 제1부분으로부터 추출되고, 데이터 처리 회로는 제어 신호에 응답해서 제1매트릭스 승산 동작으로서 매트릭스 승산 동작을 수행하고, 제1매트릭스 승산 동작은: 제2소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 및 목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하고; 데이터 처리 회로는 제어 신호에 응답해서 제2매트릭스 승산 동작을 수행하고, 제2매트릭스 승산 동작은: 제2소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 및 목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함한다.
대안적으로, 다른 실시형태에 있어서, 데이터 처리 회로는 제어 신호에 응답해서 제1매트릭스 승산 동작으로서 매트릭스 승산 동작을 수행하고, 제1매트릭스 승산 동작은: 제1소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 및 목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하고; 여기서 데이터 처리 회로는 제어 신호에 응답해서 제2매트릭스 승산 동작을 수행하고, 제2매트릭스 승산 동작은: 제1소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 및 목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함한다.
즉, 특별한 구현에 의존해서, 2개의 매트릭스 승산 동작은 (제1소스 레지스터의 제1부분으로부터 추출된) 동일한 제1오퍼랜드 매트릭스를 취하고, 이를, 각각의 매트릭스 승산 동작에서, 제2소스 레지스터로부터 추출된 제1 및 제2매트릭스에 적용할 수 있거나, 또는 제1소스 레지스터로부터 2개의 소스 매트릭스 및 제2소스 레지스터로부터 2개의 소스 매트릭스를 추출할 수 있고, 이들은 제1 및 제2결과 매트릭스를 형성하기 위해서 각각 승산된다.
한번 더, 결과 매트릭스가 적용되는 목적지 레지스터의 부분이 다양하게 규정 및 특정될 수 있는 상기 설명과 유사하게, 제1소스 레지스터의 각각의 부분이 각각의 매트릭스 승산 동작에 대해서 사용되는 이러한 실시예에 있어서, 이 제1부분은 또한 다양하게 규정될 수 있다. 일부 실시예에 있어서, 제1소스 레지스터의 제1부분은 데이터 처리 회로에 대해서 사전 결정된다. 다른 실시형태에 있어서, 매트릭스 승산 명령은 제1소스 레지스터의 제1부분을 더 특정한다.
데이터 처리 장치가 매트릭스 승산 명령에 응답해서 제1결과 스퀘어 매트릭스를 생성하기 위한 제1매트릭스 승산 동작 및 제2결과 스퀘어 매트릭스를 생성하기 위한 제2매트릭스 승산 동작을 수행하는 이러한 실시예에 있어서, 본 발명 기술은 수행되는 단지 2개의 매트릭스 승산 동작에 제한되지 않고, 일부 실시예에 있어서, 데이터 처리 회로는 제어 신호에 더 응답해서 적어도 하나의 또 다른 매트릭스 승산 동작을 수행해서 결과 데이터 엘리먼트의 적어도 또 다른 스퀘어 매트릭스를 생성한다.
더욱이, 장치가 매트릭스 승산 명령에 응답해서 하나 이상의 매트릭스 승산 동작을 수행하는 이러한 실시예에 있어서, 소스 레지스터의 각각의 부분이 소스 매트릭스의 각각의 데이터 엘리먼트를 제공하기 위해서 사용되는 다양한 방식이 있을 수 있을 뿐 아니라, 본 발명 기술은, 또한, 매트릭스 승산 명령에 앞서 실행된, 추가적인 명령의 사용을 더 제안하는데, 이는, 후속 매트릭스 승산 동작에 대한 소스 레지스터 중 하나의 콘텐츠를 준비한다. 특히, 일부 실시예에 있어서, 디코더 회로는, 매트릭스 승산 명령에 앞서는 및 메모리 위치 및 제1소스 레지스터를 특정하는 카피하는 로드 명령에 응답해서, 카피하는 로드 제어 신호를 생성하고, 데이터 처리 회로는, 카피하는 로드 제어 신호에 응답해서 카피하는 로드 동작을 수행하고, 카피하는 로드 동작은: 제1소스 레지스터의 제1부분 내에 특정된 메모리 위치로부터 데이터 엘리먼트의 제1스퀘어 매트릭스를 로딩하는 것과; 제1소스 레지스터의 제2부분 내에 데이터 엘리먼트의 제1스퀘어 매트릭스를 카피하는 것을 포함하고, 여기서 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스는 제2소스 레지스터의 제1부분으로부터 추출된다. 즉, 이러한 실시예에 있어서 매트릭스 승산 명령이 뒤따르는 카피하는 로드 명령의 실행의 결과로서, 데이터 엘리먼트의 동일한 스퀘어 매트릭스는, 그러면, 매트릭스 승산 명령의 결과로서 수행된 각각의 제1 및 제2매트릭스 승산 동작에서 제1오퍼랜드 매트릭스로서 사용되는 것으로 이해될 것이다.
상기된 바와 같이, 그 "부분"이 취해진 논의된 실시예에서 사용될 수 있는 주어진 레지스터의 비율이 다양한 형태를 취할 수 있지만, 제1소스 레지스터의 제1부분이 제1소스 레지스터의 제1하프인 일부 실시예에 있어서, 제2소스 레지스터의 제1부분은 제2소스 레지스터의 제1하프이고, 목적지 레지스터의 제1부분은 목적지 레지스터의 제1하프이다.
이들 비율이 각각의 레지스터의 하프인 이러한 실시예에 있어서, 본 발명 기술은 본 발명 기술에서 사용될 수 있는 레지스터 콘텐츠 스와핑 명령의 제공을 더 고려하고, 일부 이러한 실시예에 있어서, 데이터 처리 회로는, 레지스터 콘텐츠 스와핑 명령에 더 응답해서 레지스터 콘텐츠 스와핑 동작을 수행해서 제1소스 레지스터 및 제2소스 레지스터 중 하나의 제1하프 및 제2하프의 콘텐츠를 스왑한다. 따라서, 이 레지스터 콘텐츠 스와핑 명령의 사용에 의해서, 제1 및 제2소스 레지스터 중 하나의 하프는 스와핑될 수 있어서, 제1매트릭스 승산 동작이 수행된 후, 스왑(swap)이 제2매트릭스 승산 동작이 수행되기 전에 발생할 수 있다. 이는, 제1 및 제2결과 스퀘어 매트릭스를 생성하기 위해서 제1 및 제2소스 레지스터의 각각의 하프가 서로 승산되는 방식에서와 같이 추가적인 정도의 유연성을 제공한다.
그럼에도, 본 발명 기술은, 이러한 레지스터 콘텐츠 스와핑 명령이 명시적으로 규정되는 것이 필수적인 것으로 구상하지 않고, 일부 실시예에 있어서, 데이터 처리 회로는, 제어 신호에 더 응답해서, 제1매트릭스 승산 동작 후 및 제2매트릭스 승산 동작 전에, 레지스터 콘텐츠 스와핑 동작을 수행해서, 제1소스 레지스터 및 제2소스 레지스터 중 하나의 제1하프 및 제2하프의 콘텐츠를 스와핑한다. 즉, 추가적인 레지스터 콘텐츠 스와핑 명령의 사용 없이, 일부 실시예에 있어서, 스와핑은 제1 및 제2매트릭스 승산 동작의 실행 사이에서 자동적으로 수행될 수 있다.
실제로, 일부 실시예에 있어서, 이 레지스터 스와핑 동작이 수행되는지 아닌지는 프로그래머가 사용 가능한 선택이고, 따라서 이러한 실시예에 있어서, 매트릭스 승산 명령은 레지스터 콘텐츠 스와핑 동작이 수행되는지를 특정한다. 더욱이, 일부 실시예에 있어서, 매트릭스 승산 명령은 제1소스 레지스터 및 제2소스 레지스터 중 어느 것이 레지스터 콘텐츠 스와핑 동작의 대상이 되는지를 특정한다.
이는, 데이터 엘리먼트의 제1매트릭스가 일대일 양식으로 추출되는, 즉 제1매트릭스의 모든 데이터 엘리먼트가 제1소스 레지스터로부터 및 이로부터만 추출되는, 경우일 수 있다. 그런데 본 발명 기술은, 매트릭스 승산 명령은 제3소스 레지스터를 더 특정하는 또 다른 실시예를 제공하는데, 여기서 매트릭스 승산 동작은 제1소스 레지스터 및 제3소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것을 포함한다. 예를 들어, 이러한 일실시예에 있어서, 이는, 데이터 엘리먼트의 제1매트릭스의 제1하프가 제1소스 레지스터로부터 추출되는 반면, 데이터 엘리먼트의 제1매트릭스의 제2하프가 제3소스 레지스터로부터 추출되는 경우가 될 수 있다. 유사한 원리가 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스의 추출에 적용되고, 따라서 일부 실시예에 있어서, 매트릭스 승산 명령은 제4소스 레지스터를 더 특정하며, 여기서 매트릭스 승산 동작은 제2소스 레지스터 및 제4소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것을 포함한다. 실제로, 동일한 원리는, 또한, 매트릭스 승산 명령에서 목적지 레지스터의 사양에 적용되고, 따라서 일부 실시예에 있어서, 매트릭스 승산 명령은 또 다른 목적지 레지스터를 더 특정하고, 여기서 매트릭스 승산 동작은 목적지 레지스터와 또 다른 목적지 레지스터 사이의 결과 데이터 엘리먼트 분할의 스퀘어 매트릭스를 적용하는 것을 포함한다. 이는, 본 발명 기술에 의해서 제안된 매트릭스 승산 명령의 사용에 대한 유연성의 또 다른 측면을 제공하는데, 매트릭스 승산 동작을 위한 소스 오퍼랜드 매트릭스를 제공하는 데이터 엘리먼트의 각각의 제1 및 제2매트릭스가 하나 이상의 소스 레지스터로부터 도출될 수 있고, 동일하게 생성된 결과 데이터 엘리먼트의 스퀘어 매트릭스가 하나 이상의 목적지 레지스터에 적용될 수 있으며, 따라서 이들 오퍼랜드 및 결과 매트릭스의 각각의 사이즈 및 이로부터 이들이 도출되거나 또는 이들이 적용되는 각각의 레지스터에 관한 더 큰 유연성을 제공한다.
적어도 일부 실시예는, 데이터 처리 장치를 동작하는 방법을 제공하는데, 방법은, 매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 단계로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하는 단계와; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 단계로서, 매트릭스 승산 동작은: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하는 것; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 매트릭스 승산 동작을 수행하는 단계를 포함한다.
적어도 일부 실시예는, 장치를 포함하는데, 장치는, 매트릭스 승산 명령에 응답해서 제어 신호를 생성하기 위한 수단으로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하기 위한 수단과; 제어 신호에 응답해서 매트릭스 승산 동작을 수행하기 위한 수단으로서: 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하기 위한 수단; 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하기 위한 수단; 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하기 위한 수단으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하기 위한 수단; 및 목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하기 위한 수단을 포함하는, 매트릭스 승산 동작을 수행하기 위한 수단을 포함한다.
적어도 일부 실시예는, 상기된 소정의 실시예에 따른 장치에 대응하는 명령 실행 환경을 제공하기 위해서 호스트 데이터 처리 장치를 제어하는 프로그램 명령을 포함하는 가상 머신 컴퓨터 프로그램을 제공한다.
적어도 일부 실시예는, 소정의 상기된 실시예에 따른 방법이 수행될 수 있는 명령 실행 환경을 제공하기 위해서 호스트 데이터 처리 장치를 제어하는 프로그램 명령을 포함하는 가상 머신 컴퓨터 프로그램을 제공한다.
적어도 일부 실시예는, 소정의 상기된 실시예의 가상 머신 컴퓨터 프로그램이 비일시적인 방식으로 저장되는 컴퓨터 판독 가능한 기억 매체를 제공한다.
이제, 일부 특별한 실시예가 도면을 참조해서 기술된다.
도 1은 본 발명 기술의 다양한 예를 구현할 수 있는 데이터 처리 장치(10)를 개략적으로 도시한다. 데이터 처리 장치는, 이것이 실행하는 명령의 시퀀스에 응답해서 데이터 아이템 상에서 데이터 처리 동작을 수행하는 처리 회로(12)를 포함한다. 이들 명령은, 데이터 처리 장치가 액세스한 메모리(14)로부터 검색되는데, 본 기술 분야의 당업자가 친숙한 방식으로, 페치 회로(16)가 이 목적을 위해서 제공된다. 더욱이, 페치 회로(16)에 의해서 검색된 명령은, 처리 회로(12)의 구성 및 동작의 다양한 측면을 제어하도록 배열된 디코딩 회로(18)를 통과한다. 세트의 레지스터(20) 및 로드/저장 유닛(22)을 또한 나타낸다. 일반적으로, 처리 회로(12)는 파이프라인된 양식으로 배열될 수 있는데, 그 특정 사항은 본 발명 기술과 관련 없다. 본 기술 분야의 당업자는, 도 1이 나타내는 일반적인 구성에 익숙할 것이고, 그 상세한 설명은 간결성을 위해 여기서 생략된다. 도 1에서 알 수 있는 바와 같이, 레지스터(20)는, 각각 다수의 데이터 엘리먼트에 대한 스토리지를 포함하여, 처리 회로가 특정된 레지스터 내에서 특정된 데이터에 데이터 처리 동작을 적용할 수 있도록 하거나, 또는 특정된 레지스터 내에서 데이터 엘리먼트("벡터")의 특정된 그룹에 데이터 처리 동작을 적용할 수 있도록 한다. 특히, 도시된 데이터 처리 장치는 레지스터(20) 내에 유지된 데이터 엘리먼트의 형성된 매트릭스에 대해서 매트릭스 승산 동작의 실행에 관련된 것으로, 추가의 설명이 일부 특정 실시예를 참조해서 더 상세히 뒤따를 것이다. 명령의 실행에서 처리 회로(12)에 의해서 요구된 데이터 값 및, 이들 데이터 처리 명령의 결과로서 생성된 데이터 값은, 로드/저장 유닛(22)에 의해서 메모리(14)에 기입 및 이로부터 판독된다. 또한, 일반적으로, 도 1에서의 메모리(14)는, 전형적으로, 명령("프로그램")의 사전 규정된 시퀀스의 부분으로서 본 발명 기술의 명령이 저장될 수 있는 일례의 컴퓨터-판독 가능한 기억 매체로서 볼 수 있는데, 이는, 그러면, 처리 회로가 실행한다. 그런데, 처리 회로는, 네트워크 인터페이스를 통해서, RAM에서, ROM에서와 같이, 다양한 다른 소스로부터 이러한 프로그램에 액세스할 수 있는 등이 된다. 본 발명 개시 내용은, 처리 회로(12)가 실행할 수 있는 다양한 신규한 명령을 기술하고, 뒤따르는 도면은 이들 명령의 본성의 또 다른 설명을 제공하며, 이들 명령의 실행을 지원하기 위해서 데이터 처리 회로에서 변형이 있다.
도 2a 및 2b는 본 발명 기술을 도시하는데, 특히 레지스터의 다수의 데이터 엘리먼트가 매트릭스의 엘리먼트의 2개의 디멘전의 어레이로서 처리되는 접근을 취한다. 도 2b의 예에 있어서, 각각의 레지스터 A, B 및 C 내의 4개의 데이터 엘리먼트는 2x2 매트릭스의 엘리먼트로서 처리된다. 이는, 레지스터 A, B 및 C의 4개의 데이터 엘리먼트가 엘리먼트의 단순한 하나의 디멘전의 어레이로서, 예를 들어 벡터로서 처리되는 도 2a에 나타낸 예와 비교되는 것이다. 하나의 소스 레지스터(소스 A 내의 엘리먼트 0)로부터 하나의 데이터 엘리먼트 및 데이터 엘리먼트(소스 B의 4개의 데이터 엘리먼트)의 벡터가 벡터-바이-엘리먼트 승산- 및-누적 동작에 대한 오퍼랜드로서 특정되는 기술을 사용하면, 도 2a는 어떻게 데이터 엘리먼트의 벡터가 레지스터 C 내의 누적을 위해서 생성될 수 있는지를 나타낸다. 데이터 엘리먼트의 이 벡터는, 예를 들어 매트릭스의 로우(row)를 표현할 수 있고, 따라서 이 해석에 있어서, 도시된 것이 벡터-바이-엘리먼트 동작에 의해서 생성되는 4x4 결과 매트릭스의 하나의 로우의 계산을 표현하는 것으로 고려될 수 있다. 즉, 데이터 엘리먼트의 전체 4x4 매트릭스의 계산은 대응하는 3개의 또 다른 로우를 생성하기 위해서 3개의 또 다른 이러한 벡터-바이-엘리먼트 동작을 요구하게 된다.
이는, 본 발명 기술에 따른 도 2b에서 취해진 접근으로 고려되는데, 여기서 각각의 레지스터의 벡터는 각각이 2x2 매트릭스를 표현하는 4개의 데이터 엘리먼트를 유지하는 것으로서 각각 처리된다. 매트릭스 승산은, 레지스터 C 내에 누적될 2x2 매트릭스를 생성하기 위해서, 소스 레지스터 B 내에 유지된 2x2 매트릭스로 소스 레지스터 A 내에 유지된 2x2 매트릭스를 사용해서 수행된다. 도 2a 및 2b를 참조하는데 유의할 특별한 점은, 양쪽이 3개의 벡터 판독 및 하나의 벡터 기입을 수반하는 것이다(예를 들어, 레지스터 A, B 및 C로부터 판독 및 레지스터 C에 기입). 물론, 이것이, 정확히 도 2a 및 2b 사이의 비교, 즉 도 2a의 벡터 해석 및 도 2b의 매트릭스 해석의 강조점이므로, "벡터" 판독 및 기입에 관한 본 명세서의 강조점은, 그 판독 또는 기입에서 수반된 데이터 엘리먼트의 승산이고, 데이터 엘리먼트의 그룹이 반드시 벡터를 표현하기 위해서 해석되야 하는 것은 아닌 점에 유의하자. 즉, 도 2a 및 2b 양쪽이 4개의 데이터 엘리먼트까지 각각의 판독 또는 기입 동작에서 판독 또는 기입되는 판독 및 기입 동작을 표현하는 반면, 도 2a에 나타낸 동작에 있어서, 이들은 4개의 승산-누적 동작을 포함하는 반면, 도 2b에 있어서 이들은 8개의 승산-누적 동작이 되게 나타내는 것에 유의하자. 이러한 계산을 실행하기 위해서 공통으로 사용된 회로의 특정 유닛은 2개의 독립적인 장치(하나는 승산, 하나는 누적)보다 "퓨즈된 승산-누적" 장치이므로, 이들 승산-누적 동작은, 또한 본 명세서에서 "퓨즈된 승산-누적"(FMA:fused multiply-accumulate)으로서 언급되는 것에 유의하자. 이와 같이, 본 발명 기술에 의해서 제공된 매트릭스 승산 명령은 더 높은 계산 밀도가 특정되게 할 수 있는 것으로 이해되어야 한다. 또한, 본 발명 기술이 벡터 처리 콘텍스트에서 구현될 수 있는 것으로 이해하는 것은 중요한데, 예를 들어 여기서 레지스터의 콘텐츠의 상기된 "해석"이 그 벡터 처리 지원을 제공하는 장치의 벡터 길이 내에서 일어난다. 따라서, 도 2b의 예에 있어서, 2x2 매트릭스를 표현하는 4개의 데이터 엘리먼트를 유지하기 위해서 요구된 폭은, 그러면, 벡터 길이이고, 도시된 처리는, 그러면, 장치가 지원할 수 있는 많은 이러한 벡터에서 별개의 독립적인 벡터로서 반복된다. 이 벡터 처리 개념은 뒤따르는 예들 모두에 적용 가능하지만, 전형적으로, 데이터 값 및 처리의 하나의 벡터 길이의 가치만이 도면의 명확성을 위해서 도시된다.
도 3은 도 2b에 도시된 종류의 동작을 지원하기 위해서 제공된 회로의 구성을 개략적으로 도시한다. 제1소스 레지스터(30A) 및 제2소스 레지스터(32B)는 (디코딩 회로(18)에 의해서 생성된 관련 제어 신호의 제어 하에서) 각각이 소스 레지스터 A로부터 2개의 입력 및 소스 레지스터 B로부터 2개의 입력을 취하고, 이들 입력을 사용해서 도트 프로덕트 동작을 수행하는, 4개의 동일한 유닛(34)에 도시된 바와 같이 접속된다. 이들 유닛(34)은, 또한, (디코딩 회로(18)에 의해서 생성된 관련 제어 신호의 제어 하에서) 레지스터(36C)에 접속되는데, 이것 내에 결과가 누적된다. 따라서, 어큐뮬레이터 C로부터 판독된 값은, 각각의 유닛(34)에 대한 또 다른 입력을 형성해서, 이것이, 가산 회로(40)에서, 승산 회로 유닛(38)에 의해서 수행된 승산의 결과와 합산될 수 있도록 하고, 그 결과는, 그러면, 어큐뮬레이터 C의 관련 엘리먼트에 되돌려 기입된다. 본 기술 분야의 당업자가 친숙한 바와 같이, 각각의 유닛(34)은 퓨즈된 승산-가산 회로에 의해서 표현될 수 있다.
도 4는, (도 2b와 비교해서) 결과 4x4 매트릭스를 생성하는 2개의 4x4 매트릭스의 승산에 대한 접근의 확장을 도시하는 것으로 인식되는 예를 나타낸다. 어큐뮬레이터 C 내에 누적되는 결과의 매트릭스의 16개의 엘리먼트에 대한 대응하는 엘리먼트 생성 동작을 나타낸다. 그러므로, 이 4x4 매트릭스 승산을 트리거하는 단일 매트릭스 승산 명령에 응답해서, 64개의 동작이 수행된다(C의 각각의 16개의 엘리먼트의 계산에 대한 4개의 승산-누적 부분이 있다). 더욱이, 이들 레지스터의 콘텐츠가 하나의 벡터 판독/기입에서 판독 및 기입되는 경우, 도 4에 나타낸 컴퓨테이션 밀도는 도 2b의 예보다 여전히 8배만큼 더 높다. 이는, 상기된 벡터-바이-엘리먼트 동작이 수행된 접근과 비교되는데, 이에 따라서 16 엘리먼트 벡터는 16 엘리먼트 하나의 디멘전의 어레이로서 처리된다. SIMD(단일 명령 다중 데이터) 명령이 16 병렬 동작을 개시하기 위해서 사용될 수도 있는 그 접근에 있어서, 또 다른 3개의 명령이 C에서 누적된 4x4 매트릭스의 전체 계산에 대한 요구된 64개의 동작을 완료하기 위해서 요구된다. 더욱이, 각각의 이들 명령은 3개의 벡터 판독 및 하나의 벡터 기입을 수반하게 된다. 이는 본 발명 기술의 접근과 비교되는데, 도 4에 나타낸 예에 있어서, 4배 많은 퓨즈된 승산-누적 동작이 동일한 수의 레지스터 오퍼랜드, 예를 들어 단지 3개의 벡터 판독 및 하나의 벡터 기입을 갖는, 매트릭스 승산 명령에 의해서 특정된다. 일반적으로, 그러므로, 본 발명 기술의 매트릭스 승산 명령의 사용은, 가외의 레지스터 파일 대역폭 없이, 매트릭스 승산 애플리케이션에 대한 더 높은 컴퓨터의 처리량을 용이하게 하는 것으로 인식될 것이다.
각각의 소스 레지스터 내에 유지된 매트릭스의 데이터 엘리먼트 및 목적지 레지스터 내에 누적된 데이터 엘리먼트는 동일한 사이즈를 가질 수 있는 경우가 있을 수 있지만, 반드시 그럴 필요는 없다. 더욱이, (도 2b 및 4를 참조해서 상기 논의된 예에서와 같이) 소스 매트릭스는 결과 데이터 엘리먼트의 스퀘어 매트릭스와 동일한 디멘전을 가질 수 있지만, 반드시 그럴 필는 없다. 도 5는 이들 포인트 모두를 도시한다. 도 5는 사용된 레지스터가 128-비트 레지스터인 예를 나타낸다. 더욱이, 소스 레지스터는 각각이 16개의 8-비트 엘리먼트를 저장하기 위해서 이 커패시티를 사용하는 반면, 어큐뮬레이터 레지스터는 4개의 32-비트 엘리먼트를 저장하기 위해서 이 커패시티를 사용한다. 따라서, 도시된 바와 같이, 표현된 매트릭스 승산은, 2x2 결과 매트릭스를 생성하기 위해서 2x8 소스 매트릭스와 8x2 소스 매트릭스 사이에서 매트릭스 승산 동작을 수행하는 것을 포함한다. 소스 매트릭스와 결과 매트릭스 사이의 디멘전의 차이는, 예를 들어, 2x2 매트릭스를 생성하기 위해서 2x4 매트릭스에 4x2 매트릭스가 승산되는 다른 예에서보다 작게 될 수 있거나, 또는, 예를 들어, 2x2 결과 매트릭스를 생성하기 위해서 2x16 매트릭스에 16x2 매트릭스가 승산될 수도 있는 도 5의 예에 대한 변형으로서 극단적으로 더 많게도 될 수 있다. 이것이 128-비트 레지스터를 갖는 장치에서 구현되는 예를 살펴보면, 소스 매트릭스와 결과 매트릭스 내의 데이터 엘리먼트 사이즈 사이의 비대칭이, 그러면, 더 크게 되는 것에 유의하게 될 것인데, 여기서 각각의 소스 매트릭스의 32 데이터 엘리먼트는 각각 4-비트 엘리먼트가 된다. 본 발명 기술은, 이와 관련해서 특히 유연하고, 주어진 레지스터 콘텐츠에 의해서 표현된 데이터 엘리먼트의 수와 각각의 데이터 엘리먼트의 대응하는 사이즈 사이의 이 트레이드 오프는 본 발명 기술의 명령을 사용하는 프로그래머가 명령이 사용 중인 컴퓨터의 콘텍스트에 의존해서 균형 잡을 수 있는 트레이드 오프를 표현한다. 극단적인 예에 있어서, 데이터 엘리먼트는, 매우 제한된 사이즈를 가질 수 있고, 여기서 명령에 의해서 제공된 컴퓨터의 병렬성은 더 중요한 반면, 가능성의 다른 엔드에서, 동일한 데이터 엘리먼트 사이즈는 소스 매트릭스 데이터 엘리먼트와 결과 매트릭스 데이터 엘리먼트 사이에 유지될 수 있으며, 여기서 소스 매트릭스 데이터 엘리먼트의 정밀도가 더 중요하다. 컴퓨터의 콘텍스트가 적합할 때, 소스 매트릭스의 각각의 데이터 엘리먼트가 최소로 표현되는(예를 들어, 이진 또는 3진(Ternary)) 구현이 제공될 수도 있는 것에 더 유의해야 한다.
도 6은 본 발명 기술의 매트릭스 승산 명령이 개시된 매트릭스 승산 동작의 또 다른 예를 개략적으로 도시한다. 도 6은, 이 레지스터가 부분들을 형성하는 데이터 처리 장치에서 최대 "벡터 길이"가 또한 512-비트이도록, 512-비트 사이즈를 갖는 레지스터(50)를 나타낸다. 더욱이, 이 레지스터는 16개의 32-비트 데이터 엘리먼트를 포함하는 것으로서 처리되는 것으로 나타낸다. 도 6의 하부에 있어서, 이들 16개의 데이터 엘리먼트는, 각각의 소스 레지스터 A 및 B에서 및 목적지 레지스터 C에서 데이터 엘리먼트의 4x4 매트릭스로서 해석되는 것으로서 나타낸다. 따라서, 도 6은 32-비트 부동 소수점(FP) 매트릭스 승산 명령의 동작을 도시하는데, 이는, 레지스터 A, B 및 C를 특정하고, 각각의 소스 레지스터 A 및 B로부터 취해진 4x4 매트릭스를 승산하기 위해서 대응하는 64개의 동작(도 4 및 그 상기 설명을 참조)이 목적지 레지스터 C에 적용되는 4x4 매트릭스를 생성하게 한다. 도 6의 도시에 있어서, 각각의 4x4 매트릭스는 4개의 데이터 엘리먼트의 4개의 블록에 의해서 표현되지만, 기술된 매트릭스 승산의 예에 있어서, 이는, 중요하지 않고, 이하의 도 7a와의 비교를 용이하게 하기 위해서만 제공된다.
도 7a로 되돌아가서, 동일한 512-비트 레지스터(50)는 라벨이 붙은 4개의 부분 52, 54, 56, 및 58로 나타낸다. 소스 레지스터 A, 소스 레지스터 B, 및 목적지 레지스터 C의 이들 4개의 부분은, 도 7a에서 4개의 데이터 엘리먼트의 그룹을 들러싸는 점선에 의해서 그래픽으로 도시된다. 따라서, 목적지 레지스터 C 내에 저장되는 각각의 4개의 2x2 결과 매트릭스는 분리의 매트릭스 승산 동작에 의해서 생성된다. 더욱이, 도 7a의 예에 있어서, 이들은 4개의 별개의 매트릭스 승산 명령에 의해서 개시되는 것으로서 나타내는데, 여기서 각각은 (매트릭스 승산 동작이 부동 소수점 32-비트 데이터 값을 사용해서 2x2 매트릭스를 생성하는 것을 특정하는 것에 추가해서) 목적지 레지스터, 소스 레지스터, 및 각각의 레지스터의 부분을 특정한다. 이 방식으로, 제1매트릭스 승산 동작은 2개의 소스 레지스터의 제1부분으로부터 취해진 2x2 매트릭스를 사용해서 수행되고, 그 결과는 목적지 레지스터 C의 제1부분에 저장된다. 3개의 또 다른 이러한 매트릭스 승산 동작은, 그러면, 3개의 또 다른 매트릭스 승산 명령에 의해서 특정되는데, 그 각각은 레지스터의 3개의 또 다른 부분 중 하나를 명명한다.
도 7b는 도 7a 처리를 구현하기 위해서 사용된 일례의 회로를 개략적으로 도시한다. 레지스터 A, B, 및 C는 4개의-부분 레지스터(70, 71, 및 76)로서 각각 나타낸다. 4개의-입력 멀티플렉서(72 및 73)는 각각의 레지스터 A 및 B의 각각의 4개의 부분에 접속되고, 각각의 멀티플렉서는 명령으로부터 도출된 "부분" 값에 의해서 제어된다. 따라서, 선택된 2개의 부분은 매트릭스 승산 회로(74)에 대한 2개의 입력을 형성하는데, 이는, 도 3의 예의 형태가 될 수 있다. 결과 매트릭스의 결과의 4개의 엘리먼트는 멀티플렉서(75)에 대한 단일 입력을 형성하는데, 이는, 레지스터 C의 각각의 4개의 부분에 접속된다. 멀티플렉서(75)는, 또한, 명령으로부터 도출된 "부분" 값에 의해서 제어되어, 결과 매트릭스의 4개의 엘리먼트를 레지스터 C의 부분 중 하나로 안내한다. 레지스터의 특별한 부분으로부터의 선택, 및 레지스터의 특별한 부분에 결과를 기입하기 위한 이 타입의 회로는, 본 명세서에 기술된 다른 예의 처리를 지원하기 위해서 동일하게 제공될 수 있다.
이와 같이, 특별한 매트릭스 승산 명령은 소스 레지스터 및 목적지 레지스터 양쪽의 부분에 대한 데이터 처리 동작을 제한하기 위해서 선택할 수 있는 것으로, 도 7a의 예에 대해서 인식될 것이다. 그런데, 유사한 제한은, 또한, 그 "네이티브"(하드웨어-기반) 벡터 길이보다 더 짧게 되도록 사용할 수 있는 벡터 길이를 제한하는 소프트웨어에 의해서 데이터 처리 장치에 적용되는 구성으로부터 귀결될 수 있다. 도 8은, 또한, 512-비트 레지스터(50)를 나타내는데, 여기서, 이 예에 있어서는, 최대 벡터 길이를 256-비트로 제한하는, 소프트웨어 규정된 최대 벡터 길이(60)가 적용되었다. 이 최대 벡터 길이는, 디코딩 회로(18)가 이 최대 벡터 길이(60)의 세트 값에 대한 관련 제어 신호를 생성함으로써 응답하는 명령이 제공되는 점에서, "소프트웨어 규정된"다. 이 최대 벡터 길이가 이 방식으로 제약되었으면, 이는, 또한, 장치가, 그러면, 수행할 수 있는 매트릭스 승산 동작에 대한 제약을 적용한다. 도 6의 예를 더 사용하면, (여전히 32-비트 데이터 엘리먼트를 가지면) 도 6의 예의 4x4 매트릭스를 저장하기 위해서 요구된 512-비트 스페이스가 사용 가능하지 않고, 그러므로 이 4x4 매트릭스 승산은 수행될 수 없는 것을 알 수 있다. 그런데, 도 7a의 예를 참조하면, 2개의 2x2 매트릭스를 저장하기 위한 커패시티가 사용 가능하고, 이는 도 8에 표현된다. 그럼에도, 소스 레지스터 A의 8 데이터 엘리먼트는, 목적지 레지스터 C 내의 스토리지를 위한 하나 이상의 결과 매트릭스를 생성하기 위해서 소스 레지스터 B의 데이터 엘리먼트가 승산된 매트릭스가 될 수 있는 것으로 더 이해될 것이다. 이들 가능성은, 이하 도 11a-c 및 도 12a-c를 참조해서 더 논의된다. 그럼에도, 도 8을 참조해서, 소프트웨어 규정된 최대 벡터 길이의 부과는, 도 8에 나타낸 목적지 레지스터 C의 사용 가능한 부분의 2개의 하프 내의 스퀘어 매트릭스 승산 동작 모두가 단일 매트릭스 승산 명령에 응답해서 수행되는 예에서 수행되는, 매트릭스 승산 동작의 수에 대한 제한을 부과하는 것으로 볼 수 있는 것에 유의해야 한다. 대안적으로, 이는, 4x4 매트릭스(32-비트 데이터 엘리먼트의)가 부과된 이 256-비트 최대 벡터 길이로 생성될 수 없고, 그러므로 시스템은 하나의 또는 2개의 2x2 매트릭스의 생성에 의해서 매트릭스 승산 명령에 응답하도록 제약되는 점에서, 생성된 매트릭스의 디멘전에 대한 제한으로서 볼 수 있다.
레지스터의 커패시티 및 데이터 엘리먼트의 사이즈가 허용하는 경우, 본 발명 기술의 명령의 하나 이상의 매트릭스 승산 명령에 응답해서 수행될 수 있는 다른 매트릭스 승산 동작에 대해서 상당한 유연성이 있을 수 있다. 도 9는 각각의 소스 레지스터 A 및 소스 레지스터 B로부터 추출되는 16까지의 데이터 엘리먼트를 도시한다. 각각의 경우에 있어서, 이들은, 소스 A 및 소스 B의 각각의 하프로부터 취해진 8 데이터 엘리먼트를 각각 포함하는 2개의 부분으로 잠재적으로 서브-분할되는 것으로서 도시된다. 일례의 512-비트 레지스터에 기반해서, 하나의 예에 있어서, 도 9에 도시된 데이터 엘리먼트의 전체 세트는 단일 매트릭스 승산 동작에서 수반될 수 있고, 주로, 여기서, 8-비트 데이터 엘리먼트의 8x8 매트릭스가 소스 B로부터 32-비트 데이터 엘리먼트의 2x8 매트릭스가 승산된 매트릭스인 소스 A로부터 데이터 엘리먼트의 32-비트의 8x2 매트릭스의 결과로서 생성된다. 그런데, 이 예에 있어서는, 다수의 치환이 가능하다. 예를 들어, 이러한 관점에서, 도 9에서의 4개의 스퀘어의 각각의 그룹은 하나의 데이터 엘리먼트를 표현하고, 따라서 소스 A로부터 128-비트 데이터 엘리먼트의 4x1 매트릭스에는 레지스터 B로부터 128-비트 데이터 엘리먼트의 1x4 매트릭스가 승산되어 32-비트 데이터 엘리먼트의 4x4 매트릭스를 생성한다. 더욱이, 소스 A 또는 소스 B로 2개의 라벨이 붙은 부분 중 하나만이 소스 매트릭스의 엘리먼트를 제공하기 위해서 사용될 수 있고, 대응하는 스퀘어 매트릭스가, 그러면, 생성될 수 있다. 예를 들어, 소스 A(0) 및 소스 B(0)만이 오퍼랜드 매트릭스에 대한 데이터 엘리먼트를 제공하는 경우, 대응해서 더 작은 결과 매트릭스가, 또한, 그러면, 생성된다. 그러면, 주어진 매트릭스를 형성하는 개별적인 데이터 엘리먼트의 사이즈와 데이터 엘리먼트의 수 사이의 트레이드 오프는 변화할 수 있다.
도 10은, 목적지 레지스터가 특별한 매트릭스 승산 동작에 의해서 생성된 스퀘어 결과 매트릭스를 저장하기 위해서 요구된 것보다 더 큰 스토리지 커패시티를 갖는 또 다른 예를 도시한다. 도시된 바와 같이, 여기서, 2x2 매트릭스로 귀결되는 2x4 매트릭스와 4x2 매트릭스의 승산은 세트의 결과 데이터 엘리먼트를 생성하는데, 이는 그 스토리지를 위한 목적지 레지스터의 커패시티의 하프(half)만을 요구하고, 목적지 레지스터의 부분 0에 적용되는 도 10에 그래픽으로 나타낸다. 도 10의 하부는, 이것이, 목적지 레지스터가 단지 매트릭스 승산 명령에서 명명된 디폴트에 의해서 귀결될 수 있고, 이 부분이 매트릭스 승산 동작에서 명시적으로 명명되는 제2예가 주어진다.
도 11a 및 11b는, 주어진 매트릭스 승산 동작 결과가 스퀘어 결과로 귀결되는 일부 또 다른 예를 도시하는데, 이는 목적지 레지스터의 전체 커패시티를 점유하지 않는다. 특히, 도 11a 및 11b의 예에 있어서, 2x2 매트릭스 승산 동작은, 목적지 레지스터 C의 하프만을 점유하는 2x2 결과 매트릭스를 각각 생성하는 것으로 고려된다. 이들이 FP32(예를 들어, 부동 소수점 32-비트 명령)인 것으로 도시되는 경우, 이들 예는, 그러면, 256-비트의 최대 커패시티로 레지스터를 표현한다. 이는, 예를 들어, 레지스터의 네이티브 커패시티가 될 수 있거나 또는, 도 8을 참조해서 상기된 바와 같이, 최대 벡터 길이에 대한 소프트웨어 부과된 제한으로부터 귀결될 수 있다. 따라서, 도 11a의 예에 있어서, 제1명령을 나타내는데, 이는, 단지, 소스 레지스터 A 및 B 및 목적지 레지스터 C를 특정한다. 이 명령을 실행하는 결과로서, 장치는, 디폴트에 의해서, 도시된 2x2의 매트릭스 데이터 엘리먼트를 포함하는, 소스 레지스터 A의 부분만을 선택할 수 있다. 도 11a에서 그래픽으로 나타낸 바와 같이, 이에는, 그러면, 목적지 레지스터 C의 2개의 각각의 부분에 대한 적용을 위한 2개의 결과 스퀘어 매트릭스를 생성하기 위해서, 소스 레지스터 B의 콘텐츠의 각각의 부분이 승산될 수 있다. 도 11a에 나타낸 다른 예의 명령에 있어서, 사용되는 도 11a의 부분은 명령 내에 명시적으로 명명되고(예를 들어, 부분 "0"), 이는, 그러면, 2개의 각각의 매트릭스 승산 동작에서 소스 레지스터 B의 2개의 하프에 적용되어, 목적지 레지스터 C의 각각의 부분 내에 저장된 2개의 스퀘어 결과 매트릭스를 생성한다.
도 11b는 또 다른 방식을 도시하는데, 여기서 소스 레지스터 A 및 소스 레지스터 B의 2개의 부분의 각각의 콘텐츠는, 목적지 레지스터 C의 각각의 부분에 대한 적용을 위한 2개의 결과 스퀘어 매트릭스를 생성하기 위해서, 단일 매트릭스 승산 동작에 응답해서 사용될 수 있다. 도 11b의 예에 있어서, 소스 레지스터 A의 제1부분은 소스 레지스터 B의 제1부분이 승산된 매트릭스이고, 결과의 스퀘어 2x2 매트릭스가 목적지 레지스터 C의 제1부분에 적용된다. 유사하게, 병렬로, 소스 레지스터 A의 제2부분에는 소스 레지스터 B의 제2부분이 승산되어, 목적지 레지스터 C의 제2부분에 적용되는 제2스퀘어 결과 매트릭스를 생성한다.
도 11c는 일부 실시예에 있어서 또 다른 명령, 즉 카피하는 로드 명령의 동작을 개략적으로 도시하는데, 이는, 데이터 값이 특정된 레지스터 A의 하나의 부분에서 검색 및 저장되는 메모리 위치를 특정한다. 데이터 값은, 또한, 레지스터 A의 다른 부분 내에 카피된다. 이 카피하는 것은, 레지스터 A의 양쪽 하프 내에 동일한 값을 직접적으로 로딩하는 로드에 의해서, 또는 로드를 뒤따라서 수행되는, 레지스터의 제1하프로부터 레지스터 A의 제2하프로의 카피에 의해서 구현될 수 있다. 본 발명 기술의 콘텍스트에 있어서, 이 카피하는 로드 명령은 도 11a 및 11b에 나타낸 접근의 면에서 유연성을 가능하게 한다. 예를 들어, 도 11b의 매트릭스 승산 명령의 실행에 앞서, 도 11c의 카피하는 로드를 수행함으로써, 동일한 콘텐츠가 소스 레지스터 A의 각각의 하프 내에 존재할 것이고, 따라서 그 효과는 도 11a의 것과 동일하게 되는데, 즉 소스 레지스터 A의 하프로부터 취해진 콘텐츠에는 소스 레지스터 B의 2개의 하프 내의 각각의 콘텐츠가 승산되어, 목적지 레지스터 C의 각각의 하프에 적용되는 2개의 스퀘어 결과 매트릭스를 생성한다.
도 11d는 도 11a의 제2예의 명령을 지원하기 위해서 하나의 실시예에서 제공된 예의 회로를 개략적으로 도시한다. 소스 레지스터 A 및 B는 2개의-부분 레지스터(120 및 122)로서 각각 나타낸다. 2개의-입력 멀티플렉서(124)는 레지스터 A의 각각의 2개의 부분에 접속된다. 멀티플렉서는, (예를 들어, 도 11a의 제2명령 예에서 "0"으로서) 명령에 의해서 설정된 "엘리먼트 선택" 신호에 의해서 제어된다. 따라서, 선택된 부분은 (이는, 도 3의 예의 형태가 될 수 있는) 매트릭스 승산 회로(126 및 128)의 각각의 인스턴스에 대한 하나의 입력을 형성한다. 각각의 매트릭스 승산 회로(126 및 128)에 대한 다른 입력은 소스 레지스터 122(B)의 각각의 부분이다. 결과의 2개의 2x2 매트릭스는 레지스터 130(C)의 각각의 부분에 기입된다. 비교에 의해서, "고정된 부분" 예(도 11a의 제1명령 예)에 대해서, 부분 0은 양쪽 승산 회로에 직접적으로 라우트되고, 도 11b 예에 대해서 레지스터 A로부터의 라우팅은 레지스터 B에 대해서 도 11d에 나타낸 것과 동일하게 된다(예를 들어, 매트릭스 승산 회로 0에 대한 부분 0 및 매트릭스 승산 회로 1에 대한 부분 1).
본 발명 기술은, 또한, 또 다른 매트릭스 승산 명령을 제공하는데, 이는, 이것이 발생하게 하는 데이터 처리 동작의 부분으로서, 또한, 주어진 소스 레지스터의 2개의 하프의 콘텐츠의 스왑(적어도 효과적으로 스왑 - 이하 참조)을 야기하게 한다. 이는, 도 12a 및 12b의 예에서 나타내는데, 여기서 명령은 소스 레지스터 A 및 소스 레지스터 B를 특정해서, 제1매트릭스 승산 동작이 소스 레지스터 B의 제1부분으로부터 취해진 2x2 매트릭스와 소스 레지스터 A의 제1부분으로부터 취해진 2x2 매트릭스를 함께 승산하는 것을 수행하게 한다. 이는, 목적지 레지스터 C의 제1부분 내에 저장된다. 제2매트릭스 승산 동작은, 또한, 소스 레지스터 B의 제2부분으로부터 취해진 2x2 매트릭스와 소스 레지스터 A의 제2부분으로부터 취해진 2x2 매트릭스를 함께 승산하는 것을 수행한다. 이는, 목적지 레지스터 C의 제2부분 내에 저장된다. 도 12a의 예에 있어서 스왑 플래그는 설정되지 않으므로, 스와핑은 발생하지 않는다.
도 12b의 예에 있어서 스왑 플래그가 설정된다. 이는, 소스 레지스터 A의 2개의 부분의 콘텐츠가, 적어도 매트릭스 승산 동작이 수행되게 하는 목적을 위해서, 스왑되게 한다. 그러므로, 예를 들어, 이는, 소스 레지스터 A의 부분이 액세스되는 순서를 단지 일시적으로 스위칭하므로 행해질 수 있으므로, 명령은, 그러면, 먼저, 소스 레지스터 A의 제2부분이 제1매트릭스 승산 동작에 대해서 사용되게 하고, 소스 레지스터 A의 제1부분이 제2매트릭스 승산 동작에 대해서 사용되게 한다. 그럼에도, 소스 레지스터 A의 2개의 부분은, 희망하면, 명시적으로 스왑되지만, 이것이 수반하는 추가적인 처리 단계는, 처리 속도가 주요 목적이면, 매력적인 옵션이 되지 않을 수 있게 한다. 어떤 방식도, 도 12b에서 알 수 있는 바와 같이, 스왑 플래그의 세팅이 매트릭스의 대향하는 대각선 쌍이 도 12a에서 생성된 것들에 대해서 생성되게 한다. 따라서, 제1매트릭스 승산 동작은, 소스 레지스터 B의 제1부분으로부터 취해진 2x2 매트릭스와 (A의 제1 및 제2부분이 이 단계 전에 "스왑"되었던 것에 유의) 소스 레지스터 A의 제1부분으로부터 취해진 2x2 매트릭스와 함께 승산하는 것을 수행한다. 이는, 목적지 레지스터 D의 제1부분 내에 저장된다. 제2매트릭스 승산 동작은, 그러면, 소스 레지스터 B의 제2부분으로부터 취해진 2x2 매트릭스와 (다시, 이것은 A의 "스왑된" 버전 상에 있는 것에 유의) 소스 레지스터 A의 제2부분으로부터 취해진 2x2 매트릭스를 함께 승산하는 것을 수행한다. 이는, 목적지 레지스터 D의 제2부분 내에 저장된다. 따라서, 도 12a 및 12b의 "스왑 인에이블된" 명령은 프로그래머가 스왑 플래그를 설정 또는 비설정하는 단순한 메커니즘에 의해서 매트릭스의 대향하는 대각선 쌍의 생성 사이를 플립(flip)하게 허용한다. 더욱이, 양쪽 비설정 버전 및 설정 버전을 실행함으로써, 각각의 소스 레지스터 A 및 B에서 2개의 소스 매트릭스의 전체 매트릭스 승산의 결과를 형성하는 4개의 2x2 서브-매트릭스는, 요구되면, 생성될 수 있다. 상기된 도 12a 및 12b의 예에 있어서, 이 전체 결과는 레지스터 C 및 D의 콘텐츠에 의해서 주어진다(각각 2x2 서브-매트릭스의 대각선 쌍과 함께). 수반된 처리의 면에서, 이 접근의 장점은, 내부 루프에서(최고의 처리 시간이 소모되는), 요구된 유일한 액션이 A 및 B를 로드하고 2개의 MMUL 동작(예를 들어, 스왑되지 않은 및 스왑된 버전)을 수행하는 것이다. 2개의 목적지(C 및 D)가 통상적이지 않은 방식(대각선 하프 각각)으로 결과 매트릭스를 저장하더라도, 이는, 내부 루프 외측에서 고쳐지게(rectified) 되는데, 여기서 프로그램의 실행에 덜 영향을 줄 것이다.
도 12c는 도 12a 및 12b의 예를 지원하기 위해서 하나의 실시예에서 제공된 예의 회로를 개략적으로 도시한다. 소스 레지스터 A 및 B는 2개의-부분 레지스터(80 및 81)로서 각각 나타낸다. 2개의-입력 멀티플렉서(82 및 83)는 모두 레지스터 A의 각각의 2개의 부분에 접속되는데, 입력으로서 그 부분의 오더링은 2개의 멀티플렉서 사이에서 인버트된다. 양쪽 멀티플렉서(82 및 83)는, 명령으로부터 도출된 "스왑" 값에 의해서 제어된다(예를 들어, 온 또는 오프 = 1 또는 0). 따라서, 선택된 2개의 부분은 각각 매트릭스 승산 회로(84 및 85)의 각각의 인스턴스에 대한 하나의 입력을 형성한다(이는, 도 3의 예의 형태가 될 수 있다). 각각의 매트릭스 승산 회로(84 및 85)에 대한 다른 입력은 소스 레지스터 B의 각각의 부분이다. 결과의 2개의 2x2 매트릭스는 레지스터 C(도 12a에 대한 - 스왑 없음) 또는 레지스터 D(도 12b에 대한 - 스왑)의 각각의 부분에 기입된다.
선행하는 예에 있어서, 단일 쌍의 소스 레지스터만을 가질 수 있는데, 각각은, 매트릭스 승산 동작에서 함께 승산되는 2개의 매트릭스 중 하나를 제공한다. 그런데, 본 발명 기술은, 오퍼랜드 매트릭스 중 적어도 하나가 하나 이상의 소스 레지스터로부터 추출되는 예를 더 제공한다. 이것의 예는 도 13에서 주어지는데, 여기서 제1소스 레지스터 A가 특정되고, 이로부터 데이터 엘리먼트의 2x4 매트릭스가 추출되지만, 여기서 2개의 소스 레지스터, 즉 B1 및 B2가 특정된다. 따라서, 이들은, 2개의 독립적인 4x2 매트릭스, 또는 대안적으로 하나의 조합된 4x4 매트릭스를 표현하는 것으로 고려될 수 있다. 소스 레지스터 B1 및 B2의 콘텐츠의 표현에 관점을 두던지, 이들 소스 레지스터의 각각의 콘텐츠는 2개의 스퀘어 결과 매트릭스(도 13에서 C1 및 C2로 라벨이 붙음)를 생성 - 그러면, 2개의 스퀘어 결과 매트릭스는 도 13에 나타낸 목적지 레지스터의 각각의 하프에 적용된다-하기 위해서 소스 레지스터 A로부터 도출된 2x4 매트릭스가 승산된 매트릭스이다. 따라서, 소스 레지스터 B1 및 B2의 콘텐츠의 관점에 더 의존해서, 목적지 레지스터의 콘텐츠는 결과 2x4 매트릭스로 또는 2개의 독립적인 2x2 매트릭스로 고려될 수 있다.
그런데, 하나 이상의 레지스터에 걸친 매트릭스의 분포는 소스 매트릭스 중 하나에만 제한되지 않고, 도 14는 이 접근이 소스 오퍼랜드 및 결과의 매트릭스 모두에 적용되는 예를 개략적으로 도시한다. 도 14에 그래픽으로 나타낸 동작에 대해서, 명령은 4개의 소스 레지스터 A1, A2, B1 및 B2를 특정했고, 또한, 2개의 목적지 레지스터 C1 및 C2를 특정했다. 따라서, 도시된 바와 같이, 16 데이터 엘리먼트가 소스 레지스터 A1 및 A2에 유지되고, 16 데이터 엘리먼트가 소스 레지스터 B1 및 B2에 유지되며, 16 데이터 엘리먼트가 목적지 레지스터 C1 및 C2 내에 저장될 수 있다. 따라서, 모두 6개의 레지스터를 특정하는 단일 매트릭스 승산 명령에 응답해서, 4x4 매트릭스에는 4x4 매트릭스가 승산될 수 있어서, 결과 4x4 매트릭스를 생성하고, 이는, 그러면, 목적지 레지스터 C1 및 C2에 2개의 하프에서 적용된다.
도 15는 사용될 수 있는 가상 머신 구현을 도시한다. 상기된 실시예는 관련 기술을 지원하는 특정 처리 하드웨어를 동작하기 위한 장치 및 방법의 면에서 본 발명을 구현하지만, 하드웨어 장치의, 소위 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현은, 가상 머신(VM) 프로그램(510)을 지원하는 호스트 오퍼레이팅 시스템(520)을 구동하는 호스트 프로세서(하드웨어)(530) 상에서 구동한다. 전형적으로, 합리적인 속도로 실행하는 가상 머신 구현을 제공하기 위해서 매우 강력한 프로세서가 요구되지만, 호환성 또는 재사용을 위해 또 다른 프로세서에 고유한 코드를 구동하려는 희망이 있을 때와 같은 소정의 환경에서 이러한 접근은 정당화될 수 있다. 가상 머신 프로그램(510)은 컴퓨터 판독 가능한 저장 매체(비일시적 매체 일 수 있음)에 저장될 수 있고, 애플리케이션 프로그램 인터페이스(명령 실행 환경)를, 가상 머신 프로그램(510)에 의해 모델화되는 장치인 실제 하드웨어에 의해서 제공되는, 애플리케이션 프로그램 인터페이스와 동일한 애플리케이션 프로그램(500)에 제공할 수 있다. 따라서, 상기한 소정의 매트릭스 승산 명령을 포함하는 프로그램 명령이, 가상 머신 하드웨어와의 그들의 상호 작용을 모델화하기 위해서 가상 머신 프로그램(510)을 사용해서 애플리케이션 프로그램(500)으로부터 실행될 수 있다.
도 16은, 메모리로부터 검색하는 데이터 처리 명령의 시퀀스 내에서 장치에 의해서 검색되는 본 발명 기술의 매트릭스 승산 명령에 응답해서, 하나의 실시예의 방법에 따라 취해진 단계의 시퀀스를 나타낸다. 흐름은 단계 100에서 시작되는데, 여기서 이들 매트릭스 승산 명령 중 하나가 수신된다. 여기서 "수신된"은 명령이 메모리로부터 페치되고 디코딩되는 프로세스인 것으로 이해될 수 있고, 특별한 동작이 수행될 수 있도록 하기 위해서 디코딩 회로에 의한 처리 회로 및 레지스터에 대한 관련 제어 신호의 생성을 더 포함한다. 이들은, 도 16에 나타낸 이 절차의 다음 단계가 수행될 수 있게 한다. 그러므로, 다음 단계 102는, 매트릭스 승산 명령에서 특정된 제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스의 추출을 포함한다. 다음 단계 104에서, 데이터 엘리먼트의 제2매트릭스는 매트릭스 승산 명령에서 특정된 제2소스 레지스터로부터 추출된다. 도 16은 본 발명 기술을 구현할 때 일반적으로 수행되는 단계들의 시퀀스를 나타내고, 소정의 상기한 실시예로부터의 세부 사항은 도 16의 관련 단계로 반입될 수 있는 것으로 이해되어야 한다. 예를 들어, 단계 102 및 104에서 제1 및 제2 소스 레지스터로부터 제1 및 제2매트릭스의 추출은, 본 발명 기술의 관련 실시예를 구현할 때, 제1 및 제2소스 레지스터 중 하나 또는 모두의 특정된 부분으로부터 이들 매트릭스를 추출하는 것을 포함할 수 있다. 그런데, 제1 및 제2매트릭스는 제1 및 제2소스 레지스터로부터 추출되고, 그러면, 반복 프로세스가 도면의 단계 106 및 108에 의해서 수행될 수 있는데, 여기서 도트 프로덕트 동작이 제1매트릭스의 주어진 로우 및 제2매트릭스의 주어진 컬럼 상에서 수행되어, 결과 매트릭스 내에서 주어진 위치에 대한 데이터 엘리먼트를 생성한다. 결과 매트릭스의 또 다른 데이터 엘리먼트를 생성하기 위해서 또 다른 도트 프로덕트 동작이 수행되는 경우, 흐름은 이들이 수행되게 하기 위해서 단계 108로부터 106으로 루프에서 되돌아 간다. 그럼에도, 예시의 간략화를 위해서 도 11의 106 및 108의 단계가 순차적인 양식으로 수행되는 것으로 나타내지면, 본 발명 기술은 이 반복적인, 순차적인 접근에 한정되지 않고, 예를 들어 도 3에 나타낸 예시적인 회로로부터 쉽게 알 수 있는 바와 같이, 이 절차의 각각의 "반복"은 실제로 서로 병렬로 수행될 수 있는 것으로 이해되어야 한다. 스퀘어 결과 매트릭스를 형성하는 데이터 엘리먼트의 전체 세트가 생성되면, 이는, 예를 들어, 그 목적지 레지스터의 기존 콘텐츠로 누적함으로써, 매트릭스 승산 명령에서 특정된 목적지 레지스터에 적용된다(단계 110).
간단히 요약하면, 장치, 매트릭스 승산 명령, 장치를 동작하는 방법 및 가상 머신 구현을 포함하는, 데이터 처리 장치에서 매트릭스 승산을 수행하는 기술이 개시된다. 적어도 4개의 데이터 엘리먼트를 저장하기 위한 각각의 레지스터인 레지스터는, 매트릭스 승산 명령에 의해 참조되고, 매트릭스 승산 명령에 응답해서 매트릭스 승산 동작이 수행된다. 데이터 엘리먼트의 제1 및 제2매트릭스는 제1 및 제2소스 레지스터로부터 추출되고, 제1매트릭스의 각각의 로우 및 제2매트릭스의 각각의 컬럼 상에 작용하는 복수의 도트 프로덕트 동작이 수행되어, 결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하는데, 이는 목적지 레지스터에 적용된다. 주어진 수의 레지스터 오퍼랜드에 대한 더 높은 컴퓨테이션 밀도가 벡터-바이-엘리먼트 기술에 대해서 달성된다.
본 출원에서, 단어 "...하도록 구성된"은 장치의 엘리먼트가 규정된 동작을 수행할 수 있게 하는 구성을 갖는 것을 의미하도록 사용된다. 이 콘텍스트에 있어서, "구성"은 하드웨어 또는 소프트웨어의 상호 접속의 배열 또는 방식을 의미한다. 예를 들어, 장치는 규정된 동작을 제공하는 전용의 하드웨어를 가질 수 있거나, 또는 프로세서 또는 다른 처리 장치가 기능을 수행하도록 프로그래밍될 수 있다. "하도록 구성된"은 규정된 동작을 제공하기 위해 소정의 방법으로 장치 요소가 변경될 필요가 있는 것을 의미하지는 않는다.
예시적인 실시예가 첨부 도면을 참조해서 본 명세서에서 상세하게 설명되었지만, 본 발명은, 첨부된 청구 범위에 의해 정의된 바와 같은 본 발명의 범위 및 사상을 벗어남이 없이, 이러한 정확한 실시예로 제한되지 않으며, 본 기술 분야의 당업자에게는 다양한 변경, 추가 및 수정이 이루어질 수 있는 것으로 이해되어야 한다. 예를 들어, 종속항의 특징의 다양한 조합은 본 발명의 범위를 벗어나지 않고 독립항의 특징과 함께 만들어질 수 있다.

Claims (44)

  1. 장치로서:
    복수의 레지스터를 갖는 레지스터 스토리지 회로로서, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장하는, 레지스터 스토리지 회로와;
    매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 디코더 회로로서, 매트릭스 승산 명령은, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는 디코더 회로와;
    제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 데이터 처리 회로로서, 매트릭스 승산 동작은:
    제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것;
    제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것;
    결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 상기 복수의 도트 프로덕트 동작을 수행하는 것; 및
    목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 데이터 처리 회로를 포함하는, 장치.
  2. 제1항에 있어서,
    목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것은, 목적지 레지스터 내에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 저장하는 것을 포함하는, 장치.
  3. 제1항에 있어서,
    목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것은, 목적지 레지스터 내에 저장된 결과 데이터 엘리먼트의 이전에 저장된 스퀘어 매트릭스로 결과 데이터 엘리먼트의 스퀘어 매트릭스를 누적하는 것을 포함하는, 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 각각의 데이터 엘리먼트 및 데이터 엘리먼트의 제2매트릭스의 각각의 데이터 엘리먼트는, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 데이터 엘리먼트의 결과 엘리먼트 비트 길이와 동일한 소스 엘리먼트 비트 길이를 갖는, 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 각각의 데이터 엘리먼트 및 데이터 엘리먼트의 제2매트릭스의 각각의 데이터 엘리먼트는, 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 데이터 엘리먼트의 결과 엘리먼트 비트 길이와 다른 소스 엘리먼트 비트 길이를 갖는, 장치.
  6. 제5항에 있어서,
    소스 엘리먼트 비트 길이는 2배만큼 결과 엘리먼트 비트 길이와 다른, 장치.
  7. 제5항에 있어서,
    소스 엘리먼트 비트 길이는 2배 이상만큼 결과 엘리먼트 비트 길이와 다른, 장치.
  8. 선행하는 청구항 중 어느 한 항에 있어서,
    매트릭스 승산 명령은 결과 데이터 엘리먼트의 스퀘어 매트릭스의 디멘전을 특정하는, 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 데이터 엘리먼트, 데이터 엘리먼트의 제2매트릭스의 데이터 엘리먼트, 및 결과 데이터 엘리먼트가 부동 소수점 값인, 장치.
  10. 제1항 내지 제8항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 데이터 엘리먼트, 데이터 엘리먼트의 제2매트릭스의 데이터 엘리먼트, 및 결과 데이터 엘리먼트가 정수 값인, 장치.
  11. 제10항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 데이터 엘리먼트, 데이터 엘리먼트의 제2매트릭스의 데이터 엘리먼트, 및 결과 데이터 엘리먼트는 사인되지 않은 정수 값인, 장치.
  12. 제10항에 있어서,
    데이터 엘리먼트의 제1매트릭스의 데이터 엘리먼트, 데이터 엘리먼트의 제2매트릭스의 데이터 엘리먼트, 및 결과 데이터 엘리먼트가 사인된 정수 값인, 장치.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스 및 데이터 엘리먼트의 제2매트릭스가 스퀘어 매트릭스인, 장치.
  14. 제1항 내지 제12항 중 어느 한 항에 있어서,
    데이터 엘리먼트의 제1매트릭스 및 데이터 엘리먼트의 제2매트릭스가 비-스퀘어 렉탱귤러 매트릭스인, 장치.
  15. 선행하는 청구항 중 어느 한 항에 있어서,
    다코더 회로는 구성 명령에 더 응답해서 구성 제어 신호를 생성하고, 여기서 구성 명령은 최대 벡터 길이를 특정하고, 데이터 처리 회로는 구성 제어 신호에 응답해서 후속 매트릭스 승산 동작을 제약해서 결과 데이터 엘리먼트의 총 사이즈가 최대 벡터 길이를 초과하지 않도록 하는, 장치.
  16. 제15항에 있어서,
    후속 매트릭스 승산 동작을 제약하는 것은, 결과 데이터 엘리먼트의 총 사이즈가 최대 벡터 길이를 초과하지 않게 하는 디멘전을 갖는 결과 데이터 엘리먼트의 스퀘어 매트릭스의 생성을 포함하는, 장치.
  17. 제15항에 있어서,
    후속 매트릭스 승산 동작을 제약하는 것은, 결과 데이터 엘리먼트의 총 사이즈가 최대 벡터 길이를 초과하지 않게 하는 결과 데이터 엘리먼트의 다수의 스퀘어 매트릭스를 생성하는 것을 포함하는, 장치.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    결과 엘리먼트의 총 사이즈는 목적지 레지스터의 스토리지 커패시티 미만인, 장치.
  19. 제8항, 또는 제8항에 의존할 때 제9항 내지 제18항 중 어느 한 항에 있어서,
    매트릭스 승산 명령에서 특정된 디멘전을 갖는 결과 데이터 엘리먼트의 스퀘어 매트릭스는 목적지 레지스터의 스토리지 커패시티에 대응하는, 장치.
  20. 제1항 내지 제18항 중 어느 한 항에 있어서,
    목적지 레지스터는 적어도 8개의 데이터 엘리먼트를 수용하기 위한 스토리지 커패시티를 갖고, 결과 데이터 엘리먼트의 적어도 제2스퀘어 매트릭스를 저장하는, 장치.
  21. 제8항, 또는 제8항에 의존할 때, 제9항 내지 제18항 중 어느 한 항에 있어서,
    목적지 레지스터의 스토리지 커패시티는, 매트릭스 승산 명령에서 특정된 디멘전을 갖는 결과 데이터 엘리먼트의 하나 이상의 스퀘어 매트릭스를 저장할 수 있는, 장치.
  22. 제20항 또는 제21항에 있어서,
    데이터 처리 회로는 제어 신호에 응답해서 목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는, 장치.
  23. 제22항에 있어서,
    목적지 레지스터의 제1부분은 데이터 처리 회로에 대해서 사전 결정되는, 장치.
  24. 제22항에 있어서,
    매트릭스 승산 명령은 목적지 레지스터의 제1부분을 더 특정하는, 장치.
  25. 제20항에 의존할 때 제22항 내지 제24항 중 어느 한 항에 있어서,
    데이터 처리 회로는, 제어 신호에 더 응답해서, 제2매트릭스 승산 동작을 수행해서, 결과 데이터 엘리먼트의 제2스퀘어 매트릭스를 생성하고, 목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 제2스퀘어 매트릭스를 적용하는, 장치.
  26. 제25항에 있어서,
    제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스가 제1소스 레지스터의 제1부분으로부터 추출되고, 데이터 처리 회로는 제어 신호에 응답해서 제1매트릭스 승산 동작으로서 매트릭스 승산 동작을 수행하고, 제1매트릭스 승산 동작은:
    제2소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것과;
    목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하고;
    데이터 처리 회로는 제어 신호에 응답해서 제2매트릭스 승산 동작을 수행하고, 제2매트릭스 승산 동작은:
    제2소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것과;
    목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 장치.
  27. 제25항에 있어서,
    데이터 처리 회로는 제어 신호에 응답해서 제1매트릭스 승산 동작으로서 매트릭스 승산 동작을 수행하고, 제1매트릭스 승산 동작은:
    제1소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것과;
    제2소스 레지스터의 제1부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것과;
    목적지 레지스터의 제1부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하고;
    여기서 데이터 처리 회로는 제어 신호에 응답해서 제2매트릭스 승산 동작을 수행하고, 제2매트릭스 승산 동작은:
    제1소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것과;
    제2소스 레지스터의 제2부분으로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것과;
    목적지 레지스터의 제2부분에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 장치.
  28. 제26항 또는 제27항에 있어서,
    제1소스 레지스터의 제1부분은 데이터 처리 회로에 대해서 사전 결정되는, 장치.
  29. 제26항 또는 제27항에 있어서,
    매트릭스 승산 명령은 제1소스 레지스터의 제1부분을 더 특정하는, 장치.
  30. 제26항 내지 제29항 중 어느 한 항에 있어서,
    데이터 처리 회로는 제어 신호에 더 응답해서 적어도 하나의 또 다른 매트릭스 승산 동작을 수행해서 결과 데이터 엘리먼트의 적어도 또 다른 스퀘어 매트릭스를 생성하는, 장치.
  31. 제26항 내지 제30항 중 어느 한 항에 있어서,
    디코더 회로는, 매트릭스 승산 명령에 앞서는 및 메모리 위치 및 제1소스 레지스터를 특정하는 카피하는 로드 명령에 응답해서, 카피하는 로드 제어 신호를 생성하고, 데이터 처리 회로는, 카피하는 로드 제어 신호에 응답해서 카피하는 로드 동작을 수행하고, 카피하는 로드 동작은:
    제1소스 레지스터의 제1부분 내에 특정된 메모리 위치로부터 데이터 엘리먼트의 제1스퀘어 매트릭스를 로딩하는 것과;
    제1소스 레지스터의 제2부분 내에 데이터 엘리먼트의 제1스퀘어 매트릭스를 카피하는 것을 포함하고,
    여기서 제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스는 제2소스 레지스터의 제1부분으로부터 추출되는, 장치.
  32. 제26항 내지 제31항 중 어느 한 항에 있어서,
    제1소스 레지스터의 제1부분은 제1소스 레지스터의 제1하프이고, 여기서 제2소스 레지스터의 제1부분은 제2소스 레지스터의 제1하프이며, 여기서 목적지 레지스터의 제1부분은 목적지 레지스터의 제1하프인, 장치.
  33. 제27항에 의존할 때, 제32항에 있어서,
    데이터 처리 회로는, 레지스터 콘텐츠 스와핑 명령에 더 응답해서 레지스터 콘텐츠 스와핑 동작을 수행해서 제1소스 레지스터 및 제2소스 레지스터 중 하나의 제1하프 및 제2하프의 콘텐츠를 스와핑하는, 장치.
  34. 제27항에 의존할 때, 제32항에 있어서,
    데이터 처리 회로는, 제어 신호에 더 응답해서, 제1매트릭스 승산 동작 후 및 제2매트릭스 승산 동작 전에, 레지스터 콘텐츠 스와핑 동작을 수행해서 제1소스 레지스터 및 제2소스 레지스터 중 하나의 제1하프 및 제2하프의 콘텐츠를 스와핑하는, 장치.
  35. 제34항에 있어서,
    매트릭스 승산 명령은 레지스터 콘텐츠 스와핑 동작이 수행되는지를 특정하는, 장치.
  36. 제34항 또는 제35항에 있어서,
    매트릭스 승산 명령은, 제1소스 레지스터 및 제2소스 레지스터 중 어느 것이 레지스터 콘텐츠 스와핑 동작의 대상이 되는지를 특정하는, 장치.
  37. 선행하는 청구항 중 어느 한 항에 있어서,
    매트릭스 승산 명령은 제3소스 레지스터를 더 특정하고, 여기서 매트릭스 승산 동작은 제1소스 레지스터 및 제3소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것을 포함하는, 장치.
  38. 선행하는 청구항 중 어느 한 항에 있어서,
    매트릭스 승산 명령은 제4소스 레지스터를 더 특정하고, 여기서 매트릭스 승산 동작은 제2소스 레지스터 및 제4소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것을 포함하는, 장치.
  39. 선행하는 청구항 중 어느 한 항에 있어서,
    매트릭스 승산 명령은 또 다른 목적지 레지스터를 더 특정하고, 여기서 매트릭스 승산 동작은 목적지 레지스터와 또 다른 목적지 레지스터 사이의 결과 데이터 엘리먼트 분할의 스퀘어 매트릭스를 적용하는 것을 포함하는, 장치.
  40. 데이터 처리 장치를 동작하는 방법으로서:
    매트릭스 승산 명령에 응답해서 제어 신호를 생성하는 단계로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하는 단계와;
    제어 신호에 응답해서 매트릭스 승산 동작을 수행하는 단계로서, 매트릭스 승산 동작은:
    제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하는 것;
    제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하는 것;
    결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하는 것으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 복수의 도트 프로덕트 동작을 수행하는 것; 및
    목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하는 것을 포함하는, 매트릭스 승산 동작을 수행하는 단계를 포함하는, 방법.
  41. 장치로서:
    매트릭스 승산 명령에 응답해서 제어 신호를 생성하기 위한 수단으로서, 매트릭스 승산 명령은, 각각의 레지스터가 적어도 4개의 데이터 엘리먼트를 저장할 수 있는, 제1소스 레지스터, 및 제2소스 레지스터, 및 목적지 레지스터로 이루어진 복수의 레지스터 내에서 특정하는, 제어 신호를 생성하기 위한 수단과;
    제어 신호에 응답해서 매트릭스 승산 동작을 수행하기 위한 수단으로서:
    제1소스 레지스터로부터 데이터 엘리먼트의 제1매트릭스를 추출하기 위한 수단;
    제2소스 레지스터로부터 데이터 엘리먼트의 제2매트릭스를 추출하기 위한 수단;
    결과 데이터 엘리먼트의 스퀘어 매트릭스를 생성하기 위해서 복수의 도트 프로덕트 동작을 수행하기 위한 수단으로서, 각각의 도트 프로덕트 동작은 데이터 엘리먼트의 제1매트릭스의 각각의 로우 및 데이터 엘리먼트의 제2매트릭스의 각각의 컬럼 상에 작용해서 결과 데이터 엘리먼트의 스퀘어 매트릭스의 각각의 결과 데이터 엘리먼트를 생성하는, 도트 프로덕트 동작을 수행하기 위한 수단; 및
    목적지 레지스터에 결과 데이터 엘리먼트의 스퀘어 매트릭스를 적용하기 위한 수단을 포함하는, 매트릭스 승산 동작을 수행하기 위한 수단을 포함하는, 장치.
  42. 제1항 내지 제39항 중 어느 한 항에 따른 장치에 대응하는 명령 실행 환경을 제공하기 위해서 호스트 데이터 처리 장치를 제어하는 프로그램 명령을 포함하는, 가상 머신 컴퓨터 프로그램.
  43. 제40항의 방법이 수행될 수 있는 명령 실행 환경을 제공하기 위해서 호스트 데이터 처리 장치를 제어하는 프로그램 명령을 포함하는, 가상 머신 컴퓨터 프로그램.
  44. 제42항 또는 제43항의 가상 머신 컴퓨터 프로그램이 비일시적인 방식으로 저장되는, 컴퓨터 판독 가능한 기억 매체.
KR1020207000266A 2017-06-28 2018-06-08 레지스터-기반 매트릭스 승산 KR102583997B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1710332.6 2017-06-28
GB1710332.6A GB2563878B (en) 2017-06-28 2017-06-28 Register-based matrix multiplication
PCT/GB2018/051573 WO2019002811A1 (en) 2017-06-28 2018-06-08 REGISTRY-BASED MATRIX MULTIPLICATION

Publications (2)

Publication Number Publication Date
KR20200019942A true KR20200019942A (ko) 2020-02-25
KR102583997B1 KR102583997B1 (ko) 2023-10-04

Family

ID=59523560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207000266A KR102583997B1 (ko) 2017-06-28 2018-06-08 레지스터-기반 매트릭스 승산

Country Status (8)

Country Link
US (2) US11288066B2 (ko)
EP (1) EP3646169B1 (ko)
JP (1) JP7253506B2 (ko)
KR (1) KR102583997B1 (ko)
CN (1) CN110770701B (ko)
GB (1) GB2563878B (ko)
IL (1) IL271174B1 (ko)
WO (1) WO2019002811A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018174930A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatuses for matrix add, subtract, and multiply
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
US10528642B2 (en) * 2018-03-05 2020-01-07 International Business Machines Corporation Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US10970076B2 (en) * 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US10853067B2 (en) 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US11615307B2 (en) * 2018-12-06 2023-03-28 MIPS Tech, LLC Neural network data computation using mixed-precision
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
JP7296574B2 (ja) * 2019-03-04 2023-06-23 パナソニックIpマネジメント株式会社 プロセッサ及びプロセッサの制御方法
US11334647B2 (en) * 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11119772B2 (en) * 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor
US20210200711A1 (en) * 2019-12-28 2021-07-01 Intel Corporation System and Method for Configurable Systolic Array with Partial Read/Write
US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
US11887647B2 (en) * 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
CN111753253B (zh) * 2020-06-28 2024-05-28 地平线(上海)人工智能技术有限公司 数据处理方法和装置
CN114168895A (zh) * 2020-09-11 2022-03-11 北京希姆计算科技有限公司 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN112182496B (zh) * 2020-09-24 2022-09-16 成都海光集成电路设计有限公司 用于矩阵乘法的数据处理方法及装置
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN112434255B (zh) * 2020-12-03 2023-12-08 成都海光微电子技术有限公司 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
CN116109468B (zh) * 2023-04-04 2023-07-21 南京砺算科技有限公司 图形处理单元及指令编译方法、存储介质、终端设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111587A1 (en) * 2002-12-09 2004-06-10 Nair Gopalan N Apparatus and method for matrix data processing
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901422B1 (en) * 2001-03-21 2005-05-31 Apple Computer, Inc. Matrix multiplication in a vector processing system
US7003542B2 (en) * 2002-01-02 2006-02-21 Intel Corporation Apparatus and method for inverting a 4×4 matrix
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7792895B1 (en) * 2006-06-16 2010-09-07 Nvidia Corporation Efficient matrix multiplication on a parallel processing device
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8631224B2 (en) * 2007-09-13 2014-01-14 Freescale Semiconductor, Inc. SIMD dot product operations with overlapped operands
US8626815B1 (en) * 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US8458442B2 (en) * 2009-08-26 2013-06-04 International Business Machines Corporation Method and structure of using SIMD vector architectures to implement matrix multiplication
US8984043B2 (en) * 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
US9600281B2 (en) * 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US20130159665A1 (en) * 2011-12-15 2013-06-20 Verisilicon Holdings Co., Ltd. Specialized vector instruction and datapath for matrix multiplication
CN103975302B (zh) * 2011-12-22 2017-10-27 英特尔公司 矩阵乘法累加指令

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111587A1 (en) * 2002-12-09 2004-06-10 Nair Gopalan N Apparatus and method for matrix data processing
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture

Also Published As

Publication number Publication date
CN110770701A (zh) 2020-02-07
EP3646169A1 (en) 2020-05-06
US20220291923A1 (en) 2022-09-15
GB201710332D0 (en) 2017-08-09
IL271174B1 (en) 2024-03-01
GB2563878B (en) 2019-11-20
IL271174A (en) 2020-01-30
GB2563878A (en) 2019-01-02
CN110770701B (zh) 2023-11-17
JP7253506B2 (ja) 2023-04-06
EP3646169B1 (en) 2022-08-31
WO2019002811A1 (en) 2019-01-03
US11288066B2 (en) 2022-03-29
KR102583997B1 (ko) 2023-10-04
JP2020527778A (ja) 2020-09-10
US20200117450A1 (en) 2020-04-16

Similar Documents

Publication Publication Date Title
KR102583997B1 (ko) 레지스터-기반 매트릭스 승산
JP7454377B2 (ja) データ処理装置における拡大算術計算
JP7253492B2 (ja) データ処理装置における乗累算
JP7148526B2 (ja) データ処理装置におけるベクトルによる要素演算
TWI766056B (zh) 用於資料處理的方法、設備、電腦程式及電腦可讀取儲存媒體
TW202305588A (zh) 用於向量組合指令之處理設備、方法、及電腦程式

Legal Events

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