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.
architecture
computers
Rick_2047
fuente
fuente
Respuestas:
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 .
fuente
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.
fuente
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?
fuente
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.
fuente