Articulo de referencia

Computadora con un conjunto de instrucciones

Una computadora de un conjunto de instrucciones ( OISC ), a veces denominada computadora de conjunto de instrucciones reducido definitivo ( URISC ), es una máquina abstracta que...

Una computadora de un conjunto de instrucciones ( OISC ), a veces denominada computadora de conjunto de instrucciones reducido definitivo ( URISC ), es una máquina abstracta que utiliza una sola instrucción , obviando la necesidad de un código de operación en lenguaje máquina . [ 1 ] [ 2 ] [ 3 ] Con una elección juiciosa para la única instrucción y con recursos arbitrariamente suficientes, una OISC puede ser una computadora universal de la misma manera que las computadoras tradicionales que tienen múltiples instrucciones. [ 2 ] : 55 Las OISC se han recomendado como ayudas en la enseñanza de la arquitectura de computadoras [ 1 ] : 327 [ 2 ] : 2 y se han utilizado como modelos computacionales en la investigación de computación estructural. [ 3 ] La primera computadora de nanotubos de carbono es una computadora de un conjunto de instrucciones de 1 bit (y tiene solo 178 transistores). [ 4 ] 

Arquitectura de máquinas

En un modelo Turing-completo , cada ubicación de memoria puede almacenar un número entero arbitrario y, según el modo, puede haber un número arbitrario de ubicaciones. Las instrucciones residen en la memoria como una secuencia de dichos números enteros. 

Existe una clase de computadoras universales con una sola instrucción basada en manipulación de bits, como la copia o la inversión de bits . Dado que su modelo de memoria es finito, al igual que la estructura de memoria utilizada en las computadoras reales, estas máquinas de manipulación de bits son equivalentes a las computadoras reales en lugar de a las máquinas de Turing . [ 5 ]

Los OISC conocidos actualmente se pueden dividir a grandes rasgos en tres categorías principales:

  • Máquinas de manipulación de bits
  • Máquinas de arquitectura activadas por transporte
  • Máquinas Turing-completas basadas en aritmética

Máquinas de manipulación de bits

Las máquinas que manipulan bits son la clase más simple.

FlipJump

La máquina FlipJump tiene una sola instrucción, a;b: invierte el bit a y luego salta al bit b. Esta es la versión más primitiva de OISC, pero aún resulta útil. Puede realizar cálculos matemáticos y lógicos, bifurcaciones, manejar punteros y llamar a funciones con éxito gracias a su biblioteca estándar.

BitBitJump

Una máquina de copia de bits, [ 5 ] llamada BitBitJump, copia un bit en la memoria y transfiere la ejecución incondicionalmente a la dirección especificada por uno de los operandos de la instrucción. Este proceso resulta ser capaz de realizar computación universal (es decir, ejecutar cualquier algoritmo e interpretar cualquier otra máquina universal) porque la copia de bits puede modificar condicionalmente la dirección de copia que se ejecutará posteriormente.

Computadora Toga

Otra máquina, llamada Computadora Toga , invierte un bit y ejecuta la instrucción de forma condicional según el resultado de la inversión. La instrucción única es TOGA(a,b), que significa TOG gle a y salta a b si el resultado de la operación de conmutación es verdadero.

Máquina copiadora multibit

De forma similar a BitBitJump, una máquina de copia multibit copia varios bits simultáneamente. El problema de la universalidad computacional se resuelve en este caso manteniendo tablas de salto predefinidas en la memoria.

Arquitectura activada por transporte

La arquitectura activada por transporte (TTA) es un diseño en el que el cálculo es un efecto secundario del transporte de datos. Generalmente, algunos registros de memoria (puertos de activación) dentro del espacio de direcciones común realizan una operación asignada cuando la instrucción los referencia. Por ejemplo, en una instrucción OISC que utiliza una sola instrucción de copia de memoria a memoria, esto se logra mediante puertos de activación que realizan saltos aritméticos y de punteros de instrucción al escribir en ellos.

Máquinas Turing-completas basadas en aritmética

Las máquinas Turing-completas basadas en aritmética utilizan una operación aritmética y un salto condicional. Al igual que las dos computadoras universales anteriores, esta clase también es Turing-completa. La instrucción opera sobre números enteros, que también pueden ser direcciones de memoria.

