KR100267089B1 - Single instruction multiple data processing with combined scalar/vector operations - Google Patents

Single instruction multiple data processing with combined scalar/vector operations Download PDF

Info

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
Application number
KR1019970012609A
Other languages
Korean (ko)
Other versions
KR19980018065A (en
Inventor
에이. 모하메드 모아타즈
박 헌철
누옌 르
Original Assignee
윤종용
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자주식회사 filed Critical 윤종용
Publication of KR19980018065A publication Critical patent/KR19980018065A/en
Application granted granted Critical
Publication of KR100267089B1 publication Critical patent/KR100267089B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/24Systems 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

PURPOSE: A method for processing signal instruction multiple data with a scalar/vector computation is provided to use a single instruction multiple data architecture having a RISC type instruction set, so that a programmer easily adapts to a programming environment of a vector processor based on a user friendly programming environment of a universal processor. CONSTITUTION: A multimedia processor(100) includes a processing core(105) which includes a universal processor(110) and a vector processor(120). The processing core(105) is connected with the remaining portion of the multimedia processor(100) through a cache sub-system(130) which includes a SRAM(160 and 190), a ROM(170) and a cache controller(180). The cache controller(180) configures a SRAM(160) based on an instruction cache(162) and a data cache(164) for the processor(110) and configures the SRAM(190) based on the instruction processor(192) and the data cache(194) for the vector processor(120). An on-chip ROM(170) includes a data and instruction for the processor(110) and is configured as a cache. The cache sub-system(130) is connected with the processors(110 and 120) and is oriented to two system buses(140 and 150) and operates as a cache and switching station for the processors(110 and 120) and is connected with the device buses(140 and 150).

Description

스칼라/벡터 연산이 조합된 단일 명령 복수 데이타 처리Single instruction multiple data processing with a combination of scalar / vector operations

본 발명은 디지탈 신호 프로세서에 관한 것으로, 특히 비디오 및 오디오 인코딩 및 디코딩과 같은 멀티미디어 기능을 위해 명령마다 복수 데이타 엘리먼트의 병렬 처리를 위한 프로세서에 관한 것이다.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: cache subsystem 140, 150: system bus

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: instruction cache 164, 194: data cache

180 : 캐쉬 제어부 220 : 디코더180: cache control unit 220: decoder

230 : 스케쥴러 310 : 주 명령어 버퍼230: scheduler 310: main command buffer

312 : 보조 명령어 버퍼 340, 342, 344 : 레지스터312: auxiliary instruction buffer 340, 342, 344: register

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 multimedia processor 100 includes a processing core 105 that includes a general purpose processor 110 and a vector processor 120. Processing core 105 is connected to the remainder of multimedia processor 100 via cache subsystem 130, which includes SRAM 160 and 190, ROM 170, and cache controller 180. The cache controller 180 may configure the SRAM 160 as the instruction cache 162 and the data cache 164 for the processor 110, and the instruction cache 192 and the data cache for the vector processor 120. SRAM 190 can be configured as 194.

온-칩 ROM(170)은 프로세서(110)를 위해 데이타와 명령어를 포함하고 역시 캐쉬로서 컨피그될 수 있다. 예시적인 실시예에서, ROM(170)은 : 리셋 및 초기화 프로시져: 자기-시험 진단 프로시져: 인터럽트 및 예외 핸들러: 및 사운드블러스트 에뮬레이션을 위한 서브루틴: V, 34 모뎀 신호 프로세싱을 위한 서브루틴: 일반적인 텔레포니 기능: 1-D 및 3-D 그래픽스 서르루틴 라이브러리: 및 MPEG-1, MPEG-2 H.261, H.263, G.728 및 G.723과 같은 오디오 및 비디오 표준을 위한 서브루틴 라이브러리를 포함한다.On-chip ROM 170 includes data and instructions for processor 110 and may also be configured as a cache. In an exemplary embodiment, ROM 170 includes: reset and initialization procedures: self-test diagnostic procedures: interrupt and exception handlers: and subroutines for soundblast emulation: V, 34 subroutines for modem signal processing: general Telephony features: 1-D and 3-D graphics surroutine libraries: and subroutine libraries for audio and video standards such as MPEG-1, MPEG-2 H.261, H.263, G.728, and G.723. Include.

캐쉬 서브시스템(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)의 동작을 보다 상세히 설명한다.Cache subsystem 130 is connected to processors 110 and 120, directed to two system buses 140 and 150, and acts as both a cache and switching station for processors 110 and 120, and device buses 140 and 150). System bus 150 operates at a high clock frequency and provides a memory controller 158 that provides an interface for external local memory, a local bus of a host computer, direct memory access, and multiple analog-to-digital and digital-to-analog converters, respectively. , Local bus interface 156, DMA controller 154, and device interface 152. Connected to bus 140 are system timer 142, UART (Universal Asynchronous Receiver Transceiver) 144, bitstream processor 146, and interrupt controller 148. The patent application incorporated herein by reference, entitled “Multiprocessor Operations in Multimedia Signal Processors” and “Methods and Apparatuses for Processing Video Data,” discloses that the processors 110 and 120 have a cache subsystem 130. And the operation of example device and cache subsystem 130 for accessing buses 140 and 150 in more detail.

프로세서(110 및 120)는 개별적인 프로그램 스래드를 실행하고 그들에 할당된 특정 작업의 보다 효율적인 실행을 위해 구조적으로 다르다. 프로세서(110)는 주로 실시간 연산 시스템의 실행과 같은 제어 기능 및 많은 각각의 연산을 필요로 하지 않는 유사한 기능을 위한 것이다. 따라서, 프로세서(110)는 고도의 연산력을 필요로 하지 않으며, 종래의 범용 프로세서 아키텍춰를 이용하여 구현될 수 있다. 벡터 프로세서(120)는 대부분 멀티미디어 프로세싱에 공통인 데이타 블럭에 대한 반복적인 연산을 포함하는 숫자 크러싱(number crushing)을 수행한다. 고도의 연산력과 비교적 간단한 프로그래밍을 위해, 벡터 프로세서(120)는 SIMD(Single Instruction Multimedia Data) 아키텍춰를 가지며, 예시적인 실시예에서, 벡터 프로세서(120)에서 대부분의 경로는 벡터 데이타 조작을 지원하기 위해 288 또는 576 비트 폭이다. 부수적으로, 벡터 프로세서(120)를 위한 명령어 세트는 특히 멀티미디어 문제에 적합한 명령어를 포함한다.Processors 110 and 120 are structurally different for executing individual program threads and for more efficient execution of specific tasks assigned to them. Processor 110 is primarily for control functions, such as the execution of a real-time computing system, and similar functions that do not require many individual operations. Thus, the processor 110 does not require a high level of computing power and can be implemented using a conventional general purpose processor architecture. The vector processor 120 performs number crushing, which includes repetitive operations on data blocks that are common to multimedia processing. For high computational power and relatively simple programming, the vector processor 120 has a single instruction multimedia data (SIMD) architecture, and in an exemplary embodiment, most of the paths in the vector processor 120 support vector data manipulation. 288 or 576 bits wide. Incidentally, the instruction set for the vector processor 120 includes instructions which are particularly suitable for multimedia problems.

예시적인 실시예에서, 프로세서(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, processor 110 is a 32-bit RISC processor operating at 40 MHz and fits into the architecture of an ARM 7 processor that includes a set of registers as defined by the ARM 7 standard. The architecture and instructions set up for the ARM 7 RISC processor are described in "ARM 7 DM Data Sheet", Article No.: Advance RISC Machines Ltd. It is described in ARM DDI 0010G available from. The ARM 7 DM data sheet is incorporated herein by reference in its entirety. Appendix A describes extensions of the ARM 7 instructions in an example 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는 디폴트로 레지스터 번호가 각 뱅크로부터의 레지스터를 포함하는 이중 크기 벡터 레지스터를 식별하는 지를 가리킨다. 명령어의 구문은 스칼라 레지스터를 식별하는 레지스터 번호로부터 벡터 레지스터를 식별하는 레지스터 번호를 구별한다.Vector processor 120 manipulates both vectors and scalars. In an exemplary embodiment, the vector data processor 120 is configured with a pipelined RISC engine operating at 80 MHz. The register of vector processor 120 has a 32 bit scalar register, a 32 bit special purpose register, two banks of 288 bit vector registers, and two vector accumulator registers of dual size (ie, 576 bits). Appendix C describes a register set for an example embodiment of vector processor 120. In an exemplary embodiment, processor 120 is identified in an instruction by 5-bit register numbers ranging from 0 to 31. There are also 64 288-bit vector registers consisting of two banks of 32 vector registers. Each vector register can be identified as a 1 bit bank number (0 or 1) and a 5 bit vector register number ranging from 0 to 31. Most instructions access the vector register in the current bank, indicated by the default bank bit CBANK stored in the control register VCSR of the vector processor 120. The second control bit VEC 4 by default indicates whether the register number identifies a dual size vector register containing registers from each bank. The syntax of the instruction distinguishes the register number identifying the vector register from the register number identifying the scalar register.

각각의 벡터 레지스터는 프로그램가능한 크기의 데이타 엘리먼트로 파티션될 수 있다. 표 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

Figure kpo00001
Figure kpo00001

부록 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 int 9 data type, the 9-bit byte is packed sequentially into the 288-bit vector register, but for other data types, every 9th bit of the 288-bit vector register is not used. The 288 bit vector register can hold 328 bit or 9 bit integer data elements, 16 16 bit integer data elements, or 8 32 bit integer or floating point elements. Incidentally, two vector registers may be combined in a data element of a double sized vector. In an exemplary embodiment of the present invention, by setting the control bit VEC 64 in the control and status register VCSR, the dual size (576 bits) is placed in mode VEC 64, which is the default size of the vector register.

또한 멀티미디어 프로세서(100)는 프로세서(110 및 120) 모두에 액세스할 수 있는 32 비트 확장 레지스터(115)의 세트를 수용한다. 부록 B 는 본 발명의 예시적인 실시예에서 확장 레지스터 세트 및 그 기능을 설명한다. 벡터 프로세서 (120)의 확장 레지스터 및 스칼라 및 특수 목적 레지스터는 몇몇 환경에서 프로세서 (110)에 액세스할 수 있다. 두개의 특수 "사용자" 확장 레지스터는 두개의 판독 포트를 가짐으로서 프로세서(110 및 120)가 레지스터를 동시에 판독할 수 있다. 다른 확장 레지스터는 동시에 액세스될 수 없다.The multimedia processor 100 also houses a set of 32-bit extension registers 115 that can access both processors 110 and 120. Appendix B describes an extension register set and its function in an exemplary embodiment of the present invention. The extension registers and scalar and special purpose registers of the vector processor 120 can access the processor 110 in some circumstances. Two special "user" extension registers have two read ports so that processors 110 and 120 can read the registers simultaneously. Other extension registers cannot be accessed at the same time.

벡터 프로세서(120)는 벡터 프로세서(120)가 실행중 또는 아이들인 지를 가리키는 두개의 선택적인 상태 VP_RUN 및 VP_IDLE를 갖는다. 프로세서(110)는 벡터 프로세서(120)가 상태 VP_IDLE에 있을 때 벡터 프로세서(120)의 스칼라 또는 특수 목적 레지스터를 판독 또는 기록할 수 있지만, 벡터 프로세서(120)가 상태 VP_RUN에 있는 동안 벡터 프로세서(120)의 레지스터를 판독 또는 기록하는 프로세서(110)의 결과는 정의되어 있지 않다.Vector processor 120 has two optional states VP_RUN and VP_IDLE indicating whether vector processor 120 is running or idle. Processor 110 may read or write a scalar or special purpose register of vector processor 120 when vector processor 120 is in state VP_IDLE, while vector processor 120 may be in state VP_RUN while vector processor 120 is in state VP_RUN. The result of the processor 110 that reads or writes a register of) is not defined.

