Es posible que la introducción de este artículo sea demasiado breve para resumir adecuadamente los puntos clave . ( Noviembre de 2023 ) |
En informática e ingeniería informática , la arquitectura informática es una descripción de la estructura de un sistema informático formado por partes componentes. [1] A veces puede ser una descripción de alto nivel que ignora los detalles de la implementación. [2] En un nivel más detallado, la descripción puede incluir el diseño de la arquitectura del conjunto de instrucciones , el diseño de la microarquitectura , el diseño lógico y la implementación . [3]
La primera arquitectura de computadora documentada fue la correspondencia entre Charles Babbage y Ada Lovelace , que describe la máquina analítica . Mientras construía 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 . [4] [5] Otros dos ejemplos tempranos e importantes son:
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 una comunicación de investigación exclusiva sobre Stretch , una supercomputadora desarrollada por IBM para el Laboratorio Nacional de Los Álamos (en ese momento conocido como Laboratorio Científico de Los Álamos). Para describir el nivel de detalle para discutir la computadora lujosamente embellecida, señaló que su descripción de formatos, tipos de instrucciones, parámetros de hardware y mejoras de velocidad estaban al nivel de "arquitectura de sistema", un término que parecía más útil que "organización de máquinas". [8]
Posteriormente, Brooks, un diseñador de Stretch, abrió el Capítulo 2 de un libro llamado Planificación de un sistema informático: Proyecto Stretch afirmando: "La arquitectura informática, 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". [9]
Brooks contribuyó al desarrollo de la línea de ordenadores IBM System/360 , en la que la "arquitectura" se convirtió en un sustantivo que definía "lo que el usuario necesita saber". [10] La línea System/360 fue sucedida por varias líneas de ordenadores compatibles, incluida la actual línea IBM Z. Más tarde, los usuarios de ordenadores empezaron a utilizar el término de formas mucho menos explícitas. [11]
Las primeras arquitecturas de ordenador se diseñaron en papel y luego se incorporaron directamente a la forma de hardware final. [12] Más tarde, los prototipos de arquitectura de ordenador se construyeron físicamente en forma de ordenador de lógica transistor-transistor (TTL), como los prototipos del 6800 y el PA-RISC , se probaron y ajustaron antes de pasar a la forma de hardware final. A partir de la década de 1990, las nuevas arquitecturas de ordenador se suelen "construir", probar y ajustar (dentro de otra arquitectura de ordenador en un simulador de arquitectura de ordenador ; o dentro de un FPGA como un microprocesador suave ; o ambos) antes de pasar a la forma de hardware final. [13]
La disciplina de la arquitectura de computadoras tiene tres subcategorías principales: [14]
Existen otras tecnologías en la arquitectura informática. Las siguientes tecnologías se utilizan en empresas más grandes como Intel y se estimó que en 2002 [14] representaban el 1% de toda la arquitectura informática:
La arquitectura informática se ocupa de equilibrar el rendimiento, la eficiencia, el coste y la fiabilidad de un sistema informático. El caso de la arquitectura de conjuntos de instrucciones puede utilizarse para ilustrar el equilibrio de estos factores en pugna. Los conjuntos de instrucciones más complejos permiten a los programadores escribir programas más eficientes en cuanto al espacio, ya que una única instrucción puede codificar alguna abstracción de nivel superior (como la instrucción Loop de x86 ). [16] Sin embargo, las instrucciones más largas y complejas tardan más en decodificarse por parte del procesador y pueden resultar más costosas de implementar de forma eficaz. La mayor complejidad de un conjunto de instrucciones grande también crea más margen para la falta de fiabilidad cuando las instrucciones interactúan de formas inesperadas.
La implementación implica el diseño de circuitos integrados , el empaquetado, la alimentación y la refrigeración . La optimización del diseño requiere familiaridad con temas que van desde compiladores y sistemas operativos hasta diseño lógico y empaquetado. [17]
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 que tiene el programador de la máquina. Las computadoras no entienden lenguajes de programación de alto nivel como Java , C++ o la mayoría de los lenguajes de programación utilizados. Un procesador solo entiende 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 entender.
Además de las instrucciones, la ISA define los elementos de 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 registros (o nombres) y modos de direccionamiento de memoria.
La ISA de un ordenador se describe habitualmente en un pequeño manual de instrucciones, que describe cómo se codifican las instrucciones. Además, puede definir nombres mnemotécnicos breves (vagamente) para las instrucciones. Los nombres se pueden reconocer mediante una herramienta de desarrollo de software llamada ensamblador . Un ensamblador es un programa informático que traduce una forma legible por humanos de la ISA a una forma legible por ordenador. Los desensambladores también están ampliamente disponibles, normalmente en depuradores y programas de software para aislar y corregir fallos en los programas informáticos binarios.
Las ISA varían en calidad e integridad. Una buena ISA busca un equilibrio 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 que se necesita más hardware para decodificar y ejecutar las instrucciones) y la velocidad de la computadora (cuanto más complejo sea el hardware de decodificación, mayor será el tiempo de decodificación). La organización de la memoria define cómo interactúan las instrucciones 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 cumple con sus objetivos.
La organización de la computadora 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 deban optimizar el software para obtener el máximo rendimiento al menor precio. Esto puede requerir un análisis bastante detallado de la organización de la computadora. Por ejemplo, en una tarjeta SD , los diseñadores pueden necesitar organizar la tarjeta de modo que se pueda procesar la mayor cantidad de datos de la manera más rápida posible.
La organización de la computadora también ayuda a planificar la selección de un procesador para un proyecto en particular. Los proyectos multimedia pueden necesitar un acceso muy rápido a los datos, 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 las 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.
Una vez que se ha diseñado un conjunto de instrucciones y una microarquitectura , se debe desarrollar una máquina práctica. Este proceso de diseño se denomina implementación . La implementación no suele considerarse diseño arquitectónico, sino ingeniería de diseño de hardware . La implementación se puede dividir en varios pasos:
Para las CPU , todo el proceso de implementación se organiza de manera diferente y a menudo se lo denomina diseño de CPU .
La forma exacta de un sistema informático depende de las limitaciones y los objetivos. Las arquitecturas informáticas suelen equilibrar estándares, potencia frente a rendimiento , coste, capacidad de memoria, latencia (la latencia es el tiempo que tarda la información de un nodo en viajar hasta la fuente) y rendimiento. A veces, también hay que tener en cuenta otras consideraciones, como las características, el tamaño, el peso, la fiabilidad y la capacidad de ampliación.
El esquema más común realiza un análisis de energía en profundidad y descubre cómo mantener el consumo de energía bajo mientras se mantiene un rendimiento adecuado.
El rendimiento de las computadoras modernas se describe a menudo en instrucciones por ciclo (IPC), que mide la eficiencia de la arquitectura a 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 casi 1. Los procesadores superescalares pueden alcanzar de tres a cinco IPC ejecutando varias instrucciones por ciclo de reloj. [ cita requerida ]
Contar las instrucciones en lenguaje de máquina sería engañoso porque pueden realizar distintas cantidades de trabajo en diferentes ISA. La "instrucción" en las mediciones 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 informática VAX .
Muchas personas solían medir la velocidad de un ordenador por la frecuencia de reloj (normalmente 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 han dejado de utilizar la velocidad de reloj como medida de rendimiento.
Otros factores influyen en la velocidad, como la combinación de unidades funcionales , las velocidades del bus , la memoria disponible y el tipo y orden de las instrucciones en los programas.
Existen dos tipos principales de velocidad: latencia y rendimiento . La latencia es el tiempo que transcurre 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 ante 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 segmentación de un procesador suele empeorar la latencia, pero mejora el rendimiento. Los ordenadores que controlan maquinaria suelen necesitar latencias de interrupción bajas. Estos ordenadores funcionan en un entorno de tiempo real y fallan si una operación no se completa en un tiempo determinado. Por ejemplo, los frenos antibloqueo controlados por ordenador deben empezar a frenar en 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.
El benchmarking tiene en cuenta todos estos factores midiendo el tiempo que tarda un ordenador en ejecutar una serie de programas de prueba. Aunque el benchmarking muestra los puntos fuertes, no debería ser la forma de elegir un ordenador. A menudo, las máquinas evaluadas 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 añadir características especiales a sus productos, a través de hardware o software, que permitan que un benchmark específico se ejecute rápidamente pero no ofrezcan ventajas similares a las tareas generales.
La eficiencia energética es otra medida importante en los ordenadores modernos. Una mayor eficiencia energética a menudo se puede negociar a cambio de una menor velocidad o un mayor coste. La medida típica cuando se hace referencia al consumo de energía en la arquitectura informática es MIPS/W (millones de instrucciones por segundo por vatio).
Los circuitos modernos requieren menos potencia 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 volverse tan importante, si no más importante, que colocar cada vez más transistores en un solo chip. Los diseños de procesadores recientes han demostrado este énfasis, ya que ponen más foco en la eficiencia energética en lugar de meter 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 con el rendimiento y la latencia.
Los aumentos en la frecuencia de 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 fin 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 un 50%, que fueron reportadas por Intel en su lanzamiento de la microarquitectura Haswell ; donde redujeron su punto de referencia de consumo de energía de 30-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), se puede ver que el enfoque en investigación y desarrollo se está alejando de la frecuencia de reloj y avanzando hacia consumir menos energía y ocupar menos espacio. [21]
La arquitectura describe la organización interna de una computadora de manera abstracta; es decir, define las capacidades de la computadora y su modelo de programación. Se pueden tener dos computadoras que se hayan construido de diferentes maneras con diferentes tecnologías pero con la misma arquitectura.
Esta tarea tiene muchos aspectos, incluidos el diseño del conjunto de instrucciones, la organización funcional, el diseño lógico y la implementación.