KR101515311B1 - 승산-승산-누산 명령 수행 - Google Patents

승산-승산-누산 명령 수행 Download PDF

Info

Publication number
KR101515311B1
KR101515311B1 KR1020137010323A KR20137010323A KR101515311B1 KR 101515311 B1 KR101515311 B1 KR 101515311B1 KR 1020137010323 A KR1020137010323 A KR 1020137010323A KR 20137010323 A KR20137010323 A KR 20137010323A KR 101515311 B1 KR101515311 B1 KR 101515311B1
Authority
KR
South Korea
Prior art keywords
coefficient
sum
multiplication
instruction
operations
Prior art date
Application number
KR1020137010323A
Other languages
English (en)
Other versions
KR20130056905A (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 KR20130056905A publication Critical patent/KR20130056905A/ko
Application granted granted Critical
Publication of KR101515311B1 publication Critical patent/KR101515311B1/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

일 실시예에서, 본 발명은 다수의 실행 유닛을 갖는 프로세서를 포함하고, 실행 유닛 중의 적어도 하나는, 다수의 승산기 및 가산기를 포함하는 승산-누산(MAC) 유닛을 갖고 사용자 레벨 승산-승산-누산 명령을 실행하여 목적지 저장 장치를 픽셀 블록의 픽셀에 대한 절대값에 각각 대응하는 복수의 엘리먼트로 채우는 회로를 포함한다. 다른 실시예가 기재되고 청구된다.

Description

승산-승산-누산 명령 수행{PERFORMING A MULTIPLY-MULTIPLY-ACCUMULATE INSTRUCTION}
현대 마이크로프로세서는 일반적으로 명령을 얻은 다음 명령의 처리를 시작하는 하나 이상의 프론트 엔드 스테이지(front-end stage)을 포함하는 상이한 스테이지를 갖는 파이프라인을 포함한다. 이들 스테이지는 소위 매크로 명령 포맷으로 종종 수신된 명령을 프로세서에 의해 사용가능한 포맷, 예를 들어, 하나 이상의 마이크로 명령 또는 소위 μop로 배치한다. 이들 μop는 프로세서 파이프라인의 추가의 부분으로 전달된다. 예를 들어, 비순차(out-of-order) 엔진이 명령들을 그것들의 프로그램 순서로부터 처리 목적에 더 효율적인 순서로 리오더링(reorder)할 수 있다. 이 비순차 엔진으로부터, 명령들은 다수의 실행 유닛 중의 하나 이상의 실행 유닛에 제공될 수 있다. 이 실행 유닛들은 프로세서의 계산 엔진들이고 데이터에 대해 다양한 산술 및 논리 연산 등의 다양한 연산을 수행할 수 있다. 상이한 프로세서들은 상이한 타입의 실행 유닛들을 가질 수 있다. 이들 실행 유닛에서 결과가 얻어지면, 결과적인 데이터는, 비순차 실행된 명령을 다시 프로그램 순서로 리오더링할 수 있는 리오더 엔진 등의 프로세서의 하나 이상의 백 엔드 스테이지(back-end stage)에 제공될 수 있다. 백 엔드 스테이지는 유효하게 완료된 명령을 퇴거시키는 퇴거 유닛(retirement unit)을 더 포함할 수 있다.
역사적으로, 프로세서는 8비트, 16비트, 32비트 또는 다른 폭 값 등의 스컬러 값에 대하여 동작하도록 구성되었다. 처리 속도 및 트랜지스터 수가 증가함에 따라, 많은 프로세서는 벡터 유닛을 포함시키기 시작했다. 벡터 유닛은 다수의 데이터 유닛에 대하여 단일 명령을 수행하는데 사용되고, 여기서 명령은 소위 SIMD(single instruction multiple data) 형태일 수 있다. 이러한 벡터 처리는 특히 그래픽 및 다른 계산 집약 작업 부하들에 적당할 수 있다. 소정의 사용자 레벨 명령이 벡터 데이터에 대하여 어떤 연산을 수행하기 위해 도입되었으나, 벡터 데이터를 처리하는데 있어서 여전히 비효율성이 존재한다. 또한, 소정의 실행 유닛이 벡터 연산을 처리하도록 구성되었으나, 이들 하드웨어 유닛 또한 소정의 벡터 처리에 대하여 비효율적일 수 있다.
도 1은 본 발명의 실시예에 따른 방법의 흐름도.
도 2는 그려질 다각형을 갖는 픽셀 그룹의 블록도.
도 3은 본 발명의 다른 실시예에 따른 방법의 흐름도.
도 4는 본 발명의 실시예에 따른 승산-승산-누산 명령을 처리하는 로직의 하드웨어 구현의 블록도.
도 5는 본 발명의 실시예에 따른 승산-누산(MAC) 유닛의 블록도.
도 6은 본 발명의 일 실시예에 따른 프로세서 코어의 블록도.
도 7은 본 발명의 실시예에 따른 프로세서의 블록도.
도 8은 본 발명의 다른 실시예에 따른 프로세서의 블록도.
도 9는 본 발명의 실시예에 따른 시스템의 블록도.
다양한 실시예에서, 사용자 레벨 벡터 명령이 피연산자 세트에 대하여 다수의 연산을 효율적으로 수행하는데 사용될 수 있다. 특히, 사용자 레벨 벡터 명령이 벡터 데이터에 대하여 여기에 SUPERMADD 연산이라고 기재된 승산-승산-가산 연산을 수행하는데 사용되어 프로세서 하드웨어가 복수의 상이한 사용자 레벨 명령 및 더 많은 산술 계산을 필요로 하는 다수의 연산을 효율적으로 수행할 수 있게 해준다. 또한, 일부의 실시예는 프로세서 하드웨어가 이 벡터 연산을 효율적으로 수행하도록 할 수 있다.
본 발명의 실시예를 이용하면, 들어오는 데이터를 처리하는데 더 높은 스루풋이 실현될 수 있다. 증가하는 스루풋에 더하여, 예를 들어, 승산-승산-가산 연산의 다수의 레벨에서 수행되는 연산의 공통성의 이해에 기초하여, 단일 사용자 레벨 명령만을 제공하여 다수의 입력 데이터 피연산자에 대하여 다수의 산술 연산을 수행함으로써, 결과를 실현하는 감소된 수의 연산이 발생할 수 있다.
본 발명의 범위는 이 점에서 제한되지 않지만, 실시예는 특히 그래픽 처리에 적절할 수 있다. 많은 그래픽 작업 부하들에서, 디스플레이의 개별 화소에 대한 픽셀 정보를 나타내는 데이터의 그룹에 소정의 연산이 수행된다. 이러한 작업 부하들에서, 픽셀의 그룹, 예를 들어, 4×4 픽셀 블록 또는 다른 그러한 수가 식별될 수 있다. 이러한 각각의 픽셀 블록에 대하여, 다양한 연산이 그래픽 작업 부하에서 수행될 수 있다.
예를 들어, 픽셀 데이터는 버텍스 쉐이더(vertex shader)에서 처리되어, 적어도 부분적으로 블록의 픽셀에 의해 표현되는 형상, 예를 들어, 삼각형의 정점들(vertices)에 대한 속성 정보을 결정할 수 있다. 버텍스 쉐이더는 블록의 픽셀에 대한 보간된 속성 값을 얻도록 동작할 수 있다. 본 발명의 범위는 이 점에서 제한되지 않지만, 일 구현예에서, 이 보간은 무게중심 보간일 수 있고 특히 원근 수정(perspective correction) 및 비원근 수정을 제공할 수 있다. 버텍스 쉐이더에서의 이러한 동작 후에, 처리된 정보는 예를 들어 추가의 처리가 발생할 수 있는 픽셀 쉐이더에 제공될 수 있다. 본 발명의 실시예에 따라 명령을 이용하여 보간 또는 다른 연산을 처리하는데 사용되는 연산에 관한 추가의 세부사항은 이하에서 설명한다.
여기에 기재된 개념을 더 잘 이해하기 위하여, 벡터 연산에 대한 배경이 기재된다. 일부의 SIMD(single instruction multiple data) 및 다른 멀티미디어 타입의 명령은 복합 명령으로서 간주된다. 대부분의 부동 소수점 관련 명령도 복합 명령이다. 따라서, 명령 디코더가 복합 매크로 명령을 만나면, 마이크로코드에 액세스하여 그 매크로 명령에 대한 마이크로코드 시퀀스를 검색할 수 있다. 그 매크로 명령을 수행하는 다양한 μop가 예를 들어 비순차(out-of-order) 실행 로직으로 전달되고, 이 실행 로직은 마이크로 명령이 파이프라인을 통해 흐르고 실행을 위해 스케줄링됨에 따라 성능을 최적화하기 위해 마이크로 명령의 플로우를 원활하게 하고(smooth out) 리오더링하는 버퍼를 가질 수 있다. 할당 로직이 각 μop가 실행하기 위하여 필요로 하는 버퍼 및 자원을 할당한다. 재명명(renaming) 로직이 논리 레지스터를 레지스터 파일 내의 엔트리(예를 들어, 물리적 레지스터)로 재명명할 수 있다.
일 실시예에서, 벡터 명령은 다양한 팩 데이터 타입 표현(packed data type representation)으로 실행될 수 있다. 이들 데이터 타입은 128 비트 폭(128 bits wide) 피연산자에 대한 팩 바이트, 팩 워드 및 팩 더블워드(dword)를 포함할 수 있다. 일 예로서, 팩 바이트 포맷은 128 비트의 길이를 가질 수 있고 16개의 팩 바이트 데이터 엘리먼트(소위 16 폭 벡터)를 포함한다. 바이트는 8 비트의 데이터로 정의된다. 바이트 데이터 엘리먼트에 대한 정보는 바이트 0에 대한 비트 7 내지 비트 0, 바이트 1에 대한 비트 15 내지 비트 8, 바이트 2에 대한 비트 23 내지 비트 16, 및 마지막으로 바이트 15에 대한 비트 120 내지 비트 127에 저장될 수 있다.
일반적으로, 데이터 엘리먼트는 동일한 길이의 다른 데이터 엘리먼트와 함께 단일 레지스터 또는 메모리 위치에 저장된 개별 데이터이다. 일부의 팩 데이터 시퀀스에서, 레지스터에 저장된 데이터 엘리먼트의 수는 128 비트를 개별 데이터 엘리먼트의 비트 길이로 나눈 값일 수 있다. 데이터 타입이 128 비트의 길이를 가질 수 있지만, 본 발명의 실시예는 또한 64 비트 폭 또는 다른 사이즈의 피연산자로 동작할 수 있다. 팩 데이터 포맷은 다른 레지스터 길이, 예를 들어, 96 비트, 160 비트, 192 비트, 224 비트, 256 비트 이상으로 더 확장될 수 있다. 또한, 다양한 부호 또는 무부호 팩 데이터 타입 표현이 본 발명의 실시예에 따라 멀티미디어 레지스터에서 처리될 수 있다.
이제 도 1을 참조하면, 본 발명의 실시예에 따른 방법의 흐름도가 도시된다. 도 1에 도시된 바와 같이, 단일 사용자 레벨 명령을 실행하여 승산-승산-가산 연산을 효율적으로 구현하는데 수행되는 연산의 하이 레벨 도면이 기재된다. 도 1에 보이는 바와 같이, 비순차 아키텍처를 갖는 프로세서 등의 프로세서의 하나 이상의 부분 내에서 구현될 수 있는 방법(100)이 도시된다. 보이는 바와 같이, 방법(100)은 듀얼 승산-가산 명령을 수신함으로써 시작할 수 있다(블록 110). 이 명령은 예를 들어 프로세서 프론트 엔드에서 수신된 사용자 레벨 또는 매크로 명령일 수 있다. 이 명령의 수신에 응답하여, 명령은 예를 들어 역시 프론트 엔드의 명령 디코더에서 디코딩될 수 있다(블록 120).
다음으로, 디코딩된 명령은, 명령과 함께 수신된 하나 이상의 피연산자와 함께, 실행 유닛으로 전송될 수 있다(블록 130). 일부의 실시예에서, 이 실행 유닛은 승산-누산(MAC) 유닛일 수 있지만, 본 발명의 범위는 이에 제한되지 않는다. MAC 유닛으로 직접 전송되는 것으로 도시되지만, 일부의 구현예에서, 디코딩된 명령은 먼저 임시 저장소, 예를 들어, 디코딩 명령 큐(queue)에 저장된 후에 예를 들어 비순차 로직에 제공할 수 있고, 비순차 로직은 데이터 및 원하는 실행 유닛이 이용가능해짐에 따라 데이터에 대한 연산을 더 효율적으로 수행하기 위해 이 SUPERMADD 명령을 포함하는 프로그램의 명령 플로우를 리오더링하기로 결정할 수 있다.
도 1을 여전히 참조하면, 명령에 대한 모든 데이터가 이용가능해지고 소정의 실행 유닛이 또한 이용가능해지면, 제어가 블록(140)으로 넘어가서 디코딩 명령이 실행될 수 있다. 또한, 명령의 결과는 목적지 저장소에 저장될 수 있다. 예를 들어, 사용자 레벨 명령이 결과에 대한 목적지 위치를 식별할 수 있고, 목적지 위치는 벡터 레지스터에 대응할 수 있고 따라서 하나 이상의 벡터 형태의 결과 데이터가 적절하게 저장되어 결과는 추가의 프로그램 실행에 사용될 수 있다. 도 1의 실시예에서는 이 특정한 구현예로 도시되지만, 본 발명의 범위는 이에 제한되지 않는다.
그래픽 작업 부하들에서, SUPERMADD 명령을 사용하는 하나의 예는 픽셀 블록에 대하여 픽셀 보간을 처리하는 것이다. 이제 도 2를 참조하면, 그려질 다각형을 갖는 픽셀의 그룹의 블록도가 도시되어 있다. 도 2에 보이는 바와 같이, 픽셀 블록(180)은 4×4 픽셀 매트릭스일 수 있다. 도 2의 예에서 16개의 개별 픽셀로 도시되지만, 상이한 실시예에서, 더 많거나 더 적은 픽셀이 픽셀 블록을 구성할 수 있다. 예를 들어, 다른 구현예에서, SUPERMADD 명령은 더 적은 픽셀(예를 들어, 2×2 블록) 또는 더 많은 픽셀, 예를 들어, 16×16 이상의 블록에 대하여 수행될 수 있다. 또한, X 및 Y 차원의 픽셀의 수는 동일할 필요가 없고 베이스2 값을 가질 필요가 없다. 도 2에 도시된 바와 같이, 픽셀 블록(180) 내에서, 블록의 3개의 픽셀에 존재하는 정점을 갖는 삼각형(185)이 존재한다. 물론, 다른 구현예에서, 삼각형 또는 다른 다각형이 주어진 픽셀 블록 내에 존재하는 하나 이상의 정점을 가질 수 있고 또 다른 그러한 픽셀 블록으로 확장할 수 있다. 쉐이딩 동작, 예를 들어, 버텍스 쉐이딩 동작의 일부로서, 블록의 상이한 픽셀의 속성이 결정될 수 있다. 이러한 속성은 픽셀이 쉐이딩되는 하나 이상의 컬러(예를 들어, RGB 값)에 대응하는 속성 등의 다른 속성과 함께 픽셀 위치 정보, 예를 들어, XYZ 값에 대응할 수 있다.
도 2에 도시된 것 등의 픽셀의 블록을 처리할 때, 예를 들어, X 및 Y 방향의 픽셀에 관한 위치 정보가 먼저 블록의 단일 기준 픽셀을 이용하여 결정될 수 있다. 도 2를 참조하면, 픽셀(190)은 블록에 대한 기준 픽셀에 대응할 수 있다. 따라서, 이 단일 픽셀에 대한 XY 값에 기초하여, 이 기준 픽셀로부터 블록의 다른 픽셀의 각각에 대한 오프셋 값이 결정될 수 있다. 개별 계산을 수행하여 각각의 픽셀의 XY 오프셋을 결정하는(이는 32개의 상이한 가산 연산을 이용할 수 있음) 대신, 실시예는 공통 오프셋이 X 및 Y 방향의 다수의 픽셀에 적용될 수 있다는 사실을 이용하여 수행될 수학적 연산의 수를 감소시킬 수 있다.
픽셀 쉐이딩 동작에서, 픽셀 값이 결정된 후에, 상수가 각각의 값에 적용되어 추가의 연산에 제공될 수 있는 결과를 형성한다. 여기서, X 및 Y 값의 각각에 대한 개별 승산 연산을 수행하는 대신에, 실시예는 다시 이들 픽셀 값 각각에 단일 상수가 적용된다는 사실을 이용하여 수행되는 연산의 수를 감소시킬 수 있다.
이하에서 더 설명하는 바와 같이, 상이한 구현예는 다음의 일반 형태, AX+BY+C의 결과를 얻는데 수행되는 수학적 연산의 수를 최적화할 수 있으며, 여기서, X 및 Y는 기준 값이고 A, B 및 C는 상수 계수이다.
실시예가 수행될 필요가 있는 명령의 시퀀스를 단일 사용자 레벨 명령을 통해 어떻게 최적화할 수 있는지를 이해하기 위하여, 종래의 다수의 사용자 레벨 벡터 가산 및 승산 연산을 이용하여 원하는 결과를 얻도록 수행될 수 있는 예시적인 명령 세트를 고려하는 것이 유익하다.
표 1을 참조하면, 다수의 사용자 레벨 명령을 이용하여 상기 식의 결과를 실현하기 위하여 수행될 수 있는 예시적인 명령이 도시된다.
Figure 112013035537764-pct00001
요컨대, 이들 명령은, 벡터 레지스터를 픽셀 좌표 값(예를 들어, X 및 Y 값)으로 채우고, 승산을 실행하고, 그 후 추가로 상수를 각각의 픽셀에 더하여 결과를 실현하는데 사용될 수 있으며, 결과는 그래픽 작업 부하의 다른 부분에 의해 나중에 사용하기 위해 벡터 레지스터 등의 목적지 저장소에 저장될 수 있다. 설명의 목적으로, 벡터 레지스터는 16개의 개별 데이터 엘리먼트의 저장을 위해, 소위 16 폭 레지스터를 제공한다. 이 실시예에서, 각각의 데이터 엘리먼트는 부동 소수점 32 비트 포맷일 수 있지만, 16 비트 정수 값 등의 다른 포맷도 가능하다.
표 2를 참조하면, 각각의 픽셀 위치에서 평가된 평면 식 Ax+By+C의 결과에 대응하는 16개의 값의 세트를 얻기 위하여 표 1의 상기 명령에 의해 수행된 연산을 나타내는 표가 도시된다.
Figure 112013035537764-pct00002
보이는 바와 같이, 표 2의 제2 라인에서 시작하여, (100, 200)의 기준 픽셀 값, 즉, 기준 픽셀에 대하여 100의 X 값 및 200의 Y 값을 가정한다. 그 후, 벡터 가산에 대응할 수 있는 제1 가산 연산을 통해, 0, 1, 2 및 3의 값을 갖는 픽셀 오프셋이 기준 X 값에 더해질 수 있다. 이 종래의 연산에서, 16개의 상이한 가산 연산이 발생한다. (표 2의 제4 라인에 보이는 바와 같이) Y 기준 픽셀에 대하여 유사한 연산이 발생한다. 그러나, 대신에 4번째 픽셀 값마다 픽셀에 사용되는 값이 증가한다는 점에 유의한다. 그러나, 16개의 가산 연산은 여전히 수행된다. 이들 2개의 벡터 가산 명령은 한 쌍의 벡터 레지스터를 블록의 각각의 픽셀에 대한 XY 값에 대응하는 픽셀 오프셋 값으로 채운다. 그 후, 이들 개별 픽셀 값의 각각을 취하여, 이들을 주어진 상수 값(즉, X 픽셀에 대한 제1 계수(A) 및 Y 픽셀에 대한 제2 계수(B))으로 승산하고, 제1 벡터 승산 가산 명령에 대하여 추가의 값, 즉, 상수 값(C)을 가산하는 벡터 승산-가산 명령의 쌍이 수행된다. 따라서, 이들 4개의 벡터 명령의 결론에서, 그리고 16 폭 벡터를 16개의 픽셀의 픽셀 블록을 나타내는 것으로 가정하여, 상기 4개의 명령은 32개의 개별 가산 및 32개의 개별 승산 연산을 나타낸다. 또한, 32 비트 승산이 32개의 가산의 구현을 실질적으로 요구함에 따라 승산 연산은 계산적으로 비쌀 수 있다.
상술한 바와 같이, 다양한 실시예에서, 단일 벡터 승산-승산-가산 명령이 실행될 수 있다. 이 명령에 의해 및 대체할 수 있는 종래의 일련의 명령의 이해에 의해, 감소된 수의 가산 및 승산 연산에 대한 상이한 최적화가 실현되어 높은 계산, 면적 및 전력 소비 효율로 승산-승산-가산 명령을 수행할 수 있다.
감소된 가산 및 승산 연산의 일 예로서, 상기 표 2에 표시된 픽셀 오프셋 연산은 복수 회 동일한 계산을 수행한다는 것을 인식할 수 있다. 따라서, 하나의 최적화로서, 오프셋 값의 각각에 대하여 단일 계산만이 수행된다. 또한, 승산 연산은 가산 연산보다 비싸다는 것을 인식할 수 있다. 따라서, 단일 승산 연산이 수행되어 주어진 계수와 하나의 픽셀 값의 곱을 얻을 수 있고, 가산(및/또는 후술하는 바와 같이 감산)이 수행되어 다른 값을 얻을 수 있다.
이제 표 3을 참조하면, X 및 Y 방향에 대한 4개의 개별 픽셀 오프셋을 얻는 예시적인 연산이 도시된다.
Figure 112013035537764-pct00003
보이는 바와 같이, X 값(100) 및 Y 값(200)의 기준 픽셀을 가정하고, A×100의 단일 승산 연산이 수행될 수 있고, 그 후 3번의 가산 연산, 즉, A×100의 곱에 A, 2A 및 3A의 가산이 수행될 수 있다. 마찬가지로, 200의 값을 갖는 기준 픽셀(Y)에 대하여 동일한 연산이 수행될 수 있다.
추가의 최적화로서, 소정의 실시예는, 곱+3A의 가산이 가산 및 시프트 연산을 필요로 하기 때문에, 블록의 에지보다는 블록 내에 있는 다른 값(예를 들어, 상이한 픽셀 위치)이 기준 픽셀로서 사용될 수 있다는 사실을 이용할 수 있다. 예를 들어, (예를 들어 도 2에서 185로 마크된 픽셀에 대응하는) 101, 201의 XY 값을 갖는 기준 픽셀이 사용되는 것으로 가정한다. 이하의 표 4는 수행될 수 있는 연산, 즉, 해당 계수 및 이 기준 픽셀 값에 의한 단일 승산 및 3번의 가산 연산, 즉, -A, +A 및 +2A을 나타내고, 각각의 가산은 단순한 가산 연산을 통해 구현될 수 있다(Y 픽셀에 대하여 동일한 연산이 수행될 수 있다). 표 4를 참조하여, 2개의 벡터를 픽셀 오프셋 값으로 채우는 연산은 각각 단일 승산 및 3번의 가산 연산을 이용하여 수행될 수 있다.
Figure 112013035537764-pct00004
그 후 상수 값(C)의 가산으로 최종 결과를 실현하기 위하여, 16개의 가산 연산이 수행될 수 있다. 그러나, 다시 추가의 효율성이 존재할 수 있다는 것에 유의한다.
특히, 표 4에 대하여 상술한 제1 레벨 연산에 대신하여, 표 5에서처럼, 승산 연산은 승산-누산으로서 구현될 수 있고, 여기서 각각의 기준 값은 해당 계수와 승산하고 상수 값은 이들 곱의 합에 가산된다. 이것은 상술한 3번의 가산 연산 전에 발생한다.
Figure 112013035537764-pct00005
원하는 승산-승산-누산 명령의 결과를 효율적으로 얻기 위하여 다음의 표 6에 따른 연산이 수행될 수 있다.
Figure 112013035537764-pct00006
표 6에 보이는 바와 같이, 베이스 값은 2번의 승산 연산을 이용하여 얻어질 수 있고, 각각의 승산 연산은 계수에 대응하는 피승수 및 픽셀 기준 값에 대응하는 승수를 갖는다. 결과적인 2개의 곱은 그 후 상수 값(예를 들어, C)과 함께 합산되어 베이스 값을 실현할 수 있다. (예를 들어, X 값에 대한) 제1 계수가 가산되고, 감산되고, 2X 값이 또한 가산되어 3개의 가산 연산을 실현하여 벡터 레지스터의 소정의 엔트리를 채울(populate) 수 있다. 상기로부터 4개의 값을 이용하여, 즉, 베이스 값 및 이들 3개의 상이한 가산 연산의 합을 이용하여, 12번의 가산 연산이 수행될 수 있고, 즉, 3개의 중간 합 값의 각각은 제로, 제2 계수, 마이너스 제2 계수, 및 2×제2 계수와 합산될 수 있고, 그 결과는 벡터 레지스터의 나머지 엔트리를 채울 수 있다. 따라서, 2개의 단일 승산 및 17개의 가산 연산을 이용하여, 최종 결과가 달성된다. 이에 반해, 종래의 명령을 이용한 표 1 및 2를 다시 참조하면, 동일한 결과는 32번의 상이한 승산 및 64번의 가산 연산을 필요로 한다. 각각의 승산 연산은 대략 8개의 상이한 가산 연산에 대응하고, 상당한 계산 효율이 실현될 수 있다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 방법의 흐름도가 도시되어 있다. 특히, 도 3의 방법(200)은 예컨대 프로세서의 퓨즈드(fused) 부동 소수점 승산 누산 유닛에서 승산-승산-누산 명령을 실행하는데 수행되는 연산에 대응한다. 보이는 바와 같이, 방법(200)은 제1 피연산자 값과 제1 계수의 제1 승산을 수행함으로써 시작될 수 있다(블록 210). 특히, 상술한 보간에 관련하여, 제1 피연산자는 예를 들어 X 좌표축에서 기준 픽셀에 대응할 수 있고 제1 계수는 소정의 가중치 또는 상수에 대응할 수 있다. 유사한 승산 연산이 제2 피연산자와 제2 계수 사이에 수행될 수 있다(블록 220). 다시, 이 승산은 (예를 들어, Y 좌표 축에서의) 기준 픽셀 값과 제2 가중치 사이에 수행될 수 있다. 이어서 블록(230)에서, 2개의 곱이 제3항, 예를 들어, 상수(C)와 합산될 수 있다. 이 가산 연산은 베이스 값을 얻을 수 있다. 이 베이스 값은 목적지 저장소의 선택된 위치에 저장될 수 있다. 예를 들어, 베이스 값은 제1 좌표축(예를 들어, X축)에 대한 픽셀에 대한 보간 값에 대응할 수 있다. 그 후, 제어는 블록(240)로 진행하여 베이스 값과, 제1 계수, 제1 계수의 마이너스 값 및 제1 계수의 2배 사이에 가산들이 수행될 수 있다. 표 6에 기재된 바와 같이, 이들 값은 베이스 값에 적용될 수 있다. 또한, 이들 베이스 합 연산(즉, 베이스 합)의 결과가 목적지 저장소의 다수의 위치의 각각에 저장될 수 있다. 예를 들어, 16 폭 벡터에 관련하여, 베이스 합은 벡터 레지스터의 3개의 위치에 저장될 수 있다.
이제 블록(250)을 참조하여, 유사한 가산 연산, 즉, 이들 베이스 합 각각과, 제2 계수, 마이너스 제2 계수 및 제2 계수의 2배 사이의 가산이 수행될 수 있다. 마찬가지로, 이들 합의 각각은 단일 벡터 레지스터의 다른 부분 또는 제2 벡터 레지스터의 부분일 수 있는 목적지 저장소의 주어진 위치에 저장될 수 있다. 각각의 계수가 각각의 베이스 합과의 가산 연산을 통해 적용되어, 12개의 상이한 가산 연산을 야기하고 12개의 상이한 합을 각각 하나 이상의 목적지 저장소의 하나의 위치에 저장할 수 있다. 도 3의 실시예에서는 이 특정한 구현예가 도시되지만, 본 발명의 범위은 이에 제한되지 않는다. 또한, 도 3에 기재된 연산은 단일 승산-승산-누산 명령의 실행을 위한 것이며, 이는 이 명령 전후에 수행되는 추가의 연산을 갖는 그래픽 작업 부하(graphic workload)의 일부일 수 있다.
이제 도 4를 참조하면, 본 발명의 실시예에 따라 승산-승산-누산 명령을 처리하는 로직의 하드웨어 구현의 블록도이다. 로직(300)은 프로세서 파이프라인의 일부일 수 있다. 예를 들어, 로직(300)은 승산 누산 유닛, 예를 들어, 부동 소수점 승산 누산 유닛 등의 프로세서 내의 실행 유닛일 수 있다. 그러나, 다른 구현예에서, MAC 유닛과는 별도의 전용 회로가 사용될 수 있다.
여전히 도 4를 참조하여, 로직(300)은 승산기 및 가산기를 포함하는 복수의 레벨을 갖는 트리 구조로서 구현될 수 있다. 도 4에 도시된 특정한 구현예에서, 2개의 승산기 및 17개의 가산기가 존재할 수 있지만, 본 발명의 범위는 이에 한정되지 않는다. 일반적으로, 로직(300)은 승산-승산-가산 연산을 수행하여 벡터에 다수의 데이터 엘리먼트를 덧붙이도록 구성될 수 있고, 각각의 데이터 엘리먼트는 예를 들어 픽셀 블록의 주어진 픽셀에 대한 값에 대응한다.
보이는 바와 같이, 로직(300)의 제1 레벨은 승산기쌍(305a-305b)를 포함할 수 있고, 이들 각각의 승산기는 입력 기준 값(예를 들어, X 및 Y)을 해당 계수(예를 들어, A 및 B)와 승산한다. 결과적인 곱은 2개의 곱을 더하여 제1 합을 얻는 제1 가산기(310)에 제공될 수 있고, 제1 합은 그 후 제2 가산기(320)에서 제3 계수(예를 들어, C)와 결합된다. 이 결과적인 베이스 항은 그 후 다른 레벨의 가산기들(330a-330c)에 제공될 수 있고, 각각의 가산기는 제1 계수(예를 들어, A, -A 및 2A)의 표현 사이의 가산을 수행한다. 이들 결과적인 합은 그 후 다른 레벨의 가산기들(340a-340c)에 제공되고, 각각의 가산기는 제2 레벨의 해당 가산기로부터의 합과 제2 계수(예를 들어, 0, B, -B 및 2B)의 표현을 가산하는 복수의 개별 가산기를 포함한다. 가산기의 각각의 결과적인 합은 상술한 바와 같이 하나 이상의 벡터 레지스터에 덧붙여져 예를 들어 그래픽 처리시 연산을 효율적으로 수행할 수 있다. 도 4의 실시예에서 이 특정한 구현예가 도시되지만, 본 발명의 범위는 이에 제한되지 않는다.
도 5는 본 발명의 실시예에 따른 MAC 유닛의 블록도이다. 보이는 바와 같이, MAC 유닛(400)은 주어진 연산의 실행을 지시하는 입력 명령(예를 들어, 하나 이상의 μop의 형태로) 및 연관된 피연산자를 수신하도록 구성될 수 있다. SUPERMADD 명령의 컨텍스트에서, 피연산자는 다수의 기준 값, 계수, 상수 등을 포함할 수 있다. 예를 들어, 일 실시예에서, 사용자 레벨 명령은 연산 코드 및 다수의 입력 값을 포함할 수 있고 다음의 형태를 취할 수 있다.
SUPERMADD 피연산자1, 피연산자2
여기서, 피연산자1은 메모리에 저장된 A, B, C(일 실시예에서, 각각 서로 옆에 저장된 FP32 값일 수 있음)를 갖는 메모리 위치이고, 피연산자2는 레지스터(예를 들어 X 및 Y에 대한 2개의 32 비트 정수 값을 유지하는 64 비트 정수 레지스터)이다. 다른 실시예에서, 레지스터는 X 및 Y에 대한 2개의 16 비트 정수 값을 유지하는 32 비트 정수 레지스터일 수 있다. 다른 실시예에서, 레지스터는 X 및 Y에 대한 2개의 8 비트 정수 값을 유지하는 16 비트 정수 레지스터일 수 있다.
여전히 도 5를 참조하면, MAC 유닛은 승산기(410a-410b)를 포함하고, 각각의 승산기는 일 실시예에서 압축기 트리로서 구현될 수 있다. 승산기로부터 얻어진 곱은 복수의 가산기 레벨(420a-420d) 중 선택된 것에 적용될 수 있다. 이러한 4개의 레벨로서 도시되지만, 더 많거나 적은 레벨이 상이한 실시예에 존재할 수 있다. 또한, 임시 저장소(430)는 베이스 항, 중간 값, 최종 값 등의 MAC 유닛에서 산출된 값의 중간 저장을 제공할 수 있다.
이제 도 6을 참조하면, 본 발명의 일 실시예에 따른 프로세서 코어의 블록도가 도시되어 있다. 도 6에 도시된 바와 같이, 프로세서 코어(500)는 멀티스테이지 파이프라인 비순차 프로세서일 수 있다. 프로세서 코어(500)는 본 발명의 실시예에 따라 SUPERMADD 명령의 실행과 연관하여 사용되는 다양한 특징을 나타내기 위해 도 6에서 비교적 간략화된 도시로 도시되어 있다. 도 6에 도시된 바와 같이, 코어(500)는, 프로세서에서 실행될 명령을 페치하고 그 명령을 프로세서에서 나중에 사용할 수 있도록 준비하는데 사용될 수 있는 프론트 엔드 유닛(510)을 포함한다. 예를 들어, 프론트 엔드 유닛(510)은 페치 유닛(501), 명령 캐시(503) 및 명령 디코더(505)를 포함할 수 있다. 일부의 구현예에서, 프론트 엔드 유닛(510)은 마이크로오퍼레이션 저장 장치뿐만 아니라 마이크로코드 저장 장치와 함께 트레이스 캐시(trace cache)를 더 포함할 수 있다. 페치 유닛(501)은 예를 들어 메모리 또는 명령 캐시(503)로부터 매크로 명령을 페치하고 그 매크로 명령을 명령 디코더(505)로 공급하여 프리미티브(primitive), 즉, 프로세서에 의해 실행될 마이크로오퍼레이션으로 디코딩한다. 프론트 엔드 유닛(510)에서 처리될 이러한 하나의 명령은 본 발명의 실시예에 따른 사용자 레벨 SUPERMADD 명령일 수 있다. 이러한 명령은 프론트 엔드 유닛이 다양한 마이크로오퍼레이션을 액세스하도록 하여 상술한 바와 같이 연산의 실행을 가능하게 한다.
프론트 엔드 유닛(510)과 실행 유닛(520) 사이에는 마이크로 명령을 수신하고 실행을 위해 마이크로 명령을 준비하는데 사용될 수 있는 비순차(out-of-order; OOO) 엔진(515)이 결합된다. 특히, OOO 엔진(515)은, 마이크로 명령 플로우를 리오더링하고 실행에 필요한 다양한 자원을 할당하고 레지스터 파일(530) 및 확장 레지스터 파일(535) 등의 다양한 레지스터 파일 내의 저장 위치로의 논리적 레지스터의 재명명을 제공하는 다양한 버퍼를 포함할 수 있다. 레지스터 파일(530)은 정수 및 부동 소수점 연산에 대한 개별 레지스터 파일을 포함할 수 있다. 확장 레지스터 파일(535)은 레지스터마다 벡터 사이즈 유닛, 예를 들어, 256 또는 512 비트의 저장을 제공할 수 있다.
여러 특수 하드웨어 중에서, 예를 들어, 다양한 정수, 부동 소수점 및 SIMD(single instruction multiple data) 로직 유닛을 포함하는 다양한 자원이 실행 유닛(520)에 존재할 수 있다. 예를 들어, 이러한 실행 유닛은 하나 이상의 산술 로직 유닛(ALU)(522)을 포함할 수 있다. 또한, 본 발명의 실시예에 따른 MAC 유닛(524)이 존재할 수 있다.
실행 유닛으로부터의 결과는 퇴거 로직(retirement logic), 즉, 리오더 버퍼(ROB)(540)에 제공될 수 있다. 특히, ROB(540)는 실행되는 명령과 연관된 정보를 수신하는 다양한 어레이 및 로직을 포함할 수 있다. 그 후, 이 정보를 ROB(540)가 조사하여 명령이 유효하게 퇴거되고 결과 데이터가 프로세서의 아키텍처 상태에 커밋(commit)될 수 있는지, 또는 명령의 적절한 퇴거를 막는 하나 이상의 예외가 발생했는지를 결정한다. 물론, ROB(540)는 퇴거와 연관된 다른 연산을 처리할 수 있다.
도 6에 도시된 바와 같이, ROB(540)는, 일 실시예에서, 로우 레벨 캐시(예를 들어, L1 캐시)일 수 있는 캐시(550)에 결합되지만, 본 발명은 이에 제한되지 않는다. 또한, 실행 유닛(520)은 캐시(550)에 직접 결합될 수 있다. 캐시(550)로부터, 더 높은 레벨의 캐시, 시스템 메모리 등과의 데이터 통신이 발생할 수 있다. 도 6의 실시예에서 하이 레벨로 도시되지만, 본 발명의 범위는 이에 제한되지 않는다. 예를 들어, 도 6의 구현예는 예컨대 소위 x86 ISA 아키텍처의 비순차 머신에 대한 것이지만, 본 발명의 범위는 이에 제한되지 않는다. 즉, 다른 실시예는 순차 프로세서, ARM 기반 프로세서 등의 RISC(reduced instruction set computing) 프로세서, 또는 도 8에 대하여 이하에서 도시된 바와 같은 에뮬레이션 엔진 및 연관된 로직 회로를 통해 상이한 ISA의 명령 및 연산을 에뮬레이팅할 수 있는 다른 타입의 ISA의 프로세서에서 구현될 수 있다.
이제 도 7을 참조하면, 본 발명의 실시예에 따른 프로세서의 블록도가 도시되어 있다. 도 7에 도시된 바와 같이, 프로세서(600)는 복수의 코어(610a-610n)를 포함하는 멀티코어 프로세서일 수 있다. 일 실시예에서, 이러한 각각의 코어는 도 6에서 상술한 코어(500)로서 구성될 수 있다. 다양한 코어는 접속부(615)를 통해 다양한 컴포넌트를 포함하는 언코어(uncore)(620)에 결합될 수 있다. 보이는 바와 같이, 언코어(620)는 마지막 레벨 캐시일 수 있는 공유 캐시(630)를 포함할 수 있다. 또한, 언코어는 IMC(integrated memory controller)(640), 다양한 인터페이스(650) 및 전력 관리 유닛(655)을 포함할 수 있고, 전력 관리 유닛은 소정의 코어를 설정할 적절한 저전력 상태를 결정할 수 있다. 또한, 전력 관리 유닛(655)은 복수의 제어 신호를 생성하여 주어진 코어뿐만 아니라 다른 프로세서 유닛의 다양한 컴포넌트들이 저전력 상태로 들어가도록 할 수 있다. 보이는 바와 같이, 프로세서(600)는 예를 들어 메모리 버스를 통해 시스템 메모리(660)와 통신할 수 있다. 또한, 인터페이스(650)에 의해 주변 장치, 대용량 저장 장치 등의 다양한 오프칩(off-chip) 컴포넌트에 접속될 수 있다. 도 7의 실시예에서 이 특정 구현예가 도시되지만, 본 발명은 이에 제한되지 않는다.
다른 실시예에서, 프로세서 아키텍처는 프로세서가 소스 ISA라 불리우는 제1 ISA의 명령을 실행할 수 있도록 에뮬레이션 특징을 포함할 수 있고, 여기서 아키텍처는 타겟 ISA라 불리는 제2 ISA에 따른다. 일반적으로, OS 및 애플리케이션 프로그램을 포함하는 소프트웨어가 소스 ISA로 컴파일링되고, 하드웨어가 특수 성능 및/또는 에너지 효율 특징을 가지고 주어진 하드웨어 구현을 위해 특별히 설계된 타겟 ISA를 구현한다.
이제 도 8을 참조하면, 본 발명의 다른 실시예에 따른 프로세서의 블록도가 도시되어 있다. 도 8에 나타낸 바와 같이, 시스템(700)은 프로세서(710) 및 메모리(720)를 포함한다. 메모리(720)는 시스템 및 애플리케이션 소프트웨어를 유지하는 종래의 메모리(722) 및 타겟 ISA를 위해 설치된 소프트웨어를 유지하는 은폐 메모리(724)를 포함한다. 보이는 같이, 프로세서(710)는 소스 코드를 타겟 코드로 변환하는 에뮬레이션 엔진(730)을 포함한다. 에뮬레이션은 해석(interpretation) 또는 바이너리 변환으로 수행될 수 있다. 코드를 처음 만났을 때 종종 그것에 해석이 사용된다. 그 후, 빈번히 실행되는 코드 영역(예를 들어, 핫스팟)이 다이나믹 프로파일링을 통해 발견됨에 따라, 그 코드 영역은 타겟 ISA로 변환되고 은폐 메모리(724) 내의 코드 캐시에 저장된다. 변환 프로세스의 일부로서 최적화가 수행되고 매우 자주 사용되는 코드는 나중에 한층 더 최적화될 수 있다. 코드의 변환된 블록은 코드 캐시(724)에 유지되어 반복적으로 재사용될 수 있다.
도 8을 여전히 참조하면, 멀티코어 프로세서의 하나의 코어일 수 있는 프로세서(710)는 명령 캐시(I-캐시)(750)에 명령 포인터 어드레스를 제공하는 프로그램 카운터(740)를 포함한다. 보이는 바와 같이, I-캐시(750)는 또한 주어진 명령 어드레스에 대해 미스(miss) 시에 은폐 메모리부(724)로부터 직접 타겟 ISA 명령을 수신할 수 있다. 따라서, I-캐시(750)는, 매크로 명령 레벨에 있을 수 있는 입력 명령을 수신하고 프로세서 파이프라인(770) 내에서 실행하기 위하여 명령을 마이크로 명령으로 변환하는 타겟 ISA의 디코더일 수 있는 디코더(760)에 제공될 수 있는 타겟 ISA 명령을 저장할 수 있다. 본 발명은 이에 제한되지 않지만, 파이프라인(770)은 명령을 수행하고 퇴거시키는 다양한 스테이지를 포함하는 비순차 파이프라인일 수 있다. 상술한 다양한 실행 유닛이 본 발명의 실시예에 따라 사용자 레벨 듀얼 승산-누산 명령을 실행하기 위해 파이프라인(770) 내에 존재할 수 있다. 즉, 프로세서(710)가 사용자 레벨 승산-승산 누산 명령이 제공되는 마이크로 아키텍처와 상이한 마이크로 아키텍처인 구현예에서도, 명령은 기본 하드웨어 상에서 실행될 수 있다.
실시예는 많은 상이한 시스템 타입으로 구현될 수 있다. 도 9를 참조하면, 본 발명의 실시예에 따른 시스템의 블록도가 도시된다. 도 9에 도시된 바와 같이, 마이크로프로세서 시스템(800)은 포인트-투-포인트 상호 접속 시스템이고 포인트-투-포인트 상호 접속부(850)를 통해 결합된 제1 프로세서(870) 및 제2 프로세서(880)를 포함한다. 도 9에 도시된 바와 같이, 프로세서(870 및 880)의 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(874a 및 874b) 및 프로세서 코어(884a 및 884b))를 포함하는 멀티코어 프로세서일 수 있지만, 잠재적으로 더 많은 코어가 프로세서 내에 존재할 수 있다. 상술한 바와 같이, 프로세서 코어는 본 발명의 실시예에 따라 사용자 레벨 승산-승산 명령을 수행하는 MAC 유닛 또는 다른 로직을 포함할 수 있다.
도 9를 여전히 참조하면, 제1 프로세서(870)는 MCH(memory controller hub)(872) 및 포인트-투-포인트(P-P) 인터페이스(876 및 878)를 더 포함한다. 마찬가지로, 제2 프로세서(880)는 MCH(882) 및 P-P 인터페이스(886 및 888)를 포함한다. 도 9에 도시된 바와 같이, MCH(872 및 882)는 프로세서를 각각의 프로세서에 국부적으로 부착된 메인 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))의 일부일 수 있는 각각의 메모리, 즉, 메모리(832) 및 메모리(834)에 결합한다. 제1 프로세서(870) 및 제2 프로세서(880)는 각각 P-P 상호 접속부(852 및 854)를 통해 칩셋(890)에 결합될 수 있다. 도 9에 도시된 바와 같이, 칩셋(890)은 P-P 인터페이스(894 및 898)를 포함한다.
또한, 칩셋(890)은 칩셋(890)을 P-P 상호 접속부(839)에 의해 고성능 그래픽 엔진(838)과 결합하는 인터페이스(892)를 포함한다. 칩셋(890)은 인터페이스(896)를 통해 제1 버스(816)에 결합될 수 있다. 도 9에 도시된 바와 같이, 다양한 입출력(I/O) 장치(814)가 제1 버스(816)를 제2 버스(820)에 결합하는 버스 브리지(818)와 함께 제1 버스(816)에 결합될 수 있다. 일 실시예에서, 예를 들어 키보드/마우스(822), 통신 장치(826), 및 코드(830)를 포함할 수 있는 디스크 드라이버 또는 다른 대용량 저장 장치 등의 데이터 저장 유닛(828)을 포함하는 다양한 장치가 제2 버스(820)에 결합될 수 있다. 또한, 오디오 I/O(824)가 제2 버스(820)에 결합될 수 있다.
실시예는 코드로 구현될 수 있고 명령을 수행하도록 시스템을 프로그래밍하는데 사용될 수 있는 명령이 저장된 저장 매체 상에 저장될 수 있다. 저장 매체는, 제한되지 않지만, 플로피 디스크, 광 디스크, 광 디스크를 포함하는 디스크, SSD(solid state drives), 콤팩트 디스크 판독 전용 메모리(CD-ROM), CD-RW(compact disk rewritable), 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM) 등의 랜덤 액세스 메모리(RAM), 소거가능 프로그래머블 판독 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거가능한 프로그래머블 판독 전용 메모리(EEPROM), 자기 또는 광 카드, 또는 전자 명령을 저장하기에 적합한 임의의 다른 타입의 미디어와 같은 임의의 타입의 비일시적(non-transitory) 저장 매체를 포함할 수 있다.
본 발명은 제한된 수의 실시예에 대하여 설명하였지만, 당업자는 이로부터 수많은 변형 및 변경을 인식할 것이다. 첨부된 청구범위는 본 발명의 사상 및 범위 내에 있는 모든 이러한 변형 및 변경을 커버하는 것으로 의도된다.