프로세서(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 ARM 7 instruction set for the processor 110 includes instructions to access the extension registers and scalar or special purpose registers of the vector processor 120. The instructions MFER and MFEP move data from the scalar or special purpose registers of the extension register and the vector processor 120 to the general purpose registers of the processor 110, respectively. The instructions MTER and MTEP move data from the general register of the processor 110 to the expansion register and the vector processor 120 and to the scalar or special purpose register, respectively. The TESTSET instruction reads an extension register and sets bit 30 of the extension register to all ones. The instruction TESTSET facilitates user / producer synchronization by setting bit 30 to signal processor 120 from which processor 110 has read (or used) the results. Other instructions for STARTVP and INTVP control the operating state of the vector processor 120.

프로세서(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 processor 110 acts as a master processor to control the operation of the vector processor 120. The use of asynchronous partitioning of control between processors 110 and 120 simplifies the synchronization problem of processors 110 and 120. Processor 110 initializes vector processor 120 by writing an instruction address to a program counter for vector processor 120 while vector processor 120 is in state VP_IDLE. Processor 110 then executes a STARTVP instruction that changes vector processor 120 to state VP_RUN. In state VP_RUN, vector processor 120 executes such instructions in parallel with processor 110 while fetching instructions through cache subsystem 130 and continuing execution of its program. When started, the vector processor 120 continues executing until it encounters an exception and, if the appropriate condition is met, executes a VCJOIN or VCINT instruction or is interrupted by the processor 120. The vector processor 120 writes the result to the extension register when the vector processor 120 reenters the state VP_IDLE and writes the result to the shared address space of the processors 110 and 120 or writes the result to the processor 110. The result of program execution is passed to the processor 120 by placing it in a scalar or special purpose register that is accessed by.

벡터 프로세서(120)는 그 자신의 예외를 처리하지 않는다. 예외를 유발하는 명령어를 실행하면, 벡터 프로세서(120)는 상태 VP_IDLE에 진입하고 직접 라인을 통해 인터럽트 요구를 프로세서(110)에 시그날한다. 벡터 프로세서(120)는 프로세서(110)가 다른 STARTVP 명령어를 실행할 때까지 상태 VP_IDLE에 남는다. 프로세서(110)는 예외의 성질을 판단하기 위해 벡터 프로세서(120)의 레지스터 VISRC를 판독하고, 벡터 프로세서(120)를 다시 초기화시킴으로서 가능한 한 예외를 처리한 다음, 필요하다면 예외를 재시작하기 위해 벡터 프로세서(120)를 다이렉트할 책임이 있다.Vector processor 120 does not handle its own exception. Upon executing the instruction causing the exception, vector processor 120 enters state VP_IDLE and signals an interrupt request to processor 110 via a direct line. Vector processor 120 remains in state VP_IDLE until processor 110 executes another STARTVP instruction. The processor 110 reads the register VISRC of the vector processor 120 to determine the nature of the exception, handles the exception as much as possible by reinitializing the vector processor 120, and then restarts the exception if necessary. Responsible for directing 120.

프로세서(110)에 의해 실행된 INTVP 명령어는 벡터 프로세서(120)로 하여금 아이들 상태 VP_IDLE로 진입하게 한다. 예를 들어, 명령어 INTVP는 비디오 디코딩과 같은 하나의 작업에서 사운드 카드 에뮬레이션과 같은 다른 작업으로 벡터 프로세서를 전환시키는 멀티태스킹 시스템에 사용될 수 있다.The INTVP instruction executed by processor 110 causes vector processor 120 to enter idle state VP_IDLE. For example, the instruction INTVP can be used in a multitasking system that switches the vector processor from one task, such as video decoding, to another, such as sound card emulation.

벡터 프로세서 명령어 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 vector processor 120 if the condition indicated by the instruction is satisfied, place the vector processor 120 in state VP_IDLE and interrupt the request until such a request is masked. Flow control instructions issued to the processor 110. The program counter (special purpose register) of the vector processor 120 points to the instruction address after the VCINT or VCJOIN instruction. The processor 110 checks the interrupt source register VISRC of the vector processor 120 to determine whether the VCINT or VCJOIN instruction caused the interrupt request. Since vector processor 120 has a larger data bus and is more efficient at storing and restoring its registers, software executed by vector processor 120 must save and restore the registers during syntax conversion. The integrated patent pending invention titled "Efficient Syntax Storage and Recovery in Microprocessors" describes an exemplary system for syntax conversion.

도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 vector processor 120 of FIG. The vector processor 120 includes an instruction fetch unit (IFU) 210, a decoder 220, a scheduler 230, an execution data path 240, and a load / store unit (LSU) 250. IFU 210 fetches instructions and processes flow control instructions such as branches. The instruction decoder 220 decodes one instruction per cycle in the order of arrival from the IFU 210, and writes the decoded field value from the instruction to the FIFO of the scheduler 230. The scheduler 230 selects the field value issued to the execution control register if necessary for the execution stage of the operation. The issue selection depends on the availability and dependence of processing resources, such as execution data path 240 or load / store 250. Execution data path 240 executes logic / arithmetic instructions to manipulate vector or scalar data. The load / store 25 executes load / store instructions for accessing the address space of the vector processor 120.

도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 IFU 210 that includes an instruction buffer divided into a primary instruction buffer 310 and an auxiliary instruction buffer 312. Main buffer 310 accommodates eight consecutive instructions including instructions corresponding to the current program count. The auxiliary buffer 312 accommodates eight instructions that immediately follow the instructions of the buffer 310. IFU 210 also includes a branch target buffer 314 that contains eight consecutive instructions that include the target of other flow control instructions in buffer 310 or 312. In an exemplary embodiment, vector processor 120 uses a RISC type instruction set where each instruction is 32 bits long, and buffers 310, 312, and 314 are cached over a 256 bit instruction bus with an 8 x 32 bit buffer. Connected to subsystem 130. IFU 210 may load eight instructions in cache subsystem 130 into any buffer 310, 312, or 314 in a single clock cycle. Registers 340, 342, and 344 indicate the base addresses for instructions loaded into buffers 310, 312, and 314, respectively.

멀티플렉서(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)에 즉시 저장된다.Multiplexer 332 selects the current instruction from main instruction buffer 310. If the current instruction is not a flow control instruction and the instruction stored in the instruction register 330 proceeds to the decode stage of execution, the current instruction is stored in the instruction register 330 and the program count is incremented. After selecting the last instruction in buffer 310 by incrementing the program count, the next set of 8 instructions is loaded into buffer 310. If buffer 312 contains some eight instructions, the contents of buffer 312 and register 342 are immediately moved to buffer 310 and register 340, and eight or more instructions are cache system 130. Is prefetched into the auxiliary buffer 312 from. Adder 350 determines the address of the next instruction set and the offset selected by multiplexer 352 from the base address in register 342. The resulting address from adder 350 is stored in register 342 after register 342 has moved or moved to register 340. The calculated address is also passed to the cache subsystem 130 as a request for eight instructions. If the previous call to the cache control system 130 did not provide the next 8 instructions to the buffer 312 requested by the buffer 310, the previously requested instruction was buffered when received from the cache subsystem 130. Are stored immediately at 310.

만일 현재의 명령어가 흐름 제어 명령어이면, IFU(210)는 흐름 제어 명령어에 대한 조건을 평가하고 흐름 제어 명령어의 뒤에 오는 프로그램 카운트를 갱신함으로서 명령어를 처리한다. 조건을 바꿀 수 있는 이전 명령어가 왼료되지 않았기 때문에 만일 조건이 결정되지 않으면 IFU(210) 는 보류된다. 만일 분기가 취해지지 않으면, 프로그램 카운터는 증가되고 다음 명령어가 상술된 바와 같이 선택된다. 만일 분기가 취해지고 분기 목표 버퍼(314)가 분기의 목표를 포함하고 있으면, 버퍼(314) 및 레지스터(344)의 내용이 버퍼(310) 및 레지스터(340)로 이동되어, IFU(210)는 서브시스템(130)으로부터 명령어를 대기하지 않고 명령어를 디코더(220)에 계속 제공할 수 있다.If the current instruction is a flow control instruction, IFU 210 processes the instruction by evaluating the condition for the flow control instruction and updating the program count following the flow control instruction. The IFU 210 is suspended if the condition is not determined because the previous instruction that could change the condition has not been completed. If no branch is taken, the program counter is incremented and the next instruction is selected as described above. If a branch is taken and branch target buffer 314 contains the target of the branch, the contents of buffer 314 and register 344 are moved to buffer 310 and register 340 so that IFU 210 Instructions may continue to be provided to decoder 220 without waiting for instructions from subsystem 130.

분기 목표 버퍼(314)에 대한 명령어를 프리훼치하기 위해, 스캐너(320)는 버퍼(310 및 312)를 스캔하여 현재의 프로그램 카운트의 뒤에 오는 다음 흐름 제어 명령어를 찾는다. 만일 흐름 제어 명령어가 버퍼(310 또는 312)에서 발견되면, 스캐너(320)는 명령어를 수용하고 있는 버퍼(310 또는 312)의 베이스 어드레스로부터 흐름 제어 명령어의 목표 어드레스를 포함하는 8개의 명령어의 정렬된 세트로 오프셋을 결정한다. 멀티플렉서(352 및 354)는 흐름 제어 명령어로부터의 오프셋과 레지스터(340 또는 342)로부터의 베이스 어드레스를 버퍼(314)에 대해 새로운 베이스 어드레스르 생성하는 가산기(350)로 공급한다. 새로운 베이스 어드레스는 다음에 분기 목표 버퍼(314)에 대해 8 명령어를 공급하는 캐쉬 서브시스템(130)으로 전달된다.To prefetch instructions for branch target buffer 314, scanner 320 scans buffers 310 and 312 to find the next flow control instruction that follows the current program count. If a flow control instruction is found in the buffer 310 or 312, the scanner 320 sorts eight instructions from the base address of the buffer 310 or 312 containing the instruction, including the target address of the flow control instruction. Determine the offset with the set. Multiplexers 352 and 354 supply an offset from the flow control instruction and a base address from register 340 or 342 to adder 350 which generates a new base address for buffer 314. The new base address is then passed to the cache subsystem 130 which supplies 8 instructions to the branch target buffer 314.

"감소 및 조건 분기" 명령어 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 IFU 210 finds an instruction that is not a flow control instruction, that instruction passes from the instruction register 330 to the decoder 220 there.

디코더(220)는 도4에 도시된 바와 같이 스케쥴러(230)의 FIFO 버퍼(410)이 필드에 제어 값을 기록함으로서 명령어를 디코드한다. FIFO 버퍼(410)는 네 행의 플립-플롭을 수용할 수 있는데, 이들 각각은 한 명령어의 실행을 제어하기 위한 5 필드의 정보를 수용할 수 있다. 행 0 내지 3 은 가장 오래된 것에서 가장 최근의 명령어에 대한 정보를 각각 보유하고, FIFO 버퍼(410)의 정보는, 명령어가 완료됨에 따라 오래된 정보가 제거될 때 보다 낮은 행으로 쉬프트 다운한다. 스케쥴러(230)는 실행 레지스터(421 내지 427)를 수용하고 있는 제어파이프(420)로 로드될 명령어의 필요한 필드를 선택함으로서 실행 스테이지에 명령어를 발행한다. 대부분의 명령어는 순서에 어긋난 발행 및 실행으로 스케쥴될 수 있다. 특히, 로드/저장 연산과 논리/산술 연산의 순서는 로드/저장 연산 및 논리/산술 연산 간에 오퍼런드 종속성이 존재하지 않는 한 임의적이다. FIFO 버퍼(410)의 필드 값의 비교는 임의의 오퍼런드 종속성이 존재하는 지를 가리킨다.The decoder 220 decodes the instruction by writing the control value in the field of the FIFO buffer 410 of the scheduler 230 as shown in FIG. The FIFO buffer 410 can accommodate four rows of flip-flops, each of which can contain five fields of information for controlling the execution of one instruction. Rows 0 through 3 each hold information about the oldest to the most recent command, and the information in the FIFO buffer 410 shifts down to the lower row when the old information is removed as the command completes. The scheduler 230 issues an instruction to the execution stage by selecting the required field of the instruction to be loaded into the control pipe 420 containing the execution registers 421-427. Most instructions can be scheduled for issuing and executing out of order. In particular, the order of load / store operations and logic / arithmetic operations is arbitrary as long as there are no operand dependencies between load / store operations and logic / arithmetic operations. The comparison of field values in the FIFO buffer 410 indicates whether any operand dependencies exist.

도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 vector processor 120. In instruction fetch stage 511, IFU 210 fetches an instruction as described above. The fetch stage requires one clock cycle unless the IFU 210 is suspended by a delay in the cache subsystem 130 that provides pipeline delays, outstanding branch conditions, or prefetched instructions. In the decode stage 512, the decoder 220 decodes an instruction from the IFU 210 and writes information about the instruction to the scheduler 230. Decode stage 512 also requires one clock cycle as long as no row of FIFO 410 is available for a new operation. The operation may occur to the control pipe 420 during the first cycle in the FIFO 410, but may be delayed by the issuance of an older margin.

실행 데이타 경로(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)가 한 클럭 사이클보다 길도록 두개 레지스터 이상으로부터 데이타를 필요로 한다.Execution data path 240 performs register-to-register operations and supplies data and addresses by load / store operations. 6A shows a block diagram of an embodiment of an execution data path 240 and is described in conjunction with execution stages 514, 515 and 515. Execution register 421 provides signals that identify two registers to register file 610 read in clock cycles during read stage 514. 6B shows a block diagram of a register file 610. Register file 610 has two read and two write ports to accommodate two reads and two writes each clock cycle. Each port includes select circuits 612, 614, 616 and 618 and 288 bit data buses 613, 615, 617 and 619. Selection circuits such as circuits 612, 614, 616, and 618 are known in the art and include address signals WRADDR1, WRADDR2, RDADDR1 or RDADDR2, which decoder 220 derives from a 5-bit register number that is typically extracted from an instruction. The bank bits from the instruction or control status register VCSR and instruction syntax indicating whether the register is a vector register or a scalar register are used. The data read may be routed through the multiplexer 656 to the load / store 250 or through the multiplexers 622 and 624 through the multiplier 640, the arithmetic logic 620, or the accumulator 640. Most of the operations read two registers, and the read stage 514 is completed in one cycle. However, some instructions, such as multiply and add instructions VMAD and instructions for manipulating double sized vectors, require data from more than two registers so that read stage 514 is longer than one clock cycle.

실행 스테이지(515) 동안, 곱셈기(620), 산술 논리부(630) 및 누산기(640)는 레지스터 화일(610)로부터 이전에 판독된 데이타를 처리한다. 실행 스테이지 (515)는 소정의 데이타를 판독하는데 다수의 사이클이 필요하다면 판독 스테이지 (514)를 오버랩할 수 있다. 실행 스테이지(515)의 기간은 처리된 데이타 엘리먼트의 유형(정수 또는 부동 소수점) 및 양(판독 사이클의 수)에 의존한다. 실행 레지스터 (422, 423 및 425)로부터의 신호는 실행 스테이지 동안 수행된 첫번째 연산 동안 산술 논리부(630), 누산기(640) 및 곱셉기(620)로의 입력 데이타를 제어한다. 실행 레지스터(432, 433 및 435)로부터의 신호는 실행 스테이지(515) 동안 수행된 두번째 연산을 제어하다.During execution stage 515, multiplier 620, arithmetic logic 630 and accumulator 640 process previously read data from register file 610. Execution stage 515 may overlap read stage 514 if multiple cycles are required to read a given data. The duration of execution stage 515 depends on the type (integer or floating point) and amount (number of read cycles) of data elements processed. Signals from the execution registers 422, 423, and 425 control input data to the arithmetic logic 630, accumulator 640, and multiplier 620 during the first operation performed during the execution stage. The signals from the run registers 432, 433, and 435 control the second operation performed during the run stage 515.

도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 multiplier 620 and ALU 630. Multiplier 620 is an integer multiplier that includes eight independent 36x36 bit multipliers 626. Each multiplier 626 includes four 9x9 bit multipliers connected together by a control circuit. For 8 bit and 9 bit data element sizes, the control signal from scheduler 230 is separated from the four 9x9 bit multipliers so that each multiplier 626 performs four multiplications, and multiplier 620 cycles. While 32 independent multiplications are performed. For 16 bit data elements, the control circuitry connects pairs of 9x9 bit multipliers working together, and multiplier 620 performs 16 parallel multiplications. For the 32 bit integer data element type, eight multipliers 626 perform eight parallel multiplications per clock cycle. The result of the multiplication gives 576 bits for the 9 bit data element size and 512 bits for the other data size.

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 multiplier 620 for two clock cycles. ALU 630 includes eight independent 36-bit ALUs 636. Each ALU 636 includes a 32 x 32 bit floating point portion for floating point addition and multiplication. Ancillary circuits perform integer shifts, arithmetic and logic functions. For integer operations, each ALU 636 includes four parts that can perform independent 8-bit and 9-bit operations and can be linked together in two or four sets for 16-bit and 32-bit integer data elements. .

누산기(640)는 결과를 누산하고 중간 결과에서 보다 높은 정확도를 위해 두개의 576 비트 레지스터를 포함한다.Accumulator 640 accumulates the result and includes two 576-bit registers for higher accuracy in intermediate results.

기록 스테이지(516) 동안, 실행 스테이지로부터의 결과는 레지스터 화일 (610)에 저장된다. 두개의 레지스터는 단일 클러 사이클 동안 기록될 수 있고, 입력 곱셈기(602 및 605)는 기록될 두개의 데이타 값을 선택한다. 연산을 위한 기록 스테이지(516)의 기간은 연산의 결과로서 기록될 데이타의 양과 레지스터 화일(610)에 기록함으로서 로드 명령어를 완료할 수 있는 LSU(250)으로부터의 완료에 따른다. 실행 레지스터(426 및 427)로부터의 신호는 논리부(630), 누산기(640) 및 곱셈기(620)로부터의 데이타가 기록되는 레지스터를 선택한다.During the write stage 516, the results from the run stage are stored in the register file 610. Two registers can be written for a single clock cycle, and input multipliers 602 and 605 select the two data values to be written. The duration of the write stage 516 for the operation depends on the amount of data to be written as a result of the operation and the completion from the LSU 250 that can complete the load instruction by writing to the register file 610. The signals from the execution registers 426 and 427 select the registers into which data from the logic unit 630, accumulator 640 and multiplier 620 is written.

도5b는 로드 명령의 실행을 위한 실행 파이프라인(520)을 도시한다. 실행 파이프라인(520)을 위한 명령어 훼치 스테이지(511), 디코드 스테이지(512) 및 발생 스테이지(513)는 레지스터-대-레지스터 연산에 대해 서술된 것과 동일하다. 판독 스테이지(514)는 또한 실행 데이타 경로(240)가 레지스터 화일(610)로부터의 데이타를 사용하여 캐쉬 서브시스템(130)에의 호출을 위한 어드레스를 결정한다는 것을 제외하고 상술된 것과 동일하다. 어드레스 스테이지(525)에서, 멀티플렉서(652, 654 및 656)는 실행 스테이지(526 및 527)를 위해 로드/저장부(250)에 제공되는 어드레스를 선택한다. 로드 연산을 위한 정보는 스테이지(526 및 527) 동안 FIFO (410)에 유지되는 반면에 로드/저장부(250)는 연산을 취급한다.5B shows execution pipeline 520 for execution of load instructions. The instruction fetch stage 511, decode stage 512, and generation stage 513 for the execution pipeline 520 are the same as described for register-to-register operations. Read stage 514 is also the same as described above except execution data path 240 uses the data from register file 610 to determine an address for a call to cache subsystem 130. At address stage 525, multiplexers 652, 654, and 656 select addresses provided to load / store 250 for execution stages 526 and 527. Information for the load operation is maintained in the FIFO 410 during stages 526 and 527 while the load / store 250 handles the operation.

도7은 로드/저장부(250)의 실시예를 도시하다. 스테이지(256) 동안, 스테이지(525)에서 결정된 어드레스로부터의 데이타를 위해 캐쉬 서브시스템(130)에 대해 호출된다. 예시적인 실시예는 프로세서(110 및 120)를 포함하는 다수의 디바이스들이 캐쉬 서브시스템(130)을 통해 국부 어드레스 공간을 액세스할 수 있는 트랜잭션에 근거한 캐쉬 호출을 이용한다. 요청된 데이타는 캐쉬 서브시스템(130)을 호출한 후 몇 사이클 동안 이용할 수 없지만, 로드/저장부(250)는 다른 호출이 계류하는 동안 캐쉬 서브시스템을 호출할 수 있다. 따라서, 로드/저장부(250)는 보류되지 않는다. 요청된 데이타를 제공하기 위해 캐쉬 서브시스템(130)에 필요한 클럭 사이클의 수는 데이타 캐쉬(194)를 히트 또는 미스하였는 가에 따른다.7 illustrates an embodiment of a load / store 250. During stage 256, it is called for cache subsystem 130 for data from the address determined at stage 525. An example embodiment utilizes a transaction based cache call where multiple devices, including processors 110 and 120, can access the local address space through cache subsystem 130. The requested data is not available for several cycles after calling cache subsystem 130, but load / store 250 may call the cache subsystem while another call is pending. Thus, the load / store 250 is not suspended. The number of clock cycles required for cache subsystem 130 to provide the requested data depends on whether data cache 194 has been hit or missed.

드라이브 스테이지(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, cache subsystem 130 asserts a data signal to load / store 250. Cache subsystem 130 may provide 256 bits (32 bytes) of data per cycle to load / store 250. The byte sorter 710 aligns each 32 byte into its corresponding 9 bit storage location to provide a 288 bit value. The 288 bit format is sometimes easy for multimedia applications such as MPEG encoding and decoding using 9 bit data elements. The 288 bit value is written to read data buffer 720. For write stage 528, scheduler 230 writes field 4 to Execute register 426 or 427 in FIFO buffer 410 to write the amount of 288 bits from data buffer 720 to register file 610. Haul)

도5c는 저장 명령어의 실행을 위한 실행 파이프라인(530)을 도시한다. 실행 파이프라인(530)을 위한 명령어 훼치 스테이지(511), 디코드 스테이지(512) 및 발생 스테이지(513)는 상술된 바와 동일하다. 판독스테이지(514)는 또한 판독 스테이지가 자장될 데이타 및 어드레스 산출을 위한 데이타를 판독한다는 점을 제외하고 상술된 바와 같다. 저장될 데이타는 로드/저장부(250)의 데이타 버퍼(730)에 기록된다. 멀티플렉서(740)는 9 비트 바이트를 제공하기 위한 포맷인 데이타를 8 비트 바이트를 갖는 종래의 포맷으로 변화한다. 버퍼(730)로부터의 변환된 데이타 및 어드레스 산출 스테이지(525)로부터의 연관된 어드레스는 SRAM 스테이지(536) 동안 캐쉬 서브시스템(130)에 병렬로 보내진다.5C shows an execution pipeline 530 for execution of stored instructions. The instruction fetch stage 511, decode stage 512, and generation stage 513 for the execution pipeline 530 are the same as described above. The read stage 514 is also as described above except that the read stage reads the data to be magnetized and the data for address calculation. The data to be stored is recorded in the data buffer 730 of the load / store unit 250. Multiplexer 740 changes the data, which is a format for providing 9 bit bytes, to a conventional format having 8 bit bytes. The translated data from the buffer 730 and the associated address from the address calculation stage 525 are sent in parallel to the cache subsystem 130 during the SRAM stage 536.

벡터 프로세서(120)의 예시적인 실시예에서, 각 명령어는 32 비트 길이이고, 도8에 도시된 9개의 포맷중한 포맷을 가지며 REAR, REAI, RRRM5, RRRR, RICT, RRRM9, RRRM9* 및 RRRM9**의 표식을 갖는다. 부록 E는 벡터 프로세서(120)를 위한 명령어 세트를 설명한다.In an exemplary embodiment of the vector processor 120, each instruction is 32 bits long, has nine of the formats shown in FIG. 8, and has REAR, REAI, RRRM5, RRRR, RICT, RRRM9, RRRM9 *, and RRRM9 * It has a * sign. Appendix E describes an instruction set for the vector processor 120.

효율적인 어드레스를 결정할 때 스칼라 레지스터를 이용하는 일부 로드, 저장 및 캐쉬 연산은 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 RRRM 5 format is for instructions with two source operations and one destination operation. These instructions have a 5-bit intermediate value with either three register funds or two register operations. As shown in Appendix E, encoding of fields D, S, and M indicates whether the first source operator Ra is a scalar or vector register: the second source operator Rb / IM 5 is a scalar register, a vector register, or a 5-bit intermediate value. Acknowledge: And determine whether destination register Rd is a scalar or vector register.

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, processor 110 is a general purpose processor compliant with the standard for ARM7 processors. See the ARM Architecture Documentation or ARM7 Data Sheet (document number ARM DDI 0020C, published December 1994) for a description of the registers in ARM7.

벡터 프로세서(120)와 인터렉트하기 위해 프로세서(110)는 벡터 프로세서를 시작하고 정지시키며: 동기화를 위한 것을 포함하여 벡터 프로세서 상태를 태스트 하고: 벡터 프로세서(120)에 있는 스칼라/특수 목적 레지스터로부터의 데이타를 프로세서(110)의 범용 레지스터로 전송하고: 및 범용 레지스터로부터의 데이타를 벡터 프로세서 스칼라/특수 목적 레지스터로 전송한다. 범용 레지스터와 벡터 프로세서 벡터 레지스터 간에 직접적인 전송 수단은 존재하지 않는다. 이와 같은 전송은 중간으로서 메모리를 필요로 한다.In order to interact with the vector processor 120, the processor 110 starts and stops the vector processor: tasks the vector processor state, including for synchronization: data from the scalar / special purpose registers in the vector processor 120; Is sent to the general register of the processor 110, and the data from the general register is transferred to the vector processor scalar / special purpose register. There is no direct transfer between the general purpose register and the vector processor vector register. This transfer requires memory as an intermediate.

표 a1은 벡터 프로세서 명령어를 위한 ARM7 명령어 세트로의 확장을 설명한다.Table a1 describes the extensions to the ARM7 instruction set for vector processor instructions.

[표 a1]TABLE A1

Figure kpo00002
Figure kpo00002

Figure kpo00003
Figure kpo00003

표 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

Figure kpo00004
Figure kpo00004

다음은 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

Figure kpo00005
Figure kpo00005

CDP 포맷에 있는 필드는 다음과 같은 규약을 갖는다.Fields in the CDP format have the following conventions:

Figure kpo00006
Figure kpo00006

코프로세서 데이터 전송 포맷(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

Figure kpo00007
Figure kpo00007

포맷에 있는 필드는 다음과 같은 규약을 갖는다.Fields in the format have the following conventions:

Figure kpo00008
Figure kpo00008

코프로세서 레지스터 전송 포맷(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

Figure kpo00009
Figure kpo00009

포맷에 있는 필드는 다음 규약을 갖는다:Fields in the format have the following conventions:

Figure kpo00010
Figure kpo00010

확장 ARM 명령어 설명Extended ARM instruction description

확장 ARM 명령어는 알파벳 순서로 설명된다.Extended ARM instructions are described in alphabetical order.

CACHE Cache 연산CACHE Cache operation

포맷format

Figure kpo00011
Figure kpo00011

어셈블러 구문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 (ie use c 0 instead of 0). See the ARM7 data sheet for the address mode syntax.

설명Explanation

이 명령어는 Cond가 참일때에만 실행된다. 0pc<3:0>는 다음 연산을 명시한다.This command is executed only when Cond is true. 0pc <3: 0> specifies the following operation.

Figure kpo00012
Figure kpo00012

연산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

Figure kpo00013
Figure kpo00013

어셈블러 구문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

Figure kpo00014
Figure kpo00014

어셈블러 구문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 Sections 1 and 2 for extended register descriptions.

Figure kpo00015
Figure kpo00015

비트 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

Figure kpo00016
Figure kpo00016

어셈블러 구문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).

Figure kpo00017
Figure kpo00017

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

Figure kpo00018
Figure kpo00018

어셈블러 구문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.

Figure kpo00019
Figure kpo00019

비트 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

Figure kpo00020
Figure kpo00020

어셈블러 구문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.

Figure kpo00021
Figure kpo00021

예외exception

벡터 프로세서는 이용할 수 없음.Vector processor not available.

FETCH 프리훼치FETCH prefetch

포맷format

Figure kpo00022
Figure kpo00022

어셈블러 구문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

Figure kpo00023
Figure kpo00023

어셈블러 구문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

Figure kpo00024
Figure kpo00024

어셈블러 구문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 multimedia processor 100 defines extension registers that the processor 110 accesses as MFER and MTER instructions. The extension register includes a dedicated extension register and a user extension register.

상기 전용 확장 레지스터는 대부분 멀티미디어 신호 프로세서의 동작을 제어하는데 사용된다. 이들은 표 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

Figure kpo00025
Figure kpo00025

제어 레지스터는 MSP(100)의 동작을 제어한다. CTR에 있는 모드 비트는 리셋시 클리어된다. 레지스터 정의가 표 b2에 도시되어 있다.The control register controls the operation of the MSP 100. The mode bits in the CTR are cleared on reset. The register definitions are shown in Table b2.

[표 b2]TABLE b2

CTR 정의CTR definition

Figure kpo00026
Figure kpo00026

Figure kpo00027
Figure kpo00027

상태 레지스터는 MSP(100)의 상태를 가르킨다. 필드 STR에 있는 모든 비트는 리셋시 클리어 된다. 레지스터 정의가 표 b3에 도시되어 있다.The status register indicates the status of the MSP 100. All bits in field STR are cleared on reset. The register definitions are shown in Table b3.

[표 b3]TABLE b3

STR 정의STR definition

Figure kpo00028
Figure kpo00028

프로세서 버젼 레지스터는 프로세서들의 멀티미디어 신호 프로세서 군의 특수한 프로세서의 특수 버젼을 식별한다.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 processor 110. Each bit in VIMSK interrupts ARM7 by enabling an exception when set with the corresponding bit in the VISRC register.

벡터 프로세서 예외가 검출되는 방법에는 영향을 미치지 않지만 예외가 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

Figure kpo00029
Figure kpo00029

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

Figure kpo00030
Figure kpo00030

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

Figure kpo00031
Figure kpo00031

스크래치 패드 레지스터는 캐쉬 서브시스템(130)에 있는 SRAM을 이용하여 형성된 스크래치 패드의 어드레스와 크기를 컨피그한다. 레지스터 정의가 표 b7에 도시되어 있다.The scratch pad register configures the address and size of the scratch pad formed using the SRAM in the cache subsystem 130. The register definitions are shown in Table b7.

[표 b7]TABLE b7

SPREGSPREG

Figure kpo00032
Figure kpo00032

사용자 확장 레지스터는 대부분 프로세서(110 및 120)의 동기화에 사용된다. 사용자 확장 레지스터는 비트 30으로 맵핑된 단지 하나의 비트만을 갖도록 현재 정의되어 있고, 예를 들어 "MFER R15, UERx"와 같은 명령은 비트 값을 Z 플래그로 반환한다. 비트 UERx<31> 및 UERx<29:0>는 항상 제로로 판독된다. 사용자 확장 레지스터 표 b8에 설명되어 있다.User extension registers are mostly used for synchronization of processors 110 and 120. The user extension register is currently defined to have only one bit mapped to bit 30, for example an instruction such as "MFER R15, UERx" returns the bit value as the Z flag. Bits UERx <31> and UERx <29: 0> are always read to zero. User extension registers are described in Table b8.

[표 b8]TABLE b8

확장 레지스터Extension register

Figure kpo00033
Figure kpo00033

표 b9는 파우어-온 리셋시 확장 레지스터의 상태를 도시한다.Table b9 shows the state of the expansion register at the power-on reset.

[표 b9]TABLE b9

확장 레지스터 파우어-온 상태Expansion Register Power-On State

Figure kpo00034
Figure kpo00034

<부록 C><Appendix C>

벡터 프로세서(120)의 아키텍춰 상태는: 32개의 32 비트 스칼라 레지스터; 32 개의 288 비트 벡터 레지스터의 2 뱅크; 한쌍의 576 비트 벡터 누산 레지스터; 한 세트의 32 비트 특수 목적 레지스터를 구비한다. 스칼라, 벡터 및 누산기 레지스터는 범용 목적 프로그래밍을 위해 의도되었고, 다른 많은 데이터 형을 지원한다.The architecture state of the vector processor 120 is: 32 32-bit scalar registers; 2 banks of 32 288 bit vector registers; A pair of 576-bit vector accumulation registers; It has a set of 32-bit special purpose registers. Scalar, vector, and accumulator registers are intended for general purpose programming and support many other data types.

다음 주석은 이와 같은 그리고 후속하는 절에 사용된다. : 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

Figure kpo00035
Figure kpo00035

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, byte 9, halfword, and word element sizes of most architecture instructions. In addition, the IEEE 754 single accuracy format is supported as a word element for most architecture instructions.

프로그래머는 명령어 시퀸스가 의미있는 결과를 내는 한 임의의 소정 방법으로 데이타를 자유로이 해석할 수 있다. 예를 들어, 프로그래머는 바이트 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 number using byte 9 size, freely store an 8-bit unsigned number in a bike size data element, and allow the programmer to handle "false" overflow results. As long as you can, you can operate them freely using the provided two's complement architecture instructions.

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, byte 9, and halfword data types are stored in the least significant bit of the scalar register, where the most significant bit has an undefined value.

레지스터가 데이터 형 표시기를 가지지 않기 때문에, 프로그래머는 각 명령에 사용되고 있는 레지스터의 데이타 형을 알아야만 한다. 이는 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 byte 9 addition only modifies the lower 9 bits of the 32-bit destination scalar register. The value of the upper 23 bits is undefined unless otherwise indicated for the instruction.

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. Bank 0 holds the first 32 registers, and Bank 1 holds the second 32 registers. Two banks are used in such a way that one bank is set as one bank to the current bank and the other bank is set as an alternate bank. All vector instructions use registers in the current bank as default, except that load / store and move registers that can access vector registers in the alternate bank. The CBANK bit in the vector control and status register VCSR is used to set bank 0 or bank 1 to the current bank (the other bank becomes the alternate bank). The vector register in the current bank is called VR0 to VR31, The vector register in the replacement bank is called VRA0 through VRA31.

선택적으로 두개의 뱅크는 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 banks 1 and 0 respectively. The dual size vector registers are called VR0 through VR31.

벡터 레지스터는 표 c2에 도시된 바와 같이 바이트, 바이트 9, 하프워드 또는 워드 크기의 다수 엘리먼트를 수용할 수 있다.The vector register can accommodate multiple elements of byte, byte 9, halfword or word size as shown in Table c2.

[표 c2]Table c2

벡터 레지스터당 엘리먼트 수Number of elements per vector register

Figure kpo00036
Figure kpo00036

한 벡터 레지스터내의 엘리먼트 크기의 혼합은 지원되지 않는다. 바이트 9 엘리먼트 크기를 제외하고, 단지 288 비트의 256 만이 사용된다. 특히, 매 9번째 비트는 사용되지 않는다. 바이트, 하프워드 및 워드 크기에 있는 사용되지 않는 32 비트는 예약되고, 프로그래머는 그들 값에 대해 어떠한 가정도 해서는 안된다.Mixing element sizes in one vector register is not supported. Except for the byte 9 element size, only 256 of 288 bits are used. In particular, every ninth bit is not used. Unused 32 bits in byte, halfword and word size are reserved and the programmer must not make any assumptions about their values.

벡터 누산 레지스터는 목적지 레지스터에 있는 결과보다 정확도가 높은 중간 결과를 위한 기억장치를 제공하도록 의도된다. 벡터 누산 레지스터는 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 byte 9 vector operation. Although Bank 1 is set to the current bank in VEC32 mode, the VAC0H: VAC0L pair is used.

소스 벡터 레지스터에서와 같이 동일한 수의 엘리먼트를 갖는 확장된 정확도 결과를 내기 위해 표 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

Figure kpo00037
Figure kpo00037

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

Figure kpo00038
Figure kpo00038

벡터 제어 및 상태 레지스터 VCSR 정의가 표 c5에 도시되어 있다.Vector control and status register VCSR definitions are shown in Table c5.

[표 c5]Table c5

VCSR 정의VCSR definition

Figure kpo00039
Figure kpo00039

Figure kpo00040
Figure kpo00040

벡터 프로그램 카운터 레지스터 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 vector processor 120. The AMR7 processor 110 must load the register VPC before generating the STARTVP instruction to begin the operation of the vector processor 120.

벡터 예외 프로그램 카운터 VEPC는 가장 최근의 예외를 유발할 가능성이 있는 명령어의 어드레스를 명시한다. MSP 100은 정확한 예외 즉, "가장 가능성이 있는" 용어를 지원하지 않는다.The vector exception program counter VEPC specifies the address of the instruction that is likely to cause the most recent exception. MSP 100 does not support the exact exception, ie the "most likely" term.

벡터 인터럽트 소스 레지스터 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 ARM7 processor 110. Appropriate bit (s) are set by the hardware upon detection of the exception (s). Software must clear register VISRC before vector processor 120 can resume execution. Any bit set in the register VISRC causes the vector processor 120 to enter the state VP_IDLE. If the corresponding interrupt enable bit is set to VIMSK, an interrupt to processor 110 is signaled. Table c6 defines the contents of the register VISRC.

[표 c6]Table c6

VISRC 정의VISRC Definition

Figure kpo00041
Figure kpo00041

벡터 인터럽트 명령어 레지스터 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 ARM7 processor 110.

벡터 카운터 레지스터 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 bank 0 in VEC64 mode, and VRd points to the destination register in the current bank, which can be either bank 0 or 1 in VEC32 mode. The vector global mask register VGMRO is used to execute all instructions except the VCMOVM instruction.

벡터 전역 마스크 레지스터 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 bank 1. In particular, VGMR1 <i> d is VR 1: controls the update of the <9i + 8 9i>. The register VGMR1 <i> controls the update of VR 1 d <9i + 8: 9i>. Register VGNR1 is not used in VEC32 mode, but is not used in VEC32 instructions except the VCMOVM instruction in VEC64 mode.

벡터 오버플로우 레지스터 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 byte 9, the (i idiv 2) th element of the halfword, or the (i idiv 4) th element of the word data type operation contains the overflow result. Point. For example, bits 1 and 3 will be set to indicate the overflow of the first halfword and word element, respectively.

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 byte 9, the (i idiv 2) th element of the halfword, or the (i idiv 4) th element of the word data type operation containing the result of the overflow. Points to. For example, bits 1 and 3 will be set to indicate the overflow of the first halfword and word element, respectively, in VR <575: 288>. The mapping of the bits in VOR1 is different from the mapping of the bits in VGMR0 or VGMR1.

벡터 명령 어드레스 브레이크 포인트 레지스터 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

Figure kpo00042
Figure kpo00042

벡터 데이터 어드레스 브레이크포인트 레지스터 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

Figure kpo00043
Figure kpo00043

벡터 이동 마스크 레지스터 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 bank 0 in VEC64, and VRd points to the destination register in the current bank, which can be either bank 0 or 1 in VEC32 mode.

벡터 이동 마스크 레지스터 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 bank 1. In particular, VGMR1 <i> controls the update of VR1d <9i + 8: 9i>. Register VGMR1 is not used in VEC32 mode.

벡터 및 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 processors 110 and 120. Currently, only bit 30 is defined. The ARM7 processor can access the register VASYNC using the instructions MFER, MTER and TESTSET while the vector processor 120 is in the state VP_RUN or VP_IDLE. Register VASYNC cannot access the ARM7 process via a TVP or MFVP instruction because these instructions cannot be accessed outside the special purpose registers of the first 16 vector processor. The vector processor can access the register VASYNC through the VMOV instruction.

표 c9 는 파우어-온 리셋시 벡터 프로세서의 상태를 도시한다.Table c9 shows the state of the vector processor upon power-on reset.

[표 c9]Table c9

파우어-온 리셋시 벡터 프로세서Vector processor on power-on reset

Figure kpo00044
Figure kpo00044

특수 목적 레지스터는 벡터 프로세서가 명령을 실행할 수 있기 전에 ARM7 프로세서(110)에 의해 초기화된다.The special purpose register is initialized by the ARM7 processor 110 before the vector processor can execute the instruction.

<부록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

Figure kpo00045
Figure kpo00045

아키텍춰는 데이타 형 경계일 메모리 어드레스 정렬을 명시한다. 즉, 바이트의 경우, 어떠한 정렬 조건도 존재하지 않는다. 하프워드의 경우, 정렬 조건은 하프워드 경계이다. 워드의 경우, 정렬 조건은 워드 경계이다.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

Figure kpo00046
Figure kpo00046

스칼라이거나 또는 벡터이거나 하나 이상의 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 byte 9 data size operations for vector destination registers and word data size operations for scalar destination registers, the values are present in bits in destination registers not defined by the operation. For these bits, the architecture specifies that their values are to be defined. Table d3 shows the undefined bits for each data size.

[표 d3]TABLE D3

데이터 크기에 대해 정의되지 않은 비트Undefined bit for data size

Figure kpo00047
Figure kpo00047

프로그래밍시 프로그래머는 항상 소스 및 목적지 레지스터 또는 메모리의 데이타 형을 알고 있어야 한다. 한 엘리먼트 크기에서 다른 것으로 데이타 형 변환은 잠재적으로 벡터 레지스터에 저장되는 수가 다른 엘리먼트로 되는 결과가 된다. 예를 들어 하프워드에서 워드 데이타 형으로 벡터 레지스터의 변환은 동일한 수의 변환된 엘리먼트를 저장하기 위해 두개의 벡터 레지스터를 필요로 한다. 역으로 벡터 레지스터에서 사용자가 정의한 포맷을 가질 수 있는 워드 데이타 형에서 하프 포맷으로의 변환은 벡터 레지스터의 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 byte 9 data size operations, each of the 32 bits in VGMR0 (or VGMR1) identifies the element to be operated on. The set bit VGMR0 &lt; i &gt; here indicates that an element i of byte size where i is from 0 to 31 will be affected. For halfword data size operations, each pair of 32 bits in VGMR0 (or VGMR1) identifies the element to be operated on. The bits VGMR0 <2i: 2i + 1> being set here indicate that element i with i from 0 to 15 will be affected. If only one bit of the pair in VGMR0 is set for halfword data size operation, only the bits in the corresponding byte are modified. For word data size operations, each set of four bits in VGMR0 (or VGMR1) identifies the element to be operated on. The bits VGMR0 <4i: 4i + 3> being set here indicate that element i with i from 0 to 7 will be affected. If all bits in the four sets in VGMR0 are not set for word data size operations, only the bits in the corresponding byte are modified.

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

Figure kpo00048
Figure kpo00048

표 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

Figure kpo00049
Figure kpo00049

<부록 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

Figure kpo00050
Figure kpo00050

Figure kpo00051
Figure kpo00051

표 e2는 흐름 제어 명령을 열거한다.Table e2 lists flow control commands.

[표 e2]TABLE e2

흐름 제어 명령Flow control command

Figure kpo00052
Figure kpo00052

논리적 분류는 부울린 데이타 형을 지원하고, 엘리먼트 마스크에 의해 영향을 받는다. 표 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

Figure kpo00053
Figure kpo00053

쉬프트/회전 분류 명령은 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

Figure kpo00054
Figure kpo00054

산술 분류 명령은 일반적으로 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

Figure kpo00055
Figure kpo00055

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

Figure kpo00056
Figure kpo00056

각각의 데이타 형 변환 명령은 특정 데이타 형을 지원하고, 아키텍춰가 레지스터에 있는 하나 이상의 데이타 형을 지원하지 않기 때문에 엘리먼트 마스크에 의해 영향을 받지 않는다. 표 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

Figure kpo00057
Figure kpo00057

명령의 엘리먼트간 산술 분류는 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

Figure kpo00058
Figure kpo00058

명령의 엘리먼트간 이동 분류는 바이트, 바이트9, 하프워드 및 워드 데이타 크기를 지원한다. 표 e9은 명령의 엘리먼트간 이동 분류를 열거한다.Inter-element transfer classification of instructions supports byte, byte 9, halfword and word data sizes. Table e9 lists the inter-element movement classification of the command.

[표 e9]Table e9

엘리먼트간 이동 분류Move between elements

Figure kpo00059
Figure kpo00059

로드/저장 명령은 바이트, 하프워드 및 워드 데이타 크기 이외에 특수한 바이트 9 관련 데이타 크기 연산을 지원하고, 엘리먼트 마스크에 의한 영향을 받지 않는다. 표 e10은 로드/저장 분류에 있는 명령들을 열거한다.Load / store instructions support special byte 9 related data size operations in addition to byte, halfword and word data sizes and are not affected by element masks. Table e10 lists the commands in the load / store category.

[표 e10]Table e10

로드/저장 분류Load / Save Classification

Figure kpo00060
Figure kpo00060

대부분의 레지스터 이동 명령은 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

Figure kpo00061
Figure kpo00061

표 e12는 캐쉬 서브시스템(130)을 제어하는 캐쉬 연산 분류에 있는 명령을 열거한다.Table e12 lists the instructions in the cache operation classification that control cache subsystem 130.

[표 e12]TABLE e12

캐쉬 연산 분류Cache operation classification

Figure kpo00062
Figure kpo00062

명령어 설명 명명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, byte 9, halfword, or word size, unless otherwise defined. The term "register" is used to refer to a general purpose (scalar or vector) register. Other types of registers are explicitly described. In assembly language syntax, the subscripts b, b9, h, and w refer to both data size (byte, byte 9, halfword, and word) and integer data types (int8, int9, int16, and int32). In addition, the terms and symbols used to describe instruction operands, operations, and assembly language syntax are:

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 : Bank 0 Vector Register

VR1: 뱅크 1 벡터 레지스터VR 1 : Bank 1 vector register

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: Vector Accumulator Register 0 High

VAC0L : 벡터 누산기 레지스터 0 로우VAC0L: Vector Accumulator Register 0 Low

VAC1H : 벡터 누산기 레지스터 1 하이VAC1H: Vector Accumulator Register 1 High

VAC1L : 벡터 누산기 레지스터 1 로우VAC1L: Vector Accumulator Register 1 Low

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 byte 9, halfword or word data sizes, respectively, in VEC32 mode. This is 64, 32 or 16 for byte and byte 9, halfword or word data sizes, respectively, in VEC64 mode. NumElem is 0 for scalar operations.

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 byte 9, halfword or word data sizes, respectively. For scalar operations, the element mask is assumed to be set even if EMASK [i] = 0.

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 byte 9, halfword or word data sizes, respectively.

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

Figure kpo00063
Figure kpo00064
y}는 x 또는 y 사이의 선택을 가르킨다.(논리적이 아님 또는){x
Figure kpo00063
Figure kpo00064
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

Figure kpo00065
expression
Figure kpo00066
식의 절대값
Figure kpo00065
expression
Figure kpo00066
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

Figure kpo00067
Figure kpo00067

비트 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

Figure kpo00068
Figure kpo00068

표 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.

Figure kpo00069
Figure kpo00069

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.

Figure kpo00070
Figure kpo00070

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.

Figure kpo00071
Figure kpo00071

표 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.

Figure kpo00072
Figure kpo00072

표 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.

Figure kpo00073
Figure kpo00073

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.

Figure kpo00074
Figure kpo00074

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.

Figure kpo00075
Figure kpo00075

비트 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 bank 0 or bank l) unless otherwise defined. Table e22 lists the D: S: M encoding when DC <1: 0> is 00, 01 or 10.

[표 e22]Table e22

DS가 11과 같지 않을 때 RRRM5 D:S:M 엔코딩.RRRM5 D: S: M encoding when DS is not equal to 11.

Figure kpo00076
Figure kpo00076

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.

Figure kpo00077
Figure kpo00077

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.

Figure kpo00078
Figure kpo00078

모든 벡터 레지스터 오퍼런드는 달리 정의되지 않는 한 현재의 뱅크(이는 뱅크 0 또는 뱅크 1중 어느 하나일 수 있다.)를 참조한다.All vector register operands refer to the current bank (which may be either bank 0 or bank 1) unless otherwise defined.

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.

Figure kpo00079
Figure kpo00079

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

Figure kpo00080
Figure kpo00080

CT 포맷은 표 e27 에 도시된 필드를 포함한다.The CT format includes the fields shown in Table e27.

[표 e27]Table e27

CT 포맷.CT format.

Figure kpo00081
Figure kpo00081

분기 조건은 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.

Figure kpo00082
Figure kpo00082

비트 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 bank 0 or bank 1) unless otherwise defined. The D: S: M encoding is the same as shown in Tables e22 and e23 for the RRRM5 format, except that the median value extracted from the middle field follows the DS <1: 0> encoding as shown in Table E29. .

[표 e29]Table e29

RRRM9 포맷의 중간값.Intermediate value in RRRM9 format.

Figure kpo00083
Figure kpo00083

중간 포맷은 부동 데이타 형과는 사용할 수 없다.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).

Figure kpo00084
Figure kpo00084

5. RRRM5 및 RRRM9 포맷의 경우, 다음 엔코딩이 부동 데이타 형에 사용된다.5. For the RRRM5 and RRRM9 formats, the following encodings are used for floating data types.

Figure kpo00085
Figure kpo00085

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 byte 9 data size.

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

Figure kpo00086
Figure kpo00086

어셈블러 구문

Figure kpo00087
Assembler Syntax
Figure kpo00087

지원되는 모드Supported Mode

Figure kpo00088
Figure kpo00088

설명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

Figure kpo00089
Figure kpo00089

예외exception

오버플로우.Overflow.

VADAC 덧셈 및 누산VADAC Addition and Accumulation

포맷format

Figure kpo00090
Figure kpo00090

설명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.

Figure kpo00091
Figure kpo00091

VADACL 덧셈 및 로우 누산VADACL Addition and Low Accumulation

포맷format

Figure kpo00092
Figure kpo00092

설명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

Figure kpo00093
Figure kpo00093

VADD 덧셈VADD addition

포맷format

Figure kpo00094
Figure kpo00094

설명Explanation

Ra 및 Rb/중간 오퍼런드를 더하고 그 합계를 목적지 레지스터 Rd로 반환한다.Add the Ra and Rb / middle operands and return the sum to the destination register Rd.

