Apple M1: architettura, novità e funzionalità

Da allora Apple ha annunciato l'abbandono di Intel CPU per il suo Apple Macintosh per utilizzare processori di propria progettazione, il cosiddetto Apple Silicon, il web è stato riempito di messaggi apocalittici sulla fine dell'architettura x86 e su quanto siano superiori le architetture con ISA ARM. Ma che aspetto ha l'architettura M1 di Apple e come si confronta con quella di un PC?

Su questo sito abbiamo discusso di tutti i tipi di processori, ma di solito sono quelli compatibili con il set di registri e istruzioni x86, ma a causa delle polemiche degli ultimi mesi con M1 di Apple abbiamo deciso di fare un articolo sulla sua architettura.

Architettura Apple M1

L'Apple M1 non è una CPU, è un SoC

Mela M1

La prima cosa da tenere a mente è che l'Apple M1 non è un file CPU come quelli di Intel o AMD, ma è un SoC completo che oltre alla CPU include una serie di unità specializzate di diverse categorie e utilità, che sono le seguenti:

  • CPU, che sarà quella di cui parleremo più avanti in questo articolo.
  • GPU, che elabora la grafica.
  • Unità di elaborazione delle immagini o ISP.
  • Digital Signal Processor o DSP, utilizzato per decomprimere file musicali e per operazioni matematiche molto complesse.
  • Neural Processing Unit, un processore dedicato all'IA.
  • Codificatore e decodificatore video per riprodurre e memorizzare film.
  • Unità di crittografia dei dati per la sicurezza.
  • Unità di I / O che gestiscono le periferiche esterne e le informazioni ad esse inviate.
  • Una grande cache di ultimo livello, essenziale per la memoria unificata e denominata System Level Cache

Se dovessimo parlare di tutte queste unità avremmo bisogno di un libro, ecco perché parleremo della CPU esclusivamente per rispondere alla domanda sulle sue prestazioni, rispetto alle CPU che sono in PC.

Quando non c'è varietà nell'hardware è più facile ottimizzare i programmi

PC interno

Una delle cose che differenzia il PC dalle altre piattaforme è che ogni componente ha mille prodotti diversi e quindi finiscono per essere realizzate un numero incredibile di configurazioni, d'altra parte, con i computer Apple a partire dalla M1, tutto l'hardware tranne il RAM e lo spazio di archiviazione sono sul SoC Apple.

Cosa consente questo? Ebbene, in pratica consente di ottimizzare le applicazioni in una singola configurazione, il che non è diverso da quanto accade in una console che ha una vita di anni sul mercato e finisce per avere codice ottimizzato anche cinque anni dopo il suo rilascio. D'altra parte, in PC, la versatilità nella scelta significa che nulla può essere ottimizzato.

In un PC quando eseguiamo un programma tutto andrà alla CPU, ma forse c'è una parte del codice che sarebbe bello poterlo eseguire in unità molto più specializzate della CPU, ma l'enorme varietà di hardware nella Il PC effettua l'ottimizzazione del codice per poter utilizzare altre unità hardware per accelerare i programmi in un compito di Sisyphus.

Memoria unificata

Apple M1 + RAM

Una delle armi segrete di Apple contro il PC è la memoria unificata, ma prima di tutto bisogna chiarire che la memoria unificata non si riferisce al fatto che i diversi elementi condividono la stessa memoria a livello fisico, ma che memoria unificata significa che tutto il SoC gli elementi interpretano la memoria allo stesso modo.

Cioè, quando il file GPU modifica un indirizzo di memoria, questi dati vengono modificati direttamente per il resto degli elementi Apple M1 allo stesso indirizzo di memoria. Nei PC e nelle architetture derivate che utilizzano la memoria unificata, è anche necessario utilizzare unità DMA che copiano i dati dallo spazio RAM assegnato a un'unità a un'altra unità, il che aggiunge latenza durante l'esecuzione del codice e riduce la possibilità di collaborazione tra le parti .

Quindi, grazie alla memoria unificata di M1, gli sviluppatori macOS possono scegliere di eseguire del codice in unità che lo risolvono più velocemente della CPU.

La CPU ad alte prestazioni dell'Apple M1: Firestorm

Laptop ARM

L'Apple M1 nonostante sia una CPU multicore utilizza in realtà due diversi tipi di CPU. Da un lato, un core ad alte prestazioni ma con prestazioni peggiori chiamato Icestorm e dall'altro core ad alte prestazioni ma con minore efficienza energetica chiamati Firestorm, che sono quelli di cui ci occuperemo, poiché sono quelli che Apple resiste a x86. alte prestazioni.

