Articulo de referencia

Historia de las CPU de propósito general

La historia de las CPU de propósito general es una continuación de la historia anterior del hardware informático . Década de 1950: primeros diseños Un módulo de tubo de vacío de...

La historia de las CPU de propósito general es una continuación de la historia anterior del hardware informático .

Década de 1950: primeros diseños

Un módulo de tubo de vacío de las primeras computadoras IBM de la serie 700

A principios de los años 50, cada diseño de ordenador era único. No había máquinas compatibles con versiones anteriores ni arquitecturas informáticas con múltiples implementaciones diferentes. Los programas escritos para una máquina no podían ejecutarse en ningún otro tipo de máquina, ni siquiera en otras de la misma empresa. Esto no era un gran inconveniente en aquel entonces porque no se había desarrollado un gran volumen de software para ejecutarse en ordenadores, por lo que empezar a programar desde cero no se consideraba un gran obstáculo.

La libertad de diseño de la época era muy importante porque los diseñadores estaban muy limitados por el coste de la electrónica y apenas empezaban a explorar cómo organizar mejor una computadora. Algunas de las características básicas introducidas durante este período incluían registros de índice (en el Ferranti Mark 1 ), una instrucción para guardar la dirección de retorno ( UNIVAC I ), operandos inmediatos ( IBM 704 ) y detección de operaciones no válidas ( IBM 650 ).

A finales de la década de 1950, los fabricantes de equipos comerciales habían desarrollado ordenadores que se podían transportar en camiones y que se fabricaban en fábrica. El ordenador más instalado fue el IBM 650 , que utilizaba una memoria de tambor en la que se cargaban los programas mediante cintas perforadas o tarjetas perforadas . Algunas máquinas de gama alta también incluían una memoria central que proporcionaba velocidades más altas. Los discos duros también empezaban a popularizarse.

Un ordenador es un ábaco automático . El tipo de sistema numérico afecta a su funcionamiento. A principios de los años 50, la mayoría de los ordenadores se construían para tareas de procesamiento numérico específicas y muchas máquinas utilizaban números decimales como sistema numérico básico; es decir, las funciones matemáticas de las máquinas funcionaban en base 10 en lugar de base 2, como es habitual hoy en día. No se trataba simplemente de decimales codificados en binario (BCD). La mayoría de las máquinas tenían diez tubos de vacío por dígito en cada registro del procesador . Algunos de los primeros diseñadores de ordenadores soviéticos implementaron sistemas basados ​​en la lógica ternaria ; es decir, un bit podía tener tres estados: +1, 0 o -1, correspondientes a voltaje positivo, cero o negativo.

BINAC, uno de los primeros proyectos de la Fuerza Aérea de los EE. UU. , intentó crear una computadora liviana y simple mediante el uso de aritmética binaria. Impresionó profundamente a la industria.

Incluso en 1970, los principales lenguajes informáticos eran incapaces de estandarizar su comportamiento numérico porque las computadoras decimales tenían grupos de usuarios demasiado grandes para aislarlos.

Incluso cuando los diseñadores usaban un sistema binario, todavía tenían muchas ideas extrañas. Algunos usaban aritmética de magnitud de signo (-1 = 10001), o complemento a uno (-1 = 11110), en lugar de la moderna aritmética de complemento a dos (-1 = 11111). La mayoría de las computadoras usaban conjuntos de caracteres de seis bits porque codificaban adecuadamente las tarjetas perforadas Hollerith . Fue una gran revelación para los diseñadores de este período darse cuenta de que la palabra de datos debía ser un múltiplo del tamaño del carácter. Comenzaron a diseñar computadoras con palabras de datos de 12, 24 y 36 bits (por ejemplo, consulte el TX-2 ).

En esta época, la ley de Grosch dominaba el diseño de computadoras: el coste de las computadoras aumentaba con el cuadrado de su velocidad.

Años 60: revolución informática y CISC

Uno de los principales problemas de los primeros ordenadores era que los programas que se utilizaban en uno de ellos no funcionaban en los demás. Las empresas informáticas descubrieron que sus clientes tenían pocos motivos para permanecer fieles a una determinada marca, ya que el siguiente ordenador que compraran sería incompatible de todos modos. En ese momento, las únicas preocupaciones solían ser el precio y el rendimiento.

En 1962, IBM intentó un nuevo enfoque para el diseño de computadoras. El plan era crear una familia de computadoras que pudieran ejecutar el mismo software, pero con diferentes rendimientos y a diferentes precios. A medida que las necesidades de los usuarios crecieran, podrían pasar a computadoras más grandes y aun así conservar toda su inversión en programas, datos y medios de almacenamiento.

