Apple Silicon通過一個秘密擴展支持古老的英特爾8080
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設計的程序。整個架構重新分配兩個比特以處理與尼克松政府時期發布的處理器相同的操作,這種想法非常有意思。
訪問以了解更多: