
En electrónica , informática e ingeniería informática , la microarquitectura , también llamada organización de computadoras y a veces abreviada como μarch o uarch , es la forma en que una arquitectura de conjunto de instrucciones (ISA) determinada se implementa en un procesador particular . [ 1 ] Una ISA determinada puede implementarse con diferentes microarquitecturas; [ 2 ] [ 3 ] las implementaciones pueden variar debido a diferentes objetivos de un diseño determinado o debido a cambios en la tecnología. [ 4 ]
La arquitectura de computadoras es la combinación de la microarquitectura y la arquitectura del conjunto de instrucciones.
Relación con la arquitectura del conjunto de instrucciones

La arquitectura del conjunto de instrucciones ( ISA) es, a grandes rasgos, el modelo de programación de un procesador visto desde la perspectiva de un programador de lenguaje ensamblador o un desarrollador de compiladores. La ISA incluye las instrucciones , el modelo de ejecución , los registros del procesador , los formatos de direcciones y datos, entre otros elementos. La microarquitectura comprende las partes que componen el procesador y cómo estas se interconectan e interactúan para implementar la ISA.
La microarquitectura de una máquina se suele representar mediante diagramas (más o menos detallados) que describen las interconexiones de los diversos elementos microarquitectónicos de la máquina, que pueden ser desde puertas lógicas y registros individuales hasta unidades aritmético-lógicas (ALU) completas e incluso elementos de mayor tamaño. Estos diagramas generalmente separan la ruta de datos (donde se almacenan los datos) y la ruta de control (que se encarga de dirigir los datos). [ 5 ]
La persona que diseña un sistema suele dibujar la microarquitectura específica como una especie de diagrama de flujo de datos . Al igual que un diagrama de bloques , el diagrama de microarquitectura muestra elementos microarquitectónicos como la unidad aritmético-lógica y el banco de registros como un único símbolo esquemático. Normalmente, el diagrama conecta estos elementos con flechas, líneas gruesas y finas para distinguir entre buses de tres estados (que requieren un búfer de tres estados para cada dispositivo que controla el bus), buses unidireccionales (siempre controlados por una única fuente, como el bus de direcciones en ordenadores más sencillos, que siempre es controlado por el registro de direcciones de memoria ) y líneas de control individuales. Los ordenadores muy sencillos tienen una única organización de bus de datos : un único bus de tres estados . El diagrama de ordenadores más complejos suele mostrar varios buses de tres estados, que permiten a la máquina realizar más operaciones simultáneamente.
Cada elemento microarquitectónico se representa mediante un esquema que describe las interconexiones de las compuertas lógicas utilizadas para su implementación. Cada compuerta lógica se representa a su vez mediante un diagrama de circuito que describe las conexiones de los transistores utilizados para su implementación en una familia lógica específica . Las máquinas con diferentes microarquitecturas pueden tener la misma arquitectura de conjunto de instrucciones y, por lo tanto, ser capaces de ejecutar los mismos programas. Las nuevas microarquitecturas y/o soluciones de circuitos, junto con los avances en la fabricación de semiconductores, son las que permiten a las nuevas generaciones de procesadores alcanzar un mayor rendimiento utilizando la misma arquitectura de conjunto de instrucciones.
En principio, una única microarquitectura podría ejecutar varias arquitecturas de conjunto de instrucciones (ISA) diferentes con solo pequeños cambios en el microcódigo .
Aspectos