Claims (20)

  1. 복수의 실행 유닛을 갖는 프로세서를 포함하고,
    상기 실행 유닛들 중 적어도 하나는 회로를 포함하고,
    상기 회로는,
    제1 기준 값과 제1 계수를 승산하여 제1 곱을 얻는 제1 승산기;
    제2 기준 값과 제2 계수를 승산하여 제2 곱을 얻는 제2 승산기;
    상기 제1 및 제2 곱을 결합하여 제1 합을 얻는 제1 가산기;
    상기 제1 합과 상수를 결합하여 베이스 값을 얻는 제2 가산기;
    상기 베이스 값을 상기 제1 계수의 복수의 표현(representation) 중의 하나와 결합하여 제1 합 세트를 각각이 얻는 제3 레벨의 가산기들; 및
    상기 제1 합 세트를 상기 제2 계수의 복수의 표현 중의 하나와 결합하여 제2 합 세트를 각각이 얻는 제4 레벨의 가산기들
    을 포함하고,
    상기 회로는 상기 제3 및 제4 레벨의 가산기들 중의 하나의 출력을 각각이 저장하기 위한 복수의 위치를 갖는 벡터 목적지 저장소를 채우는(populate) 것인 장치.
  2. 제1항에 있어서, 상기 복수의 위치의 각각의 위치는 픽셀 블록의 픽셀에 대응하는 장치.
  3. 제1항에 있어서, 상기 회로는 승산-누산(MAC) 유닛의 일부인 장치.
  4. 제1항에 있어서, 상기 회로는 사용자 레벨 승산-승산-가산 명령에 응답하여 상기 벡터 목적지 저장소를 채우는 것인 장치.
  5. 제4항에 있어서, 상기 회로는 상기 제1 및 제2 기준 값 및 상기 사용자 레벨 승산-승산-가산 명령과 연관된 상기 상수를 수신하는 것인 장치.
  6. 제5항에 있어서, 상기 프로세서는 상기 제1 및 제2 기준 값 및 상기 사용자 레벨 승산-승산-가산 명령을 수신하는 프론트 엔트 유닛을 더 포함하는 장치.
  7. 제4항에 있어서, 상기 회로는 상기 사용자 레벨 승산-승산-가산 명령에 응답하여 2번의 승산 연산 및 16번보다 많은 가산 연산을 수행하는 것인 장치.
  8. 프로세서의 프론트 엔드 유닛에서 듀얼 승산-가산 명령을 수신하는 단계;
    상기 듀얼 승산-가산 명령을 디코딩하고 상기 디코딩된 명령 및 이에 따른 피연산자를 상기 프로세서의 실행 유닛으로 전송하는 단계; 및
    상기 실행 유닛에서 상기 디코딩된 명령을 실행하는 단계
    를 포함하고,
    상기 실행하는 단계는 복수의 승산 연산, 제1 가산 및 제2 가산을 수행하여 베이스 값을 얻는 단계, 제1 세트의 가산기들에서 상기 베이스 값을 조작하여 중간 합 값들을 얻는 단계, 제2 세트의 가산기들에서 상기 중간 합 값들 각각을 조작하여 최종 합 값들을 얻는 단계, 및 적어도 상기 중간 합 값들 및 최종 합 값들을 목적지 저장소에 저장하는 단계를 포함하는 방법.
  9. 제8항에 있어서, 상기 복수의 승산 연산을 수행하는 단계는,
    제1 피연산자와 제1 계수의 제1 승산을 수행하여 제1 곱을 얻는 단계; 및
    제2 피연산자와 제2 계수의 제2 승산을 수행하여 제2 곱을 얻는 단계
    를 포함하는 방법.
  10. 제9항에 있어서, 상기 제1 가산을 수행하는 단계는 상기 제1 곱과 상기 제2 곱을 결합하여 제1 합을 얻는 단계를 포함하는 방법.
  11. 제10항에 있어서, 상기 제2 가산을 수행하는 단계는 상기 제1 합과 상수를 결합하여 상기 베이스 값을 얻는 단계를 포함하는 방법.
  12. 제11항에 있어서, 상기 베이스 값을 조작하는 단계는 상기 베이스 값과, 상기 제1 계수, 상기 제1 계수의 마이너스 값, 및 상기 제1 계수의 2배 사이의 가산 연산들을 수행하여 상기 중간 합 값들을 얻는 단계를 포함하는 방법.
  13. 제12항에 있어서, 상기 중간 합 값들 각각을 조작하는 단계는 상기 중간 합 값들 각각과, 상기 제2 계수, 상기 제2 계수의 마이너스 값, 및 상기 제2 계수의 2배 간의 가산 연산들을 수행하여 상기 최종 합 값들을 얻는 단계를 포함하는 방법.
  14. 복수의 실행 유닛을 갖는 프로세서 - 상기 실행 유닛들 중 적어도 하나는, 복수의 승산기 및 복수의 가산기를 포함하는 승산-누산(MAC) 유닛을 포함하고 사용자 레벨 승산-승산-누산 명령을 실행하여 목적지 저장소를 픽셀 블록의 픽셀에 대한 값에 각각 대응하는 복수의 엘리먼트로 채우는 회로를 포함하고, 상기 복수의 가산기의 수는 상기 픽셀 블록 내의 픽셀의 수를 초과함 -; 및
    상기 프로세서에 결합된 동적 랜덤 액세스 메모리(DRAM)
    를 포함하는 시스템.
  15. 제14항에 있어서, 상기 MAC 유닛은 상기 사용자 레벨 승산-승산-누산 명령의 단일 명령에 응답하여 복수의 승산 연산 및 복수의 가산 연산을 수행하는 것인 시스템.
  16. 제15항에 있어서, 상기 단일 명령은 제1 기준 엘리먼트 및 제2 기준 엘리먼트, 제1 계수 및 제2 계수, 및 상수와 연관되는 시스템.
  17. 제16항에 있어서, 상기 MAC 유닛은,
    상기 제1 기준 엘리먼트를 상기 제1 계수와 승산하여 제1 곱을 얻는 제1 승산기;
    상기 제2 기준 엘리먼트를 상기 제2 계수와 승산하여 제2 곱을 얻는 제2 승산기;
    상기 제1 곱과 상기 제2 곱을 결합하여 제1 합을 얻는 제1 가산기; 및
    상기 제1 합과 상기 상수를 결합하여 베이스 값을 얻는 제2 가산기
    를 포함하는 시스템.
  18. 제17항에 있어서, 상기 MAC 유닛은,
    상기 베이스 값을 상기 제1 계수의 복수의 표현(representation) 중의 하나와 결합하여 제1 합 세트를 얻는 제3 레벨의 가산기들 - 상기 제1 합 세트의 각각은 절대값들 중의 하나에 대응함 - ; 및
    상기 제1 합 세트를 상기 제2 계수의 복수의 표현 중의 하나와 결합하여 제2 합 세트를 얻는 제4 레벨의 가산기들 - 상기 제2 합 세트의 각각은 절대값들 중의 하나에 대응함 -
    을 더 포함하는 시스템.
  19. 제17항에 있어서, 베이스 합은 절대값들 중의 하나에 대응하는 시스템.
  20. 제15항에 있어서, 상기 MAC 유닛은 상기 단일 명령에 응답하여 상기 복수의 승산 연산 및 X보다 많은 가산 연산을 수행하고, X는 상기 목적지 저장소의 상기 복수의 엘리먼트의 수에 대응하고, 상기 MAC 유닛은 X보다 많은 가산기를 포함하는 시스템.
KR1020137010323A 2010-09-24 2011-09-24 승산-승산-누산 명령 수행 KR101515311B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/889,916 US8478969B2 (en) 2010-09-24 2010-09-24 Performing a multiply-multiply-accumulate instruction
US12/889,916 2010-09-24
PCT/US2011/053154 WO2012040666A2 (en) 2010-09-24 2011-09-24 Performing a multiply-multiply-accumulate instruction

Publications (2)

Publication Number Publication Date
KR20130056905A KR20130056905A (ko) 2013-05-30
KR101515311B1 true KR101515311B1 (ko) 2015-04-24

Family

ID=45871877

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137010323A KR101515311B1 (ko) 2010-09-24 2011-09-24 승산-승산-누산 명령 수행

Country Status (7)

Country Link
US (3) US8478969B2 (ko)
KR (1) KR101515311B1 (ko)
CN (1) CN103221916B (ko)
DE (1) DE112011103213T5 (ko)
GB (1) GB2497698B (ko)
TW (1) TWI528276B (ko)
WO (1) WO2012040666A2 (ko)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650240B2 (en) * 2009-08-17 2014-02-11 International Business Machines Corporation Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US9600281B2 (en) * 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
TWI476640B (zh) 2012-09-28 2015-03-11 Ind Tech Res Inst 時間資料序列的平滑化方法與裝置
CN103268223B (zh) * 2013-04-26 2016-06-29 深圳中微电科技有限公司 在编译过程中改善乘加类指令执行性能的方法
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
WO2018174936A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and apparatuses for tile matrix multiplication and accumulation
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
CN108475188A (zh) * 2017-07-31 2018-08-31 深圳市大疆创新科技有限公司 数据处理方法和设备
KR102491068B1 (ko) * 2017-11-17 2023-01-19 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
US11816483B2 (en) 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US10432240B1 (en) 2018-05-22 2019-10-01 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
KR20200072307A (ko) * 2018-12-12 2020-06-22 삼성전자주식회사 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US10763905B1 (en) 2019-06-07 2020-09-01 Micron Technology, Inc. Wireless devices and systems including examples of mismatch correction scheme
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
CN112579042B (zh) * 2019-09-29 2024-04-19 广州希姆半导体科技有限公司 计算装置及方法、芯片、电子设备及计算机可读存储介质
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US10972139B1 (en) 2020-04-15 2021-04-06 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise with neural networks or recurrent neural networks
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US11496341B2 (en) 2020-08-13 2022-11-08 Micron Technology, Inc. Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks
US20220057993A1 (en) * 2020-08-21 2022-02-24 Memryx Incorporated Martix multiplication engines
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions
TWI752713B (zh) 2020-11-04 2022-01-11 臺灣發展軟體科技股份有限公司 資料處理電路及故障減輕方法
US12001385B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
US12001887B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009502A1 (en) 2001-06-29 2003-01-09 Nec Corporation Complex vector operation processor with pipeline processing function and system using the same
US20030229659A1 (en) 2002-06-08 2003-12-11 Dror Halahmi Bit exactness support in dual-MAC architecture
US20100121898A1 (en) 2008-11-10 2010-05-13 Crossfield Technology LLC Floating-point fused dot-product unit

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4563750A (en) * 1983-03-04 1986-01-07 Clarke William L Fast Fourier transform apparatus with data timing schedule decoupling
US4665500A (en) * 1984-04-11 1987-05-12 Texas Instruments Incorporated Multiply and divide unit for a high speed processor
US6003058A (en) * 1997-09-05 1999-12-14 Motorola, Inc. Apparatus and methods for performing arithimetic operations on vectors and/or matrices
US6446193B1 (en) * 1997-09-08 2002-09-03 Agere Systems Guardian Corp. Method and apparatus for single cycle processing of data associated with separate accumulators in a dual multiply-accumulate architecture
US6571268B1 (en) * 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US6523055B1 (en) * 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle
US6820189B1 (en) * 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6611856B1 (en) * 1999-12-23 2003-08-26 Intel Corporation Processing multiply-accumulate operations in a single cycle
JP3935678B2 (ja) * 2001-01-31 2007-06-27 富士通株式会社 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US7010558B2 (en) * 2001-04-19 2006-03-07 Arc International Data processor with enhanced instruction execution and method
US7107305B2 (en) * 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
JP4408712B2 (ja) * 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
US7467176B2 (en) * 2004-02-20 2008-12-16 Altera Corporation Saturation and rounding in multiply-accumulate blocks
US7353244B2 (en) * 2004-04-16 2008-04-01 Marvell International Ltd. Dual-multiply-accumulator operation optimized for even and odd multisample calculations
US8631224B2 (en) * 2007-09-13 2014-01-14 Freescale Semiconductor, Inc. SIMD dot product operations with overlapped operands

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009502A1 (en) 2001-06-29 2003-01-09 Nec Corporation Complex vector operation processor with pipeline processing function and system using the same
US20030229659A1 (en) 2002-06-08 2003-12-11 Dror Halahmi Bit exactness support in dual-MAC architecture
US20100121898A1 (en) 2008-11-10 2010-05-13 Crossfield Technology LLC Floating-point fused dot-product unit

Also Published As

Publication number Publication date
WO2012040666A3 (en) 2012-07-19
US20130179661A1 (en) 2013-07-11
US20140149717A1 (en) 2014-05-29
US8683183B2 (en) 2014-03-25
WO2012040666A2 (en) 2012-03-29
TW201218070A (en) 2012-05-01
CN103221916A (zh) 2013-07-24
US20120079252A1 (en) 2012-03-29
GB2497698B (en) 2019-10-02
DE112011103213T5 (de) 2013-08-01
GB201305501D0 (en) 2013-05-08
US8478969B2 (en) 2013-07-02
TWI528276B (zh) 2016-04-01
CN103221916B (zh) 2016-08-17
KR20130056905A (ko) 2013-05-30
GB2497698A (en) 2013-06-19
US9110655B2 (en) 2015-08-18

Similar Documents

Publication Publication Date Title
KR101515311B1 (ko) 승산-승산-누산 명령 수행
US11797302B2 (en) Generalized acceleration of matrix multiply accumulate operations
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
KR101105527B1 (ko) 내적 연산을 수행하기 위한 명령 및 논리
US11816481B2 (en) Generalized acceleration of matrix multiply accumulate operations
Thakkur et al. Internet streaming SIMD extensions
US11188330B2 (en) Vector multiply-add instruction
KR101009095B1 (ko) 다목적 배정도 기능 유닛을 구비한 그래픽 프로세서
Oberman et al. AMD 3DNow! technology: Architecture and implementations
Raman et al. Implementing streaming SIMD extensions on the Pentium III processor
JP5201641B2 (ja) 重複オペランドを使用したsimdの内積演算
KR20210086447A (ko) 행렬 연산 가속기의 명령어들을 위한 장치들, 방법들, 및 시스템들
US7580968B2 (en) Processor with scaled sum-of-product instructions

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
FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee