¿Cuáles son los diferentes tipos de arquitecturas informáticas?

20

Estoy revisando el libro "Elementos de los sistemas informáticos". Este libro enseña cómo construir una computadora completa desde cero. Mientras estaba navegando por los capítulos sobre arquitectura de computadoras, noté que todo se enfocaba en la arquitectura de Von Neumann. Tenía curiosidad sobre cuáles son las otras arquitecturas y cuándo y dónde se utilizan.

Sé de solo dos, uno es Von Neumann y el segundo es Harvard. También sé sobre RISC que se usa en uC de AVR.

Rick_2047
fuente
2
Hay un tercero, que se modifica Harvard. Una Harvard pura no podría usar el mismo almacenamiento para mantener tanto los programas como los datos. Por lo tanto, casi todas las implementaciones de Harvard se han modificado para permitir que la memoria de instrucciones se aborde como datos.
gorila
1
gran pregunta
Tipo anónimo

Respuestas:

27

Hay muchos tipos diferentes de arquitecturas informáticas.

Una forma de categorizar arquitecturas de computadora es por número de instrucciones ejecutadas por reloj. Muchas máquinas informáticas leen una instrucción a la vez y la ejecutan (o ponen mucho esfuerzo en actuar como sihacen eso, incluso si internamente hacen cosas extravagantes y superescalares). Llamo a estas máquinas máquinas "von Neumann", porque todas tienen un cuello de botella von Neumann. Dichas máquinas incluyen arquitecturas CISC, RISC, MISC, TTA y DSP. Dichas máquinas incluyen máquinas acumuladoras, máquinas registradoras y máquinas apiladoras. Otras máquinas leen y ejecutan varias instrucciones a la vez (VLIW, súper escalar), que rompen el límite de una instrucción por reloj, pero aún alcanzan el cuello de botella de von Neumann en un número ligeramente mayor de instrucciones por reloj. Sin embargo, otras máquinas no están limitadas por el cuello de botella de von Neumann, porque precargan todas sus operaciones una vez al momento del encendido y luego procesan los datos sin más instrucciones. Dichas máquinas que no son de Von-Neumann incluyen arquitecturas de flujo de datos,

Otra forma de clasificar las arquitecturas de la computadora es mediante las conexiones entre la CPU y la memoria. Algunas máquinas tienen una memoria unificada, de modo que una sola dirección corresponde a un solo lugar en la memoria, y cuando esa memoria es RAM, uno puede usar esa dirección para leer y escribir datos, o cargar esa dirección en el contador del programa para ejecutar el código. Yo llamo a estas máquinas máquinas Princeton. Otras máquinas tienen varios espacios de memoria separados, de modo que el contador del programa siempre se refiere a la "memoria del programa" sin importar la dirección cargada, y las lecturas y escrituras normales siempre van a la "memoria de datos", que es una ubicación separada que generalmente contiene diferentes información incluso cuando los bits de la dirección de datos son idénticos a los bits de la dirección de memoria del programa. Esas máquinas son "Harvard puro" o "

Algunas personas usan una definición limitada de "máquina von Neumann" que no incluye las máquinas Harvard. Si usted es una de esas personas, entonces, ¿qué término usaría para el concepto más general de "una máquina que tiene un cuello de botella de von Neumann", que incluye las máquinas Harvard y Princeton, y excluye NON-VON?

La mayoría de los sistemas integrados utilizan la arquitectura Harvard. Algunas CPU son "Harvard puro", que es quizás el arreglo más simple para construir en hardware: el bus de direcciones a la memoria del programa de solo lectura está conectado exclusivamente al contador del programa, como muchos de los primeros Microchip PICmicros. Algunas máquinas Harvard modificadas, además, también colocan constantes en la memoria del programa, que se puede leer con una instrucción especial "leer datos constantes de la memoria del programa" (diferente de la instrucción "leer de la memoria de datos"). El software que se ejecuta en los tipos anteriores de máquinas Harvard no puede cambiar la memoria del programa, que es efectivamente ROM para ese software. Algunos sistemas integrados son "auto-programables", típicamente con memoria de programa en memoria flash y un "bloque de borrado de memoria flash" especial instrucción y una instrucción especial "escribir bloque de memoria flash" (diferente de la instrucción normal "escribir en memoria de datos"), además de la instrucción "leer datos de la memoria de programa". Varios AVR Microchip PICmicros y Atmel más recientes son máquinas Harvard modificadas y programables.

