Arquitectura de computadoras

Conjunto de reglas que describen el sistema informático
Diagrama de bloques de una computadora básica con CPU monoprocesador. Las líneas negras indican el flujo de control, mientras que las líneas rojas indican el flujo de datos. Las flechas indican la dirección del flujo.

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]

Historia

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]

Subcategorías

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:

  • Macroarquitectura : capas arquitectónicas más abstractas que la microarquitectura
  • Arquitectura del 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 o contrato consistente para los programadores que las utilizan, abstrayendo las diferencias entre las ISA y las 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 las instrucciones para que se ejecuten 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: p. ej., 1. Una nueva versión mejorada del chip puede usar microcódigo para presentar exactamente el mismo conjunto de instrucciones que la versión anterior del chip, de modo que todo el software que tenga como objetivo ese conjunto de instrucciones se ejecutará en el nuevo chip sin necesidad de cambios. p. ej., 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.
  • Arquitectura de pines : 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, mensajes que el procesador debe emitir para que las cachés externas puedan invalidarse (vaciarse). Las funciones de 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" es adecuado, porque las funciones deben proporcionarse para sistemas compatibles, incluso si cambia el método detallado.

Roles

Definición

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]

Arquitectura del conjunto de instrucciones

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.

Organización de la computadora

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.

Implementación

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:

  • La implementación lógica diseña los circuitos necesarios a nivel de puerta lógica .
  • La implementación de circuitos realiza 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 chip o en una placa y se crean los cables que los conectan.
  • La validación del diseño prueba el ordenador 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, se prueba el diseño a nivel lógico utilizando emuladores lógicos. Sin embargo, esto suele ser demasiado lento para ejecutar una prueba realista. Por lo tanto, después de realizar correcciones basadas en la primera prueba, se construyen prototipos utilizando matrices de puertas programables en campo ( FPGA ). La mayoría de los proyectos de aficionados se detienen en esta etapa. El paso final es probar los circuitos integrados prototipo, lo que puede requerir varios rediseños.

Para las CPU , todo el proceso de implementación se organiza de manera diferente y a menudo se lo denomina diseño de CPU .

Objetivos de diseño

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.

Actuación

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.

Eficiencia energética

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.

Cambios en la demanda del mercado

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]

Véase también

Referencias

  1. ^ Dragoni, Nicole (sin fecha). "Introducción a la computación entre pares" (PDF) . DTU Compute – Departamento de Matemáticas Aplicadas y Ciencias de la Computación . Lyngby, Dinamarca.
  2. ^ Clements, Alan. Principles of Computer Hardware (Cuarta edición). pág. 1. 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.
  3. ^ Hennessy, John; Patterson, David. Arquitectura informática: un enfoque cuantitativo (Quinta edición). pág. 11. 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.
  4. ^ 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 de 2009 , consultado el 10 de abril de 2009
  5. ^ Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000
  6. ^ Neumann, John (1945). Primer borrador de un informe sobre el EDVAC . p. 9.
  7. ^ Reproducido en BJ Copeland (Ed.), "El motor de cálculo automático de Alan Turing", Oxford University Press, 2005, págs. 369-454.
  8. ^ Johnson, Lyle (1960). "A Description of Stretch" (PDF) . pág. 1. Consultado el 7 de octubre de 2017 .
  9. ^ Buchholz, Werner (1962). Planificación de un sistema informático . pág. 5.
  10. ^ "System 360, From Computers to Computer Systems". IBM100 . 7 de marzo de 2012. Archivado desde el original el 3 de abril de 2012 . Consultado el 11 de mayo de 2017 .
  11. ^ 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.
  12. ^ ACE fue objeto de siete diseños en papel en un año, antes de que se iniciara un prototipo en 1948. [BJ Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, p. 57]
  13. ^ Schmalz, MS "Organización de sistemas informáticos". UF CISE . Consultado el 11 de mayo de 2017 .
  14. ^ de John L. Hennessy y David A. Patterson. Arquitectura informática: un enfoque cuantitativo (tercera edición). Morgan Kaufmann Publishers.
  15. ^ Laplante, Phillip A. (2001). Diccionario de informática, ingeniería y tecnología . CRC Press. pp. 94–95. ISBN 0-8493-2691-5.
  16. ^ Null, Linda (2019). Fundamentos de la organización y arquitectura de computadoras (5.ª ed.). Burlington, MA: Jones & Bartlett Learning. pág. 280. ISBN 9781284123036.
  17. ^ Martin, Milo. "¿Qué es la arquitectura informática?" (PDF) . UPENN . Consultado el 11 de mayo de 2017 .
  18. ^ "Circuitos integrados y fabricación" (PDF) . Consultado el 8 de mayo de 2017 .
  19. ^ "Serie Exynos 9 (8895)". Samsung . Consultado el 8 de mayo de 2017 .
  20. ^ "Medición de potencia del procesador TDP frente a ACP" (PDF) . Intel . Abril de 2011 . Consultado el 5 de mayo de 2017 .
  21. ^ "Historia del rendimiento de los procesadores" (PDF) . cs.columbia.edu . 24 de abril de 2012 . Consultado el 5 de mayo de 2017 .

Fuentes

  • ISCA: Actas del Simposio Internacional sobre Arquitectura de Computadores
  • 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 ACM sobre arquitectura y optimización de código
  • Transacciones IEEE sobre computadoras
  • La arquitectura de von Neumann de los sistemas informáticos en Wayback Machine (archivado el 31 de octubre de 2017)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Computer_architecture&oldid=1251541454"