Puede construir una computadora perfectamente fina y funcional sin registros. Se llama una máquina de pila. En lugar de conjuntos de registros para almacenar operandos, se empujan hacia abajo en una sola pila de último en entrar, primero en salir (LIFO) y se despliegan en orden inverso cuando es necesario en un cálculo.
Las arquitecturas de pila funcionan con cálculos realizados en polaco inverso o postfix.
La corporación Burroughs, uno de la media docena de diseñadores y fabricantes principales de mainframe en la década de 1960, construyó una máquina de este tipo a partir de la serie B5000. Fue bastante exitoso en ese momento y distintivo porque su arquitectura estaba orientada y diseñada en combinación con el software; Fue construido como un sistema integrado. La mayoría de los otros (IBM 360, Honeywell, NCR, Control Data, Sperry y la actual base Intel X86) diseñaron máquinas que contienen hardware ALU con registros y conjuntos de instrucciones a los que los equipos de compilación y SO se adaptaron. El Burroughs B5000 fue diseñado alrededor del lenguaje de programación ALGOL de alto nivel y compiló el código ALGOL en una sola pasada (la mayoría de los otros compiladores fueron de dos pasadas) directamente a la implementación de la máquina sin requerir un lenguaje de ensamblaje intermedio. La compilación para la ejecución fue bastante rápida en comparación con la competencia. La estructura de postfix y la arquitectura de pila desempeñaron un papel clave en esto.
- ¿Quién puede decirme el método paso a paso para comenzar a aprender el aprendizaje automático desde cero, comenzar a trabajar independientemente y convertirlo como mi trabajo a tiempo completo?
- ¿Qué es más fascinante, la biología o la informática?
- ¿Cuál es el número esperado de veces que una computadora puede calcular 1 + 1 correctamente sin cometer un error?
- ¿Aprende más de los cursos de estudio / proyecto independientes en comparación con los cursos regulares en Stanford? (CS)
- Cuando reproduzco un disco de datos con un reproductor de CD de audio normal, ¿por qué no oigo nada?
Las arquitecturas de pila tienen una ventaja cuando el espacio físico de su hardware está restringido y es muy caro. Como todas las operaciones se realizan utilizando el valor superior o los dos valores superiores de la pila, no hay campos de direccionamiento de registro en las instrucciones, lo que los hace más pequeños y el código de máquina mucho más denso. La compensación es que quizás necesite más instrucciones, pero la tienda de programas suele ser más compacta que la de las arquitecturas de registro. Debido a la simplicidad de la tienda de operandos, los compiladores son más simples y rápidos y el acceso a los operandos suele ser más rápido que las máquinas de registro, especialmente con conjuntos de registros más grandes. La otra ventaja está en el procesamiento de interrupciones cuando el estado de la máquina tiene que cambiarse. Sin la necesidad de leer, guardar y volver a cargar conjuntos de registros, esto sucede mucho más rápido.
Existen algunas desventajas para las arquitecturas de pila, particularmente con más referencias de memoria, ya que carece de un caché de registro local para almacenar valores temporales.
Las arquitecturas de pila pueden tener algunos registros de propósito especial en la ALU para punteros o valores de estado. También puede tener un diseño híbrido con una pila y algunos registros direccionables para actuar como almacén local de operandos, superando así la desventaja de referencia de memoria.
Otros ejemplos de sistemas de conjuntos de instrucciones de pila son la serie HP 3000 y las computadoras en tándem.
Además de ALGOL, el lenguaje FORTH también estaba orientado hacia arquitecturas de pila. FORTH se hizo popular en sistemas embebidos donde el almacenamiento y el tamaño de ALU estaban restringidos.
Las máquinas de pila virtual también se crearon donde la arquitectura se interpretó en softare. La p-máquina UCSD Pascal fue un ejemplo, al igual que la Máquina virtual Java y Adobe Postscript.
Aquí hay una referencia algo técnica de la revista IEEE Computer para aprender más sobre el funcionamiento de una máquina apiladora (HP 3000 en este caso) escrita en algún momento a mediados de la década de 1970, a juzgar por la foto del autor 🙂
https: //pdfs.semanticscholar.org…
Nota: Estoy usando el término “registro” aquí como un elemento arquitectónico de un diseño ALU (Unidad Aritmética-Lógica), suponiendo que la pregunta se dirija a ese nivel y no al nivel de diseño lógico. De hecho, la implementación de la puerta lógica real de una pila pushdown se realiza con un conjunto de elementos de almacenamiento vinculados que algunos podrían denominar registros. Pero aquí, estoy usando el término registro para referirme a un elemento de almacenamiento que es individualmente direccionable por el conjunto de instrucciones de la máquina.