Para ello, diseñaron un ordenador de referencia llamado System/360 (S/360). Se trataba de un ordenador virtual, con un conjunto de instrucciones de referencia y capacidades que todas las máquinas de la familia soportarían. Para proporcionar diferentes clases de máquinas, cada ordenador de la familia utilizaría más o menos emulación de hardware y más o menos emulación de microprogramas para crear una máquina capaz de ejecutar el conjunto completo de instrucciones S/360 .

Por ejemplo, una máquina de gama baja podría incluir un procesador muy simple a bajo costo. Sin embargo, esto requeriría el uso de un emulador de microcódigo más grande para proporcionar el resto del conjunto de instrucciones, lo que lo haría más lento. Una máquina de gama alta utilizaría un procesador mucho más complejo que podría procesar directamente más del diseño de S/360, ejecutando así un emulador mucho más simple y rápido.

IBM decidió conscientemente que el conjunto de instrucciones de referencia fuera bastante complejo y muy eficaz. Aunque el ordenador fuera complejo, su almacén de control, que albergaba el microprograma , sería relativamente pequeño y podría fabricarse con una memoria muy rápida. Otro efecto importante fue que una instrucción podría describir una secuencia de operaciones bastante compleja. Por lo tanto, los ordenadores generalmente tendrían que buscar menos instrucciones en la memoria principal, que podría hacerse más lenta, más pequeña y menos costosa para una combinación dada de velocidad y precio.

Como el S/360 iba a ser el sucesor de máquinas científicas como la 7090 y de máquinas de procesamiento de datos como la 1401 , necesitaba un diseño que pudiera soportar razonablemente todas las formas de procesamiento. Por lo tanto, el conjunto de instrucciones fue diseñado para manipular números binarios simples y texto, números de punto flotante científicos (similares a los números utilizados en una calculadora) y la aritmética decimal codificada en binario que necesitan los sistemas de contabilidad.

Casi todos los ordenadores posteriores incluyeron estas innovaciones de alguna forma. Este conjunto básico de características se denomina ahora computación con conjunto de instrucciones complejo [ cita requerida ] (CISC, pronunciado "sisk"), un término que no se inventó hasta muchos años después, cuando la computación con conjunto de instrucciones reducido (RISC) empezó a ganar cuota de mercado.

En muchos CISC, una instrucción podía acceder a registros o a la memoria, normalmente de varias formas diferentes. Esto hacía que los CISC fueran más fáciles de programar, porque un programador podía recordar sólo entre treinta y cien instrucciones y un conjunto de tres a diez modos de direccionamiento en lugar de miles de instrucciones distintas. Esto se denominaba conjunto de instrucciones ortogonales . La arquitectura PDP-11 y Motorola 68000 son ejemplos de conjuntos de instrucciones casi ortogonales.

También estaba BUNCH ( Burroughs , UNIVAC , NCR , Control Data Corporation y Honeywell ) que competía contra IBM en ese momento; sin embargo, IBM dominó la era con S/360.

La Burroughs Corporation (que más tarde se fusionó con Sperry/Univac para formar Unisys ) ofreció una alternativa al S/360 con sus grandes sistemas Burroughs de la serie B5000. En 1961, el B5000 tenía memoria virtual, multiprocesamiento simétrico, un sistema operativo multiprogramación (Master Control Program (MCP)), escrito en ALGOL 60 , y los primeros compiladores de descenso recursivo de la industria ya en 1964.

Años 70: revolución de los microprocesadores

Microprocesador Intel 4004

El primer microprocesador comercial , el Intel 4004 basado en decimal codificado en binario (BCD) , fue lanzado por Intel en 1971. [1] [2] En marzo de 1972, Intel presentó un microprocesador con una arquitectura de 8 bits , el 8008 , una reimplementación de lógica pMOS integrada de la CPU Datapoint 2200 basada en lógica transistor-transistor (TTL) .

Los diseñadores del 4004, Federico Faggin y Masatoshi Shima, diseñaron el sucesor del 8008, el Intel 8080 , un microprocesador ligeramente más parecido a una minicomputadora , basado en gran medida en los comentarios de los clientes sobre el limitado 8008. Al igual que el 8008, se utilizó para aplicaciones como terminales, impresoras, cajas registradoras y robots industriales. Sin embargo, el 8080, más capaz, también se convirtió en la CPU de destino original para un sistema operativo de computadora personal estándar de facto temprano llamado CP/M y se utilizó para tareas de control tan exigentes como misiles de crucero y muchos otros usos. Lanzado en 1974, el 8080 se convirtió en uno de los primeros microprocesadores realmente extendidos.

