Instruction set

Un instruction set, in informatica ed elettronica, è un insieme d'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 anche per distinguere 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

Si tratta dell'insieme delle istruzioni base che il processore è in grado di eseguire, costituendo così il suo linguaggio macchina. A partire da questo, vengono scritti programmi nei vari linguaggi di programmazione ad alto livello di astrazione. 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 i dati nativamente disponibili troviamo le istruzioni, i registri, le modalità di indirizzamento, l'architettura della memoria, la gestione degli interrupt e delle eccezioni e l'eventuale I/O esterno.

Un'ISA (Instruction Set Architecture) è una specifica che definisce l'insieme di tutti i codici binari (opcode) che rappresentano i comandi eseguibili nativamente da un particolare design di CPU. L'insieme degli opcode di una specifica ISA è detto anche linguaggio macchina della ISA. Un'ISA può anche essere emulata da un interprete software. Poiché l'emulatore deve tradurre da un'ISA ad un'altra, questa soluzione è in generale più lenta rispetto ad una ISA implementata in hardware. 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

Lo stesso argomento in dettaglio: RISC e CISC.

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é la maggior parte dei processori consumer sono oggi 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

Voci correlate

Altri progetti

Collegamenti esterni

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!