연산calculate

Figure kpo00095
Figure kpo00095

예외exception

오버플로우, 부동 소수점 무효 오퍼런드Overflow, floating-point invalid operation

VADDH 인접하는 두개의 엘리먼트 덧셈VADDH Add two adjacent elements

포맷format

Figure kpo00096
Figure kpo00096

설명Explanation

Figure kpo00097
Figure kpo00097

연산calculate

Figure kpo00098
Figure kpo00098

예외exception

오버플로우, 부동 소수점 무효 오퍼런드Overflow, floating-point invalid operation

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.

VAND ANDVAND AND

포맷format

Figure kpo00099
Figure kpo00099

여기서 dt = {b, b9, h, w}, .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Note that dt = {b, b9, h, w}, .w and .f specify the same operation.

지원되는 모드Supported Mode

Figure kpo00100
Figure kpo00100

설명Explanation

Ra 및 Rb/중간 오퍼런드를 논리적으로 AND하고, 그 결과를 목적지 레지스터 Rd로 반환한다.Logically AND the Ra and Rb / middle operations and return the result in the destination register Rd.

연산calculate

Figure kpo00101
Figure kpo00101

예외exception

없음.none.

VANDC AND 보수VANDC AND reward

포맷format

Figure kpo00102
Figure kpo00102

