2020年,苹果公司从英特尔处理器转换,开始发布由自己的定制芯片Apple Silicon驱动Mac。由于这一变化,苹果需要找到一种方法在新芯片上模拟基于x64的程序。苹果找到了一个方法--而且是一个非常古老的方法。
苹果在2020年11月的一次活动中披露了它的第一个定制处理器,即苹果M1。这款芯片因其在狭小的空间内提供极高的性能而受到高度赞扬。苹果的M1让人们怀疑SoC是否是计算的未来。
但由于改用ARM架构,苹果不得不想办法让M1 Mac使用以英特尔Mac为基础设计的程序。苹果采用了最简单但最有效的方法:在苹果M1本身中模拟x64架构。这种模拟方法被称为"Rosetta 2"。
人们对Rosetta 2的有效程度感到惊讶,澳大利亚安全研究员道格尔-约翰逊(Dougall Johnson)现在认为他知道这是为什么。
Rosetta 2有一个未公开的扩展,它简化了应用程序内存储奇偶性和调整标志的过程,这使得模拟更加准确和"敏捷",最令人惊讶的是这个扩展的起源,它最早包含在英特尔有史以来的第二款处理器中,即1974年的英特尔8080当中。
这个古老的8位微处理器非常具体地处理了这些调整和奇偶校验存储,而且这个功能一直在今天的英特尔处理器上都有它的位置。即便是最新得酷睿i9-13900K,与近50年前为一些计算机提供动力的处理器也有直接的关系(尽管很小)。
ARM的标志寄存器中的第26和27位专门用于这一过程,尽管这两个位只有在Rosetta 2激活时才被分配给这一动作。Rosetta 2在平常不会激活,除非它检测到一个程序是以基于英特尔的Mac为基础制作的,操作系统会重新分配这两个位,并允许Rosetta 2以其一贯的快速节奏工作。它允许人们继续使用为旧的基于英特尔架构Mac设计的程序。整个架构重新分配两个比特以处理与尼克松政府时期发布的处理器相同的操作,这种想法非常有意思。
访问以了解更多:
https://dougallj.wordpress.com/2022/11/09/why-is-rosetta-2-fast/