¿Cuáles son los diferentes tipos de arquitecturas de computadora?

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. Solo tenía curiosidad por saber cuáles son las otras arquitecturas y cuándo & donde se utilizan.

Sólo conozco dos, uno es Von Neumann y el segundo es Harvard. También sé sobre RISC que se usa en la unidad de usuario de AVR.

    
pregunta Rick_2047

4 respuestas

27

Hay muchos tipos diferentes de arquitecturas de computadora.

Una forma de categorizar las arquitecturas de computadora es por la cantidad de instrucciones ejecutadas por reloj. Muchas máquinas de computación leen una instrucción a la vez y la ejecutan (o hacen un gran esfuerzo para actuar como si hacen eso, incluso si internamente hacen superscalar de lujo y cosas fuera de orden) . A estas máquinas las llamo máquinas "von Neumann", porque todas tienen un cuello de botella de von Neumann. Tales máquinas incluyen arquitecturas CISC, RISC, MISC, TTA y DSP. Estas 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, super-escalar), que rompen el límite de una instrucción por reloj, pero siguen golpeando 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, ya que cargan todas sus operaciones una vez en el 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, como arquitecturas sistólicas y autómatas celulares, a menudo implementadas con FPGA y la supercomputadora NON-VON.

Otra forma de categorizar las arquitecturas de la computadora es a través de 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, se 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. A estas máquinas las llamo máquinas de princeton. Otras máquinas tienen varios espacios de memoria separados, de modo que el contador del programa siempre hace referencia a "memoria de programa", independientemente de la dirección que esté cargada, y las lecturas y escrituras normales siempre van a "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 resultan ser idénticos a los bits de la dirección de memoria del programa. Esas máquinas son máquinas "puras de Harvard" o "máquinas modificadas de Harvard". La mayoría de los DSP tienen 3 áreas de memoria separadas: el ram X, el ram Y y la memoria del programa. Las máquinas DSP, Princeton y Harvard de 2 memorias son tres tipos diferentes de máquinas von Neumann. Algunas máquinas aprovechan la conexión extremadamente amplia entre la memoria y el cómputo que es posible cuando ambas se encuentran en el mismo chip (memoria computacional o iRAM o CAM RAM), que se puede ver como una especie de máquina que no es de von Neumann.

Algunas personas usan 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, ¿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 máquinas de Harvard y Princeton, y excluye NON-VON?

La mayoría de los sistemas integrados utilizan la arquitectura de Harvard. Algunas CPU son "Harvard puro", que es quizás la disposición más simple para construir hardware: el bus de direcciones a la memoria del programa de solo lectura está conectado exclusivamente al contador del programa, como muchos PICmicros de Microchip. Además, algunas máquinas Harvard modificadas también colocan constantes en la memoria del programa, que se pueden leer con una instrucción especial de "lectura de datos constantes de la memoria de programa" (diferente de la instrucción de "lectura 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", por lo general con memoria de programa en la 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 normal "escritura en memoria de datos" instrucción), además de la instrucción "leer datos de la memoria del 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 las computadoras son síncronas, tienen un solo reloj global. Algunas CPU son asíncronas, no tienen reloj, incluido ILLIAC I e ILLIAC II, que en un momento fueron las supercomputadoras más rápidas del mundo.

Ayude a mejorar la descripción de todos los tipos de arquitecturas de computadoras en enlace .

    
respondido por el davidcary
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 emergente en CISC modificará el puntero de 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 pila con una segunda instrucción. (en general, hay algunas excepciones, como 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 son todas del 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 instrucción. Sin embargo, la densidad del código CISC tiende a ser mejor, ya que las instrucciones complejas requieren menos bytes para representar el mismo número de operaciones y porque la longitud de la instrucción variable permite cierta "compresión".

También hay otras arquitecturas exóticas, como VLIW / EPIC. Este tipo de arquitectura fue diseñada teniendo en cuenta el procesamiento paralelo. Sin embargo, no les fue muy bien, ya que suponen una gran carga para el optimizador del compilador, mientras que otras arquitecturas tienen ventanas de instrucciones sofisticadas que alivian la carga de optimización del compilador.

    
respondido por el ajs410
5

Bueno, hay algo como el ENIAC, en el que tiene esencialmente ALU individuales y las "programó" cableando 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 "Las primeras computadoras: historia y arquitecturas (Historia de la computación)", 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íciles de leer y sospecho que probablemente se publiquen (gratis) en otro lugar. (Me di por vencido antes de terminar la introducción)

Una vez que se inventó la memoria y se volvió práctica, nos acomodamos en los dos populares Von Neumann y Harvard. La ejecución de recableado, tarjetas perforadas, cinta de papel o cosas por el estilo se volvió menos práctica. Y está basado en la pila (el zpu, por ejemplo), que sospecho que probablemente se encuentre en la categoría de Harvard y no en la propia.

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

¿Y de qué sirve una plataforma Harvard donde el procesador no puede acceder a la memoria de instrucciones como datos para cambiar / actualizar el cargador de arranque o para que el cargador de arranque cargue el siguiente programa para ejecutarse? ¿Por qué no es eso una arquitectura de von neumann? ¿El procesador ejecutándose desde y operando en la misma memoria en la misma interfaz en una forma secuencial (las recuperaciones de instrucciones y las escrituras de memoria no ocurren al mismo tiempo)?

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

¿Dónde caen los gpu? O el negocio en el que trabajo, procesadores de red (NPU). Donde tenga estos micro-motores (procesadores) de propósito especial relativamente pequeños que se ejecutan desde un ramificador de programa similar a un recolector (direccionable pero no quiere 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 el próximo microengine realice el siguiente cálculo de una manera similar a un alu (eniac) cableado? ¿Cómo llamarías a eso? ¿Npus y gpus son simplemente modas arquitecturas de Harvard modificadas?

    
respondido por el old_timer
4

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

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas