带宽到底是个啥玩意
来源:icbank)转载自公众号芯启示,谢谢。
只要是涉及到电路,就涉及到频域分析,只要有频域分析,就必然有带宽的概念。
电脑处理器年年更新,手机处理器也是不断的迭代,新款发布的时候,也必然涉及到带宽,或者说工作频率这个词,而且是这个数字一年比一年大,可见带宽,也就是频率,越大越好的。回到模拟集成电路设计,带宽同样是重要的概念。放大器有小信号带宽,也就是单位增益频率,也有大信号带宽,决定于尾电流源电流的大小。低通滤波器,高通滤波器,带通滤波器等等所有的滤波器,也都有带宽的要求,把整个频谱由一个或两个频率点划分为不同的频率段,由通过或不通过来决定滤波器类型。模数转换器也是同样的道理,带宽是它一个重要的指标,处理的带宽越大,这个转换器越强悍。除此之外,还有诸多的带宽相关的电路……那么带宽到底是个什么东西呢?从小学开始,我们都经历了无数场考试,每场考试都规定必须在一定的时间内完成,譬如两个小时。这里两个小时就是一个分界点,小于两个小时或两个小时都可以交卷,超过两个小时则违规。类似地,带宽是由角频率点(或者频率点)界定,可见带宽是一个频率范围的集合。而我们知道角频率是时间的倒数,那也可以说是由几个时间点界定。就比如,10M带宽的低通滤波器,10M带宽点对应了0.1us。频率小于10M的信号能通过,也即周期大于0.1us的信号能通过。而我们又知道,跟电路对应起来,电阻和电容的乘积即时间常数,时间常数又很容易和频率对应起来了(倒数),所以电阻和电容也就很容易和频率甚至带宽对应起来了。开环放大器增益为跨导乘输出小信号电阻,跨导表征了电压转化为电流的能力,电流再乘以电阻又回到了电压,就代表了电压转化的能力,所以一个简单的跨导乘电阻,就是增益。当输出电阻比较大时,整体上看它的输出部分更像一个电流源,所以叫跨导放大器。当输出电阻比较小时,它的输出部分更像一个电压源,叫运算放大器。开环放大器带宽,也即3-dB带宽,用角频率表示时,它是时间常数的倒数,输出电阻和输出电容乘积分之一。它代表了当信号的频率小于这个频率点,或者说信号的周期大于对应的时间点时,信号都可以正常的放大。而对于周期更短的信号,就不能正常放大了。角频率再除以2pi,得到的就是3-dB带宽频率。增益带宽积即单位增益带宽。随着输入频率越来越大,即信号的周期越来越小,放大器越来越放大得力不从心了,也就是还没放大到想要的倍数时,输入信号已经变化了很多,导致放大能力越来越弱甚至放大倍数下降到一。以跨导放大器来说,放大倍数主要取决于跨导和电阻,而放大的过程实际上是控制输出端给负载电容充放电的过程。所以可以想像,单位增益带宽应该跟跨导有关,跨导越大,证明电压转换成电流的能力越大,单位增益带宽越大。负载越小,给负载电容充电时间越短,单位增益带宽也越大。所以单位增益带宽为跨导除以负载电容。想要提升放大器单位增益带宽,一者可以提升跨导,一者可以降低负载电容。采用以上的方法,就可以处理变化足够快的信号,得到很大的带宽。以上就是开环放大器三个重要的指标,增益,带宽和单位增益带宽。仔细观察以上三个指标,可以发现,它们有着密切的联系。它们三个只由三个因素决定,跨导,输出电阻和负载电容。跨导是整个集成电路中重要的物理量,它代表了晶体管电压转化为电流的能力,所以越大越好。它越大,放大倍数越大,单位增益带宽也越大,能处理的速度越高。输出电阻决定了放大器倍数和时间常数(3-dB带宽),它越大,放大倍数越大,而3-dB带宽却越小。输出负载电容决定了3-dB带宽和单位增益带宽。负载电容越大,3-dB带宽越小,单位增益带宽也越小。这也很容易理解,向一个水池里充水,水池子越大,越不容易充满。所以在满足要求的情况下,尽量降低输出负载电容,可以获得更好的带宽性能。而进一步综合考虑它们三个,可以发现增益和3-dB带宽的乘积,就是单位增益带宽。以上就是开环放大器几个重要指标的介绍。开环放大器缺点是增益随PVT变化太大,所以在实际的应用中,常常在开环放大器的基础上,增加反馈电路,构建闭环放大器。闭环放大器最最最重要的一点,放大倍数由反馈系数决定,它是反馈系数的倒数,而反馈电路多是由电阻电容等无源器件设计,在先进工艺下可以达到很高的匹配度,也就意味着放大倍数可以很精确。当然前提是开环放大器增益足够大,以上的结论才成立。一对比可以看出,由对开环放大器精确的放大倍数的要求,降低为闭环放大器中开环放大器设计满足放大倍数足够大就可以,而不用管放大倍数到底为多大。这样子一来,要求瞬间降低了太多,这让我们电路设计者不能更开心。接着说闭环放大器。既然是闭环结构,就有了环路增益和闭环增益。环路增益即开环增益乘以反馈系数,因为反馈系数一般小于一,所以环路增益要小于开环增益。闭环增益即整个放大器增益,是对输入信号放大的程度,也就是之前说到的反馈系数的倒数。闭环放大器的带宽为之前提到的单位增益带宽乘以反馈系数。跟开环放大器一对比,发现只有增益突变最大,变得只跟后来引入的反馈部分相关。而带宽是单位增益带宽乘以反馈系数。更神奇的是,闭环放大器增益和带宽的乘积,同样是单位增益带宽。而且无论反馈系数如何,闭环放大器增益和带宽的乘积,始终等于开环放大器增益和带宽的乘积,等于单位增益带宽,即增益带宽积始终是一个常数。它只跟跨导和输出负载有关。当然以上讨论的前提是,等效负载电容不变。以上就是放大器增益,带宽和增益带宽积的一点个人见解,因水平有限,望大家指正。*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。
今天是《半导体行业观察》为您分享的第2925内容,欢迎关注。
晶圆|集成电路|设备|汽车芯片|存储|台积电|AI|封装
手机芯片带宽性能评测手段的分析和优化
牟刚
(炬芯(珠海)科技有限公司,广东 珠海 519085)
:手机的带宽吞吐性能是影响手机总体性能的一个重要指标,目前几乎所有第三方的手机评测软件都有对这一项指标的单独测试。但这些测试基本上都存在一些问题,并不能全面真实地反映手机的带宽吞吐性能。文章从硬件的角度深入分析了CPU、Cache、DDR等模块的实现方式对带宽测试软件的影响,并结合最常用的ARM系列CPU做了对比,最后提出了新的带宽吞吐性能评价方式。
: 带宽;数据吞吐;Cache;DDR
:TP368.1文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.09.024
引用格式 :牟刚.手机芯片带宽性能评测手段的分析和优化[J].微型机与应用,2017,36(9):81-84.
0引言
随着智能手机的快速普及,2015年全球的出货量已达14亿台。这其中大半部分都是Android系统的手机,它们的核心操作系统基本一样,但硬件平台就各有不同了。对手机硬件性能的评测成为了业界以及用户所关注的重点[1]。相应的,第三方的手机测评软件就应运而生了。这些测评软件往往将纷繁复杂的各项硬件性能转化为一个个清晰明了的数字,让消费者以最直观的方式了解一部手机的性能水平。由于其使用的简便性和直观性,不光是手机的最终消费者经常使用它作为手机选择的参考,不少方案厂商也利用这些测评软件作为手机芯片选择的依据。
现代的手机主控芯片都是多核系统,运算能力越来越强,但内存性能却提升有限[2]。因此内存性能往往成为系统性能的瓶颈,对内存带宽吞吐性能的测试也显得尤为重要。本文将分析目前带宽性能测试软件的一些局限性,结合硬件设计探讨影响带宽性能测试的因素,最后提出对带宽性能测试优化的方向。
1CPU测试带宽的局限性
手机的主控芯片是个复杂的SoC(System on Chip),有多个主设备可以访问DDR(内存),DDR控制器的复杂程度也越来越高,它可以协调均衡各个主设备的访问。但除了CPU,其他的主设备第三方用户是不方便直接用软件来控制的,如视频编解码模块,这些模块都需要专门的驱动程序来控制,而驱动程序都是由硬件厂商提供,第三方用户不了解其中的细节。因此一般是利用统计CPU访问DDR的速度来评估芯片总的带宽吞吐性能。这就带来一个问题,可能CPU全速运行测试程序所需要的带宽也达不到DDR能提供的理论带宽,这时带宽吞吐性能受限于CPU发读写命令的能力,而不是受限于DDR。
例如,以ARM cortexA9 CPU做仿真实验,在CPU访存接口上挂一个理想的32位DDR模型(有访问请求立即响应,没有延时),CPU频率为1 008 MHz时,测得数据拷贝带宽为2 140 MB/s。而手机上一般会配置540 MHz 32位DDR,能提供的理论带宽为4 320 MB/s,已经远超cortex-A9的带宽吞吐能力了,这种情况下带宽性能测试得到的只是CPU的访存性能,而不是DDR的总体带宽性能。
2Cache对带宽吞吐测试的影响
现在的带宽吞吐性能评测软件都是利用统计CPU访问DDR的速度来评估芯片总的带宽吞吐性能,这就需要考虑CPU Cache的影响。
为了加快访问数据的速度,现代多核处理器通常包含私有缓存(L1 Cache)和末级共享缓存(L2 Cache)[3]。L1 Cache大小通常有几十KB,L2 Cache通常有数百KB到几MB。CPU对数据的访问都会经过Cache再到DDR。不同的Cache行为实现会导致CPU对DDR访问量的巨大差异。
目前手机主控芯片几乎都是采用ARM Cortex系列的CPU,下面就以ARM cortex系列最常用的CPU(A5,A7,A9,A53)来分析不同的Cache配置对CPU访存性能的影响。
2.1对连续地址的写操作
CPU对连续地址的写入速度是反映带宽性能的重要指标,软件上对应memset操作,用C语言描述如下:
int *dst;
for(int i=0;i<count;i++)
*dst= value
实际上由于Cache的存在,数值并不是直接写到DDR中。对于ARM cortexA5和cortexA9 CPU,这一过程如图1所示。
L1 data Cache一般都配置为write back + write allocate。但ARM对所有系列CPU的L1 Cache都做了优化:检测到连续地址3次Cache line的write操作,即自动切换为write through + write no allocate。所以可以看到在图中L1 data Cache只有前3个Cache line(0x1000000~0x1000040)的数据从DDR中读取出来了,后面的数据就直接写入L2 Cache了。
CortexA5和cortexA9的L2 Cache 依然是write back+write allocate。但没有类似于L1 Cache那样的自动切换到write through + write no allocate的机制。所以每次从L1 data Cache有数据写到L2 Cache,都应该从DDR中读取相应地址的一个Cache line大小的数据分配到L2 Cache中,再对这个分配好的Cache line做写操作。但实际上由于L1 data Cache每次对L2 Cache的写操作都是一个Cache line的大小,即整个Cache line都被重写了,因此也不用关心DDR中对应这个Cache line地址的数据是什么了。这里L2 Cache就直接分配了一个Cache line来存放L1 data Cache写过来的数据,没有再去读DDR。
ARM cortexA7和cortexA53的情况又有所不同,如图2。
CortexA7和cortexA53的L1 data Cache 实现机制与前面一样,但L2 Cache的实现不同。虽然同样是write back + write allocate,但其有个自动检测机制,检测到连续地址的127次Cache line的write操作可以自动切换到write through+write no allocate。如图2所示,地址0x1002000之后的数据就直接写到DDR中了。
根据上面的分析,对于CPU向外写数据的操作,在小于一定大小的情况下,实际上并不会操作DDR,而是在操作L2 Cache。表1是两款手机CPU 同频下的memset性能对比,它们的CPU分别使用了ARM cortexA7和cortexA9。
从表中数据可以看出,在size小于10 KB时,cortexA9性能好于cortexA7,此时都是对L2 Cache的访问,性能决定于CPU的指令发射能力以及流水线的乱序执行能力,这些能力cortexA9都强于cortexA7。在10 KB <size <100 KB时,cortexA9比cortexA7性能好得更明显,因为此时cortexA7已经开始直接写DDR了,而cortexA9依然在访问L2 Cache。在size > 100 KB时,cortexA9的性能逐渐被cortexA7反超,因为此时cortexA9也开始有访问DDR的操作了,size越大访问DDR占比越大,最后几乎完全是对DDR的访问了。这时性能主要由DDR的性能决定。
2.2对连续地址的读操作
CPU对连续地址的读取速度也是反映带宽性能的重要指标,可用C语言描述如下:
int *src;
for(int i=0;i<count;i++)
value = *(src + i);
cortexA5和cortex-A9的L2 Cache是非exclusive模式,即L1不命中时,从DDR读取回来的Cache line会保存在L2 Cache中。如图3。
CortexA7和cortexA53的L2 Cache是exclusive模式,即L1不命中时,从DDR读取回来的Cache line不会保存在L2 Cache中。只有当被改写过的Cache line从L1 Cache刷出来时才会存到L2 Cache中。如图4。
以上两种实现方式各有利弊。做重复读取性能测试时,如果数据量小于L1 data Cache size,exclusive模式和非exclusive模式性能相当。当数据量大于L1 data Cache size,且小于L2 Cache size时,非exclusive模式性能较好。当数据量大于L2 Cache size时,exclusive模式性能略好,如果除了读操作还有其他的写操作,那么exclusive模式性能优势就更明显了,因为这种模式下读操作占用了较少的L2 Cache,可以分配给其他操作使用。
2.3数据拷贝性能
数据拷贝是CPU最常见的访存行为,也是带宽性能测试软件最常用的测试方式。数据拷贝包含了从源地址的读数据操作和向目标地址的写数据操作。一般来讲数据地址都是连续的。前面两节讨论了连续地址的写操作和读操作,这两项性能也大致决定了数据拷贝的性能。
除此之外,DDR控制器在读写交替时的处理也会影响数据拷贝的性能。
DDR的地址线分为bank、row和column。一个bank中同时只能打开一个row,而处于不同bank中的row是可以同时打开的。为了充分利用这一特性来优化DDR访问效率,bank、row、column地址和物理地址的对应方式会被精心设计,有多种映射方式[4]。图5是某款手机的地址排列方式。
假设做数据拷贝,源地址是0x100000(对应row2,bank0),目标地址是0x200000(对应row4,bank0),它们对应同一个bank的不同row。从源地址读一组Cacheline大小的数据,需要打开DDR的bank0_row2,然后CPU将这组数据写入目标地址,这时就需要先关闭bank0_row2,再打开bank0_row4。在这个读写交替的过程中,就有对DDR某一row的关闭和打开操作,需要耗费较多的时间。
同样还是做这样的数据拷贝,如果将目标地址换成0x201000(对应bank1_row4),再做写操作时就不用将bank0_row2关闭,直接打开bank1_row4就可以了。并且由于源和目标地址的row都没有关闭,后面的读写操作都不用再做打开row的操作了,这就大大地提高了数据拷贝的性能。表2是某款手机(采用cortex-A9 CPU)在不同目标地址条件下数据拷贝性能的测试数据。
可以看到,仅仅是改变目标地址就使连续地址的数据拷贝性能出现了很大差异,避免读写地址冲突后数据拷贝性能可提高31%。
3带宽性能测试的优化方向
前面分析了目前手机带宽性能测试的局限性,并结合硬件设计探讨影响带宽性能测试的因素。根据这些因素,可以从以下几个方面进一步优化完善带宽性能测试方式:
(1)多个主设备同时访问DDR,尽量达到DDR的带宽极限。手机主控芯片中除了CPU,对带宽需求最大的就是GPU[5],而GPU一般都可以通过上层的openGL软件操作。GPU的测例可以使用多个图层的叠加操作,这种操作对GPU的运算能力需求较弱,对带宽要求较高。在测试时,让CPU密集执行数据拷贝操作,同时让GPU做图层叠加,结合两者的实际完成时间给出带宽性能评估分数。
(2)用CPU测试数据拷贝性能,数据量要远大于L2 Cache的大小,避免Cache的影响。除了连续地址的数据拷贝,还要增加非连续地址的数据读取性能测试,以避免CPU预取功能的影响,更真实地反映DDR的单次延时。如以下C代码:
int *src;
for(int i=0;i<count;i+=STRIDE)
value = *(src+i);
注意STRIDE的取值要大于两个Cache line size,以免触发连续Cache line的预取操作。将连续地址的数据拷贝和非连续地址的数据读取性能结合评估并打分。
(3)为全面考察不同地址对数据拷贝性能的影响,做多次数据拷贝操作,每次都改变一下目标数据地址的偏移,如以下C代码:
int *src, *dst;
for(int j=0;j<loop_count;j++)
for(int i=0;i<count;i++)
*(dst+i+j*0x1000) = *(src+i);
4结束语
第三方的带宽吞吐性能测试软件不仅为终端消费者提供了手机性能的比较手段,也为手机方案厂商选择芯片提供了可靠依据,甚至最上游的芯片设计厂商也会利用这些测试软件来指导芯片架构的设计。本文提出的带宽吞吐性能测试优化方式可以更全面公正地评估手机芯片的实际性能,加快了芯片设计性能问题的收敛,具有良好效果。
参考文献
[1] 杨怡君,黄大庆.Android手机自动化性能测试工具的研究与开发[J]. 计算机应用,2012,32(2):554-556.
[2] WULF W A, MCKEE S A. Hitting the memory wall: implications of the obvious[J]. SIGARCH Comput. Archit. News, 1995,23(1):20-24.
[3] 高珂,陈荔城,范东睿,等.多核系统共享内存资源分配和管理研究[J]. 计算机学报,2015,38(5):1021-1031.
[4] SHAO J, DAVIS B T. The bitreversal SDRAM address mapping[J]. In SCOPES ’05: Proceedings of the 2005 Workshop on Software and Compilers for Embedded Systems, ACM, 2005:62-71.
[5] 徐新海,林宇,斐易伟.CPUGPGPU异构体系结构相关技术综述[J]. 计算机工程与科学,2009,8(4):74-76.
相关问答
内存的主要性能指标有哪3个?
内存的性能指标包括存储速度、存储容量、CAS延迟时间、内存带宽等,下面对他们进行一一介绍。1、存储速度内存的存储速度用存取一次数据的时间来表示,单位为...
显卡带宽肿么计算?-ZOL问答
显存带宽是指图形芯片与显存之间一次可读入的数据传输量,它是决定显卡性能和速度的主要因素,其计算公式为:显存带宽=工作频率×显存位宽/8。比如:工作频率是80...
200万摄像头带宽占用率?
那要看你网络摄像机的分辨率了。一般CIF在500Kbps左右;D1在1.5Mbps左右100W占用3Mbps左右;200W占用5Mbps左右。(注意是Mbps不是MBps),图像流畅,动态画面.....
10g交换机最大带宽?
10G交换机最大带宽由交换机的背板处理能力和设备芯片所共同决定的,一般为10G*2=20G,即交换机光口或电口数据往外发10G/每秒,交换机光口或电口接收10G/每秒,两...
显卡和显示芯片有什么不同-ZOL问答
显卡即显示适配器是一个硬件,显示芯片即GPU是一个芯片。显示芯片是安装在显卡上的,显卡用来接收数字信号,显示芯片则负责将数字信号转化为图形信号,并由显卡输...
晶圆级芯片是什么?
Cerebras发布其第一代晶圆级芯片WSE(WaferScaleEngine),即在一整片12寸晶圆上,只制造一颗芯片,这无疑是一颗比其他所有量产芯片规模都要大的芯片:芯片...,C...
ramaxel内存条上的数字代表什么?
1Rank*8bit,可以认为是单面,IC位宽为8DDR2台式机,芯片带宽为4200M,CL、tRCD、tRP分别为4、4、4tCK1Rank*8bit,可以认为是单面,IC位宽为8DD...
测试芯片主要测试什么参数?
测试芯片主要测试其功能、性能、可靠性和功耗等参数。在功能测试中,测试芯片需要验证其是否符合设计规格书中的要求,包括输入输出是否正确、时序是否满足要求...
芯片与基带的区别?
芯片是数据处理装置,基带是数据传输装置。两者用途不同。基带:Baseband信源(信息源,也称发射端)发出的没有经过调制(进行频谱搬移和变换)的原始电信号所...
存储带宽是什么?
主存储器带宽是说的内存的吞吐量,也就是说内存能一次处理的数据宽度。总线频率也就是前端总线频率。公式是:总线的频率*位宽/8=总线的带宽.总线带宽是...