20 votos

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

Estoy leyendo el libro "Elementos de sistemas informáticos". Este libro enseña cómo construir un ordenador completo desde cero. Mientras ojeaba los capítulos sobre arquitectura de ordenadores, me di cuenta de que todo se centraba en la arquitectura Von Neumann. Tenía curiosidad por saber cuáles son las otras arquitecturas y cuándo y dónde se utilizan.

Sólo conozco dos, uno es el de Von Neumann y el segundo el de Harvard. También sé acerca de RISC que se utiliza en uC de AVR.

27voto

Jeremy Ruten Puntos 59989

Hay muchos tipos diferentes de arquitecturas informáticas.

Una forma de clasificar las arquitecturas informáticas es por el número de instrucciones que se ejecutan por reloj. Muchas máquinas de computación leen una instrucción cada vez y la ejecutan (o ponen mucho esfuerzo en actuar como si lo hacen, aunque internamente hagan cosas superescalares y fuera de orden). Llamo a estas máquinas "von Neumann", porque todas ellas tienen un cuello de botella von Neumann. Estas máquinas incluyen las arquitecturas CISC, RISC, MISC, TTA y DSP. Estas máquinas incluyen las máquinas de acumuladores, las máquinas de registros y las máquinas de pila. Otras máquinas leen y ejecutan varias instrucciones a la vez (VLIW, superescalares), lo que rompe el límite de una instrucción por reloj, pero siguen alcanzando el cuello de botella de von Neumann con 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 encenderse y luego procesan los datos sin más instrucciones. Entre estas máquinas no von Neumann se encuentran las arquitecturas de flujo de datos, como las arquitecturas sistólicas y los autómatas celulares, a menudo implementados con FPGAs, y el superordenador NON-VON.

Otra forma de clasificar las arquitecturas informáticas es por la conexión o conexiones entre la CPU y la memoria. Algunas máquinas tienen una memoria unificada, de forma que una única dirección corresponde a un único lugar en la memoria, y cuando esa memoria es RAM, se puede utilizar esa dirección para leer y escribir datos, o cargar esa dirección en el contador de programa para ejecutar código. A estas máquinas las llamo máquinas Princeton. Otras máquinas tienen varios espacios de memoria separados, de forma que el contador de programa siempre se refiere a la "memoria de programa", independientemente de la dirección que se cargue en él, y las lecturas y escrituras normales siempre van a la "memoria de datos", que es una ubicación separada que normalmente contiene información diferente, incluso cuando los bits de la dirección de datos resultan ser idénticos a los bits de la dirección de la memoria de programa. Estas máquinas son "Harvard puras" o "Harvard modificadas". La mayoría de los DSP tienen 3 áreas de memoria separadas: la ram X, la ram Y y la memoria de programa. Las máquinas DSP, Princeton y Harvard de 2 memorias son tres tipos diferentes de máquinas von Neumann. Unas pocas máquinas aprovechan la conexión extremadamente amplia entre memoria y cálculo que es posible cuando ambas están en el mismo chip -- ram computacional o iRAM o CAM RAM -- que puede verse como un tipo de máquina no von Neumann.

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

La mayoría de los sistemas embebidos utilizan la arquitectura Harvard. Unas pocas CPU son "Harvard puras", que es quizá la disposición más sencilla de construir en hardware: el bus de direcciones a la memoria de programa de sólo lectura está conectado exclusivamente al contador de programa, como muchos de los primeros PICmicros de Microchip. Algunas máquinas Harvard modificadas, además, también ponen constantes en la memoria de programa, que se pueden leer con una instrucción especial "leer datos constantes de la memoria de programa" (diferente de la instrucción "leer de la memoria de datos"). El software que se ejecuta en los tipos de máquinas Harvard anteriores no puede cambiar la memoria de programa, que es efectivamente ROM para ese software. Algunos sistemas embebidos son "autoprogramables", normalmente con memoria de programa en memoria flash y una instrucción especial "borrar bloque de memoria flash" 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 Microchip PICmicros y Atmel AVR más recientes son máquinas Harvard modificadas autoprogramables.

Otra forma de clasificar las CPU es por su reloj. La mayoría de los ordenadores son síncronos, es decir, tienen un único reloj global. Algunas CPU son asíncronas (no tienen reloj), como el ILLIAC I y el ILLIAC II, que en su momento fueron los superordenadores más rápidos 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 .