Actualmente se conocen varios OISC de esta clase, basados ​​en diferentes operaciones aritméticas:

  • suma (addleq, suma y bifurca si es menor o igual a cero) [ 6 ]
  • decremento (DJN, Decremento y bifurcación ( Salto ) si es distinto de cero) [ 7 ]
  • incremento (P1eq, más 1 y bifurcación si es igual a otro valor) [ 8 ]
  • resta (subleq, resta y bifurca si es menor o igual a cero) [ 9 ] [ 10 ]
  • resta positiva cuando sea posible, de lo contrario bifurcación (máquina aritmética) [ 11 ]

Tipos de instrucciones

Las opciones más comunes para la instrucción única son:

Solo una de estas instrucciones se utiliza en una implementación dada. Por lo tanto, no es necesario un código de operación para identificar qué instrucción ejecutar; la elección de la instrucción es inherente al diseño de la máquina, y un OISC generalmente recibe el nombre de la instrucción que utiliza (por ejemplo, un OISC SBN, [ 2 ] : 41 el lenguaje SUBLEQ, [ 3 ] : 4 etc.). Cada una de las instrucciones anteriores puede utilizarse para construir un OISC Turing-completo.

Este artículo presenta únicamente instrucciones basadas en la resta entre aquellas que no se activan por transporte. Sin embargo, es posible construir máquinas Turing completas utilizando una instrucción basada en otras operaciones aritméticas, por ejemplo, la suma. Por ejemplo, una variante conocida como DLN (Decremento y salto si no es cero) tiene solo dos operandos y utiliza el decremento como operación base. Para más información, consulte los lenguajes derivados de Subleq..

Resta y ramifica si no es igual a cero.

La SBNZ a, b, c, d instrucción (" restar y saltar si no es igual a cero ") resta el contenido de la dirección a del contenido de la dirección b , almacena el resultado en la dirección c y, si el resultado no es 0 , transfiere el control a la dirección d (si el resultado es igual a cero, la ejecución continúa con la siguiente instrucción en la secuencia). [ 3 ]

Resta y ramifica si es menor o igual que cero.

La instrucción subleq (" restar y saltar si es menor o igual que cero ") resta el contenido de la dirección a del contenido de la dirección b , almacena el resultado en la dirección b y, si el resultado no es positivo , transfiere el control a la dirección c (si el resultado es positivo, la ejecución continúa con la siguiente instrucción en la secuencia). [ 3 ] : 4–7 Pseudocódigo :

Instrucciónsubleqa,b,c Mem[b] = Mem[b] - Mem[a] si (Mem[b] ≤ 0) ir a c

La bifurcación condicional se puede suprimir asignando al tercer operando la dirección de la siguiente instrucción en la secuencia. Si no se especifica el tercer operando, esta supresión se da por supuesta.

También es posible una variante con dos operandos y un acumulador interno , donde el acumulador se resta de la ubicación de memoria especificada por el primer operando. El resultado se almacena tanto en el acumulador como en la ubicación de memoria, y el segundo operando especifica la dirección de bifurcación:

Instrucciónsubleq2a,b Mem[a] = Mem[a] - ACUMULADO ACUMULACIÓN = Mem[a] si (Mem[a] ≤ 0) ir a b

Aunque esto utiliza solo dos (en lugar de tres) operandos por instrucción, en consecuencia se necesitan más instrucciones para llevar a cabo diversas operaciones lógicas.

Instrucciones sintetizadas

Es posible sintetizar muchos tipos de instrucciones de orden superior utilizando únicamente la instrucción subleq . [ 3 ] : 9–10

Rama incondicional:

JMP c
subcuadrado Z , Z , c

La suma se puede realizar mediante restas repetidas, sin bifurcaciones condicionales; por ejemplo, las siguientes instrucciones dan como resultado que el contenido en la ubicación a se sume al contenido en la ubicación b :

AÑADIR a, b
subíndice a , Z subíndice Z , b subíndice Z , Z

La primera instrucción resta el contenido de la ubicación a del contenido de la ubicación Z (que es 0) y almacena el resultado (que es el negativo del contenido de a ) en la ubicación Z. La segunda instrucción resta este resultado de b , almacenando en b esta diferencia ( que ahora es la suma de los contenidos originales de a y b ); la tercera instrucción restaura el valor 0 a Z.

