robot de la enciclopedia para niños

Máquina de pila para niños

Enciclopedia para niños

Una máquina de pila es un tipo de computadora o un modelo de cómo funciona una computadora. En estas máquinas, la memoria principal se organiza como una o más "pilas". Imagina una pila de platos: solo puedes añadir un plato encima o quitar el plato de arriba. Así funciona una pila en informática.

El término "máquina de pila" también se refiere a computadoras reales que funcionan de esta manera o que simulan este modelo.

Además, una máquina de pila puede ser una máquina real o simulada que usa un "conjunto de instrucciones de 0 operandos". Esto significa que la mayoría de las instrucciones no necesitan que les digas dónde están los datos. Simplemente trabajan con los valores que están en la parte superior de la pila y reemplazan esos valores con el resultado. Por ejemplo, para sumar dos números, la máquina esperaría que esos dos números ya estuvieran en la parte superior de la pila.

Estas máquinas suelen tener instrucciones para "cargar" (leer) y "guardar" (escribir) datos en cualquier lugar de la memoria RAM. Al igual que otras instrucciones, estas tampoco necesitan operandos explícitos. La dirección de la memoria que se quiere leer o escribir se toma directamente de la parte superior de la pila.

Una ventaja de las máquinas de pila (con "0 operandos") sobre otras arquitecturas de computadoras es que los programas escritos para ellas suelen ser más compactos. Esto significa que ocupan menos espacio en la memoria.

Las pilas en la teoría de la computación

En la teoría de la computación, que estudia cómo funcionan los cálculos, una máquina de pila tiene varias pilas. La información inicial se coloca en la primera pila, y las demás comienzan vacías.

Cada paso de una máquina de pila puede ser de "lectura" (sacar algo de una pila) o de "escritura" (poner algo en una pila). Un estado de escritura también indica qué símbolo se debe escribir y a qué siguiente paso ir. Un estado de lectura indica a qué paso ir dependiendo del símbolo que se lea o si la pila está vacía. La máquina se detiene cuando llega a un estado especial de parada.

Una máquina de pila con solo una pila es un modelo de computación bastante limitado. Por ejemplo, no puede reconocer patrones simples como una secuencia de ceros seguida por el mismo número de unos (por ejemplo, "0011"). Su capacidad es mayor que la de una máquina muy simple llamada "autómata finito", pero menor que la de un "autómata de pila determinista".

Sin embargo, una máquina de pila con varias pilas es tan potente como una Máquina de Turing. Una Máquina de Turing es un modelo teórico de computadora que puede realizar cualquier cálculo que sea posible. Por ejemplo, una máquina con dos pilas puede simular una Máquina de Turing usando una pila para la parte izquierda de la "cinta" de la Máquina de Turing y la otra pila para la parte derecha.

Máquinas de pila en la práctica

Las computadoras que usan un conjunto de instrucciones basado en pilas pueden tener una o más pilas. Algunas tienen dos pilas principales: una "pila de datos" para las operaciones con información y una "pila de retorno" para guardar las direcciones a las que debe volver el programa después de ejecutar una parte. Otras máquinas usan la misma pila para ambas funciones.

Una computadora que usa los registros de su procesador (pequeñas áreas de memoria muy rápidas dentro de la CPU) puede simular fácilmente una máquina de pila. A esto se le llama a veces una "máquina de pila virtual". La ventaja de tener un conjunto de instrucciones basado en pila (ya sea en el hardware o simulado) es que las instrucciones son más cortas. Esto se debe a que no necesitan especificar muchas direcciones de datos, lo que resulta en programas más pequeños y eficientes.

Las máquinas de pila comerciales suelen incluir algunos registros especiales. Estos ayudan a manejar diferentes "contextos" o "marcos" de pila, que son como diferentes capas de información en la pila. Esto hace que las máquinas de pila sean muy útiles para la computación general.

Aquí tienes algunos ejemplos de dónde se han usado las máquinas de pila:

  • Arquitecturas de hardware:

