stringtranslate.com

Arquitectura de Computadores

Diagrama de bloques de una computadora básica con CPU monoprocesador. Las líneas negras indican flujo de datos, mientras que las líneas rojas indican flujo de control. 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 hecha de componentes. [1] A veces puede ser una descripción de alto nivel que ignora los detalles de la implementación. [2] A 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 informática documentada se encuentra en la correspondencia entre Charles Babbage y Ada Lovelace , describiendo el motor analítico . Mientras construía el ordenador 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 que se utiliza 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 del principal centro de investigación de IBM en 1959. Johnson tuvo la oportunidad de escribir un diseño patentado. 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 al nivel de "arquitectura del sistema", un término que parecía más útil que "organización de la máquina". ". [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 cualquier otra arquitectura, es el arte de determinar las necesidades del usuario de una estructura y luego diseñar para satisfacerlas". satisfacer esas necesidades tan eficazmente como sea posible dentro de las limitaciones económicas y tecnológicas." [9]

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 definía "lo que el usuario necesita saber". [10] Más tarde, los usuarios de computadoras llegaron a utilizar el término de muchas maneras menos explícitas. [11]

Las primeras arquitecturas informáticas se diseñaron en papel y luego se integraron directamente en el formato de hardware final. [12] Más tarde, los prototipos de arquitectura de computadora se construyeron físicamente en forma de computadora con lógica 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 generalmente se "construyen", prueban y modifican dentro de alguna otra arquitectura de computadora en un simulador de arquitectura de computadora ; o dentro de un FPGA como un microprocesador suave ; o ambos, antes de comprometerse con la forma final del hardware. [13]

Subcategorías

La disciplina de la arquitectura informática 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 en 2002 [14] se estimó que representaban el 1% de toda la arquitectura informática:

Roles

Definición

La arquitectura informática 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. 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 Loop x86 ). [17] Sin embargo, las instrucciones más largas y complejas tardan más en decodificar el procesador y pueden ser más costosas de implementar de manera efectiva. La mayor complejidad de un conjunto de instrucciones grande también crea más espacio para la falta de confiabilidad cuando las instrucciones interactúan de maneras inesperadas.

La implementación implica diseño de circuitos integrados, empaquetado, alimentación y refrigeración. La optimización del diseño requiere familiaridad con los compiladores, los sistemas operativos, el diseño lógico y el empaquetado. [18]

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 de la máquina por parte del programador. Las computadoras no entienden los lenguajes de programación de alto nivel como Java, C++ o la mayoría de los lenguajes de programación utilizados. Un procesador sólo entiende instrucciones codificadas de alguna forma 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, 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 localizan estos elementos disponibles con índices de registro (o nombres) y modos de direccionamiento de memoria.

La 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 mnemotécnicos cortos (vagos) para las instrucciones. Los nombres pueden reconocerse mediante una herramienta de desarrollo de software llamada ensamblador . Un ensamblador es un programa informático que traduce una forma legible por humanos de 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 logra compromisos 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 un hardware de decodificación más complejo el tiempo de decodificación es mayor). 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 al 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 necesiten organizar la tarjeta de manera que se pueda procesar la mayor cantidad de datos 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, determinadas 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:

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 objetivos. Las arquitecturas informáticas suelen equilibrar estándares, potencia frente a rendimiento, coste, capacidad de memoria, latencia (la latencia es la cantidad de tiempo que tarda la información de un nodo en viajar hasta la fuente) y 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 realiza 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 a menudo se describe 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 casi 1. Los procesadores superescalares pueden alcanzar de tres a cinco IPC ejecutando varias instrucciones por ciclo de reloj. [ cita necesaria ]

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 del 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 mediante 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 no necesariamente tiene 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 , las velocidades del bus , la memoria disponible y el tipo y orden de las 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 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 canalización de un procesador generalmente empeora la latencia, pero mejora el rendimiento. Las computadoras que controlan 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 en el freno.

La evaluación comparativa tiene en cuenta todos estos factores midiendo el tiempo que tarda una computadora en ejecutar una serie de programas de prueba. Aunque la evaluación comparativa muestra puntos fuertes, no debería depender de la forma en que se elige una computadora. A menudo las máquinas medidas se dividen en medidas diferentes. Por ejemplo, un sistema podría manejar aplicaciones científicas rápidamente, mientras que otro podría 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 permitan ejecutar rápidamente un punto de referencia específico pero que no ofrezcan ventajas similares a las tareas generales.

Eficiencia energetica

La eficiencia energética es otra medida importante en las computadoras modernas. A menudo se puede intercambiar una mayor eficiencia energética por una menor velocidad o un mayor costo. La medida típica cuando se hace referencia al consumo de energía en la arquitectura de computadoras es MIPS/W (millones de instrucciones por segundo por vatio).

Los circuitos modernos requieren menos energía por transistor a medida que crece el número de transistores por chip. [19] 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á empezando a aumentar a un ritmo más lento. Por lo tanto, la eficiencia energética está empezando a ser tan importante, si no más, que colocar más y más transistores en un solo chip. Los diseños de procesadores recientes han mostrado este énfasis, ya que se centran más en la eficiencia energética en lugar de meter tantos transistores en un solo chip como sea posible. [20] 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 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 mostrar en las reducciones significativas en el consumo de energía, hasta un 50%, que informó Intel en su lanzamiento de la microarquitectura Haswell ; donde redujeron su punto de referencia de consumo de energía de 30 a 40 vatios a 10-20 vatios. [21] Comparando esto con el aumento de la velocidad de procesamiento de 3 GHz a 4 GHz (2002 a 2006) [22] se puede ver que el enfoque en investigación y desarrollo se está alejando de la frecuencia de reloj y avanzando hacia un menor consumo de energía y consumo de energía. menos espacio.

Ver también

Referencias

  1. ^ Dragoni, Nicole (sin fecha). "Introducción a la informática peer to peer" (PDF) . DTU Compute - Departamento de Matemática Aplicada e Informática . Lyngby, Dinamarca.
  2. ^ Clementes, Alan. Principios del hardware informático (Cuarta ed.). pag. 1. La arquitectura describe la organización interna de una computadora de forma abstracta; es decir, define las capacidades de la computadora y su modelo de programación. Puedes tener dos computadoras que hayan sido construidas de diferentes maneras con diferentes tecnologías pero con la misma arquitectura.
  3. ^ Hennessy, John; Patterson, David. Arquitectura informática: un enfoque cuantitativo (Quinta ed.). pag. 11. Esta tarea tiene muchos aspectos, incluido 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 2009 , consultado el 10 de abril de 2009
  5. ^ Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000
  6. ^ Neumann, Juan (1945). Primer Borrador de Informe sobre el EDVAC . pag. 9.
  7. ^ Reproducido en BJ Copeland (Ed.), "Alan Turing's Automatic Computing Engine", Oxford University Press, 2005, págs. 369-454.
  8. ^ Johnson, Lyle (1960). "Una descripción del estiramiento" (PDF) . pag. 1 . Consultado el 7 de octubre de 2017 .
  9. ^ Buchholz, Werner (1962). Planificación de un sistema informático . pag. 5.
  10. ^ "System 360, de computadoras a sistemas informáticos". IBM100 . 7 de marzo 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 se sometió a 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. ^ ab John L. Hennessy y David A. Patterson. Arquitectura informática: un enfoque cuantitativo (tercera ed.). Editores Morgan Kaufmann.
  15. ^ Laplante, Phillip A. (2001). Diccionario de Informática, Ingeniería y Tecnología . Prensa CRC. págs. 94–95. ISBN 0-8493-2691-5.
  16. ^ Frey, Brad (24 de febrero de 2005). "Libro de arquitectura de PowerPC, versión 2.02". Corporación IBM.
  17. ^ Nulo, Linda (2019). Los fundamentos de la organización y arquitectura de las computadoras (5ª ed.). Burlington, MA: Jones & Bartlett Learning. pag. 280.ISBN _ 9781284123036.
  18. ^ Martín, Milo. "¿Qué es la arquitectura informática?" (PDF) . UPENN . Consultado el 11 de mayo de 2017 .
  19. ^ "Circuitos integrados y fabricación" (PDF) . Consultado el 8 de mayo de 2017 .
  20. ^ "Serie Exynos 9 (8895)". Samsung . Consultado el 8 de mayo de 2017 .
  21. ^ "Medición de la potencia del procesador TDP frente a ACP" (PDF) . Intel . Abril de 2011 . Consultado el 5 de mayo de 2017 .
  22. ^ "Historial del rendimiento del procesador" (PDF) . cs.columbia.edu . 24 de abril de 2012 . Consultado el 5 de mayo de 2017 .

Fuentes

enlaces externos