A mediados de los años 70, el uso de circuitos integrados en los ordenadores era habitual. La década estuvo marcada por las convulsiones del mercado provocadas por la caída del precio de los transistores.

Se hizo posible colocar una CPU completa en una placa de circuito impreso. El resultado fue que las minicomputadoras, generalmente con palabras de 16 bits y entre 4K y 64K de memoria, se volvieron comunes.

Se creía que los CISC eran los tipos de ordenador más potentes, porque su microcódigo era pequeño y podía almacenarse en una memoria de muy alta velocidad. La arquitectura CISC también abordó la brecha semántica tal como se percibía en ese momento. Se trataba de una distancia definida entre el lenguaje de máquina y los lenguajes de programación de nivel superior utilizados para programar una máquina. Se pensaba que los compiladores podían hacer un mejor trabajo con un conjunto de instrucciones más rico.

Los CISC personalizados se construían comúnmente utilizando lógica informática de rebanada de bits , como los chips AMD 2900, con microcódigo personalizado. Un componente de rebanada de bits es una pieza de una unidad lógica aritmética (ALU), un archivo de registro o un microsecuenciador. La mayoría de los circuitos integrados de rebanada de bits tenían 4 bits de ancho.

A principios de la década de 1970 se desarrolló la minicomputadora PDP-11 de 16 bits , posiblemente la computadora pequeña más avanzada de su época. A fines de la década de 1970 se introdujeron superminicomputadoras de alcance más amplio , como la VAX de 32 bits .

IBM siguió fabricando ordenadores grandes y rápidos, pero la definición de grande y rápido ahora implicaba más de un megabyte de RAM, velocidades de reloj cercanas a un megahertz [3] [4] y decenas de megabytes de unidades de disco.

El System 370 de IBM era una versión del 360 optimizada para ejecutar entornos informáticos virtuales. La computadora virtual se desarrolló para reducir las probabilidades de que se produjera un fallo irrecuperable del software.

La serie de sistemas grandes Burroughs (B5000, B6000, B7000) alcanzó su mayor cuota de mercado. Se trataba de un ordenador apilado cuyo sistema operativo estaba programado en un dialecto de Algol.

Todos estos diferentes desarrollos compitieron por cuota de mercado.

El primer microprocesador de 16 bits en un solo chip se introdujo en 1975. Panafacom , un conglomerado formado por las empresas japonesas Fujitsu , Fuji Electric y Matsushita , introdujo el MN1610, un microprocesador comercial de 16 bits. [5] [6] [7] Según Fujitsu, era "el primer microordenador de 16 bits del mundo en un solo chip". [6]

El Intel 8080 fue la base del Intel 8086 de 16 bits, que es un antecesor directo de la omnipresente familia x86 actual (que incluye Pentium e Intel Core ). Cada instrucción del 8080 tiene un equivalente directo en el gran conjunto de instrucciones x86, aunque los valores de los códigos de operación son diferentes en este último.

Principios de los años 1980 y 1990: Lecciones del RISC

A principios de los años 1980, investigadores de la Universidad de California en Berkeley y de IBM descubrieron que la mayoría de los compiladores e intérpretes de lenguajes informáticos utilizaban sólo un pequeño subconjunto de las instrucciones de computación de conjuntos de instrucciones complejos (CISC). Gran parte de la potencia de la CPU se estaba ignorando en el uso en el mundo real. Se dieron cuenta de que, al hacer que la computadora fuera más sencilla y menos ortogonal, podrían hacerla más rápida y menos costosa al mismo tiempo.

Al mismo tiempo, el cálculo de la CPU se hizo más rápido en relación con el tiempo necesario para acceder a la memoria. Los diseñadores también experimentaron con el uso de grandes conjuntos de registros internos. El objetivo era almacenar en caché los resultados intermedios en los registros bajo el control del compilador. Esto también redujo el número de modos de direccionamiento y la ortogonalidad.

Los diseños informáticos basados ​​en esta teoría se denominaban computación con conjunto de instrucciones reducido (RISC). Los RISC solían tener un mayor número de registros, a los que se accedía mediante instrucciones más sencillas, con unas pocas instrucciones específicas para cargar y almacenar datos en la memoria. El resultado era una CPU de núcleo muy simple que funcionaba a una velocidad muy alta y que admitía el tipo de operaciones que utilizaban los compiladores de todos modos.

Una variante común del diseño RISC emplea la arquitectura Harvard , en contraposición a la arquitectura Von Neumann o arquitectura de programa almacenado común a la mayoría de los demás diseños. En una máquina con arquitectura Harvard, el programa y los datos ocupan dispositivos de memoria separados y se puede acceder a ellos simultáneamente. En las máquinas Von Neumann, los datos y los programas se mezclan en un dispositivo de memoria, lo que requiere un acceso secuencial que produce el llamado cuello de botella Von Neumann .

