处理器处理中断的速度有多快

2024-03-01

我正在研究中断。因此,大多数架构都是中断驱动的,如果一切都是中断驱动的,那么处理器处理所有这些的速度有多快。例如,当按下键盘按键时,它会创建一个中断,要求内核在缓冲区中查找新字符,在这种情况下,处理器的服务速度有多快,而且当发出中断时,处理器需要切换到内核空间,这在上下文切换方面花费很大。所以我假设,即使在所有这些之后,如果处理器具有良好的性能,那么我只能假设两次击键之间的时间就计算机速度而言是很多时间?平均一分钟内发生多少次上下文切换?我想这会让我对我真正在学习的内容有一些了解,并获得真实的生活感觉……谢谢……


多快取决于多种因素:

  1. CPU 和中断控制器的硬件延迟(如果有)
  2. CPU 时钟速率(通常,事件(或对它们的响应)发生的速度不会比此快)
  3. CPU访问所需内存(系统表(例如中断向量表,但可能有段表和页表等)、堆栈(中断代码指令指针通常保存在堆栈上)的速度,因此 ISR 可以返回它)、ISR 代码本身及其使用的所有数据)。显然,代码、数据和 TLB 缓存将在这里发挥作用。
  4. ISR 完成其工作所需的时间,特别是当 ISR 无法互相抢占时,因此并发中断必须串行化。
  5. 中断优先级。通常,不同的中断源被分配不同的优先级。例如,您希望不可屏蔽中断、机器检查中断(基本上是报告严重硬件问题的中断)和计时器中断的优先级高于键盘中断等。在基于优先级的中断处理中,所有优先级低于当前正在服务的中断的中断都必须“等待”。因此,如果您有大量高优先级中断,则可以以明显且不同的延迟来处理较低优先级中断。极端情况是高优先级中断不断出现。这可能是由于设计不当或硬件故障造成的。
  6. 与其他 CPU 的通信和交互。在 MP 系统中,中断处理程序有时可能会采用自旋锁来独占访问多个 CPU 之间共享的资源。如果存在争用,ISR 将等待,并且所有其他中断(或所有较低优先级的中断)将不会得到服务,直到当前 ISR 完成其工作。

这是对一般问题的一般答案。