Otra forma de clasificar las CPU es por su reloj. La mayoría de las computadoras son síncronas: tienen un reloj global único. Algunas CPU son asíncronas, no tienen reloj, incluidas las ILLIAC I e ILLIAC II, que en algún momento fueron las supercomputadoras más rápidas del mundo.

Ayude a mejorar la descripción de todo tipo de arquitecturas informáticas en http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .

davidcary
fuente
2
Wow, qué vergüenza por retener ese conocimiento durante tanto tiempo DESPUÉS de que hice la pregunta.
Rick_2047
3
@ Rick - Parece que esa respuesta tardó mucho tiempo en componerse. ¡Agradezca que davidcary se tomó el tiempo de responder su pregunta! Algunas personas no operan en el mismo horario que usted.
Kevin Vermeer
2
@reemrevnivek que se entiende como una broma, amigo.
Rick_2047
Sería bueno si esta respuesta se marcara como una respuesta wiki comunitaria.
Trygve Laugstøl
8

CISC es el "opuesto" de RISC. Mientras que RISC prefiere tener instrucciones simples que sean fáciles de optimizar para el compilador y, a menudo, del mismo tamaño, a CISC le gustan las instrucciones complejas de diferentes tamaños.

Por ejemplo, una instrucción pop en CISC modificará el puntero de la pila y colocará los datos de la pila en otro registro. Sin embargo, un procesador RISC leería los datos con una instrucción y luego modificaría el puntero de la pila con una segunda instrucción. (en general; hay algunas excepciones, como el PowerPC que puede actualizar el puntero de la pila y enviar datos a la pila, pero esa es una excepción)

Como las instrucciones RISC tienen el mismo tamaño, los desensambladores son más fáciles de escribir. Diseñar el procesador también es más fácil, porque la tubería no tiene que tener en cuenta los diferentes tamaños de instrucciones. Sin embargo, la densidad del código CISC tiende a ser mejor, tanto porque las instrucciones complejas requieren menos bytes para representar el mismo número de operaciones, como porque la longitud variable de la instrucción permite cierta "compresión".

También hay otras arquitecturas exóticas, como VLIW / EPIC. Este tipo de arquitectura se diseñó teniendo en cuenta el procesamiento paralelo. Sin embargo, no lo hicieron muy bien, porque ponen una carga muy pesada en el compilador para optimizar, mientras que otras arquitecturas tienen ventanas de instrucciones sofisticadas que alivian un poco la carga de optimización del compilador.

ajs410
fuente
1
si te gusta, acéptalo.
Kortuk
5

Bueno, hay algo como el ENIAC, donde tienes ALU esencialmente individuales y las "programaste" conectando la salida de un alu a la entrada de otro alu que iba a realizar la siguiente operación en esa variable intermedia. Sus "registros" y almacenamiento son los cables que conectan el alus.

Recientemente compré el libro "The First Computers - History and Architectures (History of Computing)", que en parte se centra en este tema exacto. No recomiendo comprar este libro, aunque es solo una colección de artículos académicos, difícil de leer y sospecho que probablemente se publique (gratis) en otro lugar. (Me di por vencido antes de terminar la introducción)

Una vez que se inventó la memoria y se hizo práctica, nos instalamos en los dos populares Von Neumann y Harvard. Ejecutar desde el re-cableado, tarjetas perforadas, cinta de papel o cosas así se volvió menos práctico. Y está basado en la pila (por ejemplo, la zpu), que sospecho que probablemente pertenece a la categoría de Harvard y no a la suya.