여기서 dt = {b, b9, h, w}. .w와 .f는 동일한 연산을 명시한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.

지원되는 모드Supported Mode

Figure kpo00103
Figure kpo00103

설명Explanation

Ra 및 Rb/중간 오퍼런드의 보수를 논리적으로 더하고, 그 결과를 목적지 레지스터 Rd에 반환한다.Logically add the complement of Ra and Rb / middle operands and return the result to the destination register Rd.

연산calculate

Figure kpo00104
Figure kpo00104

예외exception

없음.none.

VASA 산술 쉬프트 누산기VASA Arithmetic Shift Accumulator

포맷format

Figure kpo00105
Figure kpo00105

여기서 dt = {b, b9, h, w}이고, R은 좌측 또는 우측의 쉬프트 방향을 지칭한다.Where dt = {b, b9, h, w} and R refers to the left or right shift direction.

지원되는 모드Supported Mode

Figure kpo00106
Figure kpo00106

설명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.

Figure kpo00107
Figure kpo00107

예외exception

오버플로우.Overflow.

VASL 좌측 산술 쉬프트VASL left arithmetic shift

포맷format

Figure kpo00108
Figure kpo00108

지원되는 모드Supported Mode

Figure kpo00109
Figure kpo00109

설명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

Figure kpo00110
Figure kpo00110

