gpt4 book ai didi

exception - 处理器是否有实际电路来帮助异常处理?

转载 作者:行者123 更新时间:2023-12-01 11:03:22 26 4
gpt4 key购买 nike

我的问题很简单:我想知道处理器是否试图以某种方式帮助异常处理。如果在设计“异常就绪”的处理器上付出足够的努力,是否有可能完全消除异常处理和抛出的开销?

因为据我所知,所有异常处理都是通过软件完成的,这总是会增加一些开销。我错了吗?

-- 编辑

因此,感谢您提供以下所有答案。我很感激。你已经回答了我的问题。

但澄清一下我为什么问这个:一般来说,人们不会深入优化异常,因为他们都认为“异常是针对特殊情况的”,因此它们不是瓶颈。

我认为不应该只在戏剧性的情况下抛出异常。我的想法基本上是,只要函数无法遵守其 promise 的内容,就应该抛出异常。

如果我说:

doSomethingImportant();

如果由于任何原因“重要的事情”无法完成,这应该抛出异常。

当然,doSomethingImportant() 可能无法遵守,因为系统内存不足(一个戏剧性的问题),但我认为我们应该能够更简单地建模“我现在/这次不能这样做,对不起”到我们的软件中,嵌入到我们的设计中。我想说的是,我认为异常可能是异常的,是的,但是它们是可以预期的,就像正常的软件流程一样,而不是系统必须从中“恢复”的“ fatal error ” , 诺姆赛因?

虽然由良好的数据中心支持的大型应用程序几乎不会因为异常处理而成为瓶颈,但请不要忘记嵌入式设备的市场是计算资源的,异常处理确实会产生影响(这就是我的目标)。

我个人觉得异常非常有表现力,我想在嵌入式设备中使用它们,因为我会通过返回“-1”并用“if”检查它来获得尽可能多的“开销”。

最佳答案

指令集体系结构文档中,异常是处理器的异常情况(如零除、非法指令等)。它们通常被翻译成中断(但大多数中断是发送给处理器的外部信号)。

编程语言规范中,异常是非本地控制流结构,通常涉及某种调用堆栈展开。

我相信最近的微架构专门处理堆栈指针(例如 w.r.t. 缓存和指令调度)。他们可能有一些电路专用于编程语言异常所需的堆栈指针更改。

一些语言和实现比其他语言和实现具有更好的异常语义和机制。例如,Ocaml 异常处理比 C++ 更快(至少对于 GCC 编译器而言)。

关于exception - 处理器是否有实际电路来帮助异常处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8628763/

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