8voto

Duncan Smart Puntos 9195

CISC es lo "opuesto" a RISC. Mientras que RISC prefiere instrucciones sencillas, fáciles de optimizar para el compilador y a menudo del mismo tamaño, a CISC le gustan las instrucciones complejas de tamaño variable.

Por ejemplo, una instrucción pop en CISC modificará el puntero de la pila y coloca 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 empujar datos a la pila, pero eso es una excepción).

Como las instrucciones RISC tienen todas el mismo tamaño, los desensambladores son más fáciles de escribir. El diseño del procesador también es más sencillo, porque el pipeline no tiene que tener en cuenta los distintos tamaños de las 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 las instrucciones permite cierta "compresión".

También existen otras arquitecturas exóticas, como VLIW/EPIC. Este tipo de arquitecturas se diseñaron pensando en el procesamiento paralelo. Sin embargo, no les ha ido muy bien, porque suponen una gran carga de optimización para el compilador, mientras que otras arquitecturas tienen ventanas de instrucciones extravagantes que alivian parte de la carga de optimización del compilador.

5voto

Mark Biek Puntos 41769

Tanto la arquitectura von Neumann como la Harvard pueden utilizarse con procesadores RISC como el AVR y el ARM. El AVR utiliza Harvard, mientras que algunos chips ARM utilizan von Neumann y otros Harvard.

5voto

Bueno, hay algo como el ENIAC, donde tienes esencialmente ALUs individuales y las "programabas" conectando la salida de una alu a la entrada de otra alu que iba a realizar la siguiente operación sobre esa variable intermedia. Los "registros" y el almacenamiento son los cables que conectan las ALU.

Hace poco compré el libro "The First Computers--History and Architectures (History of Computing)", que en parte se centra exactamente en este tema. No recomiendo comprar este libro, aunque no es más que una colección de artículos académicos, difíciles de leer y sospecho que probablemente publicados (de forma gratuita) en otros lugares. (Lo dejé antes de terminar la introducción).

Una vez que se inventó la memoria y se hizo práctica, nos conformamos con las dos más populares: Von Neumann y Harvard. La ejecución a partir de recableado, tarjetas perforadas, cinta de papel o cosas por el estilo se volvió menos práctica. Y está la basada en pilas (la zpu, por ejemplo), que sospecho que probablemente entra en la categoría de Harvard y no en la suya propia.

¿Qué pasa con las plataformas von neumann que arrancan desde una memoria flash de sólo lectura (en uso normal) en una interfaz de memoria y tienen una memoria ram de datos de lectura/escritura en otra (que a veces puede operar en ambas en paralelo) pero que desde la perspectiva de los programas están en un mismo espacio de direcciones? O las que tienen varias memorias/interfaces internas y externas que operan en paralelo pero que son von neumann por estar en el mismo espacio de direcciones.

¿Y de qué sirve una plataforma harvard en la que el procesador no puede acceder a la memoria de instrucciones como datos para cambiar/actualizar el gestor de arranque o para que éste cargue el siguiente programa a ejecutar? ¿Por qué no es una arquitectura von neumann? ¿El procesador ejecuta desde y opera en la misma memoria en la misma interfaz de una manera probablemente secuencial (las búsquedas de instrucciones y las escrituras de memoria no ocurren al mismo tiempo)?

En mi opinión, las dos arquitecturas basadas en memoria son más parecidas que diferentes en las implementaciones actuales.

¿Dónde quedan las gpu? O en el negocio en el que yo trabajo, los procesadores de red (NPU). Donde tienes estos relativamente pequeños micro-motores de propósito especial (procesadores) que se ejecutan desde una memoria RAM de programa tipo Harvard (direccionable, pero simplemente no quieres hacerlo por razones de rendimiento), operan en varias memorias RAM de datos, cada una con su propio espacio de direcciones separado (instrucciones de procesador separadas para cada espacio), (los espacios de memoria operan en paralelo) y a través de esas memorias RAM entregan datos intermedios para que el siguiente micro-motor realice el siguiente cálculo de una manera similar a la alu (eniac) cableada? ¿Cómo llamarías a eso? ¿Son las npus y las gpus arquitecturas harvard modificadas?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X