流量管理:SoC设计者越来越大的梦魇
时间:10-08
来源:互联网
点击:
链接与整形
片上网络的建立有两个基本工具:链接与整形资源。链接是为各个块之间提供数据路径。它们的实现可以是一个共享总线的一部分、一种专用连接、交换网络中的一条路径,或更有创意的方式。整形资源包括缓存、FIFO、排队引擎,以及再排序缓冲区等。从传统CPU总线架构转向更强大方案的最简便方法也许就是将总线分段。Janac建议说:“在媒体SoC中,可以将流量划分为低延迟事务、大带宽事务以及不太关键的外设事务。”可以分别处理各种类型的事务,虽然这样意味着在同一块上有多个总线连接。Denali Software公司IP产品副总裁Brian Gardner指出,这种方案不仅将每种类型的流量放在与之相应的物理介质上,而且还连接到能以类似方式建模的数据流上,从而大大增加了用于其后链接的建模精度。
Lautzenheiser称,这一过程的结果一般是一个层次化的互连链接。这一结果在Raza Microelectronics的网络处理器中表现得非常明显(图1)。当深入观察一些功能块时,就会发现一种相似的模式,例如在一只现代CPU内的互连,如ARM Cortex A9。在这里,内部链接将处理器核心连接到L1指令缓存和数据缓存。而多主高速缓存总线则将L1缓存连接到L2级缓存,供多达四个处理器核心使用。其它链接则用于控制和探测背后的逻辑潜伏。两个系统总线的连接来自L2控制器。但当无法为每个数据流提供一个正确的物理链接时会发生什么?SoC的DRAM控制器就是一个很好的例子,它必须接受芯片上多个处理器传给它的任何流量混合,但必须设法将这种混乱局面理顺,成为DDR DRAM可以接受的、高度有序的指令流。为了说明问题的复杂性,请看这样一款控制器(图2)。这个器件在一系列分立级上处理各个事务。首先,一个仲裁引擎根据某种优先级方案,决定对控制器的访问。然后,控制器将请求装入指令、读和写队列,它们在队列中按照服务质量要求和DRAM时序的实际情况,等候重新排序。最后,这些请求传递到一个事务处理引擎,它预先检查队列,以重组和获取最能发挥DRAM用途的请求。
对其它功能块,相同观点正变得越来越普遍。通常,信号处理或编码器/解码器块包含有复杂的DMA引擎,它提供很多与DRAM控制器相似的功能,如散播/获取处理、数据重新排序以及将随机请求转为突发请求的缓冲等。引擎完成这些功能并不会方便DRAM控制器,事实上它们可能把DRAM控制器弄乱,使流量适合于必须通过的物理链接。
结果与未来
全部这些工作的结果很显著。MIPS总裁兼首席执行官John Bourgoin称,对基本相同的功能块,SoC调整的结果可以提高系统性能四倍或五倍。这种加速等级已超过从CPU升级或更快处理中获得的好处,有时甚至快于增加一个硬件加速器的结果。
当SoC架构从功能区别的异质多处理,向半对称的多处理器转变时,对互连架构的专注需求也从增强性能和节能替代方法转而成为系统设计的一个必要部分。没有对数据流的详细分析,一个动态多处理系统可能只是要求更多的互连,从而超过一个合理硅片设计所能提供的水平。
这种可能性使我们回到工具的问题上。Lautzenheiser说,今天架构师(如果他们没有用白板或电子数据表的话)的工具流是ESL建模工具、基于排队理论的统计分析(可以给出一个良好的整体图像,但可能完全错过角落情况)以及周期精确模型(可以寻找各个角落但可能因太慢而找不出它们)的一个特殊组合。
Arteris的Janac同意这个说法:“你需要架构级的建模。对一个电子数据表来说,问题变得太复杂。但对ESL,即使最好的工具也不具有现实性,它们给出的是一个抽象。因此,你必须将系统级的研究与你的IP周期精确模型捆
绑在一起。”
MIPS的Intrater建议,做这种捆绑的一种方法是使用硬件仿真。“周期精确模型是基于RTL,它们用于引导Linux或运行一个应用程序时速度太慢了。今天的最新技术是手工将细粒度的统计工具与周期精确仿真结合起来。但是,如果你在足够早的阶段就拥有互连的RTL模型,那么就可以使用仿真,将周期精确模型运行几十亿个循环。”
这种状态的工具使架构继续成为一种艺术。在正确水平上对某种方案建模;拥有来自实际用户的精确使用模型;找到关键情况的正确位置;以及从周期精确模型得出准确的结论,等等,这些都来自于艺术与经验,尽管系统级工具在逐步涌现,尤其是来自互连IP供应商的产品。但这是一种越来越具生命活力的艺术,当我们步入晶片上大型多处理系统的时代时,它将成为不可或缺的艺术。
附文:问题是总线带宽还是处理器带宽
随着通信与媒体流数据速率的增长,多数芯片设计者很快意识到数据带宽是设计成功的一个重要因素。Tensilica公司有100个以上的多处理器芯片设计的经验,它提出了一些基本概念,以解决有关带宽的疑惑。
例如,不恰当的数据通信会造成原始带宽的不足:I/O及片外内存的数据通信,片上不同块之间带宽共同构成的对持续带宽的总需求,超出了接口的最大持续带宽。它还会造成过高的延迟。数据存取的最差情况或典型延迟都会在某些重要场合造成数据饥饿,比如当没有合适的总带宽时就会增加竞争延迟。
通信中的瓶颈会出现于设计中的多个地方。三个最常见的位置分别是:片外的内存控制器;片上总线,尤其是当有多个主(特别是处理器和DMA控制器)访问多个从(内存与I/O接口)时;还有处理器与总线之间的接口。
处理器总线的瓶颈与接口的峰值数据传输速率有关,它通常接近于片上总线的峰值带宽。瓶颈还与如下的数据移动速率有关,即将远处内存数据沿片上总线或在片外移动,将数据移入本地内存,将数据移入或移出处理器寄存器,通过本地内存移动数据,以及将数据移出到远程内存等的速率。采用传统RISC处理器通过片上总线存取数据时,这种数据移动可能每32bit数据字要花费10个"20个处理器周期,即使数据已经在片上,并且处理器在整个路径中都不修改数据。
打破处理器总线瓶颈有两种方式。首先,使用第二个总线主控,如其它处理器或一个DMA(直接内存访问)控制器,将数据移入和移出第一个处理器的本地内存,这样可以部分解决瓶颈问题。不过,RISC的32bit寄存器与负载存储寄存器仍有问题。其次,可以扩充处理器接口,使之允许大带宽的数据流,从而绕过总线接口上的瓶颈。具有直接连接端口和队列的处理器可以通过处理器执行单元,移动比RISC处理器高一个数量级的数据流。
在复杂芯片设计中,总线互连与非总线互连可以协调工作。最佳的实践表明,当一个设计者了解到一对子系统需要大互连带宽和有良好限制的延迟时,他就应该在两者之间建立一个最佳的路径。其它通信(包括敏感的子系统间的通信)可以安全地使用一个公共的多主/多从片上总线,用于较低带宽和延迟敏感的数据移动。这种区分保持了普通总线的通用性,但减少了竞争异常的风险,简化了建模工作,并且提高了平台的缩放性能。
对大带宽链接的通信优化亦有助于节省能源。对于处理器与处理器通信队列之间的直接连接,每次数据传输一般比等效的总线传输要节能10倍。
片上网络的建立有两个基本工具:链接与整形资源。链接是为各个块之间提供数据路径。它们的实现可以是一个共享总线的一部分、一种专用连接、交换网络中的一条路径,或更有创意的方式。整形资源包括缓存、FIFO、排队引擎,以及再排序缓冲区等。从传统CPU总线架构转向更强大方案的最简便方法也许就是将总线分段。Janac建议说:“在媒体SoC中,可以将流量划分为低延迟事务、大带宽事务以及不太关键的外设事务。”可以分别处理各种类型的事务,虽然这样意味着在同一块上有多个总线连接。Denali Software公司IP产品副总裁Brian Gardner指出,这种方案不仅将每种类型的流量放在与之相应的物理介质上,而且还连接到能以类似方式建模的数据流上,从而大大增加了用于其后链接的建模精度。
Lautzenheiser称,这一过程的结果一般是一个层次化的互连链接。这一结果在Raza Microelectronics的网络处理器中表现得非常明显(图1)。当深入观察一些功能块时,就会发现一种相似的模式,例如在一只现代CPU内的互连,如ARM Cortex A9。在这里,内部链接将处理器核心连接到L1指令缓存和数据缓存。而多主高速缓存总线则将L1缓存连接到L2级缓存,供多达四个处理器核心使用。其它链接则用于控制和探测背后的逻辑潜伏。两个系统总线的连接来自L2控制器。但当无法为每个数据流提供一个正确的物理链接时会发生什么?SoC的DRAM控制器就是一个很好的例子,它必须接受芯片上多个处理器传给它的任何流量混合,但必须设法将这种混乱局面理顺,成为DDR DRAM可以接受的、高度有序的指令流。为了说明问题的复杂性,请看这样一款控制器(图2)。这个器件在一系列分立级上处理各个事务。首先,一个仲裁引擎根据某种优先级方案,决定对控制器的访问。然后,控制器将请求装入指令、读和写队列,它们在队列中按照服务质量要求和DRAM时序的实际情况,等候重新排序。最后,这些请求传递到一个事务处理引擎,它预先检查队列,以重组和获取最能发挥DRAM用途的请求。
对其它功能块,相同观点正变得越来越普遍。通常,信号处理或编码器/解码器块包含有复杂的DMA引擎,它提供很多与DRAM控制器相似的功能,如散播/获取处理、数据重新排序以及将随机请求转为突发请求的缓冲等。引擎完成这些功能并不会方便DRAM控制器,事实上它们可能把DRAM控制器弄乱,使流量适合于必须通过的物理链接。
结果与未来
全部这些工作的结果很显著。MIPS总裁兼首席执行官John Bourgoin称,对基本相同的功能块,SoC调整的结果可以提高系统性能四倍或五倍。这种加速等级已超过从CPU升级或更快处理中获得的好处,有时甚至快于增加一个硬件加速器的结果。
当SoC架构从功能区别的异质多处理,向半对称的多处理器转变时,对互连架构的专注需求也从增强性能和节能替代方法转而成为系统设计的一个必要部分。没有对数据流的详细分析,一个动态多处理系统可能只是要求更多的互连,从而超过一个合理硅片设计所能提供的水平。
这种可能性使我们回到工具的问题上。Lautzenheiser说,今天架构师(如果他们没有用白板或电子数据表的话)的工具流是ESL建模工具、基于排队理论的统计分析(可以给出一个良好的整体图像,但可能完全错过角落情况)以及周期精确模型(可以寻找各个角落但可能因太慢而找不出它们)的一个特殊组合。
Arteris的Janac同意这个说法:“你需要架构级的建模。对一个电子数据表来说,问题变得太复杂。但对ESL,即使最好的工具也不具有现实性,它们给出的是一个抽象。因此,你必须将系统级的研究与你的IP周期精确模型捆
绑在一起。”
MIPS的Intrater建议,做这种捆绑的一种方法是使用硬件仿真。“周期精确模型是基于RTL,它们用于引导Linux或运行一个应用程序时速度太慢了。今天的最新技术是手工将细粒度的统计工具与周期精确仿真结合起来。但是,如果你在足够早的阶段就拥有互连的RTL模型,那么就可以使用仿真,将周期精确模型运行几十亿个循环。”
这种状态的工具使架构继续成为一种艺术。在正确水平上对某种方案建模;拥有来自实际用户的精确使用模型;找到关键情况的正确位置;以及从周期精确模型得出准确的结论,等等,这些都来自于艺术与经验,尽管系统级工具在逐步涌现,尤其是来自互连IP供应商的产品。但这是一种越来越具生命活力的艺术,当我们步入晶片上大型多处理系统的时代时,它将成为不可或缺的艺术。
附文:问题是总线带宽还是处理器带宽
随着通信与媒体流数据速率的增长,多数芯片设计者很快意识到数据带宽是设计成功的一个重要因素。Tensilica公司有100个以上的多处理器芯片设计的经验,它提出了一些基本概念,以解决有关带宽的疑惑。
例如,不恰当的数据通信会造成原始带宽的不足:I/O及片外内存的数据通信,片上不同块之间带宽共同构成的对持续带宽的总需求,超出了接口的最大持续带宽。它还会造成过高的延迟。数据存取的最差情况或典型延迟都会在某些重要场合造成数据饥饿,比如当没有合适的总带宽时就会增加竞争延迟。
通信中的瓶颈会出现于设计中的多个地方。三个最常见的位置分别是:片外的内存控制器;片上总线,尤其是当有多个主(特别是处理器和DMA控制器)访问多个从(内存与I/O接口)时;还有处理器与总线之间的接口。
处理器总线的瓶颈与接口的峰值数据传输速率有关,它通常接近于片上总线的峰值带宽。瓶颈还与如下的数据移动速率有关,即将远处内存数据沿片上总线或在片外移动,将数据移入本地内存,将数据移入或移出处理器寄存器,通过本地内存移动数据,以及将数据移出到远程内存等的速率。采用传统RISC处理器通过片上总线存取数据时,这种数据移动可能每32bit数据字要花费10个"20个处理器周期,即使数据已经在片上,并且处理器在整个路径中都不修改数据。
打破处理器总线瓶颈有两种方式。首先,使用第二个总线主控,如其它处理器或一个DMA(直接内存访问)控制器,将数据移入和移出第一个处理器的本地内存,这样可以部分解决瓶颈问题。不过,RISC的32bit寄存器与负载存储寄存器仍有问题。其次,可以扩充处理器接口,使之允许大带宽的数据流,从而绕过总线接口上的瓶颈。具有直接连接端口和队列的处理器可以通过处理器执行单元,移动比RISC处理器高一个数量级的数据流。
在复杂芯片设计中,总线互连与非总线互连可以协调工作。最佳的实践表明,当一个设计者了解到一对子系统需要大互连带宽和有良好限制的延迟时,他就应该在两者之间建立一个最佳的路径。其它通信(包括敏感的子系统间的通信)可以安全地使用一个公共的多主/多从片上总线,用于较低带宽和延迟敏感的数据移动。这种区分保持了普通总线的通用性,但减少了竞争异常的风险,简化了建模工作,并且提高了平台的缩放性能。
对大带宽链接的通信优化亦有助于节省能源。对于处理器与处理器通信队列之间的直接连接,每次数据传输一般比等效的总线传输要节能10倍。
SoC 总线 电子 ARM 射频 ADC 编码器 MIPS 解码器 Cortex 仿真 Linux 相关文章:
- 高带宽嵌入式应用中SoC微控制器的新型总线设计 (02-02)
- SoC前段(ARM)嵌入式系统开发实作训练(上) (02-28)
- SoC前段(ARM)嵌入式系统开发实作训练(下)(02-28)
- 采用灵活的汽车FPGA 提高片上系统级集成和降低物料成本(04-28)
- 开放源码硬件简史(05-21)
- 可配置处理器技术优势详解(05-15)
