6.9流水线冒险冒险会干扰流水线并阻止下一条指令在目标时钟周期内的执行。冒险会降低流水线在理想情况下所能带来的速度提升。冒险分类:1、结构冒险:资源冲突导致硬件无法支持所有可能的指令组合同时执行。2、数据冒险:指令执行需要之前指令计算结果,而这个结果还在流水线中没计算出来。3、控制冒险:分支的流水线的其他指令改变程序计数器的值。通用方法:停止流水线直至风险消除,在流水线中插入多个“气泡”。6.9.1结构冒险 如图,MEM在一个周期内被两个指令使用,产生冲突。解决方法:如图,停一个周期,待对MEM的冲突解除后再恢复流水线。另一种方法:IF和MEM阶段使用不同的存储器来避免同时访问同一块存储器。
6.9流水线冒险冒险会干扰流水线并阻止下一条指令在目标时钟周期内的执行。冒险会降低流水线在理想情况下所能带来的速度提升。冒险分类:1、结构冒险:资源冲突导致硬件无法支持所有可能的指令组合同时执行。2、数据冒险:指令执行需要之前指令计算结果,而这个结果还在流水线中没计算出来。3、控制冒险:分支的流水线的其他指令改变程序计数器的值。通用方法:停止流水线直至风险消除,在流水线中插入多个“气泡”。6.9.1结构冒险 如图,MEM在一个周期内被两个指令使用,产生冲突。解决方法:如图,停一个周期,待对MEM的冲突解除后再恢复流水线。另一种方法:IF和MEM阶段使用不同的存储器来避免同时访问同一块存储器。
5.1介绍能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。5.2功耗源三个主要的功耗源:浪涌、静态功耗、动态功耗。浪涌电流:器件上电时最大瞬时输入电流。浪涌电流在应用中也称为启动电流。浪涌电流与设备有关,如电机启动电流前几个周期时正常满载电流的数倍。基于SRAM的FPGA也有很明显的浪涌电流,上电时器件没有配置,需要外部下载数据配置编程资源(查找表、布线资源)。反熔丝FPGA无需上电配置,所以没有浪涌电流。待机电流:关断主电源或系
5.1介绍能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。5.2功耗源三个主要的功耗源:浪涌、静态功耗、动态功耗。浪涌电流:器件上电时最大瞬时输入电流。浪涌电流在应用中也称为启动电流。浪涌电流与设备有关,如电机启动电流前几个周期时正常满载电流的数倍。基于SRAM的FPGA也有很明显的浪涌电流,上电时器件没有配置,需要外部下载数据配置编程资源(查找表、布线资源)。反熔丝FPGA无需上电配置,所以没有浪涌电流。待机电流:关断主电源或系
2.4时钟方案2.4.1内部产生的时钟应尽量避免內部产生时钟。组合逻辑产生时钟会引入毛刺,也会引起时序方面的问题。同步时序电路数据的毛刺不会引起任何问题,而毛刺出现在时钟输入端或异步输入端就会产生明显的影响。毛刺到达时钟输入端如果数据变化,会违背建立和保持时间。即使没有违背时序要求,寄存器也可能输出意料外的值。毛刺可能导致计数器增加额外的计数值,如图。 解决方法:组合逻辑输出增加一个寄存器输出,这个寄存器可以阻止组合逻辑产生的毛刺。 组合逻辑时钟也会增加时钟延迟,可能导致违背时序要求。 图中由于时钟偏移导致违背了建立时间。(这里应该也有问题,这图上CLK往左移dlycombo不也违背建立时间
2.4时钟方案2.4.1内部产生的时钟应尽量避免內部产生时钟。组合逻辑产生时钟会引入毛刺,也会引起时序方面的问题。同步时序电路数据的毛刺不会引起任何问题,而毛刺出现在时钟输入端或异步输入端就会产生明显的影响。毛刺到达时钟输入端如果数据变化,会违背建立和保持时间。即使没有违背时序要求,寄存器也可能输出意料外的值。毛刺可能导致计数器增加额外的计数值,如图。 解决方法:组合逻辑输出增加一个寄存器输出,这个寄存器可以阻止组合逻辑产生的毛刺。 组合逻辑时钟也会增加时钟延迟,可能导致违背时序要求。 图中由于时钟偏移导致违背了建立时间。(这里应该也有问题,这图上CLK往左移dlycombo不也违背建立时间
3.1介绍单时钟设计更易于实现,也更少出现亚稳态、建立和保持时间违例方面的问题。但在实践中,很少有设计只在一个时钟下运行。3.2多时钟域多个始终可以有以下一种或多种时钟关系:1、时钟频率不同。2、时钟频率相同,但相位不同。 3.3多时钟域设计的难题1、建立时间和保持时间的违背。2、亚稳态。事实上1就会导致23.3.1违背建立时间和保持时间 多时钟域情况下,很容易出现一个时钟域的输出在另一个时钟域的时钟上升沿到来时发生改变的现象。 图中xclk_output1不满足建立时间和保持时间,所以会造成亚稳态。而xclk_output2则没有该问题。3.3.2亚稳态详见第一章。3.4多时钟设计的处理技
3.1介绍单时钟设计更易于实现,也更少出现亚稳态、建立和保持时间违例方面的问题。但在实践中,很少有设计只在一个时钟下运行。3.2多时钟域多个始终可以有以下一种或多种时钟关系:1、时钟频率不同。2、时钟频率相同,但相位不同。 3.3多时钟域设计的难题1、建立时间和保持时间的违背。2、亚稳态。事实上1就会导致23.3.1违背建立时间和保持时间 多时钟域情况下,很容易出现一个时钟域的输出在另一个时钟域的时钟上升沿到来时发生改变的现象。 图中xclk_output1不满足建立时间和保持时间,所以会造成亚稳态。而xclk_output2则没有该问题。3.3.2亚稳态详见第一章。3.4多时钟设计的处理技
7.1介绍 本章主要介绍字节顺序的的基本规则。(感觉偏软件了,不知道为啥那么会放进《硬件架构的艺术》这本书)。7.2定义 字节顺序定义数据在计算机系统中的存储格式,描述存储器中的MSB和LSB的位置。对于数据始终以32位形式保存在存储器中的真32位系统,字节顺序没有实际意义,若要将字节或16位半字映射到存储器中32位字的系统,字节顺序不匹配就会影响数据的完整性。大端模式:将MSB保存在最低存储器地址处。小端模式:把LSB保存在最低存储器地址处。下面是将0xAABBCCDD分别以大端和小端模式保存在存储器中。字节0表示最低存储器地址。 下面是两种模式对应存储器地址: 上面的是按字节形式处理数
7.1介绍 本章主要介绍字节顺序的的基本规则。(感觉偏软件了,不知道为啥那么会放进《硬件架构的艺术》这本书)。7.2定义 字节顺序定义数据在计算机系统中的存储格式,描述存储器中的MSB和LSB的位置。对于数据始终以32位形式保存在存储器中的真32位系统,字节顺序没有实际意义,若要将字节或16位半字映射到存储器中32位字的系统,字节顺序不匹配就会影响数据的完整性。大端模式:将MSB保存在最低存储器地址处。小端模式:把LSB保存在最低存储器地址处。下面是将0xAABBCCDD分别以大端和小端模式保存在存储器中。字节0表示最低存储器地址。 下面是两种模式对应存储器地址: 上面的是按字节形式处理数