One instruction set computer

Da Wikipedia, l'enciclopedia libera.

Uno One Instruction Set Computer (OISC) è 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). 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]

  1. ^ (EN) Introduction to the MAXQ Architecture. URL consultato il 2009-07-20.
  2. ^ One Instruction Set Computers
  3. ^ http://www.cs.eku.edu/faculty/styer/oisc.html
  4. ^ The Wireworld computer
  5. ^ The Ultimate RISC
  6. ^ ACM SIGARCH Computer Architecture News 16, 3 (June 1988) 48-55

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]