¿Qué pasa con las plataformas von Neumann que se inician desde una memoria flash de solo lectura (en uso normal) en una interfaz de memoria y tienen ram de datos de lectura / escritura en otra (que a veces puede funcionar en ambos en paralelo) pero desde la perspectiva de los programas están en uno ¿espacio de dirección? O las que tienen varias memorias / interfaces internas y externas que funcionan todas en paralelo pero son von neumann por estar en el mismo espacio de direcciones.

¿Y de qué sirve una plataforma de Harvard donde el procesador no puede acceder a la memoria de instrucciones como datos para cambiar / actualizar el gestor de arranque o para que el gestor de arranque cargue el siguiente programa que se ejecute? ¿Por qué no es esa una arquitectura von Neumann? ¿Es probable que el procesador se ejecute y opere en la misma memoria en la misma interfaz de una manera secuencial (las recuperaciones de instrucciones y las escrituras de memoria no ocurren al mismo tiempo)?

Las dos arquitecturas populares basadas en memoria son más cercanas de lo que son diferentes en las implementaciones actuales de IMO.

¿Dónde caen los gpu? O el negocio en el que trabajo, procesadores de red (NPU). Cuando tenga estas microenginas (procesadores) de propósito especial relativamente pequeñas que se ejecutan desde un ram de programa similar a Harvard (direccionable pero simplemente no desea hacerlo por razones de rendimiento), opere en varios RAM de datos cada uno con su propio espacio de direcciones separado (procesador separado instrucciones para cada espacio), (los espacios de memoria que operan en paralelo) y, a través de esos carneros, ¿entregan datos intermedios para que la próxima microingeniería realice el siguiente cálculo de manera alu (eniac) con cable? ¿Cómo llamarías a eso? ¿Son npus y gpus simplemente arquitecturas de Harvard modificadas de lujo?

viejo contador de tiempo
fuente
"¿De qué sirve una plataforma de Harvard donde el procesador no puede ... cargar el siguiente programa para ejecutar?" Muchas CPU tienen un programa fijo que el software que se ejecuta en esa CPU no puede cambiar. Una ventaja de esta disposición es que hace que sea imposible "bloquear" el sistema con un error que escribe en la memoria aleatoria, o una mala actualización de software, o incluso con una buena actualización de software y una falla de energía en el momento oportuno. Hace que sea más difícil actualizar el software, pero en realidad, ¿cuántas veces ha cambiado el software en su microondas?
davidcary
2
En el microondas, ninguno, pero paso bastante tiempo codificando microcontroladores y recargo software muchas veces al día. Al estar limitado a sistemas pequeños, libres de errores, basados ​​en rom, el problema de la resolución se resuelve fácilmente usando von neumann. Los sistemas que describe tienen poco uso para la ganancia de rendimiento de los buses separados, la otra característica de la arquitectura de Harvard. Entonces, mi punto era que la arquitectura de Harvard no escala bien sin una forma de cargar programas, por lo que es algo obsoleto.
old_timer
1
Hmm, llaman al cortex-m3 harvard cuando realmente no es, lo mismo que avr (bueno, lo llaman un harvard modificado). Estoy seguro de que hay algunos procesadores de arquitectura de Harvard puros (PIC), y solía ser von Neumann más puro, pero la mayoría son Harvard modificado o von Neumann modificado (acceso a datos e instrucciones en paralelo), lo que los hace más iguales que diferentes. Hacia donde me dirigía en mi respuesta, el Harvard puro y el puro von Neumann se están volviendo rápidamente obsoletos. El afiche quiere saber qué más hay ahí afuera, bueno, casi todo lo que hay ahí afuera.
old_timer
4

Las arquitecturas von Neumann y Harvard se pueden usar con procesadores RISC como AVR y ARM. El AVR usa Harvard, mientras que algunos chips ARM usan von Neumann y otros usan Harvard.

Leon Heller
fuente
-1 para ordenarlo debajo de las respuestas más interesantes.
Oskar Skog