gpt4 book ai didi

arm - 为什么ARM中有2个寄存器用于启用/禁用中断而不是1个?

转载 作者:行者123 更新时间:2023-12-04 14:09:07 24 4
gpt4 key购买 nike

我最近被提出了这个问题。我正在研究 ARM 架构,并尝试研究它,但我觉得我没有得到正确的答案。

我的想法是,关键原因是为了避免干扰正在进行的中断,我们使用 set-enable 寄存器来启用所有中断,并使用 clear-enable 寄存器来禁用所有中断。

这是正确的理由吗?背后是否有更深层次的解释?是否有一些文件解释了这个设计决定?

编辑:抱歉,我正在使用的芯片是 Cortex M4

最佳答案

虽然我无法说出原始设计中的想法,但我的观察是,这可以更轻松地确保线程安全。

假设只有一个寄存器可用于启用和禁用中断;在寄存器中设置一个位将启用相应的中断,而清除该位将禁用它。

这将是一个读-修改-写操作,容易出现 race conditions除非软件小心防范它(例如,通过在访问寄存器之前禁用所有中断,或通过使用同步原语)。

将此与单独的设置/清除寄存器形成对比,后者根本不需要软件同步。任何线程都可以在不干扰其他线程的情况下设置或清除单个位。

单独的设置/清除寄存器也常用于例如GPIO,允许多线程自由修改I/O状态。

关于arm - 为什么ARM中有2个寄存器用于启用/禁用中断而不是1个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com