Intel cambia la documentazione x86: le regole della CPU diventano verificabili dal software

Intel sta affiancando al tradizionale manuale x86 una descrizione più formale delle istruzioni. Con ISA Specification Language, parte del comportamento della CPU può essere interpretata e verificata automaticamente da strumenti software.

Per capire come funziona un processore Intel x86, da decenni il riferimento principale è l’Intel 64 and IA-32 Architectures Software Developer’s Manual (SDM), una raccolta enorme di documentazione tecnica che descrive istruzioni, registri, memoria, eccezioni, virtualizzazione e molte altre caratteristiche della CPU.

Intel sta però preparando un cambiamento importante: non vuole più affidarsi soltanto a migliaia di pagine di testo, tabelle e pseudocodice. La società ha pubblicato una preview di un nuovo modo di descrivere l’architettura x86, basato anche su un linguaggio formale chiamato Intel ISA Specification Language. L’obiettivo è rendere almeno una parte della specifica interpretabile e testabile direttamente da software.

Non significa che il manuale x86 diventa un programma, né che Intel abbia pubblicato un emulatore completo della CPU. Il comportamento delle istruzioni viene espresso con regole abbastanza rigorose da poter essere elaborate automaticamente, anziché richiedere sempre l’interpretazione di un essere umano.

Perché il gigantesco manuale x86 non basta più

L’architettura x86 porta con sé quasi mezzo secolo di evoluzione. Una CPU Intel dei giorni nostri deve supportare istruzioni e modalità operative introdotte in epoche molto diverse, mantenendo al tempo stesso compatibilità con una quantità enorme di software esistente.

Una singola istruzione x86 non è definita soltanto dal nome e dall’operazione che compie: Intel deve descrivere con precisione quali dati può ricevere, dove può leggerli, quale risultato deve produrre e quali effetti collaterali può avere sulla CPU.

Prendiamo una semplice somma: non basta dire che ADD aggiunge un valore a un altro. Bisogna anche stabilire quali combinazioni di registri e memoria sono consentite, come cambia il risultato in base alla dimensione degli operandi, quali flag del processore devono essere aggiornati e quali errori o eccezioni possono verificarsi in condizioni particolari.

Tutte queste regole sono documentate soprattutto nel Volume 2 del SDM, Instruction Set Reference A-Z. Finora Intel le ha espresse principalmente con descrizioni testuali, tabelle e pseudocodice pensati per essere letti e interpretati da uno sviluppatore. Una persona esperta può leggere quelle pagine e tradurle in codice; un programma, invece, non dispone necessariamente di una rappresentazione unica e formale di quelle stesse regole.

Intel ISA Specification Language: che cosa cambia

La nuova Intel ISA Specification Language, citata in apertura, consente di descrivere formalmente la semantica delle istruzioni, cioè ciò che un’istruzione deve fare dal punto di vista dell’architettura.

Intel spiega che le operazioni che la CPU può svolgere saranno d’ora in avanti rappresentate attraverso regole precise che un software può interpretare.

È ciò che Intel definisce una executable specification: in italiano è possibile tradurre l’espressione come “specifica eseguibile“, ma il termine rischia di confondere: è più chiaro parlare di specifica formalizzata e interpretabile dal software. Si eseguono, attraverso appositi strumenti, le regole che descrivono il comportamento atteso della CPU.

Se il comportamento di un’istruzione è descritto formalmente, diventa possibile fornire determinati valori iniziali e verificare quale risultato dovrebbe produrre secondo Intel. È proprio uno degli obiettivi dichiarati nell’annuncio ufficiale della preview: Intel afferma che il nuovo linguaggio consente di testare la specifica stessa, rendendola più precisa.

Uno sviluppatore di un emulatore potrebbe, per esempio, confrontare il risultato prodotto dal proprio codice con quello previsto dalla specifica. E lo stesso principio potrebbe risultare utile per debugger, disassembler, hypervisor, strumenti per l’analisi dei binari e sistemi di testing.

Il vantaggio evidente è che la descrizione ufficiale dell’architettura diventa più facilmente utilizzabile da strumenti automatici.

ISA e microarchitettura non sono la stessa cosa

La nuova specifica Intel descrive ciò che la CPU deve fare, non necessariamente come la CPU lo fa internamente. Se un’istruzione deve sommare due registri e aggiornare determinati flag, quello è un comportamento architetturale visibile al software.

Il numero di micro-operazioni utilizzate, le unità di esecuzione coinvolte, le latenze, il funzionamento dello scheduler interno o del reorder buffer appartengono invece alla microarchitettura. Per questa seconda categoria Intel mantiene separatamente l’Optimization Reference Manual, dedicato proprio alle caratteristiche delle microarchitetture e all’ottimizzazione del codice.

Due processori Intel differenti possono implementare la stessa istruzione in modi profondamente diversi e produrre comunque lo stesso risultato previsto dalla ISA (Instruction Set Architecture). Per questa ragione, la nuova specifica non deve essere interpretata come un simulatore dettagliato di un processore Intel reale.

La vera novità non è quindi il fatto che Intel abbia messo online una documentazione x86 più moderna. Piuttosto, l’iniziativa dell’azienda di Santa Clara fa sì che la documentazione x86 non sia più soltanto qualcosa da leggere. Diventerà invece qualcosa che anche il software può comprendere e verificare.

Ti consigliamo anche

Link copiato negli appunti