KR100267092B1 - 멀티미디어신호프로세서의단일명령다중데이터처리 - Google Patents
멀티미디어신호프로세서의단일명령다중데이터처리 Download PDFInfo
- Publication number
- KR100267092B1 KR100267092B1 KR1019970012769A KR19970012769A KR100267092B1 KR 100267092 B1 KR100267092 B1 KR 100267092B1 KR 1019970012769 A KR1019970012769 A KR 1019970012769A KR 19970012769 A KR19970012769 A KR 19970012769A KR 100267092 B1 KR100267092 B1 KR 100267092B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- vector
- data
- processor
- bit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B41—PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
- B41C—PROCESSES FOR THE MANUFACTURE OR REPRODUCTION OF PRINTING SURFACES
- B41C1/00—Forme preparation
- B41C1/02—Engraving; Heads therefor
- B41C1/025—Engraving; Heads therefor characterised by means for the liquid etching of substrates for the manufacturing of relief or intaglio printing forms, already provided with resist pattern
Landscapes
- Engineering & Computer Science (AREA)
- Manufacturing & Machinery (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Laser Beam Processing (AREA)
Abstract
벡터 프로세서 아키택쳐는 프로그램 가능한 사이즈와 타입의 데이터 엘리먼트를 갖는 고정된 사이즈의 벡터 레지스더를 구비한다. 데이터 엘리먼트의 타입과 사이즈는 벡터 레지스터와 관련된 오퍼랜드를 조작하는 명령에 의해 정의된다. 명령에 의해 정의되는 데이터 사이즈는 벡터 레지스터의 수와 명령을 완료하기 위하여 실행되는 병렬연산의 수를 결정한다. 본 발명의 일 실시예는 모든 사이즈에 대한 정수 타입과 32비트 데이터 엘리먼트에 대한 플로팅 포인트 데이터 타입의 8비트, 9비트, 16비트, 및 32비트 데이터 엘리먼트 사이즈를 지원한다.
Description
본 발명은 디지탈 신호 프러세서에 관한 것으로, 특히 비디오 및 오디오 엔코딩/디코딩과 같은 멀티미디어 기능에 대한 명령마다 다중 데이터 엘리먼트의 병렬처리에 대한 프로세스에 관한 것이다.
실시간 비디오 엔코딩 및 디코딩과 같은 멀티미디어 응용을 위한 프로그램 가능한 디지탈 신호 프로세서(DSP: Digital Signa1 Processor)는 제한된 시간내에 처리되어야 하는 많은 량의 데이터에 대한 상당한 처리능력을 필요로 한다. 디지탈 신호 프로세서에 대한 몇개의 아키택쳐가 알려져 있다. 대부분의 마이크로프로세서에 채용된 이러한 범용 아키택쳐는 실시간 비디오 엔코딩 또는 디코딩을 위한 충분한 계산능력을 갖는 DSP를 제공하도록 고속 연산주기를 필요로 한다. 이것은 이러한 DSP를 값비싸게 만든다.
매우 긴 명령 워드(VLIW : Very Long Instruction Word) 프로세서는 많은 기능유닛을 갖는 DSP로서 이들의 대부분은 상이하고 비교적 단순안 태스크를 수행한다. VLIW DSP에 대한 단일 명령는 128 바이트 또는 그 이상이며 분리된 기능유닛이 병렬로 실행하는 분리된 부분들을 갖고 있다. VLIW DSP는 많은 기능유닛들이 병렬연산을 할 수 있기 매문에 높은 계산능력을 갖는다. 또한 VLIW DSP는 각 기능유닛이 비교적 작고 단순하기 때문에 비교적 저가이다.
VLIW DSP에 대한 문제는 VLIW DSP의 기능유닛에 대한 병렬실행에 적합하지 않은 입/출력 제어, 호스트 컴퓨터와의 통신, 및 다른 기능을 처리하는데 대한 비효율성이다. 또한 VLIW 소프트웨어는 통상적인 소프트웨어와 상이하며 VLIW 소프트웨어 아키택쳐에 신숙한 프로그래머와 프로그램 툴이 부족하기 때문에 개발에 어려움이 있다.
타당한 비용, 높은 계산능력, 및 친숙한 프로그래밍 환경을 제공하는 DSP가 멀티미디어 응용에 요구되고 있다.
제1도는 본 발명의 실시예에 따른 멀티미디어 프로세서의 블록도.
제2도는 제1도의 멀티미디어 프로세서에 대한 벡터 프로세서의 블록도.
제3도는 제2도의 벡터 프로세서에 대한 명령인출유닛의 블록도.
제4도는 제2도의 벡터 프로세서에 대한 명령인출유닛의 블록도.
제5a도 내지 제5c도는 벡터 프로세서에 대한 레지스터-대-레지스터 명령, 로드 명령, 및 기억 명령에 대한 실행 파이프라인의 단계도.
제6a도는 제2도의 벡터 프로세서에 대한 실행 데이터 패스에 대한 블록도.
제6b도는 제6a도의 실행 데이터 패스에 대한 레지스터 파일의 블록도.
제6c도는 제6a도의 실행 `데이터 패스에 대한 병렬처리 논리유닛에 대한 블록도.
제7도는 제2도의 벡터 프로세서에 대한 로드/기억유닛에 대한 블록도.
제8도는 본 발명 실시예에 따른 벡터 프로세서의 명령세트에 대한 포멧도,
* 도면의 주요부분에 대한 부호의 설명
100 : 멀티미디어 프로세서 105 : 프로세싱 코어
110 : 범용 프로세서 120 : 벡터 프로세서
l40 : 시스템 버스 144 : 전이중 UART
115 : 확장 레지스터 l30 : 캐시 서브시스템
142 : 시스템 타이머 146 : 비트 스트림 프로세서
148 : 인터럽트 콘트롤러 150 : 시스템 버스
152 : 디바이스 인터페이스 l54 : DMA 콘트롤러
156 : 로컬버스 콘트롤러 158 : 메모리 콘트롤러
160 : SRAM 162 : 명령 캐시
164 : 데이터 캐시 170 : ROM
180 : 캐시 콘트롤 190 : SRAM
192 : 명령 캐시 l94 : 데이터 캐시
210 : 명령인출유닛(IFU) 220 : 디코더
230 : 스케줄러 240 : 실행 데이더 패스
250 : 로드/기억 유닛(LSU) 610 : 레지스터 파일
본 발명의 일 특징에 따르면 멸티미디어 디지탈 신호 프로세서는 높은 계산능력을 제공하기 위하여 벡더 데이터(즉, 오퍼랜드 당 다중 데이터 엘리먼트)를 조작하는 벡터 프로세서를 포함한다. 프로세서는 RISC형 명령 세트를 갖는 단일 명령-다중 데이터(sing1e-instruction-multiple-data) 아키택쳐를 사용한다. 프로그래머는 프로그램 환경이 대부분의 프로그래머들이 친숙한 범용 프로세서의 프로그램 환경과 유사하기 때문에 벡터 프로세서의 프로그램 환경에 쉽게 적응할 수 있다.
DSP는 한 세트의 범용 벡터 레지스터를 포함한다. 각 벡터 레지스터는 고정된 사이즈를 갖고 있으나 사용자가 선택 가능한 사이즈의 분리된 데이터 엘리먼트로 분할된다. 따라서, 벡터 레지스터에 기억된 데이터 엘리먼트의 수는 엘리먼트에 대한 선택된 사이즈에 따라 결정된다. 예를들어, 32 바이트 레지스터는 32개 8비트 데이터 엘리먼트, 16개 16비트 데이터 엘리먼트, 또는 8개 32 비트 데이터 엘리먼트로 나뉘어질 수 있다. 데이터 사이즈와 형식의 선택은 벡터 레지스터와 연상된 데이터를 처리하는 명령에 따라 이루어지며, 명령에 대한 실행 데이터 패스는 명령에 의해 지시된 데이터 사이즈에 따라 다수의 병렬연산을 실행한다.
벡터 프로세서에 대한 명령은 오퍼랜드로서 벡터 레지스터 또는 스칼라 레지스터를 가질 수 있으며, 계산능력이 높아지도록 병렬로 벡터 레지스터의 다중 데이터 엘리먼트를 조작할 수 있다. 본 발명에 따른 벡터 프로세서에 대한 명령 세트의 예는 코프로세서 인터페이스 연산, 플로우 제어 연산, 로드/기억 연산, 및 논리/산술 연산을 포함한다. 논리/산술 연산은 데이터 엘리먼트들의 결과적인 데이터 벡터를 발생하기 위하여 하나의 벡터 레지스터로부터의 데이터 엘리먼트들을 일 또는 그 이상의 다른 벡터 레지스터로부터의 대응하는 데이터 엘리먼트들을 결합시키는 연산을 포함한다. 다른 논리/산술 연산은 일 또는 그 이상의 벡터 레지스터로부터의 각종 데이터 엘리먼트를 혼합하거나 또는 벡터 레지스터로부터의 데이터 엘리먼트를 스칼라량과 결합시킨다.
벡터 프로세서 아키택쳐의 확장은 각각 스칼라 데이터 엘리먼트를 포함하는 스칼라 레지스터를 가산한다. 스칼라와 벡터 레지스터의 결합(combination)은 벡터의 각 데이터 엘리먼트를 스칼라 값과 병렬로 결합하는 명령을 포함하는 벡터 프로세서의 명령 세트의 확장을 용이하게 해준다. 예를들어, 하나의 명령이 벡더의 데이터 엘리먼트에 스칼라 값을 곱한다. 스칼라 레지스터는 또한 단일 데이터 엘리먼트의 기억장소를 제공하여 벡터 레지스터로부터 추출되거나 벡더 레지스터에 기억되도록 한다. 또한 스칼라 레지스터는 벡터 프로세서와 단지 스칼라 레지스터를 구비하는 아키택쳐를 갖는 코프로세서 사이에 정보를 패스하거나 로드/기억 연산에 대한 유효 어드레스의 계산에 편리하다.
본 발명의 다른 특징에 따르면 벡터 프로세서의 벡터 레지스터는 뱅크(bank)들로 편성되어 있다. 각 뱅크는 "현재(current)"뱅크로 선택될 수 있고, 한편 다른 뱅크는 "교체(a1ternative)"뱅크이다. 벡터 프로세서의 제어 레지스터에서 "현재뱅크" 비트는 현재뱅크를 지시한다. 비트의 수를 감축하는 것은 벡터 레지스터를 식별하는 것이 필요하며, 현재뱅크에 벡터 레지스터를 식별하기 위하여 약간의 명령은 단지 레지스터 번호를 제공한다. 로드/기억 명령은 어느 뱅크로부더 벡터 레지스터를 식별하기 위하여 부가비트를 갖는다. 따라서, 로드/기억 명령은 현재뱅크에서 데이터를 조작하는 동안 교체뱅크로 데이터를 인출할 수 있다. 이것은 이미기 처리 및 그래픽 절차에 대한 소프트웨어 파이프라이닝을 용이하게 하며, 논리/산술 연산이 규칙을 벗어나 교체 레지스터 뱅크를 억세싱하는 로드/기억 연산에 따라 실행될 수 있기 때문에 데이터 인출시에 프로세서 지연을 줄인다. 다른 명령에서 교체뱅크는 현재뱅크로부터의 벡터 레지스터와 교체뱅크로부터의 대응하는 벡터 레지스터를 포함하는 더블 사이즈 벡터 레지스터의 사용을 가능하게 한다. 이러한 더블사이즈 레지스터는 명령 신택스(syntax)로부터 식별될 수 있다. 벡터 프로세서에서 제어비트는 디폴트 벡터 사이즈가 한개 또는 두개의 벡터 레지스터 중 하나가 되도록 설정될 수 있다. 또한 교체뱅크는 두개의 소스와 두개의 목적지 레지스터룰 갖는 셔플(shuffle), 언셔플 (unshuffle), 새튜레이트(saturate), 및 조건이동과 같은 복합 명령의 신택스에서 더 적은 명확한 식멸된 오퍼랜드를 사용 가능하게 한다.
더욱이 벡터 레지스터는 평균 콰드(quad), 셔플, 언셔플, 페어식 최대와 교환, 및 새튜레이트와 같은 신규한 명령을 구현한다. 이들 명령은 비디오 엔코딩 및 디코딩과 같은 멀티미디어 기능에 공통인 연산을 수행하며, 다른 명령 세트가 동일한 기능을 구현하기 위하여 필요로하는 2 또는 그 이상의 명령을 대신한다. 따라서, 벡터 프로세서 명령 세트는 멀티미디어 응용시에 프로그램의 효율과 속도를 향상시킨다.
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상술하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
도 1 은 본 발명의 실시예에 따른 멀티미디어 신호 프로세서 (MlSP;Multimedia Signal Processor)(100) 실시예의 불록도를 나타낸다. 멀티미디어 프로세서(100)는 범용 프로세서(110)와 벡터 프로세서(120)를 포함하는 프로세싱 코어(105)를 포함한다. 프로세싱 코어(l05)는 SRAM(160,190), ROM(170), 및 캐시 콘트롤(180)을 포함하는 캐시 서브시스템(130)을 퉁하여 멀티미디어 프로세서(100)의 나머지에 연결되어 있다. 캐시 콘트롤(180)은 프로세서(110)에 대한 명령 캐시(162)와 데이터 캐시(164)로서 SRAM(160)을 구성할 수 있고, 벡터 프로세서(120)에 대한 명령 캐시(192)와 데이터 캐시(194)로서 SRAM(190)을 구성할 수 있다.
원칩 ROM(170)은 프로세서(110,120)에 대한 데이터와 명령을 포함하며 또한 캐시로서 구성될 수 있다. 바람직안 실시예에서 ROM(170)은 리셋 및 초기화 절차, 자기 테스트 진단절차, 인터럽트 및 예의 처리기, 및 사운드블러스터 에뮬레이선용 서브루틴, V.34 모뎀 신호 처리용 서브루틴, 일반 전화 기능,1-D 및 3-D 그래픽 서브루틴 라이브러리, 및 MPEG-1, MPEG-2, H.261, H.263, G.728, 및 G.723과 같은 오디오 및 비디오 표준용 서브루틴 라이브러리를 포함한다.
캐시 서브시스템(130)은 프로세서(110,120)를 2 시스템 버스(140,150)에 연결시키며, 프로세서(110,120)와 버스(140,150)에 결합된 장치들에 대한 캐시와 스위칭 스테이션으로서 작용을 한다. 시스템 버스(150)는 버스(140) 보다 더 높은 클록 주파수로 동작을하며, 각각 의부 로컬 메모리, 호스트 컴퓨더의 로컬버스, 다이렉트 메모리 억세스(DMA; Direct Memory Access), 및 각종 아날로그/디지탈(A/D) 및 디지탈/아날로그(D/A) 변환기에 대한 인터페이스를 제공하는 디바이스 인터페이스(152), DMA 콘트롤러(154), 로컬 버스 인터페이스(156), 및 메모리 콘트롤리(158)에 연결되어 있다. 버스(140)에는 시스템 타이머(142), UART (Universa1 Asynchronous Receiver Transceiver)(144), 비트 스트림 프로세서 (146), 및 인터럽트 콘트롤러(148)가 연결되어 있다. "멀티미디어 신호 프로세서의 멀티프로세서 동작" 및 비디오 데이터를 처리하기 위한 방법 및 장치"의 명칭을 갖는 본 출원과 합체되는 특허출원은 프로세서(110,120)가 캐시시스템(130)과 버스(140,150)를 통하여 억세스하는 바람직한 디바이스와 캐시 서브시스템 (130)의 작용을 더욱 상세하게 설명하고 있다.
프로세서(l10,120)는 분리된 프로그램 스래드(thread)를 실행하며 그들에 할당된 특징 태스크를 보다 효율적으로 실행하기 의해 구조적으로 상이하다. 프로세서(110)는 실시간 오퍼레이팅 시스템의 실행과 같은 제어기능과 많은 수의 반복적인 계산을 요구하지 않는 유사한 기능에 우선을 두고 있다. 따라서, 프로세서(110)는 높은 계산능력을 필요로 하지 않으며 통상적인 범용 프로세서 아키택쳐를 사용하여 구현될 수 있다. 벡터 프로세서(120)는 대부분 멀티미디어 처리에 공통인 데이터 블록에 대한 반복적인 연산을 포함하는 넘버 크런칭(number chrunching)을 실행한다. 높은 계산능력과 비교적 단순한 프로그래밍을 위하여, 벡터 프로세서(120)는 SIMD(Single Instruction Multiple Data) 아키택쳐를 가지며, 예시된 실시예에서 벡더 프로세서(120)에서의 대부분의 데이터 패스는 벡터 데이터 조작을 지원하기 의하여 288 또는 576 비트 중 하나의 넓이를 갖는다. 또안 벡터 프로세서(120)에 대한 명령 세트는 멀티미디어 문제에 특히 직합한 명령을 포함한다.
도시된 실시예에서 프로세서(11O)는 4OMHz에서 동작하며 ARM7 표준에 의해 정의된 레지스터 세트를 포함하는 ARM7 프로세서의 아키택쳐와 일치하는 32비트 RISC 프로세서이다. ARM7 RISC 프로세서에 대한 아키택쳐와 명령 세트는 어드밴스리식 머신즈 리미티드(Advance RISC Machines Ltd.)로부터 입수 가능한 "ARM7DM Data Sheet", 문서번호: ARM DDI 001OG에 기재되어 있다. ARM7DM Data Sheet는 이 출원에 참고로 포함된다. 별첨 A는 바람직한 실시예에서 ARM7 명령세트의 확장을 설명한다.
벡터 프로세서(120)는 벡터와 스칼라량 모두를 연산한다. 바람직한 실시예에서 벡터 데이터 프로세서(120)는 80MHz에서 동작하는 파이프라인 구조의 RISC 엔진으로 구성되어 있다. 벡더 프로세서(120)의 레지스터는 32비트 스칼라 레지스터, 32비트 특수목적 레지스터, 2뱅크의 288비트 벡터 레지스터, 및 2 더블 사이즈(예를들어 576비트) 벡터 어큐물레이터 레지스터를 포함한다. 별첨 C는 벡터 프로세서(120)이 바람직한 실시예에 대한 레지스터 세트를 설명한다. 바람직한 실시예에서 프로세서(120)는 0 부터 31 범위의 5비트 레지스터 번호에 의해 명령들이 식별되는 32개 스칼라 레지스터를 포함한다. 또한 2 뱅크의 32 벡터 레지스터 구조로 이루어진 64개의 288비트 벡터 레지스터를 구비하고 있다. 각 벡터 레지스터는 1비트의 뱅크번호(0 또는 1)와 0 부터 31 범위의 5비트 벡터 레지스터 번호에 의해 식별된다. 대부분의 명령은 단지 벡터 프로세서(120)의 제어 레지스터(VCSR)에 기억된다. 폴트 뱅크비트(CBANK)로 지시된 현재뱅크에서 벡터 레지스터를 억세스한다. 제2제어비트(VEC64)는 디폴트에 의한 레지스터 번호가 각 뱅크로부터 레지스더를 포함하는 더블 사이즈 벡터 레지스터를 식별하는 지를 지시한다. 명령의 신택스는 벡터레지스터를 식별하는 레지스터 번호를 스칼라 레지스터를 식별하는 레지스터 번호와 구별한다.
각 벡터 레지스터는 프로그램 가능한 사이즈의 데이터 엘리먼트로 분할될 수있다. 표 1은 288비트 벡티 레지스터 내에서 데이터 엘리먼트에 대해 지원되는 데이터 형식을 보여준다.
[표]
별첨 D는 본 발명의 바람직한 실시예에서 지원되는 데이터 사이즈와 데이터 형식에 대한 추가설명을 제공한다.
int9 데이터 형식인 경우 9비트 바이트가 288비트 벡터 레지스터에 필연적으로 포장되나 다른 데이더 형식인 경우에 288비트 벡터 레지스터에 모든 9비트는 사용되지 않는다. 288비트 벡터 레지스터는 32개 8비트 또는 9비트 정수 데이터 엘리먼트,16개 16비트 정수 데이터 엘리먼트, 또는 8개 32비트 정수 또는 플로팅 포인트 엘리먼트를 보유할수 있다. 또한 2 벡터 레지스터는 더블 사이즈 벡터로 데이터 엘리먼트를 포장하도록 결합될 수 있다. 본 발명의 바람직한 실시예에서 제어 및 상태 레지스터(VCSR)에 제어비트(VEC64)를 설정하는 것은 더블 사이즈(576비트)가 벡터 레지스터의 디폴트 사이즈인 경우 벡터 프로세서(120)를 모드(VEC64)로 설정한다.
또한 멀티미디어 프로세서(100)는 양 프로세서(110,120)가 억세스할 수 있는한 세트의 32비트 확장 레지스터(115)를 포함한다. 별첨 B는 본 발명의 바람직한 실시예에서 한 세트의 레지스터와 그들의 기능을 설명한다. 확장 레지스터와 벡터프로세서(120)의 스칼라 및 특수 목적의 레지스터는 몇가지 환경에서 프로세서(110)가 억세스할 수 있다. 2개의 특수 "사용자" 확장 레지스터는 프로세서(110,120)가 동시에 레지스터를 읽을 수 있도록 2개의 읽기 포트를 갖고 있다. 다른 확장 레지스터는 동시에 억세스될 수 없다.
벡터 레제스터(120)는 벡터 레지스터(120)가 런닝 또는 아이들 상태에 있는지를 나타내는 2개의 선택적인 상태(VP_RUN,VP_IDLE)를 갖는다. 프로세서(110)는 벡터 프로세서(l20)가 상태(VP_IDLE)에 있을 때 벡터 프로세서(120)의 스칼라 또는 특수 목적 레지스터를 읽거나 기록할 수 있으나, 벡터 프로세서(l20)가 상태(VP_RUN)에 있는 동안 프로세서(110)가 벡터 프로세서(120)의 레지스터를 읽거나 기록한 결과는 미정이다,
프로세서(110)에 대한 ARM7 명령 세트의 확장은 확장 레지스터와 벡터 프로세서(120)의 스칼라 및 특수 목적의 레지스터를 억세스하는 명령을 포함한다. 명령(MFER, MFEP)은 각각 확장 레지스터와 벡터 프로세서(I20)의 스칼라 또는 특수 목적 레지스터로부터 프로세서(110)의 일반 레지스터로 데이터를 이동시킨다. 명령(MTER, MTEP)은 각각 프로세서(11O)의 일반적인 레지스터로부터 확장 레지스터와 벡터 프로세서(120)의 스칼라 또는 특수 목적의 레지스터로 데이터를 이동시킨다. TESTSET 명령은 확장 레지스터를 읽고 확장 레지스터의 비트30을 1로 설정시킨다. 명령(TESTSET)은 프로세서(11O)가 생산된 결과를 읽거나 또는 사용하였던 프로세서(120)에 대한 신호를 발생하도록 비트30를 설정함에 의해 사용자/생산자 동기를 용이하게 한다. STARTVP 및 INTVP와 같은 프로세서(11O)에 대한 다른 명령들은 벡터프로세서(120)의 연산상태를 제어한다.
프로세서(1l0)는 벡터 프로세서(120)의 연산을 제어하는 마스터 프로세서로서 역할을 한다. 프로세서(l10,120) 사이의 불균형 분할 제어를 사용하는 것은 프로세서(110,120)의 동기화 문제를 단순화시킨다. 프로세서(110)는 벡터 프로세서(120)가 상태(VP_IDLE)에 있는 동안 벡터 프로세서(120)에 대한 프로그램 카운터에 명령 어드레스를 기록함에 의해 벡터 프로세서(120)를 초기화시킨다. 그후 프로세서(110)는 벡터 프로세서(120)를 상태(VP-RUN)로 변경시키는 STARTVP 명령을 실행한다. 상태(VP-RUN)에서 벡터 프로세서(120)는 캐시 서브시스템(130)을 통하여 명령을 인출하고 프로세서(110)와 병렬로 그들 명령을 실행하며 계속하여 자신의 프로그램을 실행한다. 기동후에 벡터 프로세서(120)는 예의를 만나거나, 적당한 조건이 만족되어 VCJOIN 또는 VCINT 명령을 실행하거나 또는 프로세서 (11O)에 의해 인터럽트가 걸릴 때 까지 실행을 계속한다. 벡터 프로세서(120)는 확장 레지스티에 결과를 기록하거나, 프로세서(110,l20)의 공유 어드레스 공간에 결과를 기록하거나 또는 벡터 프로세서(120)가 상태(VP_IDLE)로 재진입할 때 프로세서(110)가 억세스 하는 스칼라 또는 특수 목적 레지스터에 결과를 남김에 의해 프로세서(110)에 대한 프로그램 실행의 결과를 패스할 수 있다.
벡터 프로세서(120)는 자신의 예외를 처리하지 못한다. 예의를 야기하는 명령의 실행시에 벡터 프로세서(120)는 상태(VP_IDLE)로 진입하여 프로세서(110)에 대해 다이렉트 라인을 통하여 인터럽트 요구(interrupt request)를 발생한다. 벡터프로세서(120)는 프로세서(110)가 다른 STARTVP 명령을 실행할 때 까지 상태(VP_lDLE)로 남아 있는다. 프로세서(110)는 예외현상을 판단하여 벡터 프로세서(120)의 레지스터(VISRC)를 읽고, 벡더 프로세서(120)를 재초기화시킴에 의해 가능한 예외를 처리하고 그 후 원하는 경우 실행을 다시 시작하도록 벡터 프로세서(120)를 조정한다.
프로세서(110)에 의해 실행되는 lNTVP 명령은 벡터 프로세서(120)가 아이들 상태(VP_IDLE)로 진입하도록 벡터 프로세서(120)에 인터럽트를 건다. 예를들어,명령(INTVP)은 멀티태스킹 시스템에 사용되어 비디오 디코딩과 같은 하나의 태스크로부터 사운드 카드 에뮬레이션과 같은 다른 태스크로 벡터 프로세서를 교환한다.
벡터 프로세세 명령 (VCINT, VCJOIN)은 명령에 의해 지시된 조건이 만족되는 경우 벡터 프로세서(120)에 의한 실행을 정지하고, 상태 (VP_IDLE)로 벡터 프로세서(120)를 설정하고 이러한 요구가 차단되지 않는 경우 프로세서(110)에 대한 인터럽트를 발한다. 벡터 프로세서(120)의 프로그램 카운터(특수 목적 레지스터 VPC)는 VCINT 또는 VCJOlN 명령 다음의 명령 어드레스를 나타낸다. 프로세서(11O)는 VCINT 또는 VCJOlN 명령이 인터럽트 요구를 야기했는 지를 판단하기 위하여 벡터 프로세서(120)의 인터럽트 소스 레지스터(VISRC)를 체크할 수 있다. 벡터 프로세서(120)는 큰 데이터 버스를 갖고 있고 레지스터를 세이브하고 복구하는데 좀더 효율적이므로 벡터 프로세서(120)에 의해 실행된 소프트웨어는 환경 스위칭 동안 레지스터를 세이브하고 복구할 것이다. "멀티프로세서에서 효율적인 환경 세이빙 및 복구"란 제목으로 본 출원과 관련된 다른 출원에서는 환경 스위칭에 대한 바람직한 시스템이 기술되어 있다.
도 2 는 벡터 프로세서(120)의 바람직한 실시예의 중요한 기능블록을 나다낸다. 벡터 프로세서(120)는 명령 인출 유닛(IFU; Instruction Fetch Unit) (2l0),디코더(220), 스케줄러(230), 실행 데이터 패스(240), 및 로드/기억 유닛 (LSU;Load/Store Unit)(250)을 포함한다.IFU(210)는 명령을 인출하여 브렌치 (Branch)와 같은 플로우 콘트롤 명령을 처리한다. 명령 디코더(220)는 IFU(210)로부터 도달한 순서에 따라 각 사이클마다 하나의 명령을 디코딩하여 명령으로부터 디코드된 필드 값을 FIFO방식으로 스케줄러(230)에 기록한다. 스케줄러(230)는 연산실행 단계에 필요로하는 실행 제어 레지스터에 발행되는 필드값을 선택한다. 발행 선택은 실행 데이터 패스(240) 또는 로드/기억 유닛(250)과 같은 처리자원의 유효성과 오퍼랜드 의존성에 달려있다. 실행 데이터 패스(240)는 벡터 또는 스칼라 데이터를 조작하는 논리/산술 명령을 실행한다. 로드/기억 유닛(250)은 벡터 프로세서(120)의 어드레스 공간을 억세스하는 로드/기억 명령을 실행한다.
도 3 은 메인 명령 버퍼(310)와 제2명령 버퍼(312)로 분할된 명령 버퍼를 포함하는 IFU(21O)의 실시예에 대한 블록도를 나타낸다. 메인 버퍼(310)는 현재 프로그램 카운트에 대응하는 명령을 포함하는 8개 연속 명령을 포함한다. 제2버퍼(312)는 버퍼(310)의 명령을 바로 뒤따르는 8 명령을 포함한다. IFU(210)는 또한 버피(310 또는 312)의 다음 플로우 콘트롤 명령의 타겟을 포함한 8 연속 명령을 포함하는 브랜치 타겟 버퍼(314)를 구비한다. 바람직한 실시예에서 벡터 프로세서(120)는 각 명령이 32비트로 긴 경우 RISC형 명령 세트를 사용하며, 버퍼 (310,312,314)는 8×32 비트 버퍼이며 256비트 명령 버스를 통하여 캐시 서브시스템(130)에 접속된다. IFU(210)는 단일 클록 사이클 내에 캐시 서브시스템 (130)으로부티 버퍼(3l0,312,314) 중 어느 하나로 8명령을 로드할 수 있다. 레지스터(340,342,344)는 각각 버퍼(310,312,314)에 로드된 명령에 대한 베이스 어드레스를 지시한다.
멀티플렉서(MUX)(332)는 메인 명령 버퍼(310)로부터 현재 명령을 선택한다. 만약 현 명령이 플로우 콘트롤 명령이 아니고 명령 레지스터(330)에 기억된 명령이 디코딩 단계의 실행 보다 앞에 있는 경우 현 명령은 명령 레지스터(330)로 기억되고 프로그램 카운트는 중분된다. 프로그램 카운트의 중분이 버퍼(310)에 있는 최종의 명령을 선택한후 다음 세트의 8 명령은 버퍼(310)로 로딩된다. 만약 버퍼(312)가 소망하는 8명령을 포함하는 경우 버퍼(312)와 레지스터(342)의 내용은 즉시 버퍼(310)와 레지스터(340)로 이동되며,8 이상의 명령은 캐시 서브시스템(130)으로 부터 제2버퍼(312)로 예비인출된다. 가산기(350)는 멀티플렉서 (MUX)(352)에 의해 선택된 오프셋과 레지스터(342)의 베이스 어드레스로부터 다음세트의 명령의 어드레스를 결정한다. 가산기(350)로부터의 결과 어드레스는 레지스터(342)로부터의 어드레스가 레지스터(340)로 이동한 경우 또는 그후에 레지스터(342)에 기억된다. 계산된 어드레스는 또한 8명령에 대한 요구를 갖는 캐시 서브시스템(130)으로 보내진다. 캐시 서브시스템(130)에 대한 예비호출이 버퍼 (310)에 요구될 때 버퍼(312)에 대한 다음번 8명령이 아직 구비되지 안은 경우 미리 요구된 명령은 캐시 서브시스템(130)으로부터 수신된 때 즉시 버퍼(310)에 기억된다.
현재 명령이 플로우 콘트롤 명령인 경우 IFU(210)는 플로우 콘트롤 명령에 대한 조건을 평가하고, 플로우 콘트롤 명령을 따르는 프로그램 카운트를 업데이트 시킴에 의해 명령을 처리한다.IFU(210)는 조건을 변경할 수 있는 종전의 명령이 완료되지 않았기 때문에 조건이 결정되지 않은 경우 보류로 된다. 브렌치가 이루어지지 않는 경우 프로그램은 충분되며, 다음 명령이 상기와 같이 선택된다. 만약 브렌치가 이루어지고 브렌치 타겟 버퍼(314)가 브렌치의 타겟을 포함하는 경우 버퍼(314)와 레지스터(344)의 내용은 버퍼(310) 및 레지스터(340)으로 이동되어 IFU(210)가 캐시 서브시스템(130)으로부터 명령을 기다리지 않고 디코더 (220)에 계속하여 명령을 제공한다.
브렌치 타겟 버퍼(314)에 대한 명령을 미리 인출하기 위하여 스캐너(320)는 현재 프로그램 카운트 다음의 다음번 흐름 제어 명령을 찾기 위하여 버퍼 (310,312)를 스캐닝한다. 만약 흐름 제어 명령이 버퍼(310 또는 312)에서 발견되는 경우 스캐너(320)는 명령을 포함하는 버퍼(310 또는 312)의 베이스 어드레스로부터 흐름제어 명령의 타겟 어드레스를 포함하는 정렬된 세트의 8 명령에 대한 오프셋을 결정한다. 멀티플렉서(352,354)는 레지스터(340 또는 342)로부터 버퍼 (314)에 대한 새로운 베이스 어드레스를 발생하는 가산기(350)에 베이스 어드레스와 플로우 콘트롤 명령으로부터 오프셋을 제공한다. 새로운 베이스 어드레스는 캐시 서브시스템(130)으로 인가되어 브렌치 타겟 바퍼(314)에 8명령을 계속하여 제공한다.
"감소 및 조건부 브렌치" 명령(VD1CBR, VD2CBR, VD3CBR) 및 "변경 제어 레지스터" 명령(VCHGCR)과 같은 플로우 콘트롤 명령을 처리하는 경우에 IFU(210)는 프로그램 카운트에 부가하여 레지스터값을 변경할 수 있다.IFU(210)가 플로우 콘트롤 명령이 아닌 명령을 발견한때 그 명령은 명령 레지스터(330)로 보내져 그로부터 디코더(220)로 보내진다.
디코더(220)는 도 4 에 도시된 바와같이 스케줄러(230)에서 FIFO 버퍼 (410)의 필드에 제어값을 기록함에 의해 명령을 디코드한다. FIFO 버퍼(410)는 4 행렬의 플립플롭을 포함하며, 각 플립플롭은 일 명령의 실행을 제어하기 위한 5필드의 정보를 포함할 수 있다. 행렬0 내지 행렬3은 각각 가장 오래된 것부터 가장 새로운 명령에 대한 정보를 보유하며, FIF0 버퍼(410)의 정보는 더 오래된 정보가 명령으로서 완전하게 제거된 때 더 낮은 행렬로 시프트된다. 스케줄러(230)는 실행 레지스터(421 내지 427)를 포함하는 콘트롤 파이프(420)로 로드될 명령의 필요한 필드를 선택함에 의해 실행단에 명령을 발행한다. 대부분의 명령은 불규칙적인 순서로 발행과 실행을 예정할 수 있다. 특히 논리/산술 연산과 로드/기억 연산의 순서는 로드/기억 연산과 논리/산술 연산 사이의 오퍼랜드 종속성이 있지 않는한 임의이다. FIFO 버퍼(41O)에서 필드값의 비교는 어떤 오퍼랜드 종속성이 존재하는 지를 지시한다.
도 5a 는 벡터 프로세서(120)의 어드레스 공간을 억세싱하지 안고 레지스터-대-레지스터 연산을 수행하는 명령에 대한 6단 실행 파이프라인을 보여준다. 명령 인출단계(511)에서 IFU(210)는 상기한 바와같이 명령을 인출한다. 인출단은 IFU(2I0)가 파이프라인 지연, 미해결 브렌치 조건, 또는 미리 인출된 명령을 제공하는 캐시 서브시스템(130)에서의 지연에 의해 보류되지 않는한 1클록 사이클을 필요로 한다. 디코드단계(512)에서 디코더(220)는 IFU(210)로부터 명령을 디코드하여 스케줄러(230)에 명령에 대한 정보를 기록한다. 디코드단계(512)은 또한 FIFO(410)에서 어떤 행렬도 새로운 연산을 이용하지 않는한 1클록 사이클을 필요로 한다. 연산은 FIFO(41O)에서 제1사이클 동안 콘트롤 파이프(42O)로 발행될 수 있으나, 더 오래된 연산의 발행에 의해 지연될 수 도 있다.
실행 데이터 패스(240)는 레지스터-대-레지스터 연산을 수행하며 로드/기록 연산에 대한 어드레스를 제공한다. 도 6a는 실행 데이터 패스(240)의 실시예의 블록도를 보여주며 실행단계(514,515,516)와 판련하여 설명이 이루어진다. 실행 레지스터(421)는 읽기단계(514) 동안 클록 사이클에서 읽혀진 레지스터 파일(610)에 2 레지스터를 식별하는 신호를 제공한다. 레지스터 파일(610)은 32스칼라 레지스터와 64벡터 레지스터를 포함한다. 도 6b는 레지스터 파일의 블록도이다. 레지스터 파일(610)은 각 클록 사이클 마다 2읽기 및 2기록을 수용하도록 2읽기 포트와 2기록 포트를 갖고 있다. 각 포트는 선택회로(612,614,616, 또는 618)와 288비트 데이터 버스(613,615,617, 또는 619)를 포함한다. 회로 (612,614,616,618)와 같은 선택회로는 당분야의 주지된 사항이며, 명령으로부터 전형적으로 추출된 5비트 레지스터 번호로부터 디코더(220)가 도출해내는 어드레스 신호(WRADDRl,WRADDR2, RDADDRl, 또는 RDADDR2)와, 명령 또는 제어 상태 레지스터(VCSR)로부터의 뱅크비트와, 레지스터가 벡터 레지스터 또는 스칼라 레지스터인지를 지시하는 명령 신택스를 사용한다. 데이터 읽기는 멀티플렉서 (656)를 통하여 로드/기억 유닛(250)에 대하여 이루이지거나 또는 멀티플렉서 (622,624)를 통하여 멀티플라이어(620), 산술 논리 유닛(630), 또는 어큐물레이터(640)에 대하여 이루어진다. 대부분의 연산은 2레지스터를 읽으며, 읽기단계 (514)는 1사이클로 원료된다. 그러나, 승산 및 가산 명령(VMAD) 및 더블 사이즈 벡터를 조정하는 명령과 같은 몇가지 명령은 2 이상의 레지스터로부터 데이터를 필요로하므로 읽기단계(514)는 1클록 사이클 보다 더 길어진다.
실행단계(515), 멀티플라이어(620), 산술 논리 유닛(630), 및 어큐물레이터(640)를 거치는 동안 처리 데이터는 레지스더 파일(610)로부터 미리 읽혀진다. 실행단계(515)는 필요안 데이터를 읽어오는데 다수 사이클이 요구되는 경우 읽기단계(514)를 오버랩할 수 있다. 실행단계(515)의 기간은 데이터 엘리먼트의 타입(정수 또는 플로팅 포인트) 및 처리된 데이터의 양(읽기 사이클의 수)에 따라 변한다. 실행 레지스터(422,423,425)의 신호는 실행단계 동안 수행된 제1연산을 위해 산술 논리 유닛(630), 어큐물레이터(640), 및 멀티플라이어(620)에 대한 입력 데이터를 제어한다. 실행 레지스터(432,433,435)는 실행단계(515) 동안 수행된 제2연산을 제어한다.
도 6c 는 멀티플라이어(620)와 ALU(630)의 실시예에 대한 블록도를 보여준다. 멀티플라이어(620)는 8개의 독립된 36×36비트 멀티플라이어(626)를 포함하는 정수 멀티플라이어이다. 각각의 멀티플라이어(626)는 제어회로에 상호 연결된 4개의 9×9비트 멀티플라이어를 포함한다. 8비트 및 9비트 데이터 엘리먼트 사이즈를 갖는 경우 스케줄러(230)로부터의 제어신호는 4개의 9×9비트 멀티플라이어를 서로 분리시켜 각 멀티플라이어(626)가 4 승산을 수행하게하여 멀티플라이어(620)가 1사이클 동안 32 독립된 승산을 수행하게 한다. 16비트 데이터 엘리먼트인 경우에 제어회로는 한쌍의 9×9비트 멀티플라이어가 함께 동작하도록 접속시켜서 멀티플라이어(620)는 16 병렬 승산을 수행한다. 32비트 정수 데이터 엘리먼트 형태인 경우 8 멀티플라이어(626)는 클록 사이클마다 8 병렬 승산을 수행한다. 승산의 결과는 9비트 데이터 엘리먼트 사이즈에 대하여 576비트 결과로 그리고 다른 데이터 사이즈에 대하여 512비트를 제공한다.
ALU(630)는 2클록 사이클 내에 멀티플라이어(620)로부터 생성된 576비트 또는 512비트 결과를 처리할 수 있다. ALU(630)는 8독립된 36비트 ALU(636)를 포함한다. 각 ALU(636)는 플로팅 포인트 가산과 승산을 위한 32×32비트 플로팅 포인트 유닛을 포함한다. 정수 조작을 위하여 각 ALU(636)는 독립된 8비트 및 9비트 조작을 할 수 있으며 16비트 및 32비트 정수 데이터 엘리먼트에 대하여 2 또는 4세트로 서로 연결될 수 있는 4유닛을 포함한다.
어큐물레이터(640)는 결과를 누산하며 중간 결과에서 더 높은 정밀도를 위하여 2개의 576비트 레지스더를 포함한다.
기록단계(516) 동안 실행단계의 결과는 레지스터 파일(610)에 기억된다. 2레지스터는 단일 클록 사이클 동안에 기록될 수 있으며, 입력 멀티플렉서 (602,605)는 기록될 2데이터값을 선택한다. 연산에 대한 기록단계 (516)의 기간은 연산결과 기록될 데이터의 양과 레지스터 파일(610)에 기록함에 의해 로드 명령을 원료할 수 있는 LSU(250)로부터의 완료에 따라 달라진다. 실행 레지스터 (426,427)로부터의 신호는 논리유닛(630), 어큐물레이터(640), 및 멀티플라이어 (620)의 데이터가 기록되는 레지스터를 선택한다.
도 5b 는 로드 명령의 실행을 위한 실행 파이프라인(520)을 보여준다. 실행 파이프라인(520)을 위한 명령 인출단계(511), 디코드단졔(512), 및 발행단계 (513)는 레지스터-대-레지스터 연산에 대하여 설명된 것과 동일하다. 읽기단계 (514)는 또한 캐시 서브시스템(130)에 대한 호출용 어드레스를 결정하기 위하여 실행 데이터 패스(240)가 레지스터 파일(610)로부터 데이터를 사용한다는 점을 제외하고 상기한 것과 동일하다. 어드레스단계(525)에서 멀티플렉서 (652,654, 656)는 실행단계(526,527)를 위하여 로드/기억 유닛(250)에 제공되는 어드레스를 선택한다. 로드 연산에 대한 정보는 단계(526,527) 동안 FIFO(4l0)에 잔류하며 한편 로드/기억 유닛(250)은 연산을 처리한다.
도 7 은 로드/기억 유닛(250)에 대한 실시예를 보여준다. 단계(256) 동안 단계(525)에서 결정된 어드레스의 데이터를 위하여 캐시 서브시스템(130)에 대한 콜을 행한다. 바람직한 실시예는 프로세서(110,120)를 포함하는 다중 디바이스가 캐시 서브시스템(130)을 통하여 로컬 어드레스 공간을 억세스할 수 있는 경우 트랜스 액션 베이스 캐시콜(transaction based cache ca11)을 사용한다. 요구된 데이터는 캐시 서브시스템(1301)에 대한 콜 후에 몇개의 사이클 동안 사용할 수 없으나 로드/기억 유닛(250)은 다른 콜이 펜딩인 동안 캐시 서브시스템에 대한 콜을 할 수 있다. 따라서 로드/기억 유닛(250)은 정지되지 않는다. 요구된 데이터를 제공하기 위하여 캐시 서브시스템에 요구되는 클록 사이클의 수는 데이터 캐시(194)에 히트 또는 미스가 존재하는 지에 달려있다.
드라이브 단계(527)에서 캐시 서브시스뎀(130)은 로드/기억 유닛(250)에 대한 데이터 신호를 요구한다. 캐시 서브시스템(130)은 로드/기억 유닛(250)에 사이 클당 256비트(32바이트)데이터를 제공할 수 있다. 바이트 얼라이너(710)는 288비트 값을 제공하기 위하여 대응하는 9비트 기억위치에 32바이트 각각을 정렬시킨다. 288비트 포맷은 때때로 9비트 데이터 엘리먼트를 사용하는 MPEG 엔코딩 및 디코딩과 같은 멀티미디어 응용에 편리하다. 288비트값은 읽기 데이터 버퍼 (720)로 기록된다. 기록단계(528)에서 스케줄러(230)는 FIFO 버퍼(410)로부터 실행 레지스터(426 또는 427)에 필드 4를 전송하여 데이터 버퍼(720)로부터 레지스터 파일(610)로 288비트량을 기록한다.
도 5c 는 기억명령의 실행을 위한 실행 파이프라인(530)을 보여준다. 실행파이프라인(530)을 위한 인출단계(511), 디코드단계(512), 및 발행단계(513)는 상기한 바와 동일하다. 읽기단계(514)는 또한 읽기단계가 기억될 데이터와 어드레스 계산용 데이터를 읽는다는 것을 제외하고 상기와 동일하다. 기억될 데이터는 로드/기억 유닛(250)에서 기록 데이터 버퍼(730)에 기록된다. 멀티플렉서 (740)는 9비트 바이트를 제공하는 포맷의 데이터를 8비트 바이트를 갖는 통상적인 포맷으로 변환한다. 버퍼(730)로부터의 변환된 데이터와 어드레스 계산단계 (525)로부터의 관련 어드레스는 SRAM 단계(536) 동안 캐시 서브시스템 (130)에 병렬로 보내진다.
벡터 프로세서(120)의 바람직한 실시예에서, 각 명령은 32비트 길이로 도 8 에 도시된 9 포맷 중 하나의 포맷을 가지며, REAR, REAI, RRRM5, RRRR, RI, CT, RRRM9, RRRM*, 및 RRRM9** 레벨이 붙여져 있다. 별첨 E는 벡터 프로세서 (120)에 대한 명령 세트에 대하여 설명한다.
유효 어드레스를 결정할 때 스칼라 레지스터를 사용하는 몇개의 로드, 기억, 및 캐시 연산은 REAR 포맷을 갖는다. REAR-포맷 명령은 00Ob인 비트29-31에 의해 식별되며 스칼라 레지스터에 대한 2레지스터 번호(SRb,SRi)와 비트 D에 달려있는 스칼라 또는 벡터 레지스터 일 수 있는 레지스터의 레지스터 번호(Rn)에 의해 식별되는 3오퍼랜드를 갖는다. 뱅크비트 B는 레지스터(Rn)에 대한 뱅크를 식별하거나 또는 디폴트 벡터 레지스터 사이즈가 더블 사이즈인 경우 벡터 레지스터(Rn)가 더블 사이즈 벡터 레지스터인 지를 지시한다. OP-코드 필드(Opc)는 오퍼랜드에 실행되는 연산을 식별하며, 필드(TT)는 로드 또는 기억과 같은 전송 타입을 가리킨다.
전형적인 REAR-포맷 명령은 스칼라 레지스터(SRb,SRi)의 내용을 가산함에 의해 결정되는 어드레스로부터 레지스터(Rn)를 로드하는 명령(VL)이다. 만약 비트 A가 설정된 경우 계산된 어드레스는 스칼라 레지스터(SRb)에 기억된다.
REAI-포맷 명령은 필드(IMM)의 8비트 중간값이 스칼라 레지스터(SRi)의 내용 대신에 사용되는 것을 제외하고 REAR 명령과 동일하다. REAR 와 REAI 포맷은 데이터 엘리먼트 사이즈 필드를 갖지 않는다.
RRRM5 포맷은 2 소스 오퍼랜드와 1목적 오퍼랜드를 갖는 명령을 위한 것이다. 이들 명령은 3레지스터 오퍼랜드 또는 2레지스터 오퍼랜드와 5비트 중간값 중 하나를 갖는다. 별첨 E에 도시된 바와같이 필드(D,S,M)의 엔코딩은 제1소스 오퍼랜드(Ra)가 스칼라 또는 벡터 레지스터인 지를 판단하고, 제2소스 오퍼랜드 (Rb/IM5)가 스칼라 레지스터, 벡터 레지스터, 또는 5비트 중간값인 지를 판단하며, 목적 레지스터(Rd)가 스칼라 또는 벡터 레지스터인 지를 판단한다.
RRRR 포맷은 4 레지스터 오퍼랜드를 갖는 명령을 위한 것이다. 레지스터 번호(Ra,Rb)는 소스 레지스터를 지적한다. 레지스터 번호(Rd)는 목적 레지스터를 나타내며, 레지스터 번호(Rc)는 필드(Opc)에 달려있는 소스 또는 목적 레지스터 중 하나를 가리킨다. 모든 오퍼랜드는 레지스터(Rb)가 스칼라 레지스터인 것을 지시하도록 비트 S가 설정되어 있지 않는 경우 벡터 레지스터이다. 펄드(DS)는 벡터 레지스터에 대한 데이터 엘리먼트 사이즈를 가리킨다. 필드(0pc)는 32비트 데이터 엘리먼트에 대한 데이터 타입을 선택한다.
RI-포맷 명령은 중간값을 레지스터에 로드시킨다. 필드(IMM)는 18비트 까지의 중간값을 포함한다. 레지스터 번호(Rd)는 비트 D에 달려있는 스칼라 레지스더와 현재 뱅크의 벡터 레지스터 중 하나인 목적 레지스터를 가리킨다. 필드 (DS,F)는 각각 데이터 엘리먼트 사이즈와 타입을 가리킨다. 32비트 정수 데이터 엘리먼트인 경우 18비트 중간값은 레지스터(Rd)로 로드되기 전에 확장된 사인이다. 플로팅 포인트 데이터 엘리먼트인 경우, 비트 18, 비트 17-10, 및 비트 9-0는 각각 32비트 플로팅 포인트값의 사인, 지수, 및 실제 유효숫자(mantissa)를 가리킨다.
CT 포맷은 플로우 콘트롤 명령에 대한 것이며, op-코드 필드(Opc), 조건 필드(Cond), 23비트 중간값(IMM)을 포함한다. 조건 필드에 의해 나타내는 조건이 진실인 경우 브렌치가 취하여진다. 가능한 조건 코드는 "항상(a1ways)", "보다 더적은(1ess than)", "동일(equa1)", "이하 또는 동일(1ess than or equa1)", "보다 더 큰(greater than)", "동일하지 않은(not equal)", "보다 더크거나 또는 동일(greater than or equal)", 및 "오버플로우(overflow)#이다. 상태 및 제어 레지스터(VCSR)에서 비트(GT, EQ, LT, SO)는 조건을 평가하는데 사용된다.
포맷(RRRM9)은 3레지스터 오퍼랜드 또는 2레지스터 오퍼랜드와 9비트 중간값 중 어느 하나를 제공한다. 비트(D,S,M)의 조합은 어떤 오퍼랜드가 벡터 레지스터, 스칼라 레지스터, 또는 9비트 중간값인 지를 나타낸다. 필드(DS)는 데이터 엘리먼트 사이즈를 나타낸다. RRRM9*와 RRRM9** 포맷은 RRRM9 포맷의 특수한 케이스로서 연산코드 밀드(Opc)에 의해 구별된다. RRRM9* 포맷은 소스 레지스터 변호(Ra)를 조건코드(Cond)와 ID 필드로 대체하였다. RRRM9** 포맷은 중간값의 최상위 비트(MSB)를 조건코드(Cond)와 비트(K)로 대체하였다, RRRM9*와 RRRM9**에 대한 추가 설명이 조건부 이동 명령(VCM0V), 엘리먼트 마스크를 갖는 조건부 이동(CM0VM), 및 비교와 마스크 설정(CMPV) 명령과 관련하여 별첨 E에 되어있다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 이하의 특허칭구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.
[부록 A]
예시적인 실시예에서, 프로세서(110)는 ARM7 프로세서의 규격에 맞는 범용프로세서이다. ARM7 프로세서내의 레지스터내의 설명에 관한 ARM 아키택쳐 문헌 또는 ARM7 데이터 시트(1994년 12월에 발행된 문헌번호 ARM DDI 0020C)를 참조하자.
벡터 프로세서(120)와의 상호작용을 위해, 프로세서(110)는 벡터 프로세서를 개시 및 징지시키고, 동기를 포함한 벡터 프로세서 상태를 테스트하며, 벡터 프로세서(120)내의 스칼라/특수 레지스터로부터의 데이터를 프로세서(1l0)내의 범용 레지스터측으로 전송하고, 일반 레지스터로부터의 데이터를 벡터 프로세서 스칼라/특수 레지스터측으로 전송하게 된다. 이러한 전송을 위해서는 중개자로서 메모리를 필요로 한다.
표 A1 에는 벡터 프로세서의 상호작용을 위한 ARM7 명령 세트의 확장에 대해 설명되어 있다.
[표 A1]
ARM7 명령 세트 확장
표 A2 에는 ARM 7의 예의가 리스트되어 있으며, 이들 예의는 폴팅 명령을 수행하기 전에 검출 및 보고된다. 예의 벡터 어드레스는 16진수 표기로 주어진다.
[표 A2]
다음에 ARM7 명령 세트에 대한 확장의 신택스에 대해 설명한다. 용어 설명 및 명령 포맷에 관한 ARM 아키택쳐 문헌 또는 ARM7 데이터 시트(1994년 12윌에 발행된 문헌 번호 ARM DDI 0020C)를 참조하자.
상기 ARM 아키택쳐는 코프로세서 인터페이스을 위한 3가지 명령 포맷을 제공한다.
1. 코프로세서 데이터 연산(CDP)
2. 코프로세서 데이터 전송(LDC, STC)
3. 코프로세서 레지스터 전송(MRC, MCR)
MSP 아키택쳐 확장은 3가지의 형태를 모두 사용한다. 상기 코프로세서의 데이터 연산 포맷(CDP)은 ARM7측으로 다시 전송할 필요가 없는 연산을 위해 사용된다.
CDP 포맷
상기 CDP 포맷의 필드는 다음과 같은 규약을 가지고 있다:
코프로세서 데이터 전송 포맷(LDC, STC)은 벡터 프로세서의 레지스터의 서브세트를 메모리에 직접 로드 또는 기억하는데 사용된다. 상기 ARM7 프로세서는 워드 어드레스를 공급하는 일을 하며, 상기 벡터 프로세서는 데이터를 공급 또는 수신하고 전송된 워드의 개수를 제어한다. 보다 상세한 것은 ARM7 데이터 시트를 참조하자.
LDC, STC 포맷
상기 포맷의 필드는 다음 규약을 가지고 있다 :
상기 코프로세서 레지스터 전송 포맷(MRC,MCR)은 ARM7 과 벡터 프로세서 사이에서 직접 정보를 통신하는데 사용된다. 이 포맷은 ARM7 레지스터와 벡터 프로세서 스칼라 또는 특수 레지스터간의 이동에 사용된다.
MRC, MCR 포맷
상기 포맷의 필드는 다음의 규약을 가지고 있다:
확장 ARM 명령 설명
확장 ARM 명령에 대해서는 알파벳 순으로 설명한다.
CACHE 캐시 연산
포맷
어샘블러 신택스
STC{cond} pl5, cOpc, <Address>
CACHE{cond} Opc,<Address>
여기서, cond={eq, he, cs, cc, mi, pl, vs, vc, hi, Is, ge, It, gt, le, ai, nv}이고, Opc={O,1,3}. LDC/STC 포맷의 CRn 필드는 Opc를 특정하는데 사용되므로, 연산코드의 십진수 표기는 제1신택스에서 문자 'c'(즉, 0 대신에 c0를 사용함)로 시작해야 함에 주목하자. 어드레스 모드 신택스에 관한 ARM7 데이터 시트를 참조하자.
설명
이 명령은 Cond가 참일 때에만 수행된다. 0pc<3:0>은 다음의 연산을 특정한다:
연산
EA를 산출하는 방법에 대한 ARM7 데이터 시트를 참조하자.
예)
ARM7 보호 침해
INTVP 인터럽트 벡터 프로세서
포맷
어셈블러 신택스
CDP{cond} p7,1, c0, cO, cO
INTVP) { cond }
여기서, cond={eq, ne, cs, cc, mi, pl, vs, vc, hi ,1s, ge,lt,
gt, 1e, aㅣ, ns}
설명
이 명령은 Cond가 참일 때에만 수행된다.
이 명령은 벡터 프로세서를 정지시키기 위해 신호전송을 행한다.
ARM7은 벡터 프로세서의 정지를 기다리지 않고 다음 명령을 계속수행한다.
MFER 비지 대기 루프는 이 명령이 수행된 후에 벡터 프로세서가 정지되었는 지를 알아보기 위해 사용되어야 한다. 이 명령은 벡터 프로세서가 이미 VP_IDLE상태이면 어뗘한 영향도 미치지 않는다.
비트 19:12, 7:15 및 3:0은 예약되어 있다.
예외
벡터 프로세서 이용가능하지 않음
MFER 확장 레지스터로부터의 이동
포맷
어셈블러 신택스
MRC{cond} p7, 1, Rd, cP, cER, 0
MFER{cond} Rd, RNAME
여기서, cond={eq, he, cs, cc, mi, pl, rs, vc, hi, 1s, ge, 1t,
gt, le, al, nv}, Rd = {rO,...,r15}, P={O,1}, ER = {O,..15} 그리
고 RNAME는 아키택쳐적으로 특정된 레지스터 니모닉(즉, PERO 또는
CSR)을 의미한다.
설명
이 명령은 Cond가 참일 때만 수행된다. ARM7 레지스터(Rd)는 아래
의 표에 나타낸 바와같이 P:ER<3:0>으로 특정된 확장 레지스터(ER)
로부터 이동한다. 확장 레지스터의 설명에 대해서는 섹션 1.2를 참조하자.
비트 19:17 및 7:5는 예약되어 있다.
예의
사용자 모드중에 PERx를 억세스하고자할 때 보호 침해
M6FVP 벡터 프로세서로부터의 이동
포맷
어셈블러 신택스
MRC{cond} p7,1, Rd, Crn, CRm,0
MFVP{cond} Rd, RNAME
여기서, cond={eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt,
gt, le, al, nv}, Rd = {r0,...,r15}, CRn={c0,...c15}, CRm =
{cO,..c15} 그리고 RNAME는 아키택쳐적으로 특정된 레지스터 니모닉
(즉, SP0 또는 VCS)을 의미한다.
설명
이 명령은 Cond가 참일 때만 수행된다. ARM7 레지스터(Rd)는 벡터
프로세서의 스칼라/특수 레지스터 CRn<1:0>:CPm<3:0>으로부터 이동
된다. 레지스터 전송을 위한 벡터 프로세서 레지스터 번호 할당에 대해서는 섹션 3.2.3를 참조하자.
CRn<3:2> 뿐만 아니라 비트 7.5도 예약되어 있다.
아래에 벡터 프로세서 레지스터 맵이 나타내어져 있다. 벡터 프로세
서 특수 레지스터(SP0-SP15)에 관해서는 표 15를 참조하자.
SR0는 항상 0인 32 비트로서 판독하며, 이에 대한 기록은 무시된다.
예외
벡터 프로세서 이용 불가능
MTER 확장 레지스터측으로의 이동
포맷
어셈블러 신택스
MRC{cond} p7, l, Rd, cP, cER, 0
MFER{cond} Rd, RNAME
여기서, cond={eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt,
gt, le, al, nv}, Rd = {r0,...,r15}, P={O,1}, ER = {O,..15} 그리
고 RNAME는 아키택쳐적으로 특정된 레지스터 니모닉(즉, PERO 또는
CSR)을 의미한다.
설명
이 명령은 Cond가 참일 때만 수행된다. ARM7 레지스터(Rd)는 아래
표에 나타낸 바와같이, P:ER<3:0>로 특정된 확장 레지스터(ER)로부
터 이동된다.
비트 19:17 및 7:5는 예약되어 있다.
예외
사용자 모드중에 PERx를 억세스하고자 할 때 보호 침해
MTVP 벡터 프로세서측으로의 이동
포맷
어셈블러 신택스
MRC{cond} p7. l. Rd. Crn. CRm. 0
MFVP{cond} Rd. RNAME
여기서, cond={eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt,
gt, le, al, nv}, Rd = {r0,...r15}, CRn={c0,...c15}, CRm =
{cO,..c15} 그리고 RNAME는 아키택쳐적으로 특정된 레지스터 니모닉
(즉, SPO 또는 VCS)을 의미한다.
설명
이 명령은 Cond가 참일 때만 수행된다. ARM7 레지스터(Rd)는 벡터
프로세서의 스칼라/특수 레지스터 CRn<1:0>:CPm<3:0>으로부터 이동
된다.
CRn<3:2> 뿐만 아니라 비트 7:5도 예약되어 있다.
아래에 벡터 프로세서 레지스터 맴이 나타내어져 있다.
예의
벡터 프로세서 이용가능하지 않음
PFTCH 프리패치
포맷
어셈블러 신택스
MRC{cond} pl5, 2,<Address>
MFTCH{cond} <Address>
여기서, cond={eq, he, cs, cc, mi, pl, rs, vc, hi, Is, ge, lt,
gt,le, al, nv}. 어드레스 모드 신택스에 관한 ARM7 데이터 시트
를 참조하자.
설명
이 명령은 Cond가 참일 때만 수행된다. EA에 의해 특정된 캐시 라
인은 ARM7 데이터 캐시측으로 프리패치된다.
연산
EA가 산출되는 방법에 관해서는 ARM7 데이터 시트를 참조하자.
예외 : 없음
STARTVP 시작 벡터 프로세서
포맷
어셈블러 신택스
CDP{cond} p7, 2, c0, c0, c0
STARTVP{cond}
여기서, cond={eq, he, cs, cc, mi, pl, vs, vc, hi, Is, ge, lt,
gt, le, al, nv}.
설명
이 명령은 Cond가 참일 때만 수행된다. 이 명령은 수행을 개시하도
록 벡터 프로세서측으로 신호전송을 행하고, VISRC<vjp>와
VISRC<vip>를 자동적으로 클리어시킨다. ARM7는 벡터 프로세서
가 수행을 개시하는 것을 기다리지 않고 다음 명령을 계속 수행한다.
상기 벡터 프로세서의 상태는 이 명령이 수행되기 전에 원하는 상태
로 초기화되어야 한다. 이 명령은 상기 벡터 프로세서가 이미
VP_RUN 상태로 되어 있는 경우에는 어떠한 영향도 미치지 않는다.
비트 19:12, 7:5, 및 3:0은 예약되어 있다.
예의 : 벡터 프로세서 이용가능하지 않음.
TESTSET 테스트 및 세트
포맷
어셈블러 신택스
MRC{cond} p7, 0, Rd, c0, cER, 0
TESTSET{cond} Rd, RNAME
여기서, cond={eq, he, cs, cc, mi, pl, rs, re, hi, Is, ge, lt,
gt, le, al, nv}. Rd = {rO,...r15}, ER = {O,..15} 그리고 RNAME는
아키택쳐적으로 특정된 레지스터 니모닉(즉, UER1 또는 VASYNC)을 의
미한다.
설명
이 명령은 Cond가 참일 때만 수행된다. 이 명령은 UERx 내지 RD의
내용을 복귀시키고 UERx<30>을 1로 설정한다. ARM7 레지스터(15)
가 목적 레지스터로서 특정되면, UERx<30>은 CPSR의 Z비트에서 복
귀되며, 이에따라 짧은 비지 대기 루프가 수행될 수 있다.
현재, UER1만이 이 명령에 따라 동작하도록 정의되어 있다.
비트 19:12 및 7:5는 예약되어 있다.
예의 : 없음
[부록 B]
멀티미디어 프로세서의 아키택쳐(1OO)는 프로세서(11O)가 MFER 명령 및 MFER 명령으로 억세스하는 확장 레지스터를 정의하게 된다. 이 확장 레지스터는 특권 확장 레지스터와 사용자 확장 레지스터를 포함하고 있다.
상기 특권 확장 레지스터는 상기 멀티미디어 신호 프로세서의 연산을 제어하는데 주로 사용된다. 이들은 표 1B 에 나타내어져 있다.
[표 1B]
특권 확장 레지스터
상기 제어 레지스터는 MSP(1OO)의 연산을 제어한다. CTR의 모든 비트는 리 세트시 클리어된다. 상기 레지스터 정의는 표 2B 에 나타내어져 있다.
[표 2B]
CTR 정의
상기 상태 레지스터는 MSP(1OO)의 상태를 지시한다. 필드(STR)의 모든 비트는 리세트시 클리어된다. 상기 레지스터 정의는 표 3B 에 나타내어져 있다.
[표 3B]
STR 정의
프로세서 버전 레지스터는 프로세서의 멀티미디어 신호 프로세서 패밀리의 특정 프로세서의 특징 버전을 표시해준다.
벡터 프로세서 인터럽트 마스크 레지스터(VlMSK)는 프로세서(110)에 벡터 프로세서 예의를 보고하는 연산을 제어한다. VIMSK의 각각의 비트는 VISRC 레지스터의 대응 비트와 함께 세트되면 ARM7에 대해 인터럽트를 행하는 예의를 인에이블시킨다. 이는 벡터 프로세서 예외를 검출하는 방법에는 어떠한 영향도 미치지 않고, 다만 상기 예외가 ARM7에 대해 인터럽트를 걸어야 하는지에만 영향을 미치게 된다. VIMSK의 모든 비트는 리세트시 클리어된다. 레지스터 정의는 표 4B에 나타내어져 있다.
[표 4B]
VlMSK 정의
ARM7 명령 어드레스 브레이크포인트 레지스터는 ARM7 프로그램 디버깅시 이를 지원한다. 레지스터 정의는 표 5B 에 나타내어져 있다.
[표 5B]
AIABR 정의
ARM7 데이터 어드레스 브레이크포인트 레지스터는 ARM7프로그램 디버깅시이를 지원한다. 레치스터 정의는 표 6B 에 나타내어져 있다.
[표 6B]
ADABR 정의
상기 스크래치 패드 레지스터는 캐시 서브시스템(130)의 SRAM을 사용하여 형성된 스크래치의 어드레스와 사이즈를 구성한다. 레지스터 정의는 표 7B에 나타내어져 있다.
[표 7B]
SPREG 정의
사용자 확장 레지스터는 프로세서(110,l20)의 동기에 주로 사용된다. 사용가 확장 레지스터는 비트 30에 맵핑된 1비트만을 가질 수 있도록 현재 정의되어 있고, "MFER R15, UERx"과 같은 명령은 예컨대 비트 값을 Z플래그측으로 복귀시킨다. 비트 UERx<31> 및 UERx<29:0>는 항상 제로로 판독된다. 사용자 확장 레지스더는 표 8B 에 설명되어 있다.
[표 8B]
사용자 확장 레지스터
표 9B 는 파워온 리세트시의 확장 레지스터의 상태를 나타낸다.
[표 9B]
확장 레지스터 파워온 상태
[부록 C]
벡터 프로세서(120)의 아키택쳐 상태는 32개의 32 비트 스칼라 레지스터; 32 개의 288 비트 벡터 레지스터의 2개의 뱅크; 한쌍의 576 비트 벡터 어큐물레이터 레지스터; 한세트의 32 비트 특수 레지스터를 포함하고 있다. 스칼라 레지스터, 벡터 레지스터 및 어큐물레이터 레지스터는 범용 프로그래밍을 위한 것으로, 다수의 다른 데이터 형태를 지원한다.
이 섹션 및 다음의 섹션에서는 다음의 표기를 사용한다: VR은 벡터 레지스터를 나타내고, VRi는 제i벡터 레지스터(제로 오프셋)을 나타내며, VR[i]는 벡터 레지스터(VR)의 제i데이터 엘리먼트를 나타내고, VR<a:b>는 벡터 레지스터 (VR)의 비트(a) 내지 비트(b)를 나타내며, VR[i]<a:b>는 벡터 레지스터 (VR)의 제i데이터 엘리먼트의 비트(a) 내지 비트(b)를 나타낸다.
벡터 아키택쳐는 하나의 벡터 레지스터내의 다수의 엘리먼트DML 데이터 종류와 사이즈의 추가된 치수를 가지고 있다. 벡터 레지스터는 고정된 사이즈를 가지고 있으므로, 유지될 수 있는 데이터 엘리먼트의 개수는 상기 엘리먼트의 사이즈에 좌우된다. MSP 아키택쳐는 표 1C 에 나타낸 바와같이 5가지의 엘리먼트 사이즈를 정의하고 있다.
[표 1C]
데이터 엘리먼트 사이즈
상기 MSP 아키택쳐는 특정된 데이터 종류와 명령 사이즈에 따라 벡터 데이터를 해석한다. 현재, 대다수 산술 명령의 바이트, 바이트9, 하프워드 및 워드 엘리먼트 사이즈에 대해서는 두 보수(정수) 포맷이 지원되고 있다. 또한, IEEE 74 단일 정밀도 포맷은 대부분의 산술 명령의 워드 엘리먼트 사이즈가 지원되고 있다.
명령 시퀀스가 의미있는 결과를 초래하는 한, 프로그래머는 원하는 방식으로 데이터를 자유로이 해석하게 된다. 예컨대, 프로그래머는 프로그램이 "거짓" 오버플로우 결과를 처리할 수 있는 한, 부호없는 8비트 수을 저장하는데에 바이트9 사이즈를 자유로이 사용하고 바이트 사이즈 데이터 엘리먼트의 부호없는 8비트 수를 마찬가지로 자유로이 저장하고 제공된 두 보수 산술 명령을 사용하여 이들에 대해 연산을 자유로이 할 수 있다.
SR0 내지 SR31로 표기된 32개의 스칼라 레지스터가 존재한다. 이들 스칼라 레지스터는 폭이 32비트이고 미확정된 사이즈중 어느 한 사이즈의 1개 데이터 엘리먼트를 포함할 수 있다. 스칼라 레지스터(SRO)는 이 레지스터(SRO)가 0으로 된 32 로서 언제나 판독할 수 있고 레지스터(SRO)에의 기록이 무시된다는 점에서 특별하다 할 수 있다. 바이트형, 바이트9형 및 하프워드 데이터 형은 미확정된 값을 가진 최상위비트를 가지고 있는 스칼라 레지스터의 최하위비트에 저장된다.
상기 레지스터들은 데이터 종류 지시기를 가지고 있지 않으므로, 프로그래머는 각각의 명령에 사용되는 레지스터의 데이터 종류를 알고 있어야 한다. 이는 32 비트 레지스터가 32비트 레지스터를 포함하고 있는 것으로 가정되는 다른 아키택쳐와는 다르다. MSP 아키택쳐는 데이터 종류 A의 결과가 데이터 종류 A에 대해 미확정된 비트만을 수정하게 됨을 지시해준다. 예컨대, 바이트9 가산의 결과는 32 비트 목적 스칼라 레지스터의 하위 9비트만을 수정하게 된다. 상위 23비트의 값은 명령에 대해 달리 언급되지 않으면 미확정된 상태이다.
64 벡터 레지스터는 각각 32비트 레지스터를 가지고 있는 두 뱅크로 구성되어 있다, 뱅크 0은 제1 32레지스터를 포함하고 있고, 뱅크 1은 제2 32비트 레지스터를 포함하고 있다. 이들 두 뱅크는, 하나의 뱅크는 현재 뱅크로서 설정되고 다른 하나의 뱅크는 교체 뱅크로 설정되도록 하여 사용된다. 상기 교체 뱅크의 벡더 레지스터를 억세스할 수 있는 로드/기억 명령 및 레지스더 이동 명령을 제외한 모든 벡터 명령은 디폴트로서 현재 뱅크내의 레지스터를 사용한다. 벡터 제어 및 상태 레지스터(VCSR)의 CBANK 비트는 뱅크 O 또는 뱅크 1를 현재 뱅크로 설정하는데 사용된다. (다른 뱅크는 교체 뱅크가 된다.) 현재 뱅크내의 벡터 레지스터는 VRO 내지 VR31 이라고 하고 교체 뱅크내의 벡터 레지스터는 VRA0 내지 VRA31이라고 한다.
또한, 두 뱅크는 개념적으로는 576 비트 각각의 더블 사이즈의 32개 벡터 레지스터를 제공할 수 있도록 결합될 수 있다. 제어 레지스터(VCSR)의 VEC 64 비트는 이 모드를 나타낸다. VEC 64 모드에는 현재 뱅크 및 교체 뱅크가 존재하지 않으며, 벡터 레지스터 번호는 두 뱅크로부터의 대응하는 쌍의 288 벡터 비트 벡터를 나타낸다. 즉,
VRi <575:0>=VRli<287:0>:VROi<287:0>
여기서 VROi 및 VRli는 각각 뱅크 1 및 뱅크 0에서 레지스터 번호(VRi)를 가지고 있는 벡터 레지스터를 나타낸다. 더블 사이즈 벡터 레지스터는 VRO 내지 VR31로 표기되어 있다.
상기 벡터 레지스터는 표 2C 에 나타낸 바이트, 바이트9, 하프워드 또는 워드 사이즈의 다수 엘리먼트를 수용할 수 있다.
[표 2C]
벡터 레지스터당 엘리먼트 개수
하나의 벡터 레지스터내의 엘리먼트 사이즈간의 혼합은 지원되지 않는다.
바이트 9 엘리먼트 사이즈를 제외하고는 288 비트중 256 비트만이 사용된다. 특히 모든 제9비트는 사용되지 않는다. 바이트, 하프워드 및 워드 사이즈중 사용되지 않는 32 비트는 예약되어 있으며, 프로그래머는 이들 값에 대해 어떠한 가정도 할 수 없다.
벡터 어큐물레이터 레지스터는 목적 레지스터의 결과보다 높은 정확도를 가지고 있는 중간 결과를 기억장치에 제공하게 된다. 상기 벡터 어큐물레이터 레지스터는 4개의 288 비트 레지스터, 즉 VAC1H, VAClL,VACOH, VACOL로 구성되어 있다.
VAC0H, VACOL 쌍은 디폴트에 의해 3개의 명령에 의해 사웅된다. VEC 64 모드에서만, VAClH, VAClL 쌍이 64 가지의 바이트9 벡터 연산을 모방하는데 사용된다.
소스 벡터 레지스더와 동일한 개수의 엘리먼트를 가지고 있는 확장된 정확도 결과를 생성하기 위해, 확장 정밀도 엘리먼트는 표 3C 에 나타낸 바와같이 한쌍의 레지스터에 걸쳐서 절감된다.
[표 3C]
벡터 어큐물레이터 포맷
VAC1H,VAC1L 쌍은 VEC 64 모드에서만 사용될 수 있으며, 이때 엘리먼트의 개수는 바이트9(및 바이트), 하프 워드, 및 워드의 경우 각각 64,32, 또는 16이 될 수 있다.
메모리로부터 직접 로드될 수 있거나 메모리에 직접 저장될 수 있는 33개의 특수 레지스터가 있다. RASR0 내지 RASR15라고 하는 16개의 특수 레지스터는 내부 복귀 어드레스 스택을 형성하고 있고 그리고 서브루틴 호출 명령 및 서브루틴 복귀명령에 의해 사용된다. 17개 이상의 32비트 특수 레지스터가 표 4C 에 나타내어져 있다.
[표 4C]
특수 레지스터
벡터 제어 및 상태 레지스터(VCSR)에 관한 정의는 표 C. 5에 나타내어져 있다. 표 C.5: VCSR 정의
[표 5C]
벡터 프로그램 카운터 레지스터(VPC)는 벡터 프로세서(120)에 의해 수행될 다음 명령의 어드레스이다. ARM7 프로세서(110)는 벡터 프로세서(120)의 연산을 개시시키기 위해 STARTVP 명령을 발생하기 전에 레지스터(VPC)를 로드해야 한다.
벡터 예의 프로그램 카운터(VEPC)는 가장 최근의 예외를 가장 일으킬 것 같은 명령의 어드레스를 지정한다. MSP(100)는 정확한 예외를 지원하지 않으며, 따라서 "가장 일으킬 것 같은"이라는 용어를 사용한다.
벡터 인터럽트 공급 레지스터(VISRC)는 인터럽트 공급원을 ARM7 프로세서 (110)에 특정한다. 적절한 비트(들)는 예외(들)의 검출시에 하드웨어에 의해 설정된다. 소프트웨어는 벡터 프로세서(120)가 수행을 재개하기 전에 레지스터 (VISRC)를 클리어시켜야 한다. 레지스터(VISRC)에서 설정된 어느 비트에 의해 벡터 프로세서(120)는 상태 VP_lDLE로 들어간다. 대응하는 인터럽트 인에이블 비트가 VIMSK로 설정되면, 프로세서(110)에 대한 인터럽트가 신호전송된다. 표 6C 에는 레지스터(VISRC)의 내용이 정의되어 있다.
[표 6C]
VISRC 정의
벡터 인터럽트 명령 레지스터(VIINS)는 VCINT 명명 또는 VCJOIN 명령이 ARM47 프로세서(11O)를 인터럽트하기 위해 수행되면 VCINT 명령 또는 VCJOIN 명령으로 갱신된다.
벡터 카운트 레지스터(VCR1,VCR2,VCR3)는 감소 및 브랜치 명령(VDlCB, VD2CBR, VD3CBR)을 위한 것으로, 수행될 루프의 카운트로 초기화된다. 명령 (VDlCBR)이 수행되면, 레지스터(VCRl)는 1만큼 디크리멘트된다. 카운트 값이 제로가 아니고 상기 명령에 특정된 조건이 VFLAG와 일치하면, 브랜치가 취해진다. 일치하지 않으면, 브랜치는 취해지지 않는다. 레지스터(VCRl)는 두 경우에 있어서 1만큼 디크리멘트된다. 레지스터(VCR2,VCR3)도 동일한 방법으로 사용된다.
벡터 글로벌 마스크 레지스터(VGMRO)는 VEC64 모드에서 영향을 받게 되는 VR<575:288>내의 엘리먼트와 VEC64 모드에서의 VR<287:0>내의 엘리먼트를 지시하는데 사용된다. 레지스터(VGMRO)의 각각의 비트는 벡터 목적 레지스터의 9비트의 갱신을 제어한다. 구체적으로, VGMR0<i>는 VEC32모드에서는 VRd<9i+8:9i>의 갱신을, 그리고 VEC64모드에서는 VROd<9i+8:9i>의 갱신을 제어한다. VROd는 VEC64 모드에서 뱅크 0의 목적 레지스터를 나타내고, VRd는 VEC32 모드에서 뱅크 0 또는 뱅크 1이 될 수 있는 현재 뱅크의 목적 레지스터를 의미함에 주목하자. 벡터 글로별 마스크 레지스터(VGMRO)는 VCMOVM 명령을 제외한 모든 명령의 수행에 사용된다.
벡터 글로벌 마스크 레지스터(VGMR1)는 VEC64 모드에서 영향을 받게 되는 VR<575:288>내의 엘리먼트를 지시하는데 사용된다. 레지스터(VGMR1)의 각각의 비트는 뱅크 1의 벡터 목적 레지스터의 9비트의 갱신을 제어한다. 구체적으로, VGMR<i>은 VRld<9i+8:9i>의 갱신을 제어한다. 레지스터(VGRM1)는 VEC32모드에서는 사용되지 않지만, VEC64모드에서는 VCMOVM 명령을 제외한 모든 명령의 수행에 영향을 미친다.
벡터 오버플로우 레지스터(VORO)는 벡터 산술 연산 후에 오버플로우 결과를 포함하고 있는 VEC64 모드에서 VR<287:0>내의 엘리먼트를 지시하는데 사용된다. 이 레지스터는 스칼라 산술 연산에 의해 수정되지 않는다. 세트된 비트 VORl<i>는 바이트 또는 바이트 9의 제i엘리먼트, 하프워드의 제(i idiv 2) 엘리먼트, 또는 워드 데이터형 연산의 제(i idiv 4)엘리먼트가 오버플로우 결과를 포함하고 있음을 지시한다. 예컨대, 비트 1과 비트 3은 제1하프워드 및 워드 엘리먼트의 오버플로우를 각각 지시하도록 실정되게 된다. VORO의 비트의 맵핑은 VGMRO 또는 VGMR1의 비트의 맵핑과는 다르다.
벡터 오버플로우 레지스터(VORl)는 벡터 산술 연산 후에 오버플로우 결과를 포함하고 있는 VEC64 모드에서 VR<575:288>내의 엘리먼트를 지시하는데 사용된다. 레지스터(VOR1)는 VEC32 모드에서 사용되지 않으며, 또는 스칼라 산술 연산에 의해 수정되지도 않는다. 세트된 비트 VOR1<i>는 바이트 또는 바이트 9의 제i엘리먼트, 하프워드의 제(i idiv 2) 엘리먼트, 또는 워드 데이터형 연산의 제(i idiv 4)엘리먼트가 오버플로우 결과를 포함하고 있음을 지시한다. 예컨대, 비트 1과 비트 3은 각각 VR<575:288>에서 제1하프워드와 워드 엘리먼트의 오버플로우를 지시할 수 있도록 세트되게 된다. VOR1의 비트 맵핑은 VGMRO 또는 VGMR1의 비트 맵핑과는 다르다.
벡터 명령 어드레스 브레이크포인트 레지스터(VIABR)는 벡터 프로그램 디버깅시에 이를 지원한다. 이 레지스터 정의는 표 7C 에 나타내어져 있다.
[표 7C]
VIABR 정의
벡터 데이터 어드레스 브레이크포인트 레지스터(VDABR)는 벡터 프로그램의 디버깅시 이를 지원한다. 표 8C 에 레지스터 정의가 나타내어져 있다.
[표 8C]
VDABR 정의
벡터 이동 마스크 레지스터(VMMRO)는 모드 명령에 대해 VCSR<SMM>=1일 때뿐만 아니라 언제나 VCMOVM에 의해 사용된다. 레지스터(VMMRO)는 VEC32 모드에서 영향을 받게 될 목적 벡터 레지스터의 엘리먼트, 및 VEC64 모드에서 VR<287:0>내의 엘리먼트를 지시한다. VMMR0의 각각의 비트는 벡터 목적 레지스터의 9비트의 갱신을 제어한다. 구체적으로, VMMR0<i>는 VEC32 모드에서 VRd<9i+8:9i>의 갱신 및 VEC64 모드에서 VROd<9i+8:9i>의 갱신을 제어한다. VROd는 VEC64모드에서 뱅크 0의 목적 레지스터를 나타내고, 이 VRd는 VEC32 모드에서 뱅크 0 또는 뱅크 1이 될 수 있는 현재 뱅크의 목적 레지스터를 의미한다.
벡터 이동 마스크 레지스터(VMMRl)는 모든 명령에 대해 VCSR<SMM>=1일 때뿐만 아니라 언제나 VCMOVM에 의해 사용된다. 레지스터(VMMR1)는 VEC32 모드에서 영향을 받게 될 VR<575:288>내의 엘리먼트를 지시한다. VMMR1의 각각의 비트는 뱅크 1의 벡터 목적 레지스터의 9 비트에 대한 갱신을 제어한다. 구체적으로, VGMRO1<i>는 VRd<9i+8:9i>의 갱신 제어한다. 레지스터(VGMR1)는 VEC32 모드에서 사용되지 않는다.
벡터 및 ARM7 동기 레지스터(VASYNC)는 프로세서(110)와 프로세서(120)사이에 생산자/소비자 형태의 동기를 제공한다. 현재, 비트(30)만이 정의되어 있다. ARM7 프로세스는 명령(MFER,MTER,TESTSET)을 사용하여 레지스터(VASYNC)를 억세스 할 수 있고, 벡터 프로세서(120)는 상태 VP_RUN 또는 상태 VP_IDLE에 있다. 레지스터(VASYNC)는 TVP 또는 MFVP 명령을 통해 ARM7 프로세스에 억세스할 수 없는데, 이는 이들 명령이 제1 16 벡터 프로세서의 특수 레지스터에 대해 억세스할 수 없기 때문이다. 벡터 프로세스는 VMOV 명령을 통해 레지스터(VASYNC)를 억세스할 수 있다.
표 9C 는 파워온 리세트시 상기 벡터 프로세서의 상태를 나타낸다.
[표 9C]
벡터 프로세서 파워온 리세트 상태
상기 특수 레지스터는 상기 벡터 프로세서가 명령을 수행할 수 있기 전에 ARM 프로세서(110)에 의해 초기화된다.
별첨 D
각 명령은 소스와 목적 오퍼랜드의 데이터 타입을 의미하거나 또는 지정한다. 몇가지 명령은 소스에 대하여 하나의 데이터 타입을 취하며 결과에 대하여 상이한 데이터 타입을 생성하는 의미를 갖는다. 이 별첨은 바람직한 실시예에서 지지되는 데이터 타입을 설명한다. 이 출원의 표 1에서는 지지가 되는 데이터 타입 int8, int9, int16, int32, 및 플로트(f1oat)에 대하여 설명하였다. 서명 없는 정수 포맷(unsigned integer format)은 지지되지 않으며 그리고 그것의 서명되지 않은 정수값은 먼저 사용되기 전에 2의 보수 포맷으로 변환되어야 한다. 프로그래머는 오버플로우를 적절히 처리하는한 그의 선택에 따른 어떤 다른 포맷 또는 서명되지 않은 정수 포맷을 갖는 산술명령을 자유롭게 사용할 수 있다. 아키택쳐는 단지 2의 보수 정수의 오버플로우 및 32비트 플로팅 포인트 데이터 타입을 정의한다. 아키택처는 서명 없는 오버플로우를 검출하는데 필요한 8.9,16, 또는 32비트 연산의 캐리아웃을 검출하지 않는다.
표 1D 는 로드(load) 연산에 의해 지지되는 데이터 사이즈를 보여준다.
[표 1D]
로드 연산에 의해 지지되는 데이터 사이즈
아키택쳐는 데이터 타입 경계에 존재하도록 메모리 어드레스 정렬을 지정한다. 즉, 바이트에 대하여는 어떤 정렬 요구사항이 없다. 하프워드에 대한 정렬 요구사항은 하프워드 경계이다. 워드에 대한 정렬 요구사항은 워드 경계이다.
표 2D 는 스토어(store) 연산에 의해 지지되는 데이터 사이즈를 보여준다.
[표 2D]
스토어 연산에 의해 지지되는 데이터 사이즈
일 이상의 댐(dam) 타입은 스칼라 또는 벡터로 레지스터에 맵핑되어 있기 때문에 약간의 데이터 타입에 대하여 어떤 정의되지 않은 결과를 갖는 목적 레지스터에 비트가 존재할 수 있다. 실제로 벡터 목적 레지스터에 대한 바이트9 데이터 사이즈 연산과 스칼라 목적 레지스터에 대한 워드 데이터 사이즈 연산 이외에는 목적 레지스터에서 그의 값이 연산에 의해 미정의된 비트들이 존재한다. 이들 비트를 위하여 아키택쳐는 그들값이 미정의 상태로 되도록 지정한다. 표 3D 는 각 데이터 사이즈에 대해 미정의된 비트를 보여준다.
[표 3D]
데이터 사이즈에 대한 미정의 비트
프로그래머는 프로그래밍시에 소스 및 목적 레지스터 또는 메모리의 데이터 타입을 알고 있어야 한다. 하나의 엘리먼트 사이즈로부터 다른 엘리먼트 사이즈로 데이터 타입 변환은 잠정적으로 벡터 레지스터에 상이한 수의 엘리먼트가 기억되게 한다. 예를들어, 하프워드를 워드 데이터 타입으로 벡터 레지스터의 변환은 동일한 수의 변환된 엘리먼트를 기억하는데 2개의 레지스터를 필요로한다. 역으로, 벡터 레지스터에서 사용자 정의된 포맷을 가질 수 있는 워드 데이터 타입으로부터 하프 워드 포맷으로의 변환은 벡터 레지스터의 1/2에 동일한 수의 엘리먼트와 다른 1/2에 나머지 비트를 생성한다. 어느 하나의 경우에 데이터 타입의 변환은 소스 엘리먼트와 상이한 사이즈를 갖는 변환된 엘리먼트의 정렬을 갖는 구조적인 발행(issue)를 생성한다.
원칙적으로 MSP 아키택쳐는 결과로서 엘리먼트의 수를 은연중에 변경하는 연산을 제공하지 않는다. 아키택쳐는 프로그래머가 목적 레지스터에서 엘리먼트의 수를 변경시키는 순서를 알고 있다고 판단한다. 아키택쳐는 단지 하나의 데이터 타입으로부터 동일한 사이즈의 다른 데이터 타입으로 변환하는 연산을 제공하며, 하나의 데이터 타입에서 다른 사이즈의 다른 데이터 타입으로 변환할 때 프로그래머가 데이터 사이즈의 차이를 조정하는 것을 요구한다.
별첨 E에 설명되는 VSHFLL 및 VUNSHFLL과 같은 특수한 명령은 제1사이즈를 갖는 벡터로부터 제2데이터 사이즈를 갖는 제2벡터로 변환을 단순하게 해준다. 벡터(VRa)에서 예를들어 더작은 엘리먼트 사이즈의 int8에서 예를들어 더큰 사이즈의 int16로 2의 보수 데이터 타입을 변환하는데 포함된 기본 단계는 다음과 같다.
1. 다른 벡터(VRb)를 갖는 VRa에 있는 엘리먼트를 바이트 데이터 타입을 사용하여 2 벡터(VRc: VRd)로 분할한다(shuffle). VRa에 있는 엘리먼트는 더블 사이즈 레지스터(VRc: VRd)에 있는 int16 데이터 엘리먼트의 하위 바이트로 이동시키며, 그 값이 관계가 없는 VRb의 엘리먼트는 VRc: VRd의 상위 바이트로 이동시킨다. 이 연산은 각 엘리먼트의 사이즈를 바이트에서 하프워드로 더블화시키는 동안 VRa 엘리먼트의 1/2을 VRc로 그리고 나머지 1/2을 VRd로 효과적으로 이동시킨다.
2. 8비트로 VRc: VRd에 있는 엘리먼트를 산술 시프트시켜서 그들을 사인 확장시킨다.
벡터(VRa)에서 예를들어 더큰 엘리먼트 사이즈의 int16에서 예를들어 더작은 사이즈의 int8로 2의 보수 데이터 타입을 변환하는데 포함된 기본 단계는 다음과 같다.
1. int16 데이터 타입의 각 엘리먼트가 바이트 사이즈로 표현될 수 있는 지를 보장하기 위하여 체크한다. 만약 필요한 경우 더작은 사이즈로 맞추기 위하여 양단의 엘리먼트를 세튜레이트(saturate)시킨다.
2. 다른 벡터(VRb)를 갖는 VRa에 있는 엘리먼트를 2 벡터(VRc: VRd)로 결합시킨다(unshuffle). VRa 와 VRb에 있는 각 엘리먼트의 상위 1/2들을 VRc로 이동시키고 하위 1/2들을 VRd로 이동시킨다. 이것은 VRa의 모든 엘리먼트의 하위 1/2들을 VRd의 하위 1/2에 효과적으로 모으게 한다.
특수한 명령은 다음의 데이터 타입 변환에 제공된다: int32를 단일 정밀 플로팅 포인트로; 단일 정밀 플로팅 포인트를 고정 포인트로(X.Y 주해); 단일 정밀 플로팅 포인트를 int32로; int8을 int9로; int9를 intl6으로; 및 int16을 int9로.
벡터 프로그래밍에 여유도를 부여하기 위하여 대부분의 벡터 명령은 벡터 내에서 선택된 엘리먼트에 대해서만 연산을 하도록 엘리먼트 마스크를 사용한다. 벡터 글로벌 마스크 레지스터(Vector Global Mask Register: VGMRO, VGMR1)는 벡터 명령에 의해 벡터 이큐물레이터와 목적 레지스터에서 수정되는 엘리먼트를 식별한다. 바이트 및 바이트9 데이터 사이즈 연산을 위하여 VGMRO(또는 VGMR1)에서 32비트 각각은 연산될 엘리먼트를 식별한다. 세트 상태의 비트(VGMRO<i>)는 바이트 사이즈의 엘리먼트(i, 여기서 i는 0부터 31까지임)가 영향을 받게되는 것을 지시한다. 하프워드 데이터 사이즈 연산을 위하여 VGMRO(또는 VGMR1)에서 각 32비트쌍은 연산될 엘리먼트를 식별한다. 세트 상태의 비트(VGMR0<2i: 2i+1>)는 엘리먼트(i, 여기서 i는 0부터 15까지임)가 영향을 받게되는 것을 지시한다. 만약 VGMRO에서 한쌍중 단지 하나의 비트가 하프워드 데이터 사이즈 연산을 위해 세트된 경우 대응하는 바이트에서 단지 그 비트만이 수정된다. 워드 데이터 사이즈 연산을 위하여 VGMRO(또는 VGMR1)에서 각 4 비트 세트는 연산될 엘리먼트를 식별한다. 세트 상태의 비트(VGMR0<4i:4i+3>)는 엘리먼트(i, 여기서 i는 0부터 7까지임)가 영향을 받게되는 것을 지시한다. 만약 VGMR0에서 4비트 세트의 모든 비트가 워드 데이터 사이즈 연산을 위해 세트되지 않는 경우 대응하는 바이트에서 단지 그 비트만이 수정된다.
VGMRO 및 VGMR1은 벡터 레지스터를 벡터 또는 스칼라 레지스터 또는 VCMPV 명령을 사용한 즉시값과 비교함에 의해 세트될 수 있다. 이 명령은 특정된데이터 사이즈에 따라 마스크를 적절하게 세트한다. 스칼라 레지스터는 단지 하나의 데이터 엘리먼트를 포함하도록 정의되므로 스칼라 연산(즉, 목적 레지스터가 스칼라임)은 엘리먼트 마스크에 의해 영향을 받지 않는다.
벡터 프로그래밍에 여유도를 제공하기 위하여 대부분의 MSP 명령은 3형태의 벡터와 스칼라 연산을 지원한다. 그들은 다음과 같다:
1. 벡터 = 벡터 op 벡터
2. 벡터 = 벡터 op 스칼라
3. 스칼라 = 스칼라 op스칼라
스칼라 레지스터가 B 오퍼랜드로서 특정되어 있는 케이스 2의 경우에 스칼라 레지스터에서 단일 엘리먼트는 벡터 A 오퍼랜드 내에 다수의 엘리먼트를 매칭시키는데 요구되는 만큼 많이 복제된다. 복제된 엘리먼트는 특정된 스칼라 오퍼랜드에서 엘리먼트와 동일한 값을 갖는다. 스칼라 오퍼랜드는 스칼라 레지스터 또는 명령으로부터 즉시 오퍼랜드의 형태로 될 수 있다. 즉시 오퍼랜드인 경우에 만약 특정된 데이터 타입이 즉시 필드 사이즈가 유용한 것보다 더 큰 데이터 사이즈를 사용하는 경우 적당한 사인-확장이 가해진다.
많은 멀티미디어 응용에서 소스, 중간 및 최종 결과의 정밀성에 특별한 주의가 요구된다. 더욱이 정수 멀티플라이(integer mu1tiply) 명령은 2 벡터 레지스터에 기억될 수 있는 "2배 정밀" 중간 결과를 생성한다.
MSP 아키택쳐는 현재 8,9,16, 및 32 비트 엘리먼트에 대하여 2의 보수 정수 포맷과 32 비트 엘리먼트에 대하여 IEEE 754 단일 정밀 포맷을 지원한다. 오버 플로우는 특정된 데이터 타입에 의해 표현될 수 있는 가장 포지티브 또는 가장 네가티브 값 이상인 결과로 되도록 정의된다. 오버플로우가 발생할 때 목적 레지스터에 기록된 값은 유효 번호가 아니다. 언더플로우는 단지 플로팅 포인트 연산에 대해서만 정의된다.
만약 그 밖의 상태가 아니라면 모든 플로팅 포인트 연산은 비트 (VCSR<RMODE>에서 특정된 4 라운딩 모드 중에서 하나를 사용한다. 약간의 명령은 제로(라운드이븐) 라운딩 모드로부터 라운드 어웨이로서 알려진 것을 사용한다.
새튜레이션(Saturation)은 많은 멀티미디어 응용에서 중요한 기능이다. MSP 아키택쳐는 모든 4 정수 및 플로팅 포인트 연산에서 새튜레이션을 지원한다. 레지스터(VCSR)에서 비트(ISAT)는 정수 새튜레이션 모드를 특정한다. 또한 빠른 lEEE 모드로서 주지된 플로팅 포인트 새튜레이션 모드는 VCSR에서 FSAT 비트로 특정이 된다. 새튜레이션 모드가 인에이블될때 가장 포지티브 또는 가장 네가티브 값 이상으로 되는 결과는 각각 가장 포지티브 또는 가장 네가티브 값으로 세트된다. 오버플로우는 이 경우에 발생할 수 없으며, 오버플로우 비트는 세트될 수 없다.
표 4D 는 결함있는 명령을 실행하기 전에 검출되어 보고되는 정밀한 예외 (Precise Exception)에 대한 리스트를 보여준다.
[표 4D]
정밀한 예외
표 5D 는 결함있는 명령보다 프로그램 순서에서 뒤에 존재하는 어떤 번호의 명령을 실행한 후 검출되어 보고되는 부정밀한 예외(Imprecise Exception)에 대한 리스트를 보여준다.
[표 5D]
부정밀한 예외
별첨 E
벡터 프로세서에 대한 명령 세트는 표 1E 에 도시된 바와같이 11개 분류를 포함한다.
[표 1E]
벡터 명령 분류 종합.
표 2E 는 플로우 콘트롤(Flow Control) 명령에 대한 리스트를 보여준다.
[표 2E]
플로우 콘트롤 명령.
논리(Logical) 분류는 불(Boo1ean) 데이터 타입을 지원하며 엘리먼트 마스크에 의해 영향을 받는다. 표 3E 는 논리(Logic) 명령 리스트이다.
[표 3E]
논리 명령
시프트/로테이트(Shift/Rotate) 분류 명령은 int8, int9, int16 및 int32 데이터 타입(플로트 데이터 타입이 아님)를 연산하며, 엘리먼트 마스크에 의해 영향을 받는다. 표 4E 는 시프트/로테이트 분류 명령 리스트이다.
[표 4E]
시프트&로테이트 분류
산술(Arithmetic) 분류 명령은 일반적으로 int8, int9, int16, int32, 및 플로우 데이터 타입을 지원하며, 엘리먼트 마스크에 의해 영향을 받는다. 지원되지 않는 데이터 타입에 대한 특별한 제한에 대하여는 다음 각 명령의 상세한 설명을 참고하라. VCMPV 명령은 그것이 엘리먼트 마스크를 연산하므로 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 5E 는 산술 연산명령 리스트이다.
[표 5E]
산술 분류
MPEG 명령은 MPEG 엔코딩과 디코딩에 특히 적합한 명령 분류이나 다양한 방식으로 사용될 수 있다. MPEG 명령은 int8, int9, int16 및 int32 데이터 타입을 지원하며, 엘리먼트 마스크에 의해 영향을 받는다. 표 6E 는 MPEG 명령 리스트이다.
[표 6E]
MPEG 분류
각 데이터 타입 변환(Data Type Conversion) 명령은 특수한 데이터 타입을 지원하며, 아키택쳐가 레지스터에서 일 이상의 데이터 타입을 지원하지 않기 때문에 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 7E 는 데이터 타입 변환 명령 리스트이다.
[표 7E]
데이터 타입 변환 분류
인터-엘리먼트 산술(Inter-element Arithmetic) 분류 명령은 int8, int9, int16, int32, 및 플로우 데이터 타입을 지원한다. 표 8E 는 인터-엘리먼트 산술분류 명령 리스트이다.
[표 8E]
인터-엘리먼트 산술 분류
인터-엘리먼트 무브(Inter-element Move) 분류 명령은 바이트, 바이트9, 하프워드 및 워드 데이터 사이즈를 지원한다. 표 9E 는 인터-엘리먼트 무브 분류 명령 리스트이다.
[표 9E]
인터-엘리먼트 무브 분류
로드/스토어(Load/Store) 명령은 바이트, 하프워드, 및 워드 데이터 사이즈에 부가하여 특수한 바이트9 관련된 데이터 사이즈 연산을 지원하며, 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 1OE 는 로드/스토어 분류 명령 리스트이다.
[표 10E]
로드/스토어 분류
대부분의 레지스터 무브(Register Move) 명령은 int8, int9, int16, int32, 및 풀로우 데이터 타입을 지원하며, 엘리먼트 마스크에 의해 영향을 받지 않는다. 단지 VCMOVM 명령은 엘리먼트 마스크에 의해 영향을 받는다. 표 11E 는 레지스터 무브 분류의 명령 리스트이다.
[표 11E]
레지스터 무브 분류
표 12E 는 캐시 서브시스템(130)을 제어하는 캐시 연산(Cache Operation) 분류의 명령 리스트이다.
[표 12E]
캐시 연산 분류
명령 설명 명명법
명령 세트의 설명을 단순화하기 위하여 별첨 전체에 걸쳐서 특수한 용어가 사용된다. 예를들어, 명령 오퍼랜드는 다른 주석이 없는 경우 바이트, 바이트9, 하프워드 또는 워드 사이즈의 사인된 2의 보수 정수이다. 단어 "레지스터"는 범용(스칼라 또는 벡터) 레지스터를 지칭하는데 사용된다. 다른 타입의 레지스터는 명백하게 설명된다. 어셈블리 언어 신택스(synttax)에서, 접미어 b, b9, h 및 w 는 데이터 사이즈(바이트, 바이트9, 하프워드, 및 워드) 와 정수 데이더 타입(int8, int9, int16 및 int32) 모두를 나타낸다. 또한 명령 오퍼랜드, 연산, 및 어셈블리 언어 신택스를 설명하는데 사용된 용어와 기호는 다음과 같다.
Rd 목적 레지스터(벡터, 스칼라 또는 특수 목적)
Ra, Rb 소스 레지스터(a,b)(벡터, 스칼라 또는 특수 목적)
Rc 소스 또는 목적 레지스터(c)(벡터 또는 스칼라)
Rs 스토어 데이터 소스 레지스터(벡터 또는 스칼라)
S 32비트 스칼라 또는 특수 목적 레지스터
VR 현재 뱅크 벡터 레지스터
RA 대체 뱅크 벡터 레지스터
VRO 뱅크 O 벡터 레지스터
VR1 뱅크 1 벡터 레지스터
VRd 벡터 목적 레지스터(VRA가 지정되지 않는한 현재 뱅크에 대한 디폴트)
VRa,VRb 벡터 소스 레지스터(a 및 b)
VRc 벡터 소스 또는 목적 레지스터(c)
VRs 벡터 스토어 데이터 소스 레지스터
VACOH 벡터 어큐물레이터 레지스터 0 하이
VACOL 벡터 어큐물레이터 레지스터 0 로우
VAClH 벡터 어큐물레이터 레지스터 1 하이.
VAClL 벡터 어큐물레이터 레지스터 1 로우
SRd 스칼라 목적 레지스터
SRa, SRb 스칼라 소스 레지스터(a 및 b)
SRb+ 유효 어드레스를 갖는 베이스 레지스터를 업데이트
SRs 스칼라 스토어 데이터 소스 레지스터
SP 특수 목적 레지스터
VR[i] 벡터 레지스터(VR)에서 i번째 엘리먼트
VR[i]<a:b> 벡터 레지스터(VR)에서 i번째 엘리먼트의 비트(a 내지 b)
VR[i]<msb> 벡터 레지스터(VR)에서 i번째 엘리먼트의 최상위 비트
EA 메모리 억세스를 위한 유효 어드레스
MEM 메모리
BYTE[EA] EA에 의해 어드레스되는 메모리의 1 바이트
HALF[EA] EA에 의해 어드레스되는 메모리의 하프워드. 비트<15:8>이
EA+1에 의해 어드레스된다.
WORD[WA] EA에 의해 어드레스되는 메모리의 워드. 비트<31:24>가
EA+3에 의해 어드레스된다.
NumE1em 주어진 데이터 타입에 대한 엘리먼트의 수를 나타낸다. 그것
은 VEC32 모드에서 각각 바이트와 바이트9, 하프워드, 또는
워드 데이터 사이즈에 대하여 32,16, 또는 8 이다. 그것은
VEC64 모드에서 각각 바이트와 바이트9, 하프워드, 또는 워드
데이터 사이즈에 대하여 64,32, 또는 16이다. 스칼라 연산의
경우에 NumE1em은 O이다.
EMASK[i] i번째 엘리먼트에 대한 엘리먼트 마스크를 나타낸다. 그것은
각각 바이트와 바이트9, 하프워드, 또는 워드 데이터 사이즈
에 대하여 VGMRO/1, ∼VGMRO/1, VGMRO/1, 또는 ∼VGMRO/1
에서 1,2, 또는 4비트를 나타낸다. 스칼라 연산의 경우에
EMASK[i] = O 일지라도 엘리먼트 마스크는 세트된 것으로 추
정한다.
MMASK[i] i번째 엘리먼트에 대한 엘리먼트 마스크를 나타낸다. 그것은
각각 바이트와 바이트9, 하프워드, 또는 워드 데이터 사이즈
에 대하여 VMMR0, 또는 VMMR1에서 1,2, 또는 4비트를 나타
낸다.
VCSR 벡터 콘트롤 및 상태 레지스터
VCSR < x > VCSR에서 일비트 또는 비트들을 나타낸다. "x"는 필드 이름
이다.
VPC 벡터 프로세서 프로그램 카운터
VECSIZE 벡터 레지스터 사이즈는 VEC32에서 32이고, VEC64 모드에서
64이다.
SPAD 스크래치 패드
C 프로그래밍 구성물은 연산의 콘트롤-플로우를 설명하는데 사용된다, 예외는 다음과 같이 요약된다.
= 대입(assignment)
: 접합(concatenation)
{xlly} x 와 y 사이의 선택을 지시한다(논리 or는 아님)
sex 특정 데이터 사이즈로 사인-확장
sex-dp 특정 데이터 사이즈의 2배 정밀도로 사인-확장
zex 특정 데이터 사이즈로 제로-확장
zero≫ 제로-확장된 (논리) 우로 이동
≪ 좌로 이동(제로 채움)
trnc7 선행 7비트(하프워드로부터)를 절단
trnc1 선행 1비트(바이트9로부터)를 절단
% 모듈로 연산자
|식| 식의 절대값
/ 분할(플로트 데이터 타입에 대하여 4 lEEE 라운딩 모드중에 서 하나를 사용)
// 분할(제로 라운딩 모드로부터 라운드 어웨이를 사용
새튜레이트( )정수 데이터 타입에 대하여 오버풀로우 발생 대신에 가장 음 또는 가장 양의 값으로 포화. 플로트 데이터 타입에 대하여
포화는 양의 무한대, 양의 제로, 음의 제로, 또는 음의 무한 대로될 수 있다.
일반적인 명령 포맷이 도 8에 표시되어 있으며 하기에 설명된다.
REAR 포맷은 로드, 스토어 및 캐시 연산 명령에 의해 사용되며, REAR 포맷에서 필드는 표 13E 에 주어진 바와같이 다음의 의미를 갖는다.
[표 13E]
REAR 포맷
비트 17:15는 예약(RESERVED)되며 아키택쳐에서 미래의 확장시에 호환성을 보장하기 위하여 제로로 되어야 한다. B:D 와 TT 필드의 어떤 엔코딩은 정의되지 않는다.
프로그래머는 아키택쳐가 이러한 엔코딩이 사용될때 예상된 결과를 지정하지 않기 때문에 이러한 엔코딩을 사용해서는 않된다. 표 14E 는 VEC32와 VEC64 모드에서 지원된(LT로서 TT 필드에서 엔코딩된) 스칼라 로드 연산을 보여준다.
[표 14E]
VEC32와 VEC64 모드에서 REAR 로드 연산
표 15E 는 비트 VCSR<0>가 클리어인 때인 VEC32 모드에서 지원된(LT로서 TT 필드에서 엔코딩된) 벡터 로드 연산을 보여준다.
[표 15E]
VEC32 모드에서 REAR 로드 연산
B 비트는 헌재 또는 교체 뱅크를 지시하는데 사용된다.
표 16E 는 비트 VCSR<0>가 클리어인 때인 VEC64 모드에서 지원된 (LT로서 TT 필드에서 엔코딩된) 벡터 로드 연산을 보여준다.
[표 16E]
VEC64 모드에서 REAR 로드 연산
현재 및 교체 뱅크의 개념이 VEC64 모드에서는 존재하지 않으므로 비트 B는 64 바이트 벡터 연산을 지시하는데 사용된다.
표 l7E 는 VEC32 및 VEC64 모드에서 지원된(LT로서 TT 필드에서 엔코딩된) 스칼라 스토어 연산 리스트이다.
[표 17E]
REAR 스칼라 스토어 연산
표 18E 는 비트 VCSR<0>가 클리어인 때인 VEC32 모드에서 지원된 (LT로서 TT 필드에서 엔코딩된) 벡터 스토어 연산 리스트이다.
[표 18E]
VEC32 모드에서 REAR 벡터 스토어 연산
표 19E 는 비트 VCSR<0>가 세트인 때인 VEC64 모드에서 지원된(LT로서 TT
필드에서 엔코딩된) 벡터 스토어 연산 리스트이다.
[표 19E]
VEC32 모드에서 REAR 벡터 스토어 연산
현재 및 교체 뱅크의 개념이 VEC64 모드에서는 존재하지 않으므로 비트 B는 64 바이트 벡터 연산을 지시하는데 사용된다.
REAI 포맷은 로드, 스토어 및 캐시 연산 명령에 의해 사용되며, REAI 포맷에서 필드는 표 20E 에 주어진 바와같이 다음의 의미를 갖는다.
[표 20E]
REAI 포맷
REAR 및 REAI 포맷은 트랜스터 타입에 대하여 동일한 엔코딩을 사용한다. 엔코딩에 대한 상세한 것은 REAR 포맷을 참고할것.
RRRM5 포맷은 3 레지스터 또는 2 레지스터 및 5비트 즉시 오퍼랜드를 제공한다. 표 21E 는 RRRM5 포맷에 대한 필드를 정의한다.
[표 21E]
RRRM5 포맷
비트 19:15는 예약(RESERVED)되며 아키택쳐에서 미래의 확장시에 호완성을 보장하기 위하여 제로로 되어야 한다.
모든 벡터 레지스터 오퍼랜드는 다른상태가 없는한 현재뱅크(뱅크0 또는 뱅크l가 될 수 있음)를 참조한다. 표 22E 는 DS<1:0>가 00, 01, 또는 10인 때 D:S:M 엔코딩 리스트이다.
[표 22E]
DS가 11이 아닌 경우 RRRM5 D:S:M 엔코딩
DS<1:O>가 11인 경우 D:S:M 엔코딩은 다음 의미를 갖는다.
[표 23E]
DS가 11인 경우 RRRM5 D:S:M 엔코딩
RRRR 포맷은 4 레지스터 오퍼랜드를 제공한다.
표 24E 는 RRRR 포맷에서 필드를 보여준다.
[표 24E]
RRRR 포맷
모든 벡터 레지스터 오퍼랜드는 다른상태가 없는한 현재뱅크(뱅크0 또는 뱅크1이 될 수 있음)를 언급한다.
RI 포맷은 단지 로드 즉시 명령에 의해 사용된다. 표 25E 는 RI 포맷에서 필드를 보여준다.
[표 25E]
RI 포맷
F:DS<1:0> 필드의 어떤 엔코딩은 정의되지 않는다. 프로그래머는 이러한 엔코딩이 사용될 때 아키택쳐가 예상된 결과를 지정하지 않으므로 이들 엔코딩을 사용하지 말아야 한다. Rd로 로드된 값은 표 26E 에 도시된 바와같이 데이터 타입에 따른다.
[표 26E]
RI 포맷 로드된 값
CT 포맷은 표 27E에 도시된 필드를 포함한다.
[표 27E]
CT 포맷
브렌치 조건은 VCSR[GT:EQ:LT] 필드를 사용한다. 오버플로우 조건은 VCSR[SO] 비트를 사용하며, 이는 세트 상태일때 GT, EQ, 및 LT 비트를 선행한다. VCCS와 VCBARR은 상기한 것과 다르게 Cond<2:0> 필드를 해석한다. 상세한 그들 명령 설명을 참고할것.
RRRM9 포맷은 3 레지스터 또는 2 레지스터 및 9비트 즉시 오퍼랜드를 지정한다. 표 28E 는 RRRM9 포맷의 필드를 나타낸다.
[표 28E]
RRRM9 포맷
D:S:M 엔코딩이 즉시 오퍼랜드를 지정하지 않을때 비트 19:15는 예약되며 미래의 호환성을 보장하기 위하여 제로로 되어야 한다.
모든 벡터 레지스터 오퍼랜드는 다른상태가 없는한 현재뱅크(뱅크0 또는 뱅크1이 될 수 있음)를 참조한다. D:S:M 엔코딩은 즉시 필드로부터 추출된 즉시값이 표 29E 에 표시된 것과 같이 DS<1:0> 엔코딩에 의해 좌우된다는 것을 제외하고 RRRM5 포맷에 대한 표 22E 및 23E 에 도시된 것과 동일하다.
[표 29E]
RRRM9 포맷에서 즉시 값
즉시 포맷은 플로트 데이터 타입에서는 유용하지 않다.
MSP 벡터 명령이 다음에 알파벳 순으로 나타나 있다. 주석:
1. 명령은 다른상태가 존재하지 않는한 엘리먼트 마스크에 의해 영향을받는다. CT 포맷 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다. 로드, 스토어, 및 캐시 명령으로 구성되는 REAR 와 REAI 포맷 명령 또한 엘리먼트 마스크에 의해 영향을 받지 않는다.
2. 9비트 즉시 오퍼랜드는 플로트 데이터 타입에는 유용하지 않다.
3. 연산(operation) 설명에서 단지 벡터 형식(form)만 주어진다. 스칼라연산인 경우는 단지 하나, 0번째 엘리먼트가 정의된 것으로 가장한다.
4, RRRM5 와 RRRM9 포맷인 경우 다음의 표 30E 에 도시된 엔코딩이 정수 데이터 타임(b, b9, h, w)에 대하여 사용된다.
[표 30E]
5. RRRM5 와 RRRM9 포맷인 경우 다음의 표 31E 에 도시된 엔코딩이 플로트 데이터 타입에 사용된다.
[표 31E]
6. 오버플로우를 야기할 수 있는 모든 명령에 대하여 int8, int9, int16, int32 최대값 또는 최소값 제한값은,VCSR<ISAT> 비트가 세트된 때 적용된다. 따라서 플로팅 포인트 결과는 VCSR<ISAT> 비트가 세트된 때 -무한대,-제로, +제로, 또는 +무한대로 포화된다.
7. 구문적으로 .n은 바이트9 데이터 사이즈를 나타내기 위하여 .b9 대신에 사용될 수 있다.
8. 모든 명령에 대하여 목적 레지스터 또는 벡터 어큐물레이터로 귀환되는 플로팅 포인트 결과는 IEEE 754 단일 정밀 포맷으로 이루어진다. 플로팅 포인트 결과는 어큐물레이터의 하위부분에 기록되며 상위부분은 수정되지 않는다.
VAAS3 가산 및(1, 0. 1)의 가산
포맷
어센블러 신택스
VAAS3.dt VRd,VRa,VRb
VAAS3.dt VRd,VRa,SRb
VAAS3.dt SRd, SRa, SRb
여기서 dt= {b, b9, h, w}
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 Rb에 가산되어 준간결과를 발생하며, 그후 중간결과는 Ra의 부호와 가산되어 최종결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산 for(i=0;i<NumElem&&EMASK{i};i++){
if (Ra[i]> 0) extsgn3 = 1;
elseif(Ra[i]<0) extsgn3=-1;
else extsgn3=0;
Rd[i] = Ra[i] + Rb[i] + extsgn3;
예외
오버플로우.
VADAC 가산 및 어큐물레이트
포맷
어셈블러 신택스
VADAC. dt VRc, VRd, VRa, VRb
VADAC.dtSRc,SRd,SRa,SRb
여기서 dt= {b, b9, h, w}
지원 모드
설명
Ra 와 Rb 오퍼랜드의 각각의 엘리먼트를 벡터 어큐물레이터의 각각의 배정도 엘리먼트로 가산하고, 각 엘리먼트의 배정도 합을 벡더 어큐물레이터와 목적 레지스터(Rc,Rd)에 기억시킨다. Ra 및 Rb는 지정된 데이터 타입을 사용하나, VAC는 적당한 배정도 데이터 타입(각각 int8, int9, int16, 및 int32에 대하여 16,18,32, 및 64비트)을 사용한다. 각각의 배정도 엘리먼트의 상위부분은 VACH 와 Rc에 기억된다. 만약 Rc=Rd이면 Rc의 결과는 정의되지 않는다.
연산
for (i = 0;i < NumElem && EMASK[i];i++) {
Aop[i] = {VRa[i]||SRa};
Bop[i]= {VRb[i]||SRb};
VACH[i] VACL[i]=sex(Aop[i]+Bop[i])+ VACH[i]:VACL[i];
Rc[i]=VACH[i];
Rd[i]=VACL[i];
{
VADACL 가산 및 로우 어큐물레이트
포맷
어셈블러 신택스
VADACL.dt VRd,VRa,VRb
VADACL.dt VRd,VRa,SRb
VADACL.dt VRd,VRa,#IMM
VADACL.dt SRd,SRa,SRb
VADACL.dt SRd,SRa,#IMM
여기서 dt= {b, b9, h, w}.
지원 모드
설명
Ra 와 Rb/즉시 오퍼랜드의 각각의 엘리먼트를 벡터 어큐물레이터의 각각의 확장된 정밀도 엘리먼트로 가산하고, 낮은 정밀도를 목적 레지스터(Rd)에 리턴시킨다. Ra 및 Rb/즉시는 지정된 데이터 타입을 사용하나, VAC는 적당한 배정도 데이터 타입(각각 int8, int9, int16, 및 int32에 대하여 16,18,32, 및 64비트)을 사용한다. 각각의 확장된 정밀도 엘리먼트의 상위부분은 VACH에 기억된다.
연산
VADD 가산
포맷
어셈블러 신택스
VADD.dt VRd,VRa,VRb
VADD.dt VRd,VRa,SRb
VADD.dt VRd,VRa,#IMM
VADD.dtSRd,SRa,SRb
VADD.dtSRd,SRa,#IMM
여기서 dt= {b, b9, h, w, f}.
지원 모드
설명
Ra 와 Rb/즉시 오퍼랜드를 가산하고, 합을 목적 레지스터 (Rd)에 리턴시킨다.
연산
for (i = 0;i < NumElem && EMASK[⒥ i++) {
Bop[i1= {VRb[i]llSRbllsex(IMM<8:0>)};
Rd[i]=Ra[i]+Bop[i];
}
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
VADDH 2인접 엘리먼트 가산
포맷
어샘블러 신택스
VADD. dt VR d, VRa, VRb
VADD.dt VRd,VRa,SRb
여기서 dt= {b, b9, h, w, f}.
지원 모드
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VAND AND
포맷
어셈블러 신택스
VAND.dt VRd,VRa,VRb
VAND,dt VRd,VRa,SRb
VAND. dt VRd, VRa, #IMM
VAND. dt SRd,SRa,SRb
VAND.dt SRd,SRa,#IMM
여기서 dt= {b, b9, h, w} . .w와 .f는 동일한 연산을 지정하는 것에 유의.
지원 모드
설명
Ra 와 Rb/즉시 오퍼랜드를 논리적으로 AND하고, 그 결과를목적 레지스터(Rd)에 리턴시킨다.
연산
예외
없음.
VANDC 보수 AND
포맷
어셈블러 신택스
VANDC.dt VRd, VRa, VRb,
VANDC.dt VRd, VRa, SRb
VANDC.dt VRd, VRa, #IMM
VANDC.dt SRd, SRa, SRb
VANDC.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} . .w와 .f는 동일한 연산을 지정하는 것에 유의.
지원 모드
설명
Ra 및 Rb/즉시 오퍼랜드의 보수를 논리적으로 AND하고, 그결과를 목적 레지스터(Rd)에 리턴시킨다.
연산
예외
없음.
VASA 산술 어큐물레이터 이동
포맷
어셈블러 신택스
VASAL.dt
VASAR.dt
여기서 dt= {b, b9, h, w} 이고 R은 좌 또는 우측의 회전방향을 나타낸다.
지원 모드
설명
벡터 어큐물레이터 레지스터의 각각의 데이터 엘리먼트는 우측으로부터 제로 채움으로 1비트 위치만큼 좌로 이동되거나(만약 R=0인 경우) 또는 사인-확장으로 1비트 위치만큼 우로 이동된다(만약 R=1인 경우). 이 결과는 벡터 어큐물레이터에 기억된다.
연산
예외
오버플로우
VASL 산술 좌로 이동
포맷
어셈블러 신택스
VASL.dt VRd, VRa, SRb
VASL.dt VRd, VRa, #IMM
VASL.dt SRd, SRa, SRb
VASL.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스더(Ra)의 각각의 데이터 엘리먼트는 우측으로부터 제로 채움으로 스칼라 레지스터(Rb) 또는 IMM 필드에 주어진 이동량만큼 좌로 이동되며 그 결과는 벡터/스칼라 레지스터(Rd)에 기억된다. 오버플로우를 발생 하는 그들 엘리먼트에 대하여 그 결과는 그들의 부호에 따라 최대 양 또는 음의 값으로 포화된다. 이동량은 사인 없는 정수로 정의된다.
연산
예외
없음.
프로그래밍 주의
이동량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에 대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나 동일한 이동량을 정확하게 지정할 의무가 있다. 만약 이동량이 지정된 데이터 사이즈보다 더 클 경우에 엘리먼트는 제로로 채워질 것이다.
VASR 산술 우로 이동
포맷
어샘블러 신택스
VASR.dt VRd, VRa, SRb
VASR.dt VRd, VRa, #IMM
VASR,dt SRd, SRa, SRb
VASR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각각의 데이터 엘리먼트는 최상위 비트 위치에서 사인-확장되어 스칼라 레지스터(Rb) 또는 IMM 필드의 최하위 비트에 주어진 이동량만큼 우로 산술적으로 이동되며 그 결과는 벡터/스칼라 레지스터(Rd) 에 기억된다. 이동량은 사인 없는 정수로 정의된다.
연산
예외
없음.
프로그래밍 주의
이동량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에 대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나 동일한 이동량을 징확하게 지정할 의무가 있다. 만약 이동량이 지정된 데이터 사이즈보다 더 클 경우에 엘리먼트는 사인 비트로 채워질 것이다.
포맷
어셈블러 신택스
VASS3.dt VRd, VRa, VRb
VASS3.dt VRd,VRa,SRb
VASS3.dt SRd,SRa,SRb
여기서 dt= {b, b9, h, w}.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 Rb에 가산되어 중간결과를 발생하며 그후 중간결과로부터 Ra의 부호가 감산되어 최종 결과가 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
오버플로우
VASUB 감산의 절대값
포맷
어셈블러 신택스
VASUB.dt VRd, VRa, VRb
VASUB.dt VRd, VRa, SRb
VASUB.dt VRd, VRa, #IMM
VASUB.dt SRd, SRa, SRb
VASUB.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f} .
지원 모드
설명
벡터/스칼라 레지스더 Rb 또는 IMM 필드의 내용은 벡터/스칼라 레지스터 (Ra)의 내용으로부터 감산되어 그의 절대값이 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
만약 감산의 결과가 최대 음수인 경우 오버플로우는 절대값 연산후에 발생될 것이다. 만약 포화모드가 인에이블되는 경우 절대값 연산의 결과는 최대 양수로 될 것이다.
VAVG 2 엘리멘트 평균
포맷
어셈블리 신택스
VAVG.dt VRd, VRa, VRb
VAVG.dt VRd, VRa, SRb
VAVG.dt SRd, SRa, SRb
여기서 dt= {b, b9, h, w, f} . 정수 데이터 타입에 대한 "절단" 반올림 모드를 지정하기 의하여 VAVGT를 사용한다.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 벡터/스칼라 레지스터 (Rb)의 내용에 가산되어 중간결과를 생성하며, 그후 중간결과는 2로 분할되어 최종결과는 벡터/스칼라 레지스터(Rd)에 기억된다. 정수 데이터 타입에 대하여 T=1인경우 반올림 모드가 절단되고 T=0 인 경우 제로에서 잘라버림이 이루어진다(디폴트). 플로트 데이터 타입인 경우 반울림 모드는 VCSR <RMODE>에서 지정된다.
연산
예외
없음
VAVGH 2 인접 엘리먼트 평균
포맷
어셈블러 신택스
VAVGH.dt VRd, VRa, VRb
VAVGH.dt VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f} . 정수 데이터 타입에 대한 "절단" 반올림 모드를 지정하기 위하여 VAVGHT를 사용한다.
지원 모드
설명
각 엘리먼트에 대하여 2 인접한 쌍의 엘리먼트를 평균한다. 정수 데이터 타입에 대하여 T=1인경우 반올림 모드가 절단 되고 T=0 인 경우 제로에서 잘라버림이 이루어진다(디폴트).플로트 데이터 타입인 경우 반올림 모드는 VCSR<RMODE>에서 지정된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VAVGQ 4 중 평균
포맷
어셈블러 신택스
VAVGQ.dt VRd, VRa, VRb
여기서 dt= {b, b9, h, w}. 정수 데이터 타입에 대안 "절
단" 반올림 모드를 지정하기 위하여 VAVGQT를 사용한다.
지원 모드
설명
이 명령은 VEC64 모드에서 지원되지 않는다.
T(절단인 경우는 1 그리고 제로에서 잘라버림하는 경우는
0, 디폴트)에서 지정된 반올림 모드를 사용하여 하기의 다
이아그램과 같이 4 엘리먼트의 평균을 계산한다. 가장 좌
측에 있는 엘리먼트(Dn-1)는 정의되지 않는 것에 주의.
연산
예외
없음.
VCACHE 캐시연산
포맷
어셈블러 신택스
VCACHE.fc SRb, SRi
VCACHE.fc SRb, #IMM
VCACHE.fc SRb+, SRi
VCACHE.fc SRb+, #IMM
여기서 fc = {0, 1} .
설명
이 명령은 벡터 데이터 캐시의 소프트웨어 관리를 위해 제
공된다. 데이터 캐시의 일부 또는 전부가 스크래치 패드로
서 구성될 때 이 명령은 스크래치 패드에 영향을 미치지 않
는다.
다음의 옵션이 지원된다:
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VCAND 보수 가산
포맷
어셈블러 신택스
VCAND.dt VRd, VRa, VRb
VCAND.dt VRd, VRa, SRb
VCAND.dt VRd, VRa, #IMM
VCAND.dt SRd, SRa, SRb
VCAND.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산을 지정
하는 것에 유의,
지원 모드
설명
Ra와 Rb/즉시 오퍼랜드의 보수를 논리적으로 AND하고 그
결과를 목적 레지스터(Rd)로 리턴시킨다.
연산
예외
없음.
VCBARR 조건부 배리어
포맷
어셈블러 신택스
VCBARR.cond
여기서 cond= {0-7} . 각 조건은 후에 기호로서 주어질 것
이다.
설명
그 명령과 모든 후속 명령(프로그램 순서에서 후에 나타나
는 것)을 조건이 유지되는 한 정지시킨다. Cond<2:0> 필
드는 CT 포맷의 다른 조건부 명령과 상이하게 해석된다.
다음의 조건이 현재 정의되어 있다:
연산
(Cond=진)인 동안
모든 후속 명령은 정지시킨다;
예외
없음.
프로그래밍 주의
이 명령은 명령 실행의 직렬화를 시행하기 위하여 소프트웨
어에 제공된다. 이 명령은 부정밀 예외의 정확한 보고를 행
하는데 사용된다. 예를들어 만약 이 명령이 예외를 야기할
수 있는 산술 명령 바로후에 사용될 경우 예외는 이 명령을
번지지정하는 프로그램 카운터에 보고된다.
VCBR 조건부 브렌치
포맷
어셈블러 신택스
VCBR.cond #Offset
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
Cond가 진인 경우 브렌치한다. 이것은 지연된 브렌치가 아
니다.
연산
예외
명령 어드레스 무효.
VCBRI 조건부 간접 브렌치
포맷
어셈블러 신택스
VCBRI.cond SRb
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
Cond가 진인 경우 브렌치한다. 이것은 지연된 브렌치가 아
니다.
연산
예외
명령 어드레스 무효.
VCCS 조건부 문맥 절환
포맷
어셈블러 신택스
VCCS #Offset
설명
만약 VIMSK<cse>가 진인 경우 문맥 절환 서브루틴으로
점프한다. 이것은 지연된 브렌치가 아니다.
만약 VIMSK<cse>가 진인 경우 VPC + 4(리턴 어드레스)
가 리턴 어드레스 스택으로 세이브된다. 만약 아닌 경우에
실행은 VPC + 4로 계속된다.
연산
예외
어드레스 스택 오버플로워 리턴
VCHGCR 제어 레지스터 변경
포맷
어셈블러 신택스
VCHGCR Mode
설명
이 명령은 벡터 프로세서의 연산 모드를 변경시킨다.
모드에서 각 비트는 다음과 같이 지정된다.
연산
예외
없음
프로그래밍 주의
이 명령은 하드웨어가 VM0V 명령을 갖고 가능한 것 보다
더 효율적인 방식으로 VCSR 에서 제어 비트를 변경하기 위
하여 제공된다.
VCINT 조건부 ARM7 인터럽트
포맷
어셈블러 신택스
VCINT.cond #CODE
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
만약 Cond가 진인 경우 실행을 정지하고, 인에이블된 경우
에 ARM7을 인터럽트한다.
VCINT 인터럽트
VCJOIN ARM7 태스크를 갖는 조건부 결합
포맷
어셈블러 신택스
VCJOlN.cond #Offset
여기서 cond= {un,1t, eq,le, gt, ne, ge,ov}.
설명
만약 Cond가 진인 경우 실행을 정지하고, 인에이블된 경우
에 ARM7을 인터럽트한다.
연산
예외
VCJOIN 인더럽트
VCJSR 서브루틴에 대한 조건부 점프
포맷
어셈블러 신택스
VCJSR.cond #Offset
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
만약 Cond가 진인 경우 서브루틴으로 점프. 이것은 지연된
브렌치가 아니다.
만약 Cond가 진인 경우 VPC + 4(리턴 어드레스)가 리턴 어
드레스 스택으로 세이브된다. 만약 아닌 경우에 실행은 VPC
4로 계속된다.
연산
예외
어드레스 스택 오버플로우 리턴
VCJSRI 서브루틴에 대한 조건부 간접점프
포맷
어셈블러 신택스
VCJSRI.cond SRb
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
만약 Cond가 진인 경우 서브루틴으로 간접점프. 이것은 지
연된 브렌치가 아니다.
만약 Cond가 진인 경우 VPC + 4(리턴 어드레스)가 리턴 어
드레스 스택으로 세이브된다. 만약 아닌 경우에 실행은 VPC
+4로 계속된다.
연산
예외
어드레스 스택 오버플로우 리턴
VCMOV 조건부 무브
포맷
어셈블러 신택스
VCMOV.dt Rd, Rb, cond
VCMOV.dt Rd, #IMM, cond
여기서 dt= {b, b9, h, w, f} , cond= {un, lt, eq, le,
gt, ne, ge, ov}..f와 .w는 .f 데이터 타입이 9비트 즉
시 오퍼랜드에 의해 지원되지 않는다는 것을 제외하고 동
일한 연산을 지정한다.
지원 모드
설명
Cond가 진인 경우 레지스터(Rb)의 내용은 레지스터(Rd)로
이동된다.ID<1:0>는 또한 소스와 목적 레지스터를 지정
한다.
VR 현 뱅크 벡터 레지스터
SR 스칼라 레지스터
SY 동기 레지스터
VAC 벡터 어큐물레이터 레지스터(VAC 레지스터 엔
코딩에 대한 VM0V 설명 참조)
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않으며
-VCM0VM은 엘리먼트 마스크에 의해 영향을 받는다.
벡터 어큐물레이터에서 확장된 플로팅 포인트 정밀 표현은
8엘리먼트에 대한 모든 576비트를 사용한다. 따라서 어큐물
레이터를 포함하는 벡터 레지스터 무브는 .b9 데이터 사이
즈를 지정하여야 한다.
VCMOVM 엘리먼트 마스크를 갖는 조건부 무브
포맷
어셈블러 신택스
VCMOVM.dt Rd, Rb, cond
VCMOVM.dt Rd, #IMM, cond
여기서 dt= {b, b9, h, w, f} , cond= {un, lt, eq, le,
gt, ne, ge, ov} ..f와 .w는 .f 데이터 타입이 9비트 즉
시 오퍼랜드에 의해 지원되지 않는다는 것을 제외하고 동
일한 연산을 지정한다.
지원 모드
설명
Cond가 진인 경우 레지스터(Rb)의 내용은 레지스터(Rd)로
이동된다.ID<1:0>는 또한 소스와 목적 레지스터를 지정
한다.
VR 현 뱅크 벡터 레지스터
SR 스칼라 레지스터
VAC 벡터 어큐물레이터 레지스터(VAC 레지스터 엔
코딩에 대한 VM0V 설명 참조)
연산
예외
없음.
프로그래밍 주의
이 명령은 VMMR 엘리먼트 마스크에 의해 영향을 받으며
- VCM0V는 엘리먼트 마스크에 의해 영향을 받지 않는다.
벡터 어큐물레이터에서 확장된 플로팅 포인트 징밀 표현은
8엘리먼트에 대한 모든 576비트를 사용한다. 따라서 어큐물
레이터를 포함하는 벡터 레지스터 무브는 .b9 데이터 사이
즈를 지정하여야 한다.
VCMPV 비교 및 마스크 세트
포맷
어셈블러 신택스
VCMPV.dt VRa, VRb, cond. mask
VCMPV.dt VRa, SRb, cond. mask
여기서 dt= {b, b9, h, w, f} , cond= {un, lt, eq, le,
gt, ne, ge, ov} . mask= {VGMR, VMMR} . 만약 마스크가
지정되지 않는 경우 VGMR은 가상이다.
지원 모드
설명
벡터 레지스터(VRa, VRb)의 내용은 감산 연산
(VRa[i]-VRb[i])을 실행함에 의해 엘리먼트 방식으로 비교
되며, VGMR(만약 K=0) 또는 VMMR(만약 K=1) 레지스터에
서 대응하는 비트(#i)는 만약 비교의 결과가 VCMPV 명령의
Cond 필드와 부합하는 경우 세트된다. 예를들어, Cond 필드
가 (LT) 보다 작을경우 VGMR[i](또는 VMMR[i])는 VRa[i]
<VRb[i] 일때 세트된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VCNTLZ 선행 제로 카운트
포맷
어셈블러 신택스
VCNTLZ.dt VRd, VRb
VCNTLZ.dt SRd, SRb
여기서 dt= {b, b9, h, w} .
지원 모드
설명
Rb의 각 엘리먼트에 대하여 선행 제로의 수를 카운트하여;
Rd에 카운트를 리턴한다.
연산
예외
없음.
프로그래밍 주의
엘리먼트의 모든 비트가 제로인 경우 그 결과는 엘리먼트
사이즈(각각, 바이트, 바이트9, 하프워드, 또는 워드에 대
하여 8,9,16, 또는 32)와 동일하다.
선행 제로의 카운트는 엘리먼트 위치의 인덱스와 역관계를
갖는다(만약 VCMPR 명령 다음에 사용되는 경우). 엘리먼트
위치를 변환하기 위하여 주어진 데이터 타입에 대한
NumElem로부터 VCNTLZ의 결과를 감산한다.
VCOR 보수 OR
포맷
어셈블러 신택스
VCOR.dt VRd, VRa, VRb
VCOR.dt VRd, VRa, SRb
VCOR.dt VRd, VRa, #IMM
VCOR.dt SRd, SRa, SRb
VCOR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} ..w와 .f는 동일한 연산을 지정
하는 것에 유의.
지원 모드
설명
Ra와 Rb/즉시 오퍼랜드의 보수를 논리적으로 OR하고 그
결과를 목적 레지스더(Rd)로 리턴시킨다.
연산
예외
없음.
VCRSR 서브루틴으로부터 조건부 리턴
포맷
어셈블러 신택스
VCRSR.cond
여기서 cond= {un,lt, eq,1e, gt, ne, ge,ov}.
설명
만약 Cond가 진인 경우 서브루틴으로부터 리턴. 이것은 지
연된 브렌치가 아니다.
만약 Cond가 진인 경우 리턴 어드레스 스택으로 세이브된
리턴 어드레스로부터 실행이 계속된다. 만약 아닌 경우에
실랭은 VPC + 4로 계속된다.
연산
예외
명령 어드레스 무효. 어드레스 스택 언더플로우 리턴.
VCVTB9 바이트9 데이터 타입 변환
포맷
어셈블러 신택스
VCVTB9.md VRd, VRb
VCVTB9.md SRd, SRb
여기서 md= {bb9, b9h, hb9} .
지원 모드
설명
Rb의 각 엘리먼트는 바이트에서 바이트9(bb9)로, 바이트9에
서 하프워드(b9h)로 또는 하프워드에서 바이트9(hb9)로 변
환된다.
연산
예외
없음.
프로그래밍 주의
b9h 모드를 갖는 이러한 명령을 사용하기 전에 프로그래머
는 서플 연산을 갖는 벡터 레지스터에 엘리먼트의 감소된
수를 조정하는 것이 요구된다. hb9 모드를 갖는 이러한 명
령을 사용한 후 프로그래머는 언셔플 연산을 갖는 목적 벡
터 레지스터에 엘리먼트의 증가된 수를 조정하는 것이 요구
된다. 이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는
다.
VCVTFF 플로팅 포인트를 고정 포인트로 변환
포맷
어셈블러 신택스
VCVTFF VRd, VRa, SRb
VCVTFF VRd, VRa, #IMM
VCVTFF SRd, SRa, SRb
VCVTFF SRd, SRa, #IMM
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 Y의 폭이 Rb(모듈로
32) 또는 IMM 필드에 의해 지정되고 X의 폭이 (32-Y의
폭)로 징의되는 경우 32비트 플로팅 포인트로부터 포맷<
X.Y>의 고정 포인트 실수로 변환된다.
연산
예외
오버플로우
프로그래밍 주의
이 명령은 단지 워드 데이터 사이즈만을 지원한다. 이 명령
은 아키택쳐가 레지스터 내에 다중 데이터 타입을 지원하지
않기 때문에 엘리먼트 마스크를 사용하지 않는다. 이 명령
은 정수 데이터 타입에 대하여 제로 반올림 모드로부터 잘
라버림을 사용한다.
VCVTIF 정수를 플로팅 포인트로 변환
포맷
어셈블러 신택스
VCVTIF VRd, VRb
VCVTIF VRd, SRb
VCVTIF SRd, SRb
지원모드
설명
벡터/스칼라 레지스터(Rb)의 내용은 int32로부터 플로트 데
이터 타입으로 변환되며 그 결과는 벡터/스칼라 레지스터
(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 단지 워드 데이터 사이즈만을 지원한다. 이 명령
은 아키택쳐가 레지스터 내에 다중 데이터 타입을 지원하지
않기 때문에 엘리먼트 마스크를 사용하지 않는다.
VD1CBR VCR1 감소 및 조건부 브렌치
포맷
어셈블러 신택스
VDICBR.cond #Offset
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
VCR1를 감소시키고 만약 Cond가 진인 경우 브렌치한다. 이
것은 지연된 브렌치가 아니다.
연산
예외
명령 어드레스 무효
프로그래밍 주의
VCR1은 브렌치 조건이 체크되기 전에 감소된다. VCR1이 O
일때 이 명령을 실행하는 것은 루프 카운트를 232-1로 효과
적으로 세트한다.
VD2CBR VCR2 감소 및 조건부 브렌치
포맷
어셈블러 신택스
VD2CBR.cond #0ffset
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
VCR2를 감소시키고 만약 Cond가 진인경우 브렌치한다. 이
것은 지연된 브렌치가 아니다.
연산
예외
명령 어드레스 무효
프로그래밍 주의
VCR2는 브렌치 조건이 체크되기 전에 감소된다. VCR2가 0
일때 이 명령을 실행하는 것은 루프 카운트를 232-1로 효과
적으로 세트한다.
VD3CBR VCR3 감소 및 조건부 브렌치
포맷
어셈블러 신택스
VD3CBR.cond #Offset
여기서 cond= {un, lt, eq, le, gt, ne, ge, ov} .
설명
VCR를 감소시키고 만약 Cond가 진인 경우 브렌치한다. 이
것은 지연된 브렌치가 아니다.
연산
예외
명령 어드레스 무효
프로그래밍 주의
VCR3은 브렌치 즈건이 체크되기 전에 감소된다. VCR3이 0
일 때이 명령을 실행하는 것은 루프 카운트를 232-1로 효과
적으로 세트한다.
VDIV2N 2n에 의한 분할
포맷
어셈블러 신택스
VDIV2N.dt VRd, VRa, VRb
VDIV2N.dt VRd, VRa, #IMM
VDIV2N.dt SRd, SRa, SRb
VDIV2N.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 n이 스칼라 레지스터
(Rb 또는 IMM)의 양의 정수 내용인 경우 2n에 의해 분할되
어 그 최종결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
이 명령은 반올림 모드로서 절단(제로를 향하여 반올림)을
사용한다.
연산
예외
없음.
프로그래밍 주의
N은 SRb 또는 IMM<4:0>로부터 5비트 수로서 얻어지는
점에유의. 바이트, 바이트9, 하프워드 데이터 타입인 경우
프로그래머는 데이터 사이즈에서 정밀도가 낮거나 동일한 N
의 값을 정확하게 지정할 잭임이 있다. 만약 그것이 지정된
데이터 사이즈의 정밀도 보다 더 큰 경우에 엘리먼트는 사
인비트로 채워질 것이다. 이 명령은 반올림 모드로서 제로
를 향한 반올림을 사용한다.
VDIV2N.F 2n플로트에 의한 분할
포맷
어셈블러 신택스
VDIV2N.f VRd, VRa, VRb
VDIV2N.f VRd, VRa, #IMM
VDIV2N.f SRd, SRa, SRb
VDIV2N.f SRd, SRa, #IMM
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 n이 스칼라 레지스터
(Rb 또는 IMM)의 양의 정수 내용인 경우 2n에 의해 분할되
어 그 최종결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
N은 SRb 또는 IMM<4:0>로부터 5비트 수로서 얻어지는
점에 유의.
VDIVI 분할 초기화-불완전
포맷
어셈블러 신택스
VDIVI.ds VRb
VDIVI.ds SRb
여기서 ds= {b, b9, h, w} .
지원 모드
설명
비복원 사인된 정수 나눗셈의 초기화 단계를 실행한다. 피
젯수는 어큐물레이터에서 배정도 사인된 정수이다. 만약 피
젯수가 단정도인 경우, 그것은 배정도로 사인 확장되어
VACOH 및 VACOL에 기억되어야 만 한다. 젯수는 Rb에서
단정도 사인된 정수이다.
피젯수의 부호(sign)가 젯수의 부호와 동일할 경우 Rb는 어
큐물레이터의 상위로부터 감산되며, 그렇지 않은 경우 Rb는
어큐물레이터의 상위에 가산된다.
연산
예외
없음.
프로그래밍 주의
프로그래머는 분할 스텝전에 오버플로우 또는 제로에 의한
나누기 경우를 검출하는 것이 요구된다.
VDIVS 분할 스텝-불완전
포맷
어셈블러 신택스
VDIVS.ds VRb
VDIVS.ds SRb
여기서 ds= {b, b9, h, w} .
지원 모드
설명
비복원 사인된 나누기의 하나의 반복 스텝을 수행한다. 이
명령은 데이터 사이즈의 다수배(즉, int8 데이터 타입에 대
하여 8배, int9에 대하여 9배, int16에 대하여 16배, 그리
고 int32 데이터 다입에 대하여 32배) 로서 실행되어야 한
다. VDIV1 명령은 어큐물레이터에서 초기 부분 나머지를 생
성하기 위한 나누기 스텝 전에 한번 사용되어야 한다. 젯수
는 Rb에서 단정도 사인된 정수이다. 일단 몫 비트는 스텝마
다 추출되어 어큐물레이터의 최하위 비트로 시프트된다.
만약 부분 나머지의 부호가 Rb의 젯수의 부호와 동일할 경
우 Rb는 어큐물레이터의 상위로부터 감산된다. 만약 동일하
지 않은 경우 Rb는 어큐물레이터의 상위에 가산된다.
몫 비트는 만약 어큐물레이터에서 결과적인 부분 나머지(가
산 또는 감산)의 부호가 젯수의 부호와 동일할 경우 1이다.
그렇지 않은 경우 몫 비트는 제로(0)이다. 어큐물레이티는
몫 비트가 채워진 상태로 1 비트 위치 만큼 좌로 시프트된다.
나누기 스텝의 결론으로 나머지는 어큐물레이터의 상위에,
몫은 어큐물레이터의 하위에 기억된다. 몫은 1의 보수형태
이다.
연산
VESL 1 만큼 엘리먼트 좌로 시프트
포맷
어셈블러 신택스
VESL,dt SRc, VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f} . w와 .f는 동일한 연산을 지
정하는 점에 유의
지원 모드
설명
1 위치만큼 좌로 벡터 레지스터(Ra)의 엘리먼트를 시프트하
고 스칼라 레지스터(Rb)로부터 채운다. 시프트된 가장 좌
측의 엘리먼트는 스칼라 레지스터(Rc)로 리턴되며 나머지
엘리먼트는 벡터 레지스터(Rd)로 리턴된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VESR 1 만큼 엘리먼트 우로 시프트
포맷
어셈블러 신택스
VESR.dt SRc, VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f} . w와 .f는 동일한 연산을 지
정하는 점에 유의
지원 모드
설명
1 위치만큼 우로 벡터 레지스터(Ra)의 엘리먼트를 시프트하
고 스칼라 레지스터(Rb)로부터 채운다. 시프트된 가장 우측
의 엘리먼트는 스칼라 레지스터(Rc)로 리턴되고 나머지 엘
리먼트는 벡터 레지스터(Rd)로 리턴한다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VEXTRT 1 엘리먼트 추출
포맷
어셈블러 신택스
VEXTRT.dt SRd, VRa, SRb
VEXTRT.dt SRd, VRa, #IMM
여기서 dt= {b, b9, h, w, f} . w와 . f는 동일한 연산을 지
정하는 점에 유의
지원 모드
설명
인덱스가 스칼라 레지스터(Rb) 또는 IMM 필드에 의해 지정
되는 Ra 벡터 레지스터로부터 엘리먼트를 추출하여 스칼라
레지스터(Rd)로 기억시킨다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VEXTSNG2 (1,-1)의 부호 추출
포맷
어셈블러 신택스
VEXTSNG2.dt VRd, VRa
VEXTSNG2.dt SRd, SRa
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용의 부호값은 엘리먼트와
같이 계산되어 그 결과는 벡터/스칼라 레지스터(Rd)에 기
억된다.
연산
예외
없음.
VEXTSNG3 (1,0,-1)의 부호 추출
포맷
어셈블러 신택스
VEXTSNG3.dt VRd, VRa
VEXTSNG3.dt SRd, SRa
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용의 부호값은 엘리먼트와
같이 계산되어 그 결과는 벡터/스칼라 레지스터(Rd)에 기
억된다.
연산
예외
없음.
VINSRT 1 엘리먼트 삽입
포맷
어셈블러 신택스
VINSRT.dt VRd, SRa, SRb
VINSRT.dt VRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f} ..w와 .f는 동일한 연산을
지정하는 점에 유의
지원 모드
설명
스칼라 레지스터(Ra)의 엘리먼트를 스칼라 레지스터(Rb) 또
는 IMM 펄드에 의해 지정된 인넥스에 있는 벡터 레지스터
(Rd)로 삽입한다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VL 로드
포맷
어셈블러 신택스
VL.lt Rd, SRb, SRi
VL.lt Rd, SRb, #IMM
VL.lt Rd, SRb+, SRi
VL.1t Rd, SRb+, #IMM
여기서 1t= {b, bz9, bs9, h, w, 4, 8, 16, 32, 64} , Rd=
{VRd, VRAd, SRd} ..w와 .f는 동일한 연산을 지정하며 .64
와 VRAd는 함께 지정될 수 없는 점에 유의. 캐시오프 로드
를 위해 VLOFF를 사용한다.
설명
현재 또는 교체 뱅크 또는 스칼라 레지스터에 벡터 레지스
터를 로드한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VLD 더블 로드
포맷
어셈블러 신택스
VLD.lt Rd, SRb, SRi
VLD.lt Rd, SRb, #IMM
VLD.lt Rd, SRb+, SRi
VLD,lt Rd, SRb+, #IMM
여기서 lt= {b, bz9, bs9, h, w, 4, 8, 16, 32, 64} , Rd=
{VRd, VRAd, SRb}..b와 .bs9는 동일한 연산율 지정하며
64와 VRAd는 함께 지정될 수 없는 점에 유의. 캐시오프 로
드를 위해 VLDOFF를 사용한다.
설명
현재 또는 교체 뱅크 또는 2스칼라 레지스터에 2벡터 레지
스터를 로드한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VLQ 사중 로드
포맷
어셈블러 신택스
VLQ.lt Rd, SRb, SRi
VLQ.lt Rd, SRb, #1MM
VLQ.lt Rd, SRb+, SRi
VLQ.lt Rd, SRb+, #IMM
여기서 lt= {b, bz9, bs9, h, w, 4, 8, 16, 32, 64} , Rd=
{VRd, VRAd, SRd} ..b와 .bs9는 동일한 연산을 지정하며
64와 VRAd는 함께 지정될 수 없는 점에 유의. 캐시오프 로
드를 의해 VLQOFF를 사용한다.
설명
현재 또는 교체 뱅크 또는 4스칼라 레지스터에 4벡터 레지
스터를 로드한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VLR 역으로 로드
포맷
어셈블러 신택스
VLR.lt Rd, SRb, SRi
VLR.lt Rd, SRb, #IMM
VLR.lt Rd, SRb+, SRi
VLR.lt Rd, SRb+, #IMM
여기서 1t={ 4, 8, 16, 32, 64}, Rd={
VRd, VRAd} . .64와 VRAd는 함께 지정될 수 없는 점
에 유의. 캐시오프 로드를 의해 VLROFF를 사용한다.
설명
역 엘리먼트 순서로 벡터 레지스터를 로드한다. 이 명령은
스칼라 목적 레지스터를 지원하지 않는다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VLSL 논리 좌로 이동
포맷
어셈블러 신택스
VLSL.dt VRd, VRa, SRb
VLSL.dt VRd, VRa, #IMM
VLSL.dt SRd, SRa, SRb
VLSL.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각각의 엘리먼트는 최하위 비
트(LSB) 위치에 제로 채움으로 스칼라 레지스터(Rb) 또는
IMM 필드에 주어진 이동량만큼 좌로 논리적으로 비트-이동
되며 그 결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
없음
프로그래밍 주의
이동량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어
지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에
대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나
동일한 이동량을 정확하게 지정할 의무가 있다. 만약 이동
량이 지징된 데이터 사이즈보다 더 클 경우에 엘리먼트는
제로로 채워질 것이다.
VLSR 논리 우로 이동
포맷
어셈블러 신택스
VLSR.dt VRd, VRa, SRb
VLSR.dt VRd, VRa, #IMM
VLSR.dt SRd, SRa, SRb
VLSR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w} .
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각각의 데이터 엘리먼트는 최
상위 비트(MSB) 위치에 제로 채움으로 스칼라 레지스터(Rb)
또는 IMM 필드에 주어진 이동량만큼 우로 논리적으로 비트
이동되며 그 결과는 벡터/스칼라 례지스터(Rd)에 기억된다.
연산
예외
없음
프로그래밍 주의
이동량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어
지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에
대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나
동일한 이동량을 정확하게 지정할 의무가 있다. 만약 이동
량이 지정된 데이터 사이즈보다 더 클 경우에 엘리먼트는
제로로 채워질 것이다.
VL 스트라이드로 로드
포맷
어셈블러 신택스
VLWS,lt Rd, SRb, SRj
VLWS.lt Rd, SRb, #IMM
VLWS.1t Rd, SRb+, SRi
VLWS.1t Rd, SRb+, #IMM
여기서 It={ 4, 8, 16, 32, 64}, Rd={
VRd, VRAd}. .64와 VRAd는 함께 지정될 수 없는 점
에 유의. 캐시오프 로드를 위해 VLWSOFF를 사용한다.
설명
유효 어드레스에서 시작하여 스트라이드 제어 레지스터
(Stride Control register)로서 스칼라 레지스터(SRb+1)를
사용하여 메모리로부터 벡터 레지스터(VRd)로 32 바이트가
로드된다.
LT는 각 블록에 대한 로드를 위해 연속된 바이트의 번호와
블록 사이즈를 지정한다. SRb+1는 2 연속 블록의 시작을 분
리하는 번호와 스트라이드를 지정한다.
스트라이드는 블록 사이즈와 동일하거나 또는 더 커야 한
다. EA는 정렬된 데이터 사이즈이어야 한다. 스트라이드와
불록 사이즈는 데이터 사이즈의 다수배로 되어야 한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
VMAC 승산 및 어큐물레이트
포맷
어셈블러 신택스
VMAC.dt VRa,VRb
VMAC.dt VRa,SRb
VMAC.dt VRa, #IMM
VMAC.dt SRa,SRb
VMAC.dt SRa,#IMM
여기서 dt= {b, h, w, f}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 벡
터 어큐물레이터의 각 배정도 엘리먼트에 가산하여; 벡터
어큐물레이터에 각 엘리먼트의 배정도 합을 기억시킨다.
Ra와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC는
적당한 배정도 데이터 타입을 사용한다(각각 int8, int16,
및 int32에 대하여 16,32, 및 64 비트). 각 배정도 엘리먼
트의 상위 부분은 VACH에 기억된다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMACF 승산 및 소수부 어큐물레이트
포맷
어셈블러 신택스
VMACF.dt VRa,VRb
VMACF.dt VRa,SRb
VMACF.dt VRa,#IMM
VMACF.dt SRa,SRb
VMACF.dt SRa,#IMM
여기서 dt= {b, h, w,}
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 배정도 중간결과를 1비트 좌로 시프
트시켜; 시프트된 중간결과의 각 배정도 엘리먼트를 벡터
어큐물레이터의 각 배정도 엘리먼트에 가산하여; 벡터 어큐
물레이터에 각 엘리먼트의 배정도 합을 기억시킨다.
VRa와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC
는 적당한 배정도 데이터 타입을 사용한다(각각 int8,
int16, 및 int32에 대하여 16, 32, 및 64 비트). 각 배정
도 엘리먼트의 상위 부분은 VACH에 기억된다.
연산
예외
오버플로우.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMACL 승산 및 로우 어큐물레이트
포맷
어셈블러 신택스
VMACL.dt VRd,VRa,VRb
VMACL.dt VRd,VRa,SRb
VMACL.dt VRd,VRa,#IMM
VMACL.dt SRd,SRa,SRb
VMACL.dt SRd,SRa,#IMM
여기서 dt= {b, h, w, f}
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 벡
터 어큐물레이터의 각 배정도 엘리먼트에 가산하여; 벡터
어큐물레이터에 각 엘리먼트의 배정도 합을 기억시키며;
목적 레지스터(VRd)로 하위부분을 리턴시킨다.
Ra와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC는
적당한 배정도 데이터 타입을 사용한다(각각 int8, int16,
및 int32에 대하여 16,32, 및 64 비트). 각 배정도 엘리
먼트의 상위 부분은 VACH에 기억된다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMAD 승산 및 가산
포맷
어셈블러 신택스
VMAD.dt VRc,VRd,VRa,VRb
VMAD.dt SRc, SRd} SRa, SRb
여기서 dt= {b, h, w}
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 Rc
의 각 엘리먼트에 가산하여;목적 레지스터(Rd+1:Rd)에 각
엘리먼트의 배정도 합을 기억시킨다.
연산
예외
없음
VMADL 승산 및 로우 가산
포맷
어셈블러 신택스
VMADL.dt VRc,VRd,VRa,VRb
VMADL.dt SRc,SRd,SRa,SRb
여기서 dt= {b, h, w, f}
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 Rc
의 각 엘리먼트에 가산하여; 목적 레지스터(Rd)에 각 엘리
먼트의 하위부분 배정도 합을 리턴시킨다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
VMAS 승산 및 오큐물레이트로부터 감산
포맷
어셈블러 신택스
VMAS.dt VRa,VRb
VMAS.dt VRa,SRb
VMAS.dt VRa, #IMM
VMAS.dt SRa,SRb
VMAS.dt SRa,#IMM
여기서 dt= {b} h, w, f}
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 숭산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 벡
터 어큐물레이터의 각 배정도 엘리먼트에서 감산하여; 벡터
어큐물레이터에 각 엘리먼트의 배정도 합을 기억시킨다.
Ra와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC는
적당한 배정도 데이터 타입을 사용한다(각각 int8, int16,
및 int32에 대하여 16, 32, 및 64 비트). 각 배정도 엘리먼
트의 상위 부분은 VACH에 기억된다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMASF 승산 및 어큐물레이터 소수부로부터 감산
포맷
어셈블러 신택스
VMASF.dt VRa,VRb
VMASF.dt VRa,SRb
VMASF.dt VRa, #IMM
VMASF.dt SRa, SRb
VMASF.dt SRa, #IMM
여기서 dt= {b, h, w}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 배정도 중간결과를 1비트만큼 좌로
시프트하며; 시프트된 중간결과의 각 배정도 엘리먼트를
벡터 어큐물레이터의 각 배정도 엘리먼트에서 감산하여;
벡터 어큐물레이터에 각 엘리먼트의 배정도 합을 기억시킨
다.
VRa와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC
는 적당한 배정도 데이터 타입을 사용한다(각각 int8,
int16, 및 int32에 대하여 16, 32, 및 64 비트). 각 배정
도 엘리먼트의 상위 부분은 VACH에 기억된다.
연산
예외
오버플로우.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMASL 승산 및 어큐물레이터 로우로부터 감산
포맷
어셈블러 신택스
VMASL.dt VRd, VRa, VRb
VMASL.dt VRd, VRa, SRb
VMASL.dt VRd, VRa, #IMM
VMASL.dt SRd, SRa, SRb
VMASL.dt SRd, SRa, #IMM
여기서 dt= {b, h, w, f}.
지원 모드
설명
Ra의 각 엘리먼트란를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 중간결과의 각 배정도 엘리먼트를 벡
터 어큐물레이터의 각 배정도 엘리먼트에서 감산하여; 벡터
어큐물레이터에 각 엘리먼트의 배정도 합을 기억시키고; 목
적 레지스터(VRd)에 하위부분을 리턴한다.
Ra와 Rb는 지정된 데이터 타입을 사용하며, 반면에 VAC는
적당한 배정도 데이터 타입을 사용한다(각각 int8, int16,
및 int32에 대하여 16, 32, 및 64 비트). 각 배정도 엘리먼
트의 상위 부분은 VACH에 기억된다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMAXE 쌍방식 최대 및 교환
포맷
어셈블러 신택스
VMAXE.dt VRd, VR
여기서 dt= {b, b9, h, w, f}.
지원 모드
설명
VRa와 VRb는 동일하여야 한다. VRa가 VRb와 상이할 때
그 결과는 정의되지 않는다.
벡터 레지스터(Rb)의 각 우수/기수 데이터 엘리먼트는 쌍으
로 비교되어 각 데이터 엘리먼트 쌍 중에서 더 큰 값이 벡
터 레지스더(Rd)의 우수 위치에 기억되고 각 데이터 엘리먼
트 쌍 중에서 더 작은 값이 기수 위치에 기억된다,
연산
예외
없음.
VMOV 무브
포맷
어셈블러 신택스
VMOV.dt Rd, Rb
여기서 dt= {b, b9, h, w, f} 이고 Rd와 Rb는 구조적으로
지정된 레지스터 이름으로 나타내진다.
지원 모드
설명
Rb의 내용은 레지스터(Rd)로 이동된다. 그룹 필드는 소스와
목적 레지스터 그룹을 지정한다. 례지스터 그룹 표기법은
다음과 같다:
VR 현 뱅크 벡터 레지스터
VRA 교체 뱅크 벡터 레지스터
SR 스칼라 레지스터
SP 특수 목적 레지스터
RASR 리턴 어드레스 스택 레지스터
VAC 벡터 어큐물레이터 레지스터(하기 VAC 레지스
터 엔코딩 표 참조)
벡터 레지스터는 이 명령을 사용하여 스칼라 레지스터로 이
동될 수 없음에 주의. VEXTRT 명령이 그 목적을 위해 제
공된다.
VAC 레지스터 엔코딩에 대하여 다음 표를 사용한다;
연산
Rd = Rb
예외
VCSR 또는 VISRC에 예외상태 비트를 세트하는 것은 대응
하는 예외를 야기한다.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다. 교
체뱅크 개념이 VEC64 모드에는 존재하지 않으므로 이 명령
은 VEC64 모드에서 교체 뱅크 레지스터에 대한 이동에 사
용될 수 없음에 주의.
VMUL 승산
포맷
어셈블러 신택스
VMUL.dt VRc, VRd, VRa, VRb
VMUL.dt SRc, SRd, SRa, SRb
여기서 dt= {b, h, w}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
결과를 생성하고; 목적 레지스터(Rc:Rd)에 각 엘리먼트의
배정도 합을 리턴시킨다.
Ra와 Rb는 지정된 데이터 타입을 사용하며, 반면에 Rc:Rd는
적당한 배정도 데이터 타입을 사용한다(각각 int8, int16,
및 int32에 대하여 16, 32, 및 64 비트). 각 배정도 엘리먼
트의 상위 부분은 Rc에 기억된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다. 이 명령은 또한 확장된 결과가 지
원된 데이터 타입이 아니므로 플로트 데이터 타입을 지원하
지 않는다.
VMULA 어큐물레이터로 승산
포맷
어셈블러 신택스
VMULA.dt VRa, VRb
VMULA.dt VRa, SRb
VMULA.dt VRa, #IMM
VMULA.dt SRa, SRb
VMULA.dt SRa, #1MM
여기서 dt= {b, h, w, f}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
결과를 생성하고;그 결과를 어큐물레이터에 기록시킨다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
없음.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMULAF 어큐물레이터 소수부로 승산
포맷
어셈블리 신택스
VMULAF.dt VRa, VRb
VMULAF.dt VRa, SRb
VMULAF.dt VRa, #1MM
VMULAF.dt SRa, SRb
VMULAF.dt SRa, #1MM
여기서 dt= {b, h, w}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 배정도 중간결과를 1비트만큼 좌로
시프트하여; 그 결과를 어큐물레이터에 기록시킨다.
연산
예외
없음.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMULF 소수부 승산
포맷
어샘블러 신택스
VMULF.dt VRa, VRb
VMULF.dt VRa, SRb
VMULF.dt VRa, #IMM
VMULF.dt SRa, SRb
VMULF.dt SRa, #IMM
여기서 dt= {b, h w}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 배정도 중간결과를 1비트만큼 좌로
시프트하여; 그 결과의 상위부분을 목적 레지스터(VRd+1)
로 리턴하고 그 결과의 하위부분을 목적 레지스터(VRd)로
리턴시킨다. VRd는 우수 번호의 레지스터이어야 한다.
연산
예외
없음.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMULFR 소수부 승산 및 반올림
포맷
어셈블러 신택스
VMULFR.dt VRd, VRa, VRb
VMULFR.dt VRd, VRa, SRb
VMULFR.dt VRd, VRa, #IMM
VMULFR.dt SRd, SRa, SRb
VMULFR,dt SRd, SRa, #IMM
여기서 dt= {b, h, w}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
중간결과를 생성하고; 배정도 중간결과를 1비트만큼 좌로
시프트하여; 시프트된 중간 결과를 상위부분에 대하여 반
올림하고; 상위부분을 목적 레지스터(VRd)로 리턴시킨다.
연산
예외
없음.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VMULL 로우 승산
포맷
어셈블러 신택스
VMULL.dt VRd, VRa, VRb
VMULL.dt VRd, VRa, SRb
VMULL.dt VRd, VRa, #IMM
VMULL.dt SRd, SRa, SRb
VMULL.dt SRd, SRa, #IMM
여기서 dt= {b, h, w, f}.
지원 모드
설명
Ra의 각 엘리먼트를 Rb의 각 엘리먼트와 승산하여 배정도
결과를 생성하고; 그 결과의 하위부분을 목적 레지스터
(VRd)로 리턴한다.
플로트 데이터 타입에 대하여 모든 오퍼랜드와 결과는 단정
도이다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
프로그래밍 주의
이 명령은 int9데이터 타입을 지원하지 않고, 대신에 int16
데이터 타입을 사용한다.
VNAND NAND
포맷
어셈블러 신택스
VNAND.dt VRd, VRa, VRb
VNAND.dt VRd, VRa, SRb
VNAND.dt VRd, VRa, #IMM
VNAND.dt SRd, SRa, SRb
VNAND,dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산을 지정
하는 것에 유의.
지원 모드
설명
Ra에 있는 각 엘리먼트의 각 비트와 Rb/즉시 오퍼랜드에 있
는 대응하는 비트를 논리적으로 NAND하고; 그 결과를 Rd
에 리턴시킨다.
연산
없음.
VNOR NOR
포맷
어셈블러 신택스
VNOR.dt VRd, VRa, VRb
VNOR.dt VRd, VRa, SRb
VNOR.dt VRd, VRa, #IMM
VNOR.dt SRd, SRa, SRb
VNOR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산을 지정
하는 것에 유의.
지원 모드
설명
Ra에 있는 각 엘리먼트의 각 비트와 Rb/즉시 오퍼랜드에 있
는 대응하는 비트를 논리적으로 NOR하고; 그 결과를 Rd
에 리턴시킨다.
연산
예외
없음.
VOR OR
포맷
어셈블러 신택스
VOR.dt VRd, VRa, VRb
VOR.dt VRd, VRa, SRb
VOR.dt VRd, VRa, #IMM
VOR.dt SRd, SRa, SRb
VOR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산을 지정
하는 것에 유의.
지원 모드
설명
Ra에 있는 각 엘리먼트의 각 비트와 Rb/즉시 오퍼랜드에 있
는 대응하는 비트를 논리적으로 OR하고; 그 결과를 Rd 에
리턴시킨다.
연산
예외
없음.
VORC 보수 OR
포맷
어셈블러 신택스
VORC.dt VRd, VRa, VRb
VORC.dt VRd, VRa, SRb
VORC.dt VRd, VRa, #IMM
VORC.dt SRd, SRa, SRb
VORC.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산을 지정
하는 것에 유의.
지원 모드
설명
Ra에 있는 각 엘리먼트의 각 비트와 Rb/즉시 오퍼랜드에 있
는 대응하는 비트의 보수를 논리적으로 OR하고; 그 결과를
Rd에 리턴시킨다.
연산
예외
없음.
VPFTCH 사전인출
포맷
어셈블러 신택스
VPFTCH.1n SRb, SRi
VPFTCH.1n SRb, #IMM
VPFTCH,1n SRb+, #SRi
VPFTCH.1n SRb+,#IMM
여기서 1n= {1,2,4, 8}.
설명
유효 어드레스에서 시작하는 다수 벡터 데이터 캐시 라인을
사전인출한다. 캐시 라인의 수는 다음과 같이 지정된다:
LN<1:O>=0O: 1개 64-바이트 캐시 라인이 사전인출된다
LN<1:0>=01: 2개 64-바이트 캐시 라인이 사전인출된다
LN<1:0>=1O: 4개 64-바이트 캐시 라인이 사전인출된다
LN<1:0>=11: 8개 64-바이트 캐시 라인이 사전인출된다
만약 유효 캐시 라인이 64-바이트 바운더리에 없는 경우 그
것은 64-바이트 바운더리에 정렬되도록 먼저 절단된다.
연산
예외
데이터 어드레스 예외 무효.
프로그래밍 주의
EA<31:0>는 로컬 메모리의 바이트 어드레스를 나타낸다.
VPFTCHSP 임시패드로 사전인출
어셈블러 신택스
VPFTCHSP.1n SRp, SRb, SRi
VPFTCHSP,1n SRp, SRb, #IMM
VPFTCHSP.ln SRp, SRb+, SRi
VPFTCHSP.1n SRp, SRb+, #IMM
여기서 1n= {1,2,4, 8}. VPFTCH와 VPFTCHSP는 동일한
연산 코드를 갖는다.
설명
메모리로부터 임시패드로 다수의 64 바이트 블록을 전송한
다. 유효 어드레스는 메모리에 시작 어그레스를 제공하며
SRp는 임시패드에 시작 어드레스를 제공한다. 64-바이트 블
록의 수는 다음과 같이 지정된다:
LN<1:0>=00: 1개 64-바이트 블록이 전송된다
LN<1:0>=01: 2개 64-바이트 블록이 전송된다
LN<1:0>=10: 4개 64-바이트 블록이 전송된다
LN<1:0>=11: 8개 64-바이트 블록이 전송된다
만약 유효 어드레스가 64-바이트 바운더리에 없는 경우 그
것은 64-바이트 바운더리에 정렬되도록 먼저 절단된다. 만
약 SRp의 임시패드 포인터 어드레스가 64-바이트 바운더리
에 없는 경우 그것은 또한 64-바이트 바운더리에 정렬되도
록 먼저 절단된다. 정렬된 임시패드 포인터 어드레스는 전
송된 바이트 수만큼 중분된다.
연산
예외
데이터 어드레스 예의 무효.
VROL 좌로 회전
포맷
어셈블러 신택스
VROL.dt VRd, VRa, SRb
VROL.dt VRd, VRa, #IMM
VROL.dt VRd, SRa, SRb
VROL.dt VRd, SRa, #IMM
여기서 dt = {b, b9, h, w}.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각 데이터 엘리먼트는 스칼라
레지스터(Rb) 또는 IMM 필드에 주어진 비트량 만큼 좌로
회전되어 그 결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
회전량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어
지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에
대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나
동일한 회전량을 정확하게 지정할 의무가 있다. 만약 회전
량이 지정된 데이터 사이즈보다 더 클 경우에 결과는 정의
되지 않는다. n 만큼 좌로 회전하는 것은 E1emSize-n 만큼
우로 회전하는 것과 동등하며, 여기서 ElemSize는 주어진
데이터 사이즈의 비트의 번호를 나타낸다.
VROR 우로 회전
포맷
어셈블러 신택스
VROR.dt VRd, VRa, SRb
VROR.dt VRd, VRa, #IMM
VROR.dt VRd, SRa, SRb
VROR.dt VRd, SRa, #IMM
여기서 dt= {b, b9, h, w}.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각 데이터 엘리먼트는 스칼라
레지스터(Rb) 또는 IMM 필드에 주어진 비트량 만큼 우로
회전되어 그 결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
회전량은 SRb 또는 IMM<4:0>로부터 5비트 번호로서 얻어
지는 점에 주의. 바이트, 바이트9, 하프워드 데이터 타입에
대하여 프로그래머는 데이터 사이즈의 비트수보다 작거나
동일한 회전량을 정확하게 지정할 의무가 있다. 만약 회전
량이 지정된 데이터 사이즈보다 더 클 경우에 결과는 정의
되지 않는다. n 만큼 우로 회전하는 것은 ElemSize-n 만큼
좌로 회전하는 것과 동등하며, 여기서 E1emSize는 주어진
데이터 사이즈의 비트의 번호를 나타낸다.
VROUND 플로팅 포인트를 정수로 반올림
포맷
어셈블러 신택스
VROUND.rm VRd, VRb
VROUND.rm SRd, SRb
여기서 rm= {ninf, zero, near, pinf}.
지원 모드
설명
플로팅 포인트 데이터 포맷에서 벡터/스칼라 레지스더(Rb)
의 내용은 가장 가까운 32비트 정수(워드)로 반올림되며,
그 결과는 벡터/스칼라 레지스더(Rd)에 기억된다. 반올림
모드는 RM에 정의된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 영향을 받지 않는다.
VSATL 하한 경계로 포화
포맷
어셈블러 신택스
VSATL.dt VRd, VRa, VRb
VSATL,dt VRd, VRa, SRb
VSATL.dt VRd, VRa, #IMM
VSATL.dt SRd, SRa, SRb
VSAT.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f}..f 데이터 타입은 9비트 즉
시로 지원되지 않는 것에 유의.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각 데이터 엘리먼트는 벡터/스
칼라 레지스터(Rb) 또는 IMM 필드에 있는 그것의 대응하는
하한값에 대하여 체크된다. 만약 데이터 엘리먼트의 값이
하한값 보다 더 작을 경우 그것은 하한값과 동일하게 설겅
되고, 최종 결과는 벡터/스칼라 레지스티(Rd)에 기억된다.
연산
예의
없음.
VSATU 상한 경계로 포화
포맷
어셈블러 신택스
VSATU.dt VRd, VRa, VRb
VSATU.dt VRd, VRa, SRb
VSATU.dt VRd, VRa, #IMM
VSATU.dt SRd, SRa, SRb
VSATU.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f}..f 데이터 타입은 9비트 즉
시로 지원되지 앞는 것에 유의.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 각 데이터 엘리먼트는 벡터/스
칼라 레지스더(Rb)) 또는 IMM 필드에 있는 그것의 대응하는
상한값에 대하여 체크된다. 만약 데이터 엘리먼트의 값이
상한값 보다 더 클 경우 그것은 상한값과 동일하게 설정되
고, 최종 결과는 벡터/스칼라 레지스터(Rd)에 기억된다.
연산
예외
없음.
VSHFL 셔플
포맷
어셈블러 신택스
VSHFL.dt VRc, VRd, VRa, VRb
VSHFL.dt VRc, VRd, VRa, SRb
여기서 dt= {b, b9, h, w}..w와 .f는 동일한 연산율 지정
하는 것에 유의.
지원 모드
설명
벡터 레지스터(Ra)의, 내용은 하기에 도시된 바와같이 Rb와
뒤석여서(shuffle) 그 결과는 벡터 레지스터(Rc:Rd)에 기억
된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크 사용하지 않는다.
VSHFLH 하이 셔플
포맷
어셈블러 신택스
VSHFLH.dt VRd, VRa, VRb
VSHFLH.dt VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f}..w와 .f는 동일한 연산을
지정하는 것에 유의.
지원 모드
설명
벡터 레지스터(Ra)의 내용은 하기에 도시된 바와같이 Rb와
뒤섞여서(shuffle) 그 결과의 상위부분은 벡터 레지스터
(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크 사용하지 않는다.
VSHFLL 로우 셔플
포맷
어셈블러 신택스
VSHFLL.dt VRd, VRa, VRb
VSHFLL.dt VRd, VRa, SRb
여기서 dt= {b, bg, h, w, f}..w와 f는 동일한 연산을
지정하는 것에 유의.
지원 모드
설명
벡터 레지스터(Ra)의 내용은 하기에 도시된 바와같이 Rb와
뒤석여서(shuffle) 그 결과의 하위부분은 벡터 레지스터
(Rd)에 기억된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크 사용하지 않는다.
VST 기억
포맷
어셈블러 신택스
VST.st Rs, SRb, SRi
VST.st Rs, SRb, #IMM
VST.st Rs, SRb+, SRi
VST.st Rs, SRb+, #IMM
여기서 st= {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs= {VRs,
VRAs, SRs} ..b와 .b9t는 동일한 연산을 지정하며 .64와
VRAs는 함께 지정될 수 없는 점에 유의. 캐시오프 기억을
위해 VSTOFF를 사용한다.
설명
벡터 또는 스칼라 레지스터를 기억한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VSTCB 원형 버퍼로 기억
포맷
어셈블러 신택스
VSTCB.st Rs, SRb, SRi
VSTCB.st Rs, SRb, #IMM
VSTCB.st Rs, SRb+, SRi
VSTCB.st Rs, SRb+, #IMM
여기서 st= {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs= {VRs,
VRAs, SRs} ..b와 .b9t는 동일한 연산을 지정하며 .64와
VRAd는 함께 지정될 수 없는 점에 유의. 캐시오프 로드를
위해 VSTCBOFF를 사용한다.
설명
SRb+1에서 BEGIN 포인터와 SRb+2에서 END 포인터에 의
해 경계된 원형 버퍼로부터 벡터 또는 스칼라 레지스티를
기억한다.
유효 어드레스는 만약 그것이 기억 뿐 아니라 어드레스 업
데이트 연산 이전의 END 어드레스 보다 더 큰 경우 조정된
다. 더욱이 원형 버퍼 경계는 각각 .h와 .w 스칼라 로드에
대하여 하프워드 및 워드 경계에 정렬되어야 한다.
연산
예의
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
프로그래머는 이 명령이 예상과 같이 동작하도록 다음 조건
을 보장하여야 한다:
BEGIN <EA<2*END-BEGIN
즉, EA>BEGlN 및 EA-END<END-BEGlN
VSTD 더블 기억
포맷
어셈블러 신택스
VSTD.st Rs, SRb, SRi
VSTD.st Rs, SRb, #IMM
VSTD.st Rs, SRb+, SRi
VSTD.st Rs, SRb+, #IMM
여기서 st= {b, b9t, h, w,4, 8, 16, 32, 64}, Rs= {VRs,
VRAs, SRs} ..b와 .b9t는 동일한 연산을 지정하며 .64와
VRAs는 함께 지정될 수 없는 점에 유의. 캐시오프 기억을
위해 VSTDOFF를 사용한다.
설명
현재 또는 교체 뱅크 또는 2 스칼라 레지스터로부더 2 벡터
레지스터를 기억한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VSTQ 나중 기억
포맷
어셈블러 신택스
VSTO.st Rs, SRb, SRi
VSTQ.st Rs, SRb, #IMM
VSTO.st Rs, SRb+, SRi
VSTO.st Rs, SRb+, #IMM
여기서 st= {b, b9t, h, w,4, 8, 16, 32, 64} , Rs= {VRs,
VRAs, SRs} ..b와 .b9t는 동일한 연산을 지정하며 .64와
VRAs는 함께 지정될 수 없는 점에 유의. 캐시오프 기억을
위해 VSTQOFF를 사용한다.
설명
현재 또는 교체 뱅크 또는 4 스칼라 레지스터로부터 4 벡터
레지스터를 기억한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VSTR 역순 기억
포맷
어셈블러 신택스
VSTR.st Rs, SRb, SRi
VSTR.st Rs, SRb, #IMM
VSTR.st Rs, SRb+, SRi
VSTR.st Rs, SRb+, #IMM
여기서 st= {4,8,16,32, 64}, Rs= {VRs, VRAs}..64와
VRAs는 함께 지정될 수 없는 점에 유의. 캐시오프 기억을
위해 VSTROFF를 사용한다.
설명
역 엘리먼트 순서로 벡터 레지스터를 기억한다. 이 명령은
스칼라 데이터 소스 레지스터를 지원하지 않는다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
프로그래밍 주의
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.
VSTWS 스트라이드로 기억
포맷
어셈블러 신택스
VSTWS.st Rs, SRb, SRi
VSTWS.st Rs, SRb, #IMM
VSTWS.st Rs, SRb+, SRi
VSTWS.st Rs, SRb+, #IMM
여기서 st= { 8, 16, 32} , Rs= {VRs, VRAs}..64 모드는
지원되지 않으며. 그대신 VST를 사용하는 점에 유의. 캐시
오프 기억을 위해 VSTWSOFF를 사용한다.
설명
유효 어드레스에서 시작하여 스트라이드 제어 레지스티
(Stride Contro1 register)로서 스칼라 레지스터(SRb+1)를
사용하여 벡터 레지스터(VRs)로부터 메모리로 32 바이트가
기억된다.
ST는 각 블록으로부터 기억을 위해 연속된 바이트의 번호와
블록 사이즈를 지정한다. SRb+1는 2 연속 블록의 시작을 분
리하는 바이트의 번호와 스트라이드를 지정한다.
스트라이드는 블록 사이즈와 동일하거나 또는 더 커야 한
다. EA는 정렬된 데이터 사이즈이어야 한다. 스트라이드와
블록 사이즈는 데이터 사이즈의 다수배로 되어야 한다.
연산
예외
데이터 어드레스, 비정렬 억세스 무효.
VSUB 감산
포맷
어셈블러 신택스
VSUB.dt VRd, VRa, VRb
VSUB.dt VRd, VRa, SRb
VSUB.dt VRd, VRa, #1MM
VSUB.dt SRd, SRa, SRb
VSUB.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w, f}.
지원 모드
설명
벡터/스칼라 레지스터(Rb)의 내용은 벡터/스칼라 레지스터
(Ra)의 내용으로부터 감산되어 그 결과는 벡터/스칼라 레지
스더(Rd)에 기억된다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
VSUBS 감산 및 세트
포맷
어셈블러 신택스
VSUBS.dt SRd, SRa, SRb
VSUBS,dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f}.
지원 모드
설명
SRb는 SRa로부터 감산되어 그 결과는 SRd에 기억되고
VCSR에 VFLAG 비트가 세트된다.
연산
예외
오버플로우, 플로팅 포인트 무효 오퍼랜드.
VUNSHFLH 하이 언셔플
포맷
어셈블러 신택스
VUNSHFLH.dt VRd, VRa, VRb
VUNSHFLH.dt VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f}..w와 .f는 동일한 연산을
지정하는 것에 유의.
지원 모드
설명
벡터 레지스터(Ra)의 내용은 하기에 도시된 바와같이 Rb와
언셔플(unshuffle)되어 그 결과의 상위부분은 벡터 레지스
터(Rd)에 리턴된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크 사용하지 않는다.
VUNSHFL 로우 언셔플
포맷
어셈블러 신택스
VUNSHFLL.dt VRd, VRa, VRb
VUNSHFLL.dt VRd, VRa, SRb
여기서 dt= {b, b9, h, w, f}..w와 .f는 동일한 연산을
지정하는 것에 유의.
지원 모드
설명
벡터 레지스터(Ra)의 내용은 하기에 도시된 바와같이 Rb와
언셔플(unshuffle)되어 그 결과의 하위부분은 벡터 레지스
터(Rd)에 리턴된다.
연산
예외
없음.
프로그래밍 주의
이 명령은 엘리먼트 마스크 사용하지 않는다.
VWBACK 재기록
포맷
어셈블러 신택스
VWBACK.1n SRb, SRi
VWBACK.1n SRb, #IMM
VWBACK.1n SRb+, SRi
VWBACK.1n SRb+, #IMM
여기서 1n= {1, 2, 4, 8} .
설명
벡터 데이터 캐시에서 EA에 의해 인덱스가 지정된 캐시 라
인(EA와 태그가 일치하는 것과 반대)은 그것이 수정된 데이
터를 포함한 경우 메모리에 업데이트된다. 만약 1 이상의
캐시 라인이 지정될 경우 다음의 순차적인 캐시 라인은 그
들이 수정된 데이타를 포함할 경우 메모리에 업데이트된다.
캐시 라인의 수는 다음과 같이 지정된다:
LN<1:0>=00: 1개 64-바이트 캐시 라인이 기록된다
LN<1:0>=O1: 2개 64-바이트 캐시 라인이 기록된다
LN<1:0>=10: 4개 64-바이트 캐시 라인이 기록된다
LN<1:0>=11: 8개 64-바이트 캐시 라인이 기록된다
만약 유효 어드레스가 64-바이트 바운더리에 없는 경우 그
것은 64-바이트 바운더리에 정렬되도록 먼저 절단된다.
연산
예외
데이터 어드레스 예의 무효.
프로그래밍 주의
EA<31:0>는 로컬 메모리의 바이트 어드레스를 나타낸다.
VWBACKSP 임시패드로부터 재기록
포맷
어셈블러 신택스
VWBACKSP.1n SRp, SRb, SRi
VWBACKSP.1n SRp, SRb, #IMM
VWBACKSP.1n SRp, SRb+, SRi
VWBACKSP.1n SRp, SRb+, #IMM
여기서 ln = {1, 2, 4, 8} . VWBACK 와 VWBACKSP는
동일한 연산코드를 사용한다.
설명
임시페드로부터 메모리로 다수의 64 바이트 블록을 전송한
다. 유효 어드레스는 메모리에 시작 어그레스를 제공하며
SRp는 임시패드에 시작 어드레스를 제공한다. 64-바이트 블
록의 수는 다음과 같이 지정된다:
LN < 1:O > = OO: 1개 64-바이트 블록이 전송된다
LN < 1:O > = O1: 2개 64-바이트 블록이 진송된다
LN < 1:O > = 1O: 4개 64-바이토 블록이 전송된다
LN<1:0>=11: 8개 64-바이트 블록이 전송된다
만약 유효 어드레스가 64-바이트 바운더리에 없는 경우 그
것은 64-바이트 바운더리에 정렬되도록 먼저 절단된다. 만
약 SRp의 임시패드 포인터 어드레스가 64-바이트 바운더리
에 없는 경우 그것은 또한 64-바이트 바운더리에 정렬되도
록 먼저 절단된다. 정렬된 임시패드 포인터 어드레스는 전
송된 바이트 수만큼 증분된다.
연산
예외
데이터 어드레스 예외 무효.
VXNOR XNOR(익스글루시브 NOR)
VXOR XOR(익스글루시브 OR)
포맷
어셈블러 신택스
VXNOR.dt VRd, VRa, VRb
VXNOR.dt VRd, VRa, SRb
VXNOR.dt VRd, VRa, #IMM
VXNOR.dt SRd, SRa, SRb
VXNOR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, wf}.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 벡터/스칼라 레지스터
(Rb)의 내용에 논리적으로 XNOR되어 그 결과는 벡터/스칼
라 레지스터(Rd)에 기억된다.
연산
예외
없음.
포맷
어셈블러 신택스
VXOR.dt VRd, VRa, VRb
VXOR.dt VRd, VRa, SRb
VXOR.dt VRd, VRa, #IMM
VXOR.dt SRd, SRa, SRb
VXOR.dt SRd, SRa, #IMM
여기서 dt= {b, b9, h, w, f}.
지원 모드
설명
벡터/스칼라 레지스터(Ra)의 내용은 벡터/스칼라 레지스터
(Rb)의 내용에 논리적으로 XOR되어 그 결과는 벡터/스칼
라 레지스터(Rd)에 기억된다.
연산
예외
없음.
VXORALL 모든 엘리먼트 XOR(익스글루시브 OR)
포맷
어셈블러 신택스
VXORALL.dt SRd, VRb
여기서 dt= {b, b9, h, w}..b와 .b9는 동일한 연산을 나
타낸다.
지원 모드
설명
VRb에서 각 엘리먼트의 최하위 비트는 함께 XOR되어; 1비
트 결과는 SRd의 최하위비트로 리턴된다. 이 명령은 엘리먼
트 마스크에 의해 영향을 받지 않는다.
연산
예외
없음.
Claims (4)
- 멀티미디어 신호 프로세서의 단일 명령 다중 데이터를 처리하는 벡터 프로세서에 있어서, 고정된 사이즈와 사용자가 선택 가능한 사이즈로 분할된 데이터 엘리먼트를 갖는 벡터 레지스터를 포함하는 레지스터 파일과; 명령을 디코딩 하는 동안 상기 레지스터 파일로부터 선택된 상기 벡터 레지스터를 식별하고, 상기 명령의 실행 동안 처리될 데이터 엘리먼트의 타입 식별 및 상기 데이터 엘리먼트의 사이즈를 식별하는 디코더와; 상기 벡터 레지스터에 접속된 처리회로;로 구성되고, 상기 처리회로는 명령을 실행할 때 선택된 상기 벡터 레지스터의 데이터에 대한 다수 회의 병렬연산을 실행하며, 상기 병렬연산의 수는 상기 데이터 엘리먼트의 사이즈에 의해 제어되는 것을 특징으로 하는 벡터 프로세서.
- 제1항에 있어서, 상기 디코더가 식별 가능한 상기 데이터 엘리먼트의 사이즈는 8비트, 9비트, 16비트 및 32비트인 것을 특징으로 하는 벡터 프로세서.
- 제1항에 있어서, 상기 디코더가 식별 가능한 상기 데이터 엘리먼트의 타입은 모든 데이터 엘리먼트 사이즈에 대한 정수 타입과 32비트 데이터 엘리먼트에 대한 플로팅 포인트 데이터 타입인 것을 특징으로 하는 벡터 프로세서.
- 멀티미디어 신호 프로세서의 단일 명령 다중 데이터를 처리하는 벡터프로세서의 연산방법에 있어서, 상기 벡터 레지스터에 데이터를 기억하는 단계와; 상기 벡터 레지스터를 식별하는 레지스터 번호와 상기 벡터 레지스터에서 데이터 엘리먼트에 대한 사이즈를 식별하는 사이즈 필드를 포함하는 명령을 디코딩하는 단계와; 상기 벡터 레지스터에 있는 데이터를 상기 데이터 엘리먼트 내에 할당하는 단계와; 다수의 병렬연산을 실행함에 의해 명령을 실행하는 단계로 구성되고, 각각의 연산은 벡터 레지스터의 데이터 엘리먼트에 대응하며 사이즈 필드는 병렬로 실행될 연산 수를 제어하는 것을 특징으로 하는 벡터 프로세서의 연산방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/699,567 US5843250A (en) | 1996-08-19 | 1996-08-19 | Method of forming an image pattern on a die plate |
US8/699,567 | 1996-08-19 | ||
US08/699567 | 1996-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980018071A KR19980018071A (ko) | 1998-06-05 |
KR100267092B1 true KR100267092B1 (ko) | 2000-11-01 |
Family
ID=24809904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970012769A KR100267092B1 (ko) | 1996-08-19 | 1997-04-07 | 멀티미디어신호프로세서의단일명령다중데이터처리 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5843250A (ko) |
KR (1) | KR100267092B1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6599322B1 (en) | 2001-01-25 | 2003-07-29 | Tecomet, Inc. | Method for producing undercut micro recesses in a surface, a surgical implant made thereby, and method for fixing an implant to bone |
US6620332B2 (en) * | 2001-01-25 | 2003-09-16 | Tecomet, Inc. | Method for making a mesh-and-plate surgical implant |
US7018418B2 (en) | 2001-01-25 | 2006-03-28 | Tecomet, Inc. | Textured surface having undercut micro recesses in a surface |
US20040101159A1 (en) * | 2002-11-26 | 2004-05-27 | Xerox Corporation | System and methodology for authenticating and providing hidden feature information for trading cards and other printed collectibles |
US20040101158A1 (en) * | 2002-11-26 | 2004-05-27 | Xerox Corporation | System and methodology for authenticating trading cards and other printed collectibles |
US20040103055A1 (en) * | 2002-11-26 | 2004-05-27 | Xerox Corporation | System and methodology for custom authenticating trading cards and other printed collectibles |
CN101559662B (zh) * | 2009-05-21 | 2011-09-28 | 上海希尔彩印制版有限公司 | 一种织物印染用镍网模辊制造方法及产品 |
GB2543514B (en) * | 2015-10-20 | 2020-04-01 | Ecorenew Dmcc | A Method for Preserving a Mark on a Metallic Workpiece |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4968064A (en) * | 1987-01-13 | 1990-11-06 | Mancuso Robert J | Variable color print |
US5336458A (en) * | 1992-06-08 | 1994-08-09 | Universal Engraving, Inc. | Process of manufacturing embossed signage for handicapped individuals |
US5364494A (en) * | 1993-11-29 | 1994-11-15 | Universal Engraving, Inc. | Metal die acid etch apparatus and process |
-
1996
- 1996-08-19 US US08/699,567 patent/US5843250A/en not_active Expired - Lifetime
-
1997
- 1997-04-07 KR KR1019970012769A patent/KR100267092B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US5843250A (en) | 1998-12-01 |
KR19980018071A (ko) | 1998-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100236527B1 (ko) | 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리 | |
US6058465A (en) | Single-instruction-multiple-data processing in a multimedia signal processor | |
US7937559B1 (en) | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes | |
US8412917B2 (en) | Data exchange and communication between execution units in a parallel processor | |
KR100294016B1 (ko) | 벡터프로세서프로그래밍및벡터프로세서와risc프로세서를구비하는비대칭이중프로세서의병렬프로그래밍 | |
US6289434B1 (en) | Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates | |
US5983336A (en) | Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups | |
US7346881B2 (en) | Method and apparatus for adding advanced instructions in an extensible processor architecture | |
US6754809B1 (en) | Data processing apparatus with indirect register file access | |
KR20170110685A (ko) | 비대칭 멀티-스레딩을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서 | |
CN108205448B (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
US6202143B1 (en) | System for fetching unit instructions and multi instructions from memories of different bit widths and converting unit instructions to multi instructions by adding NOP instructions | |
JPH0926878A (ja) | データ処理装置 | |
JP2001202245A (ja) | 改良式命令セットアーキテクチャを有するマイクロプロセッサ | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
US5854939A (en) | Eight-bit microcontroller having a risc architecture | |
KR100267092B1 (ko) | 멀티미디어신호프로세서의단일명령다중데이터처리 | |
KR100267089B1 (ko) | 스칼라/벡터연산이조합된단일명령복수데이터처리 | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
US6728741B2 (en) | Hardware assist for data block diagonal mirror image transformation | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
US6275925B1 (en) | Program execution method and program execution device | |
CN113853591A (zh) | 将预定义填补值***到向量流中 | |
KR100308182B1 (ko) | 데이터처리시스템및이시스템의동작방법 | |
JP3102399B2 (ja) | データ処理装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130701 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20140630 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20150630 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20160630 Year of fee payment: 17 |
|
EXPY | Expiration of term |