马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、概述
1.关于zynq7035的ARM处理处罚器一秒能够支持多少次停止触发,须要综合来思量。须要确定ARM处理处罚器的参数,现在zynq7000系列,利用的双核Cortex-A9处理处罚器。此中主频大概在500MHZ~1GHZ左右,差异的用户设置的主频大概轻微有差异。
2.ARM处理处罚器能够吸取触发次数受多个因素影响:
起首,停止处理处罚本省须要的时间,就是停止这个变乱触发后,须要掩护现场,须要生存上下文,实验停止服务程序ISR,然后ISR停止服务程序完成后,规复停止上下文等。如果ISR停止服务程序很短,大概每个停止只是须要几十到几百个clock周期即可。
3.举例:如果设置的时钟主频是667MHZ,一个周期大概就是1.5ns,如果停止处理处罚函数实验
须要100个clock,那么处理处罚一个停止须要150ns.那么1s/150ns=6.67百万次停止。这个值是理论上
的最大值,现实环境,由于停止之间的冲突,停止的优先级,cache hit or miss缓存击中击不中这些因素都会降低停止相应效率。
4.除了要思量ARM中对停止的相应和停止处理处罚函数的处理处罚速率,还须要思量的一个点就是停止控制器GIC自己的限定。Zynq的GIC通用停止控制器对停止频率也是有影响的,GIC在处理处罚停止分发的时候,如果停止过于频仍,GIC会成为性能瓶颈,由于停止频仍触发,导致系统没有办法处理处罚其他使命,造成系统不稳固。
5.在现实的工程应用中,牢记不要频仍的利用停止,一样平常须要思量利用DMA方式或者硬件加快方式将CPU的负载能力降下来,较少CPU的负担。
二、影响停止触发极限频率的因素
1.停止的范例
2.停止处理处罚程序ISR的处理处罚速率
3.停止控制器GIC的性能
4.上下文切换速率
5.生存现场,帧栈入栈和出栈的速率。
三、理论盘算
1.CPU主频:ARM9-cortex的主频为667MHZ为例
2.停止处理处罚时间:
2.1.最小停止延时,从触发停止到ISR停止服务程序入口的时间:大概为20~30clock(也是硬件自动生存上下文的时间)
2.2.ISR停止服务程序实验时间:这个取决于用户,如果只是简朴的几个寄存器操纵,比方,关闭停止或者清算停止,那么,这个停止服务程序大概只是须要50~100个clock;
2.3.停止须要的总时间大概为70~130clock,时钟频率以667MHZ为例,那么一次停止须要105~195ns.
3.综上,1秒/105ns,大概最大为9.5百万次停止每秒
四、现实环境盘算
1.GIC停止控制器瓶颈
GIC的优先级仲裁和分发延伸增加高频下的拥堵风险;
两次停止的停止隔断须要大于GIC处理处罚一次停止的时间,一样平常大概几百纳秒;
2.系统总线竞争
现在zynq系统利用AXI总线,频仍的停止,大概导致AXI总线的带宽利用竞争,这个
会对ISR停止服务函数访问外设或者内存的效率有很大的影响。
3.cache缓存或者流水线影响
高频停止大概导致cache访问的抖动,也就是不稳固,会影响hit or miss命中的效率
4.操纵系统的开销
如果是linux系统,内核停止处理处罚top-half或者bottom-half的拆分会引入额外的延伸。
五、现实测试值
1.standalone裸机环境:这种环境下编写的ISR停止服务程序(汇编优化+寄存器直接操纵)可以达到1~2百万次/每秒
2.linux环境下:受到内核调度和停止屏蔽影响,通道低于50万次/秒。
六、高频停止利用发起
1.硬件辅助:利用PL端的FPGA逻辑实现多次停止合并或者变乱的计数,降低CPU停止的频率;
2.利用DMA传输:利用DMA在背景搬动数据,替代CPU停止驱动频率,较少停止次数;
3.轮询模式:针对有些场景,须要权衡相应时间和CPU占用率;
4.不发起利用超高频率停止,对系统的稳固性有很大影响。
|