예외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

Figure kpo00111
Figure kpo00111

설명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

Figure kpo00112
Figure kpo00112

예외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, byte 9, and halfword data names, the programmer is responsible for specifying exactly the amount of shift less than or equal to the bit's equivalent in data size. If the shift amount is greater than the specified data size, the element will be filled with sign bits.

포맷format

Figure kpo00113
Figure kpo00113

설명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

Figure kpo00114
Figure kpo00114

예외exception

오버플로우.Overflow.

VASUB 뺄셈 절대값VASUB subtraction absolute value

포맷format

Figure kpo00115
Figure kpo00115

설명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

Figure kpo00116
Figure kpo00116

예외exception

오버플로우.Overflow.

VAVG 두 엘리먼트의 평균VAVG average of two elements

포맷format

Figure kpo00117
Figure kpo00117

여기서 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

Figure kpo00118
Figure kpo00118

설명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

Figure kpo00119
Figure kpo00119

예외exception

없음.none.

VAVGH 인접하는 두개의 엘리먼트의 평균VAVGH Average of two adjacent elements

포맷format

Figure kpo00120
Figure kpo00120

여기서 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

Figure kpo00121
Figure kpo00121

설명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>.

Figure kpo00122
Figure kpo00122

연산calculate

Figure kpo00123
Figure kpo00123

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.

VAVGQ Quad 평균VAVGQ Quad Average

포맷format

Figure kpo00124
Figure kpo00124

어셈블러 구문Assembler Syntax

Figure kpo00125
Figure kpo00125

여기서 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

Figure kpo00126
Figure kpo00126

설명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.

Figure kpo00127
Figure kpo00127

연산calculate

Figure kpo00128
Figure kpo00128

예외exception

없음.none.

VCACHE 캐쉬 연산VCACHE Cache Operation

포맷format

Figure kpo00129
Figure kpo00129

어셈블러 구문Assembler Syntax

Figure kpo00130
Figure kpo00130

여기서 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.

Figure kpo00131
Figure kpo00131

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향을 받지 않는다.This command is not affected by the element mask.

V'CAND 보수 ANDV'CAND Compensation AND

포맷format

Figure kpo00132
Figure kpo00132

여기서 dt = {b, b9, h, w}. .w과 .f는 동일한 연산을 지정한다는 것에 유의한다.Where dt = {b, b9, h, w}. Note that .w and .f specify the same operation.

지원되는 모드Supported Mode

Figure kpo00133
Figure kpo00133

설명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

Figure kpo00134
Figure kpo00134

예외exception

없음.none.

VCBARR 조건 베리어VCBARR Condition Barrier

포맷format

Figure kpo00135
Figure kpo00135

여기서 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:

Figure kpo00136
Figure kpo00136

연산calculate

Figure kpo00137
Figure kpo00137

예외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

Figure kpo00138
Figure kpo00138

어셈블러 구문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

Figure kpo00139
Figure kpo00139

예외exception

무효 명령 어드레스.Invalid instruction address.

VCBRI 조건 분기 인다이렉트VCBRI Conditional Branch Indirect

포맷format

Figure kpo00140
Figure kpo00140

어셈블러 구문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

Figure kpo00141
Figure kpo00141

예외exception

무효 명령 어드레스.Invalid instruction address.

VCCS 조건 콘택스트 스위치VCCS condition context switch

포맷format

Figure kpo00142
Figure kpo00142

설명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

Figure kpo00143
Figure kpo00143

예외exception

반환 어드레스 스택 오버플로우.Return address stack overflow.

VCHGCR 제어 레지스터 변경VCHGCR Control Register Change

포맷format

Figure kpo00144
Figure kpo00144

어셈블러 구문Assembler Syntax

VCHGCR 모드VCHGCR Mode

설명Explanation

이 명령은 벡터 프로세서의 동작 모드를 바꾼다.This instruction changes the operating mode of the vector processor.

모드에 있는 각 비트는 다음을 지정한다:Each bit in mode specifies the following:

Figure kpo00145
Figure kpo00145

연산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

Figure kpo00146
Figure kpo00146

어셈블러 구문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

Figure kpo00147
Figure kpo00147

예외exception

VCINT 인터럽트.VCINT interrupt.

VCJOIN ARM7 태스크와 조건 결합Combine conditions with VCJOIN ARM7 tasks

포맷format

Figure kpo00148
Figure kpo00148

여기서 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

Figure kpo00149
Figure kpo00149

예외exception

VCJOIN 인터럽트VCJOIN interrupt

VCJSR 서브루틴으로 조건 점프Condition jumps to VCJSR subroutines

포맷format

Figure kpo00150
Figure kpo00150

어셈블러 구문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

Figure kpo00151
Figure kpo00151

예외exception

반환 어드레스 스택 오버플로우.Return address stack overflow.

VCJSRI 서브루틴 인다이렉트로 조건 점프Conditional Jump to VCJSRI Subroutine Indirect

포맷format

Figure kpo00152
Figure kpo00152

어셈블러 구문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

Figure kpo00153
Figure kpo00153

예외exception

반환 어드레스 스택 오버플로우.Return address stack overflow.

VCMOV 조건 이동Move VCMOV Condition

포맷format

Figure kpo00154
Figure kpo00154

어셈블러 구문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

Figure kpo00155
Figure kpo00155

설명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)

Figure kpo00156
Figure kpo00156

연산calculate

Figure kpo00157
Figure kpo00157

예외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

Figure kpo00158
Figure kpo00158

여기서 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

Figure kpo00159
Figure kpo00159

설명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)

Figure kpo00160
Figure kpo00160

연산calculate

Figure kpo00161
Figure kpo00161

예외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

Figure kpo00162
Figure kpo00162

어셈블러 구문Assembler Syntax

Figure kpo00163
Figure kpo00163

여기서 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

Figure kpo00164
Figure kpo00164

설명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

Figure kpo00165
Figure kpo00165

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VCNTLZ 선두 제로의 카운트VCNTLZ leading zero count

포맷format

Figure kpo00166
Figure kpo00166

어셈블러 구문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

Figure kpo00167
Figure kpo00167

설명Explanation

Rb에 있는 각 엘리먼트에 대해, 선두 제로의 수를 카운트하고, Rd에 있는 카운트를 반환한다,For each element in Rb, count the number of leading zeros and return the count in Rd,

연산calculate

Figure kpo00168
Figure kpo00168

예외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, byte 9, halfword or word).

선두 제로들의 카운트는 (만일 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

Figure kpo00169
Figure kpo00169

어셈블러 구문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

Figure kpo00170
Figure kpo00170

설명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

Figure kpo00171
Figure kpo00171

예외exception

없음.none.

VCRSR 서브루틴으로부터 조건 반환Return condition from VCRSR subroutine

포맷format

Figure kpo00172
Figure kpo00172

어셈블러 구문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 VPC + 4.

연산calculate

Figure kpo00173
Figure kpo00173

예외exception

무효 명령 어드레스. 어드레스 스택 오버플로우 반환Invalid instruction address. Return address stack overflow

VCVTB9 바이트9 데이터 형의 변환VCVTB9 byte9 data type conversion

포맷format

Figure kpo00174
Figure kpo00174

어셈블러 구문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), byte 9 to halfword (b9h), or halfword to byte 9 (hb9).

연산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

Figure kpo00176
Figure kpo00176

어셈블러 구문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

Figure kpo00177
Figure kpo00177

설명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

Figure kpo00178
Figure kpo00178

예외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

Figure kpo00179
Figure kpo00179

어셈블러 구문Assembler Syntax

VCVTIF VRd, VRbVCVTIF VRd, VRb

