En ingeniería informática , la arquitectura informática es un conjunto de reglas y métodos que describen la funcionalidad, organización e implementación de los sistemas informáticos . Algunas definiciones de arquitectura la definen como la descripción de las capacidades y el modelo de programación de una computadora, pero no como una implementación en particular. [1] En otras definiciones, la arquitectura de computadora implica el diseño de la arquitectura del conjunto de instrucciones , el diseño de microarquitectura , el diseño lógico y la implementación . [2]
Historia
La primera arquitectura de computadora documentada fue la correspondencia entre Charles Babbage y Ada Lovelace , que describe el motor analítico . Cuando construyó la computadora Z1 en 1936, Konrad Zuse describió en dos solicitudes de patente para sus proyectos futuros que las instrucciones de la máquina podrían almacenarse en el mismo almacenamiento utilizado para los datos, es decir, el concepto de programa almacenado . [3] [4] Otros dos ejemplos tempranos e importantes son:
- El artículo de John von Neumann de 1945, Primer borrador de un informe sobre el EDVAC , que describía una organización de elementos lógicos; [5] y
- La calculadora electrónica propuesta más detallada de Alan Turing para el motor informático automático , también de 1945 y que citaba el artículo de John von Neumann . [6]
El término "arquitectura" en la literatura informática se remonta al trabajo de Lyle R. Johnson y Frederick P. Brooks, Jr. , miembros del departamento de Organización de Máquinas en el principal centro de investigación de IBM en 1959. Johnson tuvo la oportunidad de escribir un comunicación de investigación sobre Stretch , una supercomputadora desarrollada por IBM para el Laboratorio Nacional de Los Alamos (en ese momento conocido como Laboratorio Científico de Los Alamos). Para describir el nivel de detalle para hablar de la computadora lujosamente adornada, señaló que su descripción de formatos, tipos de instrucciones, parámetros de hardware y mejoras de velocidad estaban en el nivel de "arquitectura del sistema", un término que parecía más útil que "organización de la máquina". ”. [7]
Posteriormente, Brooks, un diseñador de Stretch, abrió el Capítulo 2 de un libro titulado Planificación de un sistema informático: Proyecto Stretch afirmando: “La arquitectura de la computadora, como otras arquitecturas, es el arte de determinar las necesidades del usuario de una estructura y luego diseñar para satisfacer esas necesidades de la manera más eficaz posible dentro de las limitaciones económicas y tecnológicas ". [8]
Brooks ayudó a desarrollar la línea de computadoras IBM System / 360 (ahora llamada IBM zSeries ), en la que “arquitectura” se convirtió en un sustantivo que define “lo que el usuario necesita saber”. [9] Más tarde, los usuarios de computadoras empezaron a utilizar el término de muchas formas menos explícitas. [10]
Las primeras arquitecturas de computadora se diseñaron en papel y luego se integraron directamente en la forma de hardware final. [11] Más tarde, los prototipos de arquitectura de computadora se construyeron físicamente en forma de computadora de lógica de transistor-transistor (TTL), como los prototipos del 6800 y el PA-RISC , probados y ajustados, antes de comprometerse con la forma de hardware final. . A partir de la década de 1990, las nuevas arquitecturas de computadora se "construyen", se prueban y se modifican normalmente, dentro de alguna otra arquitectura de computadora en un simulador de arquitectura de computadora ; o dentro de una FPGA como un microprocesador suave ; o ambos, antes de comprometerse con el formulario de hardware final. [12]
Subcategorías
La disciplina de la arquitectura informática tiene tres subcategorías principales: [13]
- Arquitectura de conjunto de instrucciones (ISA): define el código de máquina que un procesador lee y sobre el que actúa, así como el tamaño de la palabra , los modos de dirección de memoria , los registros del procesador y el tipo de datos .
- Microarquitectura : también conocida como "organización informática", describe cómo un procesador en particularimplementará la ISA. [14] El tamaño de la memoria caché dela CPU de una computadora,por ejemplo, es un problema que generalmente no tiene nada que ver con la ISA.
- Diseño de sistemas : incluye todos los demás componentes de hardware dentro de un sistema informático, como el procesamiento de datos que no sea la CPU (por ejemplo, acceso directo a la memoria ), virtualización y multiprocesamiento.
Existen otras tecnologías en la arquitectura de computadoras. Las siguientes tecnologías se utilizan en empresas más grandes como Intel, y en 2002 [13] se estimó que representaban el 1% de toda la arquitectura informática:
- Macroarquitectura : capas arquitectónicas más abstractas que la microarquitectura
- Arquitectura de conjunto de instrucciones de ensamblaje: un ensamblador inteligente puede convertir un lenguaje ensamblador abstracto común a un grupo de máquinas en un lenguaje de máquina ligeramente diferente para diferentes implementaciones .
- Macroarquitectura visible para el programador : las herramientas de lenguaje de nivel superior, como los compiladores, pueden definir una interfaz coherente o contratar a los programadores que las utilicen, abstrayendo las diferencias entre ISA, UISA y microarquitecturas subyacentes . Por ejemplo, los estándares C , C ++ o Java definen diferentes macroarquitecturas visibles para el programador.
- Microcódigo : el microcódigo es un software que traduce instrucciones para ejecutarse en un chip. Actúa como un envoltorio alrededor del hardware, presentando una versión preferida de la interfaz del conjunto de instrucciones del hardware. Esta función de traducción de instrucciones ofrece a los diseñadores de chips opciones flexibles: por ejemplo, 1. Una nueva versión mejorada del chip puede usar microcódigo para presentar exactamente el mismo conjunto de instrucciones que la versión del chip anterior, por lo que todo el software dirigido a ese conjunto de instrucciones se ejecutará en el nuevo chip sin necesitando cambios. Por ejemplo, 2. El microcódigo puede presentar una variedad de conjuntos de instrucciones para el mismo chip subyacente, lo que le permite ejecutar una variedad más amplia de software.
- UISA : Arquitectura del conjunto de instrucciones del usuario, se refiere a uno de los tres subconjuntos de las instrucciones de la CPU RISC proporcionadas por los procesadores PowerPC RISC. El subconjunto UISA son las instrucciones RISC de interés para los desarrolladores de aplicaciones. Los otros dos subconjuntos son las instrucciones VEA (Arquitectura de entorno virtual) utilizadas por los desarrolladores de sistemas de virtualización y OEA (Arquitectura de entorno operativo) utilizada por los desarrolladores de sistemas operativos. [15]
- Arquitectura de pines : las funciones de hardware que un microprocesador debe proporcionar a una plataforma de hardware, por ejemplo, los pines x86 A20M, FERR / IGNNE o FLUSH. Además, los mensajes que debe emitir el procesador para que las cachés externas se puedan invalidar (vaciar). Las funciones de la arquitectura de pines son más flexibles que las funciones ISA porque el hardware externo puede adaptarse a nuevas codificaciones o cambiar de un pin a un mensaje. El término "arquitectura" encaja, porque las funciones deben proporcionarse para sistemas compatibles, incluso si cambia el método detallado.
Roles
Definición
La arquitectura de la computadora se ocupa de equilibrar el rendimiento, la eficiencia, el costo y la confiabilidad de un sistema informático. El caso de la arquitectura del conjunto de instrucciones se puede utilizar para ilustrar el equilibrio de estos factores en competencia. Los conjuntos de instrucciones más complejos permiten a los programadores escribir programas con mayor eficiencia de espacio, ya que una sola instrucción puede codificar alguna abstracción de nivel superior (como la instrucción de bucle x86). [16] Sin embargo, las instrucciones más largas y complejas toman más tiempo para que el procesador decodifique y pueden ser más costosas de implementar de manera efectiva. La mayor complejidad de un gran conjunto de instrucciones también crea más espacio para la falta de confiabilidad cuando las instrucciones interactúan de formas inesperadas.
La implementación incluye diseño de circuitos integrados, empaquetado, energía y enfriamiento. La optimización del diseño requiere familiaridad con los compiladores, los sistemas operativos para el diseño lógico y el empaquetado. [17]
Set de instrucciones arquitectura
Una arquitectura de conjunto de instrucciones (ISA) es la interfaz entre el software y el hardware de la computadora y también puede verse como la vista del programador de la máquina. Las computadoras no comprenden lenguajes de programación de alto nivel como Java, C ++ o la mayoría de los lenguajes de programación utilizados. Un procesador solo comprende instrucciones codificadas de alguna manera numérica, generalmente como números binarios . Las herramientas de software, como los compiladores , traducen esos lenguajes de alto nivel en instrucciones que el procesador puede comprender.
Además de las instrucciones, la ISA define elementos en la computadora que están disponibles para un programa, por ejemplo, tipos de datos , registros , modos de direccionamiento y memoria. Las instrucciones ubican estos elementos disponibles con índices de registro (o nombres) y modos de direccionamiento de memoria.
El ISA de una computadora generalmente se describe en un pequeño manual de instrucciones, que describe cómo se codifican las instrucciones. Además, puede definir nombres mnemónicos cortos (vagamente) para las instrucciones. Los nombres pueden ser reconocidos por una herramienta de desarrollo de software llamada ensamblador . Un ensamblador es un programa de computadora que traduce una forma legible por humanos de la ISA a una forma legible por computadora. Los desensambladores también están ampliamente disponibles, generalmente en depuradores y programas de software para aislar y corregir fallas en programas informáticos binarios.
Las NIA varían en calidad e integridad. Un buen ISA se compromete entre la conveniencia del programador (qué tan fácil es entender el código), el tamaño del código (cuánto código se requiere para realizar una acción específica), el costo de la computadora para interpretar las instrucciones (más complejidad significa más hardware necesario para decodificar y ejecutar las instrucciones), y la velocidad de la computadora (con hardware de decodificación más complejo se obtiene un tiempo de decodificación más largo). La organización de la memoria define cómo las instrucciones interactúan con la memoria y cómo la memoria interactúa consigo misma.
Durante la emulación de diseño , los emuladores pueden ejecutar programas escritos en un conjunto de instrucciones propuesto. Los emuladores modernos pueden medir el tamaño, el costo y la velocidad para determinar si una ISA en particular está cumpliendo sus objetivos.
Organización de computadoras
La organización informática ayuda a optimizar los productos basados en el rendimiento. Por ejemplo, los ingenieros de software necesitan conocer la potencia de procesamiento de los procesadores. Es posible que necesiten optimizar el software para obtener el máximo rendimiento por el precio más bajo. Esto puede requerir un análisis bastante detallado de la organización de la computadora. Por ejemplo, en una tarjeta SD, es posible que los diseñadores deban organizar la tarjeta para que la mayor parte de los datos puedan procesarse de la manera más rápida posible.
La organización informática también ayuda a planificar la selección de un procesador para un proyecto en particular. Los proyectos multimedia pueden necesitar un acceso a datos muy rápido, mientras que las máquinas virtuales pueden necesitar interrupciones rápidas. A veces, ciertas tareas también necesitan componentes adicionales. Por ejemplo, una computadora capaz de ejecutar una máquina virtual necesita hardware de memoria virtual para que la memoria de diferentes computadoras virtuales pueda mantenerse separada. La organización y las características de la computadora también afectan el consumo de energía y el costo del procesador.
Implementación
Una vez que se han diseñado un conjunto de instrucciones y una microarquitectura, se debe desarrollar una máquina práctica. Este proceso de diseño se llama implementación . La implementación generalmente no se considera diseño arquitectónico, sino ingeniería de diseño de hardware . La implementación se puede dividir en varios pasos:
- La implementación lógica diseña los circuitos requeridos a nivel de puerta lógica .
- La implementación del circuito hace diseños a nivel de transistor de elementos básicos (por ejemplo, puertas, multiplexores , pestillos ), así como de algunos bloques más grandes ( ALU , cachés, etc.) que pueden implementarse a nivel de puerta lógica, o incluso a nivel físico. si el diseño lo requiere.
- La implementación física dibuja circuitos físicos. Los diferentes componentes del circuito se colocan en un plano de planta de chips o en una placa y se crean los cables que los conectan.
- La validación del diseño prueba la computadora en su conjunto para ver si funciona en todas las situaciones y en todos los tiempos. Una vez que comienza el proceso de validación del diseño, el diseño a nivel lógico se prueba utilizando emuladores lógicos. Sin embargo, esto suele ser demasiado lento para realizar una prueba realista. Por lo tanto, después de realizar las correcciones basadas en la primera prueba, los prototipos se construyen utilizando matrices de puertas programables en campo ( FPGA ). La mayoría de los proyectos de pasatiempos se detienen en esta etapa. El último paso es probar prototipos de circuitos integrados, que pueden requerir varios rediseños.
Para las CPU , todo el proceso de implementación se organiza de manera diferente y, a menudo, se denomina diseño de CPU .
Objetivos de diseño
La forma exacta de un sistema informático depende de las limitaciones y objetivos. Las arquitecturas informáticas generalmente compensan los estándares, la potencia frente al rendimiento, el costo, la capacidad de memoria, la latencia (la latencia es la cantidad de tiempo que tarda la información de un nodo en viajar a la fuente) y el rendimiento. A veces, otras consideraciones, como las características, el tamaño, el peso, la confiabilidad y la capacidad de expansión también son factores.
El esquema más común hace un análisis de energía en profundidad y descubre cómo mantener bajo el consumo de energía mientras se mantiene un rendimiento adecuado.
Actuación
El rendimiento de las computadoras modernas se describe a menudo en instrucciones por ciclo (IPC), que mide la eficiencia de la arquitectura en cualquier frecuencia de reloj; una tasa de IPC más rápida significa que la computadora es más rápida. Las computadoras más antiguas tenían recuentos de IPC tan bajos como 0.1, mientras que los procesadores modernos alcanzan fácilmente cerca de 1. Los procesadores superescalares pueden alcanzar de tres a cinco IPC al ejecutar varias instrucciones por ciclo de reloj. [ cita requerida ]
Contar instrucciones en lenguaje de máquina sería engañoso porque pueden realizar diferentes cantidades de trabajo en diferentes ISA. La "instrucción" en las medidas estándar no es un recuento de las instrucciones en lenguaje de máquina de la ISA, sino una unidad de medida, generalmente basada en la velocidad de la arquitectura de la computadora VAX .
Mucha gente solía medir la velocidad de una computadora por la frecuencia del reloj (generalmente en MHz o GHz). Esto se refiere a los ciclos por segundo del reloj principal de la CPU. Sin embargo, esta métrica es algo engañosa, ya que una máquina con una frecuencia de reloj más alta puede no tener necesariamente un mayor rendimiento. Como resultado, los fabricantes se han alejado de la velocidad del reloj como medida de rendimiento.
Otros factores influyen en la velocidad, como la combinación de unidades funcionales , velocidades de bus , memoria disponible y el tipo y orden de instrucciones en los programas.
Hay dos tipos principales de velocidad: latencia y rendimiento. La latencia es el tiempo entre el inicio de un proceso y su finalización. El rendimiento es la cantidad de trabajo realizado por unidad de tiempo. La latencia de interrupción es el tiempo de respuesta máximo garantizado del sistema a un evento electrónico (como cuando la unidad de disco termina de mover algunos datos).
El rendimiento se ve afectado por una amplia gama de opciones de diseño; por ejemplo, la canalización de un procesador generalmente empeora la latencia, pero mejora el rendimiento. Las computadoras que controlan la maquinaria generalmente necesitan latencias de interrupción bajas. Estas computadoras operan en un entorno de tiempo real y fallan si una operación no se completa en un período de tiempo específico. Por ejemplo, los frenos antibloqueo controlados por computadora deben comenzar a frenar dentro de un período de tiempo predecible y limitado después de que se detecta el pedal del freno o, de lo contrario, se producirá una falla del freno.
La evaluación comparativa tiene en cuenta todos estos factores al medir el tiempo que tarda una computadora en ejecutar una serie de programas de prueba. Aunque la evaluación comparativa muestra sus fortalezas, no debería ser la forma en que se elige una computadora. A menudo, las máquinas medidas se dividen en diferentes medidas. Por ejemplo, un sistema puede manejar aplicaciones científicas rápidamente, mientras que otro puede reproducir videojuegos con mayor fluidez. Además, los diseñadores pueden apuntar y agregar características especiales a sus productos, a través de hardware o software, que permiten que un punto de referencia específico se ejecute rápidamente pero que no ofrecen ventajas similares a las tareas generales.
Eficiencia energetica
La eficiencia energética es otra medida importante en las computadoras modernas. Una mayor eficiencia energética a menudo se puede cambiar por una velocidad más baja o un costo más alto. La medida típica cuando se hace referencia al consumo de energía en la arquitectura de la computadora es MIPS / W (millones de instrucciones por segundo por vatio).
Los circuitos modernos requieren menos energía por transistor a medida que aumenta el número de transistores por chip. [18] Esto se debe a que cada transistor que se coloca en un nuevo chip requiere su propia fuente de alimentación y requiere que se construyan nuevas vías para alimentarlo. Sin embargo, el número de transistores por chip está comenzando a aumentar a un ritmo más lento. Por lo tanto, la eficiencia energética está comenzando a ser tan importante, si no más importante, que instalar más y más transistores en un solo chip. Los diseños de procesadores recientes han demostrado este énfasis, ya que se centran más en la eficiencia energética en lugar de agrupar tantos transistores en un solo chip como sea posible. [19] En el mundo de las computadoras integradas, la eficiencia energética ha sido durante mucho tiempo un objetivo importante junto al rendimiento y la latencia.
Cambios en la demanda del mercado
Los aumentos en la frecuencia del reloj han crecido más lentamente en los últimos años, en comparación con las mejoras en la reducción de energía. Esto ha sido impulsado por el final de la Ley de Moore y la demanda de una mayor duración de la batería y reducciones de tamaño para la tecnología móvil. Este cambio de enfoque de velocidades de reloj más altas al consumo de energía y la miniaturización se puede demostrar por las reducciones significativas en el consumo de energía, hasta en un 50%, que informaron Intel en su lanzamiento de la microarquitectura Haswell ; donde bajaron su punto de referencia de consumo de energía de 30 a 40 vatios a 10-20 vatios. [20] Comparando esto con el aumento de la velocidad de procesamiento de 3 GHz a 4 GHz (2002 a 2006) [21], se puede ver que el enfoque en la investigación y el desarrollo se está alejando de la frecuencia de reloj y se está moviendo hacia consumir menos energía y ocupar menos espacio.
Ver también
- Comparación de arquitecturas de CPU
- Hardware de la computadora
- Diseño de CPU
- Punto flotante
- Arquitectura de Harvard ( modificada )
- Arquitectura de flujo de datos
- Arquitectura activada por transporte
- Computación reconfigurable
- Influencia de IBM PC en el mercado de las computadoras personales
- Conjunto de instrucciones ortogonales
- Arquitectura de software
- arquitectura von Neumann
- Taxonomía de Flynn
Referencias
- ^ Clements, Alan. Principios de hardware informático (Cuarta ed.). pag. 1. La
arquitectura describe la organización interna de una computadora de una manera abstracta; es decir, define las capacidades de la computadora y su modelo de programación. Puede tener dos computadoras que hayan sido construidas de diferentes formas con diferentes tecnologías pero con la misma arquitectura.
- ^ Hennessy, John; Patterson, David. Arquitectura informática: un enfoque cuantitativo (Quinta ed.). pag. 11.
Esta tarea tiene muchos aspectos, incluido el diseño de conjuntos de instrucciones, la organización funcional, el diseño lógico y la implementación.
- ^ Williams, FC; Kilburn, T. (25 de septiembre de 1948), "Electronic Digital Computers" , Nature , 162 (4117): 487, Bibcode : 1948Natur.162..487W , doi : 10.1038 / 162487a0 , S2CID 4110351 , archivado desde el original el 6 de abril 2009 , consultado el 10 de abril de 2009
- ^ Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000
- ^ Neumann, John (1945). Primer Borrador de Informe sobre la EDVAC . pag. 9.
- ^ Reproducido en BJ Copeland (Ed.), "Motor de computación automática de Alan Turing", Oxford University Press, 2005, págs. 369-454.
- ^ Johnson, Lyle (1960). "Una descripción de Stretch" (PDF) . pag. 1 . Consultado el 7 de octubre de 2017 .
- ^ Buchholz, Werner (1962). Planificación de un sistema informático . pag. 5.
- ^ "System 360, de los ordenadores a los sistemas informáticos" . IBM100 . Consultado el 11 de mayo de 2017 .
- ^ Hellige, Hans Dieter (2004). "Die Genese von Wissenschaftskonzeptionen der Computerarchitektur: Vom" sistema de órganos "zum Schichtmodell des Designraums". Geschichten der Informatik: Visionen, Paradigmen, Leitmotive . págs. 411–472.
- ^ ACE se sometió a siete diseños de papel en un año, antes de que se iniciara un prototipo en 1948. [BJ Copeland (Ed.), "Motor de cómputo automático de Alan Turing", OUP, 2005, p. 57]
- ^ Schmalz, MS "Organización de sistemas informáticos" . UF CISE . Consultado el 11 de mayo de 2017 .
- ^ a b John L. Hennessy y David A. Patterson. Arquitectura informática: un enfoque cuantitativo (tercera ed.). Editores Morgan Kaufmann.
- ^ Laplante, Phillip A. (2001). Diccionario de Ciencias de la Computación, Ingeniería y Tecnología . Prensa CRC. págs. 94–95. ISBN 0-8493-2691-5.
- ^ Frey, Brad (24 de febrero de 2005). "Libro de arquitectura de PowerPC, versión 2.02" . IBM Corporation.
- ^ Nulo, Linda (2019). The Essentials of Computer Organization and Architecture (5ª ed.). Burlington, MA: Jones y Bartlett Learning. pag. 280. ISBN 9781284123036.
- ^ Martín, Milo. "¿Qué es la arquitectura de la computadora?" (PDF) . UPENN . Consultado el 11 de mayo de 2017 .
- ^ "Circuitos integrados y fabricación" (PDF) . Consultado el 8 de mayo de 2017 .
- ^ "Serie Exynos 9 (8895)" . Samsung . Consultado el 8 de mayo de 2017 .
- ^ "Medición de la potencia del procesador TDP frente a ACP" (PDF) . Intel . Abril de 2011 . Consultado el 5 de mayo de 2017 .
- ^ "Historia del rendimiento del procesador" (PDF) . cs.columbia.edu . 24 de abril de 2012 . Consultado el 5 de mayo de 2017 .
Fuentes
- John L. Hennessy y David Patterson (2006). Arquitectura de computadora: un enfoque cuantitativo (Cuarta ed.). Morgan Kaufmann. ISBN 978-0-12-370490-0.
- Barton, Robert S. , "Diseño funcional de computadoras", Comunicaciones del ACM 4 (9): 405 (1961).
- Barton, Robert S., "Un nuevo enfoque para el diseño funcional de una computadora digital", Actas de la Western Joint Computer Conference , mayo de 1961, págs. 393–396. Acerca del diseño de la computadora Burroughs B5000 .
- Bell, C. Gordon ; y Newell, Allen (1971). "Estructuras informáticas: lecturas y ejemplos" , McGraw-Hill.
- Blaauw, GA y Brooks, FP, Jr. , "La estructura de System / 360, Parte I-Esquema de la estructura lógica" , IBM Systems Journal , vol. 3, no. 2, págs. 119-135, 1964.
- Tanenbaum, Andrew S. (1979). Organización informática estructurada . Acantilados de Englewood, Nueva Jersey : Prentice-Hall. ISBN 0-13-148521-0.
enlaces externos
- ISCA: Actas del Simposio Internacional sobre Arquitectura de Computadoras
- Micro: Simposio internacional IEEE / ACM sobre microarquitectura
- HPCA: Simposio internacional sobre arquitectura informática de alto rendimiento
- ASPLOS: Conferencia internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos
- Transacciones de ACM sobre arquitectura y optimización de código
- Transacciones IEEE en computadoras
- La arquitectura de von Neumann de los sistemas informáticos