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, 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 architectureOne Instruction Set Computers 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, mentre i salti sono effettuati mappando il program counter in memoria. Un esempio è stato costruito a partire dall'automa cellulare WireworldThe Wireworld computer. Un saggio su tale architettura e sul funzionamento è stato scritto da Douglas W. JonesThe Ultimate RISCACM SIGARCH Computer Architecture News 16, 3 (June 1988) 48-55. 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
Bibliografia
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: https://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
Subleq su Esoteric Programming Language Wiki RSSB su Esoteric Programming Language Wiki
BitBitJump OISC con istruzione che copia un solo nit. BitBitJump implementazione - assembler ed emulatore.
Categoria:Architettura dei calcolatori Categoria:Instruction processing Categoria:Modelli di calcolo