KR19980069856A - 스케일러블 폭의 벡터 프로세서 아키텍쳐 - Google Patents

스케일러블 폭의 벡터 프로세서 아키텍쳐 Download PDF

Info

Publication number
KR19980069856A
KR19980069856A KR1019970035005A KR19970035005A KR19980069856A KR 19980069856 A KR19980069856 A KR 19980069856A KR 1019970035005 A KR1019970035005 A KR 1019970035005A KR 19970035005 A KR19970035005 A KR 19970035005A KR 19980069856 A KR19980069856 A KR 19980069856A
Authority
KR
South Korea
Prior art keywords
byte
data element
register
instruction
bit
Prior art date
Application number
KR1019970035005A
Other languages
English (en)
Other versions
KR100267100B1 (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 KR19980069856A publication Critical patent/KR19980069856A/ko
Application granted granted Critical
Publication of KR100267100B1 publication Critical patent/KR100267100B1/ko

Links

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
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/3017Runtime instruction translation, e.g. macros

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

두개의 N-바이트 연산을 순차적으로 실행함으로써 2N-바이트 프로세서 연산을 에뮬레이트할 수 있는 N-바이트 벡터 프로세서가 제공된다. 2N-바이트 폭의 데이타를 처리하는 N-바이트 아키텍쳐를 이용함으로써, 칩 크기와 비용이 감소된다. 한 실시예에 따르면 데이타의 제1 32-바이트에 대해 32-바이트 명령을 실행한 다음 데이타의 제2 32-바이트에 대한 32-바이트 명령을 실행함으로써 64-바이트 연산이 32-바이트 벡터 프로세서로서 구현되는 것에 가능하게 된다. 64-바이트 연산을 위한 레지스터와 명령은, 두개의 32-바이트 레지스터와, 일부 명령이 인접하는 엘리먼트 간의 64-바이트 연산, 특수한 엘리먼트 위치를 필요로 하는 연산, 레지스터 내 및 밖으로 엘리먼트를 쉬프트하는 연산, 및 32 바이트를 초과하는 어드레스를 지정하는 연산을 수용하기 위해 수정을 필요로 하는 명령을 사용하여 에뮬레이트된다.

Description

스케일러블 폭의 벡터 프로세서 아키텍쳐
본 발명은 총체적으로 데이타 프로세서, 더 상세하게는 비용, 크기, 및 코드 밀도를 감소시키기 위한 데이타 프로세서의 향상된 아키텍쳐에 관한 것이다.
마이크로프로세서는 특수한 데이타 폭을 처리하도록 설계되어 있다. 예를들어, 32 8-비트 데이타 엘리먼트의 병렬 처리를 위해 설계된 벡터 프로세서는 256-비트 폭 벡터 레지스터와 32-바이트 데이타 경로를 갖는 실행 유닛을 이용한다. 벡터 프로세서 명령은 벡터 레지스터 내의 32 엘리먼트중 임의의 엘리먼트의 위치와 지정된 엘리먼트에 대해 수행될 연산의 종류를 명시할 수 있다. 레지스터 크기 때문에, 실행 유닛 아키텍쳐, 및 명령어 구문이 특수한 크기의 벡터를 연산하도록 적용되므로, 이와 같은 아키텍쳐는 일반적으로 보다 큰 크기의 데이타 폭을 수용할 수 없다.
따라서, 처리 능력을 증가시키기 위해 보다 큰 데이타 폭을 위해 새로운 마이크로프로세서가 설계됨에 따라, 보다 작은 데이타 폭 아키텍쳐는 이와 같이 보다 큰 데이타 연산을 지원할 수 없다. 결국, 새로운 설계는 데이타 엘리먼트 위치와 연산 종류를 명시하기 위해 보다 큰 레지스터와 새로운 명령을 제공한다. 예를 들어, 데이타의 64 바이트를 처리하기 위해서는 최대 64 엘리먼트 위치를 명시할 수 있는 512-비트 폭 레지스터와 명령이 필요하다. 보다 큰 데이타 폭을 처리하기 위해, 마이크로프로세서의 크기와 비용은 칩 크기를 증가시키고 새로운 벡터 프로세서 회로를 개발하고 제조할 필요성 때문에 증가한다.
비용과 칩 면적을 최소로 하는 것은 마이크로프로세서 설계의 중요한 목표이다. 따라서, 칩 크기, 비용, 및 코드 길이를 비례하여 증가시키지 않고 보다 큰 데이타 폭을 처리할 수 있는 벡터 프로세서가 요구된다. 특히, 보다 작은 데이타 폭 연산을 위해 설계된 기존의 아키텍쳐로서 보다 큰 데이타 폭의 연산을 에뮬레이트할 수 있는 벡터 프로세서가 요망된다.
벡터 프로세서 아키텍쳐는 벡터 프로세서의 데이타 경로 폭의 두배인 벡터를 조작하는 배가-폭 연산(double-width operations)의 에뮬레이션을 허용한다. 예를들어, 2N-바이트 마이크로프로세서 연산은 N-바이트 폭 벡터 프로세서 아키텍쳐에 두개의 N-바이트 연산을 이용함으로써 에뮬레이트된다. 본 발명의 예시적인 실시예는 32-바이트 벡터 프로세서를 이용하여 64-바이트 연산을 수행 또는 에뮬레이트한다.
예시적인 실시예의 32-바이트 벡터 프로세서용 아키텍쳐는 벡터 데이타 레지스터를 판독, 수정 및 기록하는 명령의 세트를 구현하고, 명령어 훼치 유닛, 명령어 디코더, 32-바이트 명령을 복수하고 수정하는 상태 머신 에뮬레이터(명렁어 이셔(issuer) 포함), 다양한 데이타 종류의 다중 데이타 엘리먼트를 보유할 수 있는 32-바이트(256-비트) 범용 벡터 레지스터와 32-비트 범용 스칼라 레지스터를 포함하는 레지스터 화일, 실행 유닛, 두개의 512-비트 배가 정확도 누산기 레지스터, 및 32-비트 특수 목적 스칼라 레지스터를 구비한다. 각각의 32-바이트 레지스터는 한개의 64-바이트 레지스터로서 작용하도록 제2 32-바이트 레지스터와 페어(paired)될 수 있다. 이와 유사하게, 두개의 배가-정확도 64-바이트 누산기 레지스터는 한개의 배가-정확도 128-바이트 누산기로서 조합할 수 있다. 더우기, 32-바이트 벡터 레지스터에 바이트 또는 엘리먼트 위치를 명시하기 위해 한개의 비트를 사용하는 각각의 32-비트 특수 목적 레지스터는 데이타 엘리먼트 위치 0 내지 63을 명시하기 위해 다른 32-비트 특수 목적 레지스터와 페어될 수 있다.
이때 64-바이트 연산은 두개의 순차적인 32-바이트 연산을 실행함으로서 구현될 수 있다. 모드 비트는 32-바이트 연산 또는 64-바이트 연산이 수행될 것인지를 32-바이트 벡터 프로세서를 가리킨다. 만일 64-바이트 모드가 선택되면, 에뮬레이터는 훼치 유닛과 명령어 디코더로부터의 32-바이트 명령을 두개의 32-바이트 명령으로 수정하고, 다음에 각각의 32-바이트 명령을 처리를 위해 레지스터 화일 및 실행 유닛에 순차적으로 전송한다. 만일 32-바이트 모드가 선택되면, 에뮬레이터는 명령을 수정하지 않는다.
대부분의 명령은 데이타 폭에 무관하고 수정되지 않는다. 그러나, 엘리먼트 위치를 명시하고/거나 벡터 레지스터 내의 엘리먼트를 연산하는 명령은 64-바이트 에뮬레이션을 위해 정의되거나 수정될 수 있다. 엘리먼트 위치를 명시하는 명령은 엘리먼트 위치 0 내지 63을 지정하기 위해 6개의 비트를 필요로 하지만, 32-바이트 연산을 위해 위치 0 내지 31을 명시하기 위해서는 단지 5개의 비트만이 필요하다. 결국, 32-바이트 연산에 사용되지 않은 잉여의 여섯번째 비트는 최대 64 엘리먼트를 명시하기 위해 명령어 필드에 사용된다. 벡터 미들(vector middle)에 대히 대칭인 64-바이트 명령은 두개의 32-바이트 명령을 분할될 수 있는데, 여기서 두번째 32-바이트 명령은 데이타의 두번째 32-바이트에 대한 연산을 가리키는 첨부된 비트를 포함한다. 인접하는 엘리먼트를 연산하는 다른 64-바이트 명령은 첫번째 32-바이트 레지스터(바이트 0-31)의 데이타에 대해 첫번째 32-바이트 명령이 실행되도록 기수/우수 및 우수/기수 쌍을 연산하도록 정의되어 있다. 다음에 두번째 32-바이트 명령은 64-바이트 결과를 제공하기 위해 두번째 32-바이트 레지스터(바이트 32-63)에 있는 기수/우수 및 우수/기수 데이타 쌍을 연산한다. 또 다른 64-바이트 명령은 레지스터 내/밖으로 엘리먼트를 쉬프트한다. 이들 명령은 한번은 첫번째 32-바이트 쉬프트의 일시적인 결과를 보유하기 위해 그리고 또 다른 두번째 32-바이트 쉬프트의 최종 결과를 보유하기 위해 두번 스칼라 레지스터를 이용하여, 64-바이트 연산을 에뮬레이트한다. 데이타를 레지스터로 로드하거나 또는 저장하는 다른 명령은 두번째 32-바이트 명령의 유효 어드레스가 32 바이트로 조정될 것을 필요로 한다.
따라서, 64-바이트 연산은 두개의 순차적인 32-바이트 연산과 32-바이트 아키텍쳐를 이용하여 에뮬레이트될 수 있어, 그 결과 칩 면적, 비용, 및 코드 길이를 감소시킨다.
도 1은 본 발명의 벡터 프로세서의 블럭 다이어그램.
도 2는 도 1의 레지스터 화일의 내용의 다이어그램.
도 3은 벡터 프로세서를 위한 다양한 명령어 포맷의 다이어그램.
도 4a는 64-바이트 셔플 연산(shuffle operation)의 다이어그램.
도 4b는 32-바이트 셔플 연산으로 에뮬레이트된 64-바이트 셔플 연산의 다이어그램.
도 5는 32-바이트 우 쉬프트 연산으로 에뮬레이트된 64-바이트 우 쉬프트 연산의 다이어그램.
도 6은 32-바이트 연산으로 에뮬레이트된 인접하는 엘리먼트를 더하기 위한 64-바이트 연산의 다이어그램.
도 7은 32-바이트 연산으로 에뮬레이트된 엘리먼트를 비교하고 교환하기 위한 64-바이트 연산의 다이어그램.
*도면의 주요 부분에 대한 부호의 설명*
100 : 스케일러블 폭 벡터 프로세서110 : 명령어 훼치 유닛
120 : 명령어 디코더130 : 에뮬레이터
140 : 레지스터 화일150 : 실행 유닛
160 : 누산기
본 발명의 예시적인 실시예에서, 벡터 프로세서 아키텍쳐는 32-바이트 폭 연사과 데이타 경로로서 64-바이트 폭 연산을 갖는 명령어 세트의 에뮬레이션을 가능하게 하여, 64-바이트 폭 프로시져가 보다 적고 작으며 값이 비싼 기존의 32-바이트 폭 아키텍쳐 상에서 실행되는 것을 가능하게 한다. 그러나, 32-바이트 벡터 프로세서의 설명은 한정하려는 의도는 아니며, 본 발명의 원리에 대한 단지 예시일뿐이다. 유사한 원리가 N-바이트(또는 다른 단일 폭) 아키텍쳐를 갖는 2N-바이트 폭(또는 임의의 배가 폭) 연산을 에뮬레이트하는데 적용될 수 있다.
도 1은 스케일러블 폭 벡터 프로세서(100)의 예시적인 실시예의 주요 기능블럭을 도시한다. 벡터 프로세서(100)는 명령어 훼치 유닛(IFU)(110), 명령어 디코더(120), 에뮬레이터 상태 머신(130)(이는 명령어 이셔(도시되지 않음)를 포함한다.), 레지스터 화일(140), 실행 데이타 경로(150), 및 누산기(160)를 구비한다. 공동 소유이며, 본 발명에서 참조로 인용되는 미합중국 특허출원 제08/699,587호, 발명의 명칭 SINGLE-INSTRCUTION-MULTIPLE-DATA PROCESSING IN A MULTIMEDIA SIGNAL PROCESSOR는 에뮬레이터 상태 머신(130)이 없는 예시적인 벡터 프로세서를 설명한다.
도 1에서, IFU(110)는 명령어 메모리(도시안됨)로부터 명령을 훼치하는데, 이는 다음에 명령어 디코더(120)에서 디코드된다. 일반적으로, 명령은 소스 및 목적지 레지스터, 연산 종류, 및 데이타형을 가리킨다. 모드 비트 VEC64에 따라, 에뮬레이터(130)는 실행을 위해 디코더(120)에서 레지스터 화일(140)로 명령을 전달하거나 또는 명령을 수정한다. 만일 32-바이트 모드가 선택되면, 수정되지 않은 명령은 레지스터 화일(140)에서 소정의 레지스터 및 엘리먼트를 선택한다. 실행유닛(150)은 데이타에 대해 논리/산술 연산을 실행하는데, 이는 다음에 레지스터 화일(140)에 다시 저장되거나 또는 부수적인 처리를 위해 배가-정확도 누산기(160)에 저장된다.
그러나, 만일 64-바이트 모드가 선택되면, 에뮬레이터(130)는 두개의 32-바이트 명령을 갖는 64-바이트 명령을 생성하고, 만일 필요하다면 레지스터 화일(140)의 첫번째 및 두번째 세트의 32-바이트 레지스터로부터 데이타를 선택하고 연산하기 위해 32-바이트 명령을 수정한다. 에뮬레이터(130)에 있는 명령어 이셔는 데이타의 첫번째 32-바이트를 처리하기 위해 레지스터 화일(140)과 실행 유닛(150)에 첫번째 32-바이트 명령을 발행한다. 순차적으로, 이셔는 명령어 파이프라인에 두번째 32-바이트 명령을 발행하는데, 이는 데이타의 두번째 32-바이트가 데이타의 첫번째 32-바이트 직후에 처리되는 것을 가능하게 한다. 예시적인 벡터 프로세서를 위한 적당한 명령어 이셔는 이하, 본 발명에서 참조로 인용되면서, 1997. 1. 28자로 출원된 공동소유의 미합중국 특허출원 제 xxxx호(변리사 참조번호 : M-4678), 발명의 명칭 INSTRUCTION SCHEDULING USING SINGLE-CYCLE MICRO- INSTRUCTION에 기술되어 있다. 실행 유닛(150)이 데이타의 첫번째 32-바이트를 처리한 후, 그 결과는 다시 레지스터의 첫번째 세트 또는 누산기(160)으로 전송된다. 이와 유사하게, 데이타의 두번째 32-바이트의 결과는 레지스터의 두번째 세트 또는 누산기(160)로 다시 전달된다. 결국. 64-바이트 연산이 두개의 순차적인 32-바이트 연산으로 에뮬레이트된다.
32-바이트 연산을 위한 예시적인 실시예에서 벡터 프로세서(100)의 레지스터는 32 32-바이트 스칼라 레지스터, 64 256-비트 범용 벡터 레지스터, 33 32-비트 특수 목적 레지스터, 및 두개의 배기-크기 (512-비트) 누산기 레지스터를 구비한다. 상기 33 특수 목적 레지스터는 메모리로부터 직접 로드되거나 또는 메모리에 직접 저장될 수 없다. RASR0 내지 RASR15라고 불리우는 16개의 특수 목적 레지스터는 내부의 반환 어드레스 스택을 형성하고, 서브루틴 호출 및 반환 명령에 의해 사용된다. 다른 17개의 32-비트 특수 목적 레지스터는 부록 A의 표 A.1에 도시되어 있다.
도 2는 32 32-비트 스칼라 레지스터(SR0 내지 SR31) 및 64 256-비트 벡터 레지스터로 구성된 레지스터 화일(140)의 내용을 도시한다. 스칼라 레지스터는 32비트 폭이고, 정의된 크기(8-비트, 16-비트 또는 32-비트)중 임의의 크기의 한 데이타 엘리먼트를 포함할 수 있다. 8-비트 및 16-비트 데이타형은 최상위 비트가 정의되지 않은 값을 갖는, 스칼라 레지스터의 최하위 비트에 저장된다. 스칼라 레지스터는 0 내지 31의 범위에 이르는 5-비트 레지스터 번호로 식별된다.
256-비트 벡터 레지스터는 이하의 표 1에 도시된 바와 같이 복수의 엘리먼트는 물론 복수의 데이타형을 지원한다.
[표 1]
64 벡터 레지스터는 각각 32 레지스터를 갖는 두개의 뱅크로 구성된다. Bank0은 첫번째 32 레지스터(VR00 내지 Vr031)을 포함하고, Bank1은 두번째 32 레지스터 (VR01 내지 Vr031)를 포함한다. 32-바이트 연산에서, 두개의 뱅크는 하나의 뱅크가 현재의 뱅크로 설정되고 다른 뱅크가 대체 뱅크로 설정되어 있는 방법으로 사용된다. 모든 벡터 명령은 대체 뱅크에 있는 벡터 레지스터를 액세스할 수 있는 로드/저장 및 레지스터 이동 명령을 제외하고 현재의 뱅크에 있는 레지스터를 디폴트로 사용한다. 벡터 레지스터는 0 내지 31 범위에 이르는 5-비트 벡터 레지스터 번호와 1-비트 뱅크 번호(0 또는 1)로서 식별될 수 있다. 예시적인 실시예를 위한 벡터 명령의 세트가 부록 B 표 B.1에 제시되어 있다. 특수 목적 벡터 제어 및 상태 레지스터(VCSR)에 있는 CBANK 비트는 다른 뱅크가 대체 뱅크가 되어 현재 뱅크가 될 뱅크 0 또는 뱅크 1을 설정하는데 사용된다. 부록 A 표 A.2는 VSCR내의 특수한 비트 함수를 도시한다.
동일한 레지스터 수를 갖는 한쌍의 32-바이트 벡터 레지스터가 조합되어 64-바이트 연산, 즉 VRi511 : 0 = VRii255 : 0 : VR0i255 : 0을 위한 512비트(또는 64바이트)의 배가-크기 벡터 레지스터를 제공한다.(여기서, VR0i와 VR1i는 뱅크 1과 뱅크 0에 레지스터 번호 VRi를 갖는 벡터 레지스터를 각각 지칭한다.) 등가적인 바이트 또는 에릴먼트 주석에서, VRi[63 : 0] = VRii [31 : 0] : VR0i[31 : 0].
배가-크기 벡터 레지스터는 VR0 내지 VR31로 일컬어진다. 따라서, 뱅크 0 및 뱅크 1에 대응하는 두개의 32-바이트 레지스터는 하나의 64-바이트 레지스터로서 어드레스될 수 있다. 제어 레지스터 VCSR에 있는 VEC64 비트는 벡터 프로세서가 32-바이트 또는 64-바이트 데이타 폭을 연산하는 지를 식별한다. 상태 레지스터에 비트 VEC64 내지 1을 설정하는 것은 벡터 프로세서는 배가-크기(512-비트)가 벡터 레지스터의 디폴트 크기인 모드 VEC64에 위치시킨다. VEC64 모드에서, 어떠한 현재 및 대체 뱅크도 존재하지 않고, 벡터 레지스터 번호는 두개 뱅크로부터의 256-비트 벡터 레지스터의 대응하는 쌍을 지칭한다.
일부 특수 목적 레지스터는 벡터 레지스터에서 특수한 데이타 엘리먼트 위치에 대응하는 비트를 갖는다. 이와 같은 경우, 32-비트 특수 레지스터에 있는 각각의 비트는 하나의 엘리먼트와 연관된다. 64-바이트(512-비트) 벡터 레지스터가 기껏해야 64 8-비트 엘리먼트를 가질 수 있기 때문에, 두번째 32-비트 특수 목적 레지스터는 64-바이트 연산을 위한 부수적인 32 엘리먼트를 명시할 필요가 있다. 세가지 종류의 특수 목적 레지스터는 두번째 레지스터를 필요로 한다. 이들은 표 A.1에서 전역 마스크 레지스터 VGMR0 및 VGMR1, 이동 마스크 레지스터 VMMR0 및 VMMR1, 및 오버플로우 레지스터 VOR0 및 VOR1로서 식별된다. 레지스터 VGMR0 및 VGMR1은 벡터 레지스터를 벡터 또는 스칼라 레지스터 또는 VCMPV 명령을 사용하여 중간값과 비교함으로써 설정될 수 있다. 이 명령은 지정된 데이타 크기에 따라 마스크를 적절히 설정한다. 스칼라 레지스터는 단지 하나의 데이타 엘리먼트에 한정되어 있고, 스칼라 연산(즉, 목적지 레지스터가 스칼라인 연산)은 엘리먼트 마스크에 의해 영향을 받지 않는다.
벡터 프로그래밍에 유연성을 제공하기 위해, 대부분의 벡터 명령은 엘리먼트 마스크를 이용하여 벡터내의 선택된 엘리먼트에 대해서만 연산한다. 벡터 전역 마스크 레지스터 VGMR0 및 VGMR1은 목적지 레지스터와 벡터 누산기에서 벡터 명령에 의해 수정된 엘리먼트를 식별한다. 벡터 전역 마스크 레지스터는 VGMR0이 VEC32 모드에서 영향을 받게 될 목적지 벡터 레지스터 VRd의 엘리먼트와, VEC64 모드에서 VRd255 : 0 내의 엘리먼트를 가리킨다. VGMR0에 있는 각각의 비트는 벡터 목적지 레지스터에 있는 8비트의 갱신을 제어한다. 특히, VGMR0i는 VEC32 모드에서 VRd8i + 7 : 8i와 VEC64 모드에서 VR0d8i + 7 : 8i의 갱신을 제어한다. VR0d는 VEC64 모드에서 뱅크 0의 목적지 레지스터를 지칭하고, VRd는 현재 뱅크에 있는 목적지 레지스터를 가리킨다는 것에 유의하며, 이는 VEC32 모드에서 뱅크 0 또는 뱅크 1중 어느 하나일 수 있다. 벡터 전역 마스크 레지스터 VGMR0는 VCMOVM 명령을 제외하고 모든 명령의 실행에 사용된다.
벡터 전역 마스크 레지스터 VGMR1은 VEC64 모드에서 영향을 받는 VRd511 : 256 내의 엘리먼트를 가리킨다. 레지스터 VGMR1에 있는 각각의 비트는 뱅크 1에 있는 벡터 목적지 레지스터의 8비트의 갱신을 제어한다. 특히, VGMR1i는 VR1d8i 7 : 8i의 갱신을 제어한다. 레지스터 VGMR1은 VEC32 모드에서 사용되지 않지만, VEC64 모드에서 VCMOVM 명령을 제외하고 모든 명령에서 실행에 영향을 미친다.
8-비트 데이타형 연산의 경우, VGMR0(또는 VGMR1)에 있는 32비트의 각각은 연산될 엘리먼트를 식별한다. 비트 VGMROi를 설정한다는 것은 벡터 레지스터의 엘리먼트 i(i는 0 내지 31)가 영향을 받을 것이라는 것을 가리킨다. 16-비트 데이타형 연산의 경우, VGMR0(또는 VGMR1)에 있는 32비트의 각 쌍은 연산될 엘리먼트를 식별한다. 비트 VGMR02i : 2i + 1를 설정한다는 것은 엘리먼트 i(i는 0 내지 15)가 영향을 받을 것이라는 것을 가리킨다. 만일 VGMR0에 있는 쌍의 한 비트만이 16-비트 데이타형 연산을 위해 설정되어 있으면, 대응하는 바이트에 있는 비트만이 수정된다. 32-비트 데이타형 연산의 경우, VGMR0(또는 VGMR1)에 있는 네개 비트의 각 세트는 연산될 엘리먼트를 식별한다. 비트 VGMR04i : 4i + 3를 설정한다는 것은 엘리먼트 i(i는 0 내지 7)가 영향을 받을 것이라는 것을 가리킨다. 만일 VGMR0에 있는 네개의 세트에 있는 모든 비트가 32-비트 데이타형 연산을 위해 설정되어 있지 않으면, 대응하는 바이트에 있는 비트만이 수정된다.
벡터 오버플로우 레지스터 VOR0은 VEC32 모드에서의 엘리먼트와, 벡터 산술 연산후 오버플로우 결과를 포함하는 VEC64 모드에서 VR255 : 0 내의 엘리먼트를 가리킨다. 이 레지스터는 스칼라 산술 연산에 의해 수정되지 않는다. 설정되고 있는 비트 VOR0i는 8-비트 데이타형의 i번째 엘리먼트, 16-비트 데이타형의 (i idiv 2)번째 엘리먼트, 또는 32-비트 데이타형 연산의 (i idiv 4)번째 엘리먼트(여기서, idiv는 정수 나눗셈)의 오버플로우 결과를 포함하고 있다는 것을 가리킨다. 예를 들어, 비트 1 및 비트 3은 첫번째 16-비트 및 32-비트 엘리먼트(위치 0에 있는 엘리먼트) 각각의 오버플로우를 가리키도록 설정될 것이다. VOR0에서 비트와 이와 같은 맵핑은 VGMR0 또는 VGMR1에 있는 비트의 맵핑과는 다르다.
벡터 오버플로우 레지스터 VOR1은 벡터 산술 연산후 오버플로우 결과를 포함하는 VEC64 모드에서 VR511 : 256내의 엘리먼트를 가리킨다. 레지스터 VOR1은 VEC32 모드에서 사용되지도 스칼라 산술 연산에 의해 수정되지도 않는다. 설정되고 있는 VOR1i는 8-비트 데이타형의 i번째 엘리먼트, 16-비트 데이타형의 (i idiv 2)번째 엘리먼트, 또는 32-비트 데이타형 연산의 (i idiv 4)번째 엘리먼트가 오버플로우 결과를 포함하고 있다는 것을 가리킨다. 예를 들어, 비트 1 및 비트 3은 각각 VR511 : 256에서 첫번째 16-비트 및 첫번째 32-비트 엘리먼트의 오버플로우를 가리키도록 설정될 것이다. VOR1에서 비트의 맵핑은 VGMR0 또는 VGMR1에서 비트의 맵핑과는 다르다.
VCMOVM 명령은 모든 명령에 대해 VCSRSMM = 1일 때는 물론 항상 벡터 이동 마스크 레지스터 VMMR0를 이용한다. 레지스터 VNNR0는 VEC32 모드에서 영향을 받게 될 목적지 벡터 레지스터의 엘리먼트와, VEC64 모드에서 VR255 : 0내의 엘리먼트를 가리킨다. VMMR0에 있는 각각의 비트는 벡터 목적지 레지스터에 있는 8비트의 갱신을 제어한다. 특히, VMMR0i는 VEC32 모드에서 VRd8i + 7 : 8i와 VEC64 모드에서 VR0d8i + 7 : 8i의 갱신을 제어한다. VR0d는 VEC 64 모드에서 뱅크 0의 목적지 레지스터를 지칭하고, VRd는 현재 뱅크에 있는 목적지 레지스터를 가리키며, 이는 VEC32 모드에서 뱅크 0 또는 뱅크 1중 어느 하나일 수 있다.
벡터 이동 마스크 레지스터 VMMR1은 모든 명령에 대해 VCSRSMM = 1일 때는 물론 항상 VCMOVM 명령에 의해 사용된다. 레지스터 VMMR1은 VEC64 모드에서 영향을 받게 될 VR511 : 256내의 엘리먼트를 가리킨다. VMMR1에 있는 각각의 비트는 뱅크 1의 벡터 목적지 레지스터에 있는 8비트의 갱신을 제어한다. 특히 VGMR1i는 VR1d8i +7 : 8i의 갱신을 제어한다. 레지스터 VGMR1은 VEC32 모드에서 사용되지 않는다.
다시 도 1을 참조하면, 두개의 512-비트 레지스터를 포함하는 누산기(160)는 벡터 레지스터와 유사한 방법으로 구성되거나 또는 액세스될 수 있다. 벡터 누산기 레지스터는 목적지 레지스터에 있는 결과보다 높은 정확도를 갖는 중간 결과를 위한 기억장치를 제공한다. 벡터 누산기 레지스터는 VAC1H, VAC1L, VAC0H 및 VAC0L로 지정된 네개의 256-비트 레지스터를 포함한다. 64-바이트 벡터 연산의 에뮬레이션을 위해 VAC0H와 VAC0L이 결합되어,
VAC0511 : 0 = VAC1H255 : 0 : VAC0L255 : 0
를 만든다. 따라서, 레지스터 VAC0511 : 0와 VAC1511 : 0이 결합되어 1024-비트 배가 정확도 레지스터
VAC1023 : 0 = VAC1511 : 0 : VAC0511 : 0
를 생성한다.
VAC1은 64-바이트 모드에만 사용된다. 뱅크 1이 VEC32 모드에서 현재 뱅크로 설정될 때에도, VAC0이 사용된다.
소스 벡터 레지스터에서와 동일한 수의 엘리먼트를 갖는 확장된 정확도 결과를 만들기 위해, 확장된 정확도 엘리먼트가 이하의 표 2에 도시되는 바와 같이 i가 i번째 엘리먼트이고 n가 데이타 크기를 가리키는 한쌍의 레지스터 양단에 저장된다.
[표 2]
벡터 프로세서 레지스터를 수정하는 것 이외에, 32-바이트 벡터 프로세서가 64-바이트 데이타 폭을 연산할 수 있도록 임의의 명령이 수정되거나 또는 정의된다. 상술된 바와 같이, 부록 B 표 B.1은 예시적인 실시예에서 벡터 프로세서를 위해 설정된 명령을 열거한다. 벡터 프로세서(100)의 경우, 각각의 명령은 32비트 길이이고, 도 3에 도시된 9개의 포맷 : REAR, REAI, RRRM5, RRRR, RI, CT, RRRM9, RRRM9*, 및 RRRM9**중 하나를 갖는다. 9개의 포맷과 상기 포맷 내의 필드의 설명은 부록 C에 제공된다. 부록 D는 표 B.1의 명령에 대한 다양한 포맷의 명령여 인코딩을 설명한다.
벡터 프로세서의 독립적인 오퍼런드를 명시하는 벡터 프로세서 명령은 64-바이트 연산에 대해 수정될 필요는 없다. 이들 명령은 데이트형(8-비트, 16-비트 또는 32-비트)와, 두개의 벡터 레지스터 또는 오퍼런드의 동일한 위치로부터의 엘리먼트에 대해 수행되는 연산을 명시한다. 특수한 위치가 명시될 필요는 없으며, 따라서 에뮬레이터(130)는 간단히 데이타의 두번째 32-바이트에 대한 연산을 위한 32-바이트 명령의 복사본을 만든다. 본 발명의 예시적인 실시예를 위한 표 B.1에 있는 대부분의 명령은 벡터 레지스터 폭과는 무관하게 명시되며, 따라서 도 1의 에뮬레이터(130)에 의해 수정될 필요는 없다. 그러나, 일부 명령은 엘리먼트 위치를 명시할 것을 필요로 하고/거나 인접하는 엘리먼트에 대한 연산을 필요로 한다. 이와 같은 경우, 에뮬레이터(130)는 64-바이트 연산을 위한 명령을 수정한다.
명령이 배가-폭 벡터 레지스터의 상부 및 하부 절반에 대해 대칭이 되도록 한 위치에서 다른 위치로 한 엘리먼트를 이동시키는 명령은 배가-폭 연산(a double-width operation)을 에뮬레이트하는 두개의 단일-폭 연산(single-width operations)으로 간단히 분할된다. 예시적인 실시예에서, 엘리먼트간 이동 클래스 명령, 셔플(VSHFL) 및 언셔플(VUNSHFL)은 이와 같은 카테고리에 포함된다. 도 4a는 소스 레지스터 Rb(400) 및 VRa(410) 및 목적지 레지스터 VRd(420) 및 VRc(430)를 갖는 64-바이트 데이타 폭에 대한 셔플 연산을 도시한다. VSHFL은 도 4a에 화살표로 표시된 바와 같이, 레지스터 VRb(400)의 첫벚째 엘리먼트를 레지스터 VRd(420)의 첫번째 위치에 위치시키고, 레지스터 VRa(420)의 첫번째 엘리먼트를 VRd(420)의 두번째 위치에 위치시킨다. 엘리먼트가 바이트라고 가정하면, VRb(400) 및 VRa(420)의 첫번째 32 바이트는 64-바이트 폭 VRd(420)에 번갈아 위치된다. VRb(400) 및 VRa(410)의 나머지 32 바이트는 64-바이트 폭 레지스터 VRc(430)에 번갈아 위치된다.
도 4b는 두개의 32-바이트 셔플 연산으로 에퓰레이트된 64-바이트 셔플 연산을 도시한다. 정의된 셔플 연산의 대칭때문에, 32-바이트 셔플 연산이 먼저 실행되어 VR0b(440)및 VR0a(450)의 첫번째 16-바이트를 32-바이트 레지스터 VR0d(460)로 셔플하고, VR0d(440) 및 VR0a(450)의 두번째 16-바이트를 32-바이트 레지스터 VR1d(465)로 셔플한다. 이때 그 결과는 다시 레지스터 화일 또는 누산기에 저장된다. 다음에 두번째 32-바이트 셔플 연산이 실행되어 VR1b(470) 및 VR1a(480)의 세번재 16-바이트를 32-바이트 레지스터 VR0c(490)로 셔플하고, VR1b(470) 및 VR1a(480)의 네번째 16-바이트를 32-바이트 레지스터 VR1c(495)로 셔플하고, 그 결과가 저장되어, 64-바이트 셔플 연산이 된다. 어셈블럭 구문 주석에서,
64-바이트 VSHFL VRc, VRd, VRa, VRb는
32-바이트 VSHFL VR1d, VR0d, VR0a, VR0b
32-바이트 VSHFL VR1c, VR0c, VR1a, VR1b
로 에뮬레이트된다.
여기서 a와 b는 소스 레지스터를 가리키고 c와 d는 목적지 레지스터를 가리킨다. 첫번째 셔플 연산의 결과 저장되고 있는 동안 두번째 셔플 연산이 수행되도록 셔플 명령이 파이프라인될 수 있다. 또한, 64-바이트 셔플 연산이 대칭이기 때문에, 도 4a에 도시된 바와 같이, 두개의 32-바이트 셔플 명령에 대한 실행 순서는 영향을 미치지 않는다. 64-바이트 연산은 32-바이트 레지스터 간에 무관하다. 즉, 64-바이트 셔플의 결과는 64-바이트 레지스터의 위치(31 및 32)에서의 엘리먼트 간의 관계에 의존하지 않으므로, 두개의 32-바이트 연산으로 에뮬레이트될 수 있다. 언셔플 명령은 셔플 연산을 수행하지 않고 이와 유사하게 대칭이다.
일부 명령은 벡터 레지스터의 엘리먼트의 특정한 위치를 식별한다. 32-바이트 연상일 경우, 32 엘리먼트 위치중 임의의 위치를 명시하는데 5-비트 필드가 필요하다. 64-바이트 연산의 경우, 벡터 레지스터에서 64 엘리먼트 위치중 임의의 위치를 명시하는데 6번째 비트가 필요하다. 본 발명의 예시적인 실시예에서, 레지스터 이동 클래스 명령, 삽입(VINSRT) 및 추출(VEXTRT)은 특수한 엘리먼트 위치를 필요로 한다. 삽입 명령의 경우, 스칼라 레지스터 SRa에 있는 엘리먼트는 스칼라 레지스터 SRb에 의해 명시된 위치에 있는 벡터 레지스터 VRd 또는 중간 필드 IMM으로 삽입된다. 이와 유사하게 추출 명령의 경우, 스칼라 레지스터 SRb 또는 IMM 필드에 의해 명시된 위치에 있는 벡터 레지스터 VRa로부터의 엘리먼트가 추출되어 스칼라 레지스터 SRd에 저장된다. 32-비트 스칼라 레지스터는 데이타 엘리먼트 식별하는 5-비트 또는 6-비트 인덱스를 용이하게 수용할 수 있다. 그러나, 명령의 IMM 필드에서, 부수적인 비트가 사용되지 않은 예약된 비트 위치에 있는 명령내에 위치될 수 있다. 64-바이트 모드에서, 엘리먼트 위치 인덱스는 0 내지 63 범위이다. VINSRT 연산의 경우, 목적지 벡터 레지스터 VRd는 인덱스가 0에서 31까지이면 VR0d이다. 만일 인덱스가 32에서 63까지이면, 인덱스는 32만큼 조정되고 목적지 레지스터는 VR1d이다. VEXTRT 연산의 경우, 소스 벡터 레지스터 VRa는 인덱스가 32만큼 밑으로 조정되어 인덱스가 32에서 63까지이면 VR1a이다.
일부 명령은 모든 엘리먼트를 1위치만큼 쉬프트하여 하나의 스칼라 결과(쉬프트 아웃된 엘리먼트)와 하나의 벡터 결과(본래의 엘리먼트 나머지에다 스카라 레지스터로부터 쉬프트 인된 엘리먼트를 더한 것)를 만든다. 64-바이트 쉬프트 연산은 한번은 첫번째 32-바이트 쉬프트의 일시적인 결과를 보유하고 두번째는 두번째 32-바이트 쉬프트후 최종 결과를 보유하기 위해 목적지 스칼라 레지스터가 두번 사용되어, 두개의 32-바이트 쉬프트 연산을 실행함으로써 에뮬레이트될 수 있다.
도 5는 엘리먼트간 이동 클래스 명령, 예시적인 벡터 프로세서의 우 쉬프트(VESR)를 위한 2-단계 에뮬레이션을 도시한다. 첫번째 32-바이트 쉬프트 연산에서, 스칼라 레지스터 SRb(510)에 있는 엘리먼트 또는 바이트 B는 벡터 레지스터 VR1d(520)의 엘리먼트 위치(31)로 쉬프트되고, 벡터 레지스터 VR1a(530)의 엘리먼트는 스칼라 레지스터 SRc(540)로 쉬프트된 VR1a의 위치 0에 있는 엘리먼트 A32를 갖는 VR1d(520)의 나머지 위치로 쉬프트된다. 두번째 32-바이트 쉬프트 연산에서, SRc에 있는 엘리먼트 A32는 벡터 레지스터 VR0d(550)의 엘리먼트 위치(31)로 쉬프트되고, 벡터 레지스터 VR0a(560)의 엘리먼트 스칼라 레지스터 SRc(540)로 쉬프트된 VR0a의 위치 0에 있는 엘리먼트 A0를 갖는 VR0d(550)의 나머지 위치로 쉬프트되어, 64-바이트 쉬프트 연산을 완료한다. 어셈블러 구문 주석에서,
64-바이트 VESR SRc, VRd, VRa, SRb는
32-바이트 VESR SRc, VR1d, VR1a, SRb
32-바이트 VESR SRc, VR0d, VR0a, SRc
로 에뮬레이트된다.
두개의 32-바이트 좌 쉬프트 연산을 이용하여 64-바이트 좌 쉬프트(VESL)를 에뮬레이트하는 유사한 방법이 사용된다.
벡터 레지스터에서 두개의 인접하는 엘리먼트에 대한 연산에 필요한 명령은 두개의 32-바이트 명령으로 64-바이트 연산을 에뮬레이트하기 위해 연속하는 우수/기수 쌍 또는 기수/우수 쌍을 연산하도록 등가적으로 정의될 수 있다. 본 발명의 예시적인 실시예에서, 다음과 같은 엘리먼트간 산술 클래스 명령은 이와 같은 카테고리 : 두개의 인접하는 엘리먼트(VADDH)의 덧셈과 두개의 인접하는 엘리먼트의 평균, 및 인접하는 엘리먼트의 비교 및 최대 엘리먼트를 우수 위치 및 보다 적은 엘리먼트를 기수 위치(VMAXE)로의 이동에 포함된다.
도 6은 두개의 32-바이트 VADDH 연산을 이용하여 64-바이트 데이타로부터의 인접하는 엘리먼트를 더하는 것에 어떻게 에뮬레이트될 수 있는 지를 도시한다. 첫번째 32-바이트 VADDH 연산에서, 벡터 레지스터 VR0a(610)에 있는 인접하는 우수 및 기수 엘리먼트가 함께 더해져 벡터 레지스터 VR0d(620)의 첫번째 31 위치에 저장된다. VR0d에 있는 마지막 위치는 VR0a의 마지막 엘리먼트 A31(기수) 및 VR1a(630)의 첫번째 엘리먼트 A32(우수)의 합으로 채워진다. 두번째 32-바이트 VADDH 연산에서, VR1a(630)에 있는 인접하는 우수 및 기수 엘리먼트가 함께 더해져 벡터 레지스터 VR1d(640)의 첫번째 31 위치에 저장된다. VR1d의 마지막 위치는 VR1a(630)의 마지막 엘리먼트 A63(기수) 및 레지스터 Rb(650)의 첫번째 엘리먼트 B0(우수)의 합으로 채워져, 64-바이트 VADDH 연산으로 된다. (레지스터 Rb는 벡터 레지스터 또는 스칼라 레지스터중 어느 하나일 수 있다.) 어셈블러 구문 주석에서,
64-바이트 VADDH VRd, VRa, VRb (SRb)는
32-바이트 VADDH VR0d, VR0a, VR1a
32-바이트 VADDH VR1d, VR1a, VRb (SRb)
로 에뮬레이트된다.
64-바이트 VAVGH 연산은 동일한 방법으로 에뮬레이트되는데, 여기서 연산의 종류, 즉 엘리먼트를 더하는 대신에 엘리먼트를 평균하는 것만이 다르다.
도 7은 두개의 32-바이트 VMAXE 연산으로 에뮬레이트된 64-바이트 VMAXE 연산을 도시한다. 첫번째 32-바이트 VMAXE 연산에서, 16개의 우수/기수 데이타 엘리먼트 쌍이 VR0b(710)에서 비교된다. 두개중 큰 것이 VR0d(720)의 우수 번호 위치에 저장되고, 작은 것이 VR0d의 기수 번호 위치에 저장된다. 32-바이트 VMAXE 연산에서, 다음의 16개 우수/기수 데이타 엘리먼트 쌍의 VR1b(730)에서 비교되어, 두개중 큰 것이 VR1d(740)의 우수 번호 위치에 저장되고, 작은 것이 기수 번호 위치에 저장된다. VR1d(740) 및 VR0d(720)는 상술된 바와 같이 결합되어 64-바이트 VMAXE 연산의 64-바이트 결과를 제공한다. 어셈블러 구문 주석에서,
64-바이트 VMAXE VRd, VRb는
32-바이트 VMAXE VR1d, VR1b
32-바이트 VMAXE VR0d, VR0b
로 에뮬레이트된다.
일부 명령은 벡터 레지스터의 내용을 다른 레지스터로 로드하고 저장한다. 이와 같은 종류의 64-바이트 명령은 두개의 32-바이트 명령을 실행함으로써 32-바이트 아키텍쳐로 에뮬레이트될 수 있는데, 여기서 두개의 32-바이트 명령에 대한 유효 어드레스(EA)는 바이트 위치 32 내지 63에 엘리먼트를 로드하거나 또는 저장하도록 조정된다. 이와 같이, 만일 EA+1(i = 0 내지 31)이 첫번째 32-바이트 연산에 대한 유효 어드레스이면, 두번째 32-바이트 연산에 대한 유효 어드레스는 64-바이트 연산을 에뮬레이트하는 EA = EA + 32 + i(i = 0 내지 31)이다. 따라서, 에뮬레이터(130)는 두번째 32-바이트 로드 및 저장 연산에 대한 유효 어드레스를 32로 조정한다.
다른 종류의 벡터 프로세서 명령은 두개의 N-바이트 폭 명령으로 2N-바이트 폭 명령의 에뮬레이션을 가능하게 하도록 이와 유사하게 수정될 수 있다.
다시 도 1을 참조하면, 64-바이트 연산의 경우, 에뮬레이터(130) 내의 명령어 이셔는 파이프라인을 두개의 32-바이트 명령을 보유한다. 첫번째 32-바이트 명령은 레지스터 화일(140)의 뱅크 0에 있는 소정의 레지스터로부터의 데이타를 액세스하도록 기록 스테이지를 초기화시킨다. 다음에 실행 유닛(150)은 데이타를 연산하고, 그 결과를 누산기(160) 또는 레지스터 화일(140)의 뱅크 0에 다시 저장한다. 첫번째 32-바이트가 처리되고 있는 동안, 명령어 이셔는 두번째 32-바이트 명령에 대한 기록 스테이지를 초기화시켜 뱅크 1의 소정 레지스터에 있는 데이타를 액세스하게 한다. 데이타는 실행 유닛(150)에 의해 처리되고, 그 결과 누산기(160) 또는 레지스터 화일(140)의 뱅크 1에 다시 저장된다. 이와 같이, 64-바이트 연산은 32-바이트 아키텍쳐를 이용하여 두개의 32-바이트 연산으로 에뮬레이트된다. 32-바이트 명령과 아키텍쳐가 64-바이트 연산을 위해 사용되기 때문에, 64-바이트 명령과 아키텍쳐를 이용하는 벡터 프로세서와 비교할 때 코드 길이와 밀도는 물론 칩의 크기와 비용이 감소된다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니다. 예를 들어, 개시된 특수한 실시예는 데이타 폭을 배가시키기 위한 하나의 명령을 에뮬레이트하기 위해 두개의 단일-폭 명령을 실행한다. 선택적으로, 데이타 폭을 세배 이상으로 하기 위한 명령을 에뮬레이트하기 위해 세개 이상의 단일-폭 명령이 사용될 수 있다. 따라서, 이하의 특허청구 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.
부록 A
메모리로부터 직접 로드될 수 없거나 또는 메모리에 직접 저장될 수 없는 33 특수 목적 레지스터가 존재한다. RASR0 내지 RASR15라고 불리우는 16개의 특수 목적 레지스터는 서브루틴 호출 및 반환 명령을 내부 반환 어드레스 스택을 형성한다. 17개 이상의 32-비트 특수 목적 레지스터가 표 A.1에 도시되어 있다.
[표 A.1]
특수 목적 레지스터
벡터 제어 및 상태 레지스터 VCSR 정의는 표 A.2에 도시되어 있다.
[표 A.2]
VCSR 정의
부록 B
다음은 본 발명의 실시예에 따른 벡터 프로세서의 예시적인 실시예를 위한 명령어 세트의 서브셋을 설명한다. 벡터 프로세서의 예시적인 실시예를 위한 명령어 세트의 부수적인 설명은 본 발명에서 참조로 인용되는 공동소유의 미합중국 특허출원 제 08/699,597호, 발명의 명칭 Single-Instruction-Multiple-Data-Processing in a Multimedia Signal Processor에서 찾을 수 있다.
제어 플로우 클래스는 프로그램 플로우를 제어하는 명령을 포함한다. 이는 분기와 ARM7 인터페이스 명령을 가지고 있다.
[표 B1]
제어 플로우 클래스(Control flow class)
논리적 클래스는 부울린 데이타형을 지원하고, 데이타형을 필요로 하는 비트-와이즈 논리적 명령을 포함한다. 표 B.2는 논리적 클래스 명령을 열거한다.
[표 B2]
논리적 명령
쉬프트/회전 클래스는 각 엘리먼트 내의 비트를 쉬프트하고 회전시키는 명령을 포함한다. 쉬프트/회전 클래스 명령은 8-비트, 16-비트, 및 32-비트 정수 데이타형을 연산하고, 데이타형을 필요로 한다. 표 B.3은 쉬프트/회전 클래스 명령을 열거한다.
[표 B3]
쉬프트 회전 분류
산술 클래스는 엘리먼트-와이즈 산술 명령을 포함하는데, 즉 i번째 엘리먼트의 결과는 소스의 i번째 엘리먼트로부터 산출된다. 명령이 표 B.4에 열겨되어 있고, 일반적으로, 8-비트, 16-비트, 32-비트 정수 및 32-비트 부동 소수점 데이타형을 지원한다.
[표 B4]
산술 클래스
표 B5는 MPEG 명령을 열거하는데, 이는 멀티미디어 어플리케이션을 위해 최적화된 명령이다. MPEG 명령은 8-비트, 16-비트, 32-비트 정수 데이타형을 지원하고, 데이타형을 필요로 한다.
[표 B5]
MPEG 클래스
표 B6은 하나의 데이타형에서 다른 데이타형으로 엘리먼트를 변환하기 위한 데이타형 변환 명령을 열거한다. 각각의 데이타형 변환 명령은 특정한 데이타 형을 지원한다. 아키텍춰는 레지스터에 있는 하나 이상의 데이타 형을 지원하지 않는다.
[표 B.6]
데이타형 변환 클래스
표 B7는 명령의 엘리먼트간 산술 클래스를 열거하는데, 이는 산술 결과를 구하기 위해 벡터의 서로 다른 위치로부터 두개의 엘리먼트를 취한다. 엘리먼트간 산술 클래스는 8-비트, 16-비트, 32-비트 정수 및 32-비트 부동 소수점 데이타형을 지원한다.
[표 B7]
엘리먼트간 산술 클래스
표 B8은 엘리먼트간 이동 클래스 명령을 열거하는데, 이는 엘리먼트를 재정렬하기 위한 벡터의 서로 다른 위치로부터 두개의 엘리먼트를 취한다. 명령의 엘리먼트간 이동 클래스는 8-비트, 16-비트, 32-비트 정수 및 32-비트 부동 소수점 데이타형을 지원한다.
[표 B8]
엘리먼트간 이동 클래스
표 B9는 명령의 로드 및 저장 클래스를 열거하는데, 이는 레지스터를 로드하거나 또는 저장한다. 로드 및 저장 클래스는 8-비트, 16-비트, 32-비트 정수 및 32-비트 부동 소수점 데이타형을 지원한다.
[표 B9]
로드 저장 클래스
표 B10은 레지스터 이동 클래스 명령을 열거하는데, 이는 두개의 레지스터 간을 전송한다. 명령의 레지스터 이동 클래스는 8-비트, 16-비트, 32-비트 정수 및 32-비트 부동 소수점 데이타형을 지원한다.
[표 B10]
레지스터 이동 클래스
부록 C
표 C1은 도 3의 명령어 포맷에 있는 다양한 필드의 설명을 제공한다.
[표 C1]
명령어 포맷 필드
명령어 포맷에 대한 다음 설명은 일부 필드 지정에 대한 상세한 정보를 제공한다.
유효 어드레스를 결정할 때 스칼라 레지스터를 사용하는 로드 및 저장 명령은 REAR 포맷을 갖는다. REAR-포맷 명령은 스칼라 레지스터를 위한 두개의 레지스터 번호 SRb와 SRi 및, 비트 D에 따라 스칼라 또는 벡터 레지스터일 수 있는 하나의 레지스터 번호 Rn으로 식별된 세개의 오퍼런드를 갖는다. 뱅크 비트 B는 레지스터 Rn을 위한 뱅크를 가리키거나 또는 디폴트 벡터 레지스터 크기가 배가 크기일 때 벡터 레지스터 Rn이 배가 크기 벡터 레지스터인 지를 가리킨다. op-코드 필드 Opc는 오퍼런드에 대해 수행된 연산을 가리키고, 필드 TT는 전달형 로드 또는 저장으로서 가리킨다. 전형적인 REAR-포맷 명령은 스칼라 레지스터 SRb 및 SRi의 내용을 더함으로서 결정되는 어드레스로부터 레지스터 Rn을 로드하는 명령 VL이다. 만일 비트 A가 세트되면, 산출된 어드레스는 스칼라 레지스터 SRb에 저장된다.
REAR-포맷 명령은 필드 IMM으로부터의 8-비트 중간 값이 스칼라 레지스터 SRi의 내용 대신에 사용된다는 점을 제외하고 REAR 명령과 동일하다. REAR과 REAI 포맷은 데이타 엘리먼트 크기 필드를 갖지 않는다.
RRRM5 포맷은 쉬프트, 회전, 엘리먼트 쉬프트, 벡터/스칼라 변환, 멀티미디어, 데이타형 변환, 엘리먼트간, 및 두 개의 소스 오퍼런드와 하나의 목적지 오퍼런드를 갖는 레지스터 이동 클래스를 포함하는 멀티미디어 명령에 의해 대부분 사용된다. 이들 명령은 세개의 레지스터 오퍼런드 또는 두개의 레지스터 오퍼런드와 5-비트 중간값을 갖는다. xx에 도시된 것과 같은 필드 D, S, 및 M의 엔코딩은 제1 소스 오퍼런드 Ra가 스칼라 또는 벡터 레지스터인지 ; 제2소스 오퍼런드 Rb/IM5가 스칼라 레지스터, 벡터 레지스터 또는 5-비트 중간값인 지 ; 및 목적지 레지스터 Rd가 스칼라 또는 벡터 레지스터인 지를 판단한다.
RRRR 포맷은 네개의 레지스터 오퍼런드를 갖는 명령을 위한 것이다. 레지스터 번호 Ra와 Rb는 소스 레지스터를 가리킨다. 레지스터 번호 Rd는 목적지 레지스터를 가리키고, 레지스터 번호 Rc는 필드 Opc에 따라 소스 또는 목적지 레지스터를 가리킨다. 모든 오퍼런드는 레지스터 Rb를 가리키도록 세트된 비트 S가 스칼라 레지스터가 아닌 한 벡터 레지스터이다. 필드 DS는 벡터 레지스터를 위한 데이타 엘리먼트 크기를 가리킨다. 필드 Opc는 32-비트 데이타 엘리먼트를 위한 데이타형을 선택한다.
Ri-포맷 명령은 로드 중간 명령을 위해서만 사용된다. 필드 IMM은 최대 18비트까지의 중간값을 포함한다. 레지스터 번호 Rd는 현재의 뱅크에 있는 벡터 레지스터 또는 비트 D에 따른 스칼라 레지스터인 목적지 레지스터를 가리킨다. 필드 DS와 F는 각각 데이타 엘리먼트 크기와 형을 가리킨다. 32-비트 정수 데이타 엘리먼트의 경우, 18-비트 중간값은 레지스터 Rd로 로드되기 전에 부호가 확장된다. 부동 소수점 데이타 엘리먼트의 경우, 비트 18, 비트 17 또는 10, 및 비트 9 내지 0은 각각 32-비트 부동 소수점값의 부호, 지수, 및 가수를 가리킨다.
CT 포맷은 플로우 제어 명령을 위한 것이고, op-코드 필드 Opc, 조건 필드 Cond, 및 23-비트 중간값 IMM을 포함한다. 조건 필드에 의해 가리켜진 조건이 참일 때 분기가 취해진다. 가능한 조건 코드는 항상, 보다 적은, 같은, 적거나 같은, 큰, 같지 않은, 크거나 같은, 그리고 오버플로우를 포함한다. 상태 및 제어 레지스터 VCSR에 있는 비트 GT, EQ, LT, 및 SO는 조건을 평가하는데 사용된다.
RRRM9 포맷은 대부분 산술 및 논리 명령에 의해 사용되고, 세개의 레지스터 오퍼런드 또는 두개의 레지스터 오퍼런드 및 9-비트 중간값을 제공한다. D, S 및 M의 조합은 어떤 오퍼런드가 벡터 레지스터, 스칼라 레지스터 또는 9-비트 중간값인지를 가리킨다. 필드 DS는 데이타 엘리먼트 크기를 가리킨다. RRRM9*와 RRRM9**포맷은 RRRM9 포맷의 특수한 경우로, 오피코드 필드 Opc로 구별된다. RRRM9*포맷은 소스 레지스터 번호 Ra를 조건 코드 Cond와 ID 필드로 교체한다. RRRM9**포맷은 중간값의 최상위 비트를 조건 코드 Cond와 비트 K로 교체한다.
부록 D
표 D1은 REAR 및 REAI 명령 포맷에 대한 오피코드 할당을 도시한다.
[표 D1]
REAR 및 REAI 엔코딩
표 D2는 RRRM5 명령 포맷에 대한 오피코드 할당을 도시한다.
[표 D2]
RRRM5 엔코딩
표 D3는 RRRR 명령 포맷에 대한 오피코드 할당을 도시한다.
[표 D3]
RRRR 엔코딩
표 D4는 CT 명령 포맷에 대한 오피코드 할당을 도시한다.
[표 D4]
CT 엔코딩
표 D5는 RRRM9 명령 포맷에 대한 오피코드 할당을 도시한다.
[표 D5]
RRRM9 엔코딩

Claims (11)

  1. 2N-데이타 엘리먼트 연산을 수행하기 위한 N-데이타 엘리먼트 벡터 프로세서 유닛에 있어서,
    2N-데이타 엘리먼트 연산을 위해 명령어 유닛으로부터의 N-데이타 엘리먼트 명령을 수정하기 위해 명령어 유닛에 결합된 에뮬레이터 ;
    상기 에뮬레이터에 결합된 2N-데이타 엘리먼트 레지스터를 형성하도록 각각 조합된 두개의 N-데이타 엘리먼트 레지스터를 구비하는 레지스터 화일 ;
    상기 레지스터 화일에 결합된 상기 두개의 N-데이타 엘리먼트 레지스터에 있는 데이타를 순차적으로 연산하기 위한 N-데이타 엘리먼트 실행 유닛 ; 및
    상기 실행 유닛에 결합된 4N-데이타 엘리먼트 누산기를 형성하도록 각각 조합된 다수의 2N-데이타 엘리먼트 누산기;를 구비하는 것을 특징으로 하는 벡터 프로세서.
  2. 제1항에 있어서,
    N-데이타 엘리먼트 또는 2N-데이타 엘리먼트 연산을 가리키는 모드 비트를 더 구비하는 것을 특징으로 하는 벡터 프로세서.
  3. 제1항에 있어서,
    2N 데이타 엘리먼트 위치를 각각 명시하는 다수의 N-비트 레지스터를 더 구비하는 것을 특징으로 하는 벡터 프로세서.
  4. 제1항에 있어서,
    2N 데이타 엘리먼트 위치를 명시하기 위해 상기 명령에 부수적인 비트를 더 구비하는 것을 특징으로 하는 벡터 프로세서.
  5. 제1항에 있어서,
    첫번째 N-데이타 엘리먼트 레지스터 또는 두번째 N-데이타 엘리먼트 레지스터를 명시하기 위해 상기 N-데이타 엘리먼트 명령에 비트를 더 구비하는 것을 특징으로 하는 벡터 프로세서.
  6. 제1항에 있어서,
    상기 N-데이타 엘리먼트 명령은 상기 데이타 엘리먼트 레지스터의 폭에 무관하게 상기 데이타 엘리먼트를 연산하는 것을 특징으로 하는 벡터 프로세서.
  7. 제1항에 있어서,
    상기 2N-데이타 엘리먼트 연산은 상기 2N-데이타 엘리먼트 연산의 상부 및 하부 절반(upper and lower halves)에 대해 대칭인 것을 특징으로 하는 벡터 프로세서.
  8. 제1항에 있어서,
    상기 N-데이타 엘리먼트 명령은 기수 및 우수 데이타 엘리먼트를 연산하는 것을 특징으로 하는 벡터 프로세서.
  9. 제1항에 있어서,
    상기 N-데이타 엘리먼트 명령은 N-데이타 엘리먼트 연산 모두에 보유하고 저장하기 위한 동일한 레지스터를 이용하는 것을 특징으로 하는 벡터 프로세서.
  10. N-데이타 엘리먼트 벡터 프로세서 아키텍쳐를 이용하여 2N-데이타 엘리먼트 연산을 에뮬레이트하는 방법에 있어서,
    한개의 2N-데이타 엘리먼트 레지스터를 형성하기 위한 두개의 N-데이타 엘리먼트 레지스터를 조합하는 단계 ;
    2N-데이타 엘리먼트 명령을 에뮬레이트 하기 위해 N-데이타 엘리먼트 명령을 수정하는 단계 ;
    상기 두개의 N-데이타 엘리먼트 레지스터의 첫번째에 있는 데이타에 대해 N-데이타 엘리먼트 명령을 실행하는 단계 ; 및
    상기 두개의 N-데이타 엘리먼트 레지스터의 두번째에 있는 데이타에 대해 N-데이타 엘리먼트 명령을 실행하는 단계;를 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    모드 비트로 N-데이타 엘리먼트 연산 또는 상기 2N-데이타 엘리먼트 연산을 지정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1019970035005A 1997-02-24 1997-07-25 스케일러블 폭의 벡터 프로세서 아키텍쳐 KR100267100B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/804,765 1997-02-24
US08/804,765 US5991531A (en) 1997-02-24 1997-02-24 Scalable width vector processor architecture for efficient emulation

Publications (2)

Publication Number Publication Date
KR19980069856A true KR19980069856A (ko) 1998-10-26
KR100267100B1 KR100267100B1 (ko) 2000-10-02

Family

ID=25189768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970035005A KR100267100B1 (ko) 1997-02-24 1997-07-25 스케일러블 폭의 벡터 프로세서 아키텍쳐

Country Status (2)

Country Link
US (1) US5991531A (ko)
KR (1) KR100267100B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170109670A (ko) * 2015-02-02 2017-09-29 옵티멈 세미컨덕터 테크놀로지스 인코포레이티드 엘리먼트 폭들을 변경시키는 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6295597B1 (en) * 1998-08-11 2001-09-25 Cray, Inc. Apparatus and method for improved vector processing to support extended-length integer arithmetic
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
EP2241968B1 (en) 1998-08-24 2012-06-27 MicroUnity Systems Engineering, Inc. System with wide operand architecture, and method
US6360194B1 (en) * 1998-09-08 2002-03-19 Bull Hn Information Systems Inc. Different word size multiprocessor emulation
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6678817B1 (en) * 2000-02-22 2004-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for fetching instructions from the memory subsystem of a mixed architecture processor into a hardware emulation engine
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6922666B2 (en) * 2000-12-22 2005-07-26 Bull Hn Information Systems Inc. Method and data processing system for performing atomic multiple word reads
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
JP3857614B2 (ja) * 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7203820B2 (en) * 2002-06-28 2007-04-10 Sun Microsystems, Inc. Extending a register file utilizing stack and queue techniques
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7299460B2 (en) * 2003-05-29 2007-11-20 Nec Corporation Method and computer program for converting an assembly language program for one processor to another
US7698625B2 (en) * 2003-08-26 2010-04-13 Adaptec, Inc. System for improving parity generation and rebuild performance
US8200945B2 (en) * 2003-11-07 2012-06-12 International Business Machines Corporation Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers
US7228266B1 (en) * 2003-12-05 2007-06-05 Unisys Corporation Instruction processor emulator having separate operand and op-code interfaces
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US7836284B2 (en) * 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US7694114B2 (en) 2005-06-09 2010-04-06 Qualcomm Incorporated Software selectable adjustment of SIMD parallelism
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US8874425B2 (en) * 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US7984269B2 (en) * 2007-06-12 2011-07-19 Arm Limited Data processing apparatus and method for reducing issue circuitry responsibility by using a predetermined pipeline stage to schedule a next operation in a sequence of operations defined by a complex instruction
US8407456B2 (en) * 2007-12-05 2013-03-26 Qualcomm Incorporated Method and instruction set including register shifts and rotates for data processing
US20090182985A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Move Facility and Instructions Therefore
US20110283092A1 (en) * 2008-08-15 2011-11-17 Apple Inc. Getfirst and assignlast instructions for processing vectors
US20100115232A1 (en) * 2008-10-31 2010-05-06 Johnson Timothy J Large integer support in vector operations
US8555034B2 (en) * 2009-12-15 2013-10-08 Oracle America, Inc. Execution of variable width vector processing instructions
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
CN114721721A (zh) * 2011-12-23 2022-07-08 英特尔公司 用于混洗浮点或整数值的装置和方法
US10289412B2 (en) * 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US9348589B2 (en) * 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9367309B2 (en) 2013-09-24 2016-06-14 Apple Inc. Predicate attribute tracker
US9390058B2 (en) * 2013-09-24 2016-07-12 Apple Inc. Dynamic attribute inference
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
US20170177351A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Even and Odd Vector Get Operations

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JP2679994B2 (ja) * 1987-08-14 1997-11-19 株式会社日立製作所 ベクトル処理装置
JPH04353947A (ja) * 1991-02-13 1992-12-08 Hewlett Packard Co <Hp> メモリページ特性タグ付けシステム
JPH05134848A (ja) * 1991-03-06 1993-06-01 Fujitsu Ltd 中央処理装置のデータシフト回路
JP3566364B2 (ja) * 1994-12-22 2004-09-15 キヤノン株式会社 データ処理装置及び方法
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170109670A (ko) * 2015-02-02 2017-09-29 옵티멈 세미컨덕터 테크놀로지스 인코포레이티드 엘리먼트 폭들을 변경시키는 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서

Also Published As

Publication number Publication date
US5991531A (en) 1999-11-23
KR100267100B1 (ko) 2000-10-02

Similar Documents

Publication Publication Date Title
KR100267100B1 (ko) 스케일러블 폭의 벡터 프로세서 아키텍쳐
US7882332B1 (en) Memory mapped register file
US6002881A (en) Coprocessor data access control
US5922066A (en) Multifunction data aligner in wide data width processor
KR101607161B1 (ko) 데이터 요소들의 스트라이드 패턴 수집 및 데이터 요소들의 스트라이드 패턴 분산을 위한 시스템, 장치 및 방법
US6745319B1 (en) Microprocessor with instructions for shuffling and dealing data
US7822947B2 (en) Aliasing data processing registers
US7516308B2 (en) Processor for performing group floating-point operations
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
US5881257A (en) Data processing system register control
US5748515A (en) Data processing condition code flags
US20050198473A1 (en) Multiplexing operations in SIMD processing
US6748521B1 (en) Microprocessor with instruction for saturating and packing data
EP1267256A2 (en) Conditional execution of instructions with multiple destinations
US5969975A (en) Data processing apparatus registers
KR20130137700A (ko) 벡터 친숙형 명령어 형식 및 그의 실행
KR20010043773A (ko) 재순환 레지스터 파일
JP3233163B2 (ja) メモリ拡張スキームを切り替える疑似直線バンクを有するマイクロコントローラ
US5881259A (en) Input operand size and hi/low word selection control in data processing systems
WO2010004245A1 (en) Processor with push instruction
US20100011191A1 (en) Data processing device with instruction translator and memory interface device to translate non-native instructions into native instructions for processor
CN104133748B (zh) 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统
JP2018500658A (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
KR19980032103A (ko) 컴퓨터에 있어서 스칼라값을 벡터로 기입하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120629

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee