您的位置:首页 >要闻 >

AppleSilicon通过秘密扩展支持拥有48年历史的英特尔8080

事实证明,Apple已经在其AppleSilicon处理器中加入了一条指令,该指令是为1974年首次亮相的英特尔8080处理器设计的,使用一个秘密的未记录的扩展来执行非常不常用的指令,从而提高了仿真性能。

Apple的Rosetta2是macOS的一部分,允许为英特尔处理器编写的应用程序在AppleSilicon上运行(在新标签页中打开)-配备Mac,并且运行良好。以罗塞塔石碑命名,它让埃及学家在1820年代开始破译古代象形文字书写系统。Rosetta同样神秘,但可能已经开始泄露它的秘密,详见博文(在新标签页中打开)由澳大利亚安全研究员DougallJohnson撰写,他在其中揭示了一个未记录的扩展,同时讨论了为什么Rosetta2如此之快。

秘密扩展似乎改变了处理器存储奇偶校验和调整来自应用程序的标志的方式,以提供更准确的仿真。网络开发人员和复古计算爱好者布莱克帕特森讲述了这个故事(在新标签页中打开),在Johnson在Mastodon上的帖子的帮助下解释了它是如何以及为什么这样做的(在新标签页中打开).

整个事情可以追溯到1974年的英特尔8080,这是该公司的第二款芯片(在新标签页中打开).这个8位微处理器以特定方式处理其调整标志和奇偶校验标志,使用它们来指示是否在二进制编码的十进制运算中携带数字,这一直持续到今天的x64芯片,尽管现代应用程序几乎从未使用过它.

AppleSilicon使用的Arm架构与x64无关,没有这样的功能,因此需要对其进行仿真。否则,一些英特尔软件将无法在新的Mac上运行,并且在没有8080标志处理的情况下计算相同的操作将使用五倍的指令并降低Mac的速度。

Rosetta2在启动时重新编译一个用于英特尔处理器的二进制应用程序,而不是提供实时仿真,但无法判断该应用程序是否会使用调整和奇偶校验标志。它使用Arm标志寄存器的第26位和第27位来模拟8080对它们的处理,以避免每次都需要走很远的路。

让它一直运行会违反Arm规范,因此AppleSilicon处理器仅在运行Rosetta2时执行此操作-Johnson指出,当Apple处理器运行LinuxVM时它不起作用,因为处理器是'在这种情况下是可配置的。

虽然不完全是惊天动地的消息,但它是对一款极其聪明和高性能软件工作原理的迷人洞察,尽管它是这样的——就像最初的Rosetta在MacOSX10.4Tiger中引入并在10.7Lion中退役一样——一旦AppleSilicon再推出几代,它很可能会消失。

免责声明:本文由用户上传,如有侵权请联系删除!