Apple’ın, 1974’te piyasaya çıkan Intel’in 8080 işlemcisi için tasarlanmış bir talimat için Apple Silicon işlemcilerine destek sağladığı, çok nadiren kullanılan talimatları yürütmek için belgelenmemiş gizli bir uzantı kullanarak öykünme performansını artırdığı ortaya çıktı.
Apple’ın Rosetta 2’si, Intel işlemciler için yazılmış uygulamaların Apple Silicon üzerinde çalışmasına izin veren macOS’un bir parçasıdır (yeni sekmede açılır)donanımlı Mac’ler ve oldukça iyi çalışıyor. Mısır bilimcilerin 1820’lerde eski hiyeroglif yazı sistemini çözmeye başlamasına olanak sağlayan Rosetta Taşı’nın adı. Rosetta da aynı derecede gizemliydi, ancak ayrıntılı olarak anlatıldığı gibi sırlarından vazgeçmeye başlamış olabilir. bir blog yazısında (yeni sekmede açılır) Avustralyalı güvenlik araştırmacısı Dougall Johnson tarafından, Rosetta 2’nin neden bu kadar hızlı olduğunu tartışırken belgesiz bir uzantıyı ortaya çıkardığı.
Gizli uzantı, daha doğru emülasyon sağlamak için işlemcinin pariteyi saklama ve bir uygulamadan bayrakları ayarlama şeklini değiştiriyor gibi görünüyor. Hikaye, web geliştiricisi ve retro bilgi işlem meraklısı tarafından ele alınmıştır. Blake Patterson (yeni sekmede açılır)bunu nasıl ve neden yaptığını Johnson’ın gönderilerinin yardımıyla açıklıyor. Mastodon (yeni sekmede açılır).
Her şey, şirketin ikinci çipi olan 1974’ten Intel 8080’e kadar izlenebilir. (yeni sekmede açılır). Bu 8 bitlik mikroişlemci, ayar ve eşlik bayraklarını belirli bir şekilde ele aldı, bunları ikili kodlu bir ondalık işlemde sayıların taşınıp taşınmayacağını belirtmek için kullandı ve bu, modern uygulamalar tarafından neredeyse hiç kullanılmasa da günümüzün x64 yongalarına kadar devam etti. .
Apple Silicon tarafından kullanılan, x64 ile ilgisi olmayan Arm mimarisinin böyle bir işlevi yoktur, bu nedenle öykünmesi gerekiyordu. Aksi takdirde, bazı Intel yazılımları yeni Mac’lerde çalışmaz ve aynı işlemi 8080’in bayrak işlemesi olmadan hesaplamak, beş kat daha fazla talimat kullanır ve Mac’i yavaşlatır.
Rosetta 2, gerçek zamanlı öykünme sağlamak yerine başlangıçta bir Intel işlemciye yönelik bir ikili uygulamayı yeniden derler, ancak uygulama tarafından ayarlama ve eşlik bayraklarının kullanılıp kullanılmayacağını söyleyemez. Her seferinde uzun yoldan gitmek zorunda kalmamak için 8080’in bunları işlemesine öykünmek için Arm flags register’ın 26 ve 27 bitlerini kullanır.
Bunun her zaman çalışır durumda olması Arm spesifikasyonunu bozar, bu nedenle Apple Silicon işlemcileri bunu yalnızca Rosetta 2 çalıştırırken yapar – Johnson, Apple işlemcisi bir Linux VM çalıştırdığında işlemcinin çalışmadığından bunun çalışmadığına dikkat çeker. Bu durumda yapılandırılabilir değil.
Tam olarak Dünyayı sarsan bir haber olmasa da, son derece zeki ve performanslı bir yazılımın işleyişine dair büyüleyici bir içgörü, aynı şekilde – orijinal Rosetta’nın Mac OS X 10.4 Tiger’da piyasaya sürülmesi ve 10.7 Lion’da kullanımdan kaldırılması gibi – Apple Silicon birkaç nesil daha eskidiğinde muhtemelen kaybolacaktır.