È nei core Firestorm che vedremo, che nell'Apple M1 ci sono quattro core in totale e sono quelli con cui Apple ha deciso di resistere ai processori ad alte prestazioni su PC, e lo ha fatto con un core ad alte prestazioni, il quale per capire il motivo delle sue prestazioni prima di dover commentare un argomento che è generale per tutte le CPU.

Decoder su CPU fuori servizio

Rendering CPU NPU

Nella prima fase della seconda fase del ciclo di istruzione, ciò che si fa è convertire le istruzioni in microistruzioni, molto più semplici ma facili da implementare in silicio. Una microistruzione non è di per sé un'istruzione completa perché non rappresenta un'azione, ma molte di queste in combinazione formano istruzioni più complesse.

Pertanto, internamente, nessuna CPU esegue il programma binario così com'è, ma ognuna di esse ha un processo di trasformazione delle istruzioni in insiemi di microistruzioni. Ma la cosa non finisce qui, in un processore contemporaneo l'esecuzione è fuori servizio, il che significa che il programma non viene eseguito nell'ordine della sequenza, ma nell'ordine in cui sono disponibili le unità di esecuzione.

Quindi la prima cosa che il decodificatore fa una volta che ha convertito l'istruzione in microistruzioni è inserirle in quello che chiamiamo buffer di riordino, in cui sono poste sotto forma di una lista nell'ordine in cui stanno andando le diverse unità di essere. disponibili accanto alla posizione che si trovano nell'ordine corretto del programma. Quindi il programma verrà eseguito in modo più efficiente e le istruzioni non dovranno attendere che l'unità di esecuzione sia libera, quindi il risultato viene scritto nell'ordine corretto del programma.

L'arma segreta dei core Firestorm di Apple M1: il suo decoder

Velocità Reloj

La fase di decodifica dell'istruzione è la seconda fase del ciclo di istruzione. In qualsiasi processore che funziona in parallelo, il decoder deve essere in grado di elaborare più istruzioni contemporaneamente e inviarle alle unità di esecuzione appropriate per essere risolto.

Il vantaggio della M1? Il fatto di avere un decoder in grado di gestire 8 istruzioni simultanee, che lo rende il processore più ampio in questo senso, poiché questo gli consente di elaborare un numero maggiore di istruzioni in parallelo, quindi consente anche ad Apple di inserire più istruzioni. Ma il motivo per cui Apple è stata in grado di farlo è dovuto alla natura del set di istruzioni ARM rispetto a x86, soprattutto quando si tratta di decodifica.

BRACCIO x86

Le istruzioni ARM hanno il vantaggio di avere una dimensione fissa, questo significa che nel codice binario ogni numero di bit è un'istruzione. D'altra parte, l'x86 ha una dimensione variabile. Ciò significa che il codice deve passare attraverso diversi decodificatori prima di diventare una microistruzione. Le conseguenze di ciò? Ebbene, il fatto che la parte dell'hardware dedicata alla decodifica delle istruzioni non solo finisce per occupare molto più spazio e consuma di più, ma anche meno istruzioni simultanee possono essere decodificate sotto la stessa dimensione.

E qui entriamo nel grande vantaggio della M1. Quanti decoder completi hanno le CPU Intel e AMD? Ebbene, la media è quattro, solo la metà. Ciò conferisce a Firestorms della M1 la capacità di eseguire il doppio delle istruzioni contemporaneamente rispetto alle CPU Intel e AMD.

Apple M1 contro Intel e AMD

Apple M1 contro Intel contro AMD

Eseguire il doppio delle istruzioni non significa risolvere il doppio delle istruzioni, la controparte dei kernel basati su ARM è che richiedono un numero maggiore di cicli di istruzioni singole e quindi cicli di clock per eseguire un programma. Quindi un x86 con la stessa larghezza sarebbe molto più potente di un ARM, ma richiederebbe un maggior numero di transistor e un processore molto complesso in termini di dimensioni.

Nel tempo sia AMD che Intel aumenteranno l'IPC dei loro processori, ma sono limitati dalla complessità del set di istruzioni x86 e del suo decoder. Non è che non possano realizzare una CPU x86 con otto decoder, è che se esistesse sarebbe troppo grande per essere commercialmente fattibile e devono aspettare che appaiano i nuovi nodi prima di aumentare l'IPC per core.