La ruta de datos segmentada es el diseño de ruta de datos más utilizado en la microarquitectura actual. Esta técnica se emplea en la mayoría de los microprocesadores, microcontroladores y DSP modernos . La arquitectura segmentada permite que múltiples instrucciones se ejecuten simultáneamente, de forma similar a una cadena de montaje. La segmentación incluye varias etapas fundamentales en el diseño de microarquitecturas. [ 5 ] Algunas de estas etapas incluyen la búsqueda, decodificación, ejecución y escritura de instrucciones. Algunas arquitecturas incluyen otras etapas, como el acceso a memoria. El diseño de segmentaciones es una de las tareas centrales de la microarquitectura.
Las unidades de ejecución también son esenciales para la microarquitectura. Estas unidades incluyen unidades aritmético-lógicas (ALU), unidades de punto flotante (FPU), unidades de carga/almacenamiento, predicción de bifurcaciones y SIMD . Dichas unidades realizan las operaciones o cálculos del procesador. La elección del número de unidades de ejecución, su latencia y rendimiento es una tarea fundamental del diseño microarquitectónico. El tamaño, la latencia, el rendimiento y la conectividad de las memorias dentro del sistema también son decisiones microarquitectónicas.
Las decisiones de diseño a nivel de sistema, como la inclusión o no de periféricos (por ejemplo, controladores de memoria ), pueden considerarse parte del proceso de diseño microarquitectónico. Esto incluye decisiones sobre el rendimiento y la conectividad de dichos periféricos.
A diferencia del diseño arquitectónico, donde el objetivo principal es alcanzar un nivel de rendimiento específico, el diseño microarquitectónico presta mayor atención a otras limitaciones. Dado que las decisiones de diseño microarquitectónico afectan directamente a los componentes del sistema, es fundamental considerar aspectos como el área y el coste del chip, el consumo energético, la complejidad lógica, la facilidad de conectividad, la capacidad de fabricación, la facilidad de depuración y la facilidad de prueba.
Conceptos microarquitectónicos
ciclos de instrucción
Para ejecutar programas, todas las CPU de uno o varios chips:
- Lee una instrucción y decodifícala.
- Busque cualquier dato asociado que sea necesario para procesar la instrucción.
- Procesar la instrucción
- Escribe los resultados
El ciclo de instrucciones se repite continuamente hasta que se apaga la alimentación.
microarquitectura multiciclo
Históricamente, los primeros ordenadores se basaban en diseños multiciclo. Los ordenadores más pequeños y económicos a menudo siguen utilizando esta técnica. Las arquitecturas multiciclo suelen emplear el menor número total de elementos lógicos y un consumo energético razonable. Se pueden diseñar para ofrecer una sincronización determinista y una alta fiabilidad. En particular, no presentan segmentación que pueda bloquearse al ejecutar bifurcaciones condicionales o interrupciones. Sin embargo, otras microarquitecturas suelen ejecutar más instrucciones por unidad de tiempo, utilizando la misma familia lógica. Al hablar de "mejora del rendimiento", esta mejora suele ser relativa a un diseño multiciclo.
En una computadora multiciclo, la computadora realiza los cuatro pasos en secuencia, a lo largo de varios ciclos del reloj. Algunos diseños pueden realizar la secuencia en dos ciclos de reloj completando las etapas sucesivas en flancos alternos, posiblemente con operaciones más largas que se realicen fuera del ciclo principal. Por ejemplo, la primera etapa en el flanco ascendente del primer ciclo, la segunda etapa en el flanco descendente del primer ciclo, etc.
En la lógica de control, la combinación del contador de ciclos, el estado del ciclo (alto o bajo) y los bits del registro de decodificación de instrucciones determinan con precisión qué debe hacer cada parte del ordenador. Para diseñar la lógica de control, se puede crear una tabla de bits que describa las señales de control para cada parte del ordenador en cada ciclo de cada instrucción. A continuación, esta tabla lógica se puede probar en una simulación de software ejecutando código de prueba. Si la tabla lógica se coloca en la memoria y se utiliza para ejecutar un ordenador real, se denomina microprograma . En algunos diseños de ordenadores, la tabla lógica se optimiza en forma de lógica combinacional formada por puertas lógicas, generalmente mediante un programa informático que optimiza la lógica. Los primeros ordenadores utilizaban un diseño lógico ad hoc para el control hasta que Maurice Wilkes inventó este enfoque tabular y lo denominó microprogramación. [ 6 ]
Aumentar la velocidad de ejecución
Lo que complica esta serie de pasos aparentemente simples es el hecho de que la jerarquía de memoria, que incluye la caché , la memoria principal y el almacenamiento no volátil como los discos duros (donde residen las instrucciones del programa y los datos), siempre ha sido más lenta que el propio procesador. El paso (2) a menudo introduce un retraso prolongado (en términos de CPU) mientras los datos llegan a través del bus de la computadora . Se ha invertido una cantidad considerable de investigación en diseños que eviten estos retrasos en la medida de lo posible. A lo largo de los años, un objetivo central ha sido ejecutar más instrucciones en paralelo, aumentando así la velocidad de ejecución efectiva de un programa. Estos esfuerzos introdujeron estructuras lógicas y de circuitos complejas. Inicialmente, estas técnicas solo podían implementarse en costosos mainframes o supercomputadoras debido a la cantidad de circuitos necesarios para estas técnicas. A medida que progresó la fabricación de semiconductores, cada vez más de estas técnicas pudieron implementarse en un solo chip semiconductor. Véase la ley de Moore .
Selección del conjunto de instrucciones
Los conjuntos de instrucciones han evolucionado a lo largo de los años, pasando de ser muy simples a, en ocasiones, muy complejos (en diversos aspectos). En los últimos años, las arquitecturas de carga-almacenamiento , VLIW y EPIC se han puesto de moda. Entre las arquitecturas que manejan paralelismo de datos se incluyen SIMD y Vectors . Algunas etiquetas utilizadas para designar clases de arquitecturas de CPU no son particularmente descriptivas, especialmente la etiqueta CISC; muchos diseños antiguos, denominados retroactivamente como " CISC ", son, de hecho, significativamente más simples que los procesadores RISC modernos (en varios aspectos).
Sin embargo, la elección de la arquitectura del conjunto de instrucciones puede afectar significativamente la complejidad de la implementación de dispositivos de alto rendimiento. La estrategia predominante, utilizada para desarrollar los primeros procesadores RISC, consistió en simplificar las instrucciones hasta minimizar su complejidad semántica individual, combinándola con una alta regularidad y simplicidad en la codificación. Estas instrucciones uniformes se podían obtener, decodificar y ejecutar fácilmente de forma segmentada, y se empleó una estrategia sencilla para reducir el número de niveles lógicos y alcanzar altas frecuencias de operación. Las memorias caché de instrucciones compensaban la mayor frecuencia de operación y la baja densidad de código inherente , mientras que se utilizaban grandes conjuntos de registros para minimizar al máximo los accesos a memoria (que suelen ser lentos).
canalización de instrucciones
Una de las primeras y más eficaces técnicas para mejorar el rendimiento es el uso de la segmentación de instrucciones . Los primeros diseños de procesadores ejecutaban todos los pasos anteriores para una instrucción antes de pasar a la siguiente. Grandes partes del circuito permanecían inactivas en cada paso; por ejemplo, el circuito de decodificación de instrucciones permanecía inactivo durante la ejecución, y así sucesivamente.
Pipelining improves performance by allowing a number of instructions to work their way through the processor at the same time. In the same basic example, the processor would start to decode (step 1) a new instruction while the last one was waiting for results. This would allow up to four instructions to be "in flight" at one time, making the processor look four times as fast. Although any one instruction takes just as long to complete (there are still four steps) the CPU as a whole "retires" instructions much faster.
RISC reduce el tamaño de las tuberías y facilita su construcción al separar claramente cada etapa del proceso de instrucción y hacer que todas duren el mismo tiempo: un ciclo. El procesador en su conjunto funciona como una cadena de montaje , con las instrucciones entrando por un lado y los resultados saliendo por el otro. Gracias a la menor complejidad de la tubería RISC clásica , el núcleo segmentado y la caché de instrucciones podían ubicarse en el mismo chip que, en un diseño CISC, solo albergaría el núcleo. Esta fue la verdadera razón por la que RISC era más rápido. Los primeros diseños, como SPARC y MIPS, a menudo funcionaban más de 10 veces más rápido que las soluciones CISC de Intel y Motorola a la misma velocidad de reloj y precio.
Las arquitecturas de segmentación no se limitan en absoluto a los diseños RISC. En 1986, la implementación de gama alta de VAX ( VAX 8800 ) ya contaba con un diseño altamente segmentado, anticipándose ligeramente a los primeros diseños comerciales MIPS y SPARC. La mayoría de las CPU modernas (incluso las integradas) utilizan ahora segmentación, y las CPU con microcódigo sin segmentación solo se encuentran en los procesadores integrados con mayores limitaciones de espacio. Las grandes máquinas CISC, desde la VAX 8800 hasta los modernos procesadores Intel y AMD, se implementan con microcódigo y segmentación. Las mejoras en la segmentación y el almacenamiento en caché son los dos principales avances microarquitectónicos que han permitido que el rendimiento de los procesadores se mantenga a la par con la tecnología de circuitos en la que se basan.
Cache
Poco después, las mejoras en la fabricación de chips permitieron integrar aún más circuitos en el chip , y los diseñadores comenzaron a buscar formas de aprovecharlos. Una de las más comunes fue añadir una cantidad cada vez mayor de memoria caché en el chip. La caché es una memoria muy rápida y costosa. Se puede acceder a ella en pocos ciclos, a diferencia de los muchos necesarios para comunicarse con la memoria principal. La CPU incluye un controlador de caché que automatiza la lectura y escritura en la caché. Si los datos ya están en la caché, se accede a ellos desde allí, lo que supone un ahorro de tiempo considerable; si no lo están, el procesador se detiene mientras el controlador de caché los lee.
Los diseños RISC comenzaron a incorporar caché a mediados y finales de la década de 1980, a menudo con tan solo 4 KB en total. Esta cantidad aumentó con el tiempo, y actualmente las CPU típicas cuentan con al menos 2 MB, mientras que las más potentes incluyen 4, 6, 12 MB o incluso 32 MB o más, llegando a los 768 MB de la recién lanzada línea EPYC Milan-X, organizada en múltiples niveles de jerarquía de memoria . En general, una mayor cantidad de caché se traduce en un mejor rendimiento, debido a la reducción de los bloqueos.
Las cachés y las tuberías se complementaban a la perfección. Anteriormente, no tenía mucho sentido construir una tubería que pudiera funcionar más rápido que la latencia de acceso de la memoria externa. En cambio, al usar memoria caché integrada, la tubería podía funcionar a la velocidad de la latencia de acceso de la caché, un tiempo mucho menor. Esto permitió que las frecuencias de operación de los procesadores aumentaran a un ritmo mucho mayor que el de la memoria externa.
Predicción de ramificaciones
Una de las barreras para lograr un mayor rendimiento mediante el paralelismo a nivel de instrucción proviene de las pausas y vaciados de la tubería debido a las bifurcaciones. Normalmente, no se sabe si se tomará una bifurcación condicional hasta bien avanzada la tubería, ya que las bifurcaciones condicionales dependen de los resultados de un registro. Desde el momento en que el decodificador de instrucciones del procesador determina que ha encontrado una instrucción de bifurcación condicional hasta que se puede leer el valor del registro decisivo, la tubería debe permanecer pausada durante varios ciclos; si no lo está y se toma la bifurcación, la tubería debe vaciarse. A medida que aumenta la velocidad del reloj, también aumenta la profundidad de la tubería, y algunos procesadores modernos pueden tener 20 etapas o más. En promedio, una de cada cinco instrucciones ejecutadas es una bifurcación, por lo que, sin ninguna intervención, esto representa una gran cantidad de pausas.
Técnicas como la predicción de bifurcaciones y la ejecución especulativa se utilizan para reducir estas penalizaciones. La predicción de bifurcaciones consiste en que el hardware realiza suposiciones fundamentadas sobre si se tomará una bifurcación en particular. En realidad, una de las ramas se ejecutará con mucha más frecuencia que la otra. Los diseños modernos cuentan con sistemas de predicción estadística bastante complejos, que analizan los resultados de bifurcaciones anteriores para predecir el futuro con mayor precisión. Esta suposición permite al hardware precargar instrucciones sin esperar a que se lea el registro. La ejecución especulativa es una mejora adicional en la que el código a lo largo de la ruta predicha no solo se precarga, sino que también se ejecuta antes de saber si se debe tomar la bifurcación o no. Esto puede ofrecer un mejor rendimiento cuando la suposición es correcta, con el riesgo de una penalización considerable cuando la suposición es incorrecta, ya que es necesario deshacer las instrucciones.
Superescalar
A pesar de toda la complejidad adicional y las compuertas lógicas necesarias para respaldar los conceptos descritos anteriormente, las mejoras en la fabricación de semiconductores pronto permitieron el uso de aún más compuertas lógicas.
En el esquema anterior, el procesador procesa partes de una sola instrucción a la vez. Los programas informáticos podrían ejecutarse más rápido si se procesaran varias instrucciones simultáneamente. Esto es lo que logran los procesadores superescalares , mediante la replicación de unidades funcionales como las ALU. La replicación de unidades funcionales solo fue posible cuando el área del chip de un procesador de una sola emisión dejó de superar los límites de lo que se podía fabricar de forma fiable. A finales de la década de 1980, los diseños superescalares comenzaron a llegar al mercado.
En los diseños modernos, es común encontrar dos unidades de carga, una de almacenamiento (muchas instrucciones no generan resultados), dos o más unidades de cálculo de enteros, dos o más unidades de punto flotante y, a menudo, una unidad SIMD . La lógica de emisión de instrucciones aumenta en complejidad al leer una enorme lista de instrucciones de la memoria y distribuirlas entre las distintas unidades de ejecución que se encuentran inactivas en ese momento. Los resultados se recopilan y reordenan al final.
Ejecución fuera de orden
La adición de cachés reduce la frecuencia o duración de las pausas debidas a la espera de datos en la jerarquía de memoria, pero no las elimina por completo. En los primeros diseños, un fallo de caché obligaba al controlador de caché a detener el procesador y esperar. Por supuesto, podría haber otra instrucción en el programa cuyos datos estuvieran disponibles en la caché en ese momento. La ejecución fuera de orden permite procesar esa instrucción lista mientras una instrucción anterior espera en la caché, y luego reordena los resultados para que parezca que todo sucedió en el orden programado. Esta técnica también se utiliza para evitar otras pausas por dependencia de operandos, como una instrucción que espera el resultado de una operación de punto flotante de larga latencia u otras operaciones de varios ciclos.
Cambio de nombre del registro
El cambio de nombre de registros se refiere a una técnica utilizada para evitar la ejecución serializada innecesaria de instrucciones de programa debido a la reutilización de los mismos registros por dichas instrucciones. Supongamos que tenemos dos grupos de instrucciones que usarán el mismo registro . Un conjunto de instrucciones se ejecuta primero para dejar el registro al otro conjunto, pero si el otro conjunto se asigna a un registro similar diferente, ambos conjuntos de instrucciones pueden ejecutarse en paralelo o en serie.
Multiprocesamiento y multihilo
Los arquitectos informáticos se han visto obstaculizados por la creciente discrepancia entre las frecuencias de operación de la CPU y los tiempos de acceso a la DRAM . Ninguna de las técnicas que aprovechaban el paralelismo a nivel de instrucción (ILP) dentro de un mismo programa podía compensar las largas pausas que se producían al recuperar datos de la memoria principal. Además, la gran cantidad de transistores y las altas frecuencias de operación necesarias para las técnicas ILP más avanzadas requerían niveles de disipación de potencia que ya no podían refrigerarse de forma económica. Por estas razones, las nuevas generaciones de ordenadores han comenzado a aprovechar niveles superiores de paralelismo que existen fuera de un único programa o hilo de ejecución .
Esta tendencia se conoce a veces como computación de alto rendimiento . Esta idea surgió en el mercado de las computadoras centrales, donde el procesamiento de transacciones en línea hacía hincapié no solo en la velocidad de ejecución de una transacción, sino también en la capacidad de gestionar un gran número de ellas. Con el auge de las aplicaciones basadas en transacciones, como el enrutamiento de redes y el alojamiento web, durante la última década, la industria informática ha vuelto a poner énfasis en la capacidad y el rendimiento.
Una técnica para lograr este paralelismo es mediante sistemas multiprocesador , sistemas informáticos con múltiples CPU. Si bien antes estaban reservados para mainframes y supercomputadoras de alta gama , los servidores multiprocesador de pequeña escala (2-8) se han vuelto comunes en el mercado de las pequeñas empresas. Para las grandes corporaciones, los multiprocesadores de gran escala (16-256) son habituales. Incluso las computadoras personales con múltiples CPU han aparecido desde la década de 1990.
Gracias a las reducciones en el tamaño de los transistores que permiten los avances en la tecnología de semiconductores, han surgido las CPU multinúcleo , donde se implementan múltiples procesadores en el mismo chip de silicio. Inicialmente se utilizaron en chips para sistemas embebidos, donde las CPU más simples y pequeñas permitían integrar múltiples instancias en un solo chip. Para 2005, la tecnología de semiconductores permitió la fabricación en masa de chips CMP ( CPU duales de gama alta para ordenadores de sobremesa ). Algunos diseños, como el UltraSPARC T1 de Sun Microsystems , han vuelto a diseños más simples (escalares, secuenciales) para poder integrar más procesadores en un solo chip.
Otra técnica que se ha popularizado recientemente es la multihilo . En la multihilo, cuando el procesador necesita obtener datos de la memoria del sistema, que es lenta, en lugar de esperar a que lleguen los datos, cambia a otro programa o hilo de ejecución que esté listo para ejecutarse. Si bien esto no acelera un programa o hilo en particular, aumenta el rendimiento general del sistema al reducir el tiempo de inactividad de la CPU.
Conceptualmente, la multihilo es equivalente a un cambio de contexto a nivel del sistema operativo. La diferencia radica en que una CPU multihilo puede realizar un cambio de hilo en un solo ciclo de CPU, en lugar de los cientos o miles de ciclos que normalmente requiere un cambio de contexto. Esto se logra replicando el hardware de estado (como el banco de registros y el contador de programa ) para cada hilo activo.
Otra mejora es el procesamiento multihilo simultáneo . Esta técnica permite que las CPU superescalares ejecuten instrucciones de diferentes programas/hilos simultáneamente en el mismo ciclo.
Véase también
- Unidad de control
- Arquitectura de hardware
- Lenguaje de descripción de hardware (HDL)
- Paralelismo a nivel de instrucción (ILP)
- Lista de microarquitecturas de CPU de AMD
- Lista de microarquitecturas de CPU de Intel
- Lista de microarquitecturas de CPU ARM
- Diseño de procesadores
- Procesamiento de flujos
- VHDL
- Integración a muy gran escala (VLSI)
- Verilog
- Comparación de microarquitecturas de CPU
Referencias
- ↑ Directrices curriculares para programas de grado en ingeniería informática (PDF) . Association for Computing Machinery. 2004. pág. 60. Archivado del original (PDF) el 3 de julio de 2017.
Comentarios sobre arquitectura y organización de computadoras: La arquitectura de computadoras es un componente clave de la ingeniería informática y el ingeniero informático en ejercicio debe tener un conocimiento práctico de este tema...
- ↑ Murdocca, Miles; Heuring, Vincent (2007). Arquitectura y organización de computadoras: un enfoque integrado . Wiley. pág. 151. ISBN 9780471733881.
- ↑ Clements, Alan. Principios de hardware informático (4.ª ed.). págs. 1–2 .
- ↑ Flynn, Michael J. (2007). «Introducción a la arquitectura y las máquinas» . Arquitectura de computadoras: Diseño de procesadores paralelos y en paralelo . Jones and Bartlett. págs. 1–3 . ISBN 9780867202045.
- 1 2 Hennessy, John L. ; Patterson, David A. (2006). Arquitectura de computadoras: un enfoque cuantitativo (4.ª ed.). Morgan Kaufmann. ISBN 0-12-370490-1.
- ↑ Wilkes, MV (1969). "El crecimiento del interés en la microprogramación: una revisión de la literatura" . ACM Computing Surveys . 1 (3): 139– 145. doi : 10.1145/356551.356553 . S2CID 10673679 .
Lecturas adicionales
- Conferencias de Arquitectura de Computadoras de Carnegie Mellon
- Patterson, D.; Hennessy, J. (2004). Organización y diseño de computadoras: la interfaz hardware/software . Morgan Kaufmann. ISBN 1-55860-604-1.
- Hamacher, VC; Vrasenic, ZG; Zaky, SG (2001). Organización de computadoras . McGraw-Hill. ISBN 0-07-232086-9.
- Stallings, William (2002). Organización y arquitectura de computadoras . Prentice Hall. ISBN 0-13-035119-9.
- Hayes, JP (2002). Arquitectura y organización de computadoras . McGraw-Hill. ISBN 0-07-286198-3.
- Schneider, Gary Michael (1985). Los principios de la organización de computadoras . Wiley. págs. 6–7 . ISBN 0-471-88552-5.
- Mano, M. Morris (1992). Arquitectura de sistemas informáticos . Prentice Hall. pág . 3. ISBN 0-13-175563-3.
- Abd-El-Barr, Mostafa; El-Rewini, Hesham (2004). Fundamentos de organización y arquitectura de computadoras . Wiley. pág. 1. ISBN 0-471-46741-3.
- Gardner, J (2001). "Microarquitectura del procesador de PC" . ExtremeTech.
- Gilreath, William F.; Laplante, Phillip A. (2012) [2003]. Arquitectura de computadoras: una perspectiva minimalista . Springer. ISBN 978-1-4615-0237-1.
- Patterson, David A. (10 de octubre de 2018). Una nueva edad de oro para la arquitectura de computadoras . Coloquio de laureados Turing de la ACM AM de Berkeley, EE. UU. ctwj53r07yI.
- unidad central de procesamiento
- Procesamiento de instrucciones
- Microarquitecturas
- Microprocesadores