One instruction set computer
![Abbozzo](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0e/Puzzle_stub.svg/45px-Puzzle_stub.svg.png)
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
Esistono varie possibilità di realizzare un OISC che sia Turing-completo.
Sottrai e salta se...
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)
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
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
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
- ^ (EN) Introduction to the MAXQ Architecture, su maxim-ic.com. URL consultato il 20 luglio 2009.
- ^ One Instruction Set Computers
- ^ Copia archiviata, su cs.eku.edu. URL consultato il 20 luglio 2009 (archiviato dall'url originale il 26 maggio 2007).
- ^ The Wireworld computer
- ^ The Ultimate RISC
- ^ ACM SIGARCH Computer Architecture News 16, 3 (June 1988) 48-55
Bibliografia
- The Retrocomputing Museum, su catb.org.
- MAXQ product line homepage, su maxim-ic.com. URL consultato il 20 luglio 2009 (archiviato dall'url originale il 28 luglio 2009).
- OISC Implementation with subleq, su sccs.swarthmore.edu. URL consultato il 20 luglio 2009 (archiviato dall'url originale il 21 novembre 2015).
- Univ. of Waterloo URISC: F. Mavaddat and B. Parhami, URISC: The Ultimate Reduced Instruction Set Computer, Int'l J. Electrical Engineering Education, Vol. 25, No. 4, pp. 327–334, October 1988.
- Univ. of Iowa Ultimate RISC: http://www.cs.uiowa.edu/~jones/arch/risc/
Voci correlate
- Linguaggio assembly
- Minimal instruction set computer
- Reduced instruction set computer
- Zero instruction set computer
Collegamenti esterni
- Mark II OISC Self-Interpreter, su eigenratios.blogspot.com.
- Redcode interpreter per RSSB, su impomatic.blogspot.com.
- The Ultimate RISC One Instruction Computing, su retrocode.blogspot.com.
- SBN Computer, su bitstuff.blogspot.com.
- SUBLEQ compilatore ed emulatore, su mazonka.com. URL consultato il 20 luglio 2009 (archiviato dall'url originale il 24 febbraio 2009).
- Subleq su Esoteric Programming Language Wiki
- RSSB su Esoteric Programming Language Wiki
- Computer Architecture: A Minimalist Perspective (CAAMP), su caamp.info. URL consultato il 5 novembre 2018 (archiviato dall'url originale il 13 giugno 2009).
- BitBitJump OISC con istruzione che copia un solo nit.
- BitBitJump implementazione - assembler ed emulatore.
Controllo di autorità | GND (DE) 4761222-8 |
---|
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)