KR20150122195A - 스칼라 레지스터 데이터 값에 기초하는 벡터 레지스터 어드레싱 및 기능들 - Google Patents
스칼라 레지스터 데이터 값에 기초하는 벡터 레지스터 어드레싱 및 기능들 Download PDFInfo
- Publication number
- KR20150122195A KR20150122195A KR1020157025988A KR20157025988A KR20150122195A KR 20150122195 A KR20150122195 A KR 20150122195A KR 1020157025988 A KR1020157025988 A KR 1020157025988A KR 20157025988 A KR20157025988 A KR 20157025988A KR 20150122195 A KR20150122195 A KR 20150122195A
- Authority
- KR
- South Korea
- Prior art keywords
- register
- vector
- processor
- registers
- instruction
- Prior art date
Links
- 230000006870 function Effects 0.000 title description 29
- 238000000034 method Methods 0.000 claims abstract description 55
- 230000015654 memory Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
벡터 정렬 명령을 실행하기 위한 기법들이 제공된다. 제 1 프로세서의 스칼라 레지스터 파일은, 하나 또는 둘 이상의 레지스터 값들을 제 2 프로세서와 공유하도록 구성되고, 하나 또는 둘 이상의 레지스터 값들은 벡터 정렬 명령에서 특정된 Rt 어드레스에 따라 스칼라 레지스터 파일로부터 액세스되며, 시작 위치는 공유된 레지스터 값들 중 하나로부터 결정된다. 제 2 프로세서의 정렬 회로는 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 시작 Vu 레지스터 내의 시작 위치와 VRF의 마지막 Vu 레지스터의 종료 위치 사이에서 식별된 데이터를 정렬하도록 구성된다. 저장 회로는, 정렬 회로로부터 정렬된 데이터를 선택하고, 정렬된 데이터를, 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라 벡터 레지스터 파일에 저장하도록 구성된다.
Description
우선권 출원
[0001]
본 출원은, 2013년 2월 26일 출원되고, 발명의 명칭이 "VECTOR REGISTER ADDRESSING AND FUNCTIONS BASED ON A SCALAR REGISTER DATA VALUE"인 미국 특허 출원 시리얼 번호 제 13/777,297호를 우선권으로 주장하고, 그 미국 특허 출원은 인용에 의해 그 전체가 본 명세서에 포함된다.
[0002]
본 개시내용은 일반적으로 데이터 정렬 분야에 관한 것으로, 더 구체적으로는 정렬되지 않은 메모리 어드레스에서 더블 폭 데이터 값(double width data value)에 효율적으로 액세스하는 것에 관한 것이다.
[0003]
셀폰들, 랩톱 컴퓨터들, PDA(personal data assistant)들 등과 같은 많은 휴대용 제품들은, 통신 및 멀티미디어 프로그램들과 같은 프로그램들을 실행시키는 프로세싱 시스템을 활용한다. 이러한 제품들을 위한 프로세싱 시스템은, 예를 들어 단일 칩 상에 구성되는, 명령들 및 데이터를 저장하기 위한 멀티-레벨들의 캐시들, 제어기들, 주변 디바이스들, 이를테면, 통신 인터페이스들, 및 고정 기능 논리 블록들을 포함하는 다수의 프로세서들, 멀티-스레드 프로세서들, 복합 메모리 시스템들을 포함할 수 있다.
[0004]
프로세서에 의해 수신되어 프로세서 상에서 동작될 데이터는, 정보를 나타내기 위해 요구되는 측정 정밀도의 레벨에 따라 바이너리 형태로 양자화되는 정보의 값들이다. 데이터 또는 데이터 타입들의 표준 클래스들은, 8-비트 바이트(8-bit bytes), 16-비트 하프-워드(16-bit half-words), 32-비트 워드(32-bit words), 64-비트 더블-워드(64-bit double-words), 128-비트 쿼드-워드(128-bit quad-words)로서 표현되는 정수 값들, 및 32-비트 단일 정밀도 값들(single precision values), 64-비트 더블 정밀도 값들 등으로서 표현되는 부동 소수점 값들(floating point values)과 같은, 바이너리 비트들의 수에 따라 그룹화된다. 많은 프로세서들은 다수의 데이터 타입들을 지원하고, 프로세싱을 위해 데이터에 액세스하는 효율적인 방식을 요구한다. 일반적으로, 각각의 자료항목(datum)에는, 프로세서의 메모리 시스템에서의 위치를 나타내는 어드레스가 할당된다. 많은 메모리 시스템들에서, 메모리는, 4 바이트, 2개의 하프-워드들 또는 1개의 워드가 각각의 32-비트 위치에 저장되도록 허용하는 32-비트와 같은 표준 정밀도 비트 폭에 따라 체계화된다. 팩킹된(packed) 데이터 세트들의 단일 명령 다중 데이터(SIMD; single instruction multiple data) 프로세서 및 SIMD 벡터 프로세서와 같은 벡터 프로세서와 연관된 것들과 같은 다른 프로세싱 시스템들에서, 메모리 시스템은 256-비트, 512-비트 등의 폭들과 같은 표준 정밀도 값들의 그룹들에 기초하는 더 큰 비트 폭들 둘레에 체계화될 수 있다. 예를 들어, 512-비트 폭 메모리 위치들을 갖는 메모리 시스템에서, 각각의 위치는 64 바이트 또는 32개의 하프-워드들 또는 16개의 워드들 또는 8개의 더블-워드들 또는 4개의 쿼드-워드들을 저장할 수 있다. 이러한 큰 폭의 메모리 위치들은 SIMD 벡터 프로세서의 레지스터 파일에 로케이팅될 수 있다. 이러한 시스템들에서, 액세스가능 메모리 위치들에 대한 데이터 정렬은, 표준 프로세서 메모리 액세스 명령들을 이용한 효율적인 액세스를 위해 중요하다. 그러나, 이러한 데이터 정렬은 반드시 달성하기 용이한 것은 아니다. 예를 들어, 데이터 구조들은 메모리 위치의 폭의 배수가 아닐 수 있다. 또한, 임의의 크기의 데이터 구조가 적절히 정렬되어 시작 또는 종료된다는 어떠한 보장도 없다. 따라서, 정렬되지 않은 데이터에 효율적으로 액세스하는 것은 어려운 문제이다.
[0005]
본 개시내용의 여러 양상들 가운데서, 본 개시내용이, 데이터를 정렬하기 위한 더 효율적인 방법들 및 장치들을 제공하기에 유리하다는 것이 인식된다. 이를 위해, 본 발명의 실시예는 벡터 정렬 명령을 실행하기 위한 방법을 다룬다. 제 1 프로세서 상의 시작 위치는, 제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 레지스터로부터 액세스된다. 제 2 프로세서 상에서, 벡터 레지스터 파일(VRF)의 레지스터 내의 시작 위치에서 시작되는 데이터 값들의 세트는 VRF의 타겟 레지스터에, 정렬된 데이터 값들의 세트로서 저장되도록 정렬된다.
[0006]
다른 실시예는 벡터 정렬 및 동작 명령을 실행하기 위한 방법을 다룬다. 제 1 프로세서 상에서 발생된 시작 위치는, 제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 레지스터로부터 액세스된다. 제 2 프로세서 상에서, 벡터 레지스터 파일(VRF)의 레지스터 내의 시작 위치에서 시작되는 데이터 값들의 세트는 정렬된 데이터 값들의 세트를 발생시키도록 정렬된다. 정렬된 데이터 값들은, VRF의 타겟 레지스터에 저장되는 결과를 발생시키기 위해, 벡터 정렬 및 동작 명령에 따라 동작된다.
[0007]
다른 실시예는 벡터 마스크 정렬 명령을 실행하기 위한 방법을 다룬다. 제 1 프로세서 상에서 발생된 마스크 및 시작 위치는, 제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 제 1 레지스터 및 제 2 레지스터로부터 액세스된다. 마스크는, 마스크의 인에이블된 비트들에 따라 제 2 프로세서 상의 벡터 레지스터 파일(VRF)의 레지스터들의 세트를 식별하기 위해 적용된다. 제 2 프로세서 상에서, 벡터 레지스터 파일(VRF)의 레지스터들의 식별된 세트 내의 시작 위치에서 시작되는 데이터 값들의 세트는 VRF의 레지스터들의 타겟 세트에, 정렬된 데이터 값들의 세트로서 저장되도록 정렬된다.
[0008]
다른 실시예는 벡터 정렬 명령을 실행하기 위한 장치를 다룬다. 제 1 프로세서와 연관된 스칼라 레지스터 파일은 하나 또는 둘 이상의 레지스터 값들을 제 2 프로세서와 공유하도록 구성되고, 하나 또는 둘 이상의 레지스터 값들은 벡터 정렬 명령에서 특정된 Rt 어드레스에 따라 스칼라 레지스터 파일로부터 액세스된다. 제 2 프로세서의 정렬 회로는, 하나 또는 둘 이상의 레지스터 값들로부터 결정된 정렬 시작 위치 및 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 복수의 레지스터들 내에서 식별된 데이터를 정렬하도록 구성된다. 저장 회로는 정렬 회로로부터 정렬된 데이터를 선택하고, 정렬된 데이터를 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라 벡터 레지스터 파일에 저장하도록 구성된다.
[0009]
다른 실시예는 컴퓨터 판독가능 프로그램 데이터 및 코드를 이용하여 인코딩된 컴퓨터 판독가능 비-일시적 매체를 다룬다. 제 1 프로세서 상의 시작 위치는 제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 레지스터로부터 액세스된다. 제 2 프로세서 상에서, 벡터 레지스터 파일(VRF)의 레지스터 내의 시작 위치에서 시작되는 데이터 값들의 세트는 VRF의 타겟 레지스터에, 정렬된 데이터 값들의 세트로서 저장되도록 정렬된다.
[0010]
추가의 실시예는 벡터 정렬 명령을 실행하기 위한 장치를 다룬다. 제 1 프로세서의 스칼라 레지스터 파일로부터 액세스되는 하나 또는 둘 이상의 레지스터 값들을 제 2 프로세서와 공유하기 위한 수단이 활용되고, 하나 또는 둘 이상의 레지스터 값들은 벡터 정렬 명령에서 특정된 Rt 어드레스에 따라 액세스되며, 시작 위치는 공유된 레지스터 값들 중 하나로부터 결정된다. 제 2 프로세서의 데이터를 정렬하기 위한 수단이 활용되며, 데이터는 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 시작 Vu 레지스터 내의 시작 위치와 VRF의 마지막 Vu 레지스터의 종료 위치 사이에서 식별된다. 정렬 회로로부터 정렬된 데이터를 선택하고, 정렬된 데이터를 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라 벡터 레지스터 파일에 저장하기 위한 수단이 활용된다.
[0011]
본 발명의 다른 실시예들이 다음의 상세한 설명으로부터 당업자들에게 용이하게 명백해질 것이고 본 발명의 다양한 실시예들이 예시로서 도시되고 설명됨이 이해된다. 인식될 바와 같이, 본 발명은, 본 발명의 사상 및 범주로부터 전혀 벗어남이 없이, 다른 및 상이한 실시예들이 가능하고, 그것의 여러 상세들은 다양한 다른 사항들에서 수정될 수 있다. 따라서, 도면들 및 상세한 설명은 제한적인 것이 아닌 사실상 예시적인 것으로 간주될 것이다.
[0012]
본 발명의 다양한 양상들은 제한이 아닌 예시로서 첨부 도면들에서 예시되며, 도면들에서:
[0013] 도 1은 제 1 정렬 기능의 실시예를 예시하고;
[0014] 도 2a 및 도 2b는 제 2 정렬 기능의 실시예들을 예시하고;
[0015] 도 3a는 제 1 정렬 서브시스템의 실시예를 예시하고;
[0016] 도 3b는 제 2 정렬 서브시스템의 실시예를 예시하고;
[0017] 도 4는 데이터 정렬의 프로세스에 대한 실시예를 예시하고; 그리고
[0018] 도 5는 벡터 정렬 기능들을 제공하고 휴대용 디바이스의 실시간 요건들을 충족하도록 구성된 벡터 코프로세서와 같은 코프로세서(coprocessor)(CoP) 및 중앙 프로세싱 유닛(CPU)을 갖는 휴대용 디바이스를 예시한다.
[0013] 도 1은 제 1 정렬 기능의 실시예를 예시하고;
[0014] 도 2a 및 도 2b는 제 2 정렬 기능의 실시예들을 예시하고;
[0015] 도 3a는 제 1 정렬 서브시스템의 실시예를 예시하고;
[0016] 도 3b는 제 2 정렬 서브시스템의 실시예를 예시하고;
[0017] 도 4는 데이터 정렬의 프로세스에 대한 실시예를 예시하고; 그리고
[0018] 도 5는 벡터 정렬 기능들을 제공하고 휴대용 디바이스의 실시간 요건들을 충족하도록 구성된 벡터 코프로세서와 같은 코프로세서(coprocessor)(CoP) 및 중앙 프로세싱 유닛(CPU)을 갖는 휴대용 디바이스를 예시한다.
[0019]
첨부된 도면들과 관련하여 아래에서 설명되는 상세한 설명은, 본 발명의 다양한 예시적인 실시예들의 설명으로서 의도되며, 본 발명이 실시될 수 있는 유일한 실시예들을 나타내도록 의도되지는 않는다. 상세한 설명은 본 발명의 완전한 이해를 제공하는 목적을 위해 특정 상세들을 포함한다. 그러나, 본 발명이 이러한 특정 상세들 없이 실시될 수 있음이 당업자들에게 명백할 것이다. 일부 경우들에서, 본 발명의 개념들을 모호하게 하는 것을 회피하기 위해, 잘 알려진 구조들 및 컴포넌트들은 블록도 형태로 도시된다.
[0020]
데이터 정렬 문제들 및 스칼라 시작 어드레스 값의 효율적인 발생을 처리하기 위해, 정렬 타입 명령이 벡터 프로세서의 명령 세트 아키텍처(ISA; instruction set architecture)에서 생성된다. 벡터 프로세서의 벡터 레지스터 파일의 512-비트 또는 1024-비트 벡터 레지스터와 같은 넓은 메모리 위치에 저장된 팩킹된 데이터 엘리먼트의 시작 어드레스는 예를 들어, 벡터 레지스터 내의 임의의 바이트 위치에 있을 수 있다. 메모리 또는 레지스터 파일에 저장된 이러한 데이터 구조에 대한 시작 어드레스는 일반적으로, 큰 팩킹된 데이터 엘리먼트들을 프로세싱하는 벡터 프로세서 상에서 단일 시작 어드레스 값을 발생시키는 것과 비교하여, 범용(GP; general purpose) 프로세서 상에서 더 효율적으로 발생된다. GP 프로세서 및 벡터 코프로세서를 갖는 시스템에서, 이러한 시작 어드레스 값의 공유는 시간 소모적일 수 있고, 시스템의 성능에 영향을 미칠 수 있다. 본 명세서에서 설명되는 바와 같이 공유된 데이터 포트를 통해 커플링된 GP 프로세서 및 벡터 코프로세서를 포함하도록 프로세서 복합체를 체계화함으로써, 시작 어드레스가 GP 프로세서 상에서 발생되어, 시스템 성능에 영향을 미침이 없이, 데이터 정렬 동작들을 핸들링하는 벡터 프로세서에 효율적인 방식으로 전달되거나 벡터 프로세서와 공유될 수 있다. 정렬 타입 명령이 주로 정렬 목적들을 위해 이용되지만, 정렬 타입 명령은 또한, 가변하는 레벨들의 복잡성의 정렬 더하기 기능 타입 명령들을 포함하도록 확장될 수 있다. C-비트 Vd=valign(Vu@Rt) 명령 및 2C-비트 Vdd=valign(Vu@RT) 명령이, SIMD 벡터 코프로세서의 명령 세트 아키텍처(ISA)에 포함된다.
[0021]
도 1은 유리하게 이용될 수 있는 제 1 정렬 기능(100)의 실시예를 예시한다. 도 1은 2개의 프로세서들로부터의 데이터를 요구하는 명령인 1kb-워드 VRF Vd=valign(Vu@Rt) 명령(104)의 동작을 예시하며, Rt 필드는 레지스터 ― 레지스터의 저장된 값은 커플링된 GP 프로세서의 레지스터 파일로부터 획득됨 ― 를 식별하고, 다른 필드들은 코프로세서에서 해석된다. 벡터 코프로세서는 BxC-비트 벡터 레지스터 파일(VRF)을 이용하여 체계화되고, 여기서 B=32이고, C-비트=1024-비트(1kb)이다. Vd=valign(Vu@Rt) 명령(104)은 연산코드(opcode)(Opc)(105), 명령 특정 필드(106), 벡터 레지스터 어드레스 소스 필드(Vu)(107), 벡터 레지스터 어드레스 목적지 필드(Vd)(108), 및 GP 프로세서 시작 위치 레지스터 어드레스 소스 필드(GP Rt)(109)를 포함한다. Vu(107) 값이 직접적 어드레스 레지스터 값으로서 이용될 수 있거나, 또는 대안적으로 벡터 유닛 베이스 레지스터에 저장된 값에 의해, VRF의 Vu 레지스터가 간접적으로 식별될 수 있다. 3개의 C-비트 벡터 레지스터들이 정렬 명령의 실행에서 수반된다. 2개의 소스 오퍼랜드 레지스터들은 Vu(112) 및 Vu+1(114)이고, 결과 목적지 레지스터는 Vd(122)이다.
[0022]
Vd=valign(Vu@Rt) 명령(104)이 수신되어 디코딩될 때, GP 프로세서 레지스터(GP Rt)(109)는 GP 프로세서의 레지스터 파일로부터 액세스된다. 예를 들어, GP Rt의 비트들 [6:0]이 판독되어, 데이터 포트를 통해 벡터 코프로세서에 전달된다. 이러한 예시적인 시나리오에서, GP Rt[6:0] 값은, 정렬 기능을 위해 Vu 레지스터(112)의 바이트 시작 위치 "a50"(126)을 나타내는 십진수 값(decimal value) 50이다. 바이트 시작 위치 "a50"(126)은 또한, 바이트 "a0"(127)으로부터의 오프셋으로서 언급될 수 있다. 동작에서, 바이트 시작 위치 "a50"(126)으로부터 바이트 "a127"(128)까지의 데이터 엘리먼트들은 Vu 레지스터(112)로부터 선택되고, 바이트 "b0"(128)으로부터 Rt[6:0]-1 바이트 "b49"(130)까지의 데이터 엘리먼트들은 Vu+1 레지스터(114)로부터 선택된다. Vd=valign(Vu@Rt) 명령(104)을 실행시키는 것은, 바이트들 "a50"(126) 내지 "a127"(128)이, Vd 레지스터(122)의 "0" 포지션(131)에서 시작되는 바이트들 내지 바이트 "77" 포지션(132)으로 이동되게 한다. 또한, 정렬 명령의 실행은, 바이트들 "b0"(129) 내지 Rt[6:0]-1 바이트 "b49"(130)가, Vd 레지스터(122)의 "78" 포지션(133)에서 시작되는 바이트들 내지 바이트 "127" 포지션(134)으로 이동되게 한다. 이는 또한, Vu 레지스터(112)로부터의 Rt[6:0] 포지션에서의 바이트가 Vd 레지스터(122)의 최하위 바이트가 되고, Vu+1 레지스터(114)로부터의 Rt[6:0]-1 포지션에서의 바이트가 Vd 레지스터(122)의 최상위 바이트가 되는 것으로서 보여질 수 있다.
[0023]
도 2a 및 도 2b는, 유리하게 이용될 수 있는 제 2 정렬 기능(200 및 201)의 실시예들을 각각 예시한다. 도 2a는 스팬 비트(span bit), 이를테면, Rt[7]이 0이고, Rt[6:0]은 십진수(decimal) 50과 동등할 때의 예시적인 정렬 동작(219)을 도시한다. 도 2a는 2개의 프로세서들로부터의 데이터를 요구하는 명령인 2kb-워드 VRF Vdd=valign(Vu@RT) 명령(203)의 동작을 예시하며, GP Rt 값은, 커플링된 GP 프로세서의 GP Rt 어드레스(data@Rt)(334)에 있는 레지스터 파일로부터 획득되고, 명령(203)의 다른 필드들은 코프로세서에서 해석된다. 벡터 코프로세서는 BxC-비트 벡터 레지스터 파일(VRF)을 이용하여 체계화되며, 여기서 B=32이고, C-비트=1024-비트(1kb)이다. Vdd=valign(Vu@Rt) 명령(203)은 연산코드(Opc)(205), 명령 특정 필드(206), 벡터 레지스터 어드레스 소스 필드(Vu)(207), 벡터 레지스터 어드레스 목적지 필드(Vdd)(208), 및 GP 프로세서 시작 위치 레지스터 어드레스 소스 필드(GP Rt)(209)를 포함한다. Vu(207) 값이 직접적 어드레스 레지스터 값으로서 이용될 수 있거나, 또는 대안적으로 벡터 유닛(Vu) 베이스 레지스터에 저장된 값에 의해, VRF의 레지스터가 간접적으로 식별될 수 있다. 6개의 C-비트 벡터 레지스터들이 제 2 정렬 명령의 실행에서 수반된다. 4개의 소스 오퍼랜드 레지스터들은 Vu(212), Vu+1(214), Vu+2(216), 및 Vu+3(218)이고, 2개의 결과 목적지 레지스터들은 결과의 하위 128 비트들에 대한 Vdd.L(222) 및 결과의 상위 128 비트들에 대한 Vdd.H(224)이다.
[0024]
스팬 비트는, GP Rt 어드레스(data@Rt)(334)에서의 GP 레지스터 파일로부터 판독된 Rt 값의 비트 7이거나, 또는 대안적인 실시예에서, 스팬 비트는 GP Rt 필드(도 2a의 209 및 도 2b의 210)의 최상위 비트이다. 스팬 비트는, 이러한 예시적인 경우에서는 256 바이트 엘리먼트들인 팩킹된 데이터 엘리먼트들의 더블 레지스터 세트에 걸쳐 있을 수 있는 시작 어드레스를 표시한다. Vdd=valign(Vu@RT) 명령은, 도 1에 예시된 Vd=valign(Vu@RT) 명령의 정렬 동작과 비교하여 더블 정렬을 허용한다. 예시적인 Vdd 정렬 기능(200)은 스팬 비트에 따라 4개의 레지스터들 Vu(212), Vu+1(214), Vu+2(216), 및 Vu+3(218)의 그룹으로부터 레지스터들의 서브세트를 선택한다. 도 2a의 예시적인 Vdd 정렬 동작(220)에 있어서, 스팬 비트는 0이고, 올바른 선택된 소스 레지스터들은 Vu(212), Vu+1(214), 및 Vu+2(216)이다.
[0025]
Rt[7]=0과 같은 스팬 비트에 대해 Vdd=valign(Vu@RT) 명령(203)을 실행시키는 것은, Vu 레지스터(212)로부터의 오프셋 Rt[6:0] 엘리먼트 a50 내지 Byte-127 엘리먼트 a127, 그리고 Vu+1 레지스터(214)로부터의 Byte-0 엘리먼트 a128 내지 오프셋 Rt[6:0]-1 엘리먼트 a177로부터의 바이트들이 선택되고 그 후에 이동되게 하여서, 오프셋 Rt[6:0] 엘리먼트 a50에서의 Vu 바이트는 Vdd.L 레지스터(222)의 최하위 바이트가 되고, 오프셋 Rt[6:0]-1 엘리먼트 a177에서의 Vu+1 바이트는 Vdd.L 레지스터(222)의 최상위 바이트가 된다. 또한, 정렬 명령의 실행은, Vu+1 레지스터(214)로부터의 오프셋 Rt[6:0] 엘리먼트 a178 내지 Byte-127 엘리먼트 a255, 그리고 Vu+2 레지스터(216)로부터의 Byte-0 엘리먼트 b0 내지 오프셋 Rt[6:0]-1 엘리먼트 b49로부터의 바이트들이 선택되고 그 후에 이동되게 하여서, 오프셋 Rt[6:0] 엘리먼트 a178에서의 Vu+1 바이트는 Vdd.H 레지스터(224)의 최하위 바이트가 되고, 오프셋 Rt[6:0]-1 엘리먼트 b49에서의 Vu+2 바이트는 Vdd.H 레지스터(224)의 최상위 바이트가 된다.
[0026]
도 2b는 또한, Rt[7]과 같은 스팬 비트가 1이고 Rt[6:0]이 십진수 254와 동등할 때의 예시적인 정렬 기능(201)을 도시한다. 예시적인 Vdd 정렬 기능(201)은, 스팬 비트에 따라 4개의 레지스터들 Vu(212), Vu+1(214), Vu+2(216), 및 Vu+3(218)의 그룹으로부터 레지스터들의 서브세트를 선택한다. 예시적인 Vdd 정렬 동작(220)에 있어서, 스팬 비트는 1이고, 선택될 소스 레지스터들의 올바른 세트는 Vu+1(214), Vu+2(216), 및 Vu+3(218)이다. 따라서, 스팬 비트는, 시작 어드레스 관리 및 소스 레지스터 선택을 위해 부가적인 프로그램 명령들의 사용 없이 레지스터들의 적절한 세트가 선택되도록 허용한다.
[0027]
Rt[7]=1에 대해 Vdd=valign(Vu@RT) 명령(204)을 실행시키는 것은, Vu+1 레지스터(214)로부터의 오프셋 Rt[6:0](226) 내지 Byte-127(227)로부터의 바이트들 그리고 Vu+2 레지스터(216)로부터의 Byte-0(228) 내지 오프셋 (Rt[6:0]-1)=253(229)에서의 바이트가 선택되고 그 후에 이동되게 하여서, 오프셋 Rt[6:0](226)에서의 Vu+1 바이트는 Vdd.L 레지스터(222)의 최하위 바이트(230)가 되고, 오프셋 Rt[6:0]-1(229)에서의 Vu+2 바이트는 Vdd.L 레지스터(222)의 최상위 바이트(231)가 된다. 또한, 정렬 명령의 실행은, Vu+2 레지스터(216)로부터의 오프셋 Rt[6:0](232) 내지 Byte-127(233) 그리고 Vu+3 레지스터(218)로부터의 Byte-0(234) 내지 오프셋 (Rt[6:0]-1)=253(235)로부터의 바이트들이 선택되고 그 후에 이동되게 하여서, 오프셋 Rt[6:0](232)에서의 Vu+2 바이트는 Vdd.H 레지스터(224)의 최하위 바이트(236)가 되고, 오프셋 Rt[6:0]-1(235)에서의 Vu+3 바이트는 Vdd.H 레지스터(224)의 최상위 바이트(237)가 된다. Vdd=valign(Vu@RT) 명령(204)은 유리하게, Vd=valign(Vu@Rt) 명령(104)의 정렬 커패시티와 비교하여, 정렬되지 않은 데이터의 스팬의 2배가 정렬되게 한다. Rt[7]을 이용함으로써, 소프트웨어가 0 내지 255 바이트 범위의 GP Rt 포인터의 위치를 명시적으로 관리함이 없이, 더블 정렬 스팬이 달성된다.
[0028]
도 3a는 유리하게 이용될 수 있는 제 1 정렬 서브시스템(300)의 실시예를 예시한다. 제 1 정렬 서브시스템(300)은 메모리 계층(302), 이를테면, 레벨 1(L1) 캐시, L2 캐시, L3 캐시, 시스템 메모리, 벡터 코프로세서(304), 및 범용(GP) 프로세서(306)를 포함한다. GP 프로세서(306)는 GP 프로세서 레지스터 파일(307), 및 GP 프로세서(306)와 코프로세서(304) 사이의 데이터 포트(305)의 일부를 포함한다. 코프로세서(304)는 벡터 프로세서 명령 레지스터(308), 명령 디코드 유닛(309), 벡터 레지스터 파일(VRF)(310), 벡터 기능 유닛(312), 오퍼랜드 페치 유닛(operand fetch unit)(320), 결과 기록 유닛(330), 및 코프로세서(304)와 GP 프로세서(306) 사이의 데이터 포트(305)의 일부를 포함한다. GP 레지스터 파일(307)의 콘텐츠는 데이터 포트(305)를 통해 GP 프로세서(306)와 코프로세서(304) 사이에서 공유된다. 벡터 기능 유닛(312)은 정렬 유닛(314), 벡터 실행 유닛(315), 및 정렬 유닛(314)으로부터의 결과들 또는 벡터 실행 유닛(315)으로부터의 결과들을 선택하고 선택된 결과를 VRF(310)에 저장하기 위한 저장 회로(316)를 포함한다. VRF(310)는 BxC-비트 레지스터 파일로서 구성될 수 있고, 여기서 예를 들어, B=32 엔트리들이고, C-비트=1024-비트(1kb)이다.
[0029]
동작에서 제 1 정렬 서브시스템(300)을 이용시, 정렬 명령들(도 1의 104, 도 2a의 203, 또는 도 2b의 204)과 같은 정렬 명령이 벡터 명령 레지스터(308)에서 수신된다. 수신된 정렬 명령은, GP Rt 어드레스 필드(333), 디코딩된 연산 코드(decoded operation code)(335), Vu 레지스터 어드레스(338), 및 Vd 또는 Vdd 레지스터 어드레스 또는 어드레스들(339)을 포함하는 복수의 디코딩된 결과들을 생성하는 명령 디코드 유닛(309)에서 디코딩된다.
[0030]
도 2a 또는 도 2b와 관련하여 설명된 바와 같은 스팬 방법은, GP Rt 어드레스(data@Rt)(334)의 GP 레지스터 파일로부터 판독된 Rt 값의 비트 7을 이용하거나, 또는 대안적인 실시예에서, 스팬 비트는 GP Rt 필드(도 2a의 209 및 도 2b의 210)의 최상위 비트이다. Rt[6:0]의 하위 비트들은 오퍼랜드 페치 유닛(320)의 벡터 유닛(VU) 베이스 레지스터에 저장된 VRF 어드레스로부터의 오프셋을 표시한다. GP Rt 어드레스(data@Rt)(334)의 GP 레지스터 파일로부터 판독된 레지스터 기반 스팬 비트 Rt[7]은, VU 베이스 레지스터에 기초하여 선택하기 위한 VRF의 스팬을 표시한다. 예를 들어, Rt[7]=0을 이용시, Vu, Vu+1, Vu+2 레지스터들이 선택될 것이고, Rt[7]=1을 이용시, Vu+1, Vu+2, Vu+3 레지스터들이 선택될 것이다. 연산코드 기반 스팬 비트(337)는 VU 베이스 레지스터에 기초하여 선택하기 위한 VRF의 스팬을 표시한다. 예를 들어, "0"과 동등한 스팬 비트(337)를 이용시, Vu, Vu+1, Vu+2 레지스터들이 선택될 것이고, "1"과 동등한 스팬 비트(337)를 이용시, Vu+1, Vu+2, Vu+3 레지스터들이 선택될 것이다.
[0031]
GP Rt 어드레스 필드(333)는 데이터 포트(305)를 통해 GP 프로세서(306)에 포워딩되고, GP 프로세서(306)에서 GP Rt 어드레스 필드(333)는, GP Rt 어드레스(data@Rt)(334)에서 선택된 데이터를 초래하는 GP 프로세서 레지스터 파일(307)에 액세스하기 위해 이용된다. data@Rt(334)는 데이터 포트(305)를 통해, 정렬 유닛(314)에 의해 이용될 벡터 코프로세서(304)에 포워딩된다. 대안적인 구현에서, 오퍼랜드 페치 유닛(320)으로부터의 VRF 선택은 데이터 포트(305)를 통해 공유되는 data@Rt(334) 값으로부터 획득될 수 있다. 정렬 유닛(314)은 벡터 정렬 명령에 의해 식별되는 데이터 엘리먼트들을 선택하는 복수의 멀티플렉서들을 이용하여 구현될 수 있고, 이는 GP 프로세서로부터 페치된 시작 위치와 함께 스팬 비트 필드를 포함하고, 선택된 데이터 엘리먼트들을 예시적인 도 1, 도 2a, 또는 도 2b에 예시된 바와 같은 특정된 정렬된 위치에 위치시킨다.
[0032]
정렬 명령의 요건들에 기초하여, 벡터 레지스터 파일(VRF)(310)에 공급되는 2개 또는 4개의 소스 레지스터 어드레스들은 오퍼랜드 페치 유닛(320)에서 발생된다. 요구되는 소스 오퍼랜드들은 VRF(310)로부터 판독된다. 정렬 기능은, 예를 들어, 도 1, 도 2a 또는 도 2b의 정렬 명령들을 이용하여 설명된 바와 같은 공급된 소스 오퍼랜드들에 대해 동작한다. 저장 회로(316)는 정렬된 결과들을 선택하고, 이들을 VRF(310)에 전달하고, VRF(310)에서, 정렬된 데이터는, 결과 기록 유닛(330)에 의해 발생된 Vd/Vdd 어드레스 또는 어드레스들에 기록된다. 저장 회로(316)는 명령 디코드 유닛(309)에 의해 식별된 명령 디코드 정보에 기초하여, 정렬 유닛(314)으로부터의 결과 또는 벡터 실행 유닛(315)으로부터의 결과를 선택한다.
[0033]
도 3b는 유리하게 이용될 수 있는 제 2 정렬 서브시스템(350)의 실시예를 예시한다. 제 2 정렬 서브시스템(350)은 메모리 계층(302), 이를테면, 레벨 1(L1) 캐시, L2 캐시, L3 캐시, 시스템 메모리, 벡터 코프로세서(354), 및 범용(GP) 프로세서(356)를 포함한다. GP 프로세서(356)는 GP 프로세서 레지스터 파일(357), 및 GP 프로세서(356)와 코프로세서(354) 사이의 데이터 포트(355)의 일부를 포함한다. 코프로세서(354)는 벡터 프로세서 명령 레지스터(308), 명령 디코드 유닛(359), 벡터 레지스터 파일(VRF)(360), 벡터 기능 유닛(362), 오퍼랜드 페치 유닛(370), 결과 기록 유닛(380), 및 코프로세서(354)와 GP 프로세서(356) 사이의 데이터 포트(355)의 일부를 포함한다. GP 레지스터 파일(357)로부터의 콘텐츠는 데이터 포트(355)를 통해 GP 프로세서(356)와 코프로세서(354) 사이에서 공유된다. 벡터 기능 유닛(362)은 마스크 정렬 유닛(364), 벡터 실행 유닛(365), 및 마스크 정렬 유닛(364)으로부터의 결과 또는 벡터 실행 유닛(365)으로부터의 결과를 선택하고 선택된 결과를 VRF(360)에 저장하기 위한 저장 회로(366)를 포함한다. VRF(360)는 BxC-비트 레지스터 파일로서 구성될 수 있고, 여기서 예를 들어, B=32 엔트리들이고, C-비트=1024-비트(1kb)이다.
[0034]
32 엔트리 VRF에 대한 제 2 예에서, GP 프로세서의 레지스터 파일(357)로부터 선택된 32-비트 Rt.H(383)는 비트 마스크로서 설정되고, 여기서 각각의 인에이블된 비트는 판독될 VRF 어드레스를 표시하며, 예를 들어, 비트 0은 VRF 어드레스 0에 대응하고, 비트 1은 VRF 어드레스 1에 대응하고, VRF 어드레스 31에 대응하는 비트 31까지 계속된다. 또한, GP 프로세서의 레지스터 파일(357)로부터 선택된 32-비트 Rt.L(384)은 오프셋 또는 시작 위치로서 설정된다. 동작에서 제 2 정렬 서브시스템(350)을 이용시, 정렬 명령들(도 1의 104, 도 2a의 203, 또는 도 2b의 204)과 같은 정렬 명령은 벡터 명령 레지스터(308)에서 수신된다. 수신된 정렬 명령은, GP Rt 어드레스 필드(382), 디코딩된 연산 코드들(385 및 386), 스팬 비트(387), 이를테면, 도 2a 및 도 2b와 관련하여 설명된 바와 같은 Rt[7], Vu 레지스터 어드레스(388), 및 Vd 또는 Vdd 레지스터 어드레스들(389)을 포함하는 복수의 디코딩된 결과들을 생성하는 명령 디코드 유닛(359)에서 디코딩된다. GP Rt 어드레스 필드(382)는 GP 프로세서(356)에 포워딩되고, GP 프로세서(356)에서 GP Rt 어드레스 필드(382)는, data@Rt=Rt.L 오프셋 값 및 data@Rt+1=Rt.H 마스크 값을 초래하는 GP 프로세서 레지스터 파일(357)에 액세스하기 위해 이용된다. Rt.H(383) 마스크 값은 데이터 포트(355)를 통해 오퍼랜드 페치 유닛(370)에 포워딩되고, Rt.L(384) 오프셋 값 또는 시작 어드레스는 벡터 기능 유닛(362)에 포워딩된다. 정렬 명령 및 마스크의 요건들에 기초하여, 복수의 소스 레지스터 어드레스들이 벡터 Vu 기능(VuFn) 유닛(372)에서 발생되며, 복수의 소스 레지스터 어드레스들은 벡터 레지스터 파일(VRF)(360)에 공급된다. 예를 들어, 다음과 같다:
data@Rt+1=Rt.H = 0100_0000_1000_0000_0000_0000_0000_0001
32 엔트리 VRF(360)에 있어서, 이러한 마스크의 각각의 인에이블된 비트는, 마스크의 최하위 비트에 대응하는 레지스터 V0로부터 시작하여 판독될 VRF 어드레스를 표시한다. 인에이블된 비트가 "1"인 이러한 예시적인 마스크에서, V0, V23, 및 V30의 VRF 레지스터들이 판독된다. 32개까지의 레지스터들이 이러한 방식으로 특정될 수 있고, VRF(360)는 이러한 수의 동시적인 판독 동작들을 수용하기에 충분한 판독 포트들을 갖지 않을 수 있다. 따라서, 32개의 판독 포트들을 갖는 것에 대한 대안으로서, 순차적인 세트의 오퍼랜드 판독 동작들이 코프로세서(354)의 상태 머신 기능에 의해 제어될 수 있다. 예를 들어, 2개의 판독 포트들을 이용시, 32개의 인에이블된 마스크 비트들에 의해 특정되는 경우, 16개의 순차적인 판독 동작들이 32개까지의 레지스터들을 판독하기 위해 제공될 수 있고, 4개의 판독 포트들을 이용시, 8개의 순차적인 판독 동작들이 제공될 수 있다. 요구되는 소스 오퍼랜드들은 VRF(360)로부터 판독된다. 마스크 값은 또한, 벡터 실행 유닛(362) 상에서의 동작들을 마스크(mask)하기 위해 이용될 수 있다. 정렬 기능은, 예를 들어, 도 1 및 도 2a 및 도 2b의 정렬 명령들을 이용하여 설명된 바와 같이 공급된 소스 오퍼랜드들에 대해 동작한다. 저장 회로(366)는 정렬된 결과들을 선택하고, 이를 VRF(360)에 전달하며, VRF(360)에서, 정렬된 데이터는 결과 기록 유닛(380)에 의해 발생된 Vd/Vdd 어드레스 또는 어드레스들에 기록된다. 저장 회로(366)는, 명령 디코드 유닛(359)에 의해 식별된 명령 디코드 정보에 기초하여, 정렬 유닛(364)으로부터의 결과 또는 벡터 실행 유닛(365)로부터의 결과를 선택한다.
[0035]
도 3a의 벡터 Vu 기능(VuFn) 유닛(322) 및 도 3b의 VuFn 유닛(372)은, 제 2 정렬 기능(도 2a의 200 및 도 2b의 201)을 이용하여 설명된 바와 같은 1 오더링(one ordering)에 의한 리니어 증분(linear increment), 즉, Vu, Vu+1, 및 Vu+2과 같은 상이한 세트들의 벡터 레지스터 어드레스들을 구현할 수 있다. 또한, 다른 오더링들은 2 오더링(two ordering)에 의한 리니어 증분, 즉, Vu, Vu+2, Vu+4, 소수 오더링(prime number ordering)에 의한 증분, 즉, Vu, Vu+3, Vu+5, 이를테면, 제 1 세트의 레지스터들 Vu, Vu+P1, Vu+P2 및 제 2 세트의 레지스터들 Vu+P1, Vu+P2, Vu+P3을 포함할 수 있고, 여기서 P1, P2, P3은 예를 들어, 액세스가능 VRF 레지스터들의 범위에 있도록 정렬 명령에 의해 특정된 소수들, 또는 특정 정렬 명령에 의해 요구되는 다른 어드레스 오더링이다.
[0036]
정렬 유닛들(314 및 364)은 결합된 정렬 더하기 실행 기능 동작들을 허용하기 위해 벡터 실행 유닛(315 및 365)에 각각 커플링될 수 있는데, 이는 첫 번째로 정렬 결과를 저장하고 정렬 결과가 그 다음의 실행 기능에서 이용될 수 있기 전에 정렬 결과를 VRF로부터 재페치(refetch)하도록 요구하지 않는다. 벡터 정렬 및 동작 명령은, 이러한 결합된 정렬 및 실행 기능을 특정하기 위해 이용될 수 있다. 동작들은 벡터 실행 유닛들(315 또는 365)에 의해 제공되는 선택 벡터 실행 기능들을 포함할 수 있다.
[0037]
도 3a의 데이터 포트(305) 및 GP 레지스터 파일(307), 또는 도 3b의 데이터 포트(355) 및 GP 레지스터 파일(357)은, GP 프로세서(306 또는 356)와 같은 제 1 프로세서의 스칼라 레지스터 파일로부터 액세스된 하나 또는 둘 이상의 레지스터 값들을, 코프로세서(304 또는 354)와 같은 제 2 프로세서와 공유하기 위한 예시적인 수단을 제공한다. 또한, 하나 또는 둘 이상의 레지스터 값들은, 벡터 프로세서 명령 레지스터(308)에서 페치된 벡터 정렬 명령(104, 203, 또는 204)에서 특정되는 Rt 어드레스(333 또는 382)에 따라 액세스되며, 시작 위치는 공유된 레지스터 값들 중 하나로부터 결정된다.
[0038]
예를 들어, 도 1, 도 2a, 및 도 2b에서 예시된 바와 같이, 오퍼랜드 페치 유닛(320 또는 370), 벡터 레지스터 파일(VRF)(310 또는 360), 및 정렬 유닛(314 또는 364)은 제 2 프로세서의 데이터를 정렬하기 위한 예시적인 수단을 제공하며, 데이터는 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 시작 Vu 레지스터 내의 시작 위치와 VRF의 마지막 Vu 레지스터의 종료 위치 사이에서 식별된다.
[0039]
명령 디코드 유닛(309 또는 359), 저장 회로(316 또는 366), 및 VRF(310 또는 360)은, 정렬 회로로부터 정렬된 데이터를 선택하고, 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라, 정렬된 데이터를 벡터 레지스터 파일에 저장하기 위한 예시적인 수단을 제공한다.
[0040]
도 4는 유리하게 이용될 수 있는 데이터 정렬 프로세스(400)에 대한 실시예를 예시한다. 데이터 정렬 프로세스(400)에서의 동작들은 도 1, 도 2a, 도 2b, 도 3a 및 도 3b의 엘리먼트들과 연관된다. 블록(404)에서, 벡터 정렬 명령이, 308과 같은 벡터 프로세서 명령 레지스터에서 수신된다. 블록(406)에서, 수신된 벡터 정렬 명령은, 명령 디코드 유닛(309 또는 359)에서 행해지는 바와 같이 디코딩된다. 블록(408)에서, 벡터 정렬 명령이 도 1에 도시된 바와 같은 Vd 벡터 결과에 대한 것인지 도 2a 또는 도 2b에 도시된 바와 같은 Vdd 벡터 결과에 대한 것인지에 대한 결정이 이루어진다. 디코드가, Vd 벡터 결과가 생성될 것임을 표시하는 경우, 프로세스(400)는 블록(410)으로 진행된다. 블록(410)에서, 포트 GP Rt 레지스터 및 벡터 레지스터 파일(VRF)의 Vu 및 Vu+1 레지스터들이 판독된다. 블록(412)에서, Rt1 어드레스에 대한 data@Rt 판독은 도 1의 "a50"(126)과 같은 시작 바이트로서 이용된다. 블록(414)에서, Vu 및 Vu+1 레지스터들의 데이터는, 도 1의 Vd 레지스터(122)에서 도시된 바와 같은 결과 Vd를 생성하는 Vd=valign(Vu@Rt) 명령(104)에 따라 정렬된다. 그 다음으로, 프로세스(400)는 블록(404)으로 복귀된다.
[0041]
블록(408)으로 되돌아가면, Vdd 벡터 결과가 생성될 것이라는 결정이 이루어지는 경우, 프로세스(400)는 블록(418)으로 진행된다. 블록(418)에서, 케이스 동작(case operation)이 결정된다. 스팬 비트가 2 또는 3 이상의 비트들로 확장되는 경우, 복수의 레지스터 어드레스들이 특정될 수 있다. 예를 들어, 케이스 0(C0)은 값 0을 갖는 스팬 비트와 동일하고, 케이스 1(C1)은 값 1을 갖는 스팬 비트와 동일하지만, 추가의 케이스 어드레스 발생 타입들이 특정될 수 있는데, 이를테면, C2 코드에 대한 플러스 2 오더링(plus two ordering), 또는 C3 코드에 대한 플러스 소수 오더링(plus prime number ordering) 등등이다. C0 코드가 결정되는 경우, 프로세스(400)는 블록(420)으로 진행된다. 블록(420)에서, Vu, Vu+1, 및 Vu+2 레지스터들 및 포트 GP Rt 레지스터가 판독된다. 블록(422)에서, Rt2 어드레스에 대해 판독된 data@Rt가 시작 바이트로서 이용된다. 블록(424)에서, Vu, Vu+1, 및 Vu+2 레지스터들의 데이터는 결과 Vdd를 생성하는 Vdd=valign(Vu@RT) 명령(204)에 따라 정렬된다. 그 다음으로, 프로세스(400)는 블록(404)으로 복귀된다.
[0042]
블록(418)으로 되돌아가면, C1 코드가 결정되는 경우, 프로세스(400)는 블록(430)으로 진행된다. 블록(430)에서, Vu+1, Vu+2, 및 Vu+3 레지스터들 및 포트 GP Rt 레지스터가 판독된다. 블록(422)에서, Rt2 어드레스에 대해 판독된 data@Rt가 시작 바이트로서 이용된다. 블록(424)에서, Vu+1, Vu+2, 및 Vu+3 레지스터들의 데이터는 Vdd 레지스터들(222 및 224)에서 도시된 바와 같은 결과 Vdd를 생성하는 Vdd=valign(Vu@RT) 명령(204)에 따라 정렬된다. 그 다음으로, 프로세스(400)는 블록(404)으로 복귀된다.
[0043]
블록(418)으로 되돌아가면, Ck 코드가 결정되는 경우, 프로세스(400)는 블록(432)으로 진행된다. 블록(432)에서, 예를 들어, Vu+k, Vu+k+1, 및 Vu+k+2 레지스터들 및 포트 GP Rt 레지스터가 판독되며, k는 1보다 더 큰 또는 1과 동등한 정수이도록 정렬 명령에 의해 특정되며, 여기서 Vu+k, Vu+k+1, 및 Vu+k+2는 VRF의 커패시티 내에 있다. 2 또는 소수 오더링들에 의해 이전에 설명된 바와 같은 또는 특정 애플리케이션에 의해 요구되는 바와 같은, 벡터 레지스터들의 다른 오더링들이 판독될 수 있다. 블록(422)에서, Rt2 어드레스에 대해 판독된 data@Rt가 시작 바이트로서 이용된다. 블록(424)에서, Vu+k, Vu+k+1, 및 Vu+k+2 레지스터들의 데이터는 결과 Vdd를 생성하는 Vdd=valign(Vu@RT) 명령(204)에 따라 정렬된다. 그 다음으로, 프로세스(400)는 블록(404)으로 복귀된다. 블록(418)에서 스팬 코드에 의해 결정된 바와 같은 그리고 벡터 정렬 명령에 의해 특정된 바와 같은 다른 가능한 레지스터 선택들이 존재한다. 예를 들어, 제 1 스팬 코드는, 블록들(420, 430, 및 432)에서 도시된 레지스터 세트들 중 하나를 선택하도록 특정될 수 있고, 제 2 스팬은 제 1 스팬 코드에 의해 선택된 세트와 상이한, 레지스터들의 세트를 선택하도록 특정될 수 있다. 예를 들어, 블록(432)에서 예시된 바와 같은 제 1 세트의 레지스터들 Vu+k, Vu+k+1, 및 Vu+k+2가 제 1 스팬 코드에 의해 선택되는 경우, 제 2 세트의 레지스터들을 위해, 예시되지 않은 Vu+k+1, Vu+k+2, 및 Vu+k+3과 같은 상이한 세트의 레지스터들이 제 2 스팬 코드에 의해 선택될 수 있다. 다른 예에서, 블록(420)에 예시된 바와 같은 제 1 세트의 레지스터들 Vu, Vu+1, Vu+2는 스팬 코드 C0에 의해 선택될 수 있고, 블록(432)에 예시된 바와 같은 제 2 세트의 레지스터들 Vu+k, Vu+k+1, Vu+k+2는 스팬 코드 Ck에 의해 선택될 수 있다.
[0044]
도 5는 벡터 정렬 기능들을 제공하고 휴대용 디바이스의 실시간 요건들을 충족하도록 구성된 벡터 코프로세서와 같은 코프로세서(CoP)(538) 및 범용(GP) 프로세서(536)를 갖는 휴대용 디바이스(500)를 예시한다. 휴대용 디바이스(500)는 무선 전자 디바이스일 수 있고, 소프트웨어 명령들(510)을 갖는 시스템 메모리(508)에 커플링된 프로세서 복합체(506)를 포함하는 시스템 코어(504)를 포함할 수 있다. 휴대용 디바이스(500)는 전원(514), 안테나(516), 키보드와 같은 입력 디바이스(518), 액정 디스플레이(LCD)와 같은 디스플레이(520), 비디오 능력을 갖는 하나 또는 둘 이상의 카메라들(522), 스피커(524) 및 마이크로폰(526)을 포함한다. 시스템 코어(504)는 또한, 무선 인터페이스(528), 디스플레이 제어기(530), 카메라 인터페이스(532), 및 코덱(codec)(534)을 포함한다. 프로세서 복합체(506)는 로컬 레벨 1 명령 캐시 및 레벨 1 데이터 캐시(549)를 갖는 GP 프로세서(536)와 레벨 1 벡터 메모리(554)를 갖는 코프로세서(CoP)(538)의 듀얼 코어 어레인지먼트를 포함할 수 있다. CoP(538)의 정렬 기능은 도 1 내지 도 4의 정렬 기능들에 대응할 수 있다. 프로세서 복합체(506)는 또한, 모뎀 서브시스템(540), 플래시 제어기(544), 플래시 디바이스(546), 멀티미디어 서브시스템(548), 레벨 2 캐시(550), 및 메모리 제어기(552)를 포함할 수 있다. 플래시 디바이스(546)는 착탈식 플래시 메모리를 포함할 수 있거나, 또한 임베딩된 메모리일 수 있다.
[0045]
예시적인 예에서, 시스템 코어(504)는 도 1 내지 도 4에서 또는 도 1 내지 도 4와 연관되어 예시된 실시예들 중 임의의 실시예에 따라 동작한다. 예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, CoP(538)는 도 1 및 도 2에 예시된 바와 같은 예시적인 데이터 정렬 기능들을 제공하기 위해, L1 I & D 캐시들, L2 캐시(550)의 메모리들 및 시스템 메모리(508)에 저장된 프로그램 명령들에 액세스하도록 구성된다.
[0046]
무선 인터페이스(528)는 프로세서 복합체(506) 및 무선 안테나(516)에 커플링될 수 있어서, 안테나(516) 및 무선 인터페이스(528)를 통해 수신된 무선 데이터가 MSS(540)에 제공되고 CoP(538) 및 GP 프로세서(536)와 공유될 수 있다. 카메라 인터페이스(532)는 프로세서 복합체(506)에 커플링되고, 비디오 능력을 갖는 카메라(522)와 같은 하나 또는 둘 이상의 카메라들에 또한 커플링된다. 디스플레이 제어기(530)는 프로세서 복합체(506) 및 디스플레이 디바이스(520)에 커플링된다. 코더/디코더(CODEC)(534)가 또한 프로세서 복합체(506)에 커플링된다. 한 쌍의 스테레오 스피커들을 포함할 수 있는 스피커(524) 및 마이크로폰(526)은 CODEC(534)에 커플링된다. 주변 디바이스들 및 그들의 연관된 인터페이스들은 예시적이며, 수량 또는 커패시티에 있어서 제한되지 않는다. 예를 들어, 입력 디바이스(518)는 유니버셜 시리얼 버스(USB) 인터페이스 등, 쿼티(QWERTY) 스타일 키보드, 영숫자 키보드, 및 숫자 패드를 포함할 수 있으며, 이들은 특정 디바이스에서 개별적으로 또는 상이한 디바이스에서 조합되어 구현될 수 있다.
[0047]
GP 프로세서(536) 및 CoP(538)는 소프트웨어 명령들(510)을 실행시키도록 구성되며, 소프트웨어 명령들(510)은 시스템 메모리(508)와 같은 비-일시적 컴퓨터-판독가능 매체에 저장되고, 듀얼 코어 프로세서들(536 및 538)과 같은 컴퓨터로 하여금, 도 1 및 도 2에 예시된 바와 같은 데이터 정렬 기능들을 제공하도록 프로그램을 실행시키게 실행가능하다. GP 프로세서(536) 및 CoP(538)는, GP 프로세서(536) 상에서 Rt.H 및 Rt.L에 또한 대응할 수 있는 변수 Rt를 계산하고 GP Rt 데이터 값 또는 값들을 CoP(538)와 공유하는 Vd=valign(Vu@Rt) 및 Vdd=valign(Vu@Rt)와 같은 소프트웨어 명령들(510)을 실행시키도록 구성된다. 소프트웨어 명령들은 시스템 메모리(508) 및 L1 명령 메모리(549)와 같은 상이한 레벨들의 캐시 메모리들로부터 액세스된다.
[0048]
특정 실시예에서, 시스템 코어(504)는 시스템-인-패키지(system-in-package)에 또는 시스템-온-칩(system-on-chip) 디바이스 상에 물리적으로 체계화된다. 특정 실시예에서, 시스템-온-칩 디바이스로서 체계화된 시스템 코어(504)는 도 5에 예시된 바와 같이, 전원(514), 무선 안테나(516), 입력 디바이스(518), 디스플레이 디바이스(520), 카메라/카메라들(522), 스피커(524), 마이크로폰(526)에 물리적으로 커플링되고, 착탈식 플래시 디바이스(546)에 커플링될 수 있다.
[0049]
본 명세서에서 설명된 실시예들에 따른 휴대용 디바이스(500)는, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 태블릿들, 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 비디오 플레이어, 디지털 비디오 플레이어, 디지털 비디오 디스크(DVD) 플레이어, 휴대용 디지털 비디오 플레이어, 데이터 또는 컴퓨터 명령들을 저장 또는 리트리브하는 임의의 다른 디바이스, 또는 이들의 임의의 결합과 같은 다양한 전자 디바이스들에 포함될 수 있다.
[0050]
본 명세서에서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 엘리먼트들, 또는 컴포넌트들은, 본 명세서에서 설명된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 로직 컴포넌트들, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 결합을 이용하여 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한, 컴퓨팅 컴포넌트들의 결합, 예를 들어, DSP와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, 또는 DSP 코어와 공조하는 하나 또는 둘 이상의 마이크로프로세서들, 또는 원하는 애플리케이션에 적절한 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0051]
예를 들어, 도 5의 듀얼 코어 프로세서들(536 및 538)은 프로그램의 제어 하에서 실시간 태스크를 서비스하기 위해 멀티프로세서 시스템에서 데이터 정렬 기능들에 대한 명령들을 실행하도록 구성될 수 있다. 프로세서 복합체(506)와 로컬로 직접적으로 연관된 컴퓨터 판독가능 비-일시적 저장 매체 상에 저장된 프로그램은 이를테면, 명령 캐시(549)를 통해 이용가능하거나, 또는 특정 입력 디바이스(518) 또는 무선 인터페이스(528)를 통해 액세스가능할 수 있다. 예를 들어, 입력 디바이스(518) 또는 무선 인터페이스(528)는 또한, 프로세서 로컬 데이터 캐시들과 같은 프로세서들과 로컬로 직접적으로 연관된 또는 시스템 메모리(508)로부터 액세스가능한 메모리 디바이스에 존재하는 데이터에 액세스할 수 있다. 본 명세서에서 개시된 다양한 실시예들과 관련하여 설명된 방법들은 직접적으로 하드웨어로, 프로세서에 의해 실행되는 하나 또는 둘 이상의 프로그램들을 갖는 소프트웨어 모듈로, 또는 이 둘의 결합으로 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 플래시 메모리, 판독 전용 메모리(ROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 하드 디스크, 착탈식 디스크, 컴팩트 디스크(CD)-ROM, 디지털 비디오 디스크((DVD) 또는 당해 기술 분야에 알려진 임의의 다른 형태의 비-일시적 저장 매체에 상주할 수 있다. 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록, 비-일시적 저장 매체가 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0052]
본 발명이 프로세서 시스템들에서의 사용을 위해 예시적인 실시예들의 맥락에서 개시되지만, 앞서의 논의 및 아래에 뒤따르는 청구항들과 일치하는 매우 다양한 구현들이 당업자들에 의해 이용될 수 있음이 인식될 것이다. 예를 들어, 고정 기능 구현들이 또한 본 발명의 다양한 실시예들을 활용할 수 있다.
Claims (23)
- 벡터 정렬 명령을 실행하기 위한 방법으로서,
제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일(scalar register file)의 레지스터로부터 상기 제 1 프로세서 상의 시작 위치에 액세스하는 단계; 및
상기 제 2 프로세서 상에서, 정렬된 데이터 값들의 세트로서 벡터 레지스터 파일(VRF; vector register file)의 타겟 레지스터에 저장되도록, 상기 VRF의 레지스터 내의 상기 시작 위치에서 시작되는 데이터 값들의 세트를 정렬하는 단계
를 포함하는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 1 항에 있어서,
상기 스칼라 레지스터 파일의 레지스터 및 상기 타겟 레지스터는 상기 벡터 정렬 명령에서 특정되고, 상기 VRF의 레지스터는 벡터 유닛(Vu) 베이스 레지스터에 저장된 값에 의해 간접적으로 식별되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 1 항에 있어서,
스팬 비트(span bit)는 상기 VRF의 레지스터들의 제 1 그룹의 제 1 레지스터 또는 상기 VRF의 레지스터들의 제 2 그룹의 제 2 레지스터를 상기 VRF의 레지스터로서 선택하는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 3 항에 있어서,
상기 스팬 비트는 상기 시작 위치의 최상위 비트인,
벡터 정렬 명령을 실행하기 위한 방법. - 제 3 항에 있어서,
상기 레지스터들의 제 1 그룹의 제 1 레지스터는, 레지스터들의 명령 특정 오더링(instruction specified ordering)에 따라 식별된 상기 레지스터들의 제 1 그룹의 다른 레지스터들을 갖는 상기 벡터 정렬 명령의 Vu 필드에 의해 식별되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 프로세서는 범용(GP; general purpose) 프로세서이고,
상기 제 2 프로세서는 단일 명령 다중 데이터(SIMD; single instruction multiple data) 벡터 프로세서인,
벡터 정렬 명령을 실행하기 위한 방법. - 제 1 항에 있어서,
상기 스칼라 레지스터 파일의 레지스터가 상기 제 2 프로세서에 할당된 데이터 포트를 통해 공유되어서, 상기 제 1 프로세서에 대한 동작들에 영향을 미침이 없이, 상기 시작 위치의 액세스가 발생하도록 허용되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 1 항에 있어서,
제 1 프로세서 상에서 발생되고, 상기 제 1 프로세서의 스칼라 레지스터 파일의 레지스터에 저장되고, 그리고 상기 제 1 프로세서와 제 2 프로세서 사이에서 공유되는 값으로부터 상기 시작 위치 및 스팬 비트에 액세스하는 단계; 및
상기 제 2 프로세서 상에서, 정렬된 데이터 값들의 세트로서 벡터 레지스터 파일(VRF)의 레지스터들의 타겟 세트에 저장되도록, 상기 VRF의 레지스터들의 세트 내의 시작 위치에서 시작되는 데이터 값들의 세트를 정렬하는 단계
를 더 포함하고,
상기 VRF의 레지스터들의 세트는 상기 스팬 비트에 기초하여, 레지스터들의 제 1 세트 또는 레지스터들의 제 2 세트로서 선택되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 8 항에 있어서,
상기 레지스터들의 제 1 세트는 Vu 식별 레지스터에서 시작되는 리니어 플러스 1 오더링(linear plus one ordering)의 3개의 레지스터들의 세트이고,
상기 레지스터들의 제 2 세트는 Vu+k 식별 레지스터에서 시작되는 리니어 플러스 k 플러스 1 오더링(linear plus k plus one ordering)의 3개의 레지스터들의 세트이고,
k는, 1보다 크거나 1과 동등한 정수이도록 상기 정렬 명령에 의해 특정되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 8 항에 있어서,
상기 레지스터들의 제 1 세트는 Vu 식별 레지스터에서 시작되는 리니어 플러스 2 오더링(linear plus two ordering)의 3개의 레지스터들의 세트이고,
상기 레지스터들의 제 2 세트는 Vu+k 식별 레지스터에서 시작되는 리니어 플러스 k 플러스 2 오더링(linear plus k plus one ordering)의 3개의 레지스터들의 세트이고,
k는, 1보다 크거나 1과 동등한 정수이도록 상기 정렬 명령에 의해 특정되는,
벡터 정렬 명령을 실행하기 위한 방법. - 제 8 항에 있어서,
상기 레지스터들의 제 1 세트는 Vu, Vu+P1, Vu+P2이고, 상기 레지스터들의 제 2 세트는 Vu+P1, Vu+P2, Vu+P3이고, 그리고 P1, P2, P3은 액세스가능 VRF 레지스터들의 범위에 있도록 상기 정렬 명령에 의해 특정된 소수(prime number)들인,
벡터 정렬 명령을 실행하기 위한 방법. - 벡터 정렬 및 동작 명령을 실행하기 위한 방법으로서,
제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 레지스터로부터 상기 제 1 프로세서 상에서 발생된 시작 위치에 액세스하는 단계;
상기 제 2 프로세서 상에서, 정렬된 데이터 값들의 세트를 발생시키기 위해, 벡터 레지스터 파일(VRF)의 레지스터 내의 시작 위치에서 시작되는 데이터 값들의 세트를 정렬하는 단계; 및
상기 VRF의 타겟 레지스터에 저장되는 결과를 발생시키기 위해, 상기 벡터 정렬 및 동작 명령에 따라, 상기 정렬된 데이터 값들에 대해 동작하는 단계
를 포함하는,
벡터 정렬 및 동작 명령을 실행하기 위한 방법. - 제 12 항에 있어서,
상기 스칼라 레지스터 파일의 레지스터가 상기 제 2 프로세서에 할당된 데이터 포트를 통해 공유되어서, 상기 제 1 프로세서에 대한 동작들에 영향을 미침이 없이, 상기 시작 위치의 액세스가 발생하도록 허용되는,
벡터 정렬 및 동작 명령을 실행하기 위한 방법. - 제 12 항에 있어서,
상기 스칼라 레지스터 파일의 레지스터 및 상기 타겟 레지스터는 상기 벡터 정렬 및 동작 명령에서 특정되고,
상기 VRF의 레지스터는 벡터 유닛(Vu) 베이스 레지스터에 저장된 값에 의해 간접적으로 식별되는,
벡터 정렬 및 동작 명령을 실행하기 위한 방법. - 벡터 마스크 정렬 명령을 실행하기 위한 방법으로서,
제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 제 1 레지스터 및 제 2 레지스터로부터, 상기 제 1 프로세서 상에서 발생된 마스크 및 시작 위치에 액세스하는 단계;
상기 마스크의 인에이블된 비트들에 따라 상기 제 2 프로세서 상의 벡터 레지스터 파일(VRF)의 레지스터들의 세트를 식별하기 위해 상기 마스크를 적용하는 단계; 및
상기 제 2 프로세서 상에서, 정렬된 데이터 값들의 세트로서 상기 벡터 레지스터 파일(VRF)의 레지스터들의 타겟 세트에 저장되도록, 상기 VRF의 레지스터들의 식별된 세트 내의 시작 위치에서 시작되는 데이터 값들의 세트를 정렬하는 단계
를 포함하는,
벡터 마스크 정렬 명령을 실행하기 위한 방법. - 제 15 항에 있어서,
상기 제 1 레지스터 및 상기 제 2 레지스터가 상기 제 2 프로세서에 할당된 데이터 포트를 통해 공유되어서, 상기 제 1 프로세서에 대한 동작들에 영향을 미침이 없이, 상기 마스크 및 상기 시작 위치의 액세스가 발생하도록 허용되는,
벡터 마스크 정렬 명령을 실행하기 위한 방법. - 벡터 정렬 명령을 실행하기 위한 장치로서,
하나 또는 둘 이상의 레지스터 값들을 제 2 프로세서와 공유하도록 구성된 제 1 프로세서와 연관된 스칼라 레지스터 파일 ― 상기 하나 또는 둘 이상의 레지스터 값들은 벡터 정렬 명령에서 특정된 Rt 어드레스에 따라 상기 스칼라 레지스터 파일로부터 액세스됨 ―;
상기 하나 또는 둘 이상의 레지스터 값들로부터 결정된 정렬 시작 위치 및 상기 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 복수의 레지스터들 내에서 식별된 데이터를 정렬하도록 구성된 상기 제 2 프로세서의 정렬 회로; 및
상기 정렬 회로로부터 정렬된 데이터를 선택하고, 상기 정렬된 데이터를 상기 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라 상기 벡터 레지스터 파일에 저장하도록 구성된 저장 회로
를 포함하는,
벡터 정렬 명령을 실행하기 위한 장치. - 제 17 항에 있어서,
상기 시작 위치는 상기 복수의 레지스터들 중 시작 레지스터 내에 있는,
벡터 정렬 명령을 실행하기 위한 장치. - 제 17 항에 있어서,
더블 정렬 명령(double alignment instruction)은, 스팬 코드의 상태에 따라 상기 VRF의 레지스터들의 제 1 세트 또는 레지스터들의 제 2 세트를 식별하기 위해, 상기 하나 또는 둘 이상의 레지스터 값들로부터 선택된 스팬 코드를 특정하는,
벡터 정렬 명령을 실행하기 위한 장치. - 제 17 항에 있어서,
마스크 정렬 명령은, 마스크의 하나 또는 둘 이상의 인에이블된 비트들에 따라 상기 VRF로부터 선택된 하나 또는 둘 이상의 레지스터들에 저장된 데이터의 정렬을 식별하기 위해 상기 하나 또는 둘 이상의 레지스터 값들로부터 선택된 마스크를 특정하는,
벡터 정렬 명령을 실행하기 위한 장치. - 제 17 항에 있어서,
상기 제 1 프로세서의 상기 스칼라 레지스터 파일로부터 액세스된 상기 하나 또는 둘 이상의 레지스터 값들이 상기 제 2 프로세서에 할당된 데이터 포트를 통해 공유되어서, 상기 제 1 프로세서에 대한 동작들에 영향을 미침이 없이, 상기 레지스터 값들의 액세스가 발생하도록 허용되는,
벡터 정렬 명령을 실행하기 위한 장치. - 컴퓨터 판독가능 프로그램 데이터 및 코드로 인코딩된 컴퓨터 판독가능 비-일시적 매체로서,
상기 프로그램 데이터 및 코드는 실행될 때,
제 1 프로세서와 제 2 프로세서 사이에서 공유되는 스칼라 레지스터 파일의 레지스터로부터 상기 제 1 프로세서 상의 시작 위치에 액세스하고, 그리고
상기 제 2 프로세서 상에서, 정렬된 데이터 값들의 세트로서 벡터 레지스터 파일(VRF)의 타겟 레지스터에 저장되게, 상기 VRF의 레지스터 내의 시작 위치에서 시작되는 데이터 값들의 세트를 정렬하도록 동작가능한,
컴퓨터 판독가능 비-일시적 매체. - 벡터 정렬 명령을 실행하기 위한 장치로서,
제 1 프로세서의 스칼라 레지스터 파일로부터 액세스되는 하나 또는 둘 이상의 레지스터 값들을 제 2 프로세서와 공유하기 위한 수단 ― 상기 하나 또는 둘 이상의 레지스터 값들은 벡터 정렬 명령에서 특정된 Rt 어드레스에 따라 액세스되며, 시작 위치는 공유된 레지스터 값들 중 하나로부터 결정됨 ―;
상기 제 2 프로세서에 데이터를 정렬하기 위한 수단 ― 상기 데이터는 상기 벡터 정렬 명령에 따라 벡터 레지스터 파일(VRF)의 시작 Vu 레지스터 내의 시작 위치와 상기 VRF의 마지막 Vu 레지스터의 종료 위치 사이에서 식별됨 ―; 및
정렬 회로로부터 정렬된 데이터를 선택하고, 상기 정렬된 데이터를 상기 벡터 정렬 명령에 의해 특정된 정렬 저장 어드레스에 따라 상기 벡터 레지스터 파일에 저장하기 위한 수단
을 포함하는,
벡터 정렬 명령을 실행하기 위한 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/777,297 | 2013-02-26 | ||
US13/777,297 US9632781B2 (en) | 2013-02-26 | 2013-02-26 | Vector register addressing and functions based on a scalar register data value |
PCT/US2014/017713 WO2014133895A2 (en) | 2013-02-26 | 2014-02-21 | Vector register addressing and functions based on a scalar register data value |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150122195A true KR20150122195A (ko) | 2015-10-30 |
KR101753900B1 KR101753900B1 (ko) | 2017-07-04 |
Family
ID=50272743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157025988A KR101753900B1 (ko) | 2013-02-26 | 2014-02-21 | 스칼라 레지스터 데이터 값에 기초하는 벡터 레지스터 어드레싱 및 기능들 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9632781B2 (ko) |
EP (1) | EP2962187B1 (ko) |
JP (1) | JP6293795B2 (ko) |
KR (1) | KR101753900B1 (ko) |
CN (1) | CN104981771B (ko) |
WO (1) | WO2014133895A2 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180126520A (ko) * | 2016-03-23 | 2018-11-27 | 에이알엠 리미티드 | 벡터 술어 명령 |
KR20180129058A (ko) * | 2017-05-25 | 2018-12-05 | 삼성전자주식회사 | 벡터 프로세서의 서열 정렬 방법 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10001995B2 (en) | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
US20170177355A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instruction and Logic for Permute Sequence |
US11243958B2 (en) | 2015-12-31 | 2022-02-08 | Teradata Us, Inc. | Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions |
CN111580863B (zh) * | 2016-01-20 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
US10296337B2 (en) * | 2016-03-21 | 2019-05-21 | International Business Machines Corporation | Preventing premature reads from a general purpose register |
CN107315718B (zh) * | 2016-04-26 | 2020-08-21 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
US20180217838A1 (en) * | 2017-02-01 | 2018-08-02 | Futurewei Technologies, Inc. | Ultra lean vector processor |
CN114008604A (zh) * | 2020-07-28 | 2022-02-01 | 深圳市汇顶科技股份有限公司 | 具有专用寄存器的risc处理器 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5922066A (en) | 1997-02-24 | 1999-07-13 | Samsung Electronics Co., Ltd. | Multifunction data aligner in wide data width processor |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
GB2372848B (en) | 2001-02-20 | 2004-10-27 | Advanced Risc Mach Ltd | Data processing using a coprocessor |
GB2382673B (en) | 2001-10-31 | 2005-10-26 | Alphamosaic Ltd | A vector processing system |
US7376812B1 (en) | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
JP2005535966A (ja) * | 2002-08-09 | 2005-11-24 | インテル・コーポレーション | アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7574409B2 (en) | 2004-11-04 | 2009-08-11 | Vericept Corporation | Method, apparatus, and system for clustering and classification |
US7620797B2 (en) | 2006-11-01 | 2009-11-17 | Apple Inc. | Instructions for efficiently accessing unaligned vectors |
GB2444744B (en) | 2006-12-12 | 2011-05-25 | Advanced Risc Mach Ltd | Apparatus and method for performing re-arrangement operations on data |
US8255446B2 (en) * | 2006-12-12 | 2012-08-28 | Arm Limited | Apparatus and method for performing rearrangement and arithmetic operations on data |
US7783860B2 (en) | 2007-07-31 | 2010-08-24 | International Business Machines Corporation | Load misaligned vector with permute and mask insert |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US10387151B2 (en) | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US7865693B2 (en) | 2008-10-14 | 2011-01-04 | International Business Machines Corporation | Aligning precision converted vector data using mask indicating offset relative to element boundary corresponding to precision type |
US8607033B2 (en) | 2010-09-03 | 2013-12-10 | Lsi Corporation | Sequentially packing mask selected bits from plural words in circularly coupled register pair for transferring filled register bits to memory |
US8904153B2 (en) | 2010-09-07 | 2014-12-02 | International Business Machines Corporation | Vector loads with multiple vector elements from a same cache line in a scattered load operation |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
-
2013
- 2013-02-26 US US13/777,297 patent/US9632781B2/en active Active
-
2014
- 2014-02-21 WO PCT/US2014/017713 patent/WO2014133895A2/en active Application Filing
- 2014-02-21 KR KR1020157025988A patent/KR101753900B1/ko active IP Right Grant
- 2014-02-21 CN CN201480008139.9A patent/CN104981771B/zh active Active
- 2014-02-21 JP JP2015558998A patent/JP6293795B2/ja not_active Expired - Fee Related
- 2014-02-21 EP EP14709827.1A patent/EP2962187B1/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180126520A (ko) * | 2016-03-23 | 2018-11-27 | 에이알엠 리미티드 | 벡터 술어 명령 |
KR20180129058A (ko) * | 2017-05-25 | 2018-12-05 | 삼성전자주식회사 | 벡터 프로세서의 서열 정렬 방법 |
US11442728B2 (en) | 2017-05-25 | 2022-09-13 | Samsung Electronics Co., Ltd. | Sequence alignment method of vector processor |
Also Published As
Publication number | Publication date |
---|---|
US9632781B2 (en) | 2017-04-25 |
KR101753900B1 (ko) | 2017-07-04 |
CN104981771B (zh) | 2018-05-04 |
EP2962187A2 (en) | 2016-01-06 |
US20140244967A1 (en) | 2014-08-28 |
JP2016511470A (ja) | 2016-04-14 |
WO2014133895A3 (en) | 2014-10-23 |
JP6293795B2 (ja) | 2018-03-14 |
CN104981771A (zh) | 2015-10-14 |
EP2962187B1 (en) | 2018-03-28 |
WO2014133895A2 (en) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101753900B1 (ko) | 스칼라 레지스터 데이터 값에 기초하는 벡터 레지스터 어드레싱 및 기능들 | |
US11645135B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
US10228861B2 (en) | Common platform for one-level memory architecture and two-level memory architecture | |
JP7416393B2 (ja) | テンソル並べ替えエンジンのための装置および方法 | |
CN106716434B (zh) | 具有独立的用户域与管理程序域的存储器保护密钥架构 | |
US11494078B2 (en) | Translation lookaside buffer in memory | |
US9858140B2 (en) | Memory corruption detection | |
KR101839479B1 (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
EP3644179A2 (en) | Apparatus and method for tile gather and tile scatter | |
CN110659129A (zh) | 用于数据表示之间的一致、加速的转换的装置和方法 | |
US20220147453A1 (en) | Sequestered memory for selective storage of metadata corresponding to cached data | |
CN107924442B (zh) | 用于轻量级虚拟化上下文的方法和设备 | |
CN111752863A (zh) | 用于专用地址映射的***、设备和方法 | |
US9959939B2 (en) | Granular cache repair | |
CN116266158A (zh) | 使用索引偏移信息访问存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |