Perché x86 little endian?

Una vera domanda che mi sono posta ultimamente è che le scelte di design hanno portato x86 ad essere un’architettura little endian invece di un’architettura big endian?

In gran parte, per lo stesso motivo si inizia con la cifra meno significativa (l’estremità destra) quando si aggiunge, poiché trasporta la propagazione verso le cifre più significative. Mettere il byte meno significativo per primo consente al processore di iniziare sull’aggiunta dopo aver letto solo il primo byte di un offset.

Dopo aver fatto abbastanza codice di assemblaggio e debug, potresti giungere alla conclusione che non è little endian quella strana scelta – è strano che noi umani usiamo il big endian.

Questo è abbastanza archeologico, ma molto probabilmente non era la scelta di Intel. I processori Intel progettati con compatibilità con le versioni precedenti rappresentano un problema primario, semplificando la traduzione meccanica del codice di assemblaggio dalla vecchia alla nuova architettura. Ciò fa tornare indietro l’orologio da 8086 fino a 8080 al primo microprocessore in cui l’endianità contava, l’ Intel 8008 .

Quel processore è stato avviato quando CTC (in seguito denominato DataPoint) è venuto a Intel per chiedere aiuto con il loro prodotto terminale di dati. Originariamente progettato da Victor Poor e Harry Pyle, aveva un design di processore logico in MSI (molti chip). Hanno chiesto a Intel di fornire loro una soluzione di archiviazione, utilizzando registri a scorrimento a 512 bit.

Quello non era il prodotto preferito di Intel, ma hanno intrapreso questo tipo di lavori di progettazione personalizzata per sopravvivere al tempo di accelerazione del loro chip RAM a 1024 bit. Tedd Hoff, Stan Mazor e Larry Potter hanno esaminato il design e proposto un processore LSI con RAM.instead. Questo alla fine divenne l’8008. Povero e Pyle sono accreditati nel progettare il set di istruzioni.

Che abbiano scelto little-endian è credibile da questa intervista con Poor . Lo salta piuttosto velocemente e l’intervista è piuttosto sparpagliata, ma la parte rilevante a pagina 24:

Shustek : Quindi, ad esempio, memorizzare prima i byte meno significativi di un numero, deriva dal fatto che si trattava di una soluzione seriale ed era necessario prima elaborare i bit bassi.
Povero: dovevi farlo in quel modo. Non avevi scelta.

L’osservazione “senza scelta” è dispari, che sembra riguardare solo la progettazione bit-seriale del processore MSI. Anche la ragione per cui hanno fatto lo shift per i registri a scorrimento invece della RAM. Ritorna a pagina 34:

Hendrie: ti ricordi qualcuno dei loro commenti sul design o su quei dettagli …
Scadente: uno di questi era il bit contro 8 bit. Volevano una parte larga 8-bit e, alla fine, è così che l’hanno costruita.
Povero: ma stava ancora ricircolando. Ma, vedi, ci sono punti interessanti sul fatto che ci sarà una grande fine o una piccola parte finale potrebbe essere stata cambiata a quel punto, ma non l’abbiamo fatto. L’abbiamo appena lasciato …
Hendrie: Anche dopo che sei andato a otto bit?
Povero: giusto. Ecco perché la linea di prodotti Intel è così oggi

Alla fine CTC non usava l’8008, era finito un anno di ritardo e già allora avevano già implementato il processore MSI. Il design del microprocessore era certamente di proprietà intellettuale di CTC, tuttavia i diritti venivano scambiati con Intel per i costi di progettazione. Un po ‘di errore 🙂 La legge si adatta ai diritti di brevetto seguiti più tardi.

Quindi, come detto, Intel ha finito con little-endian a causa del modo in cui le porte seriali funzionavano.

Riflette la differenza tra considerare la memoria di essere sempre organizzata un byte alla volta, contrapposta al fatto che sia organizzata una unità alla volta, dove la dimensione dell’unità può variare (byte, word, dword, ecc.)