Uploaded by lihc1314i

第12讲 数字电路架构高层次综合(2)

advertisement
数字电路与系统
第12讲
数字电路架构高层次综合(2)
目录
1
存储和性能估算
2
控制单元综合
1 引入:估算
四部分内容:
– 调度
– 资源绑定
– 存储和性能估算
– 控制单元综合
这门课包括:
– 设计空间和估算问题
– 资源主导型
– 估算在通用电路中的应用
– 兰特规则
1.1 设计空间参数
– 进行电路设计时可能有多个目标
• 存储少
• 低延迟
• [高通量](用于流水线电路)
• 最大时钟频率高
• 低功耗
– 这些目标常常是矛盾的,必须在它们之间进行
权衡
1.1 设计空间参数
– 可以想象一个由(存储,延迟,吞吐量,功率)定义
的4维空间
– 可以选择的每种设计都能绘制为该空间中的一个点
– 哪种设计“最佳”?
1.
存储= 1,延迟= 2,吞吐量 = 1,功率= 1
2.
存储= 2,延迟= 2,吞吐量 = 1,功率= 1
3.
存储= 2,延迟= 1,吞吐量 = 2,功率= 2
– 设计1优于设计2
– 设计1可能比设计3更好,具体取决于我们最关注的指
标是存储,延迟还是吞吐量。
1.1 设计空间参数
– 设计2被称为“劣质设计”
• 在所有目标中,它都可以由另一种更优的设计代替
– 从图上来看,可以理解为要减小延迟而在存储上有所
妥协(可能是通过使用更多资源来减少时钟周期数)
1.2 为什么要进行估算?
– 不仅要尝试创建一个工作电路,而且还要满足
存储,功耗,延迟等方面的一些限制。
– 每次做出高层设计决策时,我们都希望对该决
策在这些目标上的影响进行估算。
• 例如 如果使用5个乘法器而不是4个,功耗将如何变化?
– 不想构建一个实际电路并测量功耗,因此需要
一个模型
1.3 资源优先型
– 对于某些“计算资源优先”的电路,存储,速度
,功率等都是资源的函数。
• 多路选择器,寄存器等相对占用资源较少
– 对这些电路进行估算很容易
• 面积:将每种资源消耗的面积相加: A = Aadd Nadd + Amult Nmult + …
• 延迟:从调度中得知
– 通常DSP电路以计算资源为主
– 例子:上一节课讲的例子
• a = i+j; b = 2*a + j; c = a * b; d = a*a;
1.3 资源优先型
占用面积小
占用面积大
总面积= Aadd + 2Amult
1.4 示例:加法器模型
– 如何估算每种资源的存储和速度?
– 通常有一个有关如何构造资源的模型,例如一个n位脉
动进位加法器:
面积 = AHA + AFA(S) + (n-2)AFA
延迟 = THA + TFA(S) + (n-2)TFA(C)
1.5 通用电路
– 对于非计算资源优先的电路,其他几个组件可
能会影响设计目标
• 寄存器
• 多路选择器
• 布线
• 控制单元
1.6 寄存器
– 寄存器用来存储中间临时数据——回到前面的示例,
需要3个寄存器存储临时结果 (a,b,t1)
• a = i+j; b = 2*a + j; c = a * b; d = a*a;
1.6 寄存器
– 并不总是需要有和临时变量一样多的寄存器
– 如果寄存器少,可以共享寄存器,就像共享资
源一样
• t1 和 b 在“有效期”中不重叠——可以对两个寄存器使用相
同的寄存器both
– 临时变量的数量为设计中需要的寄存器数量提
供了一个很好的“粗略估计”
1.7 多路复用器
– 多路选择器用于将操作数引导到对应的资源
– 从资源绑定中可得知所需的多路复用器的数量
和大小
– 多路复用器会占用面积并增加延迟——增加的
延迟取决于输入MUX的数量
1.8 布线
– 导线也会影响电路的面积,延迟和不可忽略的
功耗
– 目前, 信号在 芯片上 的长距 离传输 有时需 要
10+个时钟周期。
– 然而,布线很难进行估算
• 需要参考资源绑定和实际物理器件布局
– 兰特规则(Rent’s rule)可以提供高层次模型
• 将互连量与存储空间中的门数关联
• N = KGβ
(N = 针脚数量, G = 门数量)
1.9 兰特规则
兰特规则给出了一个粗略的估算,
即有多少导线将跨越任何给定组的
边界,也即外部信号连接到逻辑区
段的数量与逻辑区段内的电路库数
量的关系
可以用作接线长度的估计
一个给定组
– N = KGβ (N = 针脚数量, G = 门数量)
– 常见器件的兰特常数:
• SRAM: β = 0.12, K = 6
• 门阵列: β = 0.50, K = 1.9
1.10 控制单元
– 控制单元将选择信号线接到MUX,将使能信号传递给
寄存器,其本身会占用存储面积和产生功耗
– 控制单元的大小根据算法中循环和分支的数量而明显变
化
•
通常,DSP算法的控制单元非常简单
– 控制单元也会影响最大时钟频率
– 在下一节课中,我们将研究控制单元的综合
•
现在,简要说明一下,控制器的大小会随着:
 激活信号的数量(选择,使能)
 调度的长度
1.11 例题1
– k 位进位选择加法器的结构如下所示:
– 相比k 位Ripple-Carry Adder的
– 假设:
• 每个加法器都是ripple-carry 设计
1.11 例题1
– 根据字长 k 得出电路面积和延迟的推导模型
– 面积 = 3AFA(k/2) + AMUX(k/2)
– 延迟 = TFA(k/2) + TMUX
– 用 k 位ripple-carry进位设计比较面积和延迟
– 面积 = 2AFA(k/2)
– 延迟 = 2TFA(k/2)
– 与 k 位ripple-carry进位设计相比,电路面积总是
更大。 延迟较小,只要
• TMUX < TFA(k/2) (在合理 k 值下几乎总是正确的)
1.12 例题2
– 假设正在设计一个具有门级兰特常数的电路:
•
β =0.25, k = 1
– 设计中总共有100万个门。 芯片有多少个引脚?
• Pins ≈ (1e6)^0.25 ≈ 32
– 假如芯片太大,必须将其分为两块。现在有多少个引
脚?
• 假设均分。 然后:
• 引脚 ≈ 2(5e5)^0.25 ≈ 53
– 假如设计中功耗的主要来源是驱动外部引脚。 估算由
于使用两个芯片而导致的功率增加:
• 增加比例(%) = (53 – 32)/32 = 66% (假设所有引脚相等)
1.13 总结
本节课涵盖了:
– 设计空间和估算问题
– 计算资源主导型
– 估算在通用电路中的应用
– 兰特规则
下节课将研究控制单元的综合
2 引入:控制单元综合
四部分内容:
– 调度
– 资源绑定
– 面积和性能评估
– 控制单元综合
这门课包括:
– 微码和微码优化
– 硬连线控制
– 通过状态机进行控制
2.1 为什么需要控制单元综合?
– 数据路径设计包括
• 多路选择器,将数据引导到正确的资源
• 寄存器使能信号,用于选择何时寄存器应存储中间
值
– 这些信号必须从某个地方生成——控制单元
– 一旦知道算法的调度和资源绑定,就有足够的
信息来设计控制器
2.2 一个控制单元
– 再来看一看之前讲过的示例:
a = i+j; b = 2*a + j; c = a * b; d = a*a;
Y(v1)=(加法器,1 )
Y(v3)=(加法器,1 )
Y(v5)=(乘法器,2 )
Y(v2)=(乘法器,1 )
Y(v4)=(乘法器,1 )
2.2 一个控制单元
– 此示例的控制单元必须:
• 周期1:使能寄存器 “a”,确保 “adder1” 的输入为 “i”
和 “j”(1使能端)
• 周期2:确保 “multiplier1” 的输入为 2 和 “a”
• 周期3:使能寄存器 “t1” 和 “d”(2使能端)
• 周期4:使能寄存器 “b”,确保 “adder1” 的输入为
“t1” 和“j”(1使能端 、1选择比特)
• 周期5:确保“乘法器1”的输入为 “a” 和 “b” (1选择
比特)
• 周期6:使能寄存器 “c”(1使能端)
2.3 微码与硬连线控制
– 这是时序电路的行为
• 在此示例中,电路除时钟信号外没有输入
• 电路具有7个二进制输出(5个使能端和2条选择线)
– 可以将此电路构建为具有3条地址线的基于微码
的控制器(⌈log2 #cycles⌉)
2.3 微码与硬连线控制
– 或者可 以为此 序列专 门构建 一个有 限状态 机
(FSM)实现
– 这两种实现方案之间的选择是一个逻辑综合问
题——将不作详细考虑
– FSM的设计是本门课程的重要内容
• 比相应的微代码控制器更快,更小,功耗更低
• 设计更复杂
• 流片灵活性较差(相对于使用可编程微码ROM)
• 设计灵活性较高(如果设计具有无限的延迟节点)
2.4 水平微码
– 对于之前一直在进行处理的示例,构造ROM内容
• 假定数据输出(MSB到LSB)的顺序如下:a启用,t1启用,d启
用,b启用,c启用,加法器1选择,乘法器1选择
• 假设一个3位向上计数器,初始化为0
– ROM微程序
Address
Data
Address
Data
0x0
0x40
0x3
0x0A
0x1
0x00
0x4
0x01
0x2
0x30
0x5
0x04
2.4 水平微码
– 这就是所谓的“水平”微码
• #状态<< #控制信号(通常)
• ROM的宽度比高度大
存储器扁平:地址空间小、单行比特数多
– 水平微码使设计拥有较高的自由度
• 以这种方式可以为任何调度和资源绑定设计一个控
制器
• 设计过程很简单
– 但是,ROM可能很大
2.4 水平微码
– 通过向控制器添加一个额外的(组合)层次,
通常可以减少所需的ROM大小。
– 面临的挑战是精心设计ROM和解码器,以减小
𝑛𝑛并优化速度,功耗和面积
2.5 微码优化
– 如果不同时需要任何控制信号,则只需要
⎡log2(#control sigs+1)⎤-位ROM数据总线
• 然后可以使用 n 到 2n 解码器来生成控制信号
• (修正:n 至 2n 解码器根据输入的 n 位二进制编码来推断 2n
个不同的可能输出之一。例如,一个2至4解码器的真值表为
00-> 0001、01-> 0010、10 -> 0100、11-> 1000)
– 为什么(+1)?
• 因为不想在某些时钟周期内声明任何控制信号
2.5 微码优化
– 但是,如果不允许并发控制信号,那么并行就
不能实现!
• 硬件实现的优势被破坏、调度失去意义
– 解决方式:
• 将控制信号集划分为不需要同时使用的子集
– 对于之前的示例,一个可能的分区是:
• {a启用,t1启用,b启用,c启用,multiplier1选
择},{d启用,adder1选择}
– 可以分别对每个分区进行编码
2.5 微码优化
– 需要⎡log26⎤ = 3位来编码第一个子集,⎡log23⎤
= 2位来编码第二个子集
– 控制器现在看起来像这样:
– 已经节省了ROM数据总线的两位!
2.5 微码优化
– 假设对ROM数据总线(MSB到LSB)进行排序:第一
子集的编码,第二子集的编码
– 假设按照上图中的顺序对每个解码器的输出进行滑动排
序。
– 现在有一个合适的ROM程序:
Address
Data
Address
Data
0x0
0b11100
0x3
0b10110
0x1
0b00000
0x4
0b01100
0x2
0b11011
0x5
0b10000
2.6 硬连线FSM综合
– 将控制器设计视为标准的FSM综合问题时
– 每个时钟周期对应一个状态
– 可以简单地为带有无限延迟(无界任务)的节
点的序列图指定FSM行为
– 应用于微码的相同优化技术也可以应用于FSM
设计
2.7 有界延迟示例
– 将之前的示例视为FSM,会导致以下状态转换图,可以
很容易地用硬件描述语言对其进行编码
2.8 无界延迟操作
– 来看一下第一节课中的无限延迟示例:
2.8 无界延迟示例
– 为此示例创建一个FSM很容易
• 必须等待来自无限延迟资源的“完成”信号  有控制器的输
入和输出信号
(未显示FSM输出)
2.9 本地控制器
– 到目前为止,仅假设整个电路只有一个大型控
制器
• 是一种高效,因为它允许控制器设计和实现的开销由许多控制
信号共享
• 但是,由于需要在芯片上传送控制信号,因此对于大型电路来
说可能难以实现
– 每个控制信号(或一组控制信号)可以有自己
的控制器
– 这种控制单元称为“分布式控制”。 使用一个
大 型 控 制 器 称 为 “ 集 中 控 制 ” 或 “ lumped
control”
2.10 例题
– 设计离散余弦变换(DCT)算法的硬件实现。
算法的内部循环以及调度和资源绑定显示在下
一页。(x1,x2是输入; y1,y2是输出)。
乘法器和加法器都需要一个时钟周期。
• (a)为此电路绘制一条数据路径
• (b)为此电路设计一个基于水平微码的控制器
• (c)通过使设计“非水平”,最大程度地减少所需的ROM大
小
• (d)重新设计控制器,使每个功能单元都有自己的控制器,
该控制器控制其输入多路复用器的选择信号线和其输出寄存器
的使能信号线
2.10 例题
– 设计离散余弦变换(DCT)算法的硬件实现。
算法的内部循环以及调度和资源绑定显示在下
一页。(x1,x2是输入; y1,y2是输出)。
乘法器和加法器都需要一个时钟周期。
t1 = a*x1; // Cycle 1, mult1
t2 = b*x2; // Cycle 1, mult2
y1 = t1 + t2; // Cycle 2, add1
t3 = b*x1; // Cycle 2, mult1
t4 = -a*x2; // Cycle 2, mult2
y2 = t3 + t4; // Cycle 3, add1
2个乘法器,1个加法器
2.11 例题(A)
t1 = a*x1; // Cycle 1, mult1
t2 = b*x2; // Cycle 1, mult2
y1 = t1 + t2; // Cycle 2, add1
t3 = b*x1; // Cycle 2, mult1
t4 = -a*x2; // Cycle 2, mult2
y2 = t3 + t4; // Cycle 3, add1
2个乘法器,1个加法器
2.11 例题(A)
t1 = a*x1; // Cycle 1, mult1
t2 = b*x2; // Cycle 1, mult2
y1 = t1 + t2; // Cycle 2, add1
t3 = b*x1; // Cycle 2, mult1
t4 = -a*x2; // Cycle 2, mult2
y2 = t3 + t4; // Cycle 3, add1
来自
控制
单元
2.12 例题(B)
– 3 个周期  ⎡log2 3⎤ = 2 位ROM地址
– 6 个寄存器+ 3 个复用器选择线= 9 个控制信号
– 假 定 数 据 总 线 排 序 ( 从 MSB 到 LSB ) : 使 能 信 号 线
(t1,t2,y1,t3,t4,y2); 选择信号线(add1, mult1, mult2)
Address
Data
Address
Data
0x0
0b110000000
0x2
0b000001100
0x1
0b001110011
2.13 例题(C)
–
通常,找到最小化ROM大小的子集很困难。因此,通常
情况下是找一个较好的子集,但不一定是最佳子集
–
子集1:{ t1,y1,y2 }
需要2位
–
子集2:{ t2,t3,add1 }
需要2位
–
子集3:{ t4 }
需要1位
–
子集4:{ mult1 }
需要1位
–
子集5:{ mult2 }
需要1位
2.13 例题(C)
2.13 例题(C)
– 运用这节课所讲的技术将导致下表(上一张幻灯片中该图的
顺序)9到7个数据位的压缩。
– 显然,这还可以进一步压缩。例如使下面的bit6 = bit4,
bit5 = bit3,bit2 = bit1 = bit0。 这可实现9到3数据位的
压缩。
Address
Data
Address
Data
0x0
0b1111000
0x2
0b0101000
0x1
0b1010111
2.14 例题(D)
– 对于水平实现,只需从集总控制器实现中选择相关的输出位
– 假设顺序(从MSB到LSB):
• add1控制器:add1,y1,y2
• mult1控制器:mult1,t1,t3
• mult2控制器:mult2,t2,t4
Address
0x0
0x1
0x2
add1 Data mult1 Data mult2 Data
0b000
0b010
0b101
0b010
0b101
0b000
0b010
0b101
0b000
2.15 总结
本节课涵盖了:
– 微码和微码优化
– 硬连线控制
– 通过交互状态机进行控制
– 例题详解
Download