Una desventaja del diseño RISC era que los programas que se ejecutaban en ellos tendían a ser más grandes. Esto se debe a que los compiladores deben generar secuencias más largas de instrucciones más simples para obtener los mismos resultados. Como estas instrucciones deben cargarse desde la memoria de todos modos, el código más grande contrarresta parte del manejo rápido de la memoria del diseño RISC.

A principios de los años 90, los ingenieros de la japonesa Hitachi encontraron formas de comprimir los conjuntos de instrucciones reducidos para que cupieran en sistemas de memoria aún más pequeños que los CISC. Dichos esquemas de compresión se utilizaron para el conjunto de instrucciones de su serie de microprocesadores SuperH , presentados en 1992. [8] El conjunto de instrucciones SuperH se adaptó posteriormente al conjunto de instrucciones Thumb de la arquitectura ARM . [9] En aplicaciones que no necesitan ejecutar software binario antiguo, los RISC comprimidos están ganando terreno en ventas.

Otro enfoque para los RISC fue el conjunto de instrucciones mínimas (MISC), niládico o conjunto de instrucciones de cero operandos . Este enfoque se dio cuenta de que la mayor parte del espacio en una instrucción se usaba para identificar los operandos de la instrucción. Estas máquinas colocaban los operandos en una pila de inserción (último en entrar, primero en salir) . El conjunto de instrucciones se complementaba con unas pocas instrucciones para buscar y almacenar memoria. La mayoría usaba un almacenamiento en caché simple para proporcionar máquinas RISC extremadamente rápidas, con un código muy compacto. Otro beneficio era que las latencias de interrupción eran muy pequeñas, más pequeñas que la mayoría de las máquinas CISC (un rasgo poco común en las máquinas RISC). La arquitectura de grandes sistemas de Burroughs utilizó este enfoque. El B5000 se diseñó en 1961, mucho antes de que se inventara el término RISC . La arquitectura coloca seis instrucciones de 8 bits en una palabra de 48 bits y fue un precursor del diseño de palabras de instrucción muy largas (VLIW) (ver a continuación: 1990 a la actualidad).

La arquitectura Burroughs fue una de las inspiraciones para el lenguaje de programación Forth de Charles H. Moore , que a su vez inspiró sus diseños posteriores de chips MISC. Por ejemplo, sus núcleos f20 tenían 31 instrucciones de 5 bits, que encajaban cuatro en una palabra de 20 bits.

Los chips RISC dominan actualmente el mercado de los sistemas integrados de 32 bits. Los chips RISC más pequeños son cada vez más comunes incluso en el mercado de los sistemas integrados de 8 bits, donde los costes son muy altos. El mercado principal de las CPU RISC ha sido el de los sistemas que necesitan un bajo consumo de energía o un tamaño reducido.

Incluso algunos procesadores CISC (basados ​​en arquitecturas que se crearon antes de que RISC se volviera dominante), como los procesadores x86 más nuevos , traducen las instrucciones internamente en un conjunto de instrucciones similar a RISC.

Estas cifras pueden sorprender a muchos, porque el mercado se percibe como el de las computadoras de escritorio. Los diseños x86 dominan las ventas de computadoras de escritorio y portátiles, pero estos ordenadores son sólo una pequeña fracción de los ordenadores que se venden actualmente. La mayoría de la gente en los países industrializados posee más computadoras con sistemas integrados en sus coches y casas que en sus escritorios.

Mediados y finales de la década de 1980: Explotación del paralelismo a nivel de instrucción

A mediados y finales de la década de 1980, los diseñadores comenzaron a utilizar una técnica denominada pipeline de instrucciones , en la que el procesador trabaja en múltiples instrucciones en diferentes etapas de finalización. Por ejemplo, el procesador puede recuperar los operandos para la siguiente instrucción mientras calcula el resultado de la instrucción actual. Las CPU modernas pueden utilizar más de una docena de etapas de este tipo. (El pipeline fue desarrollado originalmente a fines de la década de 1950 por International Business Machines (IBM) en su computadora central 7030 (Stretch)). Las computadoras con conjunto mínimo de instrucciones (MISC) pueden ejecutar instrucciones en un ciclo sin necesidad de pipeline.

Una idea similar, introducida tan solo unos años después, fue la de ejecutar múltiples instrucciones en paralelo en unidades lógicas aritméticas (ALU) independientes. En lugar de operar solo con una instrucción a la vez, la CPU buscará varias instrucciones similares que no dependan entre sí y las ejecutará en paralelo. Este enfoque se denomina diseño de procesador superescalar .

