Instruction set
Un instruction set, in informatica ed elettronica, è un insieme di istruzioni macchina che descrive aspetti, visibili a basso livello dal programmatore, dell'architettura di un calcolatore, definita in inglese come Instruction Set Architecture o con l'acronimo ISA. L'espressione è a volte usata per distinguere anche l'insieme suddetto di caratteristiche dalla microarchitettura, l'insieme di tecniche di progettazione utilizzate per implementare l'insieme di istruzioni (tra cui microcodice, pipeline e sistemi di cache).
Descrizione
[modifica | modifica wikitesto]Si tratta dell'insieme delle istruzioni base che il processore è in grado di eseguire, costituendo così il suo linguaggio macchina. I programmi vengono scritti in linguaggi di programmazione ad alto livello e successivamente tradotti in linguaggio macchina compatibile con l'ISA tramite compilatori o interpreti. Computer con microarchitetture differenti possono condividere lo stesso instruction set: ad esempio, l'Intel Pentium e l'AMD Athlon implementano versioni quasi identiche dell'instruction set x86, pur essendo internamente molto diversi. Tra gli elementi definiti dall'ISA troviamo il set di istruzioni, i registri visibili al programmatore, le modalità di indirizzamento, il modello di memoria, la gestione di interrupt ed eccezioni e, in alcuni casi, le istruzioni di I/O.
Un'ISA (Instruction Set Architecture) è una specifica che definisce il set di istruzioni, il formato delle istruzioni (inclusi gli opcode), i registri, le modalità di indirizzamento e gli altri aspetti dell'interfaccia tra hardware e software. Il linguaggio macchina di un'ISA è costituito dall'insieme delle istruzioni codificate in formato binario, non soltanto dagli opcode. Un'ISA può anche essere emulata da un interprete software. Poiché l'emulatore deve interpretare o tradurre le istruzioni di un'ISA su un'altra architettura, questa soluzione è generalmente più lenta rispetto all'esecuzione diretta su hardware compatibile. Oggi, i produttori di nuove ISA o microarchitetture spesso forniscono emulatori agli sviluppatori di software prima che l’hardware sia pronto. Questo permette loro di iniziare a lavorare e testare i loro programmi in anticipo.
Tipologie
[modifica | modifica wikitesto]I diversi ISA possono essere divisi in due macro-categorie: i RISC (Reduced Instruction Set Computer) e i CISC (Complex Instruction Set Computer). Le ISA RISC tendono ad avere operazioni semplici e veloci, con un'ampia disponibilità di registri per memorizzare i risultati intermedi. Invece, le ISA CISC mettono a disposizione del programmatore istruzioni più complesse, che talvolta replicano quelle dei linguaggi di alto livello (ad esempio, la copia di stringhe nei processori x86). In entrambi i casi, i migliori set di istruzioni tendono ad essere i cosiddetti set ortogonali, in cui i diversi metodi di indirizzamento e i vari registri possono essere utilizzati in modo intercambiabile in tutte le istruzioni. Esempi famosi di set di istruzioni ortogonali sono quelli del Motorola 68000 (CISC) e del MIPS (RISC). L'ISA dei processori Intel x86 era originariamente poco ortogonale, ma è stata progressivamente migliorata nel tempo.
La distinzione tra set di istruzioni RISC e CISC è oggi un po' sfumata, perché i processori consumer sono oggi generalmente dei CRISP, un misto tra i due tipi di set.
Inoltre, alcuni processori traducono l'ISA originale in un set di istruzioni interno, per ragioni e con modalità diverse:
- nel caso dell'Intel Pentium 4 e dell'AMD Athlon, è per liberarsi dalle limitazioni causate da un'ISA retrocompatibile ormai arcaica, e la conversione è eseguita direttamente da un hardware dedicato che effettua la necessaria decodifica;
- nel caso dei processori Transmeta, è per poter "tradurre" ISA di altri processori esistenti come se fossero proprie, e la traduzione è fatta da qualcosa di concettualmente molto simile alle routine firmware (denominate microcodice) memorizzate in un'area ROM ricavata sul silicio del microprocessore.
Esempi
[modifica | modifica wikitesto]Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]
Wikibooks contiene testi o manuali sull'instruction set
Wikizionario contiene il lemma di dizionario «instruction set»
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Opere riguardanti instruction set, su Open Library, Internet Archive.
- (EN) Denis Howe, Instruction set, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL