Arm 通过专用体系结构和操作系统降低中断延迟

Arm 通过专用体系结构和操作系统降低中断延迟,arm,interrupt,interrupt-handling,Arm,Interrupt,Interrupt Handling,这个问题似乎有点模糊,但我正在研究中断系统如何工作以及它们的延迟时间。我试图了解ARM中的FIQ等体系结构设施如何帮助减少延迟时间。这与使用无法访问或无法访问此设施的操作系统有何不同?例如,Windows RT是为ARM等而设计的,该操作系统无法移植到其他体系结构 简单地说,与可以跨许多不同体系结构(例如Linux)移植的操作系统相比,具有专用操作系统的专用体系结构中的中断延迟有何不同 很抱歉这么说-正如你可能知道的那样,我很困惑。我将从你的Windows RT示例开始,Windows RT是W

这个问题似乎有点模糊,但我正在研究中断系统如何工作以及它们的延迟时间。我试图了解ARM中的FIQ等体系结构设施如何帮助减少延迟时间。这与使用无法访问或无法访问此设施的操作系统有何不同?例如,Windows RT是为ARM等而设计的,该操作系统无法移植到其他体系结构

简单地说,与可以跨许多不同体系结构(例如Linux)移植的操作系统相比,具有专用操作系统的专用体系结构中的中断延迟有何不同


很抱歉这么说-正如你可能知道的那样,我很困惑。

我将从你的Windows RT示例开始,Windows RT是Windows到ARM体系结构的一个端口。它不是“专用操作系统”。有(可能)许多操作系统只在一种体系结构上运行,但由于某种原因,这更多的是一种功能,无法将其移植到端口

“港口”到底是什么意思

Windows有一个内核(这里我们称之为NT,这无关紧要),NT内核有一系列需要实现的概念。这些概念包括计时器、内存虚拟化、异常等

这些概念在架构之间的实现方式不同,因此内核和驱动程序的端口(这里我将忽略操作系统的其余部分,通常只是重新编译)将是使用可用的硅片来实现所需概念的问题。此实现称为“端口”

让我们放大具有FIQ和IRQ的ARM上的中断(也称为异常)。 一般来说,中断可以异步发生,我的意思是在任何时候。当一个IRQ被断言时,CPU通常忙于做一些事情,因此在CPU可以使用UserContext1使用的任何资源之前,需要存储上下文(我们称之为UserContext1)。一般来说,这意味着在使用寄存器之前将其存储在堆栈上。 在ARM上,当出现IRQ时,CPU将切换到IRQ模式。寄存器r13和r14在IRQ模式下有自己的副本,如果使用它们,则需要保存其余的副本-这就是发生的情况。存储到内存需要一些时间。处理IRQ,将UserContext1弹出回堆栈,然后退出IRQ模式

因此,本例中的延迟可能是从IRQ断言到IRQ向量开始执行的时间。这将是一些设定的时钟周期数,基于IRQ发生时CPU所做的事情。 IRQ处理发生之前的延迟是从IRQ断言到CPU完成存储上下文的时间。 用户模式代码可以执行之前的延迟取决于OS/内核中太多的东西,这里无法解释,但最小值归结为从IRQ断言到恢复UserContext1后返回的时间+OS上下文切换的时间

如果你是一个很难的程序员,你可能只需要使用7个寄存器就可以完全处理你的中断服务。我提到IRQ模式有它自己的2个寄存器的副本,FIQ模式有它自己的7个寄存器的副本。是的,这是28字节的上下文,不需要放入堆栈(实际上其中一个是链接寄存器,所以实际上是6字节)。这可以消除存储UserContext1然后恢复UserContext1的需要。因此,延迟可以减少到执行保存/恢复所需的时间长度

这些都与操作系统没有多大关系。操作系统可以选择使用或不使用这些功能。操作系统可以选择保证执行中断处理程序的操作系统概念需要多长时间,也可以不这样做。这是RTOS的基本概念之一,RTOS是关于处理程序将运行多长时间的契约。 操作系统是为某种目的而设计的(这种目的可能是“一般的”)——目标设计目标对延迟的影响比操作系统移植到的许多目标要大得多

去读一读像freertos这样的东西,然后买一些硬件试试。对代码进行注释,以找出您真正想要查看的延迟。这可能是让你的ehad绕过它的最好方式


(*多CPU系统与此相同,但具有一些同步和屏障功能以及少量复杂性)

通过谷歌搜索硬件文档,可能会重复启动,请记住有许多arm内核,并且中断的管理方式各不相同。Arm不生产芯片,芯片供应商可能会围绕Arm的逻辑包装自己的中断管理器逻辑,从而增加更多问题。谷歌也是你的朋友。一旦你了解了硬件,甚至在裸机上测试了它,这应该会让你大开眼界(不确定的响应时间),那么你就可以开始研究开源操作系统了。我希望看到最可移植的操作系统具有最通用的抽象层,与目标或不太通用的操作系统相比,这些抽象层需要更多的代码(周期时间)从硬件到抽象层,从抽象层到通用处理程序……但当然……“这取决于”。