Estos métodos están limitados por el grado de paralelismo a nivel de instrucción (ILP), la cantidad de instrucciones no dependientes en el código del programa. Algunos programas pueden ejecutarse muy bien en procesadores superescalares debido a su alto ILP inherente, especialmente los gráficos. Sin embargo, los problemas más generales tienen un ILP mucho menor, lo que reduce las posibles aceleraciones de estos métodos.

La ramificación es uno de los principales culpables. Por ejemplo, un programa puede sumar dos números y pasar a un segmento de código diferente si el número es mayor que un tercer número. En este caso, incluso si la operación de ramificación se envía a la segunda ALU para su procesamiento, aún debe esperar los resultados de la suma. Por lo tanto, no se ejecuta más rápido que si solo hubiera una ALU. La solución más común para este tipo de problema es utilizar un tipo de predicción de ramificación .

Para aumentar la eficiencia de las múltiples unidades funcionales disponibles en los diseños superescalares , se descubrió que las dependencias de los registros de operandos eran otro factor limitante. Para minimizar estas dependencias, se introdujo la ejecución desordenada de instrucciones. En este esquema, los resultados de las instrucciones que se completan desordenadamente deben ser reordenados por el procesador en el orden del programa para que el programa pueda reiniciarse después de una excepción. La ejecución desordenada fue el principal avance de la industria informática durante la década de 1990.

Un concepto similar es la ejecución especulativa , en la que las instrucciones de una dirección de una rama (la dirección predicha) se ejecutan antes de que se conozca la dirección de la rama. Cuando se conoce la dirección de la rama, se comparan la dirección predicha y la dirección real. Si la dirección predicha era correcta, se conservan las instrucciones ejecutadas especulativamente y sus resultados; si era incorrecta, se borran estas instrucciones y sus resultados. La ejecución especulativa, junto con un predictor de rama preciso, proporciona una gran ganancia de rendimiento.

Estos avances, que originalmente se desarrollaron a partir de investigaciones para diseños de estilo RISC, permiten que los procesadores CISC modernos ejecuten doce o más instrucciones por ciclo de reloj, cuando los diseños CISC tradicionales podían necesitar doce o más ciclos para ejecutar una instrucción.

La lógica de programación de instrucciones resultante de estos procesadores es grande, compleja y difícil de verificar. Además, una mayor complejidad requiere más transistores, lo que aumenta el consumo de energía y el calor. En estos casos, RISC es superior porque las instrucciones son más simples, tienen menos interdependencia y facilitan las implementaciones superescalares. Sin embargo, como ha demostrado Intel, los conceptos se pueden aplicar a un diseño de computación con conjunto de instrucciones complejo (CISC), si se dispone de suficiente tiempo y dinero.

De 1990 a hoy: mirando hacia el futuro

VLIW y EPIC

La lógica de programación de instrucciones que crea un procesador superescalar es la lógica booleana . A principios de los años 1990, una innovación significativa fue darse cuenta de que la coordinación de una computadora con múltiples ALU podía trasladarse al compilador , el software que traduce las instrucciones de un programador en instrucciones a nivel de máquina.

Este tipo de computadora se llama computadora de palabra de instrucción muy larga (VLIW).

La programación estática de instrucciones en el compilador (en lugar de la programación dinámica en el procesador) puede reducir la complejidad de la CPU, lo que puede mejorar el rendimiento y reducir el calor y los costos.

Lamentablemente, el compilador carece de un conocimiento preciso de los problemas de programación en tiempo de ejecución. El simple cambio del multiplicador de frecuencia del núcleo de la CPU tendrá un efecto en la programación. El funcionamiento del programa, según lo determinado por los datos de entrada, tendrá efectos importantes en la programación. Para superar estos graves problemas, se puede mejorar un sistema VLIW añadiendo la programación dinámica normal, perdiendo algunas de las ventajas de VLIW.

La programación estática en el compilador también supone que el código generado dinámicamente será poco común. Antes de la creación de Java y la máquina virtual Java , esto era así. Era razonable suponer que las compilaciones lentas solo afectarían a los desarrolladores de software. Ahora, con el uso de máquinas virtuales de compilación justo a tiempo (JIT) para muchos lenguajes, la generación lenta de código también afecta a los usuarios.

Hubo varios intentos fallidos de comercializar VLIW. El problema básico es que una computadora VLIW no se adapta a diferentes niveles de precio y rendimiento, como puede hacerlo una computadora programada dinámicamente. Otro problema es que el diseño de compiladores para computadoras VLIW es muy difícil y, a partir de 2005, los compiladores suelen emitir código subóptimo para estas plataformas.