* Los grandes sistemas de Burroughs (desde 1961). * El sistema CAPS de Collins Radio (desde 1969) y el AAMP de Rockwell Collins (desde 1981). * La p-machine de UCSD Pascal (como el Pascal MicroEngine). * El T/16 de Tandem Computers. * El HP 3000 de Hewlett Packard. * El microcontrolador MARC4 de Atmel. * Varios "chips Forth", como el RTX2000 y el F21. * El procesador 4stack de Bernd Paysan. * La máquina de pila "Ignite" de Charles H. Moore. * El microprocesador Thor de Saab Ericsson Space.

  • Máquinas virtuales (interpretadas por software):

* La p-machine de UCSD Pascal. * El conjunto de instrucciones de la Máquina virtual Java (JVM). * El Virtual Execution System (VES) para el Common Intermediate Language (CIL) de Microsoft .NET. * El lenguaje de programación Forth, especialmente su máquina virtual. * El lenguaje PostScript de Adobe Systems. * El lenguaje de programación Parakeet. * El lenguaje de programación SwapDrop de Sun Microsystems.

Es interesante notar que la arquitectura de Burroughs combinaba una máquina de pila con una "memoria etiquetada". Esto significa que cada palabra de memoria tenía algunos bits extra para describir el tipo de datos que contenía. Esto permitía que una sola instrucción, como "sumar", funcionara para diferentes tipos de números, lo que reducía la cantidad de instrucciones necesarias y hacía el código más compacto.

Rendimiento de las máquinas de pila

Las máquinas de pila compiten con las máquinas de registro, que son más comunes. Ambas tienen sus puntos fuertes.

Algunas personas creen que las máquinas de pila son lentas porque sus pilas están en la memoria principal, que es más lenta de acceder que los registros del procesador. Sin embargo, esto se compensa un poco porque el código de las máquinas de pila es más pequeño, lo que hace que se lea y ejecute más rápido.

Estudios han demostrado que, aunque el código de las máquinas de registro puede tener menos instrucciones "virtuales", es un 25% más grande que el código de las máquinas de pila. Cuando las pilas están en la memoria, una máquina de registro puede ser más rápida, en parte porque puede reutilizar valores constantes en sus registros.

También se dice que los registros permiten una ejecución más paralela, es decir, que la computadora puede hacer varias cosas al mismo tiempo. Sin embargo, la velocidad de una computadora muy rápida está limitada por la velocidad de acceso a la memoria principal, no tanto por cómo se manejan los resultados intermedios.

Algunas máquinas de pila usan una "caché" (una memoria muy rápida) que guarda partes de la pila en registros de alta velocidad. Esto acelera el acceso a la pila y mantiene el código pequeño y rápido.

El tiempo que tarda una computadora en responder a un evento (como una interrupción) puede ser menor en las máquinas de pila. Esto se debe a que en las máquinas de registro, los valores de los registros a menudo tienen que guardarse y luego restaurarse para que el código de interrupción no altere lo que la computadora estaba haciendo. Algunas máquinas de registro tienen varios conjuntos de registros, lo que les permite cambiar rápidamente a otro conjunto para manejar interrupciones sin afectar el trabajo principal.

El código más pequeño de una máquina de pila puede reducir el tamaño y el costo de la memoria de una computadora. Aunque menos accesos a la memoria pueden hacer que una máquina de registro sea más rápida que una de pila (si las pilas están en la memoria), las máquinas de pila pueden tener menos "sobrecarga" al responder a interrupciones, ya que no necesitan guardar y restaurar tantos registros.

Véase también

Kids robot.svg En inglés: Stack machine Facts for Kids

  • Lenguaje de programación orientado a pila
  • Grandes sistemas de Burroughs
  • Forth (lenguaje de programación)
  • Máquina de acumulador
  • Máquina de registro
  • Pila
  • Pila de llamadas
kids search engine
Máquina de pila para Niños. Enciclopedia Kiddle.