KR100267089B1 - Single instruction multiple data processing with combined scalar/vector operations - Google Patents
Single instruction multiple data processing with combined scalar/vector operations Download PDFInfo
- Publication number
- KR100267089B1 KR100267089B1 KR1019970012609A KR19970012609A KR100267089B1 KR 100267089 B1 KR100267089 B1 KR 100267089B1 KR 1019970012609 A KR1019970012609 A KR 1019970012609A KR 19970012609 A KR19970012609 A KR 19970012609A KR 100267089 B1 KR100267089 B1 KR 100267089B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- vector
- scalar
- data
- instruction
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 447
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 15
- 238000004364 calculation method Methods 0.000 claims description 3
- 239000000872 buffer Substances 0.000 description 47
- 238000010586 diagram Methods 0.000 description 15
- 238000006243 chemical reaction Methods 0.000 description 13
- 230000000295 complement effect Effects 0.000 description 13
- 238000012546 transfer Methods 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 230000009977 dual effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 101000641224 Homo sapiens Vimentin-type intermediate filament-associated coiled-coil protein Proteins 0.000 description 6
- 102100034331 Vimentin-type intermediate filament-associated coiled-coil protein Human genes 0.000 description 6
- 230000001343 mnemonic effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 101100011399 Danio rerio eif3ea gene Proteins 0.000 description 4
- 102000008016 Eukaryotic Initiation Factor-3 Human genes 0.000 description 4
- 101150008815 INT6 gene Proteins 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 101100178280 Rattus norvegicus Homer1 gene Proteins 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 102100022525 Bone morphogenetic protein 6 Human genes 0.000 description 1
- 101710147597 Homer protein homolog 1 Proteins 0.000 description 1
- 101000899390 Homo sapiens Bone morphogenetic protein 6 Proteins 0.000 description 1
- 101000863856 Homo sapiens Shiftless antiviral inhibitor of ribosomal frameshifting protein Proteins 0.000 description 1
- 240000001987 Pyrus communis Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- NRBNGHCYDWUVLC-UHFFFAOYSA-N mtep Chemical compound S1C(C)=NC(C#CC=2C=NC=CC=2)=C1 NRBNGHCYDWUVLC-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
Description
본 발명은 디지탈 신호 프로세서에 관한 것으로, 특히 비디오 및 오디오 인코딩 및 디코딩과 같은 멀티미디어 기능을 위해 명령마다 복수 데이타 엘리먼트의 병렬 처리를 위한 프로세서에 관한 것이다.TECHNICAL FIELD The present invention relates to digital signal processors, and more particularly to processors for parallel processing of multiple data elements per instruction for multimedia functions such as video and audio encoding and decoding.
실시간 비디오 인코딩 및 디코딩과 같은 멀티미디어 어플리케이션을 위한 프로그래머블 디지탈 신호 프로세서(DSP)는 제한된 시간내에 처리되어야만 하는 많은 양의 데이타를 위해 상당한 처리력을 필요로 한다. 디지탈 신호 프로세서를 위한 몇 가지 아키텍춰가 알려져 있다. 대부분의 마이크로프로세서에 사용되는 것과 같은 범용 아키텍춰는 전형적으로 실시간 인코딩 또는 디코딩하는 충분한 여산력을 갖는 DSP를 제공하기 위해 고주파수를 필요로 한다. 이는 DSP의 값을 비싸게 한다.Programmable digital signal processors (DSPs) for multimedia applications such as real-time video encoding and decoding require significant processing power for large amounts of data that must be processed in a limited time. Several architectures for digital signal processors are known. General purpose architectures, such as those used in most microprocessors, typically require high frequencies to provide a DSP with sufficient margin to encode or decode in real time. This makes the DSP expensive.
매우 긴 명령 워드(VLIW) 프로세서는 비교적 간단한 작업과 같이 서로 달리 수행하는 많은 기능 유닛을 갖는 DSP이다. VLIW DSP를 위한 단일 명령은 128 바이트보다 길 수 있고, 개별적인 기능 유닛들이 병렬로 실행하는 개별적인 부품을 갖는다. VLIW DSP는 많은 기능 유닛들이 병렬로 수행할 수 있기 때문에 높은 연산력을 갖는다. VLIW DSP는 또한 각각의 기능 유닛이 비교적 작고 간단하기 때문에 비교적 값이 싸다. VLIW DSP의 문제점은 입력/출력 제어의 처리에서의 비효율성, 호스트 컴퓨터와의 통신, 및 VLIW DSP의 기능 유닛 상에서 병렬 실행에 적합하지 않는 다른 기능들이다. 부수적으로, VLIW 소프트웨어는 종래의 소프트웨어와는 다르며, 프로그램 툴과 VLIW 소프트웨어 아키텍춰에 익숙하지 않은 프로그래머가 부족하기 때문에 개발하기가 어려울 수 있다.Very long instruction word (VLIW) processors are DSPs with many functional units that perform differently, such as relatively simple tasks. A single instruction for a VLIW DSP can be longer than 128 bytes and has separate components that the individual functional units execute in parallel. VLIW DSPs have high computing power because many functional units can execute in parallel. VLIW DSPs are also relatively inexpensive because each functional unit is relatively small and simple. Problems with the VLIW DSP are inefficiencies in the processing of input / output control, communication with the host computer, and other functions that are not suitable for parallel execution on the functional units of the VLIW DSP. Incidentally, VLIW software is different from conventional software and can be difficult to develop because of the lack of programmers and programmers unfamiliar with the VLIW software architecture.
적당한 가격과, 높은 연산력, 및 익숙한 프로그래밍 환경을 제공하는 DSP가 멀티미디어 어플리케이션에 요구된다.There is a need for multimedia applications that provide an affordable price, high computing power, and familiar programming environment.
본 발명의 특징에 따르면, 멀티미디어 디지탈 신호 프로세서(DSP)는 높은 처리력을 제공하기 위해 벡터 데이타(즉, 오퍼런드마다 복수 데이타 엘리먼트)를 조작하는 벡터 프로세서를 구비한다. 상기 프로세서는 RISC형 명령어 세트를 갖는 단일 명령 복수 데이타 아키텍춰를 이용한다. 프로그래머는 그들 대부분이 익숙한 범용 프로세서의 프로그래밍 환경에 익숙하기 때문에 벡터 프로세서의 프로그래밍 환경에 쉽게 적응할 수 있다.In accordance with a feature of the present invention, a multimedia digital signal processor (DSP) includes a vector processor that manipulates vector data (ie, multiple data elements per operand) to provide high processing power. The processor uses a single instruction multiple data architecture with a RISC type instruction set. Programmers can easily adapt to the programming environment of the vector processor because most of them are familiar with the programming environment of the general-purpose processor they are familiar with.
DSP는 범용 벡터 레지스터 세트를 구비한다. 각 벡터 레지스터는 고정된 크기를 갖지만, 사용자가 선택할 수 있는 크기의 개별적인 데이타 엘리먼트로 파티션되어 있다. 따라서, 벡터 레지스터에 저장된 데이타 엘리먼트의 수는 엘리먼트에 대해 선택된 크기에 따른다. 예를 들어, 32 바이트 레지스터는 32개의 8 비트 데이타 엘리먼트, 16개의 16 비트 데이타 엘리먼트, 또는 8개의 32 비트 데이타 엘리먼트로 나누어질 수 있다. 데이타 크기 및 유형의 선택은 벡터 레지스터와 연관된 데이타를 처리하는 명령에 의해 이루어지고, 명령을 위한 실행 데이타 경로는 명령에 의해 지시된 데이타 크기에 따르는 다수의 병렬 연산을 수행한다.The DSP has a set of general purpose vector registers. Each vector register has a fixed size, but is partitioned into individual data elements of user-selectable size. Thus, the number of data elements stored in the vector register depends on the size selected for the element. For example, a 32 byte register can be divided into 32 8 bit data elements, 16 16 bit data elements, or 8 32 bit data elements. The selection of data size and type is made by an instruction that processes the data associated with the vector register, and the execution data path for the instruction performs a number of parallel operations in accordance with the data size indicated by the instruction.
벡터 프로세서를 위한 명령은 오퍼런드로서 벡터 레지스터 또는 스칼라 레지스터를 가질 수 있고, 연산력이 높도록 병렬인 벡터 레지스터의 복수 데이타 엘리먼트를 조작한다. 본 발명에 따른 벡터 프로세서를 위한 예시적인 명령은 : 코프로세서 인터페이스 연산: 흐름 제어 연산: 로드/저장 연산: 및 논리/산술 연산을 포함한다. 상기 논리/산술 연산은 결과로 나타나는 데이타 벡터의 데이타 엘리먼트를 생성하기 위해 한 벡터 레지스터로부터의 데이타 엘리먼트를 하나 이상의 다른 벡터 레지스터로부터의 대응하는 데이타 엘리먼트와 결합하는 연산을 포함한다. 다른 논리/산술 연산은 하나 이상의 벡터 레지스터로부터의 여러 데이타 엘리먼트를 합성하거나 또는 벡터 레지스터로부터의 데이타 엘리먼트와 스칼라 양을 합성한다.An instruction for a vector processor may have a vector register or a scalar register as an operand, and manipulates multiple data elements of the vector register in parallel to be highly computational. Exemplary instructions for a vector processor in accordance with the present invention include: coprocessor interface operations: flow control operations: load / store operations: and logic / arithmetic operations. The logical / arithmetic operation includes an operation that combines data elements from one vector register with corresponding data elements from one or more other vector registers to produce data elements of the resulting data vector. Other logic / arithmetic operations either synthesize several data elements from one or more vector registers or synthesize data elements and scalar amounts from the vector registers.
벡터 프로세서 아키텍춰의 확장은 각각 스칼라 데이타 엘리먼트를 포함하는 스칼라 레지스터를 더한다. 스칼라 및 벡터 레지스터의 조합은 벡터의 각 데이타 엘리먼트를 스칼라 값과 병렬로 결합하는 연산을 포함하도록 설정된 벡터 프로세서의 명령의 확장을 용이하게 한다. 예를 들어, 하나의 명령은 벡터의 데이타 엘리먼트에 스칼라 값을 곱한다. 스칼라 레지스터는 또한 벡터 레지스터로부터 추출되거나 또는 그것에 저장될 단일 데이타 엘리먼트를 저장하기 위한 장소를 제공한다. 상기 스칼라 레지스터는 또한 벡터 프로세서와 스칼라 레지스터만을 제공하는 아키텍춰를 갖는 코프로세서 간의 정보의 전달과, 로드/저장 연산을 위한 효율적인 어드레스의 계산이 용이하다.The extension of the vector processor architecture adds scalar registers, each containing a scalar data element. The combination of scalar and vector registers facilitates the expansion of the instructions of the vector processor set to include operations that combine each data element of the vector in parallel with the scalar value. For example, one instruction multiplies the vector's data elements by scalar values. Scalar registers also provide a place for storing a single data element to be extracted from or stored in a vector register. The scalar registers also facilitate the transfer of information between vector processors and coprocessors having architectures that provide only scalar registers, and efficient computation of addresses for load / store operations.
본 발명의 다른 특징에 따르면, 벡터 프로세서의 벡터 레지스터는 뱅크로 구성되어 있다. 각 뱅크는 "현재의(current)" 뱅크로 선택되는 한편, 다른 뱅크는 "대체(alternative)" 뱅크이다. 벡터 프로세서의 제어 레지스터에 있는 "현재의 뱅크" 비트는 현재의 뱅크를 가리킨다. 벡터 레지스터를 식별하는데 필요한 비트수를 줄이기 위해, 일부 명령은 레지스터 번호만을 제공하여 현재의 뱅크에서 벡터 레지스터를 식별한다. 로드/저장 명령은 어느 한 뱅크로부터 벡터 레지스터를 식별하기 위한 부수적인 비트를 갖는다. 따라서, 로드/저장 연산은 현재의 뱅크에 있는 데이타의 조작 동안 대체 뱅크로 데이타를 훼치할 수 있다. 이는 화상 처리 및 그래픽 프로시져를 위한 소프트웨어 파이프라인을 용이하게 하고, 논리/산술 연산이 대체 레지스터 뱅크를 액세스하는 로드/저장 연산와는 다른 순서로 수행될 수 있기 때문에 데이타를 훼치할 때 프로세서 지연을 감소시킨다. 다른 명령에서, 대체 뱅크는 현재의 뱅크로부터의 벡터 레지스터와 대체 뱅크로부터의 대응하는 벡터레지스터를 포함하는 이중 크기(double-size) 벡터 레지스터의 사용을 가능하게 한다. 이와 같은 이중 크기 레지스터는 명령 구문으로부터 식별될 수있다. 벡터프로세서에 있는 제어 비트는 디폴트 벡터 크기가 하나 또는 두개의 벡터 레지스터 중 어느 하나이도록 설정될 수 있다. 대체 뱅크는 또한 셔플(shuffle), 언셔플 (unshuffle), 세춰레이트(saturate), 두개의 근원지와 두개의 목적지 레지스터를 갖는 조건 이동(conditional moves)와 같은 복잡한 명령의 구문에서 적은 수의 명시적 식별 오퍼런드의 사용을 가능하게 한다.According to another feature of the invention, the vector register of the vector processor is organized into banks. Each bank is selected as a "current" bank, while the other bank is an "alternative" bank. The "current bank" bit in the control register of the vector processor indicates the current bank. To reduce the number of bits needed to identify a vector register, some instructions only provide a register number to identify the vector register in the current bank. The load / store instruction has additional bits to identify the vector register from either bank. Thus, the load / store operation may fetch data into the alternate bank during manipulation of the data in the current bank. This facilitates a software pipeline for image processing and graphics procedures, and reduces processor delay when fetching data because logical / arithmetic operations can be performed in a different order than load / store operations that access alternate register banks. . In another instruction, the replacement bank enables the use of a double-size vector register that includes a vector register from the current bank and a corresponding vector register from the replacement bank. Such double size registers can be identified from the command syntax. The control bits in the vector processor may be set such that the default vector size is either one or two vector registers. Alternate banks can also identify fewer explicit phrases in complex command syntax, such as shuffle, unshuffle, saturate, conditional moves with two source and two destination registers. Enable the use of operands.
벡터 프로세서는 또한 쿼드(quad), 셔플, 언셔플, 페어-와이즈 최대 및 교환(pair-wise maximum and exchange), 및 세춰레이트와 같은 신규한 명령을 구현한다. 이들 명령들은 비디오 인코딩 및 디코딩과 같은 멀티미디어 기능에 공통인 연산을 수행하고, 다른 명령에 세트가 동일한 기능을 수행하는데 필요할 두개 이상의 명령을 대신한다. 따라서, 벡터 프로세서 명령어 세트는 멀티미디어 어플리케이션에서 프로그램의 효율성과 속도를 향상시킨다.Vector processors also implement new instructions such as quad, shuffle, unshuffle, pair-wise maximum and exchange, and segmentation. These instructions perform operations common to multimedia functions such as video encoding and decoding, and supersede two or more instructions that a set of other instructions would need to perform the same function. Thus, the vector processor instruction set improves the efficiency and speed of programs in multimedia applications.
제1도는 본 발명의 실시예에 따른 멀티미디어 프로세서의 블럭도.1 is a block diagram of a multimedia processor according to an embodiment of the present invention.
제2도는 제1도의 멀티미디어 프로세서를 위한 벡터 프로세서의 블럭도.2 is a block diagram of a vector processor for the multimedia processor of FIG.
제3도는 제2도의 벡터 프로세서를 위한 명령 훼치부의 블럭도.3 is a block diagram of an instruction fetch unit for the vector processor of FIG.
제4도는 제2도의 벡터 프로세서를 위한 명령 훼치부의 블럭도.4 is a block diagram of an instruction fetch unit for the vector processor of FIG.
제5a, 5b 및 5c도는 제2도의 벡터 프로세서의 레지스터-대-레지스터 명령, 로드 명령, 및 저장 명령에 대한 실행 파이프라인의 스테이지를 도시하는 도면.5A, 5B, and 5C illustrate stages of an execution pipeline for register-to-register, load, and store instructions of the vector processor of FIG.
제6a도는 제2도의 벡터 프로세서를 위한 실행 데이타 경로의 블럭도.6A is a block diagram of an execution data path for the vector processor of FIG.
제6b는 제6a도의 실행 데이타 경로에 대한 레지스터 화일의 블럭도.FIG. 6B is a block diagram of a register file for the execution data path of FIG. 6A. FIG.
제6c도는 제6a도의 실행 데이타 경로에 대한 병렬 프로세싱 논리부의 블럭도.6C is a block diagram of parallel processing logic for the execution data path of FIG. 6A.
제7도는 제2도의 벡터 프로세서에 대한 로드/저장부의 블럭도.7 is a block diagram of a load / store unit for the vector processor of FIG.
제8도는 본 발명의 실시예에 따른 벡터 프로세서의 명령 세트에 대한 포맷도.8 is a format diagram for an instruction set of a vector processor according to an embodiment of the present invention.
* 도면의 주요 부분에 대한 부호의 설명* Explanation of symbols for the main parts of the drawings
100 : 멀티미디어 신호 프로세서(MSP) 105 : 코어 프로세싱100: multimedia signal processor (MSP) 105: core processing
110 : 범용 프로세서 120 : 벡터 프로세서110: general purpose processor 120: vector processor
130 : 캐쉬 서브시스템 140, 150 : 시스템 버스130:
142 : 시스템 타이머 146 : 비트 스트림 프로세서142: system timer 146: bit stream processor
148 : 인터럽트 콘트롤러 152 : 디바이스 인터페이스148: interrupt controller 152: device interface
156 : 국부 버스 인터페이스 158 : 메모리 콘트롤러156 local bus interface 158 memory controller
162, 192 : 명령어 캐쉬 164, 194 : 데이타 캐쉬162, 192:
180 : 캐쉬 제어부 220 : 디코더180: cache control unit 220: decoder
230 : 스케쥴러 310 : 주 명령어 버퍼230: scheduler 310: main command buffer
312 : 보조 명령어 버퍼 340, 342, 344 : 레지스터312:
350 : 가산기 420 : 제어 파이프350: adder 420: control pipe
421 내지 427 : 실행 레지스터 514, 515 : 실행 스테이지421 to 427: execution registers 514 and 515: execution stage
610 : 레지스터 화일 612, 614, 616, 618 : 선택회로610: register files 612, 614, 616, 618: selection circuit
620, 626 : 곱셈기 630 : 산술 논리부620, 626: multiplier 630: arithmetic logic
640 : 누산기640: Accumulator
도1은 본 발명의 실시예에 따른 멀티미디어 신호 프로세서(MSP)(100)의 블럭도를 도시한다. 멀티미디어 프로세서(100)는 범용 프로세서(110)와 벡터 프로세서(120)를 포함하는 프로세싱 코어(105)를 구비한다. 프로세싱 코어(105)는 SRAM (160 및 190), ROM(170), 및 캐쉬 제어부(180)를 포함하는 캐쉬 서브시스템 (130)을 통해 멀티미디어 프로세서(100)의 나머지 부분에 접속된다. 캐쉬 제어부 (180)는 프로세서(110)를 위해 명령어 캐쉬(162)와 데이타 캐쉬(164)로서 SRAM (160)을 컨피그할 수 있고, 벡터 프로세서(120)를 위해 명령어 캐쉬(192)와 데이타 캐쉬(194)로서 SRAM(190)를 컨피그할 수 있다.1 shows a block diagram of a multimedia signal processor (MSP) 100 in accordance with an embodiment of the present invention. The
온-칩 ROM(170)은 프로세서(110)를 위해 데이타와 명령어를 포함하고 역시 캐쉬로서 컨피그될 수 있다. 예시적인 실시예에서, ROM(170)은 : 리셋 및 초기화 프로시져: 자기-시험 진단 프로시져: 인터럽트 및 예외 핸들러: 및 사운드블러스트 에뮬레이션을 위한 서브루틴: V, 34 모뎀 신호 프로세싱을 위한 서브루틴: 일반적인 텔레포니 기능: 1-D 및 3-D 그래픽스 서르루틴 라이브러리: 및 MPEG-1, MPEG-2 H.261, H.263, G.728 및 G.723과 같은 오디오 및 비디오 표준을 위한 서브루틴 라이브러리를 포함한다.On-
캐쉬 서브시스템(130)은 프로세서(110 및 120)에 접속되어 두개의 시스템 버스(140과 150)으로 향하고, 프로세서(110 및 120)를 위한 캐쉬 및 스위칭 스테이션 모두로서 동작하고, 디바이스 버스(140 및 150)에 결합되어 있다. 시스템 버스(150)는 높은 클럭 주파수로 동작하고, 외부 국부 메모리를 위한 인터페이스, 호스트 컴퓨터의 국부 버스, 직접 메모리 액세스, 및 다영한 아날로그 대 디지탈 및 디지탈 대 아날로그 변환기를 각각 제공하는 메모리 콘트롤러(158), 국부 버스 인터페이스(156), DMA 콘트롤러(154), 및 디바이스 인터페이스(152)에 접속된다. 버스(140)에 접속되어 있는 것은 시스템 타이머(142), UART(유니버셜 비동기 수신기 트랜시버)(144), 비트스트림 프로세서(146), 및 인터럽트 콘트롤러(148)이다. "멀티미디어 신호 프로세서에서 멀티프로세서 연산" 및 "비디오 데이타를 처리하기 위한 방법 및 장치"라는 발명의 명칭을 갖는 본 발명에 참조로 일체화된 특허출원은 프로세서(110 및 120)가 캐쉬 서브시스템(130) 및 버스(140 및 150)를 액세스하는 예시적인 디바이스 및 캐쉬 서브시스템(130)의 동작을 보다 상세히 설명한다.
프로세서(110 및 120)는 개별적인 프로그램 스래드를 실행하고 그들에 할당된 특정 작업의 보다 효율적인 실행을 위해 구조적으로 다르다. 프로세서(110)는 주로 실시간 연산 시스템의 실행과 같은 제어 기능 및 많은 각각의 연산을 필요로 하지 않는 유사한 기능을 위한 것이다. 따라서, 프로세서(110)는 고도의 연산력을 필요로 하지 않으며, 종래의 범용 프로세서 아키텍춰를 이용하여 구현될 수 있다. 벡터 프로세서(120)는 대부분 멀티미디어 프로세싱에 공통인 데이타 블럭에 대한 반복적인 연산을 포함하는 숫자 크러싱(number crushing)을 수행한다. 고도의 연산력과 비교적 간단한 프로그래밍을 위해, 벡터 프로세서(120)는 SIMD(Single Instruction Multimedia Data) 아키텍춰를 가지며, 예시적인 실시예에서, 벡터 프로세서(120)에서 대부분의 경로는 벡터 데이타 조작을 지원하기 위해 288 또는 576 비트 폭이다. 부수적으로, 벡터 프로세서(120)를 위한 명령어 세트는 특히 멀티미디어 문제에 적합한 명령어를 포함한다.
예시적인 실시예에서, 프로세서(110)는 40 ㎒에서 동작하는 32 비트 RISC 프로세서이고, ARM 7 표준에 의해 정의된 바와 같이 레지스터 세트를 포함하는 ARM 7 프로세서의 아키텍춰에 맞는다. ARM 7 RISC 프로세서를 위해 설정된 아키텍춰 및 명령어는 "ARM 7 DM 데이타 쉬트", 문서번호 : Advance RISC Machines Ltd. 로부터 입수할 수 있는 ARM DDI 0010G에 설명되어 있다. 상기 ARM 7 DM 데이타 쉬트는 이하 그 전문이 본 발명의 참조로 일체화되어 있다. 부록 A 는 예시적인 실시예에서 ARM 7 명령어의 확장을 설명한다.In an exemplary embodiment,
벡터 프로세서(120)는 벡터 및 스칼라 양 모두를 조작한다. 예시적인 실시 예에서, 벡터 데이타 프로세서(120)는 80 ㎒에서 동작하는 파이프라인된 RISC 엔진으로 구성된다. 벡터 프로세서(120)의 레지스터는 32 비트 스칼라 레지스터, 32 비트 특수 목적 레지스터, 288 비트 벡터 레지스터의 두 뱅크, 및 이중 크기(즉, 576 비트)의 두개의 벡터 누산 레지스터를 구비한다. 부록 C 는 벡터 프로세서 (120)의 예시적인 실시예를 위한 레지스터 세트를 설명한다. 예시적인 실시예에서, 프로세서(120)는 0 에서 31 까지의 범위에 이르는 5 비트 레지스터 번호들에 의해 명령어에 식별된다. 또한 32 벡터 레지스터의 두개 뱅크로 구성된 64 개 288 비트 벡터 레지스터가 존재한다. 각각의 벡터 레지스터는 1 비트 뱅크 번호(0 또는 1) 및 0 에서 31 까지의 범위에 이르는 5 비트 벡터 레지스터 번호로서 식별될 수 있다. 대부분의 명령어는 벡터 프로세서(120)의 제어 레지스터 VCSR에 저장된 디폴트 뱅크 비트 CBANK로 가리켜진 현재의 뱅크에 있는 벡터 레지스터를 액세스한다. 두번째 제어 비트 VEC 4는 디폴트로 레지스터 번호가 각 뱅크로부터의 레지스터를 포함하는 이중 크기 벡터 레지스터를 식별하는 지를 가리킨다. 명령어의 구문은 스칼라 레지스터를 식별하는 레지스터 번호로부터 벡터 레지스터를 식별하는 레지스터 번호를 구별한다.
각각의 벡터 레지스터는 프로그램가능한 크기의 데이타 엘리먼트로 파티션될 수 있다. 표 1 은 288 비트 벡터 레지스터내의 데이타 엘리먼트를 지원하는 데이타 유형을 도시한다.Each vector register can be partitioned into data elements of programmable size. Table 1 shows the data types that support data elements in the 288 bit vector register.
[표 1]TABLE 1
부록 D 는 본 발명의 예시적인 실시예에서서 지원되는 데이타 크기와 유형의 자세한 설명을 제공한다.Appendix D provides a detailed description of the data sizes and types supported in an exemplary embodiment of the present invention.
int 9 데이타형의 경우, 9 비트 바이트가 288 비트 벡터 레지스터에 순차적 으로 팩되지만, 다른 데이타형의 경우 288 비트 벡터 레지스터의 매 9 번째 비트가 사용되지 않는다. 288 비트 벡터 레지스터는 328 비트 또는 9 비트 정수 데이타 엘리먼트, 16 개의 16 비트 정수 데이타 엘리먼트, 또는 8 개의 32 비트 정수 또는 부동 소수점 엘리먼트를 보유할 수 있다. 부수적으로, 두개의 벡터 레지스터가 이중 크기 벡터의 데이타 엘리먼트에 조합될 수 있다. 본 발명의 예시적인 실시예에서, 제어 비트 VEC 64를 제어 및 상태 레지스터 VCSR에 세팅함으로서 이중 크기 (576 비트)가 벡터 레지스터의 디폴트 크기인 모드 VEC 64에 위치시킨다.For the
또한 멀티미디어 프로세서(100)는 프로세서(110 및 120) 모두에 액세스할 수 있는 32 비트 확장 레지스터(115)의 세트를 수용한다. 부록 B 는 본 발명의 예시적인 실시예에서 확장 레지스터 세트 및 그 기능을 설명한다. 벡터 프로세서 (120)의 확장 레지스터 및 스칼라 및 특수 목적 레지스터는 몇몇 환경에서 프로세서 (110)에 액세스할 수 있다. 두개의 특수 "사용자" 확장 레지스터는 두개의 판독 포트를 가짐으로서 프로세서(110 및 120)가 레지스터를 동시에 판독할 수 있다. 다른 확장 레지스터는 동시에 액세스될 수 없다.The
벡터 프로세서(120)는 벡터 프로세서(120)가 실행중 또는 아이들인 지를 가리키는 두개의 선택적인 상태 VP_RUN 및 VP_IDLE를 갖는다. 프로세서(110)는 벡터 프로세서(120)가 상태 VP_IDLE에 있을 때 벡터 프로세서(120)의 스칼라 또는 특수 목적 레지스터를 판독 또는 기록할 수 있지만, 벡터 프로세서(120)가 상태 VP_RUN에 있는 동안 벡터 프로세서(120)의 레지스터를 판독 또는 기록하는 프로세서(110)의 결과는 정의되어 있지 않다.
프로세서(110)를 위한 ARM 7 명령어 세트의 확장은 벡터 프로세서(120)의 확장 레지스터 및 스칼라 또는 특수 목적 레지스터를 액세스하는 명령어를 포함한다. 명령어 MFER 및 MFEP는 확장 레지스터 및 벡터 프로세서(120)의 스칼라 또는 특수 목적 레지스터에서 프로세서(110)의 범용 레지스터로 각각 데이타를 이동시킨다. 명령어 MTER 및 MTEP는 각각 프로세서(110)의 범용 레지스터에서 확장 레지스터 및 벡터 프로세서(120)의 및 스칼라 또는 특수 목적 레지스터로 데이타를 이동시킨다. TESTSET 명령어는 확장 레지스터를 판독하고 모두 확장 레지스터의 비트 30 을 1로 세트시킨다. 명령어 TESTSET는 프로세서(110)가 나온 결과를 판독(또는 사용)한 프로세서(120)에 시그날하기 위해 비트 30 를 세트시킴으로서 사용자/생산자 동기화를 용이하게 한다. STARTVP와 INTVP를 위한 다른 명령어는 벡터 프로세서(120)의 동작 상태를 제어한다.The extension of the
프로세서(110)는 벡터 프로세서(120)의 동작을 제어하기 위해 마스터 프로세서로서 동작한다. 프로세서(110 와 120)간의 제어의 비동기 분할을 사용함으로서 프로세서(110 및 120)의 동기화문제를 간단하게 한다. 프로세서(110)는 벡터 프로세서(120)가 상태 VP_IDLE에 있는 동안 벡터 프로세서(120)를 위한 프로그램 카운터에 명령어 어드레스를 기록함으로서 벡터 프로세서(120)를 초기화시킨다. 다음에 프로세서(110)는 벡터 프로세서(120)를 상태 VP_RUN으로 바꾸는 STARTVP 명령어를 실행한다. 상태 VP_RUN에서, 벡터 프로세서(120)는 캐쉬 서브시스템(130)을 통해 명령어를 훼치하고 자신의 프로그램의 실행을 계속하면서 프로세서(110)와 병렬로 그와 같은 명령어를 실행한다. 시작되며, 벡터 프로세서(120)는 예외를 만날때까지 실행을 계속하고, 적당한 조건이 충족되면 VCJOIN 또는 VCINT 명령어를 실행하거나 또는 프로세서(120)에 의해 인터럽트된다. 벡터 프로세서(120)는 벡터 프로세서(120)가 상태 VP_IDLE에 재진입할 때 그 결과를 확장 레지스터에 기록하고, 그 결과를 프로세서(110 및 120)의 공유 어드레스 공간에 기록하거나 또는 그 결과를 프로세서(110)가 액세스하는 스칼라 또는 특수 목적 레지스터에 위치시킴으로서 프로그램 실행의 결과를 프로세서(120)로 넘긴다.The
벡터 프로세서(120)는 그 자신의 예외를 처리하지 않는다. 예외를 유발하는 명령어를 실행하면, 벡터 프로세서(120)는 상태 VP_IDLE에 진입하고 직접 라인을 통해 인터럽트 요구를 프로세서(110)에 시그날한다. 벡터 프로세서(120)는 프로세서(110)가 다른 STARTVP 명령어를 실행할 때까지 상태 VP_IDLE에 남는다. 프로세서(110)는 예외의 성질을 판단하기 위해 벡터 프로세서(120)의 레지스터 VISRC를 판독하고, 벡터 프로세서(120)를 다시 초기화시킴으로서 가능한 한 예외를 처리한 다음, 필요하다면 예외를 재시작하기 위해 벡터 프로세서(120)를 다이렉트할 책임이 있다.
프로세서(110)에 의해 실행된 INTVP 명령어는 벡터 프로세서(120)로 하여금 아이들 상태 VP_IDLE로 진입하게 한다. 예를 들어, 명령어 INTVP는 비디오 디코딩과 같은 하나의 작업에서 사운드 카드 에뮬레이션과 같은 다른 작업으로 벡터 프로세서를 전환시키는 멀티태스킹 시스템에 사용될 수 있다.The INTVP instruction executed by
벡터 프로세서 명령어 VCINT 및 VCJOIN은 명령어에 의해 가리켜진 조건이 충족되었다면, 벡터 프로세서(120)에 의한 실행을 중지하고, 벡터 프로세서(120)를 상태 VP_IDLE에 놓으며 이와 같은 요구가 마스크될 때까지 인터럽트 요구를 프로세서(110)에 발행하는 흐름 제어 명령어이다. 벡터 프로세서(120)의 프로그램 카운터(특수 목적 레지스터)는 VCINT 또는 VCJOIN 명령어이후 명령어 어드레스를 가리킨다. 프로세서(110)는 벡터 프로세서(120)의 인터럽트 소스 레지스터 VISRC를 점검하여 VCINT 또는 VCJOIN 명령어가 인터럽트 요구를 유발하였는 지를 결정한다. 벡터 프로세서(120)가 보다 큰 데이타 버스를 가지고 그 레지스터를 저장 및 복구하는데 보다 효율적이기 때문에, 벡터 프로세서(120)에 의해 실행된 소프트웨어는 구문 전환 동안 레지스터를 저장 및 복구하여야 한다. 상기 일체로 된 특허 출원 발명의 명칭 "마이크로프로세서에서 효율적인 구문 저장 및 복구"는 구문 전환을 위한 예시적인 시스템을 설명한다.The vector processor instructions VCINT and VCJOIN stop execution by the
도2는 도1의 벡터 프로세서(120)의 예시적인 실시예의 주요 기능 블럭도이다. 벡터 프로세서(120)는 명령어 훼치부(IFU)(210), 디코더(220), 스케쥴러(230), 실행 데이타 경로(240), 및 로드/저장부(LSU)(250)를 구비한다. IFU(210)는 명령어를 훼치하고 분기와 같은 흐름 제어 명령어를 처리한다. 명령어 디코더(220)는 IFU(210)로부터 도달 순서로 사이클 마다 하나의 명령어를 디코드하고, 명령어로부터 디코드된 필드 값을 스케쥴러(230)의 FIFO에 기록한다. 스케쥴러(230)는 연산의 실행 스테이지에 필요하다면 실행 제어 레지스터로 발행된 필드 값을 선택한다. 발행 선택은 실행 데이타 경로(240) 또는 로드/저장부(250)와 같은 프로세싱 자원의 의존성과 이용가능성에 따른다. 실행 데이타 경로(240)는 벡터 또는 스칼라 데이타를 조작하는 논리/산술 명령어를 실행한다. 로드/저장부(25)는 벡터 프로세서 (120)의 어드레스 공간을 액세스하는 로드/저장 명령어를 실행한다.2 is a main functional block diagram of an exemplary embodiment of the
도3은 주 명령어 버퍼(310)와 보조 명령어 버퍼(312)로 나누어지는 명령어 버퍼를 포함하는 IFU(210)의 실시예에 대한 블럭도를 도시한다. 주 버퍼(310)는 현재의 프로그램 카운트에 대응하는 명령어를 포함하는 8개의 연속하는 명령어를 수용한다. 보조 버퍼(312)는 버퍼(310)의 명령어를 즉시 따라가는 8개의 명령어를 수용한다. IFU(210)는 또한 버퍼(310 또는 312)의 다른 흐름 제어 명령어의 목표를 포함하는 8개의 연속하는 명령어를 수용하는 분기 목표 버퍼(314)를 포함한다. 예시적인 실시예에서, 벡터 프로세서(120)는 각 명령어가 32 비트 길이인 RISC형 명령어 세트를 사용하고, 버퍼(310, 312, 및 314)는 8 x 32 비트 버퍼로 256 비트 명령어 버스를 통해 캐쉬 서브시스템(130)에 접속된다. IFU(210)는 캐쉬 서브시스템 (130)에서 임의의 버퍼(310, 312, 또는 314)로 단일 클럭 사이클로 8 개의 명령어를 로드할 수 있다. 레지스터(340, 342 및 344)는 각각 버퍼(310, 312 및 314)에 로드된 명령어에 대한 베이스 어드레스를 가리킨다.3 shows a block diagram of an embodiment of an
멀티플렉서(332)는 주 명령어 버퍼(310)로부터 현재의 명령어를 선택한다. 만일 현재의 명령어가 흐름 제어 명령어가 아니고 명령어 레지스터(330)에 저장된 명령어가 실행의 디코드 스테이지로 진행하면, 현재의 명령어는 명령어 레지스터 (330)에 저장되고, 프로그램 카운트는 증가된다. 프로그램 카운트를 증가시켜 버퍼(310)의 마지막 명령어를 선택한 후, 다음 세트의 8 명령어가 버퍼(310)에 로드되다. 만일 버퍼(312)가 소정의 8 명령어를 포함하면, 버퍼(312) 및 레지스터 (342)의 내용은 즉시 버퍼(310) 및 레지스터(340)로 이동되고, 8개 이상의 명령어가 캐쉬 시스템(130)으로부터 보조 버퍼(312)로 프리훼치된다. 가산기(350)는 레지스터(342)에 있는 베이스 어드레스로부터 다음 명령어 세트의 어드레스와 멀티플렉서(352)에 의해 선택된 오프셋을 결정한다. 가산기(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)에 계속 제공할 수 있다.If the current instruction is a flow control instruction,
분기 목표 버퍼(314)에 대한 명령어를 프리훼치하기 위해, 스캐너(320)는 버퍼(310 및 312)를 스캔하여 현재의 프로그램 카운트의 뒤에 오는 다음 흐름 제어 명령어를 찾는다. 만일 흐름 제어 명령어가 버퍼(310 또는 312)에서 발견되면, 스캐너(320)는 명령어를 수용하고 있는 버퍼(310 또는 312)의 베이스 어드레스로부터 흐름 제어 명령어의 목표 어드레스를 포함하는 8개의 명령어의 정렬된 세트로 오프셋을 결정한다. 멀티플렉서(352 및 354)는 흐름 제어 명령어로부터의 오프셋과 레지스터(340 또는 342)로부터의 베이스 어드레스를 버퍼(314)에 대해 새로운 베이스 어드레스르 생성하는 가산기(350)로 공급한다. 새로운 베이스 어드레스는 다음에 분기 목표 버퍼(314)에 대해 8 명령어를 공급하는 캐쉬 서브시스템(130)으로 전달된다.To prefetch instructions for
"감소 및 조건 분기" 명령어 VD1CBR, VD2CBR 및 VD3CBR 및 "변경 제어 레지스터" 명령어 VCHGCR와 같은 흐름 제어 명령어를 취급하는데 있어, IFU(210)는 프로그램 카운트 이외에 레지스터 값을 바꿀 수 있다. IFU(210)가 흐름 제어 명령어가 아닌 명령어를 발견하면, 해당 명령어는 그곳에서 명령어 레지스터(330)에서 디코더(220)로 전달한다.In dealing with flow control instructions, such as the " reduce and condition branch " instructions VD1CBR, VD2CBR and VD3CBR, and the " change control register " If the
디코더(220)는 도4에 도시된 바와 같이 스케쥴러(230)의 FIFO 버퍼(410)이 필드에 제어 값을 기록함으로서 명령어를 디코드한다. FIFO 버퍼(410)는 네 행의 플립-플롭을 수용할 수 있는데, 이들 각각은 한 명령어의 실행을 제어하기 위한 5 필드의 정보를 수용할 수 있다. 행 0 내지 3 은 가장 오래된 것에서 가장 최근의 명령어에 대한 정보를 각각 보유하고, FIFO 버퍼(410)의 정보는, 명령어가 완료됨에 따라 오래된 정보가 제거될 때 보다 낮은 행으로 쉬프트 다운한다. 스케쥴러(230)는 실행 레지스터(421 내지 427)를 수용하고 있는 제어파이프(420)로 로드될 명령어의 필요한 필드를 선택함으로서 실행 스테이지에 명령어를 발행한다. 대부분의 명령어는 순서에 어긋난 발행 및 실행으로 스케쥴될 수 있다. 특히, 로드/저장 연산과 논리/산술 연산의 순서는 로드/저장 연산 및 논리/산술 연산 간에 오퍼런드 종속성이 존재하지 않는 한 임의적이다. FIFO 버퍼(410)의 필드 값의 비교는 임의의 오퍼런드 종속성이 존재하는 지를 가리킨다.The
도5a는 벡터 프로세서(120)의 어드레스 공간을 액세스하지 않고의 레지스터 -대-레지스터 연산을 수행하는 명령어에 대한 6 개의 스테이지 실행 파이프라인을 도시한다. 명령어 훼치 스테이지(511)에서, IFU(210)는 상술된 바와 같이 명령어를 훼치한다. 훼치 스테이지는 IFU(210)가 파이프라인 지연, 미해결 분기 조건, 또는 프리훼치된 명령어를 제공하는 캐쉬 서브시스템(130)에서의 지연에 의해 보류 되지 않는 한, 한 클럭 사이클을 필요로 한다. 디코드 스테이지(512)에서, 디코더(220)는 IFU(210)로부터 명령어를 디코드하고, 스케쥴러(230)에 명령어에 대한 정보를 기록한다. 디코드 스테이지(512)는 또한 FIFO (410)의 어떠한 행도 새로운 연산에 사용할 수 없는 한 한 클럭 사이클을 필요로 한다. 연산은 FIFO(410)에서 첫번째 사이클 동안 제어 파이프(420)로 발생될 수 있지만, 보다 오래된 여산의 발행에 의해 지연될 수 있다.5A shows six stage execution pipelines for instructions to perform register-to-register operations without accessing the address space of
실행 데이타 경로(240)는 레지스터-대-레지스터 연산을 수행하고 로드/저장 연산을 의해 데이타 및 어드레스를 공급한다. 도6a는 실행 데이타 경로(240)의 실시예의 블럭도를 도시하고, 실행 스테이지(514, 515 및 515)와 결합하여 서술된다. 실행 레지스터(421)는 판독 스테이지(514) 동안 클러 사이클에서 판독된 레지스터 화일(610)에 두개의 레지스터를 식별하는 신호들을 제공한다. 도6b는 레지스터 화일(610)의 블럭도를 도시한다. 레지스터 화일(610)는 두개의 판독 및 두개의 기록을 각 클럭 사이클마다 수용하기 위해 두개의 판독 및 두개의 기록 포트를 갖는다. 각각의 포트는 선택 회로(612, 614, 616 및 618) 및 288 비트 데이타버스(613, 615, 617 및 619)를 포함한다. 회로(612, 614, 616 및 618)과 같은 선택 회로는 기술 분야에 공지되어 있고, 디코더(220)가 전형적으로 명령어로부터 추출되는 5 비트 레지스터 번호로부터 유도하는 어드레스 신호 WRADDR1, WRADDR2, RDADDR1 또는 RDADDR2, 명령어 또는 제어 상태 레지스터 VCSR로부터의 뱅크 비트, 및 레지스터가 벡터 레지스터 또는 스칼라 레지스터 인지를 가리키는 명령어 구문을 이용한다. 데이타 판독은 멀티플렉서(656)를 통해 로드/저장부(250)으로 또는 멀티플렉서(622 및 624)를 통해 곱셈기(640), 산술 논리부(620), 또는 누산기(640)을 통해 라우트될 수 있다. 대부분의 연산은 두개 의레지스터를 판독하고, 판독스테이지 (514)는 한 사이클에 완료된다. 그러나, 곱셈과 덧셈 명령어 VMAD 및 이중 크기 벡터을 조작하는 명령어와 같은 일부 명령어는 판독 스테이지(514)가 한 클럭 사이클보다 길도록 두개 레지스터 이상으로부터 데이타를 필요로 한다.
실행 스테이지(515) 동안, 곱셈기(620), 산술 논리부(630) 및 누산기(640)는 레지스터 화일(610)로부터 이전에 판독된 데이타를 처리한다. 실행 스테이지 (515)는 소정의 데이타를 판독하는데 다수의 사이클이 필요하다면 판독 스테이지 (514)를 오버랩할 수 있다. 실행 스테이지(515)의 기간은 처리된 데이타 엘리먼트의 유형(정수 또는 부동 소수점) 및 양(판독 사이클의 수)에 의존한다. 실행 레지스터 (422, 423 및 425)로부터의 신호는 실행 스테이지 동안 수행된 첫번째 연산 동안 산술 논리부(630), 누산기(640) 및 곱셉기(620)로의 입력 데이타를 제어한다. 실행 레지스터(432, 433 및 435)로부터의 신호는 실행 스테이지(515) 동안 수행된 두번째 연산을 제어하다.During
도6c는 곱셈기(620) 및 ALU(630)의 실시예에 대한 블럭도이다. 곱셈기 (620)는 8개의 독립적인 36×36 비트 곱셉기(626)를 포함하는 정수 곱셈기이다. 각각의 곱셈기(626)는 제어 회로에 의해 함께 접속된 4개의 9×9 비트 곱셈기를 포함한다. 8 비트 및 9 비트 데이타 엘리먼트 크기의 경우, 스케쥴러(230)로부터의 제어 신호는 각 곱셈기(626)가 네개의 곱셈을 수행하도록 상호 4 개의 9×9 비트 곱셈기로부터 분리시키고, 곱셈기(620)는 사이클 동안 32 개의 독립적인 곱셈을 수행한다. 16 비트 데이타 엘리먼트의 경우, 제어 회로는 함께 동작하는 9×9 비트 곱셈기의 쌍들을 연결하고, 곱셈기(620)는 16개의 병렬 곱셈을 수행한다. 32 비트 정수 데이타 엘리먼트 유형의 경우, 8 개의 곱셈기(626)는 클럭 사이클 마다 8 개의 병렬 곱셈을 수행한다. 곱셈의 결과는 9 비트 데이타 엘리먼트 크기에 대해 576 비트 결과를 그리고 다른 데이타 크기에 대해서는 512 비트를 제공한다.6C is a block diagram of an embodiment of
ALU(630)는 두 클럭 사이클 동안 곱셈기(620)로부터 결과로 나타나는 576 비트 또는 512 비트 결과를 처리할 수 있다. ALU(630)는 8 개의 독립적인 36 비트 ALU(636)를 포함한다. 각각의 ALU(636)는 부동 소수점 덧셈 및 곱셈을 위해 32 x 32 비트 부동 소수점부를 포함한다. 부수적인 회로는 정수 쉬프트, 산술 및 논리 함수를 실행한다. 정수 조작의 경우, 각각의 ALU(636)는 독립적인 8 비트 및 9 비트 조작을 수행할 수 있고 16 비트 및 32 비트 정수 데이타 엘리먼트에 대해 두개 또는 네개 세트로 함께 링크될 수 있는 네개의 부를 포함한다.ALU 630 may process the resulting 576-bit or 512-bit result from
누산기(640)는 결과를 누산하고 중간 결과에서 보다 높은 정확도를 위해 두개의 576 비트 레지스터를 포함한다.
기록 스테이지(516) 동안, 실행 스테이지로부터의 결과는 레지스터 화일 (610)에 저장된다. 두개의 레지스터는 단일 클러 사이클 동안 기록될 수 있고, 입력 곱셈기(602 및 605)는 기록될 두개의 데이타 값을 선택한다. 연산을 위한 기록 스테이지(516)의 기간은 연산의 결과로서 기록될 데이타의 양과 레지스터 화일(610)에 기록함으로서 로드 명령어를 완료할 수 있는 LSU(250)으로부터의 완료에 따른다. 실행 레지스터(426 및 427)로부터의 신호는 논리부(630), 누산기(640) 및 곱셈기(620)로부터의 데이타가 기록되는 레지스터를 선택한다.During the
도5b는 로드 명령의 실행을 위한 실행 파이프라인(520)을 도시한다. 실행 파이프라인(520)을 위한 명령어 훼치 스테이지(511), 디코드 스테이지(512) 및 발생 스테이지(513)는 레지스터-대-레지스터 연산에 대해 서술된 것과 동일하다. 판독 스테이지(514)는 또한 실행 데이타 경로(240)가 레지스터 화일(610)로부터의 데이타를 사용하여 캐쉬 서브시스템(130)에의 호출을 위한 어드레스를 결정한다는 것을 제외하고 상술된 것과 동일하다. 어드레스 스테이지(525)에서, 멀티플렉서(652, 654 및 656)는 실행 스테이지(526 및 527)를 위해 로드/저장부(250)에 제공되는 어드레스를 선택한다. 로드 연산을 위한 정보는 스테이지(526 및 527) 동안 FIFO (410)에 유지되는 반면에 로드/저장부(250)는 연산을 취급한다.5B shows
도7은 로드/저장부(250)의 실시예를 도시하다. 스테이지(256) 동안, 스테이지(525)에서 결정된 어드레스로부터의 데이타를 위해 캐쉬 서브시스템(130)에 대해 호출된다. 예시적인 실시예는 프로세서(110 및 120)를 포함하는 다수의 디바이스들이 캐쉬 서브시스템(130)을 통해 국부 어드레스 공간을 액세스할 수 있는 트랜잭션에 근거한 캐쉬 호출을 이용한다. 요청된 데이타는 캐쉬 서브시스템(130)을 호출한 후 몇 사이클 동안 이용할 수 없지만, 로드/저장부(250)는 다른 호출이 계류하는 동안 캐쉬 서브시스템을 호출할 수 있다. 따라서, 로드/저장부(250)는 보류되지 않는다. 요청된 데이타를 제공하기 위해 캐쉬 서브시스템(130)에 필요한 클럭 사이클의 수는 데이타 캐쉬(194)를 히트 또는 미스하였는 가에 따른다.7 illustrates an embodiment of a load /
드라이브 스테이지(527)에서, 캐쉬 서브시스템(130)은 로드/저장부(250)에 대해 데이타 신호를 어써트한다. 캐쉬 서브시스템(130)은 로드/저장부(250)에 사이클마다 데이타의 256 비트(32 바이트)를 제공할 수 있다. 바이트 정렬기(710)는 288 비트 값을 제공하기 위해 대응하는 9비트 저장 장소에 각각의 32바이트를 정렬시킨다. 288비트 포맷은 때때로 9 비트 데이타 엘리먼트를 사용하는 MPEG 엔코딩 및 디코딩과 같은 멀티미디어 어플레케이션에 용이하다. 288 비트 값은 판독 데이타 버퍼(720)에 기록된다. 기록 스테이지(528)의 경우, 스케쥴러(230)는 데이타 버퍼(720)로부터의 288 비트 양을 레지스터 화일(610)에 기록하기 위해 FIFO 버퍼(410)에서 실행 레지스터(426 또는 427)로 필드(4)를 운반한다.At drive stage 527,
도5c는 저장 명령어의 실행을 위한 실행 파이프라인(530)을 도시한다. 실행 파이프라인(530)을 위한 명령어 훼치 스테이지(511), 디코드 스테이지(512) 및 발생 스테이지(513)는 상술된 바와 동일하다. 판독스테이지(514)는 또한 판독 스테이지가 자장될 데이타 및 어드레스 산출을 위한 데이타를 판독한다는 점을 제외하고 상술된 바와 같다. 저장될 데이타는 로드/저장부(250)의 데이타 버퍼(730)에 기록된다. 멀티플렉서(740)는 9 비트 바이트를 제공하기 위한 포맷인 데이타를 8 비트 바이트를 갖는 종래의 포맷으로 변화한다. 버퍼(730)로부터의 변환된 데이타 및 어드레스 산출 스테이지(525)로부터의 연관된 어드레스는 SRAM 스테이지(536) 동안 캐쉬 서브시스템(130)에 병렬로 보내진다.5C shows an
벡터 프로세서(120)의 예시적인 실시예에서, 각 명령어는 32 비트 길이이고, 도8에 도시된 9개의 포맷중한 포맷을 가지며 REAR, REAI, RRRM5, RRRR, RICT, RRRM9, RRRM9* 및 RRRM9**의 표식을 갖는다. 부록 E는 벡터 프로세서(120)를 위한 명령어 세트를 설명한다.In an exemplary embodiment of the
효율적인 어드레스를 결정할 때 스칼라 레지스터를 이용하는 일부 로드, 저장 및 캐쉬 연산은 REAR 포맷을 갖는다. REAR 포맷 명령은 000b인 비트 29--31에의해 식별되고, 스칼라 레지스터를 위한 두개의 레지스터 번호 SRb 및 SRi 및 비트 D에 의존하는 스칼라 또는 벡터일 수 있는 레지스터의 레지스터 번호 Rn으로 식별되는 3개의 오퍼런드를 갖는다. 뱅크 비트 B 는 레지스터 Rn에 대한 뱅크를 식별 하거나 또는 디폴트 벡터 레지스터 크기가 이중 크기이면 벡터 레지스터 Rn이 이중 크기 벡터 레지스터인 지를 가리킨다. 오피코드 필드 Opc는 오퍼런드에 대해 수행된 연산을 식별하고, 필드 TT는 로드 또는 저장으로서 전송 유형을 식별한다. 전형적인 REAR 포맷 명령은 스칼라 레지스터 SRb 및 SRi의 내용을 더함으로서 결정된 어드레스로부터 레지스터 Rn을 로드하는 명령어 VL이다. 만일 비트 A 가 세트되면 산출된 어드레스는 스칼라 레지스터 SRb에 저장된다.Some load, store, and cache operations that use scalar registers to determine efficient addresses have a REAR format. The REAR format instruction is identified by bits 29--31 which are 000b, and is identified by two register numbers SRb for the scalar register and the register number Rn of the register, which may be a scalar or vector depending on SRi and bit D. Have a parent Bank bit B identifies the bank for register Rn or indicates if the vector register Rn is a double size vector register if the default vector register size is double size. Opcode field Opc identifies the operation performed on the operand, and field TT identifies the type of transmission as load or store. A typical REAR format instruction is instruction VL which loads register Rn from an address determined by adding the contents of scalar registers SRb and SRi. If bit A is set, the calculated address is stored in scalar register SRb.
REAI 포맷 명령은 필드 IMM으로부터의 8 비트 중간 값이 스칼라 레지스터 SRi의 내용 대신에 사용된다는 것을 제외하고 REAR 명령과 동일한다. REAR 및 REAI 포맷은 데이타 엘리먼트 크기 필드를 가지고 있지 않다.The REAI format instruction is identical to the REAR instruction except that an 8 bit intermediate value from the field IMM is used instead of the contents of the scalar register SRi. The REAR and REAI formats do not have a data element size field.
RRRM 5 포맷은 두개의 소스 오퍼런드와 하나의 목적지 오퍼런드를 갖는 명령어를 위한 것이다. 이들 명령은 세개의 레지스터 오퍼펀드 또는 두개의 레지스터 오퍼런드중 어느 하나와 5 비트 중간 값을 갖는다. 부록 E 에 도시된 바와 같이 필드 D, S 및 M 의 엔코딩은 첫번째 소스 오퍼런드 Ra가 스칼라 또는 벡터 레지스터 인지: 두번째 소스 오퍼런드 Rb/IM 5 가 스칼라 레지스터, 벡터 레지스터, 또는 5 비트 중간 값인지: 그리고 목적지 레지스터 Rd가 스칼라 또는 벡터 레지스터인지를 판단한다.The
RRRR 포맷은 네개의 레지스터 오퍼런드를 갖는 명령어를 위한 것이다. 레지스터 번호 Ra 및 Rb는 소스 레지스터를 가리킨다. 레지스터 번호 Rd는 목적지 레지스터를 가리키고, 레지스터 번호 Rc는 필드 Opc에 따라 소스 또는 목적지 레지스터중 어느 하나를 가리킨다. 모든 오퍼런드는 비트 S 가 레지스터 Rb를 가리키도록 세트되어 있지 않는 한 벡터 레지스터이다. 필드 DS는 벡터 레지스터를 위한 데이타 엘리먼트 크기를 가리킨다. 필드 Opc는 32 비트 데이타 엘리먼트를 위한 데이타 유형을 선택한다.The RRRR format is for instructions with four register operations. Register numbers Ra and Rb indicate source registers. Register number Rd points to the destination register, and register number Rc points to either the source or destination register, depending on the field Opc. All operands are vector registers unless bit S is set to point to register Rb. Field DS indicates the data element size for the vector register. Field Opc selects the data type for the 32 bit data element.
RI 포맷 명령은 중간 값을 레지스터로 로드한다. 필드 IMM은 18 비트까지의 중간 값을 수용한다. 레지스터 번호 Rd는 현재의 뱅크에 있는 벡터 레지스터 또는 비트 D 에 따른 스칼라 레지스터중 어느 하나인 목적지 레지스터를 가리킨다. 필드 DS 및 F는 각각 데이타 엘리먼트 크기와 유형을 가리킨다. 32 비트 정수 데이타 엘리먼트의 경우, 18 비트 중간 값은 레지스터 Rd로 로드되기 전에 확장된 부호이다. 부동 소수점 데이타 엘리먼트의 경우, 비트 18, 비트 17 내지 10 및 비트 9 내지 0 은 각각 32 비트 부동 소수점 값의 부호, 지수 및 가수를 가리킨다.The RI format instruction loads the intermediate value into a register. The field IMM accepts intermediate values up to 18 bits. Register number Rd points to a destination register which is either a vector register in the current bank or a scalar register according to bit D. Fields DS and F indicate the data element size and type, respectively. For 32-bit integer data elements, the 18-bit intermediate value is the extended sign before loading into register Rd. For floating point data elements, bits 18, bits 17-10, and bits 9-0, respectively, indicate the sign, exponent, and mantissa of the 32-bit floating point value.
CT 포맷은 흐름 제어 명령어를 위한 것이고 오피 코드 필드 Opc, 조건 필드 Cond, 및 23 비트 중간 값 IMM을 포함한다. 조건 필드에 의해 가리켜진 조건이 참일 때 분기가 취해진다. 가능한 조건은 "항상", "보다 적은", "같은", "적거나 같은", "-이상인", "같지 않은", "-이상이거나 같은" 및 "오버플로우"이다. 상태 및 제어 레지스터 VCSR에 있는 비트 GT, EQ, LT 및 SO는 조건을 평가하는데 사용된다.The CT format is for flow control instructions and includes an opcode field Opc, a condition field Cond, and a 23 bit intermediate value IMM. A branch is taken when the condition indicated by the condition field is true. Possible conditions are "always", "less than", "like", "less or equal", "greater than", "not equal", "greater than or equal to" and "overflow". Bits GT, EQ, LT, and SO in the status and control registers VCSR are used to evaluate the condition.
포맷 RRRM9는 3개의 레지스터 오퍼런드 또는 두개의 레지스터 오퍼펀드중 어느 하나와 9 비트 중간 값을 제공한다. 비트 D, S 및 M 의 조합은 어떤 오퍼런드가 벡터 레지스터, 스칼라 레지스터, 또는 9 비트 중간 값인 지를 가리킨다. 필드 DS는 데이타 엘리먼트 크기를 가리킨다. RRRM9* 및 RRRM9** 포맷은 RRRM9 포맷의 특수한 경우이고 오피 코드 필드 Opc에 의해 식별된다. RRRM9* 포맷은 소스레지스터 번호 Ra를 조건 코드 Cond 및 ID 필드로 교체한다. RRRM* 포맷은 중간 값의 최상위 비트를 조건 코드 Cond 및 비트 K 로 교체한다. RRRM9* 및 RRRM9**의 부가적인 설명은 조건 이동 명령 VCMOV, 엘리먼트 마스크를 갖는 조건 이동 CMOVM과 관련하여 부록 E 에 제시되어 있고 마스크 CMPV 명령과 비교하고 그것을 세트시킨다.Format RRRM9 provides a 9 bit intermediate value with either three register operations or two register funds. The combination of bits D, S, and M indicates which operand is a vector register, a scalar register, or a 9-bit intermediate value. Field DS indicates the data element size. The RRRM9 * and RRRM9 ** formats are a special case of the RRRM9 format and are identified by the opcode field Opc. The RRRM9 * format replaces source register number Ra with condition code Cond and ID fields. The RRRM * format replaces the most significant bit of the intermediate value with condition codes Cond and bit K. Additional descriptions of RRRM9 * and RRRM9 ** are given in Appendix E with respect to the conditional shift command VCMOV, conditional shift CMOVM with an element mask and compare and set the mask CMPV instruction.
비록 본 발명이 특정 실시예를 참조로 서술되었지만, 본 설명은 만지 본 출원의 예일 뿐이며 한정하는 것으로 간주되어서는 안된다. 개시된 실시예의 다양한 변형과 조합은 다음의 특허 청구 범위 영역로서 한정된 바와 같이 본 발명의 영역 내에서 포괄된다.Although the present invention has been described with reference to specific embodiments, the description is only an example of the present application and should not be considered as limiting. Various modifications and combinations of the disclosed embodiments are encompassed within the scope of the invention as defined by the following claims.
<부록 A><Appendix A>
예시적인 실시예에서, 프로세서(110)는 ARM7 프로세서용 표준과 호환하는 범용 프로세서이다. ARM7 내의 레지스터의 설명을 위한 ARM 아키텍춰 문서 또는 ARM7 데이타 쉬트(1994년 12월 발행된 문서 번호 ARM DDI 0020C)를 참조한다.In an exemplary embodiment,
벡터 프로세서(120)와 인터렉트하기 위해 프로세서(110)는 벡터 프로세서를 시작하고 정지시키며: 동기화를 위한 것을 포함하여 벡터 프로세서 상태를 태스트 하고: 벡터 프로세서(120)에 있는 스칼라/특수 목적 레지스터로부터의 데이타를 프로세서(110)의 범용 레지스터로 전송하고: 및 범용 레지스터로부터의 데이타를 벡터 프로세서 스칼라/특수 목적 레지스터로 전송한다. 범용 레지스터와 벡터 프로세서 벡터 레지스터 간에 직접적인 전송 수단은 존재하지 않는다. 이와 같은 전송은 중간으로서 메모리를 필요로 한다.In order to interact with the
표 a1은 벡터 프로세서 명령어를 위한 ARM7 명령어 세트로의 확장을 설명한다.Table a1 describes the extensions to the ARM7 instruction set for vector processor instructions.
[표 a1]TABLE A1
표 a2는 결함이 있는 명령을 실행하지 전에 검출되어 보고된 ARM7 예외를 열거한다. 예외 벡터 어드레스가 16 진수 주석으로 제시되어 있다.Table a2 lists the ARM7 exceptions detected and reported before executing the faulty instruction. Exception vector addresses are given in hexadecimal comments.
[표 a2]TABLE A2
다음은 ARM7 명령어 세트로의 확장 구문을 설명한다. 명명법 설명과 명령어 포맷을 위해서는 ARM 아키텍춰 문서 또는 ARM7 데이터 쉬트(1994년 12월 발행된 문서번호 ARM DDI 0020C)를 참조한다.The following describes the extended syntax to the ARM7 instruction set. For nomenclature descriptions and instruction formats, see the ARM Architecture Documentation or ARM7 Data Sheet (Document No. ARM DDI 0020C, published December 1994).
ARM 아키텍춰는 코프로세서 인터페이스를 위해 세개의 명령어를 제공한다.The ARM architecture provides three instructions for the coprocessor interface.
1. 코프로세서 데이터 연산(CDP)1. Coprocessor Data Operations (CDP)
2. 코프로세서 데이터 전송(LDC, STC)2. Coprocessor Data Transfer (LDC, STC)
3. 코프로세서 레지스터 전송(MRC, MCR)3. Coprocessor Register Transfer (MRC, MCR)
MSP 아키텍춰 확장은 새가지 모든 형식을 이용한다.The MSP architecture extension uses all the new formats.
코프로세서 데이터 연산 포맷(CDP)은 ARM7로 다시 통신할 필요가 없는 연산에 사용된다.The coprocessor data operation format (CDP) is used for operations that do not require communication back to ARM7.
CDP 포맷CDP format
CDP 포맷에 있는 필드는 다음과 같은 규약을 갖는다.Fields in the CDP format have the following conventions:
코프로세서 데이터 전송 포맷(LDC, STC)은 벡터 프로세서의 레지스터의 서브셋을 직접 메모리로 로드하거나 저장하는데 사용된다. ARM7 프로세서는 워드 프로세서를 공급하는 것을 담당하고, 벡터 프로세서는 데이터를 공급하거나, 또는 수락하고 전송된 워드 수를 제어한다. 상세한 설명을 위해서는 ARM7 데이터 쉬트를 참조한다.Coprocessor data transfer formats (LDC, STC) are used to load or store a subset of the vector processor's registers directly into memory. The ARM7 processor is responsible for supplying the word processor, the vector processor supplies the data, or accepts and controls the number of words transmitted. See the ARM7 data sheet for details.
LDC, STC 포맷LDC, STC format
포맷에 있는 필드는 다음과 같은 규약을 갖는다.Fields in the format have the following conventions:
코프로세서 레지스터 전송 포맷(MRC, MCR)은 ARM7과 벡터 프로세서 간의 직접 정보를 통신하는데 사용된다. 이 포맷은 ARM7 레지스터와 벡터 프로세서 스칼라 또는 특수 목적 레지스터 간을 이동시키는데 사용된다.Coprocessor register transfer formats (MRC, MCR) are used to communicate information directly between ARM7 and vector processors. This format is used to move between ARM7 registers and vector processor scalar or special purpose registers.
MRC, MCR 포맷MRC, MCR format
포맷에 있는 필드는 다음 규약을 갖는다:Fields in the format have the following conventions:
확장 ARM 명령어 설명Extended ARM instruction description
확장 ARM 명령어는 알파벳 순서로 설명된다.Extended ARM instructions are described in alphabetical order.
CACHE Cache 연산CACHE Cache operation
포맷format
어셈블러 구문Assembler Syntax
STC{cond} p15, c0pc, <Address>STC {cond} p15, c0pc, <Address>
CACHE{cond} 0pc, <Address>CACHE {cond} 0pc, <Address>
여기서 cond = {eq, he, cc, mi, pl, vs, vc, hi, Is, ge, It, gt, Ie, ai, nv} 및 0pc = {0, 1, 3}. LDC/STC 포맷의 CRn 필드가 0pc를 명시하는데 사용되기 때문에, 오피코드의 십진 표현은 첫번째 구문에서 글자 'c'가 선행하여야 한다(즉 0 대신에 c 0를 사용한다.)는 것에 유의한다. 어드레스 모드 구문에 대해서는 ARM7 데이터 쉬트를 참조한다.Where cond = {eq, he, cc, mi, pl, vs, vc, hi, Is, ge, It, gt, Ie, ai, nv} and 0pc = {0, 1, 3}. Note that since the CRn field in the LDC / STC format is used to specify 0pc, the decimal representation of the opcode must be preceded by the letter 'c' in the first syntax (
설명Explanation
이 명령어는 Cond가 참일때에만 실행된다. 0pc<3:0>는 다음 연산을 명시한다.This command is executed only when Cond is true. 0pc <3: 0> specifies the following operation.
연산calculate
EA가 어떻게 산출되는지에 대해서는 ARM7 데이터 쉬트를 참조한다.See the ARM7 data sheet for how the EA is calculated.
예외exception
ARM7 보호 위반ARM7 protection violation
INTVP 인터럽트 벡터 프로세서INTVP Interrupt Vector Processor
포맷format
어셈블러 구문Assembler Syntax
CDP{cond} p7, 1, c0, c0, coCDP {cond} p7, 1, c0, c0, co
INTVP{cond}INTVP {cond}
여기서 cond={eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, ns}Where cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, ns}
설명Explanation
이 명령은 Cond가 참일때 실행된다. 이 명령은 벡터 프로세서에게 중지하도록 시그날한다. ARM7 은 벡터 프로세서가 중지할 때를 대기하지 않고 다음 명령을 계속 실행한다.This command is executed when Cond is true. This instruction signals the vector processor to stop. ARM7 continues executing the next instruction without waiting for the vector processor to stop.
MFER 비지-대기 루프는 만일 벡터 프로세서가 이 명령이 실행된 후 정지되었는지를 확인하는데 사용된다. 이 명령은 만일 벡터 프로세서가 이미 VP_IDLE 상태에 있다면 어떠한 영향도 없다.The MFER busy-wait loop is used to determine if the vector processor has stopped after executing this instruction. This instruction has no effect if the vector processor is already in VP_IDLE state.
비트 19:12, 7:15 및 3:0이 할당된다.Bits 19:12, 7:15 and 3: 0 are assigned.
예외exception
이용가능하지 않는 벡터 프로세서Vector processor not available
MFER확장 레지스터로부터 이동More from MFER Extension Register
포맷format
어셈블러 구문Assembler Syntax
MRC{cond} p7, 2, Rd, cp, 0MRC {cond} p7, 2, Rd, cp, 0
MFER{cond} Rd, RNAMEMFER {cond} Rd, RNAME
여기서 cond={eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd={r0.....r15}, P={0, 1}, ER={0, ..15} 및 RNAME은 아카텍춰하게 명시된 레지스터니모닉(즉, PERO 또는 CSR)을 가르킨다.Where cond = {eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0 ..... r15}, P = {0, 1}, ER = {0, ..15} and RNAME refer to the architecturally specified register mnemonics (ie, PERO or CSR).
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. ARM7 레지스터 Rd는 이하의 표에 도시된 바와 같이, P:ER<3:0로 명시된 확장 ER 레지스터로부터 이동된다. 확장 레지스터 설명에 대해서는 1, 2절을 참조한다.This command is executed only when Cond is true. The ARM7 register Rd is moved out of the extended ER register specified as P: ER <3: 0, as shown in the table below. See
비트 19:17 및 7:5는 예약되어 있다.Bits 19:17 and 7: 5 are reserved.
설명Explanation
사용자 모드에 있는 동안 PERx를 액세스하려고 시도하는 것은 보호 위반.Attempting to access PERx while in user mode is a protection violation.
MFVP 벡터 프로세서로부터의 이동Move from the MFVP vector processor
포맷format
어셈블러 구문Assembler Syntax
MRC{cond} p7. 1. Rd. Crn.Crm.0MRC {cond} p7. 1. Rd. Crn.Crm.0
MFER{cond} Rd.RNAMEMFER {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={c0....c15} 및 RNAME은 아카텍춰하게 명시된 레지스터 니모닉(즉, SP0 또는 VSR)을 가르킨다.Where cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0 .... r15}, CRn = ({c0 .... c15}, CRm = {c0 .... c15} and RNAME point to the architecturally specified register mnemonic (ie SP0 or VSR).
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. ARM7 레지스터 Rd는 벡터 프로세서의 스칼라/특수 목적 레지스터 CRn<1:0>:CRm<3:0>로 부터 이동된다. 레지스터 전송을 위한 벡터 프로세서 레지스터 번호 할당에 대해서는 3.2.3 절을 참조한다.This command is executed only when Cond is true. The ARM7 register Rd is moved from the scalar / special purpose register CRn <1: 0>: CRm <3: 0> of the vector processor. Refer to Section 3.2.3 for vector processor register number assignment for register transfer.
CRn<3:2>는 물론 비트 7.5는 예약되어 있다.Bit 7.5 as well as CRn <3: 2> is reserved.
벡터 프로세서 레지스터 맵은 이하의 표에 도시된다. 벡터 프로세서 특수 목적 레지스터(SP0-SP15)에 대해서는 표 15를 참조한다.The vector processor register map is shown in the table below. See Table 15 for the vector processor special purpose registers (SP0-SP15).
SR0은 항상 제로의 32 비트로서 판독되고 그것에 대한 기록은 무시된다.SR0 is always read as 32 bits of zero and writing to it is ignored.
설명Explanation
벡터 프로세서는 이용할 수 없음.Vector processor not available.
MTER 확장 레지스터로의 이동Move to MTER Extension Register
포맷format
어셈블러 구문Assembler Syntax
MRC{cond} p7, 2, Rd, cp, cER, 0MRC {cond} p7, 2, Rd, cp, cER, 0
MFER{cond} Rd, RNAMEMFER {cond} Rd, RNAME
여기서 cond={eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd={r0....r15}, P={0, 1}, ER={0.... 15} 및 RNAME은 아카텍춰하게 명시된 레지스터 니모닉(즉, PER0 또는 CSR)을 가르킨다.Where cond = {eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0 .... r15}, P = {0, 1}, ER = {0 .... 15} and RNAME point to the architecturally specified register mnemonic (ie PER0 or CSR).
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. ARM7 레지스터 Rd는 이하의 표에 도시된 바와 같이 P:ER<3:0>으로 명시된 확장 레지스터 ER로부터 이동된다.This command is executed only when Cond is true. The ARM7 register Rd is moved out of the extension register ER specified as P: ER <3: 0> as shown in the table below.
비트 19:17 및 7:5는 예약되어 있다.Bits 19:17 and 7: 5 are reserved.
설명Explanation
사용자 모드에 있는 동안 PERx를 액세스하려고 시도하는 것은 보호 위반.Attempting to access PERx while in user mode is a protection violation.
MTVP 벡터 프로세서로부터의 이동Moving from the MTVP Vector Processor
포맷format
어셈블러 구문Assembler Syntax
MRC{cond} p7.1.Rd.Crn.Crm.0MRC {cond} p7.1.Rd.Crn.Crm.0
MFVP{cond} Rd.RNAMEMFVP {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={c0.... c15} 및 RNAME은 아카텍춰하게 명시된 레지스터 니모닉(즉, SP0 또는 VCS)을 가르킨다.Where cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv} Rd = {r0 .... r15}, CRn = ( {c0 .... c15}, CRm = {c0 .... c15} and RNAME point to the architecturally specified register mnemonic (ie SP0 or VCS).
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. ARM7 레지스터 Rd는 벡터 프로세서의 스칼라/특수 목적 레지스터 CRn<1:0>:CRm<3:0>로부터 이동된다.This command is executed only when Cond is true. The ARM7 register Rd is moved from the scalar / special purpose register CRn <1: 0>: CRm <3: 0> of the vector processor.
CRn<3:2>는 물론 비트 7.5는 예약되어 있다.Bit 7.5 as well as CRn <3: 2> is reserved.
벡터 프로세서 레지스터 맵이 이하의 표에 도시되어 있다.The vector processor register map is shown in the table below.
예외exception
벡터 프로세서는 이용할 수 없음.Vector processor not available.
FETCH 프리훼치FETCH prefetch
포맷format
어셈블러 구문Assembler Syntax
LDC{cond} p15, 2, <Address>LDC {cond} p15, 2, <Address>
PFTCH{cond} <Address>PFTCH {cond} <Address>
여기서 cond={eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}. 어드레스 모드 구문에 대해서는 ARM7 데이터 쉬트를 참조한다.Where cond = {eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}. See the ARM7 data sheet for the address mode syntax.
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. EA에 의해 명시된 캐쉬 라인은 ARM7 데이타 캐쉬로 프리훼치된다.This command is executed only when Cond is true. The cache line specified by the EA is prefetched into the ARM7 data cache.
연산calculate
EA가 어떻게 계산되는지에 대해서는 ARM7 데이터 쉬트를 참조한다.See the ARM7 data sheet for how EA is computed.
예외 : 없음Exception: none
STARTVP 시작 벡터 프로세서STARTVP start vector processor
포맷format
어셈블러 구문Assembler Syntax
LDP{cond} p7, 0, c0, c0LDP {cond} p7, 0, c0, c0
STARTVP {cond}STARTVP {cond}
여기서 cond={eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}.Where cond = {eq, he, cs, cc, mi, pl, rs, vc, hi, ls, ge, lt, gt, le, al, nv}.
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. 이 명령은 벡터 프로세서에게 시그날하여 실행을 시작할 수 있게 하고 VISRC<vjp>와 VISRC<vip>를 자동적으로 클리어한다. ARM7은 벡터 프로세서가 실행을 시작할 때까지 대기하지 않고 다음 명령을 계속 실행한다.This command is executed only when Cond is true. This instruction signals the vector processor to start execution and automatically clears VISRC <vjp> and VISRC <vip>. ARM7 continues executing the next instruction without waiting for the vector processor to start executing.
벡터 프로세서의 상태는 이 명령이 실행되기 전에 소정 상태로 초기화되어야 한다. 이 명령은 벡터 프로세서가 이미 VP_RUN 상태에 있으면 아무런 영향도 미치지 않는다.The state of the vector processor must be initialized to a predetermined state before this instruction is executed. This instruction has no effect if the vector processor is already in VP_RUN state.
비트 19:12, 7:5 및 3:0은 예약되어 있다.Bits 19:12, 7: 5, and 3: 0 are reserved.
예외exception
벡터 프로세서는 이용할 수 없다.Vector processors are not available.
TESTSET 테스트와 세트TESTSET TEST AND SET
포맷format
어셈블러 구문Assembler Syntax
MRC{cond} p7, 0, Rd, c0, cER, 0MRC {cond} p7, 0, Rd, c0, cER, 0
TESTSET{cond} Rd, RNAMETESTSET {cond} Rd, RNAME
여기서 cond={eq, he, cs, cc, mi, pl, rs, ve, hi, ls, ge, lt, gt, le, al, nv}. Rd={r0....r15}, ER={0....15}그리고 RNAME는 아키텍춰하게 명시된 레지스터 니모닉(즉, UER1 또는 VASYNC)를 가르킨다.Where cond = {eq, he, cs, cc, mi, pl, rs, ve, hi, ls, ge, lt, gt, le, al, nv}. Rd = {r0 .... r15}, ER = {0 .... 15} and RNAME point to the architecturally specified register mnemonic (ie UER1 or VASYNC).
설명Explanation
본 명령은 Cond가 참일 때에만 실행된다. 이 명령은 UERx의 내용을 RD로 반환하고, UERx<30>를 1로 세트시킨다. 만일 ARM7 레지스터 15가 목적지 레지스터로 명시되어 있으면, 짧은 비지웨이트(busywait)루프가 구현될 수 있도록 UERx<30>은 CPSR의 Z비트에서 반환된다.This command is executed only when Cond is true. This command returns the contents of UERx to RD and sets UERx <30> to one. If ARM7 register 15 is specified as the destination register, UERx <30> is returned in the Z bit of the CPSR so that a short busywait loop can be implemented.
예외 : 없음Exception: none
<부록 B><Appendix B>
멀티미디어 프로세서(100)의 아키텍춰는 프로세서(110)가 MFER과 MTER 명령어로서 액세스하는 확장 레지스터를 정의한다. 상기 확장 레지스터는 전용 확장 레지스터와 사용자 확장 레지스터를 포함한다.The architecture of the
상기 전용 확장 레지스터는 대부분 멀티미디어 신호 프로세서의 동작을 제어하는데 사용된다. 이들은 표 b1에 도시되어 있다.The dedicated extension registers are mostly used to control the operation of the multimedia signal processor. These are shown in Table b1.
[표 b1]TABLE b1
전용확장 레지스터Dedicated expansion register
제어 레지스터는 MSP(100)의 동작을 제어한다. CTR에 있는 모드 비트는 리셋시 클리어된다. 레지스터 정의가 표 b2에 도시되어 있다.The control register controls the operation of the
[표 b2]TABLE b2
CTR 정의CTR definition
상태 레지스터는 MSP(100)의 상태를 가르킨다. 필드 STR에 있는 모든 비트는 리셋시 클리어 된다. 레지스터 정의가 표 b3에 도시되어 있다.The status register indicates the status of the
[표 b3]TABLE b3
STR 정의STR definition
프로세서 버젼 레지스터는 프로세서들의 멀티미디어 신호 프로세서 군의 특수한 프로세서의 특수 버젼을 식별한다.The processor version register identifies a special version of a particular processor of the multimedia signal processor family of processors.
벡터 프로세서 인터럽트 마스트 레지스터 VIMSK는 프로세서(110)로의 벡터 프로세서 예외의 보고를 제거한다. VIMSK에 있는 각 비트는 VISRC 레지스터에 있는 대응하는 비트와 함께 세트될 때 예외를 인에이블시켜 ARM7을 인터럽트시킨다.The vector processor interrupt mask register VIMSK eliminates reporting of vector processor exceptions to the
벡터 프로세서 예외가 검출되는 방법에는 영향을 미치지 않지만 예외가 ARM7을 인터럽트시켜야 하는 지에 대해서만 영향을 미친다. VIMSK에 있는 모든 비트는 리셋시 클리어한다. 레지스터 정의가 표 B4에 도시되어 있다.It does not affect how vector processor exceptions are detected, but only affects whether the exception should interrupt ARM7. All bits in VIMSK are cleared on reset. The register definitions are shown in Table B4.
[표 b4]Table b4
ARM7 명령어 어드레스 브레이크포인트 레지스터는 ARM7 프로그램을 디버스하는데 도움이 된다. 레지스터 정의가 표 b5에 도시되어 있다.The ARM7 instruction address breakpoint registers help to debug an ARM7 program. The register definitions are shown in Table b5.
[표 b5]TABLE b5
ARM7 데이타 어드레스 브레이크포인트 레지스터는 ARM7 프로그램을 디버그하는데 도움이 된다. 레지스터 정의가 표 b6에 도시되어 있다.The ARM7 data address breakpoint registers help you debug ARM7 programs. The register definitions are shown in Table b6.
[표 b6]TABLE b6
스크래치 패드 레지스터는 캐쉬 서브시스템(130)에 있는 SRAM을 이용하여 형성된 스크래치 패드의 어드레스와 크기를 컨피그한다. 레지스터 정의가 표 b7에 도시되어 있다.The scratch pad register configures the address and size of the scratch pad formed using the SRAM in the
[표 b7]TABLE b7
SPREGSPREG
사용자 확장 레지스터는 대부분 프로세서(110 및 120)의 동기화에 사용된다. 사용자 확장 레지스터는 비트 30으로 맵핑된 단지 하나의 비트만을 갖도록 현재 정의되어 있고, 예를 들어 "MFER R15, UERx"와 같은 명령은 비트 값을 Z 플래그로 반환한다. 비트 UERx<31> 및 UERx<29:0>는 항상 제로로 판독된다. 사용자 확장 레지스터 표 b8에 설명되어 있다.User extension registers are mostly used for synchronization of
[표 b8]TABLE b8
확장 레지스터Extension register
표 b9는 파우어-온 리셋시 확장 레지스터의 상태를 도시한다.Table b9 shows the state of the expansion register at the power-on reset.
[표 b9]TABLE b9
확장 레지스터 파우어-온 상태Expansion Register Power-On State
<부록 C><Appendix C>
벡터 프로세서(120)의 아키텍춰 상태는: 32개의 32 비트 스칼라 레지스터; 32 개의 288 비트 벡터 레지스터의 2 뱅크; 한쌍의 576 비트 벡터 누산 레지스터; 한 세트의 32 비트 특수 목적 레지스터를 구비한다. 스칼라, 벡터 및 누산기 레지스터는 범용 목적 프로그래밍을 위해 의도되었고, 다른 많은 데이터 형을 지원한다.The architecture state of the
다음 주석은 이와 같은 그리고 후속하는 절에 사용된다. : VR은 벡터 레지스터를 가르킨다; VRi는 i번째 벡터 레지스터(제로 오프셋)를 가르킨다.; VR[i]는 벡터 레지스터 VR에서 i번째 데이타 엘리먼트를 가르킨다; VR<a:b>는 벡터 레지스터 VR에서 비트 a 내지 b를 가르킨다; 그리고 VR[i]<a:b>는 벡터 레지스터 VR에서 i번째 데이터 엘리먼트의 a 내지 b를 가르킨다.The following comments are used in these and subsequent sections. VR points to a vector register; VRi points to the i th vector register (zero offset); VR [i] points to the i th data element in the vector register VR; VR <a: b> points to bits a to b in the vector register VR; And VR [i] <a: b> points to a to b of the i th data element in the vector register VR.
벡터 아키텍춰는 하나의 벡터 레시스터내에 다수의 엘리먼트를 위한 데이타형 및 크기의 부가된 치수를 갖는다. 벡터 레지스터가 고정된 크기이므로 이것이 수용할 수 있는 데이타 엘리먼트의 수는 엘리먼트의 크기에 따른다. MSP 아키텍춰는 표 c1에 도시된 바와 같이 다섯개의 엘리먼트 크기를 갖는다.Vector architectures have added dimensions of data type and size for multiple elements in one vector register. Since the vector register is of fixed size, the number of data elements it can accommodate depends on the size of the element. The MSP architecture has five element sizes, as shown in Table c1.
[표 c1]TABLE c1
데이타 엘리먼트 크기Data element size
MSP 아키텍춰는 명령에 있는 명시된 데이터 형과 크기에 따라 벡터 데이타를 해석한다. 현재 2의 보수(정수) 포맷이 대부분의 아키텍춰 명령의 바이트, 바이트 9, 하프워드 및 워드 엘리먼트 크기에 지원된다. 게다가, 대부분의 아키텍춰 명령을 위한 워드 엘리먼트로서 IEEE 754 단일 정확도 포맷이 지원된다.The MSP architecture interprets vector data according to the data type and size specified in the instruction. Two's complement format is currently supported for the byte,
프로그래머는 명령어 시퀸스가 의미있는 결과를 내는 한 임의의 소정 방법으로 데이타를 자유로이 해석할 수 있다. 예를 들어, 프로그래머는 바이트 9 크기를 사용하여 8비트 부호없는 숫자를 저장할 수 있고, 똑같이 바이크 크기 데이터 엘리먼트에 8 비트 부호없는 숫자를 자유로이 저장할 수 있고 프로그래머가 "거짓" 오버플로우 결과를 취급할 수 있는 한 제공된 2의 보수 아키텍춰 명령을 사용하여 자유로이 그들을 연산할 수 있다.The programmer can freely interpret the data in any desired manner as long as the instruction sequence yields meaningful results. For example, a programmer can store an 8-bit unsigned
SR0 내지 SR31이라고 하는 32 스칼라 레지스터가 존재한다. 스칼라 레지스터는 32 비트 폭이고, 정의된 크기중 어느 한 크기의 한 데이터 엘리먼트를 수용할 수 있다. 스칼라 레지스터 SR0는 레지스터 SR0이 항상 제로의 32 비트로서 판독되고, 레지스터 SR0에의 기록이 무시된다는 점에서 특수하다. 바이트, 바이트 9 및 하프워드 데이타 형은 최상위 비트가 정의되지 않은 값을 갖는 스칼라 레지스터의 최하위 비트에 저장된다.There are 32 scalar registers called SR0 to SR31. Scalar registers are 32 bits wide and can accommodate one data element of any size defined. Scalar register SR0 is special in that register SR0 is always read as 32 bits of zero, and writing to register SR0 is ignored. Byte,
레지스터가 데이터 형 표시기를 가지지 않기 때문에, 프로그래머는 각 명령에 사용되고 있는 레지스터의 데이타 형을 알아야만 한다. 이는 32 비트 레지스터가 32비트 값을 수용하는 것으로 간주되는 다른 아키텍춰와는 다른다. MSP 아키텍춰는 데이터 형 A의 결과가 데이터 형 A에 대해 정된 비트만을 정확히 수정하는 것을 명시한다. 예를 들어, 바이트 9 가산의 결과는 32 비트 목적지 스칼라 레지스터의 하위 9 비트만을 수정한다. 상위 23 비트의 값은 명령어에 대해 달리 지시되지 않는 한 정의되지 있지 않다.Since the register does not have a data type indicator, the programmer must know the data type of the register being used for each instruction. This is different from other architectures in which 32-bit registers are considered to accept 32-bit values. The MSP architecture specifies that the result of data type A correctly modifies only the bits specified for data type A. For example, the result of
64 벡터 레지스터는 각각 32 레지스터를 갖는 2 뱅크로 조직된다. 뱅크 0은 첫번째 32 레지스터를 수용하고, 뱅크 1은 두번째 32 레지스터를 수용한다. 두개의 뱅크는 하나의 뱅크는 한의 뱅크가 현재의 뱅크로 세트되고 다른 뱅크가 대체 뱅크로 세트되는 방식으로 사용된다. 모든 벡터 명령은 대체 뱅크에 있는 벡터 레지스터를 액세스할 수 있는 명령들을 로드/저장 및 레지스터가 이동시키는 것을 제외하고, 디폴트로서 현재의 뱅크에 있는 레지스터를 사용한다. 벡터 제어 및 상태 레지스터 VCSR에 있는 CBANK 비트는 뱅크 0 또는 뱅크 1을 현재의 뱅크로 세트시키는데 사용된다.(다른 뱅크는 대체 뱅크가 된다.)현재의 뱅크에 있는 벡터 레지스터는 VR0 내지 VR31이라고 불리우고, 대체 뱅크에 있는 벡터 레지스터는 VRA0 내지 VRA31라고 불리운다.The 64 vector registers are organized in 2 banks with 32 registers each.
선택적으로 두개의 뱅크는 576 비트의 32 이중 크기 벡터 레지스터를 각각 제공하도록 개념적으로 합병될 수 있다. 제어레지스터 VCSR에 있는 VEC64 비트는 이와 같은 모드를 명시한다. VEC64 모드에서 어떠한 현재 및 대체 뱅크는 존재하지 않으며, 벡터 레지스터 번호는 두개의 뱅크로부터 대응하는 288 비트 벡터 레지스터 쌍을 지칭한다. 즉Optionally, two banks can be conceptually merged to provide 32 double size vector registers of 576 bits, respectively. The VEC64 bit in the control register VCSR specifies this mode. There are no current and alternate banks in VEC64 mode, and the vector register number refers to the corresponding 288 bit vector register pair from the two banks. In other words
VRi<576:0>=VR1i<287:0>:VR0i<287:0>VRi <576: 0> = VR 1 i <287: 0>: VR 0 i <287: 0>
여기서, VR0및 VR1i는 뱅크 1 및 뱅크 0 각각의 레지스터 번호 VRi를 갖는 벡터 레지스터를 지칭한다. 이중 크기 벡터 레지스터는 VR0 내지 VR31로 불리운다.Here, VR 0 and VR 1 i refer to a vector register having register numbers VRi of
벡터 레지스터는 표 c2에 도시된 바와 같이 바이트, 바이트 9, 하프워드 또는 워드 크기의 다수 엘리먼트를 수용할 수 있다.The vector register can accommodate multiple elements of byte,
[표 c2]Table c2
벡터 레지스터당 엘리먼트 수Number of elements per vector register
한 벡터 레지스터내의 엘리먼트 크기의 혼합은 지원되지 않는다. 바이트 9 엘리먼트 크기를 제외하고, 단지 288 비트의 256 만이 사용된다. 특히, 매 9번째 비트는 사용되지 않는다. 바이트, 하프워드 및 워드 크기에 있는 사용되지 않는 32 비트는 예약되고, 프로그래머는 그들 값에 대해 어떠한 가정도 해서는 안된다.Mixing element sizes in one vector register is not supported. Except for the
벡터 누산 레지스터는 목적지 레지스터에 있는 결과보다 정확도가 높은 중간 결과를 위한 기억장치를 제공하도록 의도된다. 벡터 누산 레지스터는 VAC1H, VAC1L, VAC0H 및 VAC0L이라고 하는 네개의 288 비트 레지스터로 구성된다. VAC0H : VAC0L쌍은 디폴트로서 세개의 명령어에 의해 사용된다. VEC64 모에서만 VAC1H : VAC1L쌍이 64 바이트 9 벡터 연산을 에뮬레이트하는데 사용된다. 뱅크 1이 VEC32 모드에서 현재의 뱅크로 세트되더라도, VAC0H : VAC0L 쌍이 사용된다.The vector accumulator register is intended to provide storage for intermediate results that are more accurate than the result in the destination register. The vector accumulation register consists of four 288-bit registers called VAC1H, VAC1L, VAC0H, and VAC0L. VAC0H: The VAC0L pair is used by three instructions by default. Only VEC64 models use the VAC1H: VAC1L pair to emulate a 64
소스 벡터 레지스터에서와 같이 동일한 수의 엘리먼트를 갖는 확장된 정확도 결과를 내기 위해 표 c3에 도시된 바와 같이 레지스터 쌍에 걸쳐 확장된 정확도 엘리먼트가 절약된다.Extended accuracy elements are saved across register pairs as shown in Table c3 to produce extended accuracy results with the same number of elements as in the source vector register.
[표 c3]Table c3
벡터 누산기 포맷Vector accumulator format
VAC1H 및 VAC1L 쌍은 엘리먼트의 수가 바이트 9(및 바이트), 하프워드 및 워드 각각에 대해 64, 32 또는 16인 VEC64 모드에서만 사용된다.The VAC1H and VAC1L pairs are used only in VEC64 mode, where the number of elements is 64, 32 or 16 for byte 9 (and byte), halfword and word respectively.
메모리로부터 직접 로드되거나 또는 메모리에 직접 저장될 수 없는 33 특수 목적 레지스터가 존재한다. RASR0 내지 RASR15라고 불리우는 16개의 특수 목적 레지스터는 내부의 반환 어드레스 스택을 형성하고 서브루틴 호출 및 반환 명령에 의해 사용된다. 17개의 32 비트 특수 목적 레지스터가 표 C4에 도시되어 있다.There are 33 special purpose registers that cannot be loaded directly from or stored directly in memory. Sixteen special purpose registers, called RASR0 to RASR15, form an internal return address stack and are used by subroutine call and return instructions. Seventeen 32-bit special purpose registers are shown in Table C4.
[표 c4]Table c4
특수 목적 레지스터Special purpose registers
벡터 제어 및 상태 레지스터 VCSR 정의가 표 c5에 도시되어 있다.Vector control and status register VCSR definitions are shown in Table c5.
[표 c5]Table c5
VCSR 정의VCSR definition
벡터 프로그램 카운터 레지스터 VPC는 벡터 프로세서(120)에 의해 실행될 다음 명령의 어드레스이다. AMR7 프로세서(110)는 벡터 프로세서(120)의 연산을 시작하기 위해 STARTVP 명령을 발생하기 전에 레지스터 VPC를 로드하여야 한다.The vector program counter register VPC is the address of the next instruction to be executed by the
벡터 예외 프로그램 카운터 VEPC는 가장 최근의 예외를 유발할 가능성이 있는 명령어의 어드레스를 명시한다. MSP 100은 정확한 예외 즉, "가장 가능성이 있는" 용어를 지원하지 않는다.The vector exception program counter VEPC specifies the address of the instruction that is likely to cause the most recent exception.
벡터 인터럽트 소스 레지스터 VISRC는 ARM7 프로세서(110)에 대한 인터럽트 소스를 가르킨다. 예외(들)의 검출시 적당한 비트(들)가 하드웨어에 의해 세트된다. 소프트웨어는 벡터 프로세서(120)가 실행을 재개할 수 있기 전에 레지스터 VISRC를 클리어하여야 한다. 레지스터 VISRC에 설정된 임의의 비트는 벡터 프로세서(120)로 하여금 상태 VP_IDLE에 진입하게 한다. 만일 대응하는 인터럽트 인에이블 비트가 VIMSK로 세트되어 있으며, 프로세서(110)에 대한 인터럽트가 시그날된다. 표 c6은 레지스터 VISRC의 내용을 정의한다.The vector interrupt source register VISRC points to the interrupt source for the
[표 c6]Table c6
VISRC 정의VISRC Definition
벡터 인터럽트 명령어 레지스터 VIINS는 VCINT 또는 VCJOIN 명령이 ARM7 프로세서(110)를 인터럽트하기 위해 실행될 때 VCINT 또는 VCJOIN 명령으로서 갱신된다.The vector interrupt instruction register VIINS is updated as a VCINT or VCJOIN instruction when the VCINT or VCJOIN instruction is executed to interrupt the
벡터 카운터 레지스터 VCR1, VCR2 및 VCR3는 감소 및 분기 명령 VD1CBR, VD2CBR 및 VD3CBR이고, 실행될 루프 카운트로서 초기화된다. 명령어 VD1CBR이 실행될 때, 레지스터 VCR1은 1만큼 감소된다. 만일 카운트 값이 제로가 아니고 명령어에 명시된 조건이 VFLAG와 일치하면, 이때 분위기가 취해진다. 만일 그렇지 않으면, 분기는 취해지지 않는다. 레지스터 VCR1은 어느 경우에나 1만큼 감소된다. 레지스터 VCR2 및 VCR3도 이와 동일하게 사용된다.The vector counter registers VCR1, VCR2 and VCR3 are the decrement and branch instructions VD1CBR, VD2CBR and VD3CBR and are initialized as loop counts to be executed. When the instruction VD1CBR is executed, the register VCR1 is decremented by one. If the count value is not zero and the condition specified in the instruction matches VFLAG, then an atmosphere is taken. If not, no branch is taken. The register VCR1 is decremented by 1 in either case. Registers VCR2 and VCR3 are used equally.
벡터 전역 마스크 레지스터 VGMR0는 VEC32에서 영향을 미칠 목적지 벡터 레지스터의 엘리먼트와 VEC64 모드에서 VR<287:0>내에 있는 엘리먼트를 가르킨다.The vector global mask register VGMR0 points to the element in the destination vector register that will affect VEC32 and the element in VR <287: 0> in VEC64 mode.
VGMR0의 각 비트는 벡터 목적지 레지스터의 9 비트의 갱신을 제어한다. 특히, VGMR0<i>는 VEC32 모드의 VRd<9i+8:9i>와 VEC64 모드의 VR0d<9i+8:9i>의 갱신을 제어한다. VR0d는 VEC64 모드에서 뱅크 0의 목적지 레지스터를 가리키고, VRd는 VEC32 모드에서 뱅크 0 또는 1중 어느 하나일 수 있는 현재의 뱅크에 있는 목적지 레지스터를 가리킨다. 벡터 전역 마스크 레지스터 VGMRO는 VCMOVM 명령을 제외하고 모든 명령의 실행에 사용된다.Each bit of VGMR0 controls an update of 9 bits of the vector destination register. In particular, VGMR0 <i> is VEC32 mode of VRd <9i + 8: 9i> : controls the update of the <9i 9i + 8> and VEC64 mode of VR 0 d. VR 0 d points to the destination register of
벡터 전역 마스크 레지스터 VGMR1은 VEC64 모드에서 영향을 받는 VR<575:288>내의 엘리먼트를 가르킨다. VGMR1의 각 비트는 뱅크 1에서 벡터 목적지 레지스터에 있는 9비트의 갱신을 제어한다. 특히, VGMR1<i>는 VR1d<9i+8:9i>의 갱신을 제어한다. 레지스터 VGMR1<i>은 VR1d<9i+8:9i>의 갱신을 제어한다. 레지스터 VGNR1은 VEC32모드에서 사용되지 않지만, VEC64모드에서 VCMOVM 명령을 제외하고 VEC32 명령에 사용되지 않는다.The vector global mask register VGMR1 points to an element in VR <575: 288> that is affected in the VEC64 mode. Each bit of VGMR1 controls the update of 9 bits in the vector destination register in
벡터 오버플로우 레지스터 VOR0은 VEC 32 모드에 있는 엘리먼트와 벡터 산술 연산후 오버플로우 결과를 수용하고 있는 VEC 64 모드에 있는 VR<287:0>내의 엘리먼트를 가르킨다. 이 레지스터는 스칼라 산술 연산에 의해 수정되지 않는다. 세트 되는 비트 VORO<i>는 바이트 또는 바이트 9의 i번째 엘리먼트, 하프워드의 (i idiv 2)번째 엘리먼트, 또는 워드 데이타형 연산의 (i idiv 4)번째 엘리먼트가 오버플로우 결과를 포함하고 있다는 것을 가리킨다. 예를 들어 비트 1 및 비트 3은 각각 첫번째 하프워드 및 워드 엘리먼트의 오버플로우를 가르키도록 세트될 것이다.The vector overflow register VOR0 points to an element in VEC 32 mode and an element in VR <287: 0> in VEC 64 mode that contains the overflow result after the vector arithmetic operation. This register is not modified by scalar arithmetic. Bit VORO <i> to be set indicates that the i th element of the byte or
VOR0에 있는 비트들의 이와 같은 맵핑은 VGMR0 또는 VGR1에 있는 비트 맵핑과는 다르다.This mapping of the bits in VOR0 is different from the bit mapping in VGMR0 or VGR1.
벡터 오버플로우 레지스터 VOR1은 벡터 산술 연산후 오버플로우 결과를 포함하고 있는 VEC64 모드에서 VR<575:288>내의 엘리먼트를 가르키는데 사용된다. 레지스터 VOR1은 VEC32 모드에서 사용되지 않고 스칼라 산술 연산에 의해 수정되지도 않는다. 세트되고 있는 비트 VOR1<i>은 바이트 또는 바이트 9의 i번째 엘리먼트, 하프워드의 (i idiv 2)번째 엘리먼트, 또는 오버프로우 결과를 포함하고 있는 워드 데이타형 연산의 (i idiv 4)번째 엘리먼트를 가르킨다. 예를 들어 비트 1 및 비트 3은 VR<575:288>에서 각각 첫번째 하프워드 및 워드 엘리먼트의 오버플로우를 가리키도록 세트될 것이다. VOR1에 있는 비트들의 맵핑은 VGMR0 또는 VGMR1에 있는 비트들의 맵핑과는 다르다.The vector overflow register VOR1 is used to point to an element in VR <575: 288> in the VEC64 mode which contains the overflow result after the vector arithmetic operation. Register VOR1 is not used in VEC32 mode, nor is it modified by scalar arithmetic. The set bit VOR1 <i> is the i-th element of the byte or
벡터 명령 어드레스 브레이크 포인트 레지스터 VIABR은 벡터 프로그램을 디버그하는데 도움이 된다. 레지스터 정의가 표 c7에 도시되어 있다.The vector instruction address breakpoint register VIABR helps to debug vector programs. The register definitions are shown in Table c7.
[표 c7]Table c7
VIABR 정의VIABR Definition
벡터 데이터 어드레스 브레이크포인트 레지스터 VDABR은 벡터 프로그램을 디버그하는데 도움이 된다. 이 레지스터 정의가 표 c8에 도시되어 있다.The vector data address breakpoint register VDABR helps to debug vector programs. This register definition is shown in Table c8.
[표 c8]Table c8
VDABR 정의VDABR Definition
벡터 이동 마스크 레지스터 VMMR0는 모든 명령에 대해 VCSR<SMM>=1일 때는 물론 모든 경우에 VCMOVM 명령에 의해 사용된다. 레지스터 VMMR0는 VEC32 모드에서 영향을 받을 목적지 벡터 레지스터의 엘리먼트와 VEC64 모드에서 VR<287:0>내의 엘리먼트를 가르킨다. VMMR0의 각 비트는 벡터 목적지 레지스터의 9 비트의 갱신을 제어한다. 특히, VMMR0<i>는 VEC32 모드에서 VRd<9i+8:9i>과 VEC64 모드에서 VR0d<9i+8:9i>의 갱신을 제어한다. VR0d는 VEC64에서 뱅크 0의 목적지 레지스터를 가르키고, VRd는 VEC32 모드에서 뱅크 0 또는 1 중 어느 하나일 수 있는 현재의 뱅크에서 목적지 레지스터를 가르킨다.The vector shift mask register VMMR0 is used by the VCMOVM instruction in all cases as well as when VCSR <SMM> = 1 for all instructions. The register VMMR0 points to the element of the destination vector register that will be affected in VEC32 mode and the element in VR <287: 0> in VEC64 mode. Each bit of VMMR0 controls an update of 9 bits of the vector destination register. In particular, VMMR0 <i> is VRd <9i + 8: 9i> in VEC32 mode: controls the update of the <9i 9i + 8> VR 0 d in and VEC64 mode. VR 0 d points to the destination register of
벡터 이동 마스크 레지스터 VMMR1는 모든 명령에 대해 VCSR<SMM>=1일 때는 물론 모든 경우에 VCMOVM 명령에 의해 사용된다. 레지스터 VMMR1는 VEC64 모드에서 영향을 받을 VR<575:287>내의 엘리먼트를 가르킨다. VMMR1의 각 비트는 뱅크 1에서 벡터 목적지 레지스터의 9 비트의 갱신을 제어한다. 특히, VGMR1<i>는 VR1d<9i+8: 9i>의 갱신을 제어한다. 레지스터 VGMR1은 VEC32 모드에서 사용되지 않는다.The vector shift mask register VMMR1 is used by the VCMOVM instruction in all cases as well as when VCSR <SMM> = 1 for all instructions. The register VMMR1 points to the element in VR <575: 287> that will be affected in the VEC64 mode. Each bit of VMMR1 controls the updating of 9 bits of the vector destination register in
벡터 및 ARM7 동기화 레지스터 VASYNC는 프로세서(110 및 120)간의 동기화의 생산자/소비자를 제공한다. 현재, 단지 비트 30만이 정의되어 있다. ARM7 프로세서는 벡터 프로세서(120)가 상태 VP_RUN 또는 VP_IDLE에 있는 동안 명령어 MFER, MTER 및 TESTSET를 사용하여 레지스터 VASYNC를 액세스할 수 있다. 레지스터 VASYNC는 이들 명령들이 첫번째 16 벡터 프로세서의 특수 목적 레지스터를 벗어나 액세스할 수 없기 때문에 TVP 또는 MFVP 명령을 통해 ARM7 프로세스에 액세스할 수 없다. 벡터 프로세서는 VMOV 명령을 통해 레지스터 VASYNC를 액세스할 수 있다.The vector and ARM7 synchronization registers VASYNC provide the producer / consumer of synchronization between the
표 c9 는 파우어-온 리셋시 벡터 프로세서의 상태를 도시한다.Table c9 shows the state of the vector processor upon power-on reset.
[표 c9]Table c9
파우어-온 리셋시 벡터 프로세서Vector processor on power-on reset
특수 목적 레지스터는 벡터 프로세서가 명령을 실행할 수 있기 전에 ARM7 프로세서(110)에 의해 초기화된다.The special purpose register is initialized by the
<부록D><Appendix D>
각 명령은 소스 및 목적지 오퍼런드의 데이타 형을 암시하거나 또는 명시한다. 일부 명령은 한가지 이상의 데이터 형과 동등하게 적용되는 시맨틱스를 갖는다. 일부 명령은 소스에 대한 하나의 데이타 형을 취하는 시맨틱스를 가지며, 그 결과에 대해 다른 데이타 형을 만든다. 본 부록은 예시적인 실시예에 의해 지원되는 데이터 형을 설명한다. 본 장의 표 1은 지원되는 데이타 형 int8, int9, int16, int32 및 부동 데이타를 설명한다. 부호 없는 정수 포맷은 지원되지 않고 부호없는 정수 값은 먼저 사용되기 전에 2의 보수 포맷으로 변환되어야 한다. 프로그래머는 오버플로우가 적절히 처리되는 한 부호없는 정수 또는 그가 선택한 임의의 다른 포맷으로서 산술 명령을 자유로이 사용한다. 아키텍춰는 2의 보수 정수 및 32 비트 부동 소수점 데이터 형만의 오버플로우를 정의한다. 아키텍춰는 부호없는 오버플로우에 필요한 8, 9, 16 또는 32 비트 연산의 캐리 아웃을 검출할 수 없다.Each instruction implies or specifies the data types of the source and destination operands. Some instructions have semantics that apply equally to one or more data types. Some commands have semantics that take one data type for the source and produce another data type for the result. This appendix describes data types supported by the example embodiments. Table 1 in this chapter describes the supported data types int8, int9, int16, int32, and floating data. Unsigned integer formats are not supported and unsigned integer values must be converted to a two's complement format before being used first. The programmer is free to use arithmetic instructions as unsigned integers or any other format he chooses so long as the overflow is handled properly. The architecture defines the overflow of only two's complement integers and 32-bit floating point data types. The architecture cannot detect the carry out of 8, 9, 16, or 32 bit operations required for unsigned overflow.
표 d1 은 로드 연산에 의해 지원되는 데이타 크기를 도시한다.Table d1 shows the data size supported by the load operation.
[표 d1]TABLE D1
로드 연산에 의해 지원되는 데이타 크기Data size supported by the load operation
아키텍춰는 데이타 형 경계일 메모리 어드레스 정렬을 명시한다. 즉, 바이트의 경우, 어떠한 정렬 조건도 존재하지 않는다. 하프워드의 경우, 정렬 조건은 하프워드 경계이다. 워드의 경우, 정렬 조건은 워드 경계이다.The architecture specifies a memory address alignment that will be data type bound. That is, in the case of bytes, there is no sort condition. For halfwords, the alignment condition is a halfword boundary. For words, the alignment condition is a word boundary.
표 d2는 저장 연산에 의해 지원되는 데이타 크기를 도시한다.Table d2 shows the data sizes supported by the store operation.
[표 d2]TABLE D2
저장 연산에 의해 지원되는 데이타 크기Data size supported by the save operation
스칼라이거나 또는 벡터이거나 하나 이상의 dam형이 레지스터의 맵핑되기 때문에 일부 데이타 형에 대해 정의된 결과를 갖지 않는 목적지 레지스터에 비트가 존재할 수 있다. 사실, 벡터 목적지 레지스터에 대한 바이트 9 데이타 크기 연산과 스칼라 목적지 레지스터에 대한 워드 데이타 크기 연산을 위한 이외에, 그 값이 연산에 의해 정의되지 않은 목적지 레지스터에 비트에 존재한다. 이들 비트들의 경우 아키텍춰는 그들 값이 정의될 것을 지정한다. 표 d3은 각각의 데이터 크기에 대해 정의되지 않은 비트들을 도시한다.Because a scalar or vector or more than one dam type is mapped to a register, there may be bits in the destination register that do not have a defined result for some data types. In fact, in addition to
[표 d3]TABLE D3
데이터 크기에 대해 정의되지 않은 비트Undefined bit for data size
프로그래밍시 프로그래머는 항상 소스 및 목적지 레지스터 또는 메모리의 데이타 형을 알고 있어야 한다. 한 엘리먼트 크기에서 다른 것으로 데이타 형 변환은 잠재적으로 벡터 레지스터에 저장되는 수가 다른 엘리먼트로 되는 결과가 된다. 예를 들어 하프워드에서 워드 데이타 형으로 벡터 레지스터의 변환은 동일한 수의 변환된 엘리먼트를 저장하기 위해 두개의 벡터 레지스터를 필요로 한다. 역으로 벡터 레지스터에서 사용자가 정의한 포맷을 가질 수 있는 워드 데이타 형에서 하프 포맷으로의 변환은 벡터 레지스터의 1/2에 동일한 수의 엘리먼트 그리고 다른 절반에 나머지 비트들을 발생시킨다. 어느 경우건, 데이타 형 변환은 소스 엘리먼트와는 다른 크기인 변환된 엘리먼트의 배열에 아키텍춰의 문제를 야기한다.In programming, the programmer must always know the data types of the source and destination registers or memory. Data type conversion from one element size to another results in a potentially different number of elements stored in the vector register. For example, the conversion of a vector register from halfword to word data type requires two vector registers to store the same number of converted elements. Conversely, the conversion from word data type to half format, which can have a user-defined format in the vector register, results in the same number of elements in one half of the vector register and the remaining bits in the other half. In either case, data type conversion poses an architectural problem for arrays of converted elements that are of a different size than the source element.
원칙적으로 MSP 아키텍춰는 엘리먼트의 수를 묵시적으로 변환시키는 연산을 결과로서 제공한다. 아키텍춰는 프로그래머가 목적지 레지스터에 있는 엘리먼트의 수를 바꾼 결과를 알고 있어야만 한다고 본다. 아키텍춰는 하나의 데이타 형에서 동일한 크기의 다른 데이타 형으로 변환하는 연산만을 제공하고, 프로그래머로 하여금 하나의 데이타 형에서 크기가 다른 데이타 형으로 변환할 때 데이타 크기의 차이를 조정할 것으로 요구한다.In principle, the MSP architecture provides the result of an operation that implicitly converts the number of elements. The architecture assumes that the programmer must know the consequences of changing the number of elements in the destination register. The architecture provides only operations that convert from one data type to another of the same size, and requires the programmer to adjust the difference in data size when converting from one data type to another.
부록 E에 서술된 것과 같이 VSHFLL 및 VUNSHFLL와 같은 특수한 명령은 하나의 데이트 크기를 갖는 하나의 벡터에서 다른 데이타 크기를 갖는 다른 벡터로의 변환을 단순히 한다. 예를 들면 VRa에서 보다 작은 엘리먼트 크기 int8에서보다 큰 엘리먼트 예를 들면 int 16으로의 2의 보수 데이타 형을 변환하는 것에 관련된 기본적인 스텝은 다음과 같다.As described in Appendix E, special instructions such as VSHFLL and VUNSHFLL simply simplify the conversion from one vector with one data size to another with a different data size. For example, the basic steps involved in converting a two's complement data type to a smaller element size int8, for example int8, in VR a are as follows.
1. 바이트 데이타 형을 이용하여 다른 벡터 VRb를 갖는 VRa에 있는 엘리먼트를 두개의 벡터 VRc:VRd로 셔플한다. VRa에 있는 엘리먼트는 이중 크기 레지스터 VRc:VRd에 있는 int16 데이타 엘리먼트의 하위 바이트로 이동되고, 그 값이 무관한 VRb의 엘리먼트가 VRc:VRd의 상위 바이트로 이동된다. 이 연산은 바이트에서 하프 워드로 각 엘리먼트의 크기를 배가 시키면서, VRa의 엘리먼트 절반을 VRc로, 다른 절반을 VRd로 효율적으로 이동시킨다.1. Using the byte data type, shuffle the elements in VR a with different vectors VR b into two vectors VR c : VR d . The element in VR a is moved to the lower byte of the int16 data element in the dual size register VR c : VR d , and the element of VR b whose value is irrelevant is moved to the upper byte of VR c : VR d . This operation doubles the size of each element from byte to half word, effectively moving one element of VR a to VR c and the other half to VR d .
2. VRc에 있는 엘리먼트를 부호 확장하기 위해 8비트 산술 쉬프트시킴. 예를 들면 벡터 VRa에 있는 것보다 큰 엘리먼트 크기, int16에서 예를 들면 보다 작은 크기, int6로 2의 보수 데이타 형을 변환하는 것에 관련된 기본 스텝은 다음과 같다 :2. 8-bit arithmetic shift to sign-extend the elements in VR c . For example, the basic steps involved in converting an element size larger than that in vector VR a , a smaller size in int16, for example smaller, and a two's complement data type from int6 are
1. int16 데이타 형에 있는 각 엘리먼트가 바이트 크기로 표현가능한 지를 점검한다. 만일 필요하다면, 양쪽 모두에 엘리먼트를 포화시켜 보다 작은 크기에 끼워 맞춘다.Check that each element of int16 data type is representable in bytes. If necessary, saturate the elements on both sides to fit the smaller size.
2. VRa의 엘리먼트를 다른 VRb로서 두개의 벡터 VRc:VRd속에 언셔플한다. VRa및 VRb에 있는 각 엘리먼트의 상위 절반은 VRc로 이동되고 하위 절반은 VRd로 이동된다. 이는 VRd의 하위 절반에 있는 VRa의 모든 엘리먼트의 하부 절반을 효율적으로 수집한다.2. Unshuffle the elements of VR a into two vectors VR c : VR d as other VR b . The upper half of each element in VR a and VR b is moved to VR c and the lower half to VR d . This effectively collects the bottom half of all elements of VR a in the bottom half of VR d .
3. 특수 명령이 다음과 같은 데이타 형 변환에 제공된다 : 단일 정확도 부동 소수점에 대해 int32; 고정소수점에 대해 단일 정확도 부동 소수점(X, Y 주석); int32에 대해 단일 정확도 부동 소수점; int9에 대해 int8; int16에 대해 int9; 및 int9에 대해 int16.3. Special instructions are provided for the following data type conversions: int32 for single-precision floating point; Single-precision floating point (X, Y annotations) for fixed point; single precision floating point for int32; int8 for int9; int9 for int16; And int16 for int9.
벡터 프로그래밍에 유연성을 제공하기 위해 대부분의 벡터 명령은 엘리먼트 마스크를 사용하여 벡터내의 선택된 엘리먼트에 대해서만 연산한다. 벡터 전역 마스크 레지스터 VGMRO 및 VGMR1는 벡터 명령에 의해 목적지 레지스터 및 벡터 누산기에서 수정된 엘리먼트를 식별한다. 바이트 및 바이트 9 데이타 크기 연산의 경우, VGMR0(또는 VGMR1)에 있는 32 비트 각각은 연산될 엘리먼트를 식별한다. 세트 되고 있는 비트 VGMR0<i>는 여기서 i가 0에서 31 까지인 바이트 크기의 엘리먼트 i가 영향을 받게 될 것이라는 것을 가리킨다. 하프워드 데이타 크기 연산의 경우 VGMR0(또는 VGMR1)에 있는 32 비트 각 쌍은 연산될 엘리먼트를 식별한다. 세트 되고 있는 비트들 VGMR0<2i:2i+1>는 여기서 i가 0에서 15 까지인 엘리먼트 i가 영향을 받게 될 것이라는 것을 가르킨다. 만일 VGMR0에 있는 쌍의 한 비트만이 하프워드 데이타 크기 연산을 위해 세트되면, 대응하는 바이트에 있는 비트만이 수정된다. 워드 데이타 크기 연산의 경우, VGMR0(또는 VGMR1)에 있는 네개 비트의 각 세트는 연산될 엘리먼트를 식별한다. 세트되고 있는 비트들 VGMR0<4i:4i+3>는 여기서 i가 0에서 7 까지인 엘리먼트 i가 영향을 받을 것이라는 것을 가르킨다. 만일 VGMR0에 있는 네개 세트에 있는 모든 비트들이 워드 데이타 크기 연산을 위해 세트 되어 있지 않으면 대응하는 바이트에 있는 비트만이 수정된다.To provide flexibility in vector programming, most vector instructions use element masks to operate only on selected elements in the vector. The vector global mask registers VGMRO and VGMR1 identify the elements modified in the destination register and the vector accumulator by the vector instruction. For byte and
VGMR0 및 VGMR1는 VCMPM명령을 사용하여 벡터 레지스터를 벡터 또는 스칼라 레지스터 또는 증간값과 비교함으로서 세트될 수 있다. 이 명령은 지정된 데이타 크기에 따라 마스크를 적절히 세트시킨다. 스칼라 레지스터가 하나의 데이타 엘리먼트만을 수용하도록 정의되어 있기 때문에 스칼라 연산(즉, 목적지 레지스터가 스칼라인)은 엘리먼트 마스크에 의해 영향을 받지 않는다.VGMR0 and VGMR1 can be set by comparing a vector register with a vector or scalar register or an increment using a VCMPM instruction. This command sets the mask appropriately according to the specified data size. Because scalar registers are defined to accept only one data element, scalar operations (ie, destination registers are scalar) are not affected by the element mask.
벡터 프로그래밍에서의 유연성을 위해 대부분의 MSP 명령은 세 가지 형태의 벡터 및 스칼라 연산을 지원한다. 이들은 다음과 같다.For flexibility in vector programming, most MSP instructions support three forms of vector and scalar operations. These are as follows.
1. 벡터 = 벡터 op 벡터1.vector = vector op vector
2. 벡터 = 벡터 op 스칼라2. Vector = vector op scalar
3. 스칼라 = 스칼라 op 스칼라3. scalar = scalar op scalar
스칼라 레지스터가 B 오퍼런드로서 명시된 2의 경우, 스칼라 레지스터에 있는 하나의 엘리먼트는 벡터 A 오퍼런드 내의 엘리먼트의 수와 일치할 필요가 있는 수만큼 복제된다. 복제된 엘리먼트는 지정된 스칼라 오퍼런드에 있는 엘리먼트과 동일한 값이다. 스칼라 오퍼런드는 중간 오퍼런드 형태로 스칼라 레지스터 또는 명령으로부터 올 수 있다. 중간 오퍼런드의 경우, 만일 지정된 데이타 형이 중간 필드 크기로서 이용할 수 있는 것 보다 보다 큰 데이타 크기를 이용한다면 적당하게 부호 확장된다.In the case of 2, where a scalar register is specified as the B operand, one element in the scalar register is duplicated as many times as necessary to match the number of elements in the vector A operand. The duplicated element is the same value as the element in the specified scalar operand. Scalar operands can come from scalar registers or instructions in the form of intermediate operations. In the case of an intermediate operation, if the specified data type uses a larger data size than is available as the intermediate field size, it is appropriately sign extended.
많은 멀티미디어 어플리케이션에서, 소스, 중간 및 결과의 정밀도에 대해 많은 관심이 모아져야만 한다. 또한, 정수 곱셈 명령은 두개의 벡터 레지스터에 저장될 수 있는 "이중 정밀도" 중간 결과를 만든다.In many multimedia applications, much attention must be paid to the precision of the source, intermediate, and result. In addition, integer multiplication instructions produce "double precision" intermediate results that can be stored in two vector registers.
MSP 아키텍춰는 현재 8, 9, 16 및 32 비트 엘리먼트를 위한 2의 보수 정수 포맷 32 비트 엘리먼트를 위한 IEEE 754 단일 정확도 포맷을 지원한다. 오버플로우는 명시된 데이타 형으로서 표현될 수 있는 가장 양의 또는 가장 음의 값을 벗어난 결과로 정의된다. 오버플로우가 발생할 때, 목적지 레지스터에 기록된 값은 무효 숫자가 아니다. 어너플로우는 부동 소수점 연산에 대해서만 정의되어 있다.The MSP architecture currently supports IEEE 754 single accuracy format for two's complement integer format 32-bit elements for 8, 9, 16, and 32-bit elements. Overflow is defined as the result of being outside the most positive or negative value that can be represented as a specified data type. When an overflow occurs, the value written to the destination register is not an invalid number. An overflow is defined only for floating point operations.
달리 정의하지 않는 한, 모든 부동 소수점 연산은 VCSR<RMODE>에 명시된 네개의 라운딩 모드 중 하나를 이용한다. 일부 명령은 라운드 어웨이 프럼 제로(round away from zero)(라운드 이븐(round even)) 라운딩 모드라고 알려진 것을 이용한다.Unless defined otherwise, all floating point operations use one of the four rounding modes specified in VCSR <RMODE>. Some commands use what is known as round away from zero (round even) rounding mode.
포화(saturation)는 많은 멀티미디어 어플리케이션에 있어서 중요한 기능이다. MSP 아키텍춰는 네가지 모든 정수 및 부동 소수점 연산에서의 포화를 지원한다. 레지스터 VCSR에 비트 ISAT는 정수 포화 모드를 명시한다. 고속 IEEE 모드로도 알려진 부동소수점 포화 모드는 VCSR에서 FSAT로 명시되어 있다. 포화 모드가 인에이블되면, 가장 양의 또는 가장 음의 값을 벗어난 결과가 가장 양의 또는 가장 음의 값으로 각각 세트된다. 이 경우 오버플로우는 발생할 수 없고, 오버플로우 비트는 세트될 수 없다.Saturation is an important feature in many multimedia applications. The MSP architecture supports saturation in all four integer and floating point operations. Bit ISAT in the register VCSR specifies the integer saturation mode. Floating point saturation mode, also known as fast IEEE mode, is specified as FSAT in the VCSR. When the saturation mode is enabled, the result that is out of the most positive or most negative value is set to the most positive or most negative value respectively. In this case, no overflow can occur and the overflow bit cannot be set.
표 d4는 결함이 있는 명령이 실행되기 전에 검출되어 보고되는 정확한 예외를 열거한다.Table d4 lists the exact exceptions that are detected and reported before the faulty instruction is executed.
[표 d4]TABLE D4
정확한 예외Exact exception
표 d5는 결함이 있는 명령 이외의 차후의 프로그램에 있는 몇가지 명령을 실행한후 검출되어 보고된 부정확한 예외를 열거한다.Table d5 lists inaccurate exceptions detected and reported after executing several instructions in subsequent programs other than the faulty instruction.
[표 d5]TABLE D5
부정확한 예외Inaccurate exception
<부록 E><Appendix E>
벡터 프로세서를 위해 세트된 명령은 표 e1에 도시된 바와 같이 11개로 분류할 수 있다.Instructions set for the vector processor may be classified into eleven as shown in Table e1.
[표 e1]TABLE e1
벡터 명령 분류 요약Vector instruction classification summary
표 e2는 흐름 제어 명령을 열거한다.Table e2 lists flow control commands.
[표 e2]TABLE e2
흐름 제어 명령Flow control command
논리적 분류는 부울린 데이타 형을 지원하고, 엘리먼트 마스크에 의해 영향을 받는다. 표 e3은 흐름 제어 명령을 열거한다.Logical classifications support Boolean data types and are affected by element masks. Table e3 lists the flow control commands.
[표 e3]TABLE e3
논리적 명령Logical command
쉬프트/회전 분류 명령은 int8, int9, int16 및 int32 데이타 형(부동 데이타 형 없음)에 대해 연산하고, 엘리먼트 마스크에 의해 영향을 받는다. 표 E4는 쉬프트/회전 분류 명령을 열거한다.The shift / rotation sort instruction operates on int8, int9, int16 and int32 data types (no floating data types) and is affected by the element mask. Table E4 lists the shift / rotation sort commands.
[표 e4]Table e4
쉬프트 & 회전 분류Shift & turn classification
산술 분류 명령은 일반적으로 int8, int9, int16, int32 부동 데이타 형을 지원하고, 엘리먼트 마스크에 의해 영향을 받는다. 지원되지 않는 데이타 형에 대해 특정한 제한에 대해서는 이하의 각 명령에 대한 상세한 설명을 참조한다.Arithmetic classification instructions generally support the int8, int9, int16, and int32 floating data types and are affected by the element mask. See the description of each command below for specific restrictions on unsupported data types.
VCMPV 명령은 엘리먼트 마스크에 대해 연산을 하기 때문에 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 e5는 산술 분류 명령을 열거한다.The VCMPV instruction is not affected by the element mask because it operates on the element mask. Table e5 lists the arithmetic classification commands.
[표 e5]Table e5
산술 분류Arithmetic classification
MPEG 명령은 MPEG 엔코딩 및 디코딩에 특별히 적합한 명령어의 분류이지만 다양한 방법을 사용될 수 있다. MPEG명령은 int8, int9, int16 및 INT32 데이타 형을 지원하고, 엘리먼트 마스크에 의해 영향을 받는다. 표 e6은 MPEG 명령을 열거한다.MPEG instructions are a class of instructions specifically suited for MPEG encoding and decoding, but various methods may be used. MPEG instructions support int8, int9, int16, and INT32 data types, and are affected by element masks. Table e6 lists MPEG commands.
[표 e6]TABLE e6
MPEG 분류MPEG classification
각각의 데이타 형 변환 명령은 특정 데이타 형을 지원하고, 아키텍춰가 레지스터에 있는 하나 이상의 데이타 형을 지원하지 않기 때문에 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 E7은 데이타 형 변환 명령을 열거한다.Each data type conversion instruction supports a particular data type and is not affected by the element mask because the architecture does not support more than one data type in a register. Table E7 lists the data type conversion instructions.
[표 e7]Table e7
데이타 형 변환 명령Data type conversion command
명령의 엘리먼트간 산술 분류는 int8, int9, int16, int32 및 부동 데이타형을 지원한다. 표 e8은 엘리먼트간 산술 분류를 열거한다.The inter-element arithmetic classification of instructions supports int8, int9, int16, int32, and floating data types. Table e8 lists the inter-element arithmetic classifications.
[표 e8]Table e8
엘리먼트간 산술 분류Arithmetic classification between elements
명령의 엘리먼트간 이동 분류는 바이트, 바이트9, 하프워드 및 워드 데이타 크기를 지원한다. 표 e9은 명령의 엘리먼트간 이동 분류를 열거한다.Inter-element transfer classification of instructions supports byte,
[표 e9]Table e9
엘리먼트간 이동 분류Move between elements
로드/저장 명령은 바이트, 하프워드 및 워드 데이타 크기 이외에 특수한 바이트 9 관련 데이타 크기 연산을 지원하고, 엘리먼트 마스크에 의한 영향을 받지 않는다. 표 e10은 로드/저장 분류에 있는 명령들을 열거한다.Load / store instructions support
[표 e10]Table e10
로드/저장 분류Load / Save Classification
대부분의 레지스터 이동 명령은 int8, int9, int16, int32 및 부동 데이타형을 지원하고, 엘리먼트 마스크에 의한 영향을 받지 않는다. VCMOVM 명령만이 엘리먼트 마스크에 의한 영향을 받는다. 표 E11은 명령의 레지스터 이동 분류를 열거한다.Most register move instructions support int8, int9, int16, int32, and floating data types, and are not affected by the element mask. Only VCMOVM instructions are affected by the element mask. Table E11 lists the register move classifications of the instructions.
[표 e11]TABLE e11
레지스터 이동 분류Register move classification
표 e12는 캐쉬 서브시스템(130)을 제어하는 캐쉬 연산 분류에 있는 명령을 열거한다.Table e12 lists the instructions in the cache operation classification that control
[표 e12]TABLE e12
캐쉬 연산 분류Cache operation classification
명령어 설명 명명Command Description Naming
명령어 세트의 명세를 간단히 하기 위해, 부록 전반에 걸쳐 특수한 용어가 사용된다. 예를 들어, 명령어 오퍼런드는 달리 정의되지 않는한, 바이트, 바이트9, 하프워드 또는 워드 크기의 부호가 있는 2의 보수 정수이다. "레지스터"라는 용어는 범용(스칼라 또는 벡터) 레지스터를 가리키는데 사용된다. 다른 종류의 레지스터는 명시적으로 설명되어 있다. 어셈블리 언어 구문에서 첨자 b, b9, h 및 w는 데이타 크기(바이트, 바이트9, 하프워드 및 워드) 및 정수 데이타 형(int8, int9, int16 및 int32) 모두를 지칭한다. 또한, 명령어 오퍼런드, 연산, 및 어셈블리 언어 구문을 설명하는데 사용된 용어와 기호는 다음과 같다:To simplify the specification of the instruction set, special terms are used throughout the appendix. For example, an instruction operand is a signed two's complement integer of byte,
Rd : 목적지 레지스터(벡터, 스칼라 또는 특수 목적용)Rd: destination register (vector, scalar or special purpose)
Ra, Rb : 소스 레지스터 a 및 b(벡터, 스칼라 또는 특수 목적용)Ra, Rb: Source registers a and b (vector, scalar or special purpose)
Rc : 소스 또는 목적지 레지스터 c(벡터 또는 스칼라)Rc: source or destination register c (vector or scalar)
Rs : 데이타 소스 레지스터 저장(벡터 또는 스칼라)Rs: Store data source registers (vector or scalar)
S : 32 비트 스칼라 또는 특수 목적 레지스터S: 32-bit scalar or special purpose register
VR : 현재의 뱅크 벡터 레지스터VR: current bank vector register
VRA : 대체 뱅크 벡터 레지스터VRA: Alternate Bank Vector Register
VR0: 뱅크 0 벡터 레지스터VR 0 :
VR1: 뱅크 1 벡터 레지스터VR 1 :
VRd : 벡터 목적지 레지스터(VRA가 명시되어 있지 않는 한 현재의 뱅크에 대한 디폴트)VRd: vector destination register (default for current bank unless VRA is specified)
VRa, VRb : 벡터 소스 레지스터 a 및 bVRa, VRb: vector source registers a and b
VRc : 벡터 소스 또는 목적지 레지스터 cVRc: vector source or destination register c
VRs : 벡터 저장 데이타 소스 레지스터VRs: Vector Store Data Source Registers
VAC0H : 벡터 누산기 레지스터 0 하이VAC0H:
VAC0L : 벡터 누산기 레지스터 0 로우VAC0L:
VAC1H : 벡터 누산기 레지스터 1 하이VAC1H:
VAC1L : 벡터 누산기 레지스터 1 로우VAC1L:
SRd : 스칼라 목적지 레지스터SRd: scalar destination register
SRa, SRb : 스칼라 소스 레지스터 a 및 bSRa, SRb: scalar source registers a and b
SRb+ : 유효 어드레스로 베이스 레지스터의 갱신SRb +: Update base register to valid address
SRs : 스칼라 저장 데이타 소스 레지스터SRs: Scalar Stored Data Source Registers
SP : 특수 목적 레지스터SP: Special Purpose Registers
VR[i] : 벡터 레지스터 VR에 있는 i번째 엘리먼트VR [i]: i-th element in the vector register VR
VR[i]<a:b> : 벡터 레지스터 VR에 있는 i번째 엘리먼트 비트 a 내지 bVR [i] <a: b>: i th element bits a to b in the vector register VR
VR[i]<msb> : 벡터 레지스터 VR에 있는 i번째 엘리먼트의 최상위 비트VR [i] <msb>: most significant bit of the i th element in the vector register VR
EA : 메모리 액세스를 위한 유효 어드레스EA: Effective Address for Memory Access
MEM : 메모리MEM: memory
BYTE[EA] : EA에 의해 어드레스 되는 메모리의 한 바이트BYTE [EA]: One byte of memory addressed by EA
HALF[EA] : EA에 의해 어드레스 되는 메모리의 워드. 비트<15:8>는 EA+1에 의해 어드레스된다.HALF [EA]: Word of memory addressed by EA. Bits <15: 8> are addressed by EA + 1.
WORD[EA] : EA에 의해 어드레스 되는 메모리의 하프워드. 비트<31:24>는 EA+3에 의해 어드레스된다.WORD [EA]: Halfword of the memory addressed by EA. Bits <31:24> are addressed by EA + 3.
NumElem : 소정의 데이타 형에 대한 엘리먼트의 수를 가르킨다. 이는 VEC32 모드에서 바이트 및 바이트9, 하프워드 또는 워드 데이타 크기 각각에 대해 32, 16 또는 8이다. 이는 VEC64 모드에서 바이트 및 바이트9, 하프워드 또는 워드 데이타 크기 각각에 대해 64, 32 또는 16 이다. 스칼라 연산의 경우 NumElem은 0이다.NumElem indicates the number of elements for a given data type. This is 32, 16 or 8 for byte and
EMASK[i] : i번째 엘리먼트에 대한 엘리먼트 마스크를 가르킨다. 이는 바이트 및 바이트 9, 하프워드 또는 워드 데이타 크기에 대해 각각 VGMRO/1, ~VGMR0/1, VMMR0/1, ~VMMR0/1를 표현하다. 스칼라 연산의 경우, 엘리먼트 마스크는 EMASK[i]=0일지라도 세트되는 것으로 가정한다.EMASK [i] points to the element mask for the i th element. This represents VGMRO / 1, -VGMR0 / 1, VMMR0 / 1, -VMMR0 / 1 for byte and
MMASK[i] : i번째 엘리먼트에 대한 엘리먼트 마스크를 지칭한다. 이는 바이트 및 바이트 9, 하프워드 또는 워드 데이타 크기에 대해 각각 VMMR0 또는 VMMR1에 있는 1, 2 또는 4 비트를 표현한다.MMASK [i]: refers to the element mask for the i-th element. It represents one, two or four bits in VMMR0 or VMMR1 for byte and
VCSR : 벡터 제어 및 상태 레지스터VCSR: Vector Control and Status Register
VCSR<x> : VCSR에 있는 비트 또느ㅌ 비트를 가리킨다. "X"는 필드명이다.VCSR <x>: Indicates a bit or a bit in the VCSR. "X" is a field name.
VPC : 벡터 프로세서 프로그램 카운터VPC: Vector Processor Program Counters
VECSIZE : 벡터 레지스터 크기는 VEC32에서는 32이고 VEC64에서는 64이다.VECSIZE: The vector register size is 32 for VEC32 and 64 for VEC64.
SPAD : 스크래치 패드SPAD: Scratch Pad
C 프로그래밍 구조는 연산의 제어 흐름을 설명하는데 사용된다. 예외는 다음과 같다 :The C programming construct is used to describe the control flow of an operation. The exception is as follows:
= 할당= Assignment
: 연결: connect
{x y}는 x 또는 y 사이의 선택을 가르킨다.(논리적이 아님 또는){x y} indicates a choice between x or y (not logical or)
sex 지정된 데이타 크기로의 부호 확장sex Sign extension to specified data size
sex_dp 지정된 데이타 크기의 이중 정확도로 부호 확장sex_dp Sign expansion with double precision of specified data size
sign>> 부호 확장된 (산술) 우측 쉬프트sign >> sign extended (arithmetic) right shift
zex 지정된 데이타 크기로의 제로 확장zex Zero expansion to the specified data size
zero>> 제로 확장된(논리적)우측 쉬프트zero >> Zero extended (logical) right shift
<< 좌측 쉬프트(제로 필 인(fill in))<< left shift (zero fill in)
trnc7 선두 7 비트(하프워드로부터)를 트렁케이트trnc7 Trunk the first 7 bits (from halfword)
trnc1 선두 1 비트(바이트9로부터)를 트렁케이트trnc1 Trunk the first 1 bit (from byte 9)
% 모듈로 연산자% Modulo operator
expression식의 절대값 expression The absolute value of an expression
/ 나눔(부동 데이타 형의 경우, 네개의 IEEE 라운딩 모드 중 하나를 이용한다.)/ Dividing (for floating data types, use one of the four IEEE rounding modes)
// 나눔(라운드 어웨이 프럼 제로 라운딩 모드를 이용한다.)// share (uses Round Away Prom Zero rounding mode)
saturate() 정수 데이타 형의 경우, 오버플로우를 생성하는 대신에 가장 음의 또는 가장 양의 값까지 포화, 부동 데이타 형의 경우, 포화는 양의 무한대, 음의 제로, 양의 제로, 또는 음의 무한대까지일 수 있다.For the saturate () integer data type, instead of generating an overflow, saturate to the most negative or most positive value; for floating data types, saturation is positive infinity, negative zero, positive zero, or negative It can be up to infinity.
전반적인 명령어 포맷은 도 8에 도시되어 있고 이하 서술된다.The overall instruction format is shown in FIG. 8 and described below.
REAR 포맷은 로드, 저장 및 캐쉬 연산 명령에 의해 사용되고, REAR 포맷에 있는 필드는 표 e13에 제시된 바와 같이 다음 의미를 갖는다.The REAR format is used by load, store and cache operation instructions, and the fields in the REAR format have the following meanings as shown in Table e13.
[표 e13]TABLE e13
REAR 포맷REAR format
비트 17:15는 예약되어 있고, 아키텍춰에서 차후 확장과 호환하기 위해 제로이어야 한다. B : D 및 TT 필드의 일부 엔코딩은 정의되지 않는다.Bits 17:15 are reserved and must be zero to be compatible with future extensions in the architecture. Some encodings of B: D and TT fields are not defined.
프로그래머는 이와 같은 엔코딩이 이용될 때 아키텍춰가 예상되는 결과를 지정하지 않기 때문에 이들 엔코딩을 사용해서는 안된다. 표 e14는 VEC32 및 VEC64 모드 모두에서 지원되는(LT로서 TT필드에서 인코드됨) 스칼라 로드 연산을 도시한다.Programmers should not use these encodings because the architecture does not specify the expected results when such encoding is used. Table e14 shows scalar load operations supported in both VEC32 and VEC64 modes (encoded in TT field as LT).
[표 e14]TABLE e14
VEC32 및 VEC64 모드에서의 REAR 로드 0psREAR Load 0ps in VEC32 and VEC64 Modes
표 e15는 비트 VCSR<0>이 클리어할 때 VEC32 모드에서(LT로서 TT필드에서 엔코드됨)지원되는 벡터 로드 연산을 도시한다.Table e15 shows the vector load operations supported in VEC32 mode (encoded in TT field as LT) when bit VCSR <0> is cleared.
[표 e15]Table e15
VEC32 모드에서의 REAR 로드 0ps.REAR load 0ps in VEC32 mode.
B 비트는 현재의 또는 대체 뱅크를 가리키는데 사용된다.The B bit is used to indicate the current or alternate bank.
표 e16 은 VCSR<0> 비트가 클리어일 때 VEC64 모드에서 (LT로서 TT 필드에서 엔코드됨) 지원되는 벡터 로드 연산을 도시한다.Table e16 shows the vector load operations supported in VEC64 mode (encoded in the TT field as LT) when the VCSR <0> bit is clear.
[표 e16]TABLE e16
VEC64 모드에서의 REAR 로드 Ops.REAR Load Ops. In VEC64 Mode.
B 비트는 현재 및 대체 뱅크의 개념이 VEC 64 모드에 존재하지 않기 때문에 64 바이트 벡터 연산을 가리키는데 사용된다.The B bit is used to indicate a 64 byte vector operation because the concept of the current and alternate banks does not exist in VEC 64 mode.
표 e17 은 VEC32 및 VEC64 모드 모두에서 (ST로서 TT 필드에서 엔코드됨) 지원되는 스칼라 저장 연산을 열거한다,Table e17 lists scalar store operations supported in both VEC32 and VEC64 modes (encoded in TT field as ST).
[표 e17]Table e17
REAR 스칼라 저장 연산.REAR scalar store operation.
표 e18 은 VCSR<0> 비트가 클리어일 때 VEC32 모드에서 (ST로서 TT 필드에서 엔코드됨) 지원되는 벡터 저장 연산을 열거한다.Table e18 lists the vector store operations supported in VEC32 mode (encoded in TT field as ST) when the VCSR <0> bit is clear.
[표 e18]Table e18
VEC32 모드에서의 REAR 벡터 저장 연산.REAR vector storage operation in VEC32 mode.
표 e19 은 VCSR<0> 비트가 세트될 때 VEC64 모드에서 (ST로서 TT 필드에서 엔코드됨) 지원되는 벡터 저장 연산을 열거한다.Table e19 lists the vector store operations supported in the VEC64 mode (encoded in the TT field as ST) when the VCSR <0> bit is set.
[표 e19]Table e19
VEC32 모드에서의 REAR 벡터 저장 연산.REAR vector storage operation in VEC32 mode.
B 비트는 현재 및 대체 뱅크의 개념이 VEC 64 모드에 존재하지 않기 때문에 64 바이트 벡터 연산을 가리키는데 사용된다.The B bit is used to indicate a 64 byte vector operation because the concept of the current and alternate banks does not exist in VEC 64 mode.
REAI 포맷은 로드, 저장 및 캐쉬 연산 명령에 의해 사용된다. 표 e20 은 REAI 포맷에 있는 필드는 필드의 의미를 도시한다.The REAI format is used by load, store, and cache operation instructions. Table e20 shows the meaning of the fields in the REAI format.
[표 e20]Table e20
REAl 포맷.REAl format.
RAER 및 REAI 포맷은 전달형에 대해 동일한 엔코딩을 이용한다. 추가적인 엔코딩에 대해서는 REAR 포맷을 참조한다.The RAER and REAI formats use the same encoding for the transfer type. See the REAR format for additional encoding.
RRRM5 포맷은 3개의 레지스터 또는 두개의 레지스터 및 5 비트 중간 오퍼런드를 제공한다.표 e21 은 RRRM5 포맷에 대한 필드를 가리킨다.The RRRM5 format provides three registers or two registers and a 5-bit intermediate operation. Table e21 indicates the fields for the RRRM5 format.
[표 e21]Table e21
RRRM5 포맷.RRRM5 format.
비트 19 : 15는 예약되어 있고, 아키텍춰에서의 추후 확장과 호환하도록 제로이어야 한다.Bits 19: 15 are reserved and must be zero to be compatible with future extensions in the architecture.
모든 렉터 레지스터 오퍼런드는 달리 정의되지 않는 한 현재의 뱅크(이는 뱅크 0 또는 뱅크 l중 어느 하나일 수 있다.)를 참조한다. 표 e22 는 DC<1:0>이 00, 01 또는 10일 때 D:S:M 엔코딩을 열거한다.All the collector register operands refer to the current bank (which may be either
[표 e22]Table e22
DS가 11과 같지 않을 때 RRRM5 D:S:M 엔코딩.RRRM5 D: S: M encoding when DS is not equal to 11.
DS<1:0>이 11일 때, D:S:M 엔코딩은 다음과 같은 의미를 갖는다.When DS <1: 0> is 11, the D: S: M encoding has the following meaning.
[표 e23]Table e23
DS이 11일 때, RRRM5 D:S:M 엔코딩.When DS is 11, RRRM5 D: S: M encoding.
RRRR 포맷은 네개의 레지스터 오퍼런드를 제공한다.The RRRR format provides four register operations.
표 e24 는 RRRR 포맷의 필드를 도시한다.Table e24 shows the fields in the RRRR format.
[표 e24]Table e24
RRRR 포맷.RRRR format.
모든 벡터 레지스터 오퍼런드는 달리 정의되지 않는 한 현재의 뱅크(이는 뱅크 0 또는 뱅크 1중 어느 하나일 수 있다.)를 참조한다.All vector register operands refer to the current bank (which may be either
RI 포맷은 로드 중간 임시 명령에 의해 사용된다. 표 e25 는 RI 포맷의 필드들 가리킨다.The RI format is used by load intermediate temporary instructions. Table e25 indicates fields of the RI format.
[표 e25]Table e25
RI 포맷.RI format.
F: DS<1:0> 필드의 임의의 엔코딩은 정의되어 있지 않다. 프로그래머는 아키텍춰가 이와 같은 엔코딩이 사용되면 예상되는 결과를 명시하지 않기 때문에 이들 엔코딩을 사용해서는 안된다. Rd로 로드되는 값은 표 e26 에 도시된 바와 같이 데이타 형에 따른다.F: Any encoding of the DS <1: 0> field is not defined. Programmers should not use these encodings because the architecture does not specify the expected results when such encodings are used. The value loaded into Rd depends on the data type as shown in Table e26.
[표 e26]Table e26
CT 포맷은 표 e27 에 도시된 필드를 포함한다.The CT format includes the fields shown in Table e27.
[표 e27]Table e27
CT 포맷.CT format.
분기 조건은 VCSR[GT:EQ:LT] 필드를 이용한다. 오버플로우 조건은 세트되면 GT, EQ 및 LT 비트에 선행하는 VCSR[SO] 비트를 이용한다. VCCS와 VCBARR은 상술된 것과는 달리 Cond<2:0> 필드를 해석한다. 세부사항을 대해서는 그들 명령 설명을 참조한다.Branch conditions use the VCSR [GT: EQ: LT] field. When the overflow condition is set, it uses the VCSR [SO] bit that precedes the GT, EQ, and LT bits. VCCS and VCBARR interpret the Cond <2: 0> field differently than described above. See their command descriptions for details.
RRRM9 포맷은 3개의 레지스터 또는 두개의 레지스터 및 9 비트 중간 오퍼런드를 명시한다. e28 은 RRRM9 포맷의 필드를 가리킨다.The RRRM9 format specifies three registers or two registers and a 9-bit intermediate operation. e28 points to a field in the RRRM9 format.
[표 e28]Table e28
RRRM9 포맷.RRRM9 format.
비트 19:l5는 D : S : M 엔코딩이 중간 오퍼런드를 명시하지 않을 때 예약되고, 차후의 호환성을 보장하기 위해 제로이어야 한다.Bits 19: l5 are reserved when the D: S: M encoding does not specify an intermediate operation, and must be zero to ensure future compatibility.
모든 벡터 레지스터 오퍼런드는 달리 정의되지 않는 한 현재의 뱅크(이는 뱅크 0 또는 뱅크 1중 어느 하나일 수 있다.)를 참조한다. D : S : M 엔코딩은 중간 필드로부터 추출된 중간 값이 표 E29 에 도시된 바와 같이 DS<1:0> 엔코딩에 따른다는 것을 제외하고 RRRM5 포맷에 대한 표 e22 와 표 e23 에 도시된 것과 동일하다.All vector register operands refer to the current bank (which may be either
[표 e29]Table e29
RRRM9 포맷의 중간값.Intermediate value in RRRM9 format.
중간 포맷은 부동 데이타 형과는 사용할 수 없다.Intermediate formats cannot be used with floating data types.
다음에서, MSP 벡터 명령은 알파벳 순서로 나타난다. 주:In the following, MSP vector instructions appear in alphabetical order. week:
1. 명령은 달리 정의되지 않는 한 엘리먼트 마스크에 의해 영향을 받는다. CT 포맷 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다. 로드, 저장 및 캐쉬 명령으로 구성되는 REAR 및 REAI 포맷 명령도 역시 엘리먼트 마스크에 의해 영향을 받지 않는다.1. Instructions are affected by element masks unless otherwise defined. CT format instructions are not affected by the element mask. REAR and REAI format instructions, consisting of load, store, and cache instructions, are also unaffected by the element mask.
2. 9 비트 중간 오퍼런드는 부동 데이타 형과 사용할 수 없다.2. 9-bit intermediate operands cannot be used with floating data types.
3. 연산 설명에서, 벡터 형식만이 제시된다. 스칼라 연산의 경우, 오로지 하나만을 가정하면 0번째 엘리먼트가 정의된다.3. In the operation description, only vector form is presented. For scalar operations, assuming only one, the zeroth element is defined.
4. RRRM5 및 RRRM9 포맷의 경우, 다음 엔코딩이 정수 데이타 형(b, b9, h, w)에 사용된다.4. For the RRRM5 and RRRM9 formats, the following encodings are used for integer data types (b, b9, h, w).
5. RRRM5 및 RRRM9 포맷의 경우, 다음 엔코딩이 부동 데이타 형에 사용된다.5. For the RRRM5 and RRRM9 formats, the following encodings are used for floating data types.
6. 오버플로우를 유발하는 모든 명령에 대해, VCSR<ISAT> 비트가 세트될 때 int8, int9, int16, int32 최대 또는 최소 한계값까지의 포화가 적용된다. 따라서, 부동 소수점 결과는 VCSR<FSAT> 비트가 세트될 때 -무한대, -제로, +제로 또는 +무한대까지 포화된다.6. For all instructions that cause an overflow, the saturation up to the int8, int9, int16, int32 maximum or minimum threshold is applied when the VCSR <ISAT> bit is set. Thus, the floating point result is saturated to -infinity, -zero, + zero or + infinity when the VCSR <FSAT> bit is set.
7. 구문으로 보아, n은 바이트 9 데이타 크기를 가리키기 위해 .b9 대신에 사용될 수 있다.7. Syntactically, n can be used instead of .b9 to indicate the
8. 모든 명령에 대해, 목적지 레지스터 또는 벡터 누산기로 반환된 부동 소수점 결과는 IEEE 754 단일 정확도 포맷이다. 부동 소수점 결과는 누산기의 하부에 기록되고 상부는 수정되지 않는다.8. For all instructions, the floating point result returned in the destination register or vector accumulator is in IEEE 754 single precision format. The floating point result is written to the bottom of the accumulator and the top is not modified.
VAAS3 덧셈 및 (-1, 0, 1)의 부호 덧셈VAAS3 addition and sign addition of (-1, 0, 1)
포맷format
어셈블러 구문 Assembler Syntax
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용이 Rb에 더해져 중간 결과를 내고, 다음이 이 중간 결과는 Ra의 부호와 더해지며; 최종적인 결과는 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are added to Rb to yield an intermediate result, which is then added to the sign of Ra; The final result is stored in the vector / scalar register Rd.
연산calculate
예외exception
오버플로우.Overflow.
VADAC 덧셈 및 누산VADAC Addition and Accumulation
포맷format
설명Explanation
Ra 및 Rb 오퍼런드의 각 엘리먼트를 벡터 누산기의 각 이중 정확도 엘리먼트와 더하고, 각 엘리먼트의 이중 정확도 합을 벡터 누산기와 목적지 레지스터 Rc 및 Rd 모두에 저장한다. Ra 및 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 형(int8, int9, int16 및 int32 각각에 대해 16, 18, 32 및 64 비트)을 이용한다. 각각의 이중 크기 정확도 엘리먼트의 상부는 VACH와 Rc에 저장되고, Rc에 있는 그 결과는 정의되지 않는다.Add each element of the Ra and Rb operands to each double precision element of the vector accumulator, and store the double accuracy sum of each element in both the vector accumulator and the destination registers Rc and Rd. Ra and Rb use the specified data types, while VAC uses the appropriate double precision data types (16, 18, 32, and 64 bits for int8, int9, int16, and int32, respectively). The top of each dual size accuracy element is stored in VACH and Rc, and the result in Rc is undefined.
VADACL 덧셈 및 로우 누산VADACL Addition and Low Accumulation
포맷format
설명Explanation
Ra 및 Rb/중간 오퍼런드의 각 엘리먼트를 벡터 누산기의 각각의 확장된 정확도 엘리먼트와 더하고, 확장된 정확도 합계를 벡터 누산기에 저장하고, 그 하위 정확도를 목적지 레지스터 Rd로 반환한다. Ra 및 Rb/중간은 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이터 형(int8, int9, intl6 및 int32 각각에 대해 16, 18, 32 및 64 비트)을 이용한다. 각각의 확장된 정확도 엘리먼트의 상부는 VACH에 저장된다.Add each element of the Ra and Rb / middle operands with each extended accuracy element of the vector accumulator, store the extended accuracy sum in the vector accumulator, and return the lower precision to the destination register Rd. Ra and Rb / middle use the specified data types, while VAC uses the appropriate double precision data types (16, 18, 32, and 64 bits for int8, int9, intl6, and int32, respectively). The top of each extended accuracy element is stored in the VACH.
연산calculate
VADD 덧셈VADD addition
포맷format
설명Explanation
Ra 및 Rb/중간 오퍼런드를 더하고 그 합계를 목적지 레지스터 Rd로 반환한다.Add the Ra and Rb / middle operands and return the sum to the destination register Rd.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드Overflow, floating-point invalid operation
VADDH 인접하는 두개의 엘리먼트 덧셈VADDH Add two adjacent elements
포맷format
설명Explanation
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드Overflow, floating-point invalid operation
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.
VAND ANDVAND AND
포맷format
여기서 dt = {b, b9, h, w}, .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Note that dt = {b, b9, h, w}, .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra 및 Rb/중간 오퍼런드를 논리적으로 AND하고, 그 결과를 목적지 레지스터 Rd로 반환한다.Logically AND the Ra and Rb / middle operations and return the result in the destination register Rd.
연산calculate
예외exception
없음.none.
VANDC AND 보수VANDC AND reward
포맷format
여기서 dt = {b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra 및 Rb/중간 오퍼런드의 보수를 논리적으로 더하고, 그 결과를 목적지 레지스터 Rd에 반환한다.Logically add the complement of Ra and Rb / middle operands and return the result to the destination register Rd.
연산calculate
예외exception
없음.none.
VASA 산술 쉬프트 누산기VASA Arithmetic Shift Accumulator
포맷format
여기서 dt = {b, b9, h, w}이고, R은 좌측 또는 우측의 쉬프트 방향을 지칭한다.Where dt = {b, b9, h, w} and R refers to the left or right shift direction.
지원되는 모드Supported Mode
설명Explanation
벡터 누산기 레지스터의 각 데이타 엘리먼트는 제로가 우측(만일 R=0이면)에서부터 채우며 1비트 위치만큼 쉬프트되거나 또는 부호 확장(만일 R=1이면)으로 1비트 위치만큼 우로 쉬프트된다. 그 결과는 벡터 누산기에 저장된다.Each data element of the vector accumulator register is shifted by one bit position with zeros padding from the right (if R = 0) or by one bit position by sign extension (if R = 1). The result is stored in a vector accumulator.
예외exception
오버플로우.Overflow.
VASL 좌측 산술 쉬프트VASL left arithmetic shift
포맷format
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 스칼라 레지스터 Rb 또는 lMM 필드에 주어진 쉬프트 양만큼 제로가 우측에서 1비트 좌로 쉬프트되고, 그 결과는 그 부호에 따라 최대 양 또는 최대 음의 값까지 포화된다. 상기 쉬프트 양은 부호없는 정수가 되도록 정의된다.Each data element of the vector / scalar register Ra is shifted from zero right to one bit left by the shift amount given in the scalar register Rb or lMM field, and the result is saturated to the maximum positive or maximum negative value depending on the sign. The shift amount is defined to be an unsigned integer.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
shift-amount는 SRb 또는 IMM<4:0>으로부터 5 비트 숫자로서 취해진다. 바이트, 하프워드 데이타 형인 경우, 프로그래머는 데이타 크기에 있어 비트의 숫자보다 적거나 같은 쉬프트 양을 정확히 명시할 책임이 있다. 만일 쉬프트 양이 지정된 데이타 크기보다 크면, 엘리먼트는 제로로 채워질 것이다.shift-amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte and halfword data types, the programmer is responsible for specifying exactly the shift amount less than or equal to the number of bits in the data size. If the shift amount is greater than the specified data size, the element will be filled with zeros.
VASR 우측 산술 쉬프트VASR right arithmetic shift
포맷format
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 스칼라 레지스터 Rb 또는 IMM 필드의 최하의 비트에 주어진 쉬프트 양만큼 스최상위 비트 위치에서 부호가 확장되어 우로 산술적을 쉬프트되고, 그 결과는 벡터/스칼라 레지스터 Rd에 저장된다. 쉬프트 양은 부호없는 정수가 되도록 정의된다.Each data element in the vector / scalar register Ra is shifted to the right by expanding the sign at the most significant bit position by the shift amount given in the scalar register Rb or the least significant bit of the IMM field, and the result is stored in the vector / scalar register Rd. do. The shift amount is defined to be an unsigned integer.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
shift-amount는 SRb 또는 IMM<4:0>으로부터 5 비트 숫자로서 취해진다. 바이트, 바이트9, 하프워드 데이타 명인 경우, 프로그래머는 데이타 크기에 있어 비트의 슷자보다 적거나 같은 쉬프트 양을 정확히 명시할 책임이 있다. 만일 쉬프트 양이 지정된 데이터 크기보다 크면, 엘리먼트는 부호 비트로 채워질 것이다.shift-amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte,
포맷format
설명Explanation
벡터/스칼라 레지스러 Ra의 내용이 Rb에 더해져 중간 결과를 내고, 다음에 Ra의 부호가 상기 중간 결과로부터 감산되고, 최종 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are added to Rb to give an intermediate result, then the sign of Ra is subtracted from the intermediate result, and the final result is stored in the vector / scalar register Rd.
연산calculate
예외exception
오버플로우.Overflow.
VASUB 뺄셈 절대값VASUB subtraction absolute value
포맷format
설명Explanation
벡터/스칼라 레지스터 Rb 또는 IMM 필드의 내용이 벡터/스칼라 레지스터 Ra의 내용으로부터 감산되고 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Rb or the IMM field are subtracted from the contents of the vector / scalar register Ra and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
오버플로우.Overflow.
VAVG 두 엘리먼트의 평균VAVG average of two elements
포맷format
여기서 dt = {b, b9, h, w, f}. VAVGT를 이용하여 정수 데이타 형에 대한 "트렁케이트(truncate)" 라운딩 모드를 지정한다.Where dt = {b, b9, h, w, f}. Use VAVGT to specify the "truncate" rounding mode for integer data types.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용이 벡터/스칼라 레지스터 Rb의 내용에 더해져 중간 결과를 내고, 상기 중간 결과를 2로 나누고, 최종 결과가 벡터/스칼라 레지스터 Rd에 저장된다. 정수 데이터 형의 경우, 라운딩 모드는 만일 T=l이면 트렁케이트하고, 만일 T=0(디폴트)이면 제로로부터 라운트 어웨이된다. 부동 데이터 형의 경우, 라운딩 모드는 VCSR<RMODE>에 지정되어 있다.The contents of the vector / scalar register Ra are added to the contents of the vector / scalar register Rb to yield an intermediate result, dividing the intermediate result by two, and the final result is stored in the vector / scalar register Rd. For integer data types, the rounding mode truncates if T = l and rounds away from zero if T = 0 (default). For floating data types, the rounding mode is specified in VCSR <RMODE>.
연산calculate
예외exception
없음.none.
VAVGH 인접하는 두개의 엘리먼트의 평균VAVGH Average of two adjacent elements
포맷format
여기서 dt = {b, b9, h, w, f}. VAVGHT를 이용하여 정수 데이타 형에 대한 "트렁케이트(truncate)" 라운딩 모드를 지정한다.Where dt = {b, b9, h, w, f}. VAVGHT is used to specify a "truncate" rounding mode for integer data types.
지원되는 모드Supported Mode
설명Explanation
각 엘리먼트에 대해, 엘리먼트의 인접하는 두개의 쌍을 평균한다. 정수 데이타 형의 경우, 라운딩 모드는 만일 T=1이면 트렁케이트하고, 만일 T=0(디폴트)이면 제로로부터 라운트 어웨이된다. 부등 데이타 형의 경우, 라운딩 모드는 VCSR<RMODE>에 지정되어 있다.For each element, two adjacent pairs of elements are averaged. For integer data types, the rounding mode truncates if T = 1 and rounds away from zero if T = 0 (default). For unequal data types, the rounding mode is specified in VCSR <RMODE>.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.
VAVGQ Quad 평균VAVGQ Quad Average
포맷format
어셈블러 구문Assembler Syntax
여기서 dt = {b, b9, h, w}, VAVGQT를 이용하여 정수 데이터 형에 대한 "트렁케이트(truncate)" 라운딩 모드를 지정한다.Here, dt = {b, b9, h, w}, VAVGQT is used to specify the "truncate" rounding mode for integer data types.
지원되는 모드Supported Mode
설명Explanation
이 명령은 VEC64 모드에 지원되지 않는다.This command is not supported in VEC64 mode.
이하의 도면에 도시된 바와 같이, T(트렁케이트를 위해 1, 제로에서 라운드 어웨이를 위해 0, 디폴트)에서 지정된 라운딩 모드를 사용하여 네개의 엘리먼트의 평균을 산출한다. 최좌측 엘리먼트(Dn-1)는 정의되어 있지 않다.As shown in the figures below, the rounding mode specified in T (1 for trunkcate, 0 for roundaway away, default) is used to calculate the average of the four elements. The leftmost element Dn -1 is not defined.
연산calculate
예외exception
없음.none.
VCACHE 캐쉬 연산VCACHE Cache Operation
포맷format
어셈블러 구문Assembler Syntax
여기서 fc= {0.1}Where f c = {0.1}
설명Explanation
이 명령은 벡터 데이타 캐쉬의 소프트웨어 관리를 위해 제공된다. 상기 데이타 캐쉬의 일부 또는 전부가 스크래치 패드로 컨피그될 때, 이 명령은 스크래치 패드에 영향을 주지 않는다.This command is provided for software management of the vector data cache. When some or all of the data cache is configured with a scratch pad, this command does not affect the scratch pad.
다음 선택이 지원된다.The following choices are supported.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.
V'CAND 보수 ANDV'CAND Compensation AND
포맷format
여기서 dt = {b, b9, h, w}. .w과 .f는 동일한 연산을 지정한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra 및 Rb/중간 오퍼런드의 보수를 논리적으로 AND하고 결과를 목적지 레지스터 Rd로 반환한다.Logically ANDs the complement of the Ra and Rb / middle operands and returns the result to the destination register Rd.
연산calculate
예외exception
없음.none.
VCBARR 조건 베리어VCBARR Condition Barrier
포맷format
여기서 cond = {0, -7}. 각각의 조건은 나중에 니모닉으로 주어질 것이다.Where cond = {0, -7}. Each condition will later be given a mnemonic.
설명Explanation
조건이 유효한 한, 명령 및 차후의 모든 명령(나중에 프로그램 순서로 나타나는 명령)을 정체시킨다. Cond<2:0> 필드는 CT 포맷에서 다른 조건 명령과는 달리 해석된다,As long as the condition is valid, the instruction and all subsequent instructions (commands that appear later in program order) are stagnated. The Cond <2: 0> field is interpreted unlike other conditional instructions in CT format.
다음 조건이 현재 정의되어 있다:The following conditions are currently defined:
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 명령 실행을 강제로 일련화시키기 의해 소프트웨어에 제공된다. 이 명령은 부정확한 실행을 강제로 정확히 보고하도록 하는데 사용될 수 있다. 예를 들면, 만일 이 명령이 예외를 유발할 수 있는 산술 명령 즉후에 사용되면, 이 예의는 프로그램 카운터가 이 명령을 어드레스하는 것으로 보고될 것이다.This command is provided to the software by forcing serialization of command execution. This command can be used to force accurate reporting of incorrect execution. For example, if this instruction is used immediately after an arithmetic instruction that may cause an exception, this example would be reported as a program counter addressing this instruction.
VCBR 조건 분기VCBR conditional branch
포맷format
어셈블러 구문Assembler Syntax
VCBR.cond #OffsetVCBR.cond #Offset
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 분기한다. 이는 지연된 분기가 아니다.If Cond is true, branch. This is not a delayed branch.
연산calculate
예외exception
무효 명령 어드레스.Invalid instruction address.
VCBRI 조건 분기 인다이렉트VCBRI Conditional Branch Indirect
포맷format
어셈블러 구문Assembler Syntax
VCBRI.cond SRbVCBRI.cond SRb
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 분기한다. 이는 지연된 분기가 아니다.If Cond is true, branch. This is not a delayed branch.
연산calculate
예외exception
무효 명령 어드레스.Invalid instruction address.
VCCS 조건 콘택스트 스위치VCCS condition context switch
포맷format
설명Explanation
만일 VIMSK<cse>가 참이면 콘택스트 스위치 서브루틴으로 점프한다. 이는 지연된 분기가 아니다.If VIMSK <cse> is true, jump to the context switch subroutine. This is not a delayed branch.
만일 VIMAK<cse>가 참이면, VPC+4(반환 어드레스)가 반환 어드레스 스택에 저장된다. 그렇지 않으면, 실행은 VPC+4로 계속된다.If VIMAK <cse> is true, VPC + 4 (return address) is stored in the return address stack. Otherwise, execution continues to VPC + 4.
연산calculate
예외exception
반환 어드레스 스택 오버플로우.Return address stack overflow.
VCHGCR 제어 레지스터 변경VCHGCR Control Register Change
포맷format
어셈블러 구문Assembler Syntax
VCHGCR 모드VCHGCR Mode
설명Explanation
이 명령은 벡터 프로세서의 동작 모드를 바꾼다.This instruction changes the operating mode of the vector processor.
모드에 있는 각 비트는 다음을 지정한다:Each bit in mode specifies the following:
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 VMOV 명령으로 가능하기 보다는 보다 효율적인 방법으로 VCSR에 있는 제어 비트를 바꾸기 위해 하드웨어에 제공된다.This command is provided to the hardware to change the control bits in the VCSR in a more efficient way than is possible with the VMOV command.
VCINT 조건 인터럽트 ARM7VCINT condition interrupt ARM7
포맷format
어셈블러 구문Assembler Syntax
VCINT.cond #ICODEVCINT.cond #ICODE
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 실행을 중지하고 만일 인에이블되면 ARM7을 인터럽트한다.If Cond is true, execution stops and if enabled interrupts ARM7.
연산calculate
예외exception
VCINT 인터럽트.VCINT interrupt.
VCJOIN ARM7 태스크와 조건 결합Combine conditions with VCJOIN ARM7 tasks
포맷format
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 실행을 중지하고 만일 인에이블 되면 ARM7을 인터럽트한다.If Cond is true, execution stops and if enabled interrupts ARM7.
연산calculate
예외exception
VCJOIN 인터럽트VCJOIN interrupt
VCJSR 서브루틴으로 조건 점프Condition jumps to VCJSR subroutines
포맷format
어셈블러 구문Assembler Syntax
VCJSR.cond #OffsetVCJSR.cond #Offset
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 서브루틴으로 점프한다. 이는 지연된 분기가 아니다.If Cond is true, jump to the subroutine. This is not a delayed branch.
만일 Cond가 참이면 VPC+4(반환 어드레스)가 반환 어드레스 스택에 저장된다. 만일 그렇지 않으면, 실행은 VPC+4로서 계속된다.If Cond is true, VPC + 4 (return address) is stored in the return address stack. If not, execution continues as VPC + 4.
연산calculate
예외exception
반환 어드레스 스택 오버플로우.Return address stack overflow.
VCJSRI 서브루틴 인다이렉트로 조건 점프Conditional Jump to VCJSRI Subroutine Indirect
포맷format
어셈블러 구문Assembler Syntax
VCJSRI.cond SRbVCJSRI.cond SRb
여기서 cond = {un, lt, eq, le, gt, ne, ge, ov}.Where cond = {un, lt, eq, le, gt, ne, ge, ov}.
설명Explanation
만일 Cond이 참이면 서브루틴으로 인다이렉트 점프한다. 이는 지연된 분기가 아니다.If Cond is true, indirect jump to subroutine. This is not a delayed branch.
만일 Cond가 참이면 VPC+4(반환 어드레스)가 반환 어드레스 스택에 저장된다. 만일 그렇지 않으면, 실행은 VPC+4로서 계속된다.If Cond is true, VPC + 4 (return address) is stored in the return address stack. If not, execution continues as VPC + 4.
연산calculate
예외exception
반환 어드레스 스택 오버플로우.Return address stack overflow.
VCMOV 조건 이동Move VCMOV Condition
포맷format
어셈블러 구문Assembler Syntax
VCMOV.dt Rd, Rb, condVCMOV.dt Rd, Rb, cond
VCMOV.dt Rd, #IMM, condVCMOV.dt Rd, #IMM, cond
여기서 dt = {b, b9, h, w, f}, cond={un, lt, eq, le, gt, ne, ge, ov}. . f 데이타 형이 9 비트 중간 오퍼런드와 함께 지원되지 않는 다는 것을 제외하고, .f와 .w는 동일한 연산을 지정하고 있다는 것에 유의한다.Where dt = {b, b9, h, w, f}, cond = {un, lt, eq, le, gt, ne, ge, ov}. . Note that .f and .w specify the same operation, except that the f data type is not supported with a 9-bit intermediate operation.
지원되는 모드Supported Mode
설명Explanation
만일 Cond이 참이면 레지스터 Rb의 내용이 레지스러 Rd로 이동된다. ID<l:0>는 소스 및 목적지 레지스터를 부가적으로 명시한다:If Cond is true, the contents of register Rb are moved to register Rd. ID <l: 0> additionally specifies the source and destination registers:
VR 현재의 뱅크 벡터 레지스터VR Current Bank Vector Register
SR 스칼라 레지스터SR scalar register
SY 동기화 레지스터SY Synchronization Register
VAC 벡터 누산기 레지스터(VAC 레지스터 엔코딩에 대해서는 VMOV 설명을 참조한다.)VAC vector accumulator register (see VMOV description for VAC register encoding)
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다. VCMOVM은 엘리먼트 마스크에 의한 영향을 받는다.This command is not affected by the element mask. VCMOVM is affected by the element mask.
벡터 누산기에 있는 확장된 부동 소수점 정확도 표현은 8 엘리먼트에 대해 모든 576 비트를 사용한다. 따라서, 누산기에 관계된 벡터 레지스터 이동은 .b9 데이터 크기를 명시하여야 한다.The extended floating point accuracy representation in the vector accumulator uses all 576 bits for 8 elements. Thus, vector register shifts involving accumulators must specify a .b9 data size.
VCMOVM 엘리먼트 마스크와 조건 이동Moving VCMOVM Element Masks and Conditions
포맷format
여기서 dt = {b, b9, h, w, f}, cond={un, lt, eq, le, gt, ne, ge, ov}. .f 데이타 형이 9 비트 중간 오퍼런드와 함께 지원되지 않는다는 것을 제외하고, .f와 .w는 동일한 연산을 지정하고 있다는 것에 유의한다.Where dt = {b, b9, h, w, f}, cond = {un, lt, eq, le, gt, ne, ge, ov}. Note that .f and .w specify the same operation, except that the .f data type is not supported with 9-bit intermediate operations.
지원되는 모드Supported Mode
설명Explanation
만일 Cond이 참이면 레지스터 Rb의 내용이 레지스터 Rd로 이동된다. 1D<1:0>는 소스 및 목적지 레지스터를 부가적으로 명시한다:If Cond is true, the contents of register Rb are moved to register Rd. 1D <1: 0> additionally specifies the source and destination registers:
VR 현재의 뱅크 벡터 레지스터VR Current Bank Vector Register
SR 스칼라 레지스터SR scalar register
VAC 벡터 누산기 레지스터(VAC 레지스터 엔코딩에 대해서는 VMOV 설명을 참조한다.)VAC vector accumulator register (see VMOV description for VAC register encoding)
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 VMMR 엘리먼트 마스크에 의한 영향을 받는다- VCMOV은 엘리먼트 마스크에 의해 영향받지 않는다.This command is affected by the VMMR element mask-VCMOV is not affected by the element mask.
벡터 누산기에 있는 확장된 부동 소수점 정확도 표현은 8 엘리먼트에 대해 모든 576 비트를 사용한다. 따라서, 누산기에 관계된 벡터 레지스터 이동은 .b9 데이타 크기를 명시하여야 한다.The extended floating point accuracy representation in the vector accumulator uses all 576 bits for 8 elements. Thus, a vector register move relative to the accumulator must specify the .b9 data size.
VCMPV 마스크의 비교 및 세트Comparison and set of VCMPV masks
포맷format
어셈블러 구문Assembler Syntax
여기서 dt = {b, b9, h, w, f}, cond={1t, eq, le, gt, ne, ge}. 마스크={VGRM, VMMR}. 만일 어떠한 마스크도 지정되어 있지 않으면, VGRM이 가정된다.Where dt = {b, b9, h, w, f}, cond = {1t, eq, le, gt, ne, ge}. Mask = {VGRM, VMMR}. If no mask is specified, VGRM is assumed.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 VRa 및 VRb의 내용이 (VRa[i]-VRb[I]를 수행함으로서 엘리먼트 와이즈 비교되고, (만일 K=0이면) VGRM 또는 (만일 K=1이면) VMMR 레지스터에 있는 대응하는 비트 #i가 비교의 결과가 VCMPV 명령의 Cond 필드와 일치되면 세트된다. 예를 들면, 만일 Cond 필드가 (LT)보다 작으면, VGRM[i] 또는 VMMR[i] 비트가 만일 VRa[i]<VRb[i]이면 세트될 것이다.The contents of the vector registers VRa and VRb are element-wise compared by performing (VRa [i] -VRb [I]) and the corresponding bit # in the VGRM (if K = 0) or VMMR register (if K = 1). i is set if the result of the comparison matches the Cond field of the VCMPV instruction, eg, if the Cond field is less than (LT), then the VGRM [i] or VMMR [i] bits are set to VRa [i] <VRb. If it is [i], it will be set.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VCNTLZ 선두 제로의 카운트VCNTLZ leading zero count
포맷format
어셈블러 구문Assembler Syntax
VCNTLZ.dt VRd, VRbVCNTLZ.dt VRd, VRb
VCNTLZ.dt SRd, SRbVCNTLZ.dt SRd, SRb
여기서 dt = {b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
Rb에 있는 각 엘리먼트에 대해, 선두 제로의 수를 카운트하고, Rd에 있는 카운트를 반환한다,For each element in Rb, count the number of leading zeros and return the count in Rd,
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
만일 엘리먼트에 있는 모든 비트가 제로이면, 이때 그 결과는 엘리먼트 크기(바이트, 바이트9, 하프워드 또는 워드 각각에 대해 8, 9, 16 또는 32)와 같다.If all bits in the element are zero then the result is equal to the element size (8, 9, 16 or 32 for each byte,
선두 제로들의 카운트는 (만일 VCMPR 명령이후에 사용되면) 엘리먼트 위치의 인덱스과 반전관계를 갖는다. 엘리먼트 위치로 변환하기 위해, 소정의 데이타 형에 대해 NumElem으로부터 VCNTLZ의 결과를 감산한다.The count of leading zeros is inversely related to the index of the element position (if used after the VCMPR instruction). To convert to element position, subtract the result of VCNTLZ from NumElem for a given data type.
VCOR OR의 보수VCOR OR complement
포맷format
어셈블러 구문Assembler Syntax
VCOR.dt VRd, VRa, VRbVCOR.dt VRd, VRa, VRb
VCOR.dt VRd, VRa, SRbVCOR.dt VRd, VRa, SRb
VCOR.dt VRd, VRa, #IMMVCOR.dt VRd, VRa, #IMM
VCOR.dt SRd, SRa, SRbVCOR.dt SRd, SRa, SRb
VCOR.dt SRd, SRa, #IMMVCOR.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra 및 Rb/중간 오퍼런드의 보수를 논리적으로 OR하고 그 결과를 목적지 레지스터 Rd로 반환한다.Logically ORs the complement of the Ra and Rb / middle operands and returns the result to the destination register Rd.
연산calculate
예외exception
없음.none.
VCRSR 서브루틴으로부터 조건 반환Return condition from VCRSR subroutine
포맷format
어셈블러 구문Assembler Syntax
VCRSR.condVCRSR.cond
여기서 cond = {un, lt, eq, le, gt, ne, ge, ㅇv}.Where cond = {un, lt, eq, le, gt, ne, ge, ㅇ}.
설명Explanation
만일 Cond가 참이면, 반환 어드레스 스택에 저장된 반환 어드레스로부터 실행이 계속된다. 만일 그렇지 앞으면, VPC+4로서 실행을 계속한다.If Cond is true, execution continues from the return address stored in the return address stack. If not, continue execution as
연산calculate
예외exception
무효 명령 어드레스. 어드레스 스택 오버플로우 반환Invalid instruction address. Return address stack overflow
VCVTB9 바이트9 데이터 형의 변환VCVTB9 byte9 data type conversion
포맷format
어셈블러 구문Assembler Syntax
VCVTB9.md VRd, VRbVCVTB9.md VRd, VRb
VCVTB9.md SRd, SRbVCVTB9.md SRd, SRb
여기서 md = {bb9, b9h, hb9}.Where md = {bb9, b9h, hb9}.
지원되는 모드Supported Mode
설명Explanation
Rb에 있는 각 엘리먼트는 바이트에서 바이트9(bb9), 바이트9에서 하프워드(b9h) 또는 하프워드에서 바이트9(hb9)로 변환된다.Each element in Rb is converted from byte to byte 9 (bb9),
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
b9h 모드와 함께 이 명령을 사용하기 전에, 프로그래머는 셔플 연산으로 벡터 레지스터에 있는 감소된 엘리먼트 수를 조정할 필요가 있다. hb9 모드와 함께 이 명령을 사용한 후, 프로그래머는 셔플 연산으로 목적지 벡터 레지스터에 있는 증가된 엘리먼트 수를 조정할 필요가 있다. 이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.Before using this instruction with b9h mode, the programmer needs to adjust the reduced number of elements in the vector register with a shuffle operation. After using this instruction with hb9 mode, the programmer needs to adjust the increased number of elements in the destination vector register with a shuffle operation. This command is not affected by the element mask.
VCVTFF 부동 소수점을 고정 소수점으로 변환하기Convert VCVTFF floating point to fixed point
포맷format
어셈블러 구문Assembler Syntax
VCVTFF VRd, VRa, SRbVCVTFF VRd, VRa, SRb
VCVTFF VRd, VRa, #IMMVCVTFF VRd, VRa, #IMM
VCVTFF SRd, SRa, SRbVCVTFF SRd, SRa, SRb
VCVTFF SRd, SRa, #IMMVCVTFF SRd, SRa, #IMM
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용이 32 비트 부동 소수점에서 포맷 <X. Y>의 고정 소수점 실수로 변환되는데, 여기서 Y의 폭은 Rb (모듈로 32) 또는 IMM 필드에 의해 지정되고, X의 폭은 (32-Y의 폭)에 의해 지정된다. X는 정수 부분을 지칭하고, Y는 분수 부분을 지칭한다. 그 결과는 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are formatted in 32-bit floating point. Y> is converted to a fixed-point real number, where the width of Y is specified by Rb (modulo 32) or the IMM field, and the width of X is specified by (width of 32-Y). X refers to the integer part and Y refers to the fraction part. The result is stored in the vector / scalar register Rd.
연산calculate
예외exception
오버플로우Overflow
프로그래밍 주석Programming comments
이 명령은 워드 데이터 크기만을 지원한다. 이 명령은 아키텍춰가 레지스터내의 복수 데이타 형을 지원하지 않기 때문에 엘리먼트 마스크를 사용하지 않는다. 이 명령은 정수 데이타 형에 대해 제로 라운딩 모드로부터 라운드 어웨이를 사용한다.This command only supports word data sizes. This instruction does not use element masks because the architecture does not support multiple data types in registers. This instruction uses round away from zero rounding mode for integer data types.
VCVTIF 정수에서 부동 소수점으로의 변환VCVTIF Integer to Floating Point Conversion
포맷format
어셈블러 구문Assembler Syntax
VCVTIF VRd, VRbVCVTIF VRd, VRb
VCVTIF VRd, SRbVCVTIF VRd, SRb
VCVTIF SRd, SRbVCVTIF SRd, SRb
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Rb의 내용이 int32에서 부동 데이타 형으로 변환되고 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Rb are converted from int32 to a floating data type and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 워드 데이타 크기만 지원한다. 이 명령은 아키텍춰가 레지스터내의 복수 데이타 형을 지원하지 않기 때문에 엘리먼트 마스크를 사용하지 않는다.This command only supports word data sizes. This instruction does not use element masks because the architecture does not support multiple data types in registers.
VD1CBR VCR1의 감소 및 조건 분기Reduction and Conditional Branching of VD1CBR VCR1
포맷format
어셈블러 구문Assembler Syntax
VD1CBR.cond #OffsetVD1CBR.cond #Offset
여기서 cond={un, lt, eq, gt, ne, ge, ov}Where cond = {un, lt, eq, gt, ne, ge, ov}
설명Explanation
VCR1을 감소하고 만일 Cond가 참이면 분기한다. 이는 지연된 분기가 아니다.Decrease VCR1 and branch if Cond is true. This is not a delayed branch.
연산calculate
예외exception
무효 명령 어드레스.Invalid instruction address.
프로그래밍 주석Programming comments
VCR1은 분기 조건이 점검되기 전에 감소된다는 것에 유의한다. VCR1이 0일 때 이 명령의 실행은 루프 카운트를 232-1로 효과적으로 세트시킨다.Note that VCR1 is reduced before the branch condition is checked. Execution of this instruction when VCR1 is zero effectively sets the loop count to 2 32 -1.
VD2CBR VCR2의 감소 및 조건 분기VD2CBR VCR2 Reduction and Conditional Branching
포맷format
어셈블러 구문Assembler Syntax
VD2CBR.cond #OffsetVD2CBR.cond #Offset
여기서 cond={un, lt , eq, gt, ne, ge, ov }Where cond = {un, lt, eq, gt, ne, ge, ov}
설명Explanation
VCR2을 감소하고 만일 Cond가 참이면 분기한다. 이는 지연된 분기가 아니다Decrease VCR2 and branch if Cond is true. This is not a delayed branch
연산calculate
예외exception
무효 명령 어드레스Invalid instruction address
프로그래밍 주석Programming comments
VCR2는 분기 조건이 점검되기 전에 감소된다는 것에 유의한다. VCR2이 0일 때 이 명령의 실행은 루프 카운트를 232-1로 효과적으로 세트시킨다.Note that VCR2 is reduced before the branch condition is checked. Execution of this instruction when VCR2 is zero effectively sets the loop count to 2 32 -1.
VD3CBR VCR3의 감소 및 조건 분기VD3CBR VCR3 reduction and conditional branching
포맷format
어셈블러 구문Assembler Syntax
VD3CBR.cond #OffsetVD3CBR.cond #Offset
여기서 cond={un, 1t, eq, gt, ne, ge, ov}Where cond = {un, 1t, eq, gt, ne, ge, ov}
설명Explanation
VCR3을 감소하고 만일 Cond가 참이면 분기한다. 이는 지연된 분기가 아니다.Decrease VCR3 and branch if Cond is true. This is not a delayed branch.
연산calculate
예외exception
무효 명령 어드레스.Invalid instruction address.
프로그래밍 주석Programming comments
VCR3은 분기 조건이 점검되기 전에 감소된다는 것에 유의한다. VCR3이 0일 때 이 명령의 실행은 루프 카운트를 232-1로 효과적으로 세트시킨다,Note that VCR3 is reduced before the branch condition is checked. VCR3 is at zero the execution of this command will effectively set a loop count to 2 32 -1,
VDIV2N 2n로 나누기Divide by VDIV2N 2 n
포맷format
어셈블러Assembler
VDIV2N.dt VRd, VRa, SRbVDIV2N.dt VRd, VRa, SRb
VDIV2N.dt VRd, VRa, #IMMVDIV2N.dt VRd, VRa, #IMM
VDIV2N.dt SRd, SRa, SRbVDIV2N.dt SRd, SRa, SRb
VDIV2N.dt SRd, SRa, #IMMVDIV2N.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}Where dt = {b, b9, h, w}
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스더 Ra의 내용을 여기서 n이 스칼라 레지스터 Ra 또는 IMM의 양의 정수 내용인 2n으로 나누고, 그 결과가 벡터/스칼라 레지스러 Rd에 저장된다. 이 명령은 라운딩 모드로서 트렁케이트(라운드 투워드 제로)를 사용한다.The contents of the vector / scalar register Ra are divided by 2 n where n is the positive integer content of the scalar register Ra or IMM, and the result is stored in the vector / scalar register Rd. This command uses truncates (round-forward zero) as the rounding mode.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
N은 SRb 또는 IMM<4:0>로부터 5 비트로서 취해진다. 바이트, 바이트9, 하프워드 데이타 형의 경우, 프로그래머는 데이타 크기에 있는 정확도보다 적거나 같은 N의 값을 정확하게 명시할 책임이 있다. 만일 명시된 데이타 크기의 정확도 보다 크면, 엘리먼트가 부호 비트에 채워질 것이다. 이 명령은 라운드 투워드 제로 라운딩 모드를 이용한다.N is taken as 5 bits from SRb or IMM <4: 0>. For byte,
VDLV2N.F 2n부동으로 나누기VDLV2N.F 2 n Divide by Float
포맷format
어셈블러 구문Assembler Syntax
VDIV2N.f VRd, VRa, SRbVDIV2N.f VRd, VRa, SRb
VDIV2N.f VRd, VRa, #IMMVDIV2N.f VRd, VRa, #IMM
VDIV2N.f SRd, SRa, SRbVDIV2N.f SRd, SRa, SRb
VDIV2N.f SRd, SRa, #IMMVDIV2N.f SRd, SRa, #IMM
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용을 여기서 n이 스칼라 레지스터 Rb 또는 IMM의 양의 정수 내용인 2n으로 나누고, 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are divided by 2 n where n is the positive integer content of the scalar register Rb or IMM, and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
N은 SRb 또는 IMM<4:0>로부터 5 비트 수로서 취해진다는 것에 유의한다.Note that N is taken as a 5-bit number from SRb or IMM <4: 0>.
VDIV 초기화 나누기-불완전VDIV initialization divide-incomplete
포맷format
어셈블러 구문Assembler Syntax
VDIVI.ds VRbVDIVI.ds VRb
VDIVI.ds SRbVDIVI.ds SRb
여기서 ds={b, b9, h, w}Where ds = {b, b9, h, w}
지원되는 모드Supported Mode
설명Explanation
비복원 부호가 있는 정수 나눗셈의 초기 단계를 수행한다. 피젯수는 누산기에 있는 이중 정확도 부호가 있는 정수이다. 만일 젯수가 단일 정확도이면, 이중 정확도로 부호가 확장되어 VACOH 및 VACOL에 저장되어야 한다. 젯수는 Rb에 있는 단일 정확도의 부호가 있는 정수이다.Performs the initial stage of unsigned integer division. The pidget number is a double precision signed integer in the accumulator. If the number of jets is single precision, the sign must be extended to double accuracy and stored in VACOH and VACOL. The jet number is a single precision signed integer in Rb.
만일 피젯수의 부호가 젯수의 부호와 동일하면, Rb가 누산기 하이로부터 감산된다. 만일 그렇지 않으면, Rb가 누산기 하이에 가산된다.If the sign of the number of jets is the same as the sign of the number of jets, Rb is subtracted from the accumulator high. If not, Rb is added to accumulator high.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
프로그래머는 나눗셈 단계이전에 제로 케이스로 오버플로우 또는 나눗셈을 검출할 책임이 있다.The programmer is responsible for detecting overflow or division into zero cases before the division step.
VDIVS 나눗셈 단계 - 불완전VDIVS Division Steps-Incomplete
포맷format
어셈블러 구문Assembler Syntax
VDIVS.ds VRbVDIVS.ds VRb
VDIVS.ds SRbVDIVS.ds SRb
여기서 ds={b, b9, h, w}Where ds = {b, b9, h, w}
지원되는 모드Supported Mode
설명Explanation
비복원 부호가 있는 나눗셈의 하나의 순환 단계를 수행한다. 이 명령은 데이타 크기(즉, int9 데이다 형에 대해 int8에 대해 8번, int9에 대해 9번, int16에 대해 16 및 int32에 대해 32)만큼 실행되어야 한다. VDIVI 명령은 누산기에서 초기의 부분 나머지를 만드는 나눗셈 단계 이전에 사용되어야 한다. 젯수는 Rb에 있는 부호가 있는 단일 정확도 정수이다. 일단 지수 비트가 단계마다 추출되면 누산기의 최하위 비트로 쉬프트된다.Performs one recursive step of unsigned division. This command must be executed for the size of the data (
누산기에 있는 부분 나머지의 부호가 Rb에 있는 젯수의 부호와 동일하면, Rb가 누산기 하이로부터 감산된다. 그렇지 않으면, Rb는 누산기 하이에 더해진다.If the sign of the remainder of the part in the accumulator is the same as the sign of the jet number in Rb, Rb is subtracted from the accumulator high. Otherwise Rb is added to the accumulator high.
만일 누산기에 있는 결과로 나타나는 부분 나머지(덧셈 또는 뺄셈의 결과)가 젯수의 부호와 동일하면, 지수 비트는 l이다. 그렇지 않으면, 지수 비트는 0이다. 누산기는 지수 비트를 채우도록 한 비트 위치만큼 좌로 쉬프트 된다.If the resulting remainder of the result in the accumulator (the result of addition or subtraction) is the same as the sign of the jet number, the exponent bit is l. Otherwise, the exponent bit is zero. The accumulator is shifted left by one bit position to fill the exponent bit.
나눗셈 단계의 결과에서, 나머지는 누산기 하이에 있고 지수는 누산기 로우에 있다. 지수는 l의 보수 형태이다.In the result of the division step, the rest is at accumulator high and the exponent is at accumulator low. The exponent is in the form of l's complement.
연산calculate
VESL 1만큼 좌로 엘리먼트 쉬프트Shift element left by
포맷format
어셈블러 구문Assembler Syntax
VESL.dt SRc, VRd, VRa, SRbVESL.dt SRc, VRd, VRa, SRb
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 Ra에 있는 엘리먼트를 1위치 만큼 좌로 쉬프트하여, 스칼라 레지스터 Rb로부터 채운다. 쉬프트 아웃되는 최좌측 엘리먼트는 스칼라 레지스터 Rc에 반환되고 다른 엘리먼트는 벡터 레지스터 Rd에 반환된다.The element in the vector register Ra is shifted left by one position to fill it from the scalar register Rb. The leftmost element that is shifted out is returned to scalar register Rc and the other element is returned to vector register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VESR 1만큼 우로 엘리먼트 쉬프트Right shift element by
포맷format
어셈블러 구문Assembler Syntax
VESL.dt SRc, VRd, VRa, SRbVESL.dt SRc, VRd, VRa, SRb
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 Ra에 있는 엘리먼트를 l위치 만큼 우로 쉬프트하여, 스칼라 레지스터 Rb로부터 채운다, 쉬프트 아웃되는 최우측 엘리먼트는 스칼라 레지스터 Rc에 반환되고 다른 엘리먼트는 벡터 레지스터 Rd에 반환된다.Shift the element in vector register Ra to the right by position l and fill it from scalar register Rb. The rightmost element shifted out is returned to scalar register Rc and the other element is returned to vector register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VEXRT 한 엘리먼트의 추출」Extracting One VEXRT Element ”
포맷format
어셈블러 구문Assembler Syntax
VEXTRT.dt SRd, VRa, SRbVEXTRT.dt SRd, VRa, SRb
VEXTRT.dt SRd, VRa, #IMMVEXTRT.dt SRd, VRa, #IMM
여기서 dt={b, b9, h w}. .f와 .w는 동일한 연산을 명시하고 있다는 것에 유의한다.Where dt = {b, b9, h w}. Note that .f and .w specify the same operation.
지원되는 모드Supported Mode
설명Explanation
그 인덱스가 스칼라 레지스터 Rb 또는 IMM 필드로서 명시된 Ra 벡터 레지스터로부터 엘리먼트를 추출하고 그것을 스칼라 레지스터 Rd에 저장한다.Extract the element from the Ra vector register whose index is specified as a scalar register Rb or an IMM field and store it in the scalar register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VEXTSGN2 (1, -1)의 부호를 추출Extract sign of VEXTSGN2 (1, -1)
포맷format
어셈블러 구문Assembler Syntax
VEXTSGN2.dt VRd, VRaVEXTSGN2.dt VRd, VRa
VEXTSGN2.dt SRd, SRaVEXTSGN2.dt SRd, SRa
여기서 dt={b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra 엘리먼트와이즈의 내용의 부호값이 계산되고 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The sign value of the contents of the vector / scalar register Ra elementwise is calculated and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VEXTSGN3 (1, 0, -1)의 부호 추출Sign extraction of VEXTSGN3 (1, 0, -1)
포맷format
어셈블러 구문Assembler Syntax
VEXTSGN3.dt VRd, VRaVEXTSGN3.dt VRd, VRa
VEXTSGN3.dt SRd, SRaVEXTSGN3.dt SRd, SRa
여기서 dt={b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra 엘리먼트와이즈의 내용의 부호값이 계산되고 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The sign value of the contents of the vector / scalar register Ra elementwise is calculated and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VlNSRT 한 엘리먼트의 삽입Insert one element of VlNSRT
포맷format
어셈블러 구문Assembler Syntax
VINSRT.dt VRd, SRa, SRbVINSRT.dt VRd, SRa, SRb
VINSRT.dt VRd, SRa, #IMMVINSRT.dt VRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
스칼라 레지스터 Rb 또는 IMM 필드로 명시된 인덱스에서 스칼라 레지스터 Ra에 있는 엘리먼트를 벡터 레지스터 Rd에 삽입한다.Inserts the element in scalar register Ra into vector register Rd at the index specified by the scalar register Rb or IMM field.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VL 로드VL load
포맷format
어셈블러 구문Assembler Syntax
VL.lt Rd, SRb, SRiVL.lt Rd, SRb, SRi
VL.lt Rd, SRb, #IMMVL.lt Rd, SRb, #IMM
VL.lt Rd, SRb+, SRiVL.lt Rd, SRb +, SRi
VL.lt Rd, SRb+, #IMMVL.lt Rd, SRb +, #IMM
여기서 lt={b, bz9, ds9, h, w, 4, 8, l6, 32, 64}, Rd={VRd, VRAd, SRd}. .b와 ds9는 동일한 연산을 명시하고 .64와 VRAd는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해 VLOFF를 사용한다.Where lt = {b, bz9, ds9, h, w, 4, 8, l6, 32, 64}, Rd = {VRd, VRAd, SRd}. Note that .b and ds9 specify the same operation, and that .64 and VRAd cannot be specified together. Use VLOFF for cache-off loads.
설명Explanation
현재 또는 대체 뱅크에 있는 벡터 레지스터 또는 스칼라 레지스터를 로드한다.Load a vector or scalar register in the current or alternate bank.
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VLCB 순환 버퍼로부터 로드Load from VLCB circular buffer
포맷format
어셈블러 구문Assembler Syntax
VLCB.lt Rd, SRb, SriVLCB.lt Rd, SRb, Sri
VLCB.lt Rd, SRb, #IMMVLCB.lt Rd, SRb, #IMM
VLCB.lt Rd, SRb+, SRiVLCB.lt Rd, SRb +, SRi
VLCB.lt Rd, SRb+, #IMMVLCB.lt Rd, SRb +, #IMM
여기서 lt={b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd={VRd, VRAd, SRd}. .b와 .ds9는 동일한 연산을 명시하고 .64와 VRAd는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해 VLCBOFF를 사용한다.Where lt = {b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd = {VRd, VRAd, SRd}. Note that .b and .ds9 specify the same operation, and that .64 and VRAd cannot be specified together. Use VLCBOFF for cache-off loads.
설명Explanation
SRb+1에 있는 BEGIN 포인터와 SRb+2에 있는 END 포인터로 가리켜진 순환 버퍼로부터 벡터 레지스터 또는 스칼라 레지스터를 로드한다.From the circular buffer pointed to by pointers in the BEGIN END pointers and SR + b 2 + b in the
만일 어드레스 갱신 연산은 물론 로드 이전에 END 어드레스 보다 크면 유효 어드레스가 조정된다. 또한, 순환 버퍼 바운드는 각각 .h 및 .w 스칼라 레지스터에 대해 하프워드 및 워드 경계상에서 정렬되어야 한다.If the address update operation is larger than the END address before loading, of course, the valid address is adjusted. In addition, the circular buffer bounds must be aligned on halfword and word boundaries for the .h and .w scalar registers, respectively.
연산calculate
예외exception
무효 데이터 어드레스, 정럴되지 않은 액세스.Invalid data address, incorrect access.
프로그래밍 주석Programming comments
이 명령은 엘러먼트 마스크에 의해 영향받지 않는다. 프로그래머는 다음 조건을 확실히 하여야 예상된대로 작동한다.This command is not affected by the element mask. The programmer must ensure the following conditions to work as expected.
BEGlN <EA<2*END-BEGINBEGlN <EA <2 * END-BEGIN
즉, EA-END<END-BEGIN은 물론 EA>BEGINThat is, EA> BEGIN as well as EA-END <END-BEGIN
VLD 이중 로드VLD dual load
포맷format
어셈블러 구문Assembler Syntax
VLD.lt Rd, SRb, SRiVLD.lt Rd, SRb, SRi
VLD.lt Rd, SRb, #IMMVLD.lt Rd, SRb, #IMM
VLD.lt Rd, SRb+, SRiVLD.lt Rd, SRb +, SRi
VLD.lt Rd, SRb+, #IMMVLD.lt Rd, SRb +, #IMM
여기서 1t={b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd={VRd, VRAd, SRd}. . b와 .ds9는 동일한 연산을 명시하고 .64와 VRAd는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해 VLDOFF를 사용한다.Where 1t = {b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd = {VRd, VRAd, SRd}. . Note that b and .ds9 specify the same operation, and that .64 and VRAd cannot be specified together. Use VLDOFF for cache-off loads.
설명Explanation
현재 또는 대체 뱅크에 있는 두개의 벡터 레지스터 또는 두개의 스칼라 레지스터를 로드한다,Load two vector registers or two scalar registers in the current or alternate bank,
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VLI 중간 로드VLI Medium Load
포맷format
어셈블러 구문Assembler Syntax
VLI.dt VRd, #IMMVLI.dt VRd, #IMM
VLI.dt SRd, #IMMVLI.dt SRd, #IMM
여기서 dt={b, b9, h, w, f}Where dt = {b, b9, h, w, f}
설명Explanation
중간값을 스칼라 또는 벡터 레지스터로 로드한다,Load the intermediate value into a scalar or vector register
스칼라 레지스터 로드의 경우, 바이트, 바이트9, 하프워드 또는 워드는 데이타 형에 따라 로드된다. 바이트, 바이트9 및 하프워드 데이터 형의 경우, 영향받지 않는 바이트(바이트9)는 수정되지 않는다.For scalar register loads, bytes,
연산calculate
Rd=이하의 표를 참조한다:Rd = See the table below:
예외exception
없음.none.
VLQ Quad 로드VLQ Quad Rod
포맷format
어셈블러 구문Assembler Syntax
VLQ.lt Rd. SRb, SRiVLQ.lt Rd. SRb, SRi
VLQ.lt Rd, SRb, #IMMVLQ.lt Rd, SRb, #IMM
VLQ.lt Rd, SRb+, SRiVLQ.lt Rd, SRb +, SRi
VLQ.lt Rd, SRb+, #IMMVLQ.lt Rd, SRb +, #IMM
여기서 1t={b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd={VRd, VRAd, SRd}. .b와 .ds9는 동일한 연산을 명시하고 .64와 VRAd는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해 VLQOFF를 사용한다.Where 1t = {b, bz9, ds9, h, w, 4, 8, 16, 32, 64}, Rd = {VRd, VRAd, SRd}. Note that .b and .ds9 specify the same operation, and that .64 and VRAd cannot be specified together. Use VLQOFF for cache-off loads.
설명Explanation
현재 또는 대체 뱅크에 있는 네개의 벡터 레지스터 또는 네개의 스칼라 레지스터를 로드한다.Load four vector registers or four scalar registers in the current or alternate bank.
연산calculate
EA=SRb+{SRi sex(IMM<7:0>)};EA = SR b + {SR i sex (IMM <7: 0>)};
if(A=1) SRb=EA;;if (A = 1) SR b = EA ;;
Rd:Rd+1:Rd+2:Rd+3=see table below;R d : R d + 1 : R d + 2 : R d + 3 = see table below;
예외exception
무효 데이터 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VLR 반전 로드VLR Inverted Load
포맷format
어셈블러 구문Assembler Syntax
VLR.lt Rd, SRb, SRiVLR.lt Rd, SRb, SRi
VLR.lt Rd, SRb, #IMMVLR.lt Rd, SRb, #IMM
VLR.lt Rd, SRb+, SRiVLR.lt Rd, SRb +, SRi
VLR.lt Rd, SRb+, #IMMVLR.lt Rd, SRb +, #IMM
여기서 1t={4, 8, 16, 32, 64}, Rd={VRd, VRAd}. 64와 VRAd는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해 VLROFF를 사용한다.Where 1t = {4, 8, 16, 32, 64}, Rd = {VRd, VRAd}. Note that 64 and VRAd cannot be specified together. Use VLROFF for cache-off loads.
설명Explanation
역 엘리먼트 순으로 벡터 레지스터를 로드한다. 이 명령은 스칼라 목적지 레지스터를 지원하지 않는다.Load vector registers in reverse element order. This instruction does not support the scalar destination register.
연산calculate
예외exception
무효 데이타 어드레스, 정열되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.
VLSL 논리적 좌측 쉬프트VLSL logical left shift
포맷format
어셈블러 구문Assembler Syntax
VLSL.dt VRd, VRa, SRbVLSL.dt VRd, VRa, SRb
VLSL.dt VRd, VRa, #IMMVLSL.dt VRd, VRa, #IMM
VLSL.dt SRd, SRa, SRbVLSL.dt SRd, SRa, SRb
VLSL.dt SRd, SRa, #IMMVLSL.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra에 있는 각 엘리먼트는 스칼라 레지스터 Rb 또는 IMM 필드에 주어진 쉬프트 양만큼 제로가 최하위 비트(LSB) 위치에 채워지면서 논리적으로 좌로 비트 쉬프트되고, 그 결과는 벡터/스칼라 레지스터 Rd에 저장된다.Each element in the vector / scalar register Ra is bitwise logically left shifted to zero at the least significant bit (LSB) position by the amount of shift given in the scalar register Rb or IMM field, and the result is stored in the vector / scalar register Rd. .
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
shift-amount은 SRb 또는 IMM<4:0>로부터 5 비트 숫자로서 취해진다는 것에 유의한다. 바이트, 바이트9, 하프워드 데이터 형의 경우, 프로그래머는 데이타 크기에 있는 비트의 수보다 적거나 또는 같은 쉬프트 양을 정확하게 명시할 책임이 있다. 만일 쉬트프 양이 명시된 데이타 크기보다 크면, 엘리먼트는 제로로 채워질 것이다.Note that shift-amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte,
VLSR 논리적 우측 쉬프트VLSR logical right shift
포맷format
어셈블러 구문Assembler Syntax
VLSR.dt VRd, VRa, SRbVLSR.dt VRd, VRa, SRb
VLSR.dt VRd, VRa, #IMMVLSR.dt VRd, VRa, #IMM
VLSR.dt SRd, SRa, SRbVLSR.dt SRd, SRa, SRb
VLSR.dt SRd, SRa, #IMMVLSR.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra에 있는 각 엘리먼트는 스칼라 레지스터 Rb 또는 IMM 필드에 주어진 쉬프트 양만큼 제로가 최상위 비트(MSB) 장소에 채워지면서 논리적으르 우로 비트 쉬프트되고, 그 결과는 벡터/스칼라 레지스터 Rd에 저장된다.Each element in the vector / scalar register Ra is logically shifted bitwise with zero filled in the most significant bit (MSB) place by the amount of shift given in the scalar register Rb or IMM field, and the result is stored in the vector / scalar register Rd. .
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
shift-amount은 SRb 또는 IMM<4:0>로부터 5 비트 숫자로서 취해진다는 것에 유의한다. 바이트, 바이트9, 하프워드 데이타 형의 경우, 프로그래머는 데이타 크기에 있는 비트의 수보다 적거나 또는 같은 쉬프트 양을 정확하게 명시할 책임이 있다. 만일 쉬트프 양이 명시된 데이타 크기보다 크면, 엘리먼트는 제로로 채워질 것이다.Note that shift-amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte,
VLWS 스트라이드로 로드Load into VLWS stride
포맷format
어셈블러 구문Assembler Syntax
VLWS.lt Rd, SRb, SRiVLWS.lt Rd, SRb, SRi
VLWS.lt Rd, SRb, #IMMVLWS.lt Rd, SRb, #IMM
VLWS.lt Rd, SRb+, SRiVLWS.lt Rd, SRb +, SRi
VLWS.lt Rd, SRb+, #IMMVLWS.lt Rd, SRb +, #IMM
여기서 1t={4, 8, l6, 32}, Rd={VRd, VRAd}. 64 모드는 지원되지 않는다 - 대신에 VL을 사용한다. 캐쉬-오프 로드를 위해 VLWSOFF를 사용한다.Where 1t = {4, 8, l6, 32}, Rd = {VRd, VRAd}. 64 mode is not supported-use VL instead. Use VLWSOFF for cache-off loads.
설명Explanation
유효 어드레스에서 시작하여, 스칼라 레지스터 SRb+1를 스트라이드 제어 레지스터로서 이용하여 32 바이트가 메모리에서 벡터 레지스터 VRd로 로드된다.Starting at the effective address, 32 bytes are loaded from memory into the vector register VRd using the scalar register SR b + 1 as the stride control register.
LT는 블럭 크기, 각 블럭에 대해 로드할 연속적인 바이트의 수를 명시한다. SRb+1는 스트라이드(stride), 두개의 연속하는 블럭의 시작을 분리하는 바이트의 수를 명시한다.LT specifies the block size, the number of consecutive bytes to load for each block.
스트라이드는 블럭 크기와 같거나 커야 한다. EA는 데이다 크기가 정렬되어야 한다. 스트라이드와 블럭 크기는 복수의 데이타 크기이어야 한다.The stride must be equal to or larger than the block size. EA must be aligned in size. Stride and block size must be multiple data sizes.
연산calculate
예외exception
무효 데이타 어드레스. 정렬되지 않은 액세스.Invalid data address. Unsorted access.
VMAC 곱셈과 누산VMAC multiplication and accumulation
포맷format
어셈블러 구문Assembler Syntax
VMAC.dt VRa, VRbVMAC.dt VRa, VRb
VMAC.dt VRa, SRbVMAC.dt VRa, SRb
VMAC.dt VRa, #IMMVMAC.dt VRa, #IMM
VMAC.dt SRa, SRbVMAC.dt SRa, SRb
VMAC.dt SRa, #IMMVMAC.dt SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지윈되는 모드Supported mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 Ra의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 중간 결과의 각 이중 정확도 엘리먼트를 벡터 누산기의 각 이중 정확도 엘리먼트에 더하고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장한다.Multiply each element of Ra by each element in Rb to produce a double accuracy intermediate result; Add each double precision element of the intermediate result to each double accuracy element of a vector accumulator; The double precision sum of each element is stored in the vector accumulator.
Ra와 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.Ra and Rb use the specified data types, while VAC uses the appropriate double-precision data types (16, 32, and 64 for int8, int16, and int32, respectively). The top of each double precision element is stored in the VACH.
부동 데이타 형의 경우, 모든 오퍼런드와 결과는 단일 정확도 형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int16 데이타 형을 이용한다.This command does not support the int9 data type-use the int16 data type instead.
VMACF 분수의 곱셈과 누산Multiply and Accumulate VMACF Fractions
포맷format
어셈블러 구문Assembler Syntax
VMACF.dt VRa, VRbVMACF.dt VRa, VRb
VMACF.dt VRa, SRbVMACF.dt VRa, SRb
VMACF.dt VRa, #IMMVMACF.dt VRa, #IMM
VMACF.dt SRa, SRbVMACF.dt SRa, SRb
VMACF.dt SRa, #IMMVMACF.dt SRa, #IMM
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 이중 정확도 중간 결과를 좌로 l비트 쉬프트하고; 쉬프트된 중간 결과의 각 이중 정확도 엘리먼트를 벡터 누산기의 각 이중 정확도 엘리먼트에 더하고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Shift the double precision intermediate result left by one bit; Add each double precision element of the shifted intermediate result to each double accuracy element of the vector accumulator; The double precision sum of each element is stored in the vector accumulator.
VRa와 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.VRa and Rb use the specified data types, while VAC uses the appropriate double-accuracy data types (16, 32 and 64 for int8, int16 and int32 respectively). The top of each double precision element is stored in the VACH.
연산calculate
예외exception
오버플로우.Overflow.
프로그래밍 주석Programming comments
이 명령은 int9 데이타 명을 지원하지 않는다 - 대신에 int16 데이타 형을 이용한다.This command does not support int9 data names-use the int16 data type instead.
VMACL 로우의 곱셈과 누산Multiply and Accumulate VMACL Rows
포맷format
어셈블러 구문Assembler Syntax
VMACL.dt VRd, VRa, VRbVMACL.dt VRd, VRa, VRb
VMACL.dt VRd, VRa, SRbVMACL.dt VRd, VRa, SRb
VMACL.dt VRd, VRa, #IMMVMACL.dt VRd, VRa, #IMM
VMACL.dt SRd, SRa, SRbVMACL.dt SRd, SRa, SRb
VMACL.dt SRd, SRa, #IMMVMACL.dt SRd, SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지윈되는 모드Supported mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 중간 곁과의 각 이중 정확도 엘리먼트를 벡터 누산기의 각 이중 정확도 엘리먼트에 더하고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장하고; 그 하부를 목적지 레지스터 VRd에 저장한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Add each double accuracy element of the intermediate side to each double accuracy element of a vector accumulator; Store the double precision sum of each element in the vector accumulator; The lower part is stored in the destination register VRd.
VRa와 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이터 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.VRa and Rb use the specified data types, while VAC uses the appropriate double-precision data types (16, 32 and 64 for int8, int16 and int32 respectively). The top of each double precision element is stored in the VACH.
부동 데이타 형의 경우, 모든 오퍼런드와 결과는 단일 정확도 유형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
프로그래밍 주석Programming comments
이 명령은 int9 데이터 형을 지원하지 않는다. - 대신에 int16 데이터 형을 이용한다.This command does not support the int9 data type. -Use int16 data type instead
VMAD 곱셈과 덧셈VMAD multiplication and addition
포맷format
어셈블러 구문Assembler Syntax
VMAD.dt VRc, VRd, VRa, VRbVMAD.dt VRc, VRd, VRa, VRb
VMAD.dt SRc, SRd, SRa, SRbVMAD.dt SRc, SRd, SRa, SRb
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 Ra의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 중간 결과의 각 이중 정확도 엘리먼트를 Rc의 각 엘리먼트에 더하고; 각 엘리먼트의 이중 정확도 합계를 상기 목적지 레지스터 Rd+1 : Rd에 저장한다.Multiply each element of Ra by each element in Rb to produce a double accuracy intermediate result; Add each double precision element of the intermediate result to each element of Rc; The double precision sum of each element is stored in the destination register Rd + 1: Rd.
연산calculate
예외exception
없음.none.
VMAD L 로우의 곱셈과 덧셈Multiply and Add VMAD L Rows
포맷format
어셈블러 구문Assembler Syntax
VMADL.dt VRc, VRd, VRa, VRbVMADL.dt VRc, VRd, VRa, VRb
VMADL.dt SRc, SRd, SRa, SRbVMADL.dt SRc, SRd, SRa, SRb
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 Ra의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 중간 결과의 각 이중 정확도 엘리먼트를 Rc의 각 엘리먼트에 더하고; 각 엘리먼트의 이중 정확도 합계를 상기 목적지 레지스터 Rd에 저장한다.Multiply each element of Ra by each element in Rb to produce a double accuracy intermediate result; Add each double precision element of the intermediate result to each element of Rc; The double precision sum of each element is stored in the destination register Rd.
부동 데이터 형의 경우, 모든 오퍼런드와 결과는 단일 정확도 유형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
VMAS 누산기로부터의 곱셈과 뺄셈Multiplication and Subtraction from the VMAS Accumulator
포맷format
어셈블러 구문Assembler Syntax
VMAS.dt VRa, VRbVMAS.dt VRa, VRb
VMAS.dt VRa, SRbVMAS.dt VRa, SRb
VMAS.dt VRa, #IMMVMAS.dt VRa, #IMM
VMAS.dt SRa, SRbVMAS.dt SRa, SRb
VMAS.dt SRa, #IMMVMAS.dt SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 의해 Ra의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 벡터 누산기의 각 이중 정확도 엘리먼트로부터 상기 중간 결과의 각 이중 정확도 엘리먼트를 빼고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장한다.Multiply each element of Ra by each element in Rb by producing a double accuracy intermediate result; Subtract each double precision element of the intermediate result from each double precision element of a vector accumulator; The double precision sum of each element is stored in the vector accumulator.
Ra와 Rb는 지정된 테이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 헝(int8, int16 및 int32 각각에 대해 l6, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.Ra and Rb use the specified data types, while VAC uses the appropriate double-precision data hooks (l6, 32, and 64 for int8, int16, and int32, respectively). The top of each double precision element is stored in the VACH.
부동 데이타 형의 경우, 모든 오퍼런드와 결과는 단일 정확도 형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 intl6 데이터 형을 이용한다.This command does not support the int9 data type-use the intl6 data type instead.
VMASF 누산기 분수로부터의 곱셈과 뺄셈Multiplication and Subtraction from VMASF Accumulator Fractions
포맷format
어셈블러 구문Assembler Syntax
VMASF.dt VRa, VRbVMASF.dt VRa, VRb
VMASF.dt VRa, SRbVMASF.dt VRa, SRb
VMASF.dt VRa, #IMMVMASF.dt VRa, #IMM
VMASF.dt SRa, SRbVMASF.dt SRa, SRb
VMASF.dt SRa, #IMMVMASF.dt SRa, #IMM
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 이중 정확도 중간 결과를 우로 1만큼 쉬프트하고: 벡터 누산기의 각 이중 정확도 엘리먼트로부터 상기 쉬프트된 중간 결과의 각 이중 정확도 엘리먼트를 빼고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Shift the double precision intermediate result by one: subtract each double accuracy element of the shifted intermediate result from each double accuracy element of a vector accumulator; The double precision sum of each element is stored in the vector accumulator.
VRa와 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.VRa and Rb use the specified data types, while VAC uses the appropriate double-accuracy data types (16, 32 and 64 for int8, int16 and int32 respectively). The top of each double precision element is stored in the VACH.
연산calculate
예외exception
오버플로우.Overflow.
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int16 데이타 형을 이용한다.This command does not support the int9 data type-use the int16 data type instead.
VMASL 누산기 로우로부터의 곱셈과 뺄셈Multiplication and Subtraction from VMASL Accumulator Rows
포맷format
어셈블러 구문Assembler Syntax
VMASL.dt VRd, VRa, VRbVMASL.dt VRd, VRa, VRb
VMASL.dt VRd, VRa, SRbVMASL.dt VRd, VRa, SRb
VMASL.dt VRd, VRa, #IMMVMASL.dt VRd, VRa, #IMM
VMASL.dt SRd, SRa, SRbVMASL.dt SRd, SRa, SRb
VMASL.dt SRd, SRa, #IMMVMASL.dt SRd, SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 벡터 누산기의 각 이중 정확도 엘리먼트로부터 상기 중간 결과의 각 이중 정확도 엘리먼트를 빼고; 각 엘리먼트의 이중 정확도 합계를 상기 벡터 누산기에 저장하고; 그 하부를 목적지 레지스터 VRd로 반환한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Subtract each double precision element of the intermediate result from each double precision element of a vector accumulator; Store the double precision sum of each element in the vector accumulator; Return the bottom part to the destination register VRd.
VRa와 Rb는 지정된 데이타 형을 사용하는데 반해, VAC는 적당한 이중 정확도 데이타 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 VACH에 저장된다.VRa and Rb use the specified data types, while VAC uses the appropriate double-accuracy data types (16, 32 and 64 for int8, int16 and int32 respectively). The top of each double precision element is stored in the VACH.
부동 데이터 형의 경우, 모든 오퍼런드와 결과는 단일 정확도형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int6 데이타 형을 이용한다.This command does not support the int9 data type-use the int6 data type instead.
VMAXE 페어와이즈 최대 및 교환VMAXE pairwise max and exchange
포맷format
어셈블러 구문Assembler Syntax
VMAXE.dt VRd, VRbVMAXE.dt VRd, VRb
여기서 dt={b, b9, h, w, f}.Where dt = {b, b9, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
VRa는 VRb와 같다. VRa가 VRb와 다르면, 그 결과는 정의되지 않는다.VRa is the same as VRb. If VRa is different from VRb, the result is undefined.
벡터 레지스터 VRb의 각 홀수/짝수 데이타 엘리먼트가 쌍으로 비교되고 각 데이타 엘리먼트 쌍의 큰 값이 짝수 장소에 저장되고 각 데이터 엘리먼트 쌍의 작은 값이 벡터 레지스터 Rd의 홀수 장소에 저장된다.Each odd / even data element of the vector register VRb is compared in pairs, and the large value of each data element pair is stored in the even place and the small value of each data element pair is stored in the odd place of the vector register Rd.
연산calculate
예외exception
없음.none.
VMOV 이동Move VMOV
포맷format
어셈블러 구문Assembler Syntax
VMOV.dt Rd, RbVMOV.dt Rd, Rb
여기서 dt = {b, b9, h, w, f}, Rd와 Rb는 아키텍춰적으로 지정된 레지스터 명을 지칭한다. .w와 .f는 동일한 연산을 지정한다는 것에 유의한다.Where dt = {b, b9, h, w, f}, Rd and Rb refer to the architecturally designated register name. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
레지스더 Rb의 내용이 레지스터 Rd로 이동된다. 그룹 필드는 소스 및 목적지 레지스터 그룹을 명시한다. 레지스터 그룹 주석은 다음과 같다:The contents of register Rb are moved to register Rd. The group field specifies the source and destination register groups. The register group comments are as follows:
VR 현재의 뱅크 벡터 레지스터VR Current Bank Vector Register
VRA 대체 뱅크 벡터 레지스터VRA Alternate Bank Vector Register
SR 스칼라 레지스터SR scalar register
RASR 반환 어드레스 스택 레지스터RASR Return Address Stack Register
VAC 벡터 누산기 레지스터(이하의 VAC 레지스터 엔코딩을 참조한다.)VAC vector accumulator registers (see VAC register encoding below).
벡터 레지스터는 이 명령으로서 스칼라 레지스터로 이동될 수 없다는 것에 유의한다. VEXTRT 명령이 상기 목적을 위해 제공된다.Note that the vector register cannot be moved to the scalar register with this instruction. The VEXTRT command is provided for this purpose.
VAC 레지스터 엔코딩을 위해 다음 표를 사용한다:Use the following table for VAC register encoding:
연산calculate
Rd=RbRd = Rb
예외exception
예외 상태를 VCSR 또는 VISRC에 세트함으로서 대응하는 예외를 초래할 것이다.Setting the exception status to VCSR or VISRC will result in the corresponding exception.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의해 영향받지 않는다. 대체 뱅크 개념은 VEC64 모드에 존재하지 않기 때문에, 이 명령은 VEC64 모드에 있는 대체 뱅크로부터 또는 에 이동하는데 사용될 수 없다.This command is not affected by the element mask. Since the alternate bank concept does not exist in VEC64 mode, this command cannot be used to move from or to the alternate bank in VEC64 mode.
VMUL 곱셈VMUL multiplication
포맷format
어셈블러 구문Assembler Syntax
VMUL.dt VRc, VRd, VRa, VRbVMUL.dt VRc, VRd, VRa, VRb
VMUL.dt SRc, SRd, SRa, SRbVMUL.dt SRc, SRd, SRa, SRb
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 결과를 내기 위해 Ra의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고, 각 엘리먼트의 이중 정확도 합계를 상기 목적지 레지스터 Rc:Rd로 반환한다.To produce a double precision result, each element of Ra is multiplied with each element in Rb and the double precision sum of each element is returned to the destination registers Rc: Rd.
Ra와 Rb는 지정된 데이타 형을 사용하는데 반해, Rc:Rd는 적당한 이중 정확도 데이타 형(int8, int16 및 int32 각각에 대해 16, 32 및 64)을 사용한다. 각 이중 정확도 엘리먼트의 상부는 Rc에 저장된다.Ra and Rb use the specified data types, whereas Rc: Rd uses the appropriate double precision data types (16, 32, and 64 for int8, int16, and int32, respectively). The top of each double precision element is stored in Rc.
연산calculate
예외exception
없음none
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 intl6 데이터 형을 사용한다. 이 명령은 또한 확장된 결과가 지원된 데이타 형이 아니기 때문에 부동 데이타 형을 지원하지 않는다.This command does not support the int9 data type-use the intl6 data type instead. This command also does not support floating data types because the extended result is not a supported data type.
VMULA 누산기에 대한 곱셈Multiplication for VMULA Accumulator
포멧Format
어셈블러 구문Assembler Syntax
VMULA.dt VRa, VRbVMULA.dt VRa, VRb
VMULA.dt VRa, SRbVMULA.dt VRa, SRb
VMULA.dt VRa, #IMMVMULA.dt VRa, #IMM
VMULA.dt SRa, SRbVMULA.dt SRa, SRb
VMULA.dt SRa, #IMMVMULA.dt SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 그 결과를 누산기에 기록한다.Multiply each element of VRa by each element in Rb to produce a double accuracy result; Record the results in the accumulator.
부동 데이타 형의 경우, 모든 오퍼런드와 결과는 단일 정확도 유형이다.For floating data types, all operands and results are of single precision type.
연산calculate
예외exception
없음none
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int16 데이타 형을 사용한다.This command does not support the int9 data type-use the int16 data type instead.
VMULAF 누산기 분수에 대한 곱셈Multiplication for VMULAF Accumulator Fraction
포맷format
어셈블러 구문Assembler Syntax
VMULAF.dt VRa, VRbVMULAF.dt VRa, VRb
VMULAF.dt VRa, SRbVMULAF.dt VRa, SRb
VMULAF.dt VRa, #IMMVMULAF.dt VRa, #IMM
VMULAF.dt SRa, SRbVMULAF.dt SRa, SRb
VMULAF.dt SRa, #IMMVMULAF.dt SRa, #IMM
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 이중 정확도 중간 결과를 좌로 1 비트 쉬프트하고; 그 결과를 누산기에 기록한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Shift the double precision intermediate result one bit to the left; Record the results in the accumulator.
연산calculate
예외exception
없음none
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int6 데이타 형을 사용한다.This command does not support the int9 data type-use the int6 data type instead.
VMULF 분수 곱셈VMULF fractional multiplication
포맷format
어셈블러 구문Assembler Syntax
VMULF.dt VRd, VRa, VRbVMULF.dt VRd, VRa, VRb
VMULF.dt VRd, VRa, SRbVMULF.dt VRd, VRa, SRb
VMULF.dt VRd, VRa, #IMMVMULF.dt VRd, VRa, #IMM
VMULF.dt SRd, SRa, SRbVMULF.dt SRd, SRa, SRb
VMULF.dt SRd, SRa, #IMMVMULF.dt SRd, SRa, #IMM
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고: 상기 이중 정확도 중간 결과를 좌로 1비트 쉬프트하고; 그 결과의 상부를 목적지 레지스터 VRd+1 및 목적지 레지스터 VRd로 반환한다. VRd는 짝수 번호의 레지스터이어야 한다.Multiply each element of VRa by each element in Rb to produce a double precision intermediate result: shift the double precision intermediate result one bit to the left; Return the top of the result to destination register VRd + 1 and destination register VRd. VRd must be an even numbered register.
연산calculate
예외exception
없음none
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int6 데이타 형을 사용한다.This command does not support the int9 data type-use the int6 data type instead.
VMULFR 분수 곱셈 및 라운드VMULFR Fraction Multiplication and Rounds
포맷format
어셈블러 구문Assembler Syntax
VMULFR.dt VRd, VRa, VRbVMULFR.dt VRd, VRa, VRb
VMULFR.dt VRd, VRa, SRbVMULFR.dt VRd, VRa, SRb
VMULFR.dt VRd, VRa, #IMMVMULFR.dt VRd, VRa, #IMM
VMULFR.dt SRd, SRa, SRbVMULFR.dt SRd, SRa, SRb
VMULFR.dt SRd, SRa, #IMMVMULFR.dt SRd, SRa, #IMM
여기서 dt={b, h, w}.Where dt = {b, h, w}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 중간 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 상기 이중 정확도 중간 결과를 좌로 1비트 쉬프트하고; 상기 쉬프트된 중간 결과를 상부로 라운드하고; 그 상부를 목적지 레지스터한다.Multiply each element of VRa by each element in Rb to produce a double accuracy intermediate result; Shift the double precision intermediate result one bit to the left; Round the shifted intermediate result to the top; The upper part registers the destination.
연산calculate
예외exception
없음none
프로그래밍 주석Programming comments
이 명령은 int9 데이타 형을 지원하지 않는다 - 대신에 int16 데이터 형을 사용한다.This command does not support the int9 data type-use the int16 data type instead.
VMULL 로우 곱셈VMULL low multiplication
포맷format
어셈블러 구문Assembler Syntax
VMULL.dt VRd, VRa, VRbVMULL.dt VRd, VRa, VRb
VMULL.dt VRd, VRa, SRbVMULL.dt VRd, VRa, SRb
VMULL.dt VRd, VRa, #IMMVMULL.dt VRd, VRa, #IMM
VMULL.dt SRd, SRa, SRbVMULL.dt SRd, SRa, SRb
VMULL.dt SRd, SRa, #IMMVMULL.dt SRd, SRa, #IMM
여기서 dt={b, h, w, f}.Where dt = {b, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
이중 정확도 결과를 내기 위해 VRa의 각 엘리먼트를 Rb에 있는 각 엘리먼트와 곱하고; 그 결과의 상부를 목적지 레지스터 VRd로 반환한다.Multiply each element of VRa by each element in Rb to produce a double accuracy result; Return the top of the result to the destination register VRd.
부동 데이타 형의 경우, 모든 오퍼런드와 결과는 단일 정화도 유형이다For floating data types, all operands and results are of single purity type
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
프로그래밍 주석Programming comments
이 명령은 int9 데이터 형을 지원하지 않는다 - 대신에 int16 데이타 형을 사용한다.This command does not support the int9 data type-use the int16 data type instead.
VMULF NANDVMULF NAND
포맷format
어셈블러 구문Assembler Syntax
VNAND.dt VRd, VRa, VRbVNAND.dt VRd, VRa, VRb
VNAND.dt VRd, VRa, SRbVNAND.dt VRd, VRa, SRb
VNAND.dt VRd, VRa, #IMMVNAND.dt VRd, VRa, #IMM
VNAND.dt SRd, SRa, SRbVNAND.dt SRd, SRa, SRb
VNAND.dt SRd, SRa, #IMMVNAND.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다.Where dt = {b, b9, h, w}. .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra에 있는 각 엘리먼트의 각 비트를 Rb/중간 오퍼런드에 있는 대응하는 비트와 논리적으로 NAND하고; 그 결과를 Rd에 반환한다.Logically NAND each bit of each element in Ra with a corresponding bit in the Rb / middle operation; Return the result to Rd.
연산calculate
예외exception
없음none
VNOR NORVNOR NOR
포맷format
어셈블러 구문Assembler Syntax
VNOR.dt VRd, VRa, VRbVNOR.dt VRd, VRa, VRb
VNOR.dt VRd, VRa, SRbVNOR.dt VRd, VRa, SRb
VNOR.dt VRd, VRa, #IMMVNOR.dt VRd, VRa, #IMM
VNOR.dt SRd, SRa, SRbVNOR.dt SRd, SRa, SRb
VNOR.dt SRd, SRa, #IMMVNOR.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다.Where dt = {b, b9, h, w}. .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra에 있는 각 엘리멘트의 각 비트를 Rb/중간 오펴런드에 있는 대응하는 비트와 논리적으로 NOR하고; 그 결과를 Rd에 반환한다.Logically NOR each bit of each element in Ra with the corresponding bit in Rb / intermediate open; Return the result to Rd.
연산calculate
예외exception
없음none
VOR ORVOR OR
포맷format
어셈블러 구문Assembler Syntax
VOR.dt VRd, VRa, VRbVOR.dt VRd, VRa, VRb
VOR.dt VRd, VRa, SRbVOR.dt VRd, VRa, SRb
VOR.dt VRd, VRa, #IMMVOR.dt VRd, VRa, #IMM
VOR.dt SRd, SRa, SRbVOR.dt SRd, SRa, SRb
VOR.dt SRd, SRa, #IMMVOR.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다.Where dt = {b, b9, h, w}. .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra에 있는 각 엘리먼트의 각 비트를 Rb/중간 오퍼런드에 있는 대응하는 비트와 논리적으로 OR하고; 그 결과를 Rd에 반환한다.Logically OR each bit of each element in Ra with the corresponding bit in the Rb / middle operation; Return the result to Rd.
연산calculate
예외exception
없음none
VORC OR 보수VORC OR reward
포맷format
어셈블러구문Assembler Syntax
VORC.dt VRd, VRa, VRbVORC.dt VRd, VRa, VRb
VORC.dt VRd, VRa, SRbVORC.dt VRd, VRa, SRb
VORC.dt VRd, VRa, #IMMVORC.dt VRd, VRa, #IMM
VORC.dt SRd, SRa, SRbVORC.dt SRd, SRa, SRb
VORC.dt SRd, SRa, #IMMVORC.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다.Where dt = {b, b9, h, w}. .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
Ra에 있는 각 엘리먼트의 각 비트를 Rb/중간 오퍼런드에 있는 대응하는 비트와 논리적으로 OR하고; 그 결과를 Rd에 반환한다.Logically OR each bit of each element in Ra with the corresponding bit in the Rb / middle operation; Return the result to Rd.
연산calculate
예외exception
없음none
VPFTCH 프리훼치VPFTCH Prefetch
포맷format
어셈블러 구문Assembler Syntax
VPFTCH.dt SRb, SRiVPFTCH.dt SRb, SRi
VPFTCH.dt SRb, #IMMVPFTCH.dt SRb, #IMM
VPFTCH.dt SRb+, SRiVPFTCH.dt SRb +, SRi
VPFTCH.dt SRb+, #IMMVPFTCH.dt SRb +, #IMM
여기서 In={1, 2, 4, 8}.Where In = {1, 2, 4, 8}.
설명Explanation
유효 어드레스에서 시작하여 복수의 벡터 데이타 캐쉬 라인을 프리훼치한다. 캐쉬 라인의 수는 다음과 같이 지정된다:Prefetch a plurality of vector data cache lines starting from a valid address. The number of cache lines is specified as follows:
LN<1:0>=00: 1 64 바이트 캐쉬 라인이 프리훼치된다.LN <1: 0> = 00: 1 The 64 byte cache line is prefetched.
LN<1:0>=01: 2 64 바이트 캐쉬 라인이 프리훼치된다.LN <1: 0> = 01: 2 The 64 byte cache line is prefetched.
LN<1:0>=10: 4 64 바이트 캐쉬 라인이 프리훼치된다.LN <1: 0> = 10: 4 The 64 byte cache line is prefetched.
LN<l:0>=1l: 8 64 바이트 캐쉬 라인이 프리훼치된다.LN <l: 0> = 1l: 8 The 64 byte cache line is prefetched.
연산calculate
예외exception
무효 데이타 어드레스 예외Invalid data address exception
프로그래밍 주석Programming comments
EA<31:0>는 국부 메모리에 있는 바이트 어드레스를 지칭한다.EA <31: 0> refers to the byte address in local memory.
VPFTCHSP 스크래치 패드에 대한 프리훼치Prefetch for VPFTCHSP Scratch Pads
포맷format
어셈블러 구문Assembler Syntax
VPFTCHSP.ln SRp, SRb, SRiVPFTCHSP.ln SRp, SRb, SRi
VPFTCHSP.ln SRp, SRb, #IMMVPFTCHSP.ln SRp, SRb, #IMM
VPFTCHSP.ln SRp, SRb+, SRiVPFTCHSP.ln SRp, SRb +, SRi
VPFTCHSP.ln SRp, SRb+, #IMMVPFTCHSP.ln SRp, SRb +, #IMM
여기서 In={1, 2, 1, 8}. VPFTCH와 VPFTCHSP는 동일한 오피코드를 갖는다.Where In = {1, 2, 1, 8}. VPFTCH and VPFTCHSP have the same opcode.
설명Explanation
메모리에서 스크래치 패드로 복수의 64 바이트 블럭을 전송한다. 유효 어드레스는 메모리에 시작 어드레스를 제공하고 SRp는 스크래치 패드에 시작 어드레스를 제공한다. 64 바이트 블럭의 수는 다음과 같이 명시된다:Transfer multiple 64 byte blocks from memory to the scratch pad. The effective address provides the start address in memory and the SRp provides the start address in the scratch pad. The number of 64 byte blocks is specified as follows:
LN<1:0>=00: 1 64 바이트 블럭이 전송된다.LN <1: 0> = 00: 1 A 64 byte block is transmitted.
LN<1:0>=01: 2 64 바이트 블럭이 전송된다.LN <1: 0> = 01: 2 64 byte blocks are transmitted.
LN<1:0>=10: 4 64 바이트 블럭이 전송된다.LN <1: 0> = 10: 4 64 byte blocks are transmitted.
LN<1:0>=11: 8 64 바이트 블럭이 전송된다.LN <1: 0> = 11: 8 A 64 byte block is transmitted.
만일 유효 어드레스가 64 바이트 경계 상에 있지 않으면, 먼저 64 바이트 경계로 정렬되도록 트렁케이트된다. 만일 SRp에 있는 스크래치 패드포인터 어드레스가 64 바이트 경계 상에 있지 않으면, 이 또한 64 바이트 경계로 정렬되도록 트렁케이트된다. 상기 정렬된 스크래치 패드 포인터 어드레스는 전송된 바이트의 수 만큼 증가된다.If the effective address is not on a 64 byte boundary, it is truncated to be aligned to the 64 byte boundary first. If the scratch pad pointer address in SRp is not on a 64 byte boundary, it is also truncated to align on a 64 byte boundary. The aligned scratch pad pointer address is incremented by the number of bytes transmitted.
연산calculate
예외exception
무효 데이타 어드레스 예외Invalid data address exception
VROL 좌로 회전Rotate VROL Left
포맷format
어셈블러 구문Assembler Syntax
VROL.dt VRd, VRa, SRbVROL.dt VRd, VRa, SRb
VROL.dt VRd, VRa, #IMMVROL.dt VRd, VRa, #IMM
VROL.dt SRd, SRa, SRbVROL.dt SRd, SRa, SRb
VROL.dt SRd, SRa, #IMMVROL.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}..Where dt = {b, b9, h, w} ..
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 스칼라 레지스터 Rb 또는 IMM 필드에 주어진 비트 양만큼 좌로 회전되고, 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.Each data element of the vector / scalar register Ra is rotated left by the amount of bits given in the scalar register Rb or IMM field, and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
rotate-amount는 SRb 또는 IMM<4:0>으로부터 5 비트 숫자로서 취해진다. 바이트, 바이트9, 하프워드 데이타 형인 경우, 프로그래머는 데이타 크기에 있어 비트의 숫자보다 적거나 같은 회전 양을 정확히 명시할 책임이 있다. 만일 회전 양이 지정된 데이타 크기보다 크면, 결과는 정의되지 않는다.rotate-amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte,
좌로 n 회전은 우로 ElemSize - n 회전과 같다. 여기서, ElemSize는 소정의 데이터 크기에서 비트들의 수를 지칭한다.Left n rotation equals ElemSize-n rotation to the right. Here, ElemSize refers to the number of bits in a predetermined data size.
VROR 우로 회전Turn right to VROR
포맷format
어셈블러 구문Assembler Syntax
VROR.dt VRd, VRa, SRbVROR.dt VRd, VRa, SRb
VROR.dt VRd, VRa, #IMMVROR.dt VRd, VRa, #IMM
VROR.dt SRd, SRa, SRbVROR.dt SRd, SRa, SRb
VROR.dt SRd, SRa, #IMMVROR.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 스칼라 레지스터 Rb 또는 IMM 필드에 주어진 비트 양만큼 우로 회전되고, 그 결과가 벡터/스칼라 레지스터 Rd에 저장된다.Each data element of the vector / scalar register Ra is rotated right by the amount of bits given in the scalar register Rb or IMM field, and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
rotate_amount는 SRb 또는 IMM<4:0>으로부터 5 비트 숫자로서 취해진다. 바이트, 바이트9, 하프워드 데이타 형인 경우, 프로그래머는 데이타 크기에 있어 비트의 숫자보다 적거나 같은 회전 양을 정확히 명시할 책임이 있다. 만일 회전 양이 지정된 데이타 크기보다 크면, 결과는 정의되지 않는다.rotate_amount is taken as a 5-bit number from SRb or IMM <4: 0>. For byte,
좌로 n 회전은 우로 ElemSize - n 회전과 같다. 여기서, ElemSize는 소정의 데이타 크기에서 비트들의 수를 지칭한다.Left n rotation equals ElemSize-n rotation to the right. Here, ElemSize refers to the number of bits in a predetermined data size.
VROUND 부동 소수점에서 정수로 라운드VROUND floating point to integer
포맷format
어셈블러 구문Assembler Syntax
VROUND.rm VRd, VRbVROUND.rm VRd, VRb
VROUND.rm SRd, SRbVROUND.rm SRd, SRb
여기서 rm={ninf, zero, near, pinf}.Where rm = {ninf, zero, near, pinf}.
지원되는 모드Supported Mode
설명Explanation
부동 소수점 데이타 포맷에 있는 벡터/스칼라 레지스터 Rb의 내용은 가장 가까운 32 비트 정수(워드)로 라운드되고, 그 결과는 벡터/스칼라 레지스터 Rd에 저장된다. 라운딩 모드는 RM에 정의되어 있다.The contents of the vector / scalar register Rb in the floating point data format are rounded to the nearest 32-bit integer (word), and the result is stored in the vector / scalar register Rd. The rounding mode is defined in the RM.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
VSAT1 보다 하위의 라운드까지 포화Saturate up to the lower round than VSAT1
포맷format
어셈블러 구문Assembler Syntax
VSATL.dt VRd, VRa, VRbVSATL.dt VRd, VRa, VRb
VSATL.dt VRd, VRa, SRbVSATL.dt VRd, VRa, SRb
VSATL.dt VRd, VRa, #IMMVSATL.dt VRd, VRa, #IMM
VSATL.dt SRd, SRa, SRbVSATL.dt SRd, SRa, SRb
VSATL.dt SRd, SRa, #IMMVSATL.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w}. .f 데이타 형은 9 비트 중간과 함께 지원되지 않는다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that the .f data type is not supported with a 9-bit middle.
지원되는모드Supported mode
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 벡터/스칼라 레지스터 Rb 또는 IMM 필드에 있는 그것의 대응하는 하위 한계에 대해 점검된다. 만일 데이타 엘리먼트의 값이 상기 하위 한계보다 작으면, 하위 한계와 같도록 세트되고, 최종 결과가 벡터/스칼라 레지스터 Rd에 저장된다.Each data element of the vector / scalar register Ra is checked against its corresponding lower limit in the vector / scalar register Rb or IMM field. If the value of the data element is less than the lower limit, it is set equal to the lower limit and the final result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VSATU 보다 상위의 라운드까지 포화Saturation Up to Round Above VSATU
포맷format
어셈블러 구문Assembler Syntax
VSATU.dt VRd, VRa, VRbVSATU.dt VRd, VRa, VRb
VSATU.dt VRd, VRa, SRbVSATU.dt VRd, VRa, SRb
VSATU.dt VRd, VRa, #IMMVSATU.dt VRd, VRa, #IMM
VSATU.dt SRd, SRa, SRbVSATU.dt SRd, SRa, SRb
VSATU.dt SRd, SRa, #IMMVSATU.dt SRd, SRa, #IMM
여기서 dt={b, b9, h, w, f}. .f 데이타 형은 9 비트 중간과 함께 지원되지 않는다는 것에 유의한다.Where dt = {b, b9, h, w, f}. Note that the .f data type is not supported with a 9-bit middle.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 각 데이타 엘리먼트는 벡터/스칼라 레지스터 Rb 또는 IMM 필드에 있는 그것의 대응하는 상위 한계에 대해 점검된다. 만일 데이타 엘리먼트의 값이 상기 상위 한계보다 크면, 상위 한계와 같도록 세트되고, 최종 결과가 벡터/스칼라 레지스터 Rd에 저장된다.Each data element of the vector / scalar register Ra is checked against its corresponding upper limit in the vector / scalar register Rb or IMM field. If the value of the data element is greater than the upper limit, it is set equal to the upper limit and the final result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VSHFL 셔플VSHFL Shuffle
포맷format
어셈블러 구문Assembler Syntax
VSHFL.dt VRc, VRd, VRa, VRbVSHFL.dt VRc, VRd, VRa, VRb
VSHFL.dt VRc, VRd, VRa, SRbVSHFL.dt VRc, VRd, VRa, SRb
여기서 dt={b, b9, h, w, f}. . w와 f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w, f}. . Note that w and f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 Ra의 내용이 Rb와 셔플되고, 그 결과가 이하에 도시된 바와 같이 벡터 레지스터 Rc:Rd에 저장된다.The contents of the vector register Ra are shuffled with Rb, and the result is stored in the vector registers Rc: Rd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VSHFLH 하이 셔플VSHFLH High Shuffle
포맷format
어셈블러 구문Assembler Syntax
VSHFLH.dt VRd, VRa, VRbVSHFLH.dt VRd, VRa, VRb
VSHFLH.dt VRd, VRa, SRbVSHFLH.dt VRd, VRa, SRb
여기서 dt={b, b9, h, w, f}. w와 . f는 동일만 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w, f}. w and. Note that f only specifies the operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 Ra의 내용이 Rb와 셔플되고, 그 결과의 상부가 이하에 도시된 바와 같이 벡터 레지스터 Rd에 저장된다.The contents of the vector register Ra are shuffled with Rb, and the top of the result is stored in the vector register Rd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VSHFLL 로우 셔플VSHFLL Low Shuffle
포맷format
어셈블러 구문Assembler Syntax
VSHFLL.dt VRd, VRa, VRbVSHFLL.dt VRd, VRa, VRb
VSHFLL.dt VRd, VRa, SRbVSHFLL.dt VRd, VRa, SRb
여기서 dt={b, b9, h, w, f}. w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w, f}. Note that w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 Ra의 내용이 Rb와 셔플되고, 그 결과의 하부가 이하에 도시된 바와 같이 벡터 레지스터 Rd에 저장된다.The contents of the vector register Ra are shuffled with Rb, and the lower part of the result is stored in the vector register Rd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VST 저장VST storage
포맷format
어셈블러 구문Assembler Syntax
VST.st Rs, SRb, SRiVST.st Rs, SRb, SRi
VST.st Rs, SRb, #IMMVST.st Rs, SRb, #IMM
VST.st Rs, SRb+, SRiVST.st Rs, SRb +, SRi
VST.st Rs, SRb+, #IMMVST.st Rs, SRb +, #IMM
여기서 st={b, b9t, h, w, 4, 8, 16, 32, 64}. Rs={VRs, VRAs, SRS} .b와 .b9t는 동일한 연산을 명시하고, .64와 VRAs는 함께 명시될 수 없다는 것에 유의한다. 캐쉬-오프 저장을 의해서는 VSTOFF를 사용한다.Where st = {b, b9t, h, w, 4, 8, 16, 32, 64}. Rs = {VRs, VRAs, SRS} Note that .b and .b9t specify the same operation, and that .64 and VRAs cannot be specified together. Use VSTOFF for cache-off storage.
설명Explanation
벡터 또는 스칼라 레지스터를 저장한다.Stores a vector or scalar register.
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스Invalid data address, unaligned access
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
VSTCB 순환 버퍼에의 저장Save to VSTCB circular buffer
포맷format
어셈블러 구문Assembler Syntax
VSTCB.st Rs, SRb, SRiVSTCB.st Rs, SRb, SRi
VSTCB.st Rs, SRb, #IMMVSTCB.st Rs, SRb, #IMM
VSTCB.st Rs, SRb+, SRiVSTCB.st Rs, SRb +, SRi
VSTCB.st Rs, SRb+, #IMMVSTCB.st Rs, SRb +, #IMM
여기서 st = {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs={VRs, VRAs, SRs}. .b와 .b9t는 동일한 연산을 지정하고 .64와 VRAd는 함께 지정될 수 없다는 것에 유의한다. 캐쉬-오프 로드를 위해서 VSTCBOFF를 이용한다.Where st = {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs = {VRs, VRAs, SRs}. Note that .b and .b9t specify the same operation and that .64 and VRAd cannot be specified together. Use VSTCBOFF for cache-off loads.
설명Explanation
SRb+1에 있는 BEGIN 포인터와 SRb+2에 있는 END 포인터에 의해 가리켜진 순환 버퍼로부터 벡터 또는 스칼라 레지스터를 저장한다.And from SR b + pointed to by the pointer BEGIN and END pointers in the SR + b 2 in the first circular buffer storing a vector or a scalar register.
어드레스 갱신 연산은 물론 저장하기 전에 END 어드레스보다 크면 유효 어드레스가 조정된다. 또한, 순환 버퍼 바운드는 .f와 .w 스칼라 로드를 위해 각각 하프워드 및 워드 경계 상에서 정렬되어야 한다.If the address update operation is larger than the END address before storing, of course, the effective address is adjusted. In addition, circular buffer bounds must be aligned on halfword and word boundaries, respectively, for .f and .w scalar loads.
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
프로그래머는 다음 조건을 확실히 하여 다음 명령이 예상된대로 동작하게 하여야 한다.The programmer must ensure that the following instructions work as expected.
BEGlN<EA<2*END-BEGINBEGlN <EA <2 * END-BEGIN
즉, EA-END<END-BEGIN은 물론 EA<BEGIN.In other words, EA-END <END-BEGIN as well as EA <BEGIN.
VSTD 이중 저장VSTD dual storage
포맷format
어셈블러 구문Assembler Syntax
VSTD.st Rs, SRb, SRiVSTD.st Rs, SRb, SRi
VSTD.st Rs, SRb, #IMMVSTD.st Rs, SRb, #IMM
VSTD.st Rs, SRb+, SRiVSTD.st Rs, SRb +, SRi
VSTD.st Rs, SRb+, #IMMVSTD.st Rs, SRb +, #IMM
여기서 st = {b, b9t, h, w, 4, 8, l6, 32, 64}, Rs={VRs, VRAs, SRs}. .b와 .b9t는 동일한 연산을 지정하고 .64와 VRAs는 함께 지정될 수 없다는 것에 유의한다. 캐쉬-오프 저장을 위해서 VSTDOFF를 이용한다.Where st = {b, b9t, h, w, 4, 8, l6, 32, 64}, Rs = {VRs, VRAs, SRs}. Note that .b and .b9t specify the same operation, and that .64 and VRAs cannot be specified together. Use VSTDOFF for cache-off storage.
설명Explanation
현재 또는 대체 뱅크로부터의 두개의 벡터 레지스터 또는 네개의 스칼라 레지스터를 저장한다.Store two vector registers or four scalar registers from the current or alternate bank.
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
VSTQ Quad 저장VSTQ Quad storage
포맷format
어셈블러 구문Assembler Syntax
VSTQ.st Rs, SRb, SRiVSTQ.st Rs, SRb, SRi
VSTQ.st Rs, SRb, #IMMVSTQ.st Rs, SRb, #IMM
VSTQ.st Rs, SRb+, SRiVSTQ.st Rs, SRb +, SRi
VSTQ.st Rs, SRb+, #IMMVSTQ.st Rs, SRb +, #IMM
여기서 st = {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs={VRs, VRAs, SRs}. .b와 .b9t는 동일한 연산을 지정하고 .64와 VRAs는 함께 지정될 수 없다는 것에 유의한다. 캐쉬-오프 저장을 위해서 VSTQOFF를 이용한다.Where st = {b, b9t, h, w, 4, 8, 16, 32, 64}, Rs = {VRs, VRAs, SRs}. Note that .b and .b9t specify the same operation, and that .64 and VRAs cannot be specified together. Use VSTQOFF for cache-off storage.
설명Explanation
연산calculate
현재 또는 대체 뱅크로부터의 네개의 벡터 레지스터 또는 네개의 스칼라 레지스터를 저장한다.Stores four vector registers or four scalar registers from the current or alternate bank.
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
VSTR 반전 저장VSTR Invert Save
포맷format
어셈블러 구문Assembler Syntax
VSTR.st Rs, SRb, SRiVSTR.st Rs, SRb, SRi
VSTR.st Rs, SRb, #IMMVSTR.st Rs, SRb, #IMM
VSTR.st Rs, SRb+, SRiVSTR.st Rs, SRb +, SRi
VSTR.st Rs, SRb+, #IMMVSTR.st Rs, SRb +, #IMM
여기서 st = {4, 8, 16, 32, 64}, Rs={VRs, VRAs}. .64와 VRAs는 함께 지정될 수 없다는 것에 유의한다. 캐쉬-오프 저장을 위해서 VSTROFF를 이용한다.Where st = {4, 8, 16, 32, 64}, Rs = {VRs, VRAs}. Note that .64 and VRAs cannot be specified together. Use VSTROFF for cache-off storage.
설명Explanation
연산calculate
벡터 레지스터를 역 엘리먼트 순으로 저장한다. 이 명령은 스칼라 데이타 소스 레지스터를 지원하지 않는다.Store vector registers in reverse element order. This command does not support the scalar data source register.
연산calculate
예외exception
무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.
VSTWS 스트라이드로 저장Save as VSTWS stride
포맷format
어셈블러 구문Assembler Syntax
VSTWS.st Rs, SRb, SRiVSTWS.st Rs, SRb, SRi
VSTWS.st Rs, SRb, #IMMVSTWS.st Rs, SRb, #IMM
VSTWS.st Rs, SRb+, SRiVSTWS.st Rs, SRb +, SRi
VSTWS.st Rs, SRb+, #IMMVSTWS.st Rs, SRb +, #IMM
여기서 st = {8, 16, 32}, Rs={VRs, VRAs}. .64 로드는 지원되지 않는다 - 대신에 VST를 사용한다. 캐쉬-오프 저장을 위해서 VSTWSOFF를 이용한다.Where st = {8, 16, 32}, Rs = {VRs, VRAs}. .64 loading is not supported-use VST instead. Use VSTWSOFF for cache-off storage.
설명Explanation
유효 어드레스에서 시작하여, 스칼라 레지스터 SRb+1를 스트라이드 제어 레지스터로서 사용하여 32 바이트가 벡터 레지스터 VRs에서 메모리에 저장된다.Starting at the effective address, 32 bytes are stored in memory at the vector register VRs using the scalar register SR b + 1 as the stride control register.
ST는 블럭 크기, 각 블럭에서 저장되는 연속하는 바이트의 수를 지정하고 SRb+1은 스트라이드, 두개의 연속하는 블럭의 시작을 분리하는 바이트의 수를 지정한다,ST specifies the block size, the number of consecutive bytes stored in each block, and SRb + 1 specifies the stride, the number of bytes separating the beginning of two consecutive blocks.
스트라이드는 블럭 크기와 같거나 커야 한다. EA는 데이터 크기가 정렬되어야 한다. 스트라이드와 블록 크기는 복수의 데이타 크기 유형이어야 한다.The stride must be equal to or larger than the block size. EAs must be aligned on data size. Stride and block size must be of multiple data size types.
연산calculate
예외exception
무효 데이타 액세스, 정렬되지 않은 액세스.Invalid data access, unsorted access.
VSUB 뺄셈VSUB subtraction
포맷format
어셈블러 구문Assembler Syntax
VSUB.dt VRd, VRa, VRbVSUB.dt VRd, VRa, VRb
VSUB.dt VRd, VRa, SRbVSUB.dt VRd, VRa, SRb
VSUB.dt VRd, VRa, #IMMVSUB.dt VRd, VRa, #IMM
VSUB.dt SRd, SRa, SRbVSUB.dt SRd, SRa, SRb
VSUB.dt SRd, SRa, #IMMVSUB.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w, f}.Where dt = {b, b9, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Rb의 내용이 벡터/스칼라 레지스터 Ra의 내용으로부터 감산되고, 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Rb are subtracted from the contents of the vector / scalar register Ra, and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
VSUBS 뺄셈과 세트VSUBS subtraction and set
포맷format
어셈블러 구문Assembler Syntax
VSUBS.dt SRd, SRa, SRbVSUBS.dt SRd, SRa, SRb
VSUBS.dt SRd, SRa, #IMMVSUBS.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w, f}.Where dt = {b, b9, h, w, f}.
지원되는 모드Supported Mode
설명Explanation
SRb가 SRa로부터 감산되고; 결과가 SRd에 저장되고, VCSR에 있는 VFLAG 비트가 세트된다.SRb is subtracted from SRa; The result is stored in SRd, and the VFLAG bit in the VCSR is set.
연산calculate
예외exception
오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.
VUNSHFL 언셔플VUNSHFL Unshuffle
포맷format
어셈블러 구문Assembler Syntax
VUNSHFL.dt VRc, VRd, VRa, VRbVUNSHFL.dt VRc, VRd, VRa, VRb
VUNSHFL.dt VRc, VRd, VRa, SRbVUNSHFL.dt VRc, VRd, VRa, SRb
여기서 dt = {b, b9, h, w, f}. .w와 .f는 동일한 연산을 지정한다는 것에 유의한다.Where dt = {b, b9, h, w, f}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 VRb의 내용이 이하에 도시된 바와 같이 벡터 레지스터 VRc:VRd으로 Rb와 언셔플된다.The contents of the vector register VRb are unshuffled with Rb into the vector register VRc: VRd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VUNSHFLH 하이로 언셔플VUNSHFLH High Low Unshuffle
포맷format
어셈블러 구문Assembler Syntax
VUNSHFLH.dt VRd, VRa, VRbVUNSHFLH.dt VRd, VRa, VRb
VUNSHFLH.dt VRd, VRa, SRbVUNSHFLH.dt VRd, VRa, SRb
여기서 dt = {b, b9, h, w, f}. .w와 .f는 동일한 연산을 지정한다는 것에 유의한다.Where dt = {b, b9, h, w, f}. Note that .w and .f specify the same operation.
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 VRa의 내용이 Rb와 언셔플되고, 그 결과의 상부가 이하에 도시된 바와 같이 벡터 레지스터 VRd에 반환된다.The contents of the vector register VRa are unshuffled with Rb, and the top of the result is returned to the vector register VRd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VUNSHFLL 로우로 언셔플Unshuffle VUNSHFLL Low
포맷format
어셈블러 구문Assembler Syntax
VUNSHFLL.dt VRd, VRa, VRbVUNSHFLL.dt VRd, VRa, VRb
VUNSHFLL.dt VRd, VRa, SRbVUNSHFLL.dt VRd, VRa, SRb
여기서 dt = {b, b9, h, w, f}. w와 .f는 동일한 연산을 지정한다는 것에 유의한다Where dt = {b, b9, h, w, f}. Note that w and .f specify the same operation
지원되는 모드Supported Mode
설명Explanation
벡터 레지스터 VRa의 내용이 Rb와 언셔플되고, 그 결과의 하부가 이하에 도시된 바와 같이 벡터 레지스터 VRd로 반환된다.The contents of the vector register VRa are unshuffled with Rb, and the bottom of the result is returned to the vector register VRd as shown below.
연산calculate
예외exception
없음.none.
프로그래밍 주석Programming comments
이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.
VWBACK 기록VWBACK record
포맷format
어셈블러 구문Assembler Syntax
VWBACK.ln SRb, SRiVWBACK.ln SRb, SRi
VWBACK.ln SRb, #IMMVWBACK.ln SRb, #IMM
VWBACK.ln SRb+, SRiVWBACK.ln SRb +, SRi
VWBACK.ln SRb+. #IMMVWBACK.ln SRb +. #IMM
여기서 In = {1, 2, 4, 8}.Where In = {1, 2, 4, 8}.
설명Explanation
그 인덱스가 벡터 데이타 캐쉬에 있는 EA(그 태그가 EA 일치하는 것에 반대되는 것으로)에 의해 지정된 캐쉬 라인은 만일 수정된 데이터를 포함하고 있으면 메모리에 갱신된다. 만일 하나 이상의 캐쉬 라인이 지정되어 있으면, 다음의 순차적인 캐쉬 라인이 수정된 데이타를 포함하면 메모리에 갱신된다. 캐쉬 라인의 수는 다음과 같이 지정된다.The cache line whose index is specified by the EA in the vector data cache (as opposed to its matching EA) is updated in memory if it contains modified data. If more than one cache line is specified, the next sequential cache line is updated in memory if it contains modified data. The number of cache lines is specified as follows.
LN<1:0>=00: 1 64 바이트 캐쉬 라인이 기록된다.LN <1: 0> = 00: 1 A 64 byte cache line is written.
LN<1:0>=01: 2 64 바이트 캐쉬 라인이 기록된다.LN <1: 0> = 01: 2 A 64 byte cache line is written.
LN<1:0>=10: 4 64 바이트 캐쉬 라인이 기록된다.LN <1: 0> = 10: 4 A 64 byte cache line is written.
LN<1:0>=11: 8 64 바이트 캐쉬 라인이 기록된다.LN <1: 0> = 11: 8 A 64 byte cache line is written.
만일 유효 어드레스가 64 바이트 경계상에 있지 않으면, 먼저 64 바이트 경계로 정렬되도록 트렁케이트된다.If the effective address is not on a 64 byte boundary, it is truncated to be aligned first on the 64 byte boundary.
연산calculate
예외exception
무효 데이타 어드레스 예외.Invalid data address exception.
프로그래밍 주석Programming comments
EA<31:0>는 국부 메모리에 있는 바이트를 지칭한다·EA <31: 0> refers to bytes in local memory
VWBACKSP 스크래치 패드로부터 기록Record from VWBACKSP scratch pad
포맷format
어셈블러 구문Assembler Syntax
VWBACKSP.ln SRp, SRb, SRiVWBACKSP.ln SRp, SRb, SRi
VWBACKSP.ln SRp, SRb, #IMMVWBACKSP.ln SRp, SRb, #IMM
VWBACKSP.ln SRp, SRb+, SRiVWBACKSP.ln SRp, SRb +, SRi
VWBACKSP.ln SRp, SRb+, #IMMVWBACKSP.ln SRp, SRb +, #IMM
여기서 In = {l, 2, 4, 8}. VWBACK와 VWBACKSP는 동일한 오피코드를 사용한다는 것에 유의한다.Where In = {l, 2, 4, 8}. Note that VWBACK and VWBACKSP use the same opcode.
설명Explanation
스크래치 패드에서 메모리로 복수의 64 바이트 블럭을 전송한다. 유효 어드레스는 메모리에 시작 어드레스를 제공하고 SRp는 스크래치 패드에 시작 어드레스를 제공한다. 64 바이트 블럭의 수는 다음과 같이 지정된다:Transfer multiple 64 byte blocks from scratch pad to memory. The effective address provides the start address in memory and the SRp provides the start address in the scratch pad. The number of 64-byte blocks is specified as follows:
LN<1:0>=00: 1 64 블럭이 전송된다.LN <1: 0> = 00: 1 64 blocks are transmitted.
LN<1:0>=01: 2 64 블럭이 전송된다.LN <1: 0> = 01: 2 64 blocks are transmitted.
LN<1:0>=10: 4 68 블록이 전송된다.LN <1: 0> = 10: 4 68 blocks are transmitted.
LN<1:0>=11: 8 64 블록이 전송된다.LN <1: 0> = 11: 8 64 blocks are transmitted.
만일 유효 어드레스가 64 바이트 경계상에 있지 않으면, 먼저 64 바이트 경계로 정렬되도록 트렁케이트된다. 만일 SRp에 있는 스크래치 패드 포인터어드레스가 64 바이트 경계상에 있지 않으면, 이도 역시 64 바이트 경계로 정렬되도록 트렁케이트된다. 상기 정렬된 스크래치 패드 포인터 어드레스는 전송된 바이트의 수만큼 증가된다.If the effective address is not on a 64 byte boundary, it is truncated to be aligned first on the 64 byte boundary. If the scratch pad pointer address in SRp is not on a 64 byte boundary, it is also truncated to align on a 64 byte boundary. The aligned scratch pad pointer address is incremented by the number of bytes transmitted.
연산calculate
예외exception
무효 데이타 어드레스 예외.Invalid data address exception.
프로그래밍 주석Programming comments
EA<31:0>는 국부 메모리에 있는 바이트를 지칭한다.EA <31: 0> refers to the bytes in local memory.
VXNOR XNOR(익스클루시브 NOR)VXNOR XNOR (Exclusive NOR)
포맷format
어셈블러 구문Assembler Syntax
VXNOR.dt VRd, VRa, VRbVXNOR.dt VRd, VRa, VRb
VXNOR.dt VRd, VRa, SRbVXNOR.dt VRd, VRa, SRb
VXNOR.dt VRd, VRa, #IMMVXNOR.dt VRd, VRa, #IMM
VXNOR.dt SRd, SRa, SRbVXNOR.dt SRd, SRa, SRb
VXNOR.dt SRd, SRa, #IMMVXNOR.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용이 벡터/스칼라 레지스터 Rb의 내용에 논리적으로 XNOR되고 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are logically XNORed to the contents of the vector / scalar register Rb and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VXOR XOR(익스클루시브 OR)VXOR XOR (Exclusive OR)
포맷format
어셈블러 구문Assembler Syntax
VXOR.dt VRd, VRa, VRbVXOR.dt VRd, VRa, VRb
VXOR.dt VRd, VRa, SRbVXOR.dt VRd, VRa, SRb
VXOR.dt VRd, VRa, #IMMVXOR.dt VRd, VRa, #IMM
VXOR.dt SRd, SRa, SRbVXOR.dt SRd, SRa, SRb
VXOR.dt SRd, SRa, #IMMVXOR.dt SRd, SRa, #IMM
여기서 dt = {b, b9, h, w}.Where dt = {b, b9, h, w}.
지원되는 모드Supported Mode
설명Explanation
벡터/스칼라 레지스터 Ra의 내용이 벡터/스칼라 레지스터 Rb의 내용과 논리적으로 XOR되고 결과가 벡터/스칼라 레지스터 Rd에 저장된다.The contents of the vector / scalar register Ra are logically XORed with the contents of the vector / scalar register Rb and the result is stored in the vector / scalar register Rd.
연산calculate
예외exception
없음.none.
VXORALL 모든 엘리먼트의 XOR(익스클루시브 OR)VXORALL XOR (exclusive OR) of all elements
포맷format
어셈블러 구문Assembler Syntax
VXORALL.dt SRd, VRdVXORALL.dt SRd, VRd
여기서 dt = {b, b9, h, w}. .b와 .b9는 동일한 연산을 지칭한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .b and .b9 refer to the same operation.
지원되는 모드Supported Mode
설명Explanation
VRb에 있는 각 엘리먼트의 최하위 비트가 함께 XOR되고, 1비트 결과가 SRd의 최하의 비트에서 반환된다. 이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.The least significant bit of each element in VRb is XORed together, and a 1 bit result is returned at the least significant bit of SRd. This command is not affected by the element mask.
연산calculate
예외exception
없음.none.
Claims (4)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US69958596A | 1996-08-19 | 1996-08-19 | |
US8/699,585 | 1996-08-19 | ||
US08/699,585 | 1996-08-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980018065A KR19980018065A (en) | 1998-06-05 |
KR100267089B1 true KR100267089B1 (en) | 2000-11-01 |
Family
ID=24809983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970012609A KR100267089B1 (en) | 1996-08-19 | 1997-04-04 | Single instruction multiple data processing with combined scalar/vector operations |
Country Status (6)
Country | Link |
---|---|
JP (1) | JPH10143494A (en) |
KR (1) | KR100267089B1 (en) |
CN (1) | CN1152300C (en) |
DE (1) | DE19735349B4 (en) |
FR (1) | FR2752629B1 (en) |
TW (1) | TW346595B (en) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103002276B (en) * | 2011-03-31 | 2017-10-03 | Vixs系统公司 | Multi-format video decoder and coding/decoding method |
CN104126169B (en) * | 2011-12-22 | 2018-11-09 | 英特尔公司 | Systems, devices and methods for executing absolute difference computation between the corresponding packaged data element of two vector registors |
CN104011664B (en) * | 2011-12-23 | 2016-12-28 | 英特尔公司 | Use super multiply-add (super MADD) instruction of three scalar items |
CN102750133B (en) * | 2012-06-20 | 2014-07-30 | 中国电子科技集团公司第五十八研究所 | 32-Bit triple-emission digital signal processor supporting SIMD |
KR102179385B1 (en) * | 2013-11-29 | 2020-11-16 | 삼성전자주식회사 | Method and processor for implementing instruction and method and apparatus for encoding instruction and medium thereof |
GB2543303B (en) * | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
US10108581B1 (en) * | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11409692B2 (en) * | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
CN114116513B (en) * | 2021-12-03 | 2022-07-29 | 中国人民解放军战略支援部队信息工程大学 | Register mapping method and device from multi-instruction set architecture to RISC-V instruction set architecture |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5081573A (en) * | 1984-12-03 | 1992-01-14 | Floating Point Systems, Inc. | Parallel processing system |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
JPH04336378A (en) * | 1991-05-14 | 1992-11-24 | Nec Corp | Information processor |
US5669013A (en) * | 1993-10-05 | 1997-09-16 | Fujitsu Limited | System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions |
DE69519449T2 (en) * | 1994-05-05 | 2001-06-21 | Conexant Systems Inc | Space pointer data path |
-
1997
- 1997-04-04 KR KR1019970012609A patent/KR100267089B1/en not_active IP Right Cessation
- 1997-08-14 DE DE19735349A patent/DE19735349B4/en not_active Expired - Fee Related
- 1997-08-18 FR FR9710440A patent/FR2752629B1/en not_active Expired - Fee Related
- 1997-08-19 JP JP9222417A patent/JPH10143494A/en active Pending
- 1997-08-19 CN CNB971174059A patent/CN1152300C/en not_active Expired - Fee Related
- 1997-08-19 TW TW086111965A patent/TW346595B/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19980018065A (en) | 1998-06-05 |
DE19735349A1 (en) | 1998-04-02 |
CN1188275A (en) | 1998-07-22 |
FR2752629A1 (en) | 1998-02-27 |
JPH10143494A (en) | 1998-05-29 |
CN1152300C (en) | 2004-06-02 |
TW346595B (en) | 1998-12-01 |
FR2752629B1 (en) | 2005-08-26 |
DE19735349B4 (en) | 2006-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100236527B1 (en) | Single instruction multiple data processing using multiple banks of vector registers | |
US6058465A (en) | Single-instruction-multiple-data processing in a multimedia signal processor | |
EP0927393B1 (en) | Digital signal processing integrated circuit architecture | |
EP1010065B1 (en) | Coprocessor data access control | |
EP0901071B1 (en) | Methods for interfacing a processor to a coprocessor | |
US7937559B1 (en) | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes | |
JP2931890B2 (en) | Data processing device | |
US5958048A (en) | Architectural support for software pipelining of nested loops | |
US5794029A (en) | Architectural support for execution control of prologue and eplogue periods of loops in a VLIW processor | |
US5881257A (en) | Data processing system register control | |
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 | |
KR20170110684A (en) | A vector processor configured to operate on variable length vectors using implicitly classified instructions, | |
US5969975A (en) | Data processing apparatus registers | |
US5561808A (en) | Asymmetric vector multiprocessor composed of a vector unit and a plurality of scalar units each having a different architecture | |
WO2003098379A2 (en) | Method and apparatus for adding advanced instructions in an extensible processor architecture | |
CN101802779A (en) | Processor with reconfigurable floating point unit | |
US5053986A (en) | Circuit for preservation of sign information in operations for comparison of the absolute value of operands | |
KR100267089B1 (en) | Single instruction multiple data processing with combined scalar/vector operations | |
EP0982655A2 (en) | Data processing unit and method for executing instructions of variable lengths | |
KR100267092B1 (en) | Single instruction multiple data processing of multimedia signal processor | |
US5768553A (en) | Microprocessor using an instruction field to define DSP instructions | |
US6925548B2 (en) | Data processor assigning the same operation code to multiple operations | |
EP0927390B1 (en) | Processing of conditional select and move instructions | |
JP2001501001A (en) | Input operand control in data processing systems | |
KR20000048530A (en) | Data processing apparatus registers |
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: 20120629 Year of fee payment: 13 |
|
FPAY | Annual fee payment |
Payment date: 20130701 Year of fee payment: 14 |
|
LAPS | Lapse due to unpaid annual fee |