One instruction set computer

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

Con One Instruction Set Computer (OISC) si indica una macchina di Turing che usa una sola istruzione, e non necessita quindi di opcode. Gli OISC sono solitamente utilizzati nell'insegnamento. Un modello commerciale di calcolatore che utilizza un OISC è il MAXQ della Maxim[1], che utilizza la sola istruzione MOVE.

Tipologie di OISC[modifica | modifica wikitesto]

Esistono varie possibilità di realizzare un OISC che sia Turing-completo.

Sottrai e salta se...[modifica | modifica wikitesto]

I più utilizzati a livello didattico sono gli OISC basati su SUBLEQ (sottrai e salta se ≤ 0 - SUB Less EQual) e SUBNEG o SBN (sottrai e salta se negativo - SUB NEG - Subtract and branch if negative). Le implementazioni sono, in pseudo codice:

subleq ''a'', ''b'', ''c''   ; Mem[''b''] = Mem[''b''] - Mem[''a'']
                             ; if (Mem[''b''] ≤ 0) goto ''c''
 
subneg ''a'', ''b'', ''c''   ; Mem[''b''] = Mem[''b''] - Mem[''a'']
                             ; if (Mem[''b''] < 0) goto ''c''

Sottrai e salta se c'è riporto (RSSB)[modifica | modifica wikitesto]

In inglese Reverse Subtract and Skip if Borrow: l'accumulatore è sottratto dalla locazione di memoria corrente. Se il valore è negativo, salta l'istruzione successiva. Il puntatore all'istruzione (program counter) è all'indirizzo 0, l'accumulatore all'1.

RSSB ''a'' ; Mem[''a''] = Mem[''a''] - Mem[''1'']
           ; Mem[''1''] = Mem[''a'']
           ; if (Mem[''1''] < 0) Mem[''1'']=  Mem[''1''] + 1

Move[modifica | modifica wikitesto]

Una "move machine", detta anche CPU a transport triggered architecture[2] usa la sola istruzione Move, che opera direttamente sulla memoria.

                          
move ''a'' to ''b'' ; Mem[''b''] := Mem[''a'']

A volte viene scritto come

     
''a'' -> ''b'' ; Mem[''b''] := Mem[''a'']

Le operazioni aritmetiche sono effettuate tramite una ALU, che per indirizzi di più word può essere rimpiazzata da tabelle di lookup[3], mentre i salti sono effettuati mappando il program counter in memoria. Un esempio è stato costruito a partire dall'automa cellulare Wireworld[4]. Un saggio su tale architettura e sul funzionamento è stato scritto da Douglas W. Jones[5][6]. Anche il MAXQ della Maxim utilizza tale design.

BitBitJump[modifica | modifica wikitesto]

Il BitBitJump è simile al sottrai e salta, solo che opera copiando singoli bit, invece che sottraendo indirizzi di memoria: ad esempio il codice

19 20 8
0 0 -1

è rappresentato ad 8 bit (MSBF) come

[00010011] [00010100] [00001000]
[00000000] [00000000] [11111111]

La prima istruzione copia il 19° bit nel 20°, quindi

[00010011] [00010100] [00011000]
[00000000] [00000000] [11111111]

la memoria diventa ora

19 20 24
0 0 -1

Viene eseguito il salto al 24 bit, ossia la seconda riga, che copia il bit 0 su se stesso e termina (il salto ad indirizzi negativi termina l'esecuzione).

Note[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàGND (DE4761222-8
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica