当前位置: 首页 > news >正文

zynq7035的arm一秒钟最多可以支持触发多少次中断


一、概述
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.不建议使用超高频率中断,对系统的稳定性有很大影响。

相关文章:

  • Docker compose 部署微服务项目(从0-1出发纯享版无废话)
  • 汽车制造行业如何在数字化转型中抓住机遇?
  • IdeaVim 配置与使用指南
  • 算法效率的钥匙:从大O看复杂度计算 —— C语言数据结构第一讲
  • Linux红帽:RHCSA认证知识讲解(十 四)分区管理、交换分区,创建逻辑卷与调整逻辑卷的大小
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(二)
  • WPF常用技巧汇总 - Part 2
  • Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解
  • EDR 保护时间(EDR Guard Time)
  • DeepSeek智能时空数据分析(四):绘制行政区域并定制样式
  • Java后端开发day37--源码解析:TreeMap可变参数--集合工具类:Collections
  • PostgreSQL的扩展 credcheck
  • 犬鼻子检测数据集VOC+YOLO格式6808张1类别近距离拍摄
  • 云原生课程-Docker
  • NLP预处理:如何 处理表情符号
  • Linux操作系统从入门到实战(四)Linux基础指令(下)
  • Hyper-V安装Win10系统,报错“No operating system was loaded“
  • 初识数据结构——二叉树从基础概念到实践应用
  • 量子纠缠式架构:当微服务同时存在于所有节点时,CAP定理是否依然成立?
  • 来自B站-AI匠的“RAG的prompt设计指南“的部分截图
  • 龚正会见委内瑞拉副总统罗德里格斯
  • 外交部:对伊朗拉贾伊港口爆炸事件遇难者表示深切哀悼
  • 传智教育连续3个交易日跌停:去年净利润由盈转亏
  • 格力电器去年净利增长一成:消费电器营收下滑4%,一季度净利增长26%
  • 伊朗港口爆炸致18死800余伤,三分之二伤者已出院
  • 伊朗港口爆炸最新情况:14死700多伤,大火延烧,调查困难