Linus torvalds如何如何改变CPU中断如何处理CPU中断

2021-03-19 13:42:08

安静地,AMD和英特尔都决定了它终于最终清理了一些真正的古老和时髦的CPU设计选择,并一直返回20世纪80年代早期的时间' 80286架构。他们与他们进行了分开的方式,Linus Torvalds,Linux'创始人,最近分享了他对他们的CPU设计选择的看法。

AMD是第一个在2月2021年2月的拟议变更出来的议员:AMD主管入境延伸。英特尔在3月份随着其灵活的回报和事件交付(FRED)设计。什么引发了Torvald'兴趣是当真实世界技术的某人深度技术谈话论坛时介绍了这个话题:" x86 - 为什么当你可以碎片时联合起来?"

英特尔版本基本上是"是的,受保护模式80286异常处理坏了,那么386使它与32位扩展有臭手,然后Syscall / Sysenter使一切差别更差,然后X86-64扩展甚至更多问题。所以,让' s添加一个模式位,所有废物消失。"

相比之下,AMD一个基本上努力解决了与所有令人讨厌的遗产令人讨厌的遗产诱导的废话,这导致了问题。

那么,这些问题是什么?它们隐藏在x86' s架构和#39; s中断描述符表(IDT)中。这是实现中断向量表的数据结构。不幸的是,它具有许多异常问题。

IDT本身是一种可怕的讨厌的格式,你应该以奇数方式解析内存来处理异常。从80286开始,它从根本上很糟糕,它有一个很难解析32位,它可以在x86-64中说话更糟糕。

几个不良异常嵌套问题:最初的不可屏蔽中断(NMI),机器检查和STI阴影处理)。

几个不同的异常堆栈布局,以及异常,中断和系统调用的数百个不同的入口点(并且甚至没有计算任何没有人应该首先使用的呼叫门)。

托尔瓦尔德得出结论:"但我怀疑我忘记了一些。"简而言之,它一团糟,它一团糟,它一直在弄得一段时间。

托尔瓦尔德认为," amd旨在解决彻底的历史错误(b) - (e),但保持相同的东西(即它为微代码添加了更多代码,基本上替换了您目前的一些可怕的黑客攻击必须做 - 糟糕 - 在系统软件中)。"虽然,英特尔识别"那里的问题比系统软件不得不致力于彻底的错误,并介绍一个'固定例外'模型,基本上修复了上述所有内容。"

他对两种模型都看到了积极的事情。托尔瓦尔德认为AMD纸和#34;看起来像一个快速的'我们甚至没有完成思考所有细节,但我们知道这些部分被打破了,所以我们也可以释放它。&#39 ;"

英特尔弗雷德有更多的工作。和托尔瓦尔德认为,它' s"正确的事情。它真的将整个IDT放在A&#39中;我们甚至在所有情况下都使用这个,除非你有遗留段选择器。'对一个真正可怕的东西恢复了真正令人厌恶的CPU架构的良好的谜语:80286。"

Torvalds希望在长期的AMD和英特尔采用两种方法。为什么?因为,"如果您是想要在操作系统级别的人类可能变化,并且摆脱已知问题,则AMD版本更好。想想'我们可以' t真正改变了。"虽然,"如果您认为X86-64实际上应该在长期内生存,并且您实际上想要改善异常处理和速度,而且速度实际上会让您在那个方向上的良好步骤。&#34 ;

即使AMD和英特尔Don' T最终采用两者,托尔瓦尔德嫌疑人,"它并不特别(双关语)难以支持。"毕竟,Torvalds得出结论," FRED非常清楚地定义为拥有完全新的模型,以及任何操作系统供应商,这仍然必须支持旧的CPU的遗留例外模型。"

在现实世界中,我们仍然仍然避开了几年,远离看到支持主管入境延伸或弗雷德的硅片滚动的芯片。 但是,他们所做的一天,两者都会让生活系统内核程序员以及在他们的计算机上工作的所有其他开发人员更容易。 芯片水平。