VCVTIF VRd, SRbVCVTIF VRd, SRb

VCVTIF SRd, SRbVCVTIF SRd, SRb

지원되는 모드Supported Mode

Figure kpo00180
Figure kpo00180

설명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

Figure kpo00181
Figure kpo00181

예외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

Figure kpo00182
Figure kpo00182

어셈블러 구문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

Figure kpo00183
Figure kpo00183

예외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

Figure kpo00184
Figure kpo00184

어셈블러 구문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

Figure kpo00185
Figure kpo00185

예외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

Figure kpo00186
Figure kpo00186

어셈블러 구문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

Figure kpo00187
Figure kpo00187

예외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

Figure kpo00188
Figure kpo00188

어셈블러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

Figure kpo00189
Figure kpo00189

설명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

Figure kpo00190
Figure kpo00190

예외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, byte 9, and halfword data types, the programmer is responsible for specifying exactly N values less than or equal to the accuracy in the data size. If greater than the accuracy of the specified data size, the element will be filled in the sign bit. This command uses a round-toward zero rounding mode.

VDLV2N.F 2n부동으로 나누기VDLV2N.F 2 n Divide by Float

포맷format

Figure kpo00191
Figure kpo00191

어셈블러 구문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

Figure kpo00192
Figure kpo00192

설명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

Figure kpo00193
Figure kpo00193

예외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

Figure kpo00194
Figure kpo00194

어셈블러 구문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

Figure kpo00195
Figure kpo00195

설명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

Figure kpo00196
Figure kpo00196

예외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

Figure kpo00197
Figure kpo00197

어셈블러 구문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

Figure kpo00198
Figure kpo00198

설명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 (ie 8 times for int8 for type int9, 9 times for int9, 16 for int16 and 32 for int32). The VDIVI instruction must be used before the division step to create the initial partial remainder in the accumulator. The jet number is a signed single precision integer in Rb. Once the exponent bit is extracted step by step, it is shifted to the least significant bit of the accumulator.

누산기에 있는 부분 나머지의 부호가 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 VESL 1

포맷format

Figure kpo00199
Figure kpo00199

어셈블러 구문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

Figure kpo00200
Figure kpo00200

설명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.

Figure kpo00201
Figure kpo00201

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VESR 1만큼 우로 엘리먼트 쉬프트Right shift element by VESR 1

포맷format

Figure kpo00202
Figure kpo00202

어셈블러 구문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

Figure kpo00203
Figure kpo00203

설명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.

Figure kpo00204
Figure kpo00204

연산calculate

Figure kpo00205
Figure kpo00205

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VEXRT 한 엘리먼트의 추출」Extracting One VEXRT Element ”

포맷format

Figure kpo00206
Figure kpo00206

어셈블러 구문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

Figure kpo00207
Figure kpo00207

설명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

Figure kpo00208
Figure kpo00208

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VEXTSGN2 (1, -1)의 부호를 추출Extract sign of VEXTSGN2 (1, -1)

포맷format

Figure kpo00209
Figure kpo00209

어셈블러 구문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

Figure kpo00210
Figure kpo00210

설명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

Figure kpo00211
Figure kpo00211

예외exception

없음.none.

VEXTSGN3 (1, 0, -1)의 부호 추출Sign extraction of VEXTSGN3 (1, 0, -1)

포맷format

Figure kpo00212
Figure kpo00212

어셈블러 구문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

Figure kpo00213
Figure kpo00213

설명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

Figure kpo00214
Figure kpo00214

예외exception

없음.none.

VlNSRT 한 엘리먼트의 삽입Insert one element of VlNSRT

포맷format

Figure kpo00215
Figure kpo00215

어셈블러 구문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

Figure kpo00216
Figure kpo00216

설명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

Figure kpo00217
Figure kpo00217

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VL 로드VL load

포맷format

Figure kpo00218
Figure kpo00218

어셈블러 구문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

Figure kpo00219
Figure kpo00219

Figure kpo00220
Figure kpo00220

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VLCB 순환 버퍼로부터 로드Load from VLCB circular buffer

포맷format

Figure kpo00221
Figure kpo00221

어셈블러 구문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 SR 1 must load a vector register or a scalar register.

만일 어드레스 갱신 연산은 물론 로드 이전에 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

Figure kpo00222
Figure kpo00222

Figure kpo00223
Figure kpo00223

예외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

Figure kpo00224
Figure kpo00224

어셈블러 구문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

Figure kpo00225
Figure kpo00225

Figure kpo00226
Figure kpo00226

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VLI 중간 로드VLI Medium Load

포맷format

Figure kpo00227
Figure kpo00227

어셈블러 구문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, byte 9, halfwords, or words are loaded depending on the data type. For byte, byte 9, and halfword data types, the unaffected byte (byte 9) is not modified.

연산calculate

Rd=이하의 표를 참조한다:Rd = See the table below:

Figure kpo00228
Figure kpo00228

예외exception

없음.none.

VLQ Quad 로드VLQ Quad Rod

포맷format

Figure kpo00229
Figure kpo00229

어셈블러 구문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

Figure kpo00230
sex(IMM<7:0>)};EA = SR b + {SR i
Figure kpo00230
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;

Figure kpo00231
Figure kpo00231

Figure kpo00232
Figure kpo00232

예외exception

무효 데이터 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VLR 반전 로드VLR Inverted Load

포맷format

Figure kpo00233
Figure kpo00233

어셈블러 구문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

Figure kpo00234
Figure kpo00234

예외exception

무효 데이타 어드레스, 정열되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의해 영향받지 않는다.This command is not affected by the element mask.

VLSL 논리적 좌측 쉬프트VLSL logical left shift

포맷format

Figure kpo00235
Figure kpo00235

어셈블러 구문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

Figure kpo00236
Figure kpo00236

설명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

Figure kpo00237
Figure kpo00237

예외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, byte 9, 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 sheet amount is greater than the specified data size, the element will be filled with zeros.

VLSR 논리적 우측 쉬프트VLSR logical right shift

포맷format

Figure kpo00238
Figure kpo00238

어셈블러 구문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

Figure kpo00239
Figure kpo00239

설명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

Figure kpo00240
Figure kpo00240

예외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, byte 9, 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 sheet amount is greater than the specified data size, the element will be filled with zeros.

VLWS 스트라이드로 로드Load into VLWS stride

포맷format

Figure kpo00241
Figure kpo00241

어셈블러 구문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. SRb + 1 specifies a 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. EA must be aligned in size. Stride and block size must be multiple data sizes.

연산calculate

Figure kpo00242
Figure kpo00242

예외exception

무효 데이타 어드레스. 정렬되지 않은 액세스.Invalid data address. Unsorted access.

VMAC 곱셈과 누산VMAC multiplication and accumulation

포맷format

Figure kpo00243
Figure kpo00243

어셈블러 구문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

Figure kpo00244
Figure kpo00244

설명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

Figure kpo00245
Figure kpo00245

예외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

Figure kpo00246
Figure kpo00246

어셈블러 구문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

Figure kpo00247
Figure kpo00247

설명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

Figure kpo00248
Figure kpo00248

예외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

Figure kpo00249
Figure kpo00249

어셈블러 구문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

Figure kpo00250
Figure kpo00250

설명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

Figure kpo00251
Figure kpo00251

예외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

Figure kpo00252
Figure kpo00252

어셈블러 구문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

Figure kpo00253
Figure kpo00253

설명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

Figure kpo00254
Figure kpo00254

예외exception

없음.none.

VMAD L 로우의 곱셈과 덧셈Multiply and Add VMAD L Rows

포맷format

Figure kpo00255
Figure kpo00255

어셈블러 구문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

Figure kpo00256
Figure kpo00256

설명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

Figure kpo00257
Figure kpo00257

예외exception

오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.

VMAS 누산기로부터의 곱셈과 뺄셈Multiplication and Subtraction from the VMAS Accumulator

포맷format

Figure kpo00258
Figure kpo00258

어셈블러 구문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

Figure kpo00259
Figure kpo00259

설명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

Figure kpo00260
Figure kpo00260

예외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

Figure kpo00261
Figure kpo00261

어셈블러 구문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

Figure kpo00262
Figure kpo00262

설명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

Figure kpo00263
Figure kpo00263

예외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

Figure kpo00264
Figure kpo00264

어셈블러 구문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

Figure kpo00265
Figure kpo00265

설명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

Figure kpo00266
Figure kpo00266

예외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

Figure kpo00267
Figure kpo00267

어셈블러 구문Assembler Syntax

VMAXE.dt VRd, VRbVMAXE.dt VRd, VRb

여기서 dt={b, b9, h, w, f}.Where dt = {b, b9, h, w, f}.

지원되는 모드Supported Mode

Figure kpo00268
Figure kpo00268

설명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

Figure kpo00269
Figure kpo00269

예외exception

없음.none.

VMOV 이동Move VMOV

포맷format

Figure kpo00270
Figure kpo00270

어셈블러 구문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

Figure kpo00271
Figure kpo00271

설명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).

Figure kpo00272
Figure kpo00272

벡터 레지스터는 이 명령으로서 스칼라 레지스터로 이동될 수 없다는 것에 유의한다. 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:

Figure kpo00273
Figure kpo00273

연산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

Figure kpo00274
Figure kpo00274

어셈블러 구문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

Figure kpo00275
Figure kpo00275

설명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

Figure kpo00276
Figure kpo00276

예외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

Figure kpo00277
Figure kpo00277

어셈블러 구문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

Figure kpo00278
Figure kpo00278

설명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

Figure kpo00279
Figure kpo00279

예외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

Figure kpo00280
Figure kpo00280

어셈블러 구문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

Figure kpo00281
Figure kpo00281

설명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

Figure kpo00282
Figure kpo00282

예외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

Figure kpo00283
Figure kpo00283

어셈블러 구문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

Figure kpo00284
Figure kpo00284

설명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

Figure kpo00285
Figure kpo00285

예외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

Figure kpo00286
Figure kpo00286

어셈블러 구문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

Figure kpo00287
Figure kpo00287

설명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

Figure kpo00288
Figure kpo00288

예외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

Figure kpo00289
Figure kpo00289

어셈블러 구문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

Figure kpo00290
Figure kpo00290

설명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

Figure kpo00291
Figure kpo00291

예외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

Figure kpo00292
Figure kpo00292

어셈블러 구문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

Figure kpo00293
Figure kpo00293

설명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

Figure kpo00294
Figure kpo00294

예외exception

없음none

VNOR NORVNOR NOR

포맷format

Figure kpo00295
Figure kpo00295

어셈블러 구문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

Figure kpo00296
Figure kpo00296

설명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

Figure kpo00297
Figure kpo00297

예외exception

없음none

VOR ORVOR OR

포맷format

Figure kpo00298
Figure kpo00298

어셈블러 구문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

Figure kpo00299
Figure kpo00299

설명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

Figure kpo00300
Figure kpo00300

예외exception

없음none

VORC OR 보수VORC OR reward

포맷format

Figure kpo00301
Figure kpo00301

어셈블러구문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

Figure kpo00302
Figure kpo00302

설명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

Figure kpo00303
Figure kpo00303

예외exception

없음none

VPFTCH 프리훼치VPFTCH Prefetch

포맷format

Figure kpo00304
Figure kpo00304

어셈블러 구문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

Figure kpo00305
Figure kpo00305

어셈블러 구문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

Figure kpo00306
Figure kpo00306

예외exception

무효 데이타 어드레스 예외Invalid data address exception

VROL 좌로 회전Rotate VROL Left

포맷format

Figure kpo00307
Figure kpo00307

어셈블러 구문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

Figure kpo00308
Figure kpo00308

설명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

Figure kpo00309
Figure kpo00309

예외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, byte 9, and halfword data types, the programmer is responsible for specifying exactly the amount of rotation less than or equal to the number of bits in the data size. If the amount of rotation is greater than the specified data size, the result is undefined.

좌로 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

Figure kpo00310
Figure kpo00310

어셈블러 구문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

Figure kpo00311
Figure kpo00311

설명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

Figure kpo00312
Figure kpo00312

예외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, byte 9, and halfword data types, the programmer is responsible for specifying exactly the amount of rotation less than or equal to the number of bits in the data size. If the amount of rotation is greater than the specified data size, the result is undefined.

