¿Cuál es la diferencia entre un hardware de stock y una máquina microcodificada en “Una crítica de Common Lisp”?

7

Estaba leyendo este artículo: Crítica de Lisp común y me resulta difícil establecer la definición precisa de "stock-hardware machine" y su diferencia con máquinas "micro-codificadas". Intenté buscar una definición precisa de la primera sin éxito.

Lo que actualmente considero que la máquina de stock-hardware es es que se refiere al conjunto de chips de computadora comúnmente disponibles en el mercado (sin mucha personalización).

Entonces, dado que me gustaría preguntar, ¿qué se entiende por una máquina de hardware en inventario (en el contexto del documento) y en qué se diferencia de una máquina con codificación micro?

    
pregunta Bleeding Fingers 02.04.2013 - 21:15

3 respuestas

15

En el contexto del documento que vinculaste, las palabras "máquina codificada con micro" probablemente se refieran a una Lisp Máquina .

En el momento en que Lisp comenzaba a establecerse, se esperaba que fuera ejecutado (en el caso general) en máquinas diseñadas específicamente para ejecutar instrucciones de Lisp, en lugar de computadoras con un conjunto de instrucciones más general destinado a ser utilizado con compiladores e intérpretes para cualquier idioma.

El microcódigo es lo que sucede debajo de las instrucciones reales del procesador. El procesador que está utilizando para leer esto ahora tiene instrucciones de máquina que casi seguramente están implementadas en algún tipo de microcódigo. Pero en ese momento, probablemente había máquinas que

  1. Implementé instrucciones de máquina en hardware; es decir, puertas lógicas, y
  2. Máquinas que implementaron conjuntos de instrucciones de procesador avanzadas (por ejemplo, Lisp) en microcódigo.

El tipo anterior se habría denominado "hardware de reserva". El punto del artículo, por supuesto, es que cualquier máquina diseñada específicamente para ejecutar instrucciones de Lisp directamente hubiera sido mucho mejor en la ejecución de programas de Lisp que una máquina que requiriera la traducción de las instrucciones de Lisp a algún otro conjunto de instrucciones.

En el momento en que se escribió el documento, esta distinción habría sido muy importante, porque existían limitaciones de procesador y memoria inevitables que ya no existen en la actualidad.

    
respondido por el Robert Harvey 02.04.2013 - 22:22
2

A mediados de los 70s (hace casi 40 años) empezaron a aparecer algunas máquinas Lisp. Xerox (PARC) y MIT los estaban desarrollando. Simbolos posteriores, LMI, TI y algunos otros. Xerox estaba usando uno de sus procesadores típicos bit-slice y MIT desarrolló un procesador personalizado ( CONS y luego el CADR ). El procesador Xerox se usó en una computadora que también podía ejecutar su paquete de software de oficina y el software Smalltalk. El procesador Xerox estaba usando diferentes conjuntos de instrucciones para cada uno. Los conjuntos de instrucciones del procesador fueron programados en microcódigo. La máquina MIT Lisp también tenía un procesador, que podía programarse en microcódigo, pero solo se usaba para Lisp. En ese momento, los procesadores no eran CPU de microprocesador como hoy, sino una o varias placas que hacen una sola CPU. La mayoría de las computadoras durante los 70s capaces de ejecutar Lisp eran mainframes compartidos en el tiempo o las llamadas mini-computadoras (a menudo máquinas de DEC). Las estaciones de trabajo o computadoras personales poderosas no existían entonces. Las máquinas Lisp fueron diseñadas para ser las primeras estaciones de trabajo personales (usuario único, sin tiempo compartido, gran espacio de direcciones, visualización de mapa de bits, gráficos, mouse, red, ...). Para ejecutar Lisp de manera eficiente con la tecnología del procesador en ese momento, necesitaban conjuntos de instrucciones personalizados. Estamos hablando de máquinas anteriores con alrededor de 1 MB de RAM, memoria virtual en disco y menos de 1 MIPS (millones de instrucciones por segundo).

Las máquinas microcodificadas tenían conjuntos de instrucciones especialmente diseñados para soportar la ejecución de Lisp (arquitectura de pila con instrucciones de pila, aritmética genérica, llamadas de función rápidas, tipos de datos Lisp, soporte GC, ...) En el caso de la máquina Lisp de MIT, el hardware también tenía extensiones (como anchos de palabra de memoria especial).

Las computadoras stock-hardware usaban CPU como el DEC VAX, Motorola 68k, Intel 86 y posteriores SPARC, POWER, MIPS, ALPHA y muchos otros. Estas computadoras utilizaron las CPU como vinieron del fabricante (DEC, Motorola, Intel, IBM, ...). Más allá de las simples correcciones de errores (y los desarrolladores de Lisp encontraron varios errores en las CPU) no hubo una adaptación especial del conjunto de instrucciones de estas computadoras mientras ejecutaban Lisp. Algunos de ellos incluso pudieron haber tenido un microcódigo que se puede cargar, pero no se usó para Lisp.

Las CPUs Lisp microcodificadas permitían conjuntos de instrucciones muy simples y, por lo tanto, un compilador Lisp relativamente simple. Adicionalmente, algunas variantes permitieron compilar funciones Lisp simples a microcódigo. El MIT utilizó una CPU personalizada, porque querían un gran espacio de direcciones para Lisp, código compacto y ejecución rápida para las primeras estaciones de trabajo personales. Una combinación que no estaba disponible en el mercado en ese momento (1970 / principios de los 80). Tenga en cuenta que estas CPU aparecieron antes de Common Lisp (que se publicó por primera vez en 1984). Con el tiempo, los fabricantes movieron las CPU a través de diferentes tecnologías y diferentes versiones de Lisp. Por lo tanto, agregaron soporte para la programación orientada a objetos (Sabores, CLOS) y programación lógica a los conjuntos de instrucciones. No era inusual que una nueva versión de Lisp venga también con un microcódigo mejorado con instrucciones nuevas / mejoradas. Posteriormente, TI y Symbolics desarrollaron microprocesadores: CPU de un solo chip para Lisp. Al menos el chip Symbolics no fue diseñado para admitir el microcódigo cargable .

Resumen:

Las

máquinas microcodificadas son computadoras con CPU bit-slice o cpus especial de Lisp con conjuntos de instrucciones especiales para Lisp.

Las

máquinas de hardware de stock son computadoras con CPU comerciales típicas, ya que fueron diseñadas por el fabricante, sin soporte especial de Lisp. De las últimas máquinas de hardware en stock, solo la arquitectura SPARC contiene una cantidad muy pequeña de soporte para Lisp (y Smalltalk).

    
respondido por el Rainer Joswig 05.04.2013 - 13:13

Lea otras preguntas en las etiquetas