Esiste una relazione genetica tra le architetture ARM e PDP-11?

3

Leggendo sull'architettura ARM ho trovato molte somiglianze con l'architettura PDP-11 che non esisteva tra ARM e x86.

Ad esempio,

  • Registri di uso generale denominati Rx rispetto a AX, BX, ... per x86

  • File di registro uniforme (tutti i registri consentono tutti i tipi di operazioni)

  • Nomi simili per il contatore del programma (PC sia su ARM che su PDP), rispetto a IP in x86.

  • Inclusione del contatore di programma nel file di registro generale (in PDP può anche essere referenziato come R7, in ARM - come R15, entrambi gli ultimi registri nel file).

  • Inclusione di porte I / O nello spazio indirizzo generale (ovvero indirizzarle come memoria) rispetto a uno spazio indirizzo I / O separato in x85 (e istruzioni speciali I / O).

  • Uso di mnemonici di assembler di base di 3 lettere (TST confrontato con "test" in x86) con suffissi che specificano il tipo di dati (come "B" per byte, confrontati con costruzioni come "byte ptr" in x86)

  • Uso delle istruzioni BNE, BEQ e altre B condizioni per le filiali.

  • Uso del simbolo "#" prima di un numero per specificare un valore immediato (rispetto a "." in x86)

ecc. Quindi c'è qualche relazione storica tra ARM e PDP che li rende più vicini tra loro rispetto a x86?

    
posta Anixx 03.04.2013 - 00:56
fonte

1 risposta

5

Non so quanto i progettisti dell'architettura ARM si siano ispirati al PDP-11. Probabilmente conoscevano bene l'architettura PDP-11 in quanto era una delle principali CPU degli anni '70. Tuttavia, è più l'x86 che è diverso dagli altri due.

ARM è un'architettura RISC : le sue istruzioni tendono a seguire alcuni modelli e a fare solo una cosa. Confronta con MIPS che è praticamente RISC da manuale. Sia PDP-11 che x86 sono CISC , con molte istruzioni che combinano diverse operazioni (ad esempio un carico e un archivio o una memoria accesso più un'operazione aritmetica). In alcuni aspetti, il PDP-11 era un precursore di RISC, in particolare con il suo set di istruzioni abbastanza ortogonale (ad esempio i registri principali, incluso il contatore del programma, sono registri generici utilizzabili con qualsiasi istruzione).

La denominazione dei registri generici R x è piuttosto naturale. X86 non lo fa perché quasi tutti i suoi registri hanno uno scopo speciale (anche ax attraverso dx hanno alcune specificità, ad esempio una moltiplicazione che può essere solo ax * dx).

L'uso di istruzioni speciali o una mappatura della memoria per I / O è correlato al modo in cui l'unità I / O si collega alla CPU. Se I / O passa attraverso lo stesso bus della RAM, è naturale utilizzare una mappatura della memoria e lasciare che il controller del bus di memoria invii i segnali. Se I / O va su un bus separato, è naturale avere istruzioni separate, con la CPU che fa il dispatching immediatamente.

B per la ramificazione non è specifico per PDP e ARM. Esistono due sintassi dell'assembly x86 : sintassi AT & T e sintassi Intel. mov byte ptr [ax], bx è la sintassi Intel; la sintassi AT & T corrispondente è movl (%bx), %ax . La sintassi AT & T è più vicina ai principali linguaggi di assemblaggio utilizzati oggi.

    
risposta data 03.04.2013 - 02:06
fonte

Leggi altre domande sui tag