07/02/2021
Firma Corellium przeniosła Linuksa na komputer z procesorem Apple M1.
Udało się to jej zrobić tak, że wszystkie peryferia systemu działały poprawnie. W trakcie tego procesu Corellium odkrył kilka interesujących szczegółów dotyczących tak samego procesora M1 firmy Apple, jak i architektury systemu.
Ich dokonanie oznacza, że Linux może być teraz używany na najnowszych komputerach Mac. Ale cały projekt uruchomienia systemu operacyjnego innego niż Apple na takich komputerach ma interesujący efekt uboczny, ponieważ pokazuje, jak różne układy SoC wytwarza Apple w porównaniu z innymi architekturami opartymi na ARM.
Apple od dłuższego czasu skupia się na budowaniu własnych mikroarchitektur opartych na Arm, aby oferować niezrównaną wydajność dzięki swoim iPhone'om i iPadom. W przeciwieństwie do swoich rywali firma nie dorzuciła większej liczby rdzeni, zamiast tego poprawiła wydajność. Według Corellium, oprócz niestandardowych rdzeni, Apple najwyraźniej używa również wysoce niestandardowej architektury systemu.
Kiedy praktycznie wszystkie 64-bitowe systemy oparte na Arm-ach uruchamiają się, wywołują oprogramowanie sprzętowe przez interfejs zwany PSCI, to w przypadku M1 rdzenie procesora uruchamiają się pod adresem określonym przez rejestr MMIO, a następnie zaczynają uruchamiać jądro. Ponadto systemy Apple wykorzystują również zastrzeżony kontroler przerwań Apple (AIC), który nie jest zgodny ze standardami firmy Arm.
Aby różne procesory w komputerze PC zasilanym M1 współpracowały ze sobą, system operacyjny musi zapewnić zestaw przerwań międzyprocesorowych (IPI). Wcześniej IPI były obsługiwane tak samo jak tradycyjne IRQ przy użyciu dostępu MMIO do AIC. W przypadku M1 Apple używa rejestrów rdzenia procesora do wysyłania i potwierdzania IPI, ponieważ polegają na FIQ.
Osobliwości Apple na tym się nie kończą. Na przykład kontroler Wi-Fi / Bluetooth firmy Apple łączy się z SoC za pomocą niestandardowego protokołu opartego na PCIe (który na szczęście był obsługiwany przez oprogramowanie do wirtualizacji firmy Corellium). Aby jeszcze bardziej skomplikować sprawę, PCIe firmy Apple i zintegrowany kontroler Synopsys DWC3 USB wykorzystują zastrzeżony moduł zarządzania pamięcią wejścia-wyjścia (IOMMU) zwany tablicą rozdzielczości urządzeń (DART). Co więcej, Apple I2C ma niestandardowe oprogramowanie układowe, które korzysta z ekskluzywnego protokołu, który uniemożliwiał korzystanie z portów USB typu A.
Używanie zastrzeżonej architektury systemu nie jest czymś nowym dla Apple, ale znacznie utrudni przenoszenie innych systemów operacyjnych na jego platformy, a także uruchamianie tych systemów operacyjnych w trybie wirtualizacji. Niedawno deweloperowi udało się uruchomić nadchodzący system Windows 10X firmy Microsoft na systemie opartym na Apple M1 przy użyciu wirtualizacji QEMU, ale ten system operacyjny nie jest jeszcze ostateczny i nie jest jasne, jak stabilny jest. Ponadto system Windows 10X nie obsługuje aplikacji Win32, co czyni go mniej wartościowym dla niektórych użytkowników.