The VFP Register File
ARM DDI 0301H
Copyright © 2004-2009 ARM Limited. All rights reserved.
19-10
ID012310
Non-Confidential, Unrestricted Access
19.7
Access to register banks in CDP operations
The register file is especially suited for short vector operations. The four register banks function
as four circular hardware queues. Short vector operations significantly improve the performance
of operations with high data throughput such as signal processing and matrix manipulation
functions.
19.7.1
About register banks
As Figure 19-4 shows, the register file is divided into four banks with eight registers in each
bank for single-precision instructions and four registers per bank for double-precision
instructions. CDP instructions access the banks in a circular manner. Load and store multiple
instructions do not access the registers in a circular manner but treat the register file as a linearly
ordered structure.
See
ARM Architecture Reference Manual, Part C
for more information on VFP addressing
modes.
Figure 19-4 Register banks
A short vector CDP operation that has a source or destination vector crossing a bank boundary
wraps around and accesses the first register in the bank.
Example 19-1 shows the iterations of the following short vector add instruction:
FADDS S11, S22, S31
In this instruction, the LEN field contains b101, selecting a vector length of six iterations, and
the STRIDE field contains b00, selecting a vector stride of one.
Example 19-1 Register bank wrapping
FADDS S11, S22, S31
; 1st iteration
FADDS S12, S23, S24
; 2nd iteration. The 2nd source vector wraps around
; and accesses the 1st register in the 4th bank
FADDS S13, S16, S25
; 3rd iteration. The 1st source vector wraps around
; and accesses the 1st register in the 3rd bank
FADDS S14, S17, S26
; 4th iteration
FADDS S15, S18, S27
; 5th iteration
FADDS S8, S19, S28
; 6th and last iteration. The destination vector
; wraps around and writes to the 1st register in the
S24
S25
S26
S27
S28
S29
S30
S31
Bank 3
D12
D13
D14
D15
S17
S18
S19
S20
S21
S22
S16
Bank 2
D8
D9
D10
D11
S23
S8
S9
S10
S11
S12
S13
S14
S15
Bank 1
D4
D5
D6
D7
S3
S2
S4
S5
S6
S7
S0
S1
Bank 0
D0
D1
D2
D3