Una instrucción de copia se puede implementar de manera similar; por ejemplo, las siguientes instrucciones dan como resultado que el contenido en la ubicación b sea reemplazado por el contenido en la ubicación a , suponiendo nuevamente que el contenido en la ubicación Z se mantiene como 0:

MOVER a, b
subíndice b , b subíndice a , Z subíndice Z , b subíndice Z , Z

Se puede construir cualquier prueba aritmética deseada. Por ejemplo, una condición de salto si es cero se puede construir a partir de las siguientes instrucciones:

BEQ b, c
subconjunto b , Z , L1 subconjunto Z , Z , SALIDA L1: subconjunto Z , Z subconjunto Z , b , c SALIDA: ...

Subleq2 también se puede utilizar para sintetizar instrucciones de orden superior, aunque generalmente requiere más operaciones para una tarea determinada. Por ejemplo, se requieren al menos 10 instrucciones subleq2 para invertir todos los bits de un byte dado:

NO es un
subleq2 tmp ; tmp = 0 (tmp = registro temporal) subleq2 tmp subleq2 one ; acc = -1 subleq2 a ; a' = a + 1 subleq2 Z ; Z = - a - 1 subleq2 tmp ; tmp = a + 1 subleq2 a ; a' = 0 subleq2 tmp ; cargar tmp en acc subleq2 a ; a' = - a - 1 ( = ~a ) subleq2 Z ; restablecer Z a 0

Emulación

El siguiente programa (escrito en pseudocódigo ) emula la ejecución de un OISC basado en subq :

int memoria [], contador_programa , a , b , c contador_programa = 0 mientras ( contador_programa >= 0 ) : a = memoria [ contador_programa ] b = memoria [ contador_programa + 1 ] c = memoria [ contador_programa + 2 ] si ( a < 0 o b < 0 ) : contador_programa = -1 sino : memoria [ b ] = memoria [ b ] - memoria [ a ] si ( memoria [ b ] > 0 ) : contador_programa += 3 sino : contador_programa = c

Este programa asume que memory[] está indexado por enteros no negativos . Por consiguiente, para una instrucción subleq ( a , b , c ), el programa interpreta a < 0 , b < 0 o una bifurcación ejecutada a c < 0 como una condición de parada. En los enlaces externos que aparecen a continuación, se pueden encontrar intérpretes similares escritos en un lenguaje basado en subleq (es decir, autointérpretes , que pueden usar código automodificable según lo permite la naturaleza de la instrucción subleq ).

Se ha implementado un sistema operativo de 64 bits de propósito general con capacidad SMP llamado Dawn OS en una máquina Subleq emulada. El sistema operativo contiene un compilador similar a C. Algunas áreas de memoria en la máquina virtual se utilizan para periféricos como el teclado, el ratón, los discos duros, la tarjeta de red, etc. Las aplicaciones básicas escritas para él incluyen un reproductor multimedia, una herramienta de dibujo, un lector de documentos y una calculadora científica. [ 13 ]

Yoel Matveyev construyó una computadora Subleq de 32 bits con pantalla gráfica y teclado llamada Izhora , siguiendo un patrón de autómata celular a gran escala . [ 14 ] [ 15 ]

Compilación

Existe un compilador llamado Higher Subleq , escrito por Oleg Mazonka, que compila un programa C simplificado en código subleq . [ 16 ]

Como alternativa, existe una implementación de Forth autoalojada escrita por Richard James Howe que se ejecuta sobre una máquina virtual Subleq y es capaz de programar de forma interactiva la máquina Subleq [ 17 ].

La Eternal Software Initiative [ 18 ] proporciona un backend de compilador LLVM que compila programas estándar de C y C++ directamente a una máquina virtual Subleq+ mínima. Es lo suficientemente buena como para ejecutar Linux de forma nativa en ella y conservarla como una "cápsula del tiempo".

Restar y ramificar si es negativo

La instrucción subneg (" restar y bifurcar si es negativo "), también llamada SBN , se define de forma similar a subleq : [ 2 ] : 41, 51–52

Instrucciónsubnega,b,c Mem[b] = Mem[b] - Mem[a] si (Mem[b] < 0) ir a c

La bifurcación condicional se puede suprimir asignando al tercer operando la dirección de la siguiente instrucción en la secuencia. Si no se especifica el tercer operando, esta supresión se da por supuesta.

Instrucciones sintetizadas

Es posible sintetizar muchos tipos de instrucciones de orden superior utilizando únicamente la instrucción subneg . Para simplificar, aquí solo se muestra una instrucción sintetizada para ilustrar la diferencia entre subleq y subneg .

Rama incondicional: [ 2 ] : 88–89

JMP c
subnegativo POS , Z , c

donde Z y POS son ubicaciones previamente configuradas para contener 0 y un número entero positivo, respectivamente;

La bifurcación incondicional solo se garantiza si Z contiene inicialmente 0 (o un valor menor que el entero almacenado en POS ). Se requiere una instrucción de seguimiento para borrar Z después de la bifurcación, suponiendo que el contenido de Z debe mantenerse como 0.

subnegativo4

También es posible una variante con cuatro operandos: subneg4. La inversión del minuendo y el sustraendo facilita la implementación en hardware. El resultado no destructivo simplifica las instrucciones sintéticas.

Instrucción (* direcciones de sustraendo, minuendo, resultado y salto *)subnegs,m,r,j Mem[r] = Mem[m] - Mem[s] si (Mem[r] < 0) ir a j

Máquina aritmética

En un intento por hacer que la máquina de Turing sea más intuitiva, Z.A. Melzak considera la tarea de calcular con números positivos. La máquina tiene un ábaco infinito, un número infinito de contadores (piedras, palitos de conteo) inicialmente en una ubicación especial S. La máquina es capaz de realizar una operación:

Toma de la ubicación X tantos contadores como haya en la ubicación Y y transfiérelos a la ubicación Z y procede con la instrucción y.

Si esta operación no es posible porque no hay suficientes contadores en X, entonces deje el ábaco como está y proceda con la instrucción n. [ 19 ]

Para mantener todos los números positivos e imitar a un operador humano calculando en un ábaco real, la prueba se realiza antes de cualquier resta. Pseudocódigo:

Instrucción si (Mem[X] < Mem[Y]) ir a nmelzakX,Y,Z,n,y Mem[X] -= Mem[Y] Mem[Z] += Mem[Y] ir a y

Tras presentar algunos programas (multiplicación, máximo común divisor, cálculo del enésimo número primo, representación en base b de un número arbitrario, ordenación por magnitud), Melzak muestra explícitamente cómo simular una máquina de Turing arbitraria en su máquina aritmética.

MUL p, q
multiplicar: melzak P , ONE , S , stop ; Mueve 1 contador de P a S. Si no es posible, muévelo a stop. melzak S , Q , ANS , multiplicar , multiplicar ; Mueve q contadores de S a ANS. Muévete a la primera instrucción. stop:

donde la ubicación de memoria P es p , Q es q , ONE es 1, ANS es inicialmente 0 y al final pq , y S es un número grande.

Menciona que se puede demostrar fácilmente, utilizando los elementos de las funciones recursivas, que todo número calculable en la máquina aritmética es computable. Lambek [ 20 ] dio una prueba de ello en una máquina equivalente de dos instrucciones  : X+ (incrementar X) y X− si no, T (decrementar X si no está vacío, si no, saltar a T).

Resta inversamente y omite si pides prestado.

En una instrucción de resta inversa y salto si hay préstamo (RSSB), el acumulador se resta de la ubicación de memoria y la siguiente instrucción se omite si hubo un préstamo (la ubicación de memoria era menor que el acumulador). El resultado se almacena tanto en el acumulador como en la ubicación de memoria. El contador de programa se asigna a la ubicación de memoria 0. El acumulador se asigna a la ubicación de memoria 1. [ 2 ]

Instrucciónrssbx ACUM = Mem[x] - ACUM Mem[x] = ACUMULACIÓN Si (ACCUM < 0) ir a PC + 2

Ejemplo

Para establecer x al valor de y menos z:

