Cadence ConnX BBE32EP DSP User manual

Type
User manual
ConnX BBE32EP DSP User's Guide
For Cadence Tensilica DSP IP Cores
Cadence Design Systems, Inc.
Cadence Design Systems, Inc.
2655 Seely Ave.
San Jose, CA 95134
www.cadence.com
Copyright
©
2017 Cadence Design Systems, Inc. All
Rights Reserved
This publication is provided “AS IS.” Cadence Design Systems, Inc. (hereafter “Cadence") does not make any warranty of any kind,
either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
Information in this document is provided solely to enable system and software developers to use our processors. Unless specifically
set forth herein, there are no express or implied patent, copyright or any other intellectual property rights or licenses granted
hereunder to design or fabricate Cadence integrated circuits or integrated circuits based on the information in this document.
Cadence does not warrant that the contents of this publication, whether individually or as one or more groups, meets your
requirements or that the publication is error-free. This publication could include technical inaccuracies or typographical errors.
Changes may be made to the information herein, and these changes may be incorporated in new editions of this publication.
©
2017 Cadence, the Cadence logo, Allegro, Assura, Broadband Spice, CDNLIVE!, Celtic, Chipestimate.com, Conformal,
Connections, Denali, Diva, Dracula, Encounter, Flashpoint, FLIX, First Encounter, Incisive, Incyte, InstallScape, NanoRoute, NC-
Verilog, OrCAD, OSKit, Palladium, PowerForward, PowerSI, PSpice, Purespec, Puresuite, Quickcycles, SignalStorm, Sigrity, SKILL,
SoC Encounter, SourceLink, Spectre, Specman, Specman-Elite, SpeedBridge, Stars & Strikes, Tensilica, TripleCheck, TurboXim,
Vectra, Virtuoso, VoltageStorm, Xplorer, Xtensa, and Xtreme are either trademarks or registered trademarks of Cadence Design
Systems, Inc. in the United States and/or other jurisdictions.
OSCI, SystemC, Open SystemC, Open SystemC Initiative, and SystemC Initiative are registered trademarks of Open SystemC
Initiative, Inc. in the United States and other countries and are used with permission. All other trademarks are the property of their
respective holders.
Xtensa Release: RG-2017.7
Issue Date: 08/2017
Modification: 422358
Cadence Design Systems, Inc.
2655 Seely Ave.
San Jose, CA 95134
www.cadence.com
ii
Contents
List of Tables............................................................................................................................vii
List of Figures........................................................................................................................... ix
1 Changes from the Previous Version ...................................................................................11
2 Introduction......................................................................................................................... 13
2.1 Purpose of this User's Guide..................................................................................... 15
2.2 Installation Overview..................................................................................................15
2.3 ConnX BBE32EP DSP Architecture Overview.......................................................... 15
2.4 ConnX BBE32EP DSP Instruction Set Overview.......................................................18
2.5 Programming Model and XCC Vectorization............................................................. 19
3 ConnX BBE32EP DSP Features.........................................................................................21
3.1 ConnX BBE32EP DSP Register Files........................................................................22
3.2 ConnX BBE32EP DSP Architecture Behavior........................................................... 25
3.3 Operation Naming Conventions.................................................................................26
3.4 Fixed Point Values and Fixed Point Arithmetic.......................................................... 35
3.5 Data Types Mapped to the Vector Register File........................................................ 37
3.6 Data Typing................................................................................................................39
3.7 Multiplication Operation............................................................................................. 41
3.8 Vector Select Operations........................................................................................... 44
3.9 Vector Shuffle Operations.......................................................................................... 45
3.10 Block Floating Point................................................................................................. 46
3.11 Complex Conjugate Operations............................................................................... 46
3.12 FLIX Slots and Formats........................................................................................... 47
4 Programming a ConnX BBE32EP DSP.............................................................................. 49
4.1 Programming in Prototypes....................................................................................... 52
4.2 Xtensa Xplorer Display Format Support.................................................................... 54
4.3 Operator Overloading and Vectorization....................................................................55
4.4 Programming Styles...................................................................................................56
4.5 Conditional Code....................................................................................................... 63
4.6 Using the Two Local Data RAMs and Two Load/Store Units.....................................64
4.7 Other Compiler Switches........................................................................................... 66
4.8 TI C6x Instrinsics Porting Assistance Library.............................................................66
5 Configurable Options.......................................................................................................... 71
5.1 FFT............................................................................................................................ 72
5.2 Symmetric FIR........................................................................................................... 73
5.3 Packed Complex Matrix Multiply................................................................................76
5.4 LFSR and Convolutional Encoding............................................................................ 78
5.5 Linear Block Decoder.................................................................................................80
5.6 1D Despread..............................................................................................................80
iii
5.7 Soft-bit Demapping.................................................................................................... 82
5.8 Comparison of Divide Related Options......................................................................84
5.8.1 Vector Divide ...................................................................................................87
5.8.2 Fast Vector Reciprocal & Reciprocal Square Root.......................................... 88
5.8.3 Advanced Vector Reciprocal & Reciprocal Square Root................................. 89
5.9 Advanced Precision Multiply/Add...............................................................................91
5.10 Inverse Log-likelihood Ratio (LLR)...........................................................................95
5.11 Single and Dual Peak Search.................................................................................. 97
5.12 Single-precision Vector Floating-Point..................................................................... 99
6 Floating-Point Operations................................................................................................. 101
6.1 ConnX BBE32EP DSP Floating-Point Features...................................................... 103
ConnX BBE32EP DSP Register Files Related to Floating-Point............................103
ConnX BBE32EP DSP Architecture Behavior Related to Floating-Point............... 103
Binary Floating-point Values................................................................................... 104
Signed Zero Number....................................................................................... 104
Subnormal Number......................................................................................... 104
Normal Number............................................................................................... 104
Biased and Unbiased Exponents.................................................................... 104
Half Precision Data................................................................................................. 105
Single Precision Data............................................................................................. 105
Maximum Possible Error in the Unit in the Last Place (ULP)................................. 106
Encodings of Infinity and Not a Number (NaN).......................................................106
Scalar Float Data Types Mapped to the Vector Register File................................. 107
Vector Float Data Types Mapped to the Vector Register File................................. 107
Floating-Point Data Typing..................................................................................... 108
Floating-Point Rounding and Exception Controls................................................... 108
Floating-Point Status/Exception Flags....................................................................109
6.2 ConnX BBE32EP DSP Floating-Point Operations................................................... 110
Arithmetic Operations..............................................................................................111
Floating-point Conversion Operations.....................................................................111
Integer to/from Float Conversion Operations.......................................................... 111
Float to Integral Value Rounding Operations.......................................................... 112
Classification, Comparison, and Min/Max Operations............................................ 112
Division and Square Root Operations.....................................................................113
Complex Arithmetic Operations.............................................................................. 114
Reciprocal, Reciprocal Square Root, and Fast Square Root Operations............... 114
Notes on Not a Number (NaN) Propagation........................................................... 115
6.3 ConnX BBE32EP DSP Floating-Point Programming............................................... 115
General Guidelines for Floating-Point Programming.............................................. 115
Invalid Floating-Point Operation Examples.............................................................116
Arithmetic Exception, and Exception Reduction..................................................... 116
Associative and Distributive Rules, as well as Expression Transformations.......... 117
Fused-multiply-add (FMA), and Parallel-Add-Sub (ADDSUB)................................117
iv
Division, Square Root, Reciprocal, and Reciprocal Square Root Intrinsic
Functions........................................................................................................... 118
Sources of NaN, and Potential Changes of NaN Sign and Payload.......................118
Auto-Vectorizing Scalar Floating-Point Programs...................................................118
Compiler Switches Related to Floating-point Programs..........................................118
Domain Expertise, Vector Data-types, C Instrinsics, and Libraries........................ 120
6.4 Accuracy and Robustness Optimizations on ConnX BBE32EP DSP...................... 120
Some Old-timers’ Impression................................................................................. 120
Comparisons and Measurements against Infinitely Precise Results...................... 121
Depending on Rounding Mode vs. Not; Standards Conforming vs. Beyond.......... 121
Computer Algebra, Algorithm Selections, Default Substitutions, and Exception
Flags.................................................................................................................. 122
Error Bounds, Interval Arithmetic, and Rounding Mode......................................... 123
FMA, Split Number................................................................................................. 123
6.5 Implementing the Floating Point FFT/IFFT on ConnX BBE32EP DSP Vector
Floating Point Unit (VFPU)........................................................................................124
Radix-4 FFT implementation.................................................................................. 124
Intrinsic Code for Vectroized Radix-4 Butterfly and Twiddle Multiplication ..... 125
Optimizations of Implementation of IFFT.........................................................125
Performance of FFT on ConnX BBE32EP DSP-VFPU................................... 126
Twiddle Size.................................................................................................... 127
6.6 Floating Point References........................................................................................128
7 Special Operations............................................................................................................129
7.1 Polynomial Evaluation..............................................................................................130
7.2 Matrix Computation..................................................................................................131
7.3 Pairwise Real Multiply Operation............................................................................. 132
7.4 Descramble Operations........................................................................................... 133
7.5 Vector Compression and Expansion........................................................................134
7.6 Predicated Vector Operations.................................................................................. 135
8 Load & Store Operations...................................................................................................139
8.1 ConnX BBE32EP DSP Addressing Modes..............................................................140
8.2 Aligning Loads and Stores....................................................................................... 140
8.3 Circular Addressing..................................................................................................142
8.4 Variable Element Vector Aligning Loads and Stores................................................143
8.5 Update Post-increment in Loads and Stores........................................................... 143
9 Nature DSP Signal Library................................................................................................ 145
10 Implementation Methodology.......................................................................................... 147
10.1 Configuring a ConnX BBE32EP DSP.................................................................... 148
10.2 XPG Estimation for Size, Performance and Power................................................150
10.3 Basic ConnX BBE32EP DSP Characteristics........................................................ 150
10.4 Extending a ConnX BBE32EP DSP with User TIE................................................ 150
Compiling User TIE.................................................................................................152
v
Name Space Restrictions for User TIE...................................................................152
10.5 XPG Configuration Options and Capabilities......................................................... 154
10.6 Sample Configuration Templates for the ConnX BBE32EP DSP ......................... 157
10.7 Synthesis and Place-and-Route............................................................................ 163
10.8 ConnX BBE32EP DSP Memory Floor-planning Suggestions................................163
10.9 Mapping the ConnX BBE32EP DSP to FPGA....................................................... 165
11 On-Line ISA, Protos and Configuration Information........................................................ 167
vi
List of Tables
Table 1: Basic Instruction Formats.......................................................................................... 17
Table 2: ConnX BBE32EP DSP Multiply Performance........................................................... 19
Table 3: Sample Categories of Operations............................................................................. 28
Table 4: Types of Load/Store Operations................................................................................34
Table 5: Vector Data Types Mapped to Vector Register Files................................................. 38
Table 6: Scalar Memory Data Types....................................................................................... 39
Table 7: Scalar Register Data Types.......................................................................................40
Table 8: Vector Memory Data Types....................................................................................... 40
Table 9: Vector Register Data Types.......................................................................................40
Table 10: Types of ConnX BBE32EP DSP Multiplication Operations..................................... 41
Table 11: Vector Initialization Operation Arguments................................................................44
Table 12: Decoding Complex Codes for Despreading............................................................ 82
Table 13: Set of Symbol Constellations Supported................................................................. 83
Table 14: Comparison of Divide Related Options................................................................... 84
Table 15: Advanced Precision Multiply/Add Operations Overview..........................................92
Table 16: Use cases of peak search operations..................................................................... 99
Table 17: Components of a Binary Floating-point Value....................................................... 104
Table 18: Half Precision Data................................................................................................105
Table 19: Single Precision Data............................................................................................ 105
Table 20: Encodings of Infinity and Not a Number (NaN)..................................................... 107
Table 21: Complex Single Precision Value............................................................................107
Table 22: Vector Float/Double Data Types Mapped to the Vector Register File................... 107
Table 23: FCR Fields.............................................................................................................108
Table 24: FCR Fields and Meaning.......................................................................................109
Table 25: FSR Fields.............................................................................................................109
Table 26: FSR Fields and Meaning....................................................................................... 110
Table 27: Protos for Descrambling........................................................................................ 134
Table 28: Predicated Vector Operations................................................................................136
Table 29: ConnX BBE32EP DSP Addressing Modes........................................................... 140
Table 30: Circular Buffer State Registers.............................................................................. 142
Table 31: State and Register File Names..............................................................................152
Table 32: User Register Entries............................................................................................ 153
Table 33: Simulation Modeling Capabilities...........................................................................155
Table 34: Instruction Extension............................................................................................. 155
Table 35: Allowed Architecture Definition..............................................................................155
Table 36: Instruction Width....................................................................................................155
Table 37: Coprocessor Configuration Options...................................................................... 156
Table 38: Local Memories..................................................................................................... 156
vii
Table 39: TIE Option Packages.............................................................................................156
Table 40: ConnX BBE32EP DSP Base Configuration...........................................................157
Table 41: ConnX BBE32EP DSP Configuration Options...................................................... 162
Table 42: Xilinx Synthesis Results (RE-2014.0)....................................................................166
viii
List of Figures
Figure 1: ConnX BBE32EP DSP Architecture........................................................................ 16
Figure 2: ConnX BBE32EP DSP Register Files......................................................................23
Figure 3: Base Xtensa ISA Register Files...............................................................................24
Figure 4: Radix4 FFT Pass..................................................................................................... 72
Figure 5: 16-tap Real Symmetric FIR with Complex Data...................................................... 76
Figure 6: Inverse LLR Calculation...........................................................................................96
Figure 7: Radix - 4 Butterfly Implementation.........................................................................124
Figure 8: Performance of Complex Float FFT.......................................................................126
Figure 9: ConnX BBE32EP DSP Configuration Options in Xtensa Xplorer.......................... 149
ix
1. Changes from the Previous Version
In this release, Xtensa LX7 architecture and hardware are
provided for a limited set of products. Xtensa software and
tools are available to all users for software upgrade from
previous releases.
The following changes (denoted with green change bars)
were made to this document for the Cadence RG-2017.7
release of Xtensa processors. Subsequent releases may
contain updates for features in this release or additional
features may be added.
Section Extending a ConnX BBE32EP DSP with User
TIE on page 150 was modified to explain the addition
of a restriction on a TIE Compiler error.
The following changes (denoted with orange change bars)
were made to this document for the Cadence RG-2017.5
release of Xtensa processors. Subsequent releases may
contain updates for features in this release or additional
features may be added.
Section Symmetric FIR on page 73 was modified to
explain the use of symmetrical FIR operations with
complex data in ConnX BBE32EP DSP.
Added a new section Implementing the Floating Point
FFT/IFFT on ConnX BBE32EP DSP Vector Floating
Point Unit (VFPU) on page 124.
The following changes (denoted with purple change bars)
were made to this document for the Cadence RG-2016.4
release of Xtensa processors. Subsequent releases may
contain updates for features in this release or additional
features may be added.
Added new chapter on "Single-precision Vector
Floating-point Option"
Updated table of FLIX formats
Updated list of DSP options
General cleanup and clarifications
11
2. Introduction
Topics:
Purpose of this User's
Guide
Installation Overview
ConnX BBE32EP DSP
Architecture Overview
ConnX BBE32EP DSP
Instruction Set Overview
Programming Model and
XCC Vectorization
The Cadence
®
Tensilica
®
ConnX BBE32EP DSP (32-MAC
Baseband Engine) is based on a ultra-high performance
DSP architecture designed for use in next-generation
baseband processors for LTE Advanced, other 4G cellular
radios and multi-standard broadcast receivers. The high
computational requirements of such applications require
new and innovative architectures with a high degree of
parallelism and efficient I/Os. The ConnX BBE32EP DSP
meets these needs by combining a 16-way Single
Instruction, Multiple Data (SIMD), 32 multiplier-
accumulators (MAC) and up to 5-issue Very Long
Instruction Word (VLIW) processing pipeline with a rich
and extensible set of interfaces.
The ConnX BBE family natively supports both real and
complex arithmetic operations. For digital signal
processing developers, this greatly simplifies development
of algorithms dominated by complex arithmetic. In addition
to having the SIMD/VLIW DSP core, the ConnX BBE32EP
DSP contains a 32-bit scalar processor, ideal for efficient
execution of control code. This combined SIMD/VLIW/
Scalar design makes the ConnX BBE32EP DSP ideal for
building real systems where high computational
throughput is combined with complex decision making.
The ConnX BBE32EP DSP is built around a core vector
pipeline consisting of thirty-two 16bx16b MACs along with
a set of versatile pipelined execution units. These units
support flexible precision real and complex multiply-add;
bit manipulation; data shift and normalization; data select,
shuffle and interleave. The ConnX BBE32EP DSP
multipliers and its associated adder and multiplexer trees
enable execution of complex multiply operations and
signal processing filter structures in parallel. The results of
these operations can be extended up to a precision of 40-
bits per element, truncated/rounded/saturated or shifted/
packed to meet the needs of different algorithms and
implementations. The ConnX BBE32EP DSP instruction
set is optimized for several DSP kernel operations and
matrix multiplies with added acceleration for a wide range
of key wireless functions. In addition, the instruction set
13
supports signed*unsigned multiplies for emulation of 32-
bit wide multiplication operations.
The ConnX BBE32EP DSP supports programming in C/C
++ with a vectorizing compiler. Automatic vectorization of
scalar C and full support for vector data types allows
software development of algorithms without the need for
programming at assembly level. Native C operator
overloading is supported for natural programming with
standard C operators on real and complex vector data-
types. The ConnX BBE32EP DSP has a Boolean
predication architecture that supports a large number of
predicated operations. This enables the ConnX BBE32EP
DSP compiler to achieve a high vectorization throughput
even with complicated functions that have conditional
operations embedded in their inner loops.
The BBE32EP and its larger cousin, the BBE64EP share
a common architecture, providing a high degree of code
portability between the two cores. Both cores share a
common set of check box options that allow capabilities to
be added/subtracted from the core. This permits the
system designer to optimize the core for a particular
application space reducing both area and power
consumption.
14
2.1 Purpose of this User's Guide
The ConnX BBE32EP DSP User’s Guide provides an overview of the ConnX BBE32EP DSP
architecture and its instruction set. It will help ConnX BBE32EP DSP programmers identify
commonly used techniques to vectorize algorithms. It provides guidelines to improve
software performance through the use of appropriate ConnX BBE32EP DSP instructions,
intrinsics, protos and primitives. It also serves as a reference for programming the ConnX
BBE32EP DSP in a C/C++ software development environment using the Xtensa Xplorer (XX)
Integrated Development Environment (IDE). Additionally, this guide will assist those ConnX
BBE32EP DSP users who wish to add custom operations (more hardware) to the ConnX
BBE32EP DSP instruction set using Tensilica
®
Instruction Extension (TIE) language.
To use this guide most effectively, a basic level of familiarity with the Xtensa software
development flow is highly recommended. For more details, refer to the Xtensa Software
Development Toolkit Users Guide.
Throughout this guide, the symbol <xtensa_root> refers to the installation directory of the
user's Xtensa configuration. For example, <xtensa_root> might refer to the directory /usr/
xtensa/<user>/<s1> if <user> is the username and <s1> is the name of the user’s Xtensa
configuration. For all examples in this guide, replace <xtensa_root> with the path to the
installation directory of the user’s Xtensa distribution.
2.2 Installation Overview
To install a ConnX BBE32EP DSP configuration, follow the same procedures described in the
Xtensa Development Tools Installation Guide. The ConnX BBE32EP DSP comes with a
library of examples provided in the XX workspace called
bbe32ep_examples_re_v<version_num>.xws.
The ConnX BBE32EP DSP include-files are in the following directories and files:
<xtensa_root>/xtensa-elf/arch/include/xtensa/config/defs.h
<xtensa_root>/xtensa-elf/arch/include/xtensa/tie/xt_bben.h
Note: There is an additional include header file for TI C6x code compatibility, which is
discussed in TI C6x Instrinsics Porting Assistance Library on page 66. This include
file maps TI C6x intrinsics into standard C code and is meant to assist porting only.
2.3 ConnX BBE32EP DSP Architecture Overview
ConnX BBE32EP DSP, a 16-way SIMD processor, has the ability to work on several data
elements in parallel at the same time. The ConnX BBE32EP DSP executes a single
operation simultaneously across a stream of data elements by means of vector processing.
For example, it allows for vector additions through a narrow vector ADD (sum of two 16-
15
element 16-bits/element vectors) or wide vector (sum of two 16-element 40-bits/element
vectors) ADD, in parallel. These operations include optimized instructions for complex
multiplication and multiply-accumulation, matrix computation, vector division (optional), vector
reciprocal & reciprocal square root (optional) and other performance critical kernels.
ConnX BBE32EP DSP has a 5-slot VLIW architecture, in which up to five operations can be
scheduled and dispatched in parallel every cycle. This allows the processor to support
multiply-accumulate operations of two narrow vectors of eight 16-bit complex (32-bit real-
imaginary pair) elements in parallel, equivalently thirty-two 16-bit real elements in total, with a
load of eight complex operands and a store of eight complex results in every cycle. To
sustain such high memory bandwidth requirements, the ConnX BBE32EP DSP has two
asymmetric Load/Store Units (LSUs) which can independently communicate with two local
data memories.
For higher efficiency, the ConnX BBE32EP DSP fetches instructions out of a 128-bit wide
access to local instruction memory (IRAM). The instruction fetch interface supports a mix of
16/24-bit single instructions and 48/96-bit FLIX (up to 5-way) instructions. The processor can
also read from and write to system memory and devices attached to the standard system
buses. Other processors or DMA engines can transfer data in and out of the local memories
in parallel with the processor pipeline. The processor can also have an instruction cache. The
ConnX BBE32EP DSP can also be supplemented with any number of wide, high-speed I/O
interfaces (data cache, TIE ports and queues) to directly control devices or hardware blocks,
and to move data directly into and out of the processor register files.
Figure 1: ConnX BBE32EP DSP Architecture
16
The ConnX BBE32EP DSP architecture uses variable length instructions, with encodings of
16/24-bits for its baseline Xtensa RISC instructions, and 48/96-bits for up to five operations in
VLIW that may be issued in parallel. The Xtensa compiler schedules different operations into
up to five VLIW slots available. The VLIW instruction Slot-0 is used to issue mostly loads
and/or store operations. The instruction Slot-1 is used primarily for load operations using the
second LSU while the instruction Slot-4 schedules most move operations. The instruction
Slot-2 mostly allows ALU with multiply operations while the instruction Slot-3 is purely for
ALU operations present in the ConnX BBE32EP DSP instruction set. However, it is important
to note that the positions of these slots are all interleaved in an actual instruction word much
differently than the software view.
The table below illustrates all the basic instruction formats supported by the different
operation slots available in the ConnX BBE32EP DSP VLIW architecture. The Xtensa C
Compiler (XCC) automatically picks an instruction format that offers the best schedule for an
application. When possible, XCC will attempt to pick a 48-bit FLIX format or 16/24-bit
standard instruction format to reduce code size.
Note:
Users may optionally add additional 48/96-bit instructions formats as user TIE; see
Extending a ConnX BBE32EP DSP with User TIE on page 150.
Format 8 is available only when the Advanced Precision Multiply/Add option is
present in a ConnX BBE32EP DSP configuration.
Format 13 and Format 14 are available only when the Single-precision Vector
Floating-point option is present in a ConnX BBE32EP DSP configuration.
Table 1: Basic Instruction Formats
Slot 0
Slot 1 Slot 2 Slot 3 Slot 4
Format0:96b F0_S0_LdStALU F0_S1_LdPk F0_S2_Mul F0_S3_ALU -
Format1:96b F1_S0_St F1_S1_Base F1_S2_WALUMul F1_S3_ALU F1_S4_Mov
e
Format2:96b F2_S0_LdSt F2_S1_Ld F2_S2_WALUMul F2_S3_ALU F2_S4_Mov
e
Format3:96b F3_S0_St F3_S1_Ld F3_S2_ALUMul F3_S3_ALU F3_S4_Mov
e
Format4:96b F4_S0_LdSt F4_S1_LdPkDiv F4_S2_Mul F4_S3_ALU -
Format5:96b F5_S0_St F5_S1_LdPk F5_S2_Mul F5_S3_ALU F5_S4_Shfl
Format6:96b F6_S0_St F6_S1_LdPk F6_S2_Mul F6_S3_ALUFIRFFT F6_S4_Mov
e
Format7:96b F7_S0_St F7_S1_Base F7_S2_ALUMul F7_S3_ALU F7_S4_Shfl
Format8*:96b F8_S0_LdSt F8_S1_LdPk F8_S2_MulM F8_S3_ALU F8_S4_Wac
c
17
Slot 0 Slot 1 Slot 2 Slot 3 Slot 4
Format9:48b F9_S0_LdStALU F9_S1_None F9_S2_None F9_S3_ALU -
Format10:48b F10_S0_LdStALU F10_S1_None F10_S2_Mul - -
Format11:48b F11_S0_LdStALU F11_S1_LdPk - - -
Format12:96b F12_S0_St F12_S1_Ld F12_S2_Mul F12_S3_ALUFIRFFT F12_S4_Mo
ve
Format13:96b F13_S0_LdSt F13_S1_Ld F13_S2_FPMul F13_S3_FPALU -
Format14:96b F14_S0_St F14_S1_Ld F14_S2_FPMul F14_S3_FPAddSub -
2.4 ConnX BBE32EP DSP Instruction Set Overview
The ConnX BBE32EP DSP is built around the baseline Xtensa RISC architecture which
implements a rich set of generic instructions optimized for efficient embedded processing.
The power of the ConnX BBE32EP DSP comes from a comprehensive set of over 500 DSP
and baseband optimized operations excluding the baseline Xtensa RISC operations. A
variety of load/store operations support five basic and two special addressing modes for
16/32-bit scalar and 16-bit narrow vector data-types; see Load & Store Operations on page
139. A special addressing mode for circular addressing is also available. Additionally, the
ConnX BBE32EP DSP supports aligning load/store operations to deliver high bandwidth
loads and stores for unaligned data.
Vector data management in the ConnX BBE32EP DSP is supported through operations
designed for element-level data selection, shuffle or shift. Further, to easily manage precision
in vector data there are packing operations specific to each data-type supported. Additionally,
there is an enhanced ISA support for predicated vector operations. Vector level predication
allows a vectorizing compiler to exploit deeper levels of inherent parallelism in a program;
see Predicated Vector Operations on page 135.
Multiply operations supported by the ConnX BBE32EP DSP include real and complex
16bx16b multiply, multiply-round and multiply-add operations. Multiply operations for complex
data provide support for conjugate arithmetic, full-precision arithmetic, magnitude
computation with saturated/rounded outputs. The ConnX BBE32EP DSP is capable of eight
complex multiplies per cycle where each complex product involves four real multiplies. The
architecture supports extended precision with guard bits on all 40-bit wide vector register
data, full support for double precision data and 40-bit accumulation on all MAC operations
without any performance penalty. A wide variety of arithmetic, logical, and shift operations are
supported for up to sixteen 40-bit data-words per cycle. The architecture provides special
operations that assist matrix-multiply operations.
For algorithm and application specific acceleration, the ConnX BBE32EP DSP can be
configured with a number of options:
FFT
18
Symmetrical FIR
Packed complex matrix multiply
LFSR & convolutional encoding
Linear block decoder
1D Despreader
Soft-bit demapping
Vector divide
Fast reciprocal & reciprocal square root
Advanced precision reciprocal & reciprocal square root
Advanced precision multiply/add (see note below)
Inverse log-likelihood ratio (LLR)
Single and dual peak search
Single-precision vector floating-point (see note below)
Restriction: The following pair of options are mutually exclusive:
Advanced precision multiply/add
Single-precision vector floating-point
As an example, by configuring a ConnX BBE32EP DSP with the symmetric FIR option and
using pairwise real multiply operations, the configured core offers very high performance for a
wide range of FIR kernels. The performance, in terms of MACs/cycle, on a ConnX BBE32EP
DSP configured for FIR operations is highlighted in the table below.
Table 2: ConnX BBE32EP DSP Multiply Performance
Data Coefficients Type MACs/cycle
Complex Real Symmetric 64
Complex Real Asymmetric 32
Real Real Symmetric 64
Real Real Asymmetric 32
The ConnX BBE32EP DSP instruction set is described in further detail later in ConnX
BBE32EP DSP Features on page 21.
2.5 Programming Model and XCC Vectorization
The ConnX BBE32EP DSP supports a number of programming models -- including standard
C/C++, the ConnX BBE32EP DSP-specific integer and fixed-point data types with operator
overloads and a level of automated vectorization, scalar intrinsics and vector intrinsics.
19
The ConnX BBE32EP DSP contains integer and fixed-point data types that can be used
explicitly by a programmer to write code. These data types can be used with built-in C/C++
operators or with protos (also called intrinsics) as described later in Programming a ConnX
BBE32EP DSP on page 49.
Vectorization, which can be manual or automatic, analyzes an application program for
possible vector parallelism and restructures it to run efficiently on a given ConnX BBE32EP
DSP configuration. Manual vectorization using the ConnX BBE32EP DSP data types and
protos is discussed later in Programming a ConnX BBE32EP DSP on page 49. The Xtensa
C and C++ compiler (XCC) contains a feature to perform automatic vectorization on many
ConnX BBE32EP DSP supported data types. The compiler analyzes and vectorizes a
program with little or no user intervention. It generates code for loops by using the ConnX
BBE32EP DSP operations. It also provides compiler flags and pragmas for users to guide
this process. This feature and its related flags and pragmas are documented in the Xtensa C
and C++ Compiler User’s Guide.
The current generation ConnX cores introduce a new N-way programming model for vector
processing using data-types in memory and registers. The N-way model consists of N-
element data groups to facilitate portable vector programming. N-way refers to the natural
SIMD size of a ConnX machine. The ConnX BBE32EP DSP supports N=16. A ConnX
BBE32EP DSP FLIX instruction can bundle up to five SIMD operations in parallel and each
operation is capable of producing up to ‘N’ results in an independent FLIX lane. Programmers
can adopt the N-way abstraction model by using Ctypes, operations and protos in their code
that are either N-way or ‘N/2’-way (denoted by ‘N_2’ in Ctypes, operation and proto names).
N-way model on the ConnX BBE32EP DSP supports N and N_2 as an abstract
representation of 16 and 8 respectively. This makes code written using the N-way model
easy to port to other architectures with a different SIMD size or example, other SIMD variants
in the BBE EP Cores family -BBE64EP. Although not recommended, users can also use
equivalent ctypes and protos whose names explicitly have ‘16’ or ‘8’ in place of ‘N’ or ‘N_2’
respectively.
For automatic vectorization in an N-way environment, however, it is required that all vector
types inside a loop have the same SIMD width. In the ConnX BBE32EP DSP, this exposes
an important distinction between real and complex vector types. While the real vector types
are supported by a SIMD width of N by the core, the complex vector types are supported by
two natural SIMD widths – N (16) and ‘N_2’ (8). For instance, xb_vecN_2xc16 is an 8-way
complex vector type stored in a single register while xb_vecNxc16 is a 16-way complex
vector type stored in a pair of registers. It is recommended to use the xb_vecN_2xc16 type
when programming only complex vector types, but when programming real and complex
vector types together, the xb_vecNxc16 vector type is suggested for complex data.
20
  • Page 1 1
  • Page 2 2
  • Page 3 3
  • Page 4 4
  • Page 5 5
  • Page 6 6
  • Page 7 7
  • Page 8 8
  • Page 9 9
  • Page 10 10
  • Page 11 11
  • Page 12 12
  • Page 13 13
  • Page 14 14
  • Page 15 15
  • Page 16 16
  • Page 17 17
  • Page 18 18
  • Page 19 19
  • Page 20 20
  • Page 21 21
  • Page 22 22
  • Page 23 23
  • Page 24 24
  • Page 25 25
  • Page 26 26
  • Page 27 27
  • Page 28 28
  • Page 29 29
  • Page 30 30
  • Page 31 31
  • Page 32 32
  • Page 33 33
  • Page 34 34
  • Page 35 35
  • Page 36 36
  • Page 37 37
  • Page 38 38
  • Page 39 39
  • Page 40 40
  • Page 41 41
  • Page 42 42
  • Page 43 43
  • Page 44 44
  • Page 45 45
  • Page 46 46
  • Page 47 47
  • Page 48 48
  • Page 49 49
  • Page 50 50
  • Page 51 51
  • Page 52 52
  • Page 53 53
  • Page 54 54
  • Page 55 55
  • Page 56 56
  • Page 57 57
  • Page 58 58
  • Page 59 59
  • Page 60 60
  • Page 61 61
  • Page 62 62
  • Page 63 63
  • Page 64 64
  • Page 65 65
  • Page 66 66
  • Page 67 67
  • Page 68 68
  • Page 69 69
  • Page 70 70
  • Page 71 71
  • Page 72 72
  • Page 73 73
  • Page 74 74
  • Page 75 75
  • Page 76 76
  • Page 77 77
  • Page 78 78
  • Page 79 79
  • Page 80 80
  • Page 81 81
  • Page 82 82
  • Page 83 83
  • Page 84 84
  • Page 85 85
  • Page 86 86
  • Page 87 87
  • Page 88 88
  • Page 89 89
  • Page 90 90
  • Page 91 91
  • Page 92 92
  • Page 93 93
  • Page 94 94
  • Page 95 95
  • Page 96 96
  • Page 97 97
  • Page 98 98
  • Page 99 99
  • Page 100 100
  • Page 101 101
  • Page 102 102
  • Page 103 103
  • Page 104 104
  • Page 105 105
  • Page 106 106
  • Page 107 107
  • Page 108 108
  • Page 109 109
  • Page 110 110
  • Page 111 111
  • Page 112 112
  • Page 113 113
  • Page 114 114
  • Page 115 115
  • Page 116 116
  • Page 117 117
  • Page 118 118
  • Page 119 119
  • Page 120 120
  • Page 121 121
  • Page 122 122
  • Page 123 123
  • Page 124 124
  • Page 125 125
  • Page 126 126
  • Page 127 127
  • Page 128 128
  • Page 129 129
  • Page 130 130
  • Page 131 131
  • Page 132 132
  • Page 133 133
  • Page 134 134
  • Page 135 135
  • Page 136 136
  • Page 137 137
  • Page 138 138
  • Page 139 139
  • Page 140 140
  • Page 141 141
  • Page 142 142
  • Page 143 143
  • Page 144 144
  • Page 145 145
  • Page 146 146
  • Page 147 147
  • Page 148 148
  • Page 149 149
  • Page 150 150
  • Page 151 151
  • Page 152 152
  • Page 153 153
  • Page 154 154
  • Page 155 155
  • Page 156 156
  • Page 157 157
  • Page 158 158
  • Page 159 159
  • Page 160 160
  • Page 161 161
  • Page 162 162
  • Page 163 163
  • Page 164 164
  • Page 165 165
  • Page 166 166
  • Page 167 167
  • Page 168 168

Cadence ConnX BBE32EP DSP User manual

Type
User manual

Ask a question and I''ll find the answer in the document

Finding information in a document is now easier with AI