Además, las computadoras VLIW están optimizadas para el rendimiento, no para la baja latencia, por lo que no eran atractivas para los ingenieros que diseñaban controladores y otras computadoras integradas en maquinaria. Los mercados de sistemas integrados a menudo habían sido pioneros en otras mejoras informáticas al proporcionar un gran mercado al que no le preocupaba la compatibilidad con software más antiguo.

En enero de 2000, Transmeta Corporation adoptó la novedosa medida de colocar un compilador en la unidad central de procesamiento y hacer que el compilador traduzca desde un código de bytes de referencia (en su caso, instrucciones x86 ) a un conjunto de instrucciones VLIW interno. Este método combina la simplicidad del hardware, el bajo consumo y la velocidad de VLIW RISC con el sistema de memoria principal compacto y la compatibilidad inversa del software que ofrece el popular CISC.

El chip Itanium de Intel se basa en lo que ellos llaman un diseño de computación de instrucciones explícitamente paralelas (EPIC). Este diseño supuestamente proporciona la ventaja de VLIW de un mayor rendimiento de las instrucciones. Sin embargo, evita algunos de los problemas de escalabilidad y complejidad, al proporcionar explícitamente en cada paquete de instrucciones información sobre sus dependencias. Esta información es calculada por el compilador, como sería en un diseño VLIW. Las primeras versiones también son compatibles con versiones anteriores del software x86 más reciente mediante un modo de emulador en el chip . El rendimiento de los números enteros fue decepcionante y, a pesar de las mejoras, las ventas en los mercados de volumen siguen siendo bajas.

Multi-hilo

Los diseños actuales [¿ cuándo? ] funcionan mejor cuando la computadora ejecuta un solo programa. Sin embargo, casi todos los sistemas operativos modernos permiten ejecutar varios programas a la vez. Para que la CPU cambie y trabaje en otro programa, se necesita un costoso cambio de contexto . Por el contrario, las CPU multiproceso pueden procesar instrucciones de varios programas a la vez.

Para ello, estas CPU incluyen varios conjuntos de registros. Cuando se produce un cambio de contexto, el contenido de los registros de trabajo simplemente se copia en uno de un conjunto de registros destinados a este fin.

Estos diseños suelen incluir miles de registros en lugar de cientos como en un diseño típico. El inconveniente es que los registros suelen ser algo costosos en cuanto al espacio en chip necesario para implementarlos. Este espacio en chip podría utilizarse para otro propósito.

Intel llama a esta tecnología "hyperthreading" y ofrece dos subprocesos por núcleo en su línea actual Core i3, Core i5, Core i7 y Core i9 Desktop (así como en su línea Core i3, Core i5 y Core i7 Mobile), además de ofrecer hasta cuatro subprocesos por núcleo en los procesadores Xeon Phi de alta gama.

Multi-núcleo

Las CPU multinúcleo son típicamente múltiples núcleos de CPU en el mismo chip, conectados entre sí a través de una caché L2 o L3 compartida, un bus en el chip o un conmutador de barra cruzada en el chip . Todos los núcleos de CPU en el chip comparten componentes de interconexión con los que interactuar con otros procesadores y el resto del sistema. Estos componentes pueden incluir una interfaz de bus frontal , un controlador de memoria para interactuar con la memoria de acceso aleatorio dinámico (DRAM), un enlace coherente de caché a otros procesadores y un enlace no coherente al puente sur y los dispositivos de E/S. Los términos multinúcleo y unidad de microprocesador (MPU) se han vuelto de uso general para una matriz que tiene múltiples núcleos de CPU.

RAM inteligente

Una forma de solucionar el cuello de botella de Von Neumann es mezclar un procesador y una DRAM en un solo chip.

Lógica reconfigurable

Otra vía de desarrollo es combinar la lógica reconfigurable con una CPU de propósito general. En este esquema, un lenguaje de computadora especial compila subrutinas de ejecución rápida en una máscara de bits para configurar la lógica. Las partes más lentas o menos críticas del programa se pueden ejecutar compartiendo su tiempo en la CPU. Este proceso permite crear dispositivos como radios de software , mediante el uso del procesamiento de señales digitales para realizar funciones que generalmente realizan los dispositivos electrónicos analógicos .

Procesadores de código abierto

