李雪梅 2014.03.21
description
Transcript of 李雪梅 2014.03.21
学术报告
Low-area high-throughput Reed-Solomon decoder
李雪梅2014.03.21
内容介绍
Part 1: 减少常数乘法器中异或门个数
Part 2 :模块复用
Part 1: 减少常数乘法器中异或门个数
module mult_10(pro,a);
output [4:0]pro; input [4:0]a; assign pro[4]= a[0]^a[3]^a[4]; assign pro[3]= a[2]^a[3]^a[4]; assign pro[2]= a[1]^a[2]^a[3]^a[4]; assign pro[1]= a[1]^a[2]; assign pro[0]= a[0]^a[1] ^a[4]; endmodule
module mult_10(pro,a);
output [4:0]pro; input [4:0]a;
wire temp= a[3]^a[4]; assign pro[4]= a[0]^temp; assign pro[3]= a[2]^temp; assign pro[2]= a[1]^a[2]^temp; assign pro[1]= a[1]^a[2]; assign pro[0]= a[0]^a[1] ^a[4]; endmodule
10 个 XOR 8 个 XOR
Part 1: 减少常数乘法器中异或门个数搜寻公共项或匹配对或共享子式 (common subexpression, CSE)的算法
Four steps:
Step1:For any column i and j in matrix, find all possible pairs with bit-wise matches
great than 1
Step 2:Choose the pair with the maximum bit-wise matches; If there are multiple
such pairs, it is sufficient to randomly select one pair
Step 3:Eliminate the redundancy from the best match; append an additional column
at the right of the matrix to hold the redundancy; append an additional row to the
bottom of the matrix to represent the selected CSE
Step 4:Repeat steps 1-3 for all the columns in the matrix including the appended
rows and columns until no subexpression appearing more than once
Part 1: 减少常数乘法器中异或门个数举例:
0 0
1 1
2 2
3 3
b a1 1 1 1
b a1 0 0 0
b a1 1 0 0
b a1 1 1 0
B
0 0 1 2 3
1 1
2 0 1
3 0 1 2
b a a a a
b a
b a a
b a a a
0
1
2
3
1
1
1
1
a1 1
a1 0 0 0 0
a0 0
a1 0
0 01
0 0
0 0
0 0
01 v
0 2 1
1 0
2 1
1
2
1
3 1
0
b a
b a
b
b
a a
a
v
v
v
v
0
1
2
3
1
2
a0 0 1
a1 0 0 0 0 0
a0 0 0 0 1 0
a0 0 0
1 1 0 0 0
1
0
0 0 0 0
0
1
0
1
0
10
v
v
0 3 2
1 0
2 1
3
1 0 1
2
2
2 1
a a
b a
a
b
b
a
b
v
v
v
v
v
v
6 个 XOR
3 个 XOR
Part 1: 减少常数乘法器中异或门个数
并行钱搜索电路或多项式选择电路
1D optimization
0 0 0 0 1
1 0 0 0 0
0 1 0 0 1
0 0 1 0 0
0 0 0 1 0
0 0 0 1 0
0 0 0 0 1
1 0 0 1 0
0 1 0 0 1
0 0 1 0 0
0 0 1 0 0
0 0 0 1 0
0 0 1 0 1
1 0 0 1 0
0 1 0 0 1
1 1 1
0 0 0 0 1
1 0 0 0 0
= 0 1 0 0 1
0 0 1 0 0
0 0 0 1 0
2 1 1
0 0 0 1 0
0 0 0 0 1
= 1 0 0 1 0
0 1 0 0 1
0 0 1 0 0
3 1 1
0 0 1 0 0
0 0 0 1 0
= 0 0 1 0 1
1 0 0 1 0
0 1 0 0 1
Part 1: 减少常数乘法器中异或门个数1D optimization
结果与分析 总和original 25 47 50 122
1D 6 13 18 37
1 2 3
总和original 36 64 80 80 260
1D 8 18 25 32 83
总和
original 375 413 388 346 367 384 380 384 3037
1D 50 83 96 105 121 122 134 131 842
1 2 3
1 2 3 4 5 6 7 8
4
6度并行的 (31,25) 码(t=3)
8度并行的 (63,55) 码 (t=4)
16度并行的 (255,239) 码 (t=8)
只能优化常数乘法器,不能优化加法器
Part 1: 减少常数乘法器中异或门个数2D optimization
u 111 12 1 1
u 221 22 2 2
u1 2
( )
( )( )
( )
pt
pt
p pp p pt t
A A AYA A AY
Y u
A A AY
,1 i p
1
2u1 2
1
( )t
p iij j i i it
j
t
Y A A A A
Part 1: 减少常数乘法器中异或门个数
CSE算法的改进
0 0 0 1 0
0 1 0 0 0 1 1 1
0 1 0 0 1
1 0 0 0 0
1 1 1 0 0 0 1 0
0 1 1 1 0 0 0 1
0 0 1 0 0 0
0 0 0 0 0
1
1 1
1 1
1
1 1
1 1
1
1
1
1
多对匹配对均含有最大匹配数时,不采用随机挑选,选择重复性最小的那一对
(63,55)
mult adder 总计original 260 144 404
1D 82 144 226
2D 200 0 200
(255,239)
mult adder 总计original 3037 896 3933
1D 839 896 1735
2D 1439 0 1439
(31,25)
mult adder 总计original 122 60 182
1D 37 60 97
2D 85 0 85
original random repetitive
(31,25) 182 91 85
(63,55) 404 202 199
(255,239) 3933 1467 1439
采用 repetitive方法的 1D 和 2D结果(均采用 2t度并行)
不同方法的 2D优化结果(均采用 2t度并行)
Part 1: 减少常数乘法器中异或门个数
1D,2D优化结论:
由于搜索面积比 1D大,所以比 1D 效果好。 2D
不仅可以减少乘法器中异或门个数,并且可以移除加法
器。
无论是 1D还是 2D优化,搜索面积越大效果越好。
相同码长,并行度越高,纠错能力越大,效果越好
Part 2: 模块复用
对 syndrome 、 PS、 CSFA 进行模块复用,整个架构采用串行方式实现
Part 2: 模块复用
Part 2: 模块复用
并行 syndrome结构
Part 2: 模块复用存在的问题 :( 1 ) CSFA都采用模块复用结构 , 需 2t个周期用于钱搜索,还需 2t个周期用于 Forney计算,共需 4t个周期求 CSFA( 2)钱搜索结束之后,需要用 ram把钱搜索的结果存储起来,到求 Forney时再把数取出来( 3)采用并行结构,每求一个 error都需要一个 inversion,共需 p 个inversion,占据较大面积
解决思路:思路 1:只把 syndrome 和 PS进行模块复用, CSFA采用原始结构,需 n个周期,避免 ram 或 inversion带来面积的增加思路 2:把 syndrome, PS, Chien Search进行模块复用,采用单独的结构求 ,就只需一个 inversion,而不需要 p个。但还是需要 ram 把 对应的 和 存起来, Chien Search结束之后再求 error值。
( ) 0x ( )odd xx
( )x
Part 2: 模块复用存在的问题 :( 1 ) CSFA 都采用模块复用结构 , 需 2t 个周期用于钱搜索,还需 2t 个周期用于 Forney 计算,共需 4t 个周期求 CSFA( 2 )钱搜索结束之后,需要用 ram 把钱搜索的结果存储起来,到求 Forney的时候再把数取出来,而 ram 占较大面积。( 3 )采用并行结构,每求一个 error 都需要一个 inversion ,共需 p 个inversion, 占据较大面积
解决思路:思路 1 :只把 syndrome 和 PS 进行模块复用, CSFA 采用原始结构,追求面积的减小思路 2 :把 syndrome, PS, Chien Search进行模块复用,采用单独的结构求 , ,就只需一个 inversion,而不需要 p个。但还是需要 ram 把 对应的 和 存起来, Chien Search结束之后再求 error值。
( ) 0x ( )odd xx
( )x