좌로 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

Figure kpo00313
Figure kpo00313

어셈블러 구문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

Figure kpo00314
Figure kpo00314

설명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.

Figure kpo00315
Figure kpo00315

연산calculate

Figure kpo00316
Figure kpo00316

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.

VSAT1 보다 하위의 라운드까지 포화Saturate up to the lower round than VSAT1

포맷format

Figure kpo00317
Figure kpo00317

어셈블러 구문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

Figure kpo00318
Figure kpo00318

설명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

Figure kpo00319
Figure kpo00319

예외exception

없음.none.

VSATU 보다 상위의 라운드까지 포화Saturation Up to Round Above VSATU

포맷format

Figure kpo00320
Figure kpo00320

어셈블러 구문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

Figure kpo00321
Figure kpo00321

설명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

Figure kpo00322
Figure kpo00322

예외exception

없음.none.

VSHFL 셔플VSHFL Shuffle

포맷format

Figure kpo00323
Figure kpo00323

어셈블러 구문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

Figure kpo00324
Figure kpo00324

설명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.

Figure kpo00325
Figure kpo00325

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.

VSHFLH 하이 셔플VSHFLH High Shuffle

포맷format

Figure kpo00326
Figure kpo00326

어셈블러 구문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

Figure kpo00327
Figure kpo00327

설명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

Figure kpo00329
Figure kpo00329

어셈블러 구문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

Figure kpo00330
Figure kpo00330

설명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.

Figure kpo00331
Figure kpo00331

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.

VST 저장VST storage

포맷format

Figure kpo00332
Figure kpo00332

어셈블러 구문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

Figure kpo00333
Figure kpo00333

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스Invalid data address, unaligned access

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.

VSTCB 순환 버퍼에의 저장Save to VSTCB circular buffer

포맷format

Figure kpo00334
Figure kpo00334

어셈블러 구문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

Figure kpo00335
Figure kpo00335

예외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

Figure kpo00336
Figure kpo00336

어셈블러 구문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

Figure kpo00337
Figure kpo00337

Figure kpo00338
Figure kpo00338

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.

VSTQ Quad 저장VSTQ Quad storage

포맷format

Figure kpo00339
Figure kpo00339

어셈블러 구문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.

Figure kpo00340
Figure kpo00340

Figure kpo00341
Figure kpo00341

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.

VSTR 반전 저장VSTR Invert Save

포맷format

Figure kpo00342
Figure kpo00342

어셈블러 구문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

Figure kpo00343
Figure kpo00343

Figure kpo00344
Figure kpo00344

예외exception

무효 데이타 어드레스, 정렬되지 않은 액세스.Invalid data address, unaligned access.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크에 의한 영향을 받지 않는다.This command is not affected by the element mask.

VSTWS 스트라이드로 저장Save as VSTWS stride

포맷format

Figure kpo00345
Figure kpo00345

어셈블러 구문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

Figure kpo00346
Figure kpo00346

예외exception

무효 데이타 액세스, 정렬되지 않은 액세스.Invalid data access, unsorted access.

VSUB 뺄셈VSUB subtraction

포맷format

Figure kpo00347
Figure kpo00347

어셈블러 구문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

Figure kpo00348
Figure kpo00348

설명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

Figure kpo00349
Figure kpo00349

예외exception

오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.

VSUBS 뺄셈과 세트VSUBS subtraction and set

포맷format

Figure kpo00350
Figure kpo00350

어셈블러 구문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

Figure kpo00351
Figure kpo00351

설명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

Figure kpo00352
Figure kpo00352

예외exception

오버플로우, 부동 소수점 무효 오퍼런드.Overflow, floating point invalid operand.

VUNSHFL 언셔플VUNSHFL Unshuffle

포맷format

Figure kpo00353
Figure kpo00353

어셈블러 구문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

Figure kpo00354
Figure kpo00354

설명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.

Figure kpo00355
Figure kpo00355

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.

VUNSHFLH 하이로 언셔플VUNSHFLH High Low Unshuffle

포맷format

Figure kpo00356
Figure kpo00356

어셈블러 구문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

Figure kpo00357
Figure kpo00357

설명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.

Figure kpo00358
Figure kpo00358

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.

VUNSHFLL 로우로 언셔플Unshuffle VUNSHFLL Low

포맷format

Figure kpo00359
Figure kpo00359

어셈블러 구문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

Figure kpo00360
Figure kpo00360

설명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.

Figure kpo00361
Figure kpo00361

연산calculate

예외exception

없음.none.

프로그래밍 주석Programming comments

이 명령은 엘리먼트 마스크를 사용하지 않는다.This command does not use an element mask.

VWBACK 기록VWBACK record

포맷format

Figure kpo00362
Figure kpo00362

어셈블러 구문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

Figure kpo00363
Figure kpo00363

어셈블러 구문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

Figure kpo00364
Figure kpo00364

예외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

Figure kpo00365
Figure kpo00365

어셈블러 구문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

Figure kpo00366
Figure kpo00366

설명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

Figure kpo00367
Figure kpo00367

예외exception

없음.none.

VXOR XOR(익스클루시브 OR)VXOR XOR (Exclusive OR)

포맷format

Figure kpo00368
Figure kpo00368

어셈블러 구문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

Figure kpo00369
Figure kpo00369

설명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

Figure kpo00370
Figure kpo00370

예외exception

없음.none.

VXORALL 모든 엘리먼트의 XOR(익스클루시브 OR)VXORALL XOR (exclusive OR) of all elements

포맷format

Figure kpo00371
Figure kpo00371

어셈블러 구문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

Figure kpo00372
Figure kpo00372

설명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)

단일 스칼라 값을 저장하도록 적응된 스칼라 레지스터 세트; 다수의 데이타 엘리먼트를 저장하도록 적응된 벡터 레지스터 세트; 및 상기 스칼라 레지스터 및 상기 벡터 레지스터에 결합된 프로세싱 회로;를 구비하는 프로세서에서 스칼라/벡터 연산이 조합된 단일 명령 복수 데이타 처리를 위한 연산방법에 있어서,A set of scalar registers adapted to store a single scalar value; A set of vector registers adapted to store a number of data elements; And a processing circuit coupled to the scalar register and the vector register, the method comprising: a single instruction plural data processing in which a scalar / vector operation is combined; 상기 스칼라 레지스터 세트와 상기 벡터 레지스터 세트를 상기 프로세싱 회로에 제공하는 단계;Providing the scalar register set and the vector register set to the processing circuit; 상기 스칼라 레지스터 세트를 상기 벡터 레지스터 세트와 독립시켜 분리하는 단계;Separating the scalar register set independently from the vector register set; 상기 명령으로부터 스칼라 레지스터 수 및 스칼라 값을 추출하는 단계;Extracting a scalar register number and a scalar value from the instruction; 상기 스칼라 레지스터의 수가 상기 벡터 레지스터 세트에 있는 벡터 레지스터를 식별할 수 있도록 상기 명령 규칙을 결정하는 단계;Determining the instruction rule such that the number of scalar registers can identify a vector register in the vector register set; 벡터 결과를 생성하기 위해 상기 스칼라 레지스터의 수에 의해 식별되는 상기 벡터 레지스터의 데이타 엘리먼트 각각에 상기 스칼라 값을 곱하거나 상기 데이터 엘리먼트 각각에 상기 스칼라 값을 더하여 병렬연산을 수행하는 단계;를 포함하것을 특징으로 하는 프로세싱 회로 연산 방법.And performing parallel operation by multiplying each of the data elements of the vector register identified by the number of scalar registers by the scalar value or adding the scalar value to each of the data elements to produce a vector result. Characterized in that the processing circuit operation method. 제 1항에 있어서, 상기 프로세싱 회로 연산방법은,The method of claim 1, wherein the processing circuit calculation method comprises: 상기 명령으로부터 벡터 레지스터의 수를 추출하는 단계;Extracting the number of vector registers from the instruction; 상기 벡터 레지스터의 수가 상기 스칼라 레지스터 세트에 있는 스칼라 레지스터를 식별할 수 있도록 상기 명령 규칙을 결정하는 단계; 및Determining the instruction rule so that the number of vector registers can identify a scalar register in the scalar register set; And 상기 데이터 엘리먼트들과 결합하기 위해 상기 벡터 레지스터의 수에 의해 식별되는 스칼라 레지스터로부터 상기 스칼라 값을 판독하는 단계를 더 구비함을 특징으로 하는 프로세싱 회로 연산 방법.And reading said scalar value from a scalar register identified by said number of vector registers for associating with said data elements. 제5항에 있어서,The method of claim 5, 상기 데이터 엘리먼트들과 결합하기 위해 상기 명령으로부터 상기 스칼라 값을 추출하는 단계를 더 구비함을 특징으로 하는 프로세싱 회로 연산방법.Extracting the scalar value from the instruction to combine with the data elements. 단일 스칼라 값을 저장하도록 적응된 스칼라 레지스터의 세트; 다수의 데이타 엘리먼트를 저장하도록 적응된 벡터 레지스터의 세트; 및 상기 스칼라 레지스터 및 상기 벡터 레지스터에 결합된 프로세싱 회로; 를 구비하는 프로세서에서 스칼라/벡터 연산이 조합된 단일 명령 복수 데이타 처리를 위한 연산방법에 있어서,A set of scalar registers adapted to store a single scalar value; A set of vector registers adapted to store a number of data elements; Processing circuitry coupled to the scalar register and the vector register; In the processor having a scalar / vector operation combined single instruction for processing multiple data processing, 상기 프로세서 내에 상기 스칼라 레지스터들과 벡터 레지스터들을 제공하는 단계;Providing the scalar registers and vector registers in the processor; 다른 스칼라 레지스터에 할당된 레지스터 번호와는 구별되는 레지스터 번호를 각각의 스칼라 레지스터에 할당하는 단계;Assigning each scalar register a register number distinct from a register number assigned to another scalar register; 상기 벡터 레지스터에 할당된 적어도 일부의 레지스터 번호가 상기 스칼라 레지스터에 할당된 레지스터 번호와 같으며, 다른 벡터 레지스터에 할당된 레지스터 번호와는 구별되는 레지스터 번호를 각각의 벡터 레지스터에 할당하는 단계;Assigning to each vector register a register number at least some of the register numbers assigned to the vector registers are the same as the register numbers assigned to the scalar registers and are distinct from register numbers assigned to other vector registers; 스칼라 레지스터를 식별하는 레지스터 번호인 제 1 오퍼런드와 벡터 레지스터를 식별하는 레지스터 번호인 제 2 오퍼런드 및 상기 백터 레지스터 내의 데이터 엘리먼트를 식별하는 제 3 오퍼런드를 포함하는 명령을 디코딩 하는 단계; 및Decoding an instruction comprising a first operand that is a register number identifying a scalar register and a second operand that is a register number identifying a vector register and a third operand identifying a data element in the vector register ; And 상기 제 1 오퍼런드에 의해 식별된 상기 스칼라 레지스터와 상기 제 2 오퍼런드에 의해 식별된 상기 벡터 레지스터 내의 데이타 엘리먼트 간이나, 상기 제 1 오퍼런드에 의해 식별되고 상기 스칼라 레지스터와 상기 제 2 오퍼런드에 의해 식별된 상기 벡터 레지스터 내의 상기 제 3 오퍼런드에 의해 식별된 상기 데이타 엘리먼트 간이나, 상기 제 1 오퍼런드에 의해 식별된 상기 스칼라 레지스터와 상기 제 2 오퍼런드에 의해 식별되고 상기 스칼라 레지스터에 저장된 값에 의해 식별되는 상기 벡터 레지스터 내에 있는 데이타 엘리먼트 간에 데이타를 이동시켜 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 프로세서 연산 방법.Between the scalar register identified by the first operand and the data element in the vector register identified by the second operand or between the scalar register and the second operand identified by the first operand. Between the data elements identified by the third operand in the vector register identified by the operand or by the scalar register and the second operand identified by the first operand. And executing data by moving data between data elements in the vector register identified by a value stored in the scalar register.
KR1019970012609A 1996-08-19 1997-04-04 Single instruction multiple data processing with combined scalar/vector operations KR100267089B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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