A medida que las fronteras entre hardware y software se difuminan cada vez más debido al progreso en la metodología de diseño y la disponibilidad de chips como las matrices de puertas programables en campo (FPGA) y los procesos de producción más económicos, incluso el hardware de código abierto ha comenzado a aparecer. Comunidades poco unidas como OpenCores y RISC-V han anunciado recientemente arquitecturas de CPU totalmente abiertas como OpenRISC, que pueden implementarse fácilmente en FPGA o en chips producidos a medida, por cualquier persona, sin pagar licencias, e incluso fabricantes de procesadores establecidos como Sun Microsystems han publicado diseños de procesadores (por ejemplo, OpenSPARC ) bajo licencias de código abierto.

CPU asincrónicas

Otra opción es una CPU sin reloj o asincrónica . A diferencia de los procesadores convencionales, los procesadores sin reloj no tienen un reloj central para coordinar el progreso de los datos a través de la tubería. En cambio, las etapas de la CPU se coordinan mediante dispositivos lógicos llamados controles de tubería o secuenciadores FIFO . Básicamente, el controlador de tubería sincroniza la siguiente etapa de la lógica cuando se completa la etapa existente. Por lo tanto, no se necesita un reloj central.

En relación con la lógica sincronizada, puede ser más fácil implementar dispositivos de alto rendimiento en lógica asincrónica:

  • En una CPU con reloj, ningún componente puede funcionar a una velocidad superior a la establecida por el reloj. En una CPU sin reloj, los componentes pueden funcionar a distintas velocidades.
  • En una CPU con reloj, el reloj no puede funcionar más rápido que el rendimiento en el peor de los casos de la etapa más lenta. En una CPU sin reloj, cuando una etapa termina más rápido de lo normal, la siguiente etapa puede tomar los resultados inmediatamente en lugar de esperar al siguiente tic del reloj. Una etapa puede terminar más rápido de lo normal debido al tipo de entradas de datos (por ejemplo, la multiplicación puede ser muy rápida si se produce por 0 o 1), o porque está funcionando a un voltaje más alto o a una temperatura más baja de lo normal.

Los defensores de la lógica asincrónica creen que estas capacidades tendrían los siguientes beneficios:

  • menor disipación de potencia para un rendimiento determinado
  • velocidades de ejecución más altas posibles

La mayor desventaja de la CPU sin reloj es que la mayoría de las herramientas de diseño de CPU asumen una CPU con reloj (un circuito sincrónico ), por lo que hacer una CPU sin reloj (diseñar un circuito asincrónico ) implica modificar las herramientas de diseño para manejar la lógica sin reloj y realizar pruebas adicionales para garantizar que el diseño evite problemas de metaestabilidad .

Aun así, se han construido varias CPU asincrónicas, incluidas

Comunicación óptica

En teoría, los componentes de una computadora óptica podrían conectarse directamente a través de un sistema de conmutación holográfico o por fases al aire libre. Esto proporcionaría un gran aumento en la velocidad efectiva y la flexibilidad de diseño, y una gran reducción en el costo. Dado que los conectores de una computadora también son sus puntos de falla más probables, un sistema sin bus puede ser más confiable.

Además, a partir de 2010, los procesadores modernos utilizan lógica de 64 o 128 bits. La superposición de longitudes de onda ópticas podría permitir líneas de datos y lógica de muchos órdenes de magnitud superiores a los de la electrónica, sin necesidad de espacio adicional ni cables de cobre.

Procesadores ópticos

Otra opción a largo plazo es utilizar luz en lugar de electricidad para la lógica digital. En teoría, esto podría funcionar un 30% más rápido y consumir menos energía, y permitir una interfaz directa con dispositivos de computación cuántica. [ cita requerida ]

Los principales problemas de este enfoque son que, en el futuro previsible, los elementos de computación electrónicos serán más rápidos, más pequeños, más baratos y más confiables. Dichos elementos ya son más pequeños que algunas longitudes de onda de la luz. Por lo tanto, incluso la lógica óptica basada en guías de ondas puede resultar poco económica en comparación con la lógica electrónica. A partir de 2016, la mayor parte del esfuerzo de desarrollo se destinará a circuitos electrónicos.

Procesadores iónicos

Se han realizado trabajos experimentales tempranos sobre el uso de reacciones químicas basadas en iones en lugar de acciones electrónicas o fotónicas para implementar elementos de un procesador lógico.

Arquitectura de máquinas de banda

En relación con la arquitectura convencional de máquinas de registro o máquinas de pila , pero similar a la arquitectura Itanium de Intel , [12] Ivan Godard y compañía propusieron un esquema de direccionamiento de registros temporales que pretende reducir en gran medida la complejidad del hardware de la CPU (específicamente la cantidad de registros internos y los enormes árboles multiplexores resultantes). [13] Si bien es un poco más difícil de leer y depurar que los nombres de registros de propósito general, ayuda a la comprensión ver la cinta como una cinta transportadora en movimiento donde los valores más antiguos se caen de la cinta y desaparecen. Se implementa en la arquitectura Mill.