# Primero, mueve z a la ubicación de destino x. RSSB temp # Se requieren tres instrucciones para borrar acc, temp [Ver Nota 1] RSSB temp RSSB temp RSSB x # Dos instrucciones borran acc, x, ya que acc ya está borrado RSSB x RSSB y # Carga y en acc: no se presta RSSB temp # Almacena -y en acc, temp: siempre se presta y se omite RSSB temp # Omitido RSSB x # Almacena y en x, acc # Segundo, realiza la operación. RSSB temp # Se requieren tres instrucciones para borrar acc, temp RSSB temp RSSB temp RSSB z # Carga z RSSB x # x = y - z [Ver Nota 2]
  • [Nota 1] Si el valor almacenado en "temp" es inicialmente un valor negativo y la instrucción que se ejecutó justo antes del primer "RSSB temp" en esta rutina se tomó prestada, entonces se requerirán cuatro instrucciones "RSSB temp" para que la rutina funcione.
  • [Nota 2] Si el valor almacenado en "z" es inicialmente un valor negativo, entonces se omitirá el "RSSB x" final y, por lo tanto, la rutina no funcionará.

Arquitectura activada por transporte

Una arquitectura activada por transporte utiliza únicamente la instrucción move , por lo que originalmente se la denominó "máquina move". Esta instrucción mueve el contenido de una ubicación de memoria a otra ubicación de memoria combinándolo con el contenido actual de la nueva ubicación: [ 2 ] : 42 [ 21 ]

Instrucción (también escrita a -> b )movxa,b OP = ObtenerOperación(Mem[ b ]) Memoria[ b ] := OP(Mem[ a ], Memoria[ b ])

La operación que se realiza viene definida por la celda de memoria de destino. Algunas celdas están especializadas en sumas, otras en multiplicaciones, etc. Por lo tanto, las celdas de memoria no son simples almacenes, sino que están acopladas a una unidad aritmético-lógica (ALU) configurada para realizar un único tipo de operación con el valor actual de la celda. Algunas celdas contienen instrucciones de control de flujo para modificar la ejecución del programa mediante saltos, ejecución condicional , subrutinas , estructuras if-then-else , bucles for , etc.

Se ha producido un microcontrolador comercial con arquitectura de activación por transporte llamado MAXQ, que oculta el aparente inconveniente de un OISC mediante el uso de un "mapa de transferencia" que representa todos los posibles destinos para las instrucciones de movimiento . [ 22 ]

Criptoleq

Procesador Cryptoleq fabricado en la Universidad de Nueva York en Abu Dabi.

Cryptoleq [ 23 ] es un lenguaje similar a Subleq. Consta de una instrucción homónima y es capaz de realizar cálculos de propósito general en programas cifrados. Cryptoleq funciona en celdas de memoria contiguas utilizando direccionamiento directo e indirecto, y realiza dos operaciones O 1 y O 2 en tres valores A, B y C:

Instrucción Mem[b] = O 1 (Mem[a], Mem[b]) si O 2 (Mem[b]) ≤ 0cryptoleqa,b,c IP = c de lo contrario IP = IP + 3

donde a, b y c son direccionados por el puntero de instrucción, IP, con el valor de IP direccionando a, IP + 1 apuntando a b e IP + 2 a c.

En las operaciones de Cryptoleq, O 1 y O 2 se definen de la siguiente manera:

O1(incógnita,y)=incógnita1ymodnorte2{\displaystyle {\begin{array}{lcl}O_{1}(x,y)&=&x^{-1}y\,{\bmod {\,}}N^{2}\end{array}}}
O2(incógnita)=incógnita1norte{\displaystyle {\begin{array}{lcl}O_{2}(x)&=&\left\lfloor {\frac {x-1}{N}}\right\rfloor \end{array}}}

La principal diferencia con Subleq es que en Subleq, O 1 ( x,y ) simplemente resta y de x y O 2 ( x ) es igual a x . Cryptoleq también es homomórfico a Subleq; la inversión modular y la multiplicación son homomórficas a la resta, y la operación O 2 corresponde a la prueba de Subleq si los valores no estuvieran cifrados. Un programa escrito en Subleq puede ejecutarse en una máquina Cryptoleq, lo que significa retrocompatibilidad. Sin embargo, Cryptoleq implementa cálculos totalmente homomórficos y es capaz de realizar multiplicaciones. La multiplicación en un dominio cifrado se realiza mediante una función única G que se supone difícil de descifrar y permite volver a cifrar un valor basándose en la operación O 2 .