EDIT: 我还忘了说一件事。存在一些奇怪的 CPU,其中某些指令是可重复的(想想 x86 的rep movsb)并且在重复指令完全完成之前,中断无法开始得到服务,这可能需要相当于执行大约 1000 条甚至更简单的单独指令的时间。因此,尽管启用了中断,但可能存在一些 CPU 异常,无法让 ISR 开始运行。 TI 的 TMS320C54xx 就是此类 CPU 之一。使用它你必须小心 FIR 滤波器代码。如果过滤器很长并且被实现为重复的 MAC 指令,则会在中断服务中引入延迟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理器处理中断的速度有多快 的相关文章

  • Go (golang),Windows 上的文件 uid

    是否可以在 Windows 上获取文件的 UID 所有者 我尝试使用FileInfo Sys 但它只适用于Linux 我真的很困惑这个问题 不知道如何获取 UID 第一个问题是 Windows 本机支持文件 目录所有权的文件系统没有 所有者
  • 什么算作失败?

    假设我有一个伪 C 程序 For i 0 to 10 x a 2 x 5 next 30 FLOPS 的 FLOP 数量是 1 x 1 x 5 1 2 x 5 10 loop 吗 我很难理解什么是失败 请注意 指示我从何处获取 操作 计数
  • 如何在嵌入式Linux中检测GPIO线上的中断?

    GPIO 39 上每 10ms 产生一个中断熊猫板 OMAP4 http www ti com product OMAP4460 我已在 Linux 驱动程序代码中为此注册了一个处理程序 但由于未检测到中断 因此未调用该处理程序 我在硬件级
  • 设置了 LARGEADDRESSAWARE 标志的应用程序获得的虚拟内存较少

    我有一个 32 位应用程序 由一个 EXE 和多个 DLL 组成 EXE 是用 LARGEADDRESSAWARE标志设置 所以我预计在 64 位操作系统上我应该获得 4 GB 的用户地址空间 但在某些 64 位 Win 7 系统上 我只能
  • 如何建立一个类似Jira的SaaS网站?

    任何人都知道如何构建单租户 SaaS 应用程序 例如 Jira Wordpress com 等 其中每个客户都有一个单独的站点 但托管在公司服务器上 网络上似乎有很多关于多租户 SaaS 应用程序以及如何在 Heroku Openshift
  • 我如何解释 meminfo 中的所有内存?

    我试图理解如何meminfo跟踪记忆 这是我正在看的内容 MemTotal 341596 kB MemFree 147288 kB Buffers 56 kB Cached 46752 kB SwapCached 0 kB Active 8
  • 使用 i386 arch 而不是 x86_64 在 OSX 上构建 libFLAC

    我正在尝试构建 libFLAC 以在我的项目中使用 但是当涉及到链接时 GCC 会忽略该库 因为它说它不是为当前体系结构 i386 构建的 当我以 64 位编译程序时 它正确链接了库 这意味着该库是针对 x86 64 架构编译的 不幸的是
  • 与云无关的架构? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在对一个新解决方案进行一些架构工作 该解决方案最初将在 Windows Azure 中运行 不过 我希望解决方案 或至少是架构 设计 与云无
  • Azure ServiceBus 和异步 - 是还是不是?

    我正在 Azure 上运行服务总线 泵送每秒 10 100 条消息 最近我已经切换到 net 4 5所有人都兴奋地重构了所有代码 异步 和 等待 每行至少两次 以确保它 正确 完成 现在我想知道这是否真的是为了是好是坏 如果您可以查看代码片
  • 在 DDD 中,表示层可以同时使用 Repository 和 Service 类吗?

    如果表示层只应该使用服务 那么服务类必须公开存储库已实现的相同方法 以使它们可供表示层使用 这似乎是错误的 有人可以帮我澄清一下吗 我敢打赌 这似乎是错误的 因为您实际上并不需要这种抽象级别 应用服务有facades http en wik
  • 如果物理内存的大小是2^32-1,那么虚拟内存的大小是多少?

    我知道物理地址是 32 位长 但是如何通过这些信息找出虚拟内存的大小 虚拟内存地址空间的总大小为2 32x86架构和更大 目前约为 2 48 x64建筑学 然而 操作系统通常会保留一部分空间 因此 32 位应用程序不一定能一次寻址 4GB
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 为什么要分离接口和实现?

    在生产代码中 我经常看到定义如下的类 public interface SomeComponent Some methods public class SomeComponentImpl implements SomeComponent S
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • STM32F4 板上的 SPI 从机设置

    我正在尝试通过主从配置中的 SPI 在两个 STM32F4 发现板之间进行通信 我已经有了主设备的代码 但我对需要对从设备的 SPI 初始化进行的更改感到有点困惑 我还想在主机发送数据时实现中断 而不是让从机一直轮询 RXNE 寄存器 但是
  • 您的 Web 服务版本控制最佳实践是什么?

    我们有 2 个独立的产品 需要通过 Web 服务相互通信 支持 API 版本控制的最佳实践是什么 I have 本文 http www ibm com developerworks webservices library ws versio
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 微服务、amqp 和服务注册/发现

    我正在研究微服务架构 实际上我想知道一些事情 我非常同意使用 返回 服务发现来在基于 REST 的微服务上发出请求 我需要知道发出请求的服务 或至少是服务器集群的前端 在哪里 因此在这种情况下能够发现 ip port 是有意义的 但我想知道
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 关于多客户端和可定制 Web 应用程序的架构所需的建议[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