...

High-Performance FPGA-Based QR Decomposition

by user

on
Category: Documents
12

views

Report

Comments

Transcript

High-Performance FPGA-Based QR Decomposition
High-Performance FPGA-Based
QR Decomposition
Huy Nguyen, James Haupt, Michael Eskowitz, Birol Bekirov,
Jonathan Scalera, Thomas Anderson,
Michael Vai, and Kenneth Teitelbaum
HPEC 2005
September 20, 2005
* This work is sponsored by the Department of the Air Force under Air Force Contract FA8721-05-C-0002. Opinions, interpretations,
conclusions, and recommendations are those of the authors and are not necessarily endorsed by the United States Government.
HPEC 2005 -1
HTN 10/28/2005
MIT Lincoln Laboratory
Outline
HPEC 2005 -2
HTN 10/28/2005
•
QR Computation
•
C-Language Implementation on FPGA
•
Pipelined Linear Array on FPGA
•
Summary
MIT Lincoln Laboratory
Adaptive Beamforming in Radar Processing
Channels X
A/D
Subband
Filter Bank
Adaptive
Beamform
4
16
Real-Time Frontend Processing
GMTI
processing
Wideband
Active
Radar
Steering
vectors
V
Weights W
Beams Y
Beamforming
Adaptive Weight
Computation
Double
r = QR(X)
backW = inv(XH * X) * V
substitution
= inv(r) * (inv(r)H * V)
Y = WH * X
Adaptive Beamforming
Airborne
Electronically
Steered
Array
Backend
Processing
& Recording
Processor
Subband Filtering and
Adaptive Beamforming
HPEC 2005 -3
HTN 10/28/2005
Non-adaptive beam patterns
Wideband Interference
Adaptive beam patterns
Interference Cancellation
Target
Interference
MIT Lincoln Laboratory
Adaptive Weight Computation
McWhirter Array
Input sample vectors
x0 (n)
x1 (n)
x3 (n)
x2 (n )
0
x
(
n
)
x
(
n
)
x
(
n
)
x0,0 (n)
0,1
0, 2
0, 3
r00 (n)
r02 (n)
r01(n)
x1,1 (n)
c0 (n) s (n)
0
c1 (n)
x1, 2 (n)
r22 (n)
- QR, Back-substitution, Beamforming can be
performed using the same array
r13 (n)
x2,3 (n)
- Givens rotation in “voltage-domain” requires
smaller word size than “power-domain”
r23 (n)
c (n )
2
Results ri j(n)
s2 (n)
computed and
stored at array nodes
x3,3 (n)
%
r33 (n)
Z
AMF / ACE
Challenges
Weights, Beam = Z
⎧
rij (0) = ⎨ α i = j
⎩ 0 i≠ j
- Entire array does not fit in FPGA
rii (n) = rii2 (n − 1) + xi ,i (n)
- Efficiency at most 50%
2
rii (n − 1)
rii (n)
x (n)
si (n) = i ,i
ri ,i (n)
sv = s when control = 1
x _ out = x _ in + s • conj( sv )
Z = xH r-1 r-1H v
ci (n) =
rij (n) = ci r (n − 1) + si∗ xi , j (n)
xi +1, j (n ) = − si rij (n − 1) + ci xi , j (n )
HPEC 2005 -4
HTN 10/28/2005
- Systolic, high-speed neighbor communication
x1,3 (n)
x2,2 (n)
s1 (n)
0
r03 (n)
r12 (n)
r11(n)
0
Desirable Properties of McWhirter Array
x _ out = x _ in + s • conj( s )
AMF = vH r-1 r-1H v
ACE = xH r-1 r-1H x
- AMF: Adaptive Matched Filter
- ACE: Adaptive Coherence Estimate
- QR and BackSolve need different dynamic ranges
- 1/sqrt in boundary nodes difficult to implement
- Op-count higher than Squared Givens and
House-Holder methods
MIT Lincoln Laboratory
Computation Platform
• On-board computation eliminates I/O latency
• FPGAs enable high computational throughput
QR
BF
FFT
FFT
PPF
PPF
AD
MEMIO
AD
AD
Single Board
Computer
Processing 200 Gops
Internal bw 15 GBps
Digital i/o
5 GBps dplx
SBC comm 50 MBps dplx
Scalable
x4
Processor Board
A/D Modules
HPEC 2005 -5
HTN 10/28/2005
10,000
Very Large Scale Integration (VLSI)
1,000
SBC
Comm
CTRL
AD
and power efficiency
GOPS / Liter
QR
BF
Field Programmable Gate Arrays (FPGA)
100
Programmable Processors
10
1
0.1
0.001
0.01
0.1
1
10
GOPS / Watt
100
Linear Array
MicroBlaze Processor
MIT Lincoln Laboratory
1000
Outline
•
QR Computation
•
C-Language Implementation on FPGA
– Soft-macro Embedded Processor inside FPGA
– Measured Performance
HPEC 2005 -6
HTN 10/28/2005
•
Pipelined Linear Array on FPGA
•
Summary
MIT Lincoln Laboratory
Software Approach to QR Decomposition
- C program runs on Xilinx’s 32-bit MicroBlaze processor macro core
- Software performs Givens-based QR and back substitution to compute the weights
- QR program code resident on FPGA (450 lines of C code)
- Maximum clock rate 100 MHz on Virtex-II
- Floating-point library and floating-point unit available
- Development time 2 – 3 months, flexible, suitable for rapid prototyping
Hardware domain
HDL
Beam
former
Synthesize
Place & Route
HPEC 2005 -7
HTN 10/28/2005
QR
C Code
Macro
μBlaze
100 FLOPS peak
10 MFLOPS measured
μBlaze
One MicroBlaze takes
about 10% of Virtex-II 8000
Software domain
Beam
former
Compile
Link
Flt-pt
Library
.exe
Debugger
MIT Lincoln Laboratory
Measured Performance
•
•
•
Optimization results in 100x speedup for the µBlaze
Effective “ops”
– Inclusion of floating-point unit
per sec
– 1/sqrt with Newton’s method rather than library call
– In-line code roll up
# Processors to meet
Time per QR
system requirements
– Integer-to-fltpt conversion and vice versa
– Next power of 2
Performance measurement
– C code with compiler optimization ON
– Execution time measured on µBlaze,
G4, and Pentium 4
– Effectively 10 to 20 clocks per “op”
– Performance scales with clock rate
– Multiple µBlaze processors needed to
meet system time budget
Training
5 x chans
µBlaze
100 MHz
G4
733 MHz
Pentium 4
3.6 GHz
4
Chans
(4 x 20)
759 µs,
5 MFLOPS,
3 units
106 µs,
38 MFLOPS,
1 unit
17 µs,
200 FLOPS,
1 unit
8
Chans
(8 x 40)
3,833 µs,
7.5 MFLOPS,
12 units
602 µs,
48 MFLOPS,
3 units
90 µs,
300 FLOPS,
1 unit
16
Chans
(16 x 80)
22,180 µs,
9.8 MFLOPS,
NA
3,890 µs,
56 MFLOPS,
12 units
550 µs,
400 FLOPS,
2 units
Verification was simple, most time spent on speed optimization
– Excellent visibility into variable space inside the FPGA
– Would be excellent wrapper for verifying / customizing
high-performance IP cores
HPEC 2005 -8
HTN 10/28/2005
MIT Lincoln Laboratory
*QR program not hand-coded for G4 Altivec or Pentium MMX or MicroBlaze
Outline
•
QR Computation
•
C-Language Implementation on FPGA
•
Pipelined Linear Array on FPGA
•
HPEC 2005 -9
HTN 10/28/2005
–
Linear array for Givens computation
–
Weight computation
–
Threshold Floating-point
–
1/sqrt() using polynomial approximation
–
Pipelining
Summary
MIT Lincoln Laboratory
Linear Array Structure
- Linear Array is obtained by folding McWhirter array [Walke et al]
- One row of schedule is implemented in the FPGA
- 100% efficiency, less hardware resources
1, 1 1, 2
2, 2
1, 3
1, 4
1, 5
1, 1
3, 4
2, 5
2, 3
2, 4 2, 5
4, 4
1, 2
3, 5
3, 3
3, 4 3, 5
2, 2
4, 5
1, 3
4, 4 4, 5
5, 5
2, 3
1, 4
5, 5
3, 3
1, 5
2, 4
50%
idle
Highlights
3 nodes
5 nodes
Time frame
k
- Floating-point
- No weight computation
1, 3
1, 4
1, 5
1, 1
3, 4
2, 5
2, 2
2, 3
2, 4 2, 5
4, 4
1, 2
3, 5
3, 3
3, 4 3, 5
2, 2
4, 5
1, 3
4, 4 4, 5
5, 5
2, 3
1, 4
Legend
5, 5
3, 3
1, 5
2, 4
Sample k-1
Sample k
Sample k+1
HPEC 2005 -10
HTN 10/28/2005
Linear Array
- Squared Givens
- Difficult op: Division
1, 1 1, 2
Triangular Array
Walke et al
Time frame
k+1
This Presentation
- Givens rotation
- Difficult op: 1/sqrt()
- “Threshold-fltpt”
- Weight computation
MIT Lincoln Laboratory
Weight Computation
- Weights, beam outputs, AMF, ACE can be computed by adding a Beamforming mode
and two additional output nodes
- In Beamforming mode, array r is used in computation but not updated
x0 (n) x1(n) x2 (n) x3 (n)
1, 1
1, 2
c0 (n)
s0 (n)
1, 3
2, 3
2, 2
c1(n)
s1(n)
1, 4
2, 4
3, 3
c2 (n)
s2 (n)
Array ri j(n)
stored at array
nodes
3, 4
0
0
0
1, 5
1, 6
1, 7
2, 5
3, 5
2, 6
3, 6
5-node Implementation
Output
nodes
2, 7
3, 7
Z(k-1)
c3 (n)
4, 4
s3 (n)
4, 5
5, 5
4, 6
5, 6
4, 7
5, 7
Z AMF/ACE
sv = s when control = 1
x _ out = x _ in + s • conj( sv )
H
-1
Z=x r r
-1H
v
Weights, Beam = Z
HPEC 2005 -11
HTN 10/28/2005
x _ out = x _ in + s • conj( s )
H -1
AMF = v r r
-1H
v
ACE = xH r-1 r-1H x
Z(k)
3, 6
3, 7
1, 1
3, 4
2, 5
1, 6
1, 7
4, 4
1, 2
3, 5
4, 6
4, 7
2, 2
4, 5
1, 3
2, 6
2, 7
5, 5
2, 3
1, 4
5, 6
5, 7
3, 3
1, 5
2, 4
3, 6
3, 7
1, 1
3, 4
2, 5
1, 6
1, 7
4, 4
1, 2
3, 5
4, 6
4, 7
2, 2
4, 5
1, 3
2, 6
2, 7
5, 5
2, 3
1, 4
5, 6
5, 7
3, 3
1, 5
2, 4
5 channels,
4 steering vectors,
4 weight vectors
Input to Array
X(k)
X(k+1)
X(1)
…
X(k)
X(k+1)
…
X(N)
0
V(1)
[Identity
Matrix]
V(2)
[I Matrix]
V(3)
[I Matrix]
V(4)
[I Matrix]
0
Time
QR
mode
Beam
mode
W(1)
W(2)
W(3)
W(4)
Weights out
MIT Lincoln Laboratory
Threshold Floating Point
r_real
r_sq
1/sqrt()
x_real
c
r
exponent
normalization
and realignment
1/r
r_old
s_real
Fixed-pt
r_sq
Input
XMax 16
Growth
3 16
6
s_QR
s_Beam
c
r_im_old
r_real_old r_im_old
r_real_old
s_im s_real
s_real s_im
x_im
c
c
-
s_im
x_out_real
19
*29* Exp 3b
38
Threshold floating-point shifts the window by 9
bits when register content crosses threshold
value(s).
•
The number of thresholds is determined by
shift size. Binary threshold (1/2 word size)
results in normalizing logic simpler than
regular floating-point implementation.
•
Word size is a function of dynamic range and
application required precision. Most of the
time, it is smaller than fixed-pt implementation.
MIT Lincoln Laboratory
Exp 3b
32
19
*29*
*29* Exp 3b
20
2 x 20
19
*29* Exp 3b
19
*29* Exp 3b
x_out_im
•
Input
XMax 16
Guard
3
r_im
-
Dual-use variable ‘s’ has different dynamic
ranges in QR mode and Beam mode.
HPEC 2005 -12
HTN 10/28/2005
x_real
x_im
Threshold fltpt
32
1/r
•
-
• red = value stored from previous QR iteration
• blue = node outputs
r_sq_old
x, r, v
Internal Node
s_real x_im
x_real
x_real
r_im_old
s_im
s_im
x_im
s_real
r_real_oldc
c
Boundary Node
x_im
x_real
Polynomial Approximation to 1/sqrt()
- First-order approximation works well for 1/sqrt in [1, 2]
- Match with double precision computation within +/- lsb/2
- 16-bit output: need two 256 x 18 tables, one 18 x 18 multiplier, and one 18b adder
- 24-bit output: need two 4k x 26 tables, one 26 x 26 multiplier, and one 26b adder
- Table sizes appropriate for FPGA implementation
- No iteration required
Polynomial Interpolation
Normalized to [1, 2]
Y’ = A * X’ + B
X = 1. x1x2 … xmxm+1 … x31x32
X’’
X’
A B
Y =
[A, B] = polyfit(X, 1/sqrt(X))
1
X
X’
Y’ = A * X’ + B
X
HPEC 2005 -13
HTN 10/28/2005
MIT Lincoln Laboratory
Pipelining Illustrated for 5 Levels
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7 3,6 1,11 3,4 2,5
5 clks
per step 1,7 1,6 4,4 1,2 3,5
4,7
2,7
5,7
3,7
1,7
4,7
50
2,7
clks
5,7
3,7
Non-pipelined Schedule
1,7
- Takes 5 clocks to compute
4,7
- Wait until done before
2,7
issuing new input sample
5,7
- 2 input samples in 50 clks
3,7
1,7
Pipelined Schedule
4,7
- Introduce one input every clk
2,7
- Spread dependent
5,7
computation out (> 5 clks)
3,7
- Find schedule that is 100% efficient 1,7
4,7
2,7
5,7
HPEC 2005 -14
HTN 10/28/2005
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
MIT Lincoln Laboratory
2,5
3,5
1,3
1,4
2,4
Pipelining Illustrated for 5 Levels
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7 3,6 1,11 3,4 2,5
5 clks
per step 1,7 1,6 4,4 1,2 3,5
50
clks
Non-pipelined Schedule
- Takes 5 clocks to compute
- Wait until done before
issuing new input sample
- 2 input samples in 50 clks
Pipelined Schedule
- Introduce one input every clk
- Spread dependent
computation out (> 5 clks)
HPEC 2005 -15
HTN 10/28/2005
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
2,2
5,5
3,3
1,12
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
MIT Lincoln Laboratory
2,5
3,5
1,3
1,4
2,4
Pipelining Illustrated for 5 Levels
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7 3,6 1,11 3,4 2,5
5 clks
per step 1,7 1,6 4,4 1,2 3,5
4,7
2,7
5,7
3,7
1,7
4,7
50
2,7
clks
5,7
3,7
Non-pipelined Schedule
1,7
- Takes 5 clocks to compute
4,7
- Wait until done before
2,7
issuing new input sample
5,7
- 2 input samples in 50 clks
3,7
1,7
Pipelined Schedule
4,7
- Introduce one input every clk
2,7
- Spread dependent
5,7
computation out (> 5 clks)
3,7
- Find schedule that is 100% efficient 1,7
4,7
2,7
5,7
HPEC 2005 -16
HTN 10/28/2005
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
2,2
5,5
3,3
1,12
4,4
2,2
5,5
3,3
1,13
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
MIT Lincoln Laboratory
2,5
3,5
1,3
1,4
2,4
Pipelining Illustrated for 5 Levels
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7 3,6 1,11 3,4 2,5
5 clks
per step 1,7 1,6 4,4 1,2 3,5
4,7
2,7
5,7
3,7
1,7
4,7
50
2,7
clks
5,7
3,7
Non-pipelined Schedule
1,7
- Takes 5 clocks to compute
4,7
- Wait until done before
2,7
issuing new input sample
5,7
- 2 input samples in 50 clks
3,7
1,7
Pipelined Schedule
4,7
- Introduce one input every clk
2,7
- Spread dependent
5,7
computation out (> 5 clks)
3,7
- Find schedule that is 100% efficient 1,7
4,7
2,7
5,7
HPEC 2005 -17
HTN 10/28/2005
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
2,2
5,5
3,3
1,12
4,4
2,2
5,5
3,3
1,13
4,4
2,2
5,5
3,3
1,14
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
MIT Lincoln Laboratory
2,5
3,5
1,3
1,4
2,4
Pipelining Illustrated for 5 Levels
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,1
4,4
2,2
5,5
3,3
1,1
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7 3,6 1,11 3,4 2,5
5 clks
per step 1,7 1,6 4,4 1,2 3,5
4,7
2,7
5,7
3,7
1,7
4,7
50
2,7
clks
5,7
3,7
Non-pipelined Schedule
1,7
- Takes 5 clocks to compute
4,7
- Wait until done before
2,7
issuing new input sample
5,7
- 2 input samples in 50 clks
3,7
1,7
Pipelined Schedule
4,7
- Introduce one input every clk
2,7
- Spread dependent
5,7
computation out (> 5 clks)
3,7
- Find schedule that is 100% efficient 1,7
- 10 input samples in 50 clks
4,7
- Non-trivial when number of channel 2,7
is different than pipe depth
5,7
HPEC 2005 -18
HTN 10/28/2005
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
2,2
5,5
3,3
1,12
4,4
2,2
5,5
3,3
1,13
4,4
2,2
5,5
3,3
1,14
4,4
2,2
5,5
3,3
1,15
4,4
2,2
5,5
3,3
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
3,6
1,6
4,6
2,6
5,6
1,16
4,4
2,2
5,5
3,3
1,17
4,4
2,2
5,5
3,3
1,18
4,4
2,2
5,5
3,3
1,19
4,4
2,2
5,5
3,3
1,110
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
3,4
1,2
4,5
2,3
1,5
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
2,5
3,5
1,3
1,4
2,4
Array 100% efficient
after 10 * 5 = 50 clocks
3,7
1,7
4,7
2,7
5,7
3,6
1,6
4,6
2,6
5,6
1,111
4,4
2,2
5,5
3,3
3,4
1,2
4,5
2,3
1,5
MIT Lincoln Laboratory
2,5
3,5
1,3
1,4
2,4
Array Performance
Training 5 x channels
Weight computation for 1 Beam
Virtex-II 8000
80 MHz clock (not fully optimized)
No pipeline
Pipeline by 16
4
Chans
(4 x 20)
300 ops per sample
20 samples for QR
6 samples flushing per beam
1 Msps
300 MOPS
26 us refresh
25% Resources
[16 Msps estimated]
[4.8 GOPS]
[1.7 us]
35% Resources
8
Chans
(8 x 40)
900 ops per sample
40 samples per QR
10 samples flushing per beam
0.5 Msps
500 MOPS
90 us refresh
35% Resources
[8 Msps]
[8 GOPS]
[6 us]
45% Resources
16
Chans
(16 x 80)
3060 ops per sample
80 samples per QR
18 samples flushing per beam
0.3 Msps
900 MOPS
333 us refresh
60% Resources
[6 Msps]
[14.4 GOPS]
[21 us]
70% Resources
*Op counts are for 5-chan, 9-chan, and 17-chan arrays with 1 weight computation node
*Large multipliers are implemented with 17-bit built-in multipliers and logic slices
•
•
•
Non-pipelined refresh rate is 26 us for 4 channels, and 333 us for 16 channels
Non-pipelined 16-channel array is 1.7x faster than 3.6 GHz Pentium4, 12x 700 MHz G4
Pipelined version expected to be 16 times faster
HPEC 2005 -19
HTN 10/28/2005
MIT Lincoln Laboratory
Outline
HPEC 2005 -20
HTN 10/28/2005
•
QR Computation
•
C-Language Implementation on FPGA
•
Pipelined Givens Linear Array on FPGA
•
Summary
MIT Lincoln Laboratory
Li
FP
1
0.01
100
Programmable Processors
10
1
0.1
1
10
Throughput (GOPS)
100
*6 copies of MicroBlaze can be used
in parallel if application permits
•
•
•
Field Programmable Gate Arrays (FPGA)
8
4
0.1
0.001
GOPS / Liter
ne
ar
Ar
ra
y
Li n
A
FP
G
16 channels
Better
Very Large Scale Integration (VLSI)
Pi
pe
l
in
e
d
ea
rA
rra
y
3 GH
z
m4
MHz
10
10,000
1,000
GA
100
Pen
ti u
1,000
G4 700
Time per weight refresh (us)
10,000
6 copies
MicroBlaze 100 MHz
QR & Weight Computation Summary
1000
0.1
0.001
1000
1
10
100
GOPS / Watt
*Assume 6 MicroBlaze processors in one FPGA V2-8000
*Assume minimum volume for packaging and cooling:
- FPGA, G4: 10 cm x 10 cm x 3 cm per chip ~ .3 L
- Pentium 4: 16 cm x 20 cm x 3 cm per chip ~ 1 L
0.01
0.1
Linear array throughput increases with # channels due to available capacity on chip
Linear array has best computational density (GOPS/L) and efficiency (GOPS/W)
All processors are close in computational density and efficiency
HPEC 2005 -21
HTN 10/28/2005
MIT Lincoln Laboratory
*QR program not hand-coded for G4 Altivec or Pentium MMX or MicroBlaze
Summary
•
QR Decomposition is widely used in scientific applications.
Radar adaptive beam-forming requires high-speed QR
•
Software-based MicroBlaze Embedded Microprocessor
– Single-chip implementation with multiple cores can outperforms G4
– Similar computational density and efficiency as G4 and Pentium4
*QR program not hand-coded for G4 Altivec or Pentium MMX or MicroBlaze
•
Linear array for Givens computation
– Two orders of magnitude better than programmable processors in
computational density
– One order of magnitude better than programmable processors in
computational efficiency
HPEC 2005 -22
HTN 10/28/2005
MIT Lincoln Laboratory
Fly UP