Cronología de los acontecimientos

Véase también

Referencias

  1. ^ de Nigel Tout. "La calculadora Busicom 141-PF y el microprocesador Intel 4004" . Consultado el 15 de noviembre de 2009 .
  2. ^ Aspray, William (25 de mayo de 1994). "Historia oral: Tadashi Sasaki". Wiki de Historia de la Ingeniería y la Tecnología . The Institute of Electrical and Electronics Engineers, Inc. Consultado el 14 de septiembre de 2022 .
  3. ^ Caswell, Wayne (18 de febrero de 2008). "Veinte tendencias tecnológicas que afectan a las redes domésticas". Juguetes para el hogar . Archivado desde el original el 27 de marzo de 2016.
  4. ^ "La estructura de SYSTEM/360". Estructuras informáticas: principios y ejemplos .
  5. ^ "Microprocesadores de 16 bits". Museo de la CPU . Consultado el 5 de octubre de 2010 .
  6. ^ ab "Historia". PFU . Consultado el 5 de octubre de 2010 .
  7. ^ PANAFACOM Lkit-16, Sociedad de procesamiento de información de Japón
  8. ^ ab "Hitachi lanza la serie SH-4 SH7750, que ofrece el mayor rendimiento de la industria de 360 ​​MIPS para un procesador RISC integrado, como serie de gama alta de la familia SuperH".
  9. ^ abc Nathan Willis (10 de junio de 2015). "Resucitando la arquitectura SuperH". LWN.net .
  10. ^ MiniMIPS
  11. ^ "Descripción general de SEAforth". Archivado desde el original el 2 de febrero de 2008. ... diseño de circuito asincrónico en todo el chip. No hay un reloj central con miles de millones de nodos tontos que disipan energía inútil. ... los núcleos del procesador son asincrónicos en sí mismos.
  12. ^ "Arquitectura y organización de los procesadores RISC COMP375" (PDF) . Archivado desde el original (PDF) el 26 de octubre de 2017.
  13. ^ "El Cinturón".
  14. ^ de Federico Faggin , La creación del primer microprocesador, IEEE Solid-State Circuits Magazine , invierno de 2009, IEEE Xplore
  15. ^ ab "NEC 751 (uCOM-4)". La página del coleccionista de chips antiguos. Archivado desde el original el 25 de mayo de 2011. Consultado el 11 de junio de 2010 .
  16. ^ ab 1970年代 マイコンの開発と発展 ~集積回路, Museo de Historia de Semiconductores de Japón
  17. ^ Jeffrey A. Hart y Sangbae Kim (2001), La defensa de los derechos de propiedad intelectual en el orden global de la información, Asociación de Estudios Internacionales, Chicago
  18. ^ Manual de referencia técnica ARM7TDMI página ii
  19. ^ Segars, Simon (27 de febrero de 2017). "Habilitación de la conectividad masiva de IoT a medida que los socios de ARM envían 100 mil millones de chips" . Consultado el 6 de septiembre de 2021 .
  20. ^ Clover Juli (13 de octubre de 2022). "Chip M1 de Apple: todo lo que necesitas saber". MacRumors . Consultado el 21 de julio de 2024 .
  21. ^ Takahashi, Dean (30 de marzo de 2021). "Armv9 es la primera actualización arquitectónica importante de Arm en una década". VentureBeat . Consultado el 6 de septiembre de 2021 .
  22. ^ Shilov, Anton (20 de octubre de 2021). "Se enviaron más de 200 mil millones de chips basados ​​en ARM" . Consultado el 16 de septiembre de 2022 .
  23. ^ "Lista TOP500 - Junio ​​2022". Junio ​​2022 . Consultado el 30 de mayo de 2022 .
  24. ^ Larabel Michael (15 de junio de 2024). "Compatibilidad con Apple M4 añadida al compilador LLVM, lo que confirma sus capacidades ISA". Phoronix . Consultado el 21 de julio de 2024 .
  • Grandes momentos en la historia de los microprocesadores por W. Warner, 2004
  • Grandes microprocesadores del pasado y del presente (V 13.4.0) por: John Bayko, 2003
  • Bit by Bit: An Illustrated History of Computers , Stan Augarten, 1984. OCR con permiso del autor.
  • Galería de CPU y PCB relacionadas (en italiano) [1]
Retrieved from "https://en.wikipedia.org/w/index.php?title=History_of_general-purpose_CPUs&oldid=1246867333#Belt_machine_architecture"