GRAMO(incógnita,y)={0~,si O2(incógnita¯) 0y~,de lo contrario{\displaystyle G(x,y)={\begin{cases}{\tilde {0}},&{\text{if }}O_{2}({\bar {x}}){\text{ }}\leq 0\\{\tilde {y}},&{\text{otherwise}}\end{cases}}}

dóndey~{\displaystyle {\tilde {y}}}es el valor reencriptado de y y0~{\displaystyle {\tilde {0}}}es cero cifrado. x es el valor cifrado de una variable, sea m , yincógnita¯{\displaystyle {\bar {x}}}igual anortemetro+1{\displaystyle Nm+1}.

El algoritmo de multiplicación se basa en la suma y la resta, utiliza la función G y no tiene saltos ni bifurcaciones condicionales. El cifrado Cryptoleq se basa en el criptosistema Paillier .

Véase también

Referencias

  1. 1 2 Mavaddat, F.; Parhami, B. (octubre de 1988). "URISC: The Ultimate Reduced Instruction Set Computer" (PDF) . International Journal of Electrical Engineering Education . 25 (4). Manchester University Press: 327–334 . doi : 10.1177/002072098802500408 . S2CID 61797084. Recuperado el 4 de octubre de 2010 .  Este artículo considera "una máquina con una única instrucción de 3 direcciones como la máxima expresión del diseño RISC (URISC)". Sin nombrar la instrucción, describe una SBN OISC y su lenguaje ensamblador asociado, haciendo hincapié en que se trata de una máquina universal (es decir, Turing-completa ) cuya simplicidad la hace ideal para su uso en el aula.
  2. 1 2 3 4 5 6 7 8 Gilreath, William F.; Laplante, Phillip A. (2003). Arquitectura de computadoras: una perspectiva minimalista . Springer Science+Business Media . ISBN 978-1-4020-7416-5Archivado del original el 13 de junio de 2009. Dirigido a investigadores, ingenieros de sistemas informáticos, teóricos de la computación y estudiantes, este libro ofrece un análisis exhaustivo de diversos algoritmos OISC, incluidos SBN y MOVE. Atribuye la invención de SBN a W.L. van der Poel (1956).
  3. 1 2 3 4 5 6 Nürnberg, Peter J.; Wiil, Uffe K.; Hicks, David L. (septiembre de 2003), "Una gran teoría unificada para la computación estructural" , Metainformatics: Simposio internacional, MIS 2003 , Graz, Austria: Springer Science+Business Media , págs. 1–16 , ISBN  978-3-540-22010-7Archivado del original el 3 de enero de 2015 , consultado el 7 de septiembre de 2009. Este artículo de investigación se centra por completo en un OISC SUBLEQ y su lenguaje ensamblador asociado, utilizando el nombre SUBLEQ para referirse tanto a la instrucción como a cualquier lenguaje basado en ella.
  4. "Se presenta el primer ordenador fabricado con nanotubos de carbono" . BBC. 26 de septiembre de 2013. Consultado el 26 de septiembre de 2013 .
  5. 1 2 Oleg Mazonka, "Copia de bits: la máxima simplicidad computacional" , Complex Systems Journal 2011, Vol. 19, N.º 3, págs. 263–285
  6. "Addleq" . Wiki de Esolang . Consultado el 16 de septiembre de 2017 .
  7. "DJN OISC" . Wiki de Esolang . Consultado el 16 de septiembre de 2017 .
  8. "P1eq" . Wiki de Esolang . Consultado el 16 de septiembre de 2017 .
  9. Mazonka, Oleg (octubre de 2009). "SUBLEQ" . Archivado del original el 29 de junio de 2017. Consultado el 16 de septiembre de 2017 .
  10. "Subleq" . Wiki de Esolang . Consultado el 16 de septiembre de 2017 .
  11. ZA Melzak (1961). "Un enfoque aritmético informal de la computabilidad y la computación" . Boletín Matemático Canadiense . 4 (3): 279– 293. doi : 10.4153/CMB-1961-031-9 .
  12. xoreaxeaxeax. "movfuscator" . GitHub . Consultado el 12 de noviembre de 2022 .
  13. "Amanecer para SUBLEQ" .
  14. https://www.gazetaeao.ru/zanimatelnaya-nauka-vchera-segodnya-zavtra/ Un artículo ruso sobre divulgación científica en Birobidzhaner Shtern con una breve discusión sobre la computadora Izhora de Yoel Matveyev.
  15. https://habr.com/ru/post/584596/ Descripción del ordenador virtual Izhora en Habr (en ruso)
  16. Oleg Mazonka Una computadora multiprocesador simple basada en Subleq
  17. Richard James Howe SUBLEQ eForth
  18. Iniciativa de Software Eterno de Adrian Cable
  19. ZA Melzak (2018-11-20) [septiembre de 1961]. "Un enfoque aritmético informal de la computabilidad y la computación" . Boletín Matemático Canadiense . 4 (3): 279– 293. doi : 10.4153/CMB-1961-032-6 .
  20. J. Lambek (2018-11-20) [septiembre de 1961]. "Cómo programar un ábaco infinito" . Boletín Matemático Canadiense . 4 (3): 295– 302. doi : 10.4153/CMB-1961-032-6 .
  21. Jones, Douglas W. (junio de 1988). "The Ultimate RISC" . ACM SIGARCH Computer Architecture News . 16 (3). Nueva York: ACM: 48–55 . doi : 10.1145/48675.48683 . S2CID 9481528. Recuperado el 4 de octubre de 2010 .  Las arquitecturas informáticas con conjunto reducido de instrucciones han suscitado un gran interés desde 1980. La arquitectura RISC definitiva que se presenta aquí es un ejemplo extremo, aunque sencillo, de este tipo de arquitectura. Solo tiene una instrucción: mover memoria a memoria, y aun así resulta útil.
  22. Catsoulis, John (2005), Diseño de hardware embebido (2.ª ed.), O'Reilly Media , págs. 327–333 , ISBN   978-0-596-00755-3
  23. Mazonka, Oleg; Tsoutsos, Nektarios Georgios; Maniatakos, Michail (2016), "Cryptoleq: Una máquina abstracta heterogénea para computación cifrada y no cifrada", IEEE Transactions on Information Forensics and Security , 11 (9): 2123– 2138, Bibcode : 2016ITIF...11.2123M , doi : 10.1109/TIFS.2016.2569062 , S2CID 261387 
  • Subleq en la wiki de lenguajes de programación esotéricos : intérpretes, compiladores, ejemplos y lenguajes derivados.
  • Reductio ad absurdum en YouTube por Christopher Domas
  • Computadora de laboratorio sublimitada : implementación en FPGA usando VHDL
  • Museo de la Retroinformática : emulador SBN y programas de ejemplo.
  • Computadora de laboratorio SBN – implementada con circuitos integrados de la serie 7400
  • RSSB en la wiki de lenguajes de programación esotéricos : intérpretes y ejemplos.
  • Implementación de OISC de 32 bits del Dr. Dobb : arquitectura activada por transporte (TTA) en una FPGA usando Verilog.
  • Introducción a la arquitectura MAXQ : incluye diagrama de mapa de transferencia.
  • Emulador OISC – versión gráfica
  • TrapCC (las MMU x86 recientes de Intel son en realidad OISC Turing-completas).
  • Izhora – El ordenador Subleq de Yoel Matveyev, construido como un sistema de automatización celular.
  • Simulador SBN : simulador y diseño inspirados en CARDboard Illustrative Aid to Computation (Ayuda Ilustrativa para el Cálculo)
  • Computación de un bit a 60 hercios : un punto intermedio entre una computadora y una máquina de estados.
  • La máquina NOR : información sobre cómo construir una CPU con una sola instrucción. 
  • SUBLEQ eFORTH Un intérprete Forth completo que se ejecuta en el SUBLEQ OISC.
  • Cryptoleq Repositorio de recursos de Cryptoleq 
  • CAAMP Arquitectura de Computadoras: Una Perspectiva Minimalista 
  • SICO – Computadora de Instrucción Única: una variante de SUBLEQ que utiliza enteros sin signo
Obtenido de " https://en.wikipedia.org/w/index.php?title=One-instruction_set_computer&oldid=1363456096 "