KR100958964B1 - 단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛 - Google Patents

단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛 Download PDF

Info

Publication number
KR100958964B1
KR100958964B1 KR1020077014564A KR20077014564A KR100958964B1 KR 100958964 B1 KR100958964 B1 KR 100958964B1 KR 1020077014564 A KR1020077014564 A KR 1020077014564A KR 20077014564 A KR20077014564 A KR 20077014564A KR 100958964 B1 KR100958964 B1 KR 100958964B1
Authority
KR
South Korea
Prior art keywords
flag register
execution engine
bits
bit
simd
Prior art date
Application number
KR1020077014564A
Other languages
English (en)
Other versions
KR20070089208A (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 KR20070089208A publication Critical patent/KR20070089208A/ko
Application granted granted Critical
Publication of KR100958964B1 publication Critical patent/KR100958964B1/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/30094Condition code generation, e.g. Carry, Zero flag
    • 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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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
    • 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
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

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

Abstract

몇몇 실시예에 따르면, 단일 명령어 다중 데이터(SIMD) 실행 엔진의 플래그 레지스터들에 대한 평가 유닛이 제공될 수 있다. 예를 들어, 수평 평가 유닛은 SIMD 실행 엔진에 의해 처리되고 있는 다수의 벡터에 대한 평가 연산을 수행할 수 있다. 몇몇 실시예에 따르면, 수직 평가 유닛은 다수의 플래그 레지스터에 대한 평가 연산을 수행할 수 있다.
단일 명령어 다중 데이터 실행 엔진, 수평 평가 유닛, 수직 평가 유닛, 플래그 레지스터

Description

단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용 평가 유닛{EVALUATION UNIT FOR SINGLE INSTRUCTION, MULTIPLE DATA EXECUTION ENGINE FLAG REGISTERS}
처리 시스템의 성능을 향상시키기 위하여, 명령어가 단일 명령어 주기에 다수의 데이터 피연산자에 대해 동시에 실행될 수 있다. 이러한 명령어는 단일 명령어 다중 데이터(SIMD) 명령어로 지칭될 수 있다. 예를 들어, 8 채널 SIMD 실행 엔진이 8개의 32비트 데이터 피연산자에 대해 명령어를 동시에 실행할 수 있는데, 각각의 피연산자는 SIMD 실행 엔진의 고유 계산 채널에 맵핑된다. 더욱이, 하나 이상의 플래그 레지스터가 사용될 수 있는데, 각각의 플래그 레지스터는 실행 엔진의 각 채널과 연관된 위치들을 갖는다(예를 들어, 3개의 8비트 플래그 레지스터가 8채널 SIMD 실행 엔진에 제공될 수 있다). 여러 방법으로 플래그 레지스터 정보에 효율적이고 유연하게 액세스할 수 있는 능력이 실행 엔진의 성능을 향상시킬 수 있다.
도 1 및 도 2는 처리 시스템을 나타내는 도면.
도 3은 거의 동시에 2개의 벡터를 처리하는 처리 시스템을 나타내는 도면.
도 4는 몇몇 실시예에 따른 SIMD 실행 엔진 플래그 레지스터에 대한 수평 평 가 유닛을 나타내는 도면.
도 5는 몇몇 실시예에 따른 방법의 흐름도.
도 6은 몇몇 실시예에 따른 방법의 흐름도.
도 7은 몇몇 실시예에 따른 SIMD 실행 엔진 플래그 레지스터에 대한 수직 평가 유닛을 나타내는 도면.
도 8은 몇몇 실시예에 따른 방법의 흐름도.
도 9는 몇몇 실시예에 따른 SIMD 실행 엔진 플래그 레지스터에 대한 수직 평가 유닛을 나타내는 도면.
도 10은 몇몇 실시예에 따른 방법의 흐름도.
도 11은 몇몇 실시예에 따른 SIMD 실행 엔진 플래그 레지스터들에 대한 수평 및 수직 평가 유닛들을 나타내는 도면.
도 12는 몇몇 실시예에 따른 시스템의 블록도.
본원에 설명되는 몇몇 실시예는 "처리 시스템"과 관련된다. 본원에서 사용되는 "처리 시스템"이라는 표현은 데이터를 처리하는 임의의 장치를 지칭할 수 있다. 처리 시스템은 예를 들어 그래픽 데이터 및/또는 다른 타입의 미디어 정보를 처리하는 그래픽 엔진과 연관될 수 있다. 몇몇 경우에, 처리 시스템의 성능은 SIMD 실행 엔진을 이용하여 개선될 수 있다. 예를 들어, SIMD 실행 엔진은 다수의 데이터 채널에 대해 단일 부동 소수점 SIMD 명령어를 동시에 실행할 수 있다(예를 들어, 3차원 기하 형상의 변환 및/또는 렌더링을 가속화하기 위하여). 처리 시스템의 다른 예는 중앙 처리 유닛(CPU) 및 디지털 신호 프로세서(DSP)를 포함한다.
도 1은 SIMD 실행 엔진(110)을 포함하는 한가지 유형의 처리 시스템(100)을 나타낸다. 이 경우에, 실행 엔진(110)은 상이한 벡터와 각각 연관되는 4개의 데이터 피연산자(예를 들어, 벡터들 V0 내지 V3로부터의 4개의 X 성분)와 함께 명령어를 수신한다. 각각의 벡터는 예를 들어 3차원 그래픽 위치와 연관된 3개의 위치 값(예를 들어, X, Y, Z)을 포함할 수 있다. 이어서, 엔진(110)은 단일 명령어 주기에 피연산자들 모두에 대해 명령어를 동시에 실행할 수 있다. 이러한 접근법은 "수직", "채널-직렬" 또는 "SOA(Structure Of Arrays)" 구현이라고 한다.
도 2는 SIMD 실행 엔진(210)을 포함하는 다른 유형의 처리 시스템(200)을 나타낸다. 이 경우, 실행 엔진(210)은 4-성분 데이터 벡터(예를 들어, 각각 비트들을 갖고, SIMD 실행 엔진(210)의 대응 채널들 0 내지 3 상에서의 처리를 위해 배치된 벡터 성분들 X, Y, Z 및 W)와 함께 명령어(예를 들어, 명령어 메모리 유닛으로부터)를 수신한다. 이어서, 엔진(210)은 벡터 내의 성분들 모두에 대한 명령어를 동시에 실행할 수 있다. 이러한 접근법은 "수평", "채널 병렬" 또는 "AOS(Array Of Structure)"구현이라고 한다. 본원에서 설명되는 몇몇 실시예는 4채널 SIMD 실행 엔진(110)과 연관되지만, SIMD 실행 엔진은 하나보다 많은 임의의 개수의 채널을 가질 수 있다는 점에 유의한다(예를 들어, 실시예들은 32채널 실행 엔진과 연관될 수 있다).
몇몇 실시예에 따르면, SIMD 엔진은 다수의 벡터와 연관된 정보를 동시에 처리할 수 있다. 예를 들어, 도 3은 2개의 벡터를 동시에 처리할 수 있는 8채널 SIMD 실행 엔진(310)을 포함하는 처리 시스템(400)을 나타낸다. 즉, 채널들 0 내지 3이 벡터 0을 처리하고, 채널 4 내지 7이 벡터 1을 처리할 수 있다.
실행 엔진(310)은 각 채널과 연관된 위치를 갖는 플래그 레지스터(320)를 더 포함할 수 있다. 예를 들어, 플래그 레지스터(320)는 8비트 레지스터일 수 있고, 각 비트는 논리 계산 채널들 중 하나와 연관된 플래그(F)일 수 있다. 플래그는 예를 들어 해당 채널에 대한 산술 논리 유닛(ALU) 연산에 의해 생성된 하나 이상의 결과와 연관될 수 있다. 결과는 예를 들어 0, 0이 아님, 등가, 등가 아님, 초과, 이상, 미만, 이하 및/또는 오버플로우 조건과 연관될 수 있다. 예를 들어, SIMD 실행 엔진에 대한 다음 명령어를 고려한다.
add.f.z(8) r0 r1 -r2
이 경우, 레지스터 r2의 값이 레지스터 r1의 값에서 감산되고, 그 결과가 레지스터 r0에 저장되며, 결과가 0(".z")인 경우에 플래그 레지스터(320)(".f")의 비트가 설정될 것이다. 이것은 8개 채널 모두에 대해 동시에 수행되며, 플래그 레지스터(320) 내의 8개 비트 모두가 적절히 갱신될 것이다.
몇몇 응용에서, 플래그 레지스터(320) 내의 정보에 다양한 방법으로 액세스하는 것이 도움이 될 수 있다. 예를 들어, 그래픽 응용에서, 어느 때는 플래그 레지스터(320) 내의 임의의 플래그가 0인지를 판정하는 것이 도움이 될 수 있는 반면, 다른 때는 (i) 제1 벡터와 연관된 채널들 0 내지 3과 연관된 임의의 플래그가 0인지, 그리고 (ii) 제2 벡터와 연관된 채널 4 내지 7과 연관된 임의의 플래그가 0인지의 양자에 대해 아는 것이 도움이 될 수 있다.
도 4는 몇몇 실시예에 따른 플래그 레지스터(420)를 포함하는 시스템(400)을 나타낸다. 전술한 바와 같이, 시스템(400)은 다수의 벡터와 연관된 정보를 동시에 처리할 수 있다. 도 4에는 8비트 플래그 레지스터(420)가 도시되어 있지만, 다른 수의 비트가 제공될 수 있다는 점에 유의한다. 예를 들어, 플래그 레지스터(420)는 n(1보다 큰 정수) 채널 SIMD 실행 엔진의 n비트 플래그 레지스터일 수 있다. 몇몇 실시예에 따르면, 플래그 레지스터(420)의 각 비트는 채널과 연관될 수 있으며, 플래그 레지스터(420)는 SIMD 실행 유닛으로부터의 정보를 수신하고 저장할 수 있다. 몇몇 실시예에 따르면, 이 정보는 둘 이상의 다중 채널 벡터와 연관된다(예를 들어, 2개의 그래픽 벡터가 동시에 처리될 수 있다).
몇몇 실시예에 따르면, n 채널 실행 엔진이 p(n보다 작음)비트 플래그 레지스터를 가질 수 있다. 예를 들어, 4비트 플래그 레지스터가 16채널 SIMD 실행 엔진에 제공될 수 있으며, 플래그 레지스터 내의 각 비트는 4개 채널과 연관될 수 있다.
더욱이, n비트 출력을 생성하기 위해 수평 "평가" 유닛(430)이 제공될 수 있는데, 출력 내의 각 비트는 SIMD 실행 엔진의 채널과 연관된다. 본원에서 사용되는 "평가"라는 용어는 혼합(swizzle), 어셈블(assemble) 및/또는 논리 연산과 관련된 정보의 액세스를 지칭할 수 있다. 예를 들어, 혼합 연산은 정보의 재배열 또는 그룹화와 연관될 수 있다. 다른 예로서, 정보는 복제, 재배열 및/또는 그룹화될 수 있다. 더욱이, 정보는 개별 저장 요소들의 부분들이 단일 논리 저장 요소로 모이도록 어셈블될 수 있다. 정보에 대해 수행될 수 있는 논리 연산들은 AND, OR 및 다른 논리 연산들과 같은 논리 비트 연산들을 포함한다는 점에 유의한다.
예를 들어, 도 4에 도시된 수평 평가 유닛(430)은 플래그 레지스터(420)로부터 8개 비트를 수신하여 8비트 출력을 생성할 수 있다. 수평 평가 유닛(430)의 연산은 예를 들어 피연산자 페치 유닛에 의해 제어될 수 있다. 수평 평가 유닛(430)은 몇몇 실시예에 따라 플래그 레지스터(420) 내의 각 플래그를 출력 내의 대응 플래그에 간단히 맵핑할 수 있다(예를 들어, 이 경우에 도 4의 출력은 "0100 1111"의 패스-스루(pass-through)일 것이다).
몇몇 실시예에 따르면, 수평 평가 유닛(430)은 플래그 레지스터(420) 내의 모든 비트에 대한 평가를 수행하도록 대신 제어될 수 있다. 예를 들어, "임의의 8" 조건은 수평 평가 유닛(430)이 플래그 레지스터 내의 8개 비트 중 어느 비트가 설정되는지를 결정하게 할 수 있다. 그러한 경우, 출력의 8개 비트 모두가 1로 설정된다. 그렇지 않은 경우, 출력의 8개 비트 모두가 0으로 설정된다(예를 들어, 도 4의 출력은 "1111 1111"이다). 따라서, 출력 내의 적어도 하나의 비트의 값은 상이한 실행 채널들 및/또는 벡터들을 표현하는 플래그 레지스터(420) 내의 비트들에 기초할 수 있다.
몇몇 실시예에 따르면, n채널 실행 엔진에 대한 수평 평가 유닛은 p(n보다 작음)비트 출력을 가질 수 있다. 예를 들어, 4비트 출력이 8채널 SIMD 실행 엔진에 대해 제공될 수 있으며, 출력 내의 각 비트는 2개 채널과 연관될 수 있다.
몇몇 실시예에 따르면, 수평 평가 유닛(430)은 플래그 레지스터(420) 내의 비트들의 서브세트에 대한 평가를 수행하도록 제어될 수 있다. 예를 들어, 수평 평가 유닛(430)은 CH0, CH2, CH4 및 CH6과 연관된 플래그 레지스터(420) 내의 비트들에 대한 평가를 수행하도록 제어될 수 있다.
도 5는 몇몇 실시예에 따른 방법의 흐름도이다. 이 방법은 예를 들어 도 4의 시스템(400)과 관련하여 수행될 수 있다. 본원에서 설명되는 흐름도는 고정된 동작 순서를 수반할 필요는 없으며, 실시예들은 실시 가능한 임의의 순서로 수행될 수 있다. 본원에서 설명되는 임의의 방법은 하드웨어, 소프트웨어(마이크로코드 포함), 펌웨어, 또는 이들 접근법의 임의의 조합에 의해 수행될 수 있다는 점에 유의한다. 예를 들어, 저장 매체는 머신에 의해 실행될 때 본원에서 설명되는 임의의 실시예에 따라 수행하는 명령어들을 저장할 수 있다.
502에서, 정보는 n채널 SIMD 실행 엔진의 n위치 플래그 레지스터에 저장된다. 정보는 예를 들어 다수의 m채널 독립 벡터를 나타낼 수 있다(n 및 m은 1보다 큰 정수).
504에서, 플래그 레지스터 내의 정보에 기초하여 출력이 생성된다. 출력은 예를 들어 상이한 독립 벡터들을 나타내는 정보에 기초하는 값을 갖는 적어도 하나의 위치를 포함할 수 있다. 예를 들어, 8비트 출력의 제1 비트는 동시에 처리되고 있는 2개의 상이한 벡터와 연관된 정보에 기초하여 설정될 수 있다.
몇몇 경우에, 수평 평가 유닛은 플래그 레지스터 위치들의 상이한 세트들 상에 동작하도록 제어될 수 있다. 예를 들어, 도 6은 몇몇 실시예에 따른 방법의 흐름도이다. 602에서, SIMD 실행 엔진 채널들의 적어도 한 세트와 연관된 표시가 수신된다. 604에서, 이 채널 세트와 연관된 비트들이 평가된다.
수평 평가 유닛은 예를 들어 "모두 4" 조건의 표시를 수신할 수 있다. 도 4를 다시 참조하면, 이러한 조건은 수평 평가 유닛(430)이 모든 플래그 비트가 (i) 채널들 0 내지 3에 대응하는 플래그 레지스터 내의 비트들 및 (ii) 채널들 4 내지 7에 대응하는 플래그 레지스터 내의 비트들 양자에 대해 1인지를 개별적으로 평가하게 할 수 있다.
이어서, 각각의 평가 결과가 SIMD 실행 엔진 채널들의 세트를 나타내는 출력 내의 비트들의 세트에 저장될 수 있다. 예를 들어, 채널들 0 내지 3에 대응하는 플래그 레지스터(420) 내의 모든 비트가 설정되면, 채널들 0 내지 3에 대응하는 출력 내의 비트들이 설정될 수 있다. 마찬가지로, 채널들 4 내지 7에 대응하는 플래그 레지스터(420) 내의 모든 비트가 설정되면, 채널들 4 내지 7에 대응하는 출력 내의 비트들이 설정될 수 있다. 도 4에 도시된 사례에서, 출력은 "0000 1111"이 될 것이다.
수평 평가 유닛(430)에 의해 수신된 표시들은 SIMD 실행 엔진 채널들의 상이한 크기의 세트들과 연관될 수 있다. 예를 들어, 전술한 바와 같이, 수평 평가 유닛(430)에 의해 평가되는 세트들은 하나의 8비트 세트 또는 2개의 4비트 세트와 연관될 수 있다. 다른 예로서, 수평 평가 유닛(430)은 4개의 플래그 쌍이 평가되어야 한다(그리고, 각각의 평가 결과가 출력 내의 대응하는 2개 비트에 맵핑되어야 한다)는 것을 의미하는 "임의의 2" 조건과 연관된 표시를 수신할 수 있다. 도 4에 도시된 사례에서, 출력은 "1100 1111"이 될 것이다.
임의의 크기의 세트들 또는 이들의 조합이 제공될 수 있다(그리고, 세트 내의 비트들은 이웃할 필요가 없다)는 점에 유의한다. 예를 들어, 16비트 플래그 레지스터를 고려한다. 이 경우, 8개의 2비트 세트가 평가될 수 있다. 다른 예로서, 2개의 최상위 비트(MSB) 및 2개의 최하위 비트(LSB)가 조합되어 제1 세트로서 평가되고, 나머지 12개 비트가 제2 세트로서 평가될 수 있다.
이러한 타입의 평가 동작들은 단일 플래그 레지스터(420)를 통해 정보를 "수평적으로" 그룹화, 재배열 및/또는 평가할 수 있다. 이제, 2개의 8비트 플래그 레지스터(720)(f0 및 f1)를 포함하는 도 7의 시스템(700)을 참고한다. 도 7에는 2개의 플래그 레지스터(720)가 도시되어 있지만, 셋 이상이 제공될 수도 있다.
이제, 예를 들어 SIMD 실행 엔진에 대한 아래의 명령어들을 고려한다.
add.f0.z(8) r0 r1 -r2
add.f1.z(8) r3 r4 r5
이 경우, 레지스터 r2의 값이 레지스터 r1의 값에서 감산되고, 그 결과가 레지스터 r0에 저장되며, 결과가 0(".z")인 경우에 플래그 레지스터 0(".f0") 내의 비트가 설정될 것이다. 이 명령어는 8개의 데이터 피연산자 상에 동시에 수행될 수 있다(그리고, f0 내의 8개 비트 모두가 동시에 갱신될 수 있다)는 점에 유의한다. 마찬가지로, 레지스터 r5의 값이 레지스터 r4의 값에 더해지고, 그 결과가 레지스터 r3에 저장되며, 결과가 0(".z")인 경우에 플래그 레지스터 1(".f1") 내의 비트가 설정될 것이다.
몇몇 실시예에 따르면, 양 플래그 레지스터들(720)로부터의 정보에 기초하는 값을 갖는 적어도 하나의 비트를 포함하는 n비트 출력을 생성하기 위해 수직 평가 유닛(740)이 제공될 수 있다. 예를 들어, 수직 평가 유닛(740)은 f0의 8개 비트를 f1의 8개 비트와 함께 수신하여 8비트 출력을 생성할 수 있다.
도 8은 몇몇 실시예에 따른 방법의 흐름도이다. 이 방법은 예를 들어 도 7의 시스템(700)과 연관될 수 있다. 802에서, 정보가 n(1보다 큰 정수)채널 SIMD 실행 엔진의 제1 n위치 플래그 레지스터에 저장된다. 마찬가지로, 804에서 정보가 실행 엔진의 제2 n위치 플래그 레지스터에 저장된다. 806에서, 제1 플래그 레지스터 및 제2 플래그 레지스터 양자로부터의 정보에 기초하는 값을 갖는 적어도 하나의 위치를 포함하는 출력이 생성된다.
도 7을 다시 참조하면, 수직 평가 유닛(740)은 f0(또는 f1)의 값들을 출력으로서 통과시키도록 제어될 수 있다. 이 경우, 도 7에 도시된 출력은 f0의 경우에 "0100 1101"이다(또는 f1의 경우에 "1101 0111"이다). 몇몇 실시예에 따르면, 수직 평가 유닛(740)은 f0 및 f1 양자로부터의 정보를 조합하여 출력을 생성할 수 있다. 예를 들어, 수직 평가 유닛(740)은 f0 및 f1 양자 내의 대응하는 비트가 설정되는 경우에만 출력 내의 비트가 설정되도록 "모두 2" 조건과 연관된 표시를 수신할 수 있다(예를 들어, 도 7의 출력은 "0100 0101"이다). 마찬가지로, "임의의 2" 조건이 도 7에 대해 "1101 1111"의 출력을 생성할 수 있다.
따라서, 수직 평가 유닛(740)은 상이한 플래그 레지스터들(720)을 통해 정보를 조합할 수 있다. 몇몇 경우에, 수직 평가 유닛(940)은 플래그 레지스터들의 세트들을 통해 정보를 조합할 수 있다. 예를 들어, 4개의 8비트 플래그 레지스터(920)(f0 내지 f3)를 포함하는 도 9의 시스템(900)을 고려한다. 더욱이, 수직 평가 유닛(940)은 플래그 레지스터들 각각으로부터 8개 비트를 수신하여 8비트 출력을 생성한다.
도 10은 이러한 시스템(900)과 연관될 수 있는 방법을 나타낸다. 902에서, 플래그 레지스터들의 세트와 연관된 표시가 수신된다. 이 표시는 수직 평가 유닛(940)이 예를 들어 플래그 레지스터들 중 하나 또는 4개 플래그 레지스터 모두 상에 동작하도록 제어할 수 있다.
몇몇 실시예에 따르면, 수직 평가 유닛(940)은 플래그 레지스터들의 다른 세트들 상에 동작하도록 제어될 수 있다. 예를 들어, 수직 평가 유닛(940)은 f0 및 f1을 평가하도록(그리고 f2 및 f3를 무시하도록) 제어될 수 있다. 다른 예로서, 수직 평가 유닛(940)은 f0, f2 및 f3 상에 동작하도록(그리고 f4를 무시하도록) 제어될 수 있다.
1004에서, 각각의 SIMD 실행 엔진 채널에 대해, 세트 내의 플래그 레지스터들로부터의 해당 채널을 나타내는 비트들이 평가된다. 1006에서, 이들 평가의 결과가 적절한 출력 비트들에 저장된다.
도 9를 다시 참조하면, f0 및 f1이 평가되어야 하고, 이들 2개의 플래그 레지스터 양자 내의 대응하는 비트가 1로 설정되는 경우에, 그리고 그 경우에만 각각의 출력 비트가 설정되어야 한다는 표시를 수직 평가 유닛(940)이 수신한 것으로 가정한다. 그러면, 도 9의 예에서, 출력은 "0100 1111"이다. 수직 평가 유닛(940)이 대신에 f2 및 f3를 평가하도록 제어되는 경우, 출력은 "1100 1100"일 것이다.
몇몇 실시예에 따르면, 수평 및 수직 평가 연산들이 지원될 수 있다. 예를 들어, 4개의 8비트 플래그 레지스터(1120)(f0 내지 f3)를 포함하는 도 11의 시스템(1100)을 고려한다. 몇몇 실시예에 따르면, 멀티플렉서(1150)가 8개의 데이터 비트 또는 8개의 결과 비트(예를 들어, 각 비트는 하나 이상의 ALU 플래그를 나타냄)가 플래그 레지스터(1120)에 저장되는지를 판정한다. 더욱이, SIMD 실행 유닛의 백 엔드가 예를 들어 플래그 기입, 플래그 선택 커맨드를 이용하여 f0 내지 f3 중 어느 것이 정보를 저장할 것인지를 선택할 수 있다.
몇몇 실시예에 따르면, 수평 평가 유닛(1130)은 각각의 SIMD 실행 채널에 대해 4개의 비트(각 플래그 레지스터로부터 하나씩)를 수신하여 8비트 출력을 생성한다. 수직 평가 유닛(1140)은 각 플래그 레지스터로부터 8개 비트(각각의 SIMD 실행 채널에 대해)를 수신하여 8비트 출력을 생성한다. 수평 평가 유닛(1130) 및 수직 평가 유닛(1140)은 본원에 설명되는 임의의 실시예에 따라 동작할 수 있으며, 예를 들어 SIMD 실행 유닛의 프론트 엔드에 의해 제어될 수 있다.
멀티플렉서(1160)는 실행 유닛의 프론트 엔드가 수평 평가 유닛(1130)의 출력 또는 수직 평가 유닛(1140)의 출력을 수신하는지를 판정할 수 있다. 예를 들어, 하나의 명령어는 시스템(1100)이 플래그 레지스터들 상에 수평 평가를 수행하게 할 수 있고(예를 들어, "f2에 대해 수평인 임의의 2(any2horizontal for f2)"는 f2 내의 비트들의 쌍들이 평가되게 한다), 또 다른 명령어는 수직 평가를 유발한다(예를 들어, "모두 4 수직(all4vertical)"은 4개 비트가 각 채널에 대해 평가되게 한다).
플래그 레지스터들(1120) 내의 정보는 여러 방식으로 효율적이고 유연하게 액세스될 수 있으므로, 시스템(1100)의 성능은 개선될 수 있다. 예를 들어, 플래그 비트들의 채널간 분산 및 논리적 조합은 소프트웨어를 통해 플래그 평가를 수행하는 데 필요한 명령어들의 양을 줄일 수 있다.
더욱이, 8채널 및 16채널 연산 양자를 지원하는 실행 엔진을 고려한다. 몇몇 실시예에 따르면, 수평 평가 연산들은 8채널 연산이 인에이블될 때 모든 플래그 레지스터 비트의 사용을 용이하게 할 수 있다(예를 들어, 플래그 레지스터 비트들의 2개의 8채널 세트가 수평 평가 연산들에 사용될 수 있다). 또한, SOA 및 AOS 프로그래밍이 지원될 수 있다.
도 12는 몇몇 실시예에 따른 시스템(1200)의 블록도이다. 시스템(1200)은 예를 들어 디지털 텔레비전 신호를 기록 및/또는 표시하는 데 적합한 미디어 프로세서와 연관될 수 있다. 시스템(1200)은 본원에 설명되는 임의의 실시예에 따른 n 피연산자 SIMD 실행 엔진(1220)을 갖는 그래픽 엔진(1210)을 포함한다. 예를 들어, SIMD 실행 엔진(1220)은 하나 이상의 플래그 레지스터에 대한 수평 및/또는 수직 평가 유닛을 가질 수 있다. 시스템(1200)은 또한 SIMD 명령어들을 저장하는 명령어 메모리 유닛(1230) 및 그래픽 데이터(예를 들어, 3차원 이미지와 연관된 벡터들)를 저장하는 그래픽 메모리 유닛(1240)을 포함할 수 있다. 명령어 메모리 유닛(1230) 및 그래픽 메모리 유닛(1240)은 예를 들어 랜덤 액세스 메모리(RAM) 유닛을 포함할 수 있다. 몇몇 실시예에 따르면, 시스템(1200)은 또한 하드 디스크 드라이브(1250)(예를 들어, 미디어 정보를 저장하고 제공하기 위해)를 포함한다.
다음은 다양한 추가 실시예를 설명한다. 이들은 모든 가능한 실시예를 한정하지 않으며, 이 분야의 전문가는 많은 다른 실시예가 가능하다는 것을 이해할 것이다. 또한, 다음 실시예들이 명료화를 위해 간단히 설명되지만, 이 분야의 전문가는 필요에 따라 이들 및 다른 실시예들 및 그 응용들을 수용하도록 위의 설명에 어떻게 임의의 변경을 가할 수 있는지를 이해할 것이다.
본원에서 소정의 평가 연산들이 예로서 설명되었지만, 실시예들은 임의의 개수의 방식으로 플래그 레지스터 정보를 재배열 및/또는 재구성할 수 있다. 예를 들어, 수평 평가 유닛은 32비트 플래그 레지스터의 16개 LSB를 16개의 MSB와 교환할 수 있다. 마찬가지로, 플래그 레지스터 내의 몇몇 비트는 다른 비트들 내에 복제될 수 있다(예를 들어, 그래픽 벡터 X 성분과 연관된 플래그 비트는 그 벡터의 다른 3개의 성분과 연관된 플래그 비트들에 대해 복제될 수 있다).
다른 예로서, 다음 비트들, 즉 (i) SIMD 실행 채널들 0 내지 3과 연관된 f2 내의 비트들 및 (ii) SIMD 실행 채널들 4 내지 7과 연관된 f0 내의 비트들 중 어느 비트도 설정되지 않는지를 판정하는 것이 도움이 되는 경우를 고려한다. 이 경우에, 수평 평가 유닛은 각각의 실행 채널에 대해 4개 플래그 레지스터 모두의 비트들을 수신하고, 출력을 생성하기 위해 적절한 평가를 수행하기 전에 수집된 8개의 정보 비트 세트를 생성할 수 있다.
또 다른 예로서, 시스템은 채널들 0 내지 3을 이용하여 제1 그래픽 벡터를, 채널들 4 내지 7을 이용하여 제2 그래픽 벡터를 처리할 수 있다. 또한, (i) f0 내의 비트 및 f1 내의 비트가 제2 그래픽 벡터에 대해 0인 것, 및 (ii) f2 내의 비트 및 f3 내의 비트가 제1 그래픽 벡터에 대해 0인 것의 양자가 언제 참인지를 채널 단위로 판정하는 것이 도움이 되는 것으로 가정한다. 이 경우, 평가 유닛은 수직 평가 연산을 수행하기 전에 f2의 하위 4개 비트를 f2의 상위 4개 비트와 교환할 수 있다(그리고, f3에 대해 유사한 연산을 수행할 수 있다).
또한, 본원에 설명되는 실시예들은 멀티 스레드 SIMD 실행 엔진을 지원할 수 있다는 점에 유의한다. 예를 들어, 3개의 스레드를 실행할 수 있는 4개의 플래그 레지스터를 가진 16채널 SIMD를 고려한다. 이 경우, 수평 평가 유닛은 16개 실행 채널 각각에 대해 4개 비트의 3개 세트(4개 플래그 레지스터의 3개 스레드)를 수신할 수 있다. 마찬가지로, 수직 평가 유닛은 4개 플래그 레지스터 각각에 대해 16개 비트의 3개 세트(16개 채널의 3개 스레드)를 수신할 수 있다.
본원에 설명되는 여러 실시예는 단지 예시적인 것이다. 당업자는 이 설명으로부터 청구의 범위에 의해서만 한정되는 수정 및 변형을 가진 다른 실시예들이 실시될 수 있음을 이해할 것이다.

Claims (30)

  1. 다수의 m채널 독립 벡터에 대한 단일 명령어의 실행에 의해 생성되는 정보를 n채널 단일 명령어 다중 데이터(Single Instruction, Multiple-Data; SIMD) 실행 엔진의 n위치 플래그 레지스터에 저장하는 단계 - n 및 m은 1보다 큰 정수이고, 각각의 벡터는 3차원 그래픽 위치와 연관된 적어도 3개의 값을 포함함 - ;
    SIMD 실행 엔진 채널들의 적어도 하나의 세트를 나타내는 표시(indication)를 수신하는 단계;
    상기 SIMD 실행 엔진 채널들의 표시된 세트를 나타내는 상기 플래그 레지스터 내의 비트들의 세트를 평가하는 단계; 및
    상기 평가에 기초하여 출력을 생성하는 단계
    를 포함하고,
    상기 비트들의 세트는 적어도 2개의 상이한 독립 벡터들과 연관된 비트들을 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  2. 제1항에 있어서, 상기 플래그 레지스터는 p개 비트를 갖고, 각각의 비트는 상기 SIMD 실행 엔진의 적어도 하나의 채널을 나타내고, p는 n보다 작은 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  3. 제1항에 있어서, 상기 출력은 p개 비트를 갖고, 각각의 비트는 상기 SIMD 실행 엔진의 적어도 하나의 채널을 나타내고, p는 n보다 작은 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  4. 삭제
  5. 제1항에 있어서, (i) 상기 플래그 레지스터는 n개 비트를 갖고, 각각의 비트는 상기 SIMD 실행 엔진의 채널을 나타내며, (ii) 상기 출력은 n개 비트를 갖고, 각각의 비트는 상기 SIMD 실행 엔진의 채널을 나타내는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  6. 제5항에 있어서, 상기 출력의 제1 비트는 상기 SIMD 실행 엔진의 제1 채널을 나타내고, 상기 출력의 제1 비트의 값은 상기 제1 채널을 나타내지 않는 상기 플래그 레지스터 내의 비트에 적어도 부분적으로 기초하는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  7. 삭제
  8. 제1항에 있어서, 상기 평가 단계는 (i) 상기 플래그 레지스터 내의 비트들의 세트 중 모든 비트가 제1 값을 갖는지, 또는 (ii) 상기 플래그 레지스터 내의 비트들의 세트 중 임의의 비트가 제1 값을 갖는지를 판정하는 단계를 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  9. 제1항에 있어서, 표시들은 SIMD 실행 엔진 채널들의 상이한 크기의 세트들과 연관될 수 있는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  10. 제1항에 있어서, 상기 수신된 표시는 다수의 세트와 연관되고, 상기 평가 단계 및 저장 단계는 각각의 세트에 대해 수행되는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  11. 제1항에 있어서, 상기 저장 단계는 제1 정보를 제1 플래그 레지스터에 저장하는 단계를 포함하고,
    제2 정보를 상기 SIMD 실행 엔진의 제2 플래그 레지스터에 저장하는 단계;
    SIMD 실행 엔진 채널들의 제2 세트를 나타내는 제2 표시를 수신하는 단계 - 상기 SIMD 실행 엔진 채널들의 제2 세트는 상기 SIMD 실행 엔진 채널들의 표시된 세트와 상이함 - ;
    상기 SIMD 실행 엔진 채널들의 제2 세트를 나타내는 상기 제2 플래그 레지스터 내의 비트들의 세트를 평가하는 단계; 및
    상기 평가에 기초하여 제2 출력을 생성하는 단계를 더 포함하고,
    상기 제2 출력은 상이한 독립 벡터들로부터 결과가 나오는 값을 갖는 적어도 하나의 위치를 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. n채널 단일 명령어 다중 데이터(SIMD) 실행 엔진의 n비트 플래그 레지스터 - n은 1보다 큰 정수이고, 상기 플래그 레지스터의 각 비트는 채널과 연관되고, 상기 플래그 레지스터는 실행 유닛으로부터의 정보를 저장하는 것이며, 상기 정보는 다수의 m채널 독립 벡터들에 대한 단일 명령어의 실행에 의해 생성되고, m은 1보다 큰 정수이고, 각각의 벡터는 3차원 그래픽 위치와 연관된 적어도 3개의 값을 포함함 - ; 및
    SIMD 실행 엔진 채널들의 적어도 하나의 세트를 나타내는 표시를 수신하고, SIMD 실행 엔진 채널들의 표시된 세트를 나타내는 상기 플래그 레지스터 내의 비트들의 세트를 평가하며, 상기 평가에 기초하여 출력을 생성하는 수평 평가 유닛
    을 포함하고,
    상기 비트들의 세트는 적어도 2개의 상이한 독립 벡터들과 연관된 비트들을 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 장치.
  22. 삭제
  23. 제21항에 있어서, 표시들은 SIMD 실행 엔진 채널들의 상이한 크기의 세트들과 연관될 수 있는 SIMD 실행 엔진 플래그 레지스터 평가 장치.
  24. n채널 단일 명령어 다중 데이터(SIMD) 실행 엔진의 n비트 플래그 레지스터 - n은 1보다 큰 정수이고, 상기 플래그 레지스터의 각 비트는 채널과 연관되고, 상기 플래그 레지스터는 실행 유닛으로부터의 정보를 저장하는 것이며, 상기 정보는 다수의 m채널 독립 벡터들에 대한 단일 명령어의 실행에 의해 생성되고, m은 1보다 큰 정수이고, 각각의 벡터는 3차원 그래픽 위치와 연관된 적어도 3개의 값을 포함함 - ; 및
    상기 플래그 레지스터 내의 플래그들의 적어도 하나의 세트를 나타내는 표시를 수신하고, 상기 플래그 레지스터 내의 플래그들의 표시된 세트를 나타내는 상기 플래그 레지스터 내의 비트들의 세트를 평가하고, 상기 평가에 기초하여 출력을 생성하는 수직 평가 유닛
    을 포함하고,
    상기 비트들의 세트는 적어도 2개의 상이한 독립 벡터들과 연관된 비트들을 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 장치.
  25. 삭제
  26. 제24항에 있어서, 상기 표시를 제공하고 상기 출력을 수신하는 실행 유닛을 더 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 장치.
  27. n채널 단일 명령어 다중 데이터(SIMD) 실행 엔진을 포함하는 프로세서 - n은 1보다 큰 정수임 - ; 및
    그래픽 메모리 유닛
    을 포함하고,
    상기 SIMD 실행 엔진은,
    제1 n비트 플래그 레지스터,
    제2 n비트 플래그 레지스터 - 각각의 플래그 레지스터는 다수의 m채널 독립 벡터들에 대한 단일 명령어의 실행에 의해 생성되는 정보를 포함하고, n 및 m은 1보다 큰 정수이고, 각각의 벡터는 3차원 그래픽 위치와 연관된 적어도 3개의 값을 포함함 - , 및
    상기 제1 n비트 플래그 레지스터 내의 플래그들의 적어도 하나의 세트를 나타내는 표시를 수신하고, 상기 제1 n비트 플래그 레지스터 내의 플래그들의 표시된 세트를 나타내는 상기 제1 n비트 플래그 레지스터 내의 비트들의 세트를 평가하고, 상기 평가에 기초하여 출력을 생성하는 수직 평가 유닛을 포함하며,
    상기 비트들의 세트는 적어도 2개의 상이한 독립 벡터들과 연관된 비트들을 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 시스템.
  28. 삭제
  29. 제27항에 있어서, 수평 평가 유닛을 더 포함하는 SIMD 실행 엔진 플래그 레지스터 평가 시스템.
  30. 삭제
KR1020077014564A 2004-12-17 2005-12-15 단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛 KR100958964B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/015,778 US7219213B2 (en) 2004-12-17 2004-12-17 Flag bits evaluation for multiple vector SIMD channels execution
US11/015,778 2004-12-17

Publications (2)

Publication Number Publication Date
KR20070089208A KR20070089208A (ko) 2007-08-30
KR100958964B1 true KR100958964B1 (ko) 2010-05-20

Family

ID=36123387

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014564A KR100958964B1 (ko) 2004-12-17 2005-12-15 단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛

Country Status (8)

Country Link
US (1) US7219213B2 (ko)
JP (1) JP4901754B2 (ko)
KR (1) KR100958964B1 (ko)
CN (1) CN100422979C (ko)
DE (1) DE112005003130B4 (ko)
GB (1) GB2436499B (ko)
TW (1) TWI297853B (ko)
WO (1) WO2006066262A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071130A (ja) * 2006-09-14 2008-03-27 Ricoh Co Ltd Simd型マイクロプロセッサ
US9892047B2 (en) * 2009-09-17 2018-02-13 Provenance Asset Group Llc Multi-channel cache memory
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
CN103959237B (zh) 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
US10255228B2 (en) * 2011-12-06 2019-04-09 Nvidia Corporation System and method for performing shaped memory access operations
US10042813B2 (en) * 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US20200341772A1 (en) * 2019-04-29 2020-10-29 DeGirum Corporation Efficient Architectures For Deep Learning Algorithms

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
KR20040027409A (ko) * 2002-09-25 2004-04-01 마쯔시다덴기산교 가부시키가이샤 프로세서

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2768803B2 (ja) * 1990-04-26 1998-06-25 株式会社東芝 並列演算処理装置
JP2793357B2 (ja) * 1990-11-20 1998-09-03 株式会社東芝 並列演算装置
JP2793342B2 (ja) * 1990-08-09 1998-09-03 株式会社東芝 演算処理装置
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
JP3652518B2 (ja) 1998-07-31 2005-05-25 株式会社リコー Simd方式の演算器及び演算処理装置
GB2382886B (en) * 2001-10-31 2006-03-15 Alphamosaic Ltd Vector processing system
US6986023B2 (en) * 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083311A1 (en) * 2000-12-27 2002-06-27 Paver Nigel C. Method and computer program for single instruction multiple data management
KR20040027409A (ko) * 2002-09-25 2004-04-01 마쯔시다덴기산교 가부시키가이샤 프로세서

Also Published As

Publication number Publication date
GB2436499B (en) 2009-07-22
WO2006066262A3 (en) 2006-12-14
KR20070089208A (ko) 2007-08-30
WO2006066262A2 (en) 2006-06-22
CN1790310A (zh) 2006-06-21
JP4901754B2 (ja) 2012-03-21
DE112005003130T5 (de) 2007-11-22
TW200636573A (en) 2006-10-16
CN100422979C (zh) 2008-10-01
GB0713878D0 (en) 2007-08-29
US7219213B2 (en) 2007-05-15
TWI297853B (en) 2008-06-11
DE112005003130B4 (de) 2009-09-17
US20060149924A1 (en) 2006-07-06
JP2008524723A (ja) 2008-07-10
GB2436499A (en) 2007-09-26

Similar Documents

Publication Publication Date Title
KR100958964B1 (ko) 단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛
KR100935308B1 (ko) 실행 엔진을 포함하는 프로세싱 시스템에서 피연산자에 대해 인스트럭션을 실행하는 방법, 장치 및 시스템
CN109643233B (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
JP5658556B2 (ja) メモリ制御装置、及びメモリ制御方法
US7434024B2 (en) SIMD processor with register addressing, buffer stall and methods
WO2006012070A2 (en) Conditional instruction for a single instruction, multiple data execution engine
KR101371931B1 (ko) 제어된 데이터 액세스를 이용하여 다중 데이터 타입을 저장하는 데이터 파일
CN100410919C (zh) 处理器
CN108205448B (zh) 具有在每个维度上可选择的多维循环寻址的流引擎
US20190004797A1 (en) Exposing valid byte lanes as vector predicates to cpu
GB2474901A (en) Multiply-accumulate instruction which adds or subtracts based on a predicate value
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
WO2023077769A1 (zh) 数据处理方法、装置以及设备和计算机可读存储介质
CN109416633B (zh) 用于执行重新排列操作的设备及方法
US20060149938A1 (en) Determining a register file region based at least in part on a value in an index register
CN112416256A (zh) 数据写入方法、装置及数据读取方法、装置
US7441099B2 (en) Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US20080162522A1 (en) Methods and apparatuses for compaction and/or decompaction
WO2010067522A1 (ja) 演算ユニット、プロセッサ及び並列演算方法
JP5659772B2 (ja) 演算処理装置
US20040128475A1 (en) Widely accessible processor register file and method for use
US20080162879A1 (en) Methods and apparatuses for aligning and/or executing instructions
WO2023242531A1 (en) Technique for performing outer product operations
JP2004302772A (ja) ベクトルプロセッサおよびアドレス指定方法
JP2006004226A (ja) データ演算装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130503

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee