Introducción

Computer Organization and Design: The Hardware/Software Interface — Arquitectura e Ingeniería de Computadores

Introducción

Abstracciones informáticas y tecnología

La revolución informática

  • Progreso en la tecnología informática, sustentado por la Ley de Moore.
  • Hace que las aplicaciones novedosas sean factibles: computadoras en automóviles, celulares, Proyecto Genoma Humano, World Wide Web, los motores de búsqueda.
  • Las computadoras son omnipresentes.

clases de computadoras

  • Computadoras personales: propósito general, variedad de software, sujeto a compensación de costo/rendimiento.
  • Computadoras servidor: basado en red, alta capacidad, rendimiento, fiabilidad; varía desde servidores pequeños hasta el tamaño de un edificio.

Clases de computadoras

  • Supercomputadoras: cálculos científicos y de ingeniería de alta gama; la capacidad más alta pero representa una pequeña fracción del mercado general de computadoras.
  • Ordenadores integrados: ocultos como componentes de sistemas; restricciones estrictas de potencia/rendimiento/costo.

La era PostPC

  • Dispositivo móvil personal ( PMD): de pilas, se conecta a Internet, cientos de dólares; teléfonos inteligentes, tabletas, gafas electrónicas.
  • Computación en la nube: computadoras a escala de almacén ( WSC), software como servicio ( SaaS); una parte del software se ejecuta en un PMD y una parte se ejecuta en la nube. Ejemplos: Amazon y Google.

Lo que vas a aprender

  • Cómo se traducen los programas al lenguaje máquina y cómo los ejecuta el hardware.
  • La interfaz hardware/software.
  • Lo que determina el rendimiento del programa y cómo se puede mejorar.
  • Cómo los diseñadores de hardware mejoran el rendimiento.
  • ¿Qué es el procesamiento paralelo?

Comprender el rendimiento

  • Algoritmo: determina el número de operaciones ejecutadas.
  • Lenguaje de programación, compilador, arquitectura: determinan el número de instrucciones de máquina ejecutadas por operación.
  • Procesador y sistema de memoria: determinan qué tan rápido se ejecutan las instrucciones.
  • Sistema de E/S ( incluido el sistema operativo): determina qué tan rápido se ejecutan las operaciones de E/S.

Ocho grandes ideas

  • Diseño para la Ley de Moore.
  • Usa la abstracción para simplificar el diseño.
  • Hacer el caso común rápido.
  • Rendimiento vía paralelismo.
  • Rendimiento vía canalización.
  • Rendimiento vía predicción.
  • Jerarquía de memoria.
  • Confianza vía redundancia.

Debajo de su programa

  • Software de la aplicación: escrito en lenguaje de alto nivel.
  • Software del sistema:
    • Compilador: traduce código HLL a código de máquina.
    • Sistema operativo: código de servicio — manejo de entrada/salida, administrar la memoria y el almacenamiento, programar tareas y compartir recursos.
  • Hardware: procesador, memoria, controladores de E/S.

Niveles de descripción y diseño de un computador

Niveles de abstracción de un computador, de arriba a abajo:

  • Aplicación: ofimática ( MS-Office, Contaplus, D-Base), comunicaciones ( Netscape, Explorer, Mail), diseño ( AutoCAD, …), multimedia, juegos, etc.
  • Lenguaje de alto nivel: for, while, repeat, procedure, … ( Pascal, Fortran, C, Cobol, Basic, …, Módula, C++, Java, …)
  • Sistema Operativo / Compilador: gestión de memoria, gestión de procesos, gestión de ficheros ( compilación, enlazado, ubicación).
  • Arquitectura del repertorio de instrucciones: registros, registro de estado, contador de programa.
  • Organización: hardware del sistema.
  • Circuito Digital.
  • Físico: CPU, memoria, bus, E/S.

Ejemplo de código de bajo nivel correspondiente:

Loop: move #$10,R0
      load R1 ( dir1),R2
      add  R2,R0
      sub  #1,R1
      beq  Loop

Diagrama de la diapositiva: pirámide de niveles de abstracción software/hardware ( Aplicación → Lenguaje de alto nivel → SO/Compilador → ISA/Registros → Organización → Circuito Digital → Físico), con R0/R7 y el fragmento de código ensamblador situados junto al nivel de ISA. El layout visual exacto no se pudo recuperar de la extracción OCR; el contenido textual se ha preservado en la lista anterior.

Niveles de código de programa

  • Lenguaje de alto nivel: nivel de abstracción más cercano al dominio del problema; proporciona productividad y portabilidad.
  • Lenguaje ensamblador: representación textual de instrucciones; representación de hardware.
  • Dígitos binarios ( bits): instrucciones y datos codificados.

ISA: Interfaz Crítica entre software y hardware

  • software
  • instruction set
  • hardware

Propiedades:

  • Permanencia con el tiempo / tecnología ( portabilidad).
  • Proporciona funcionalidad eficaz a los niveles superiores.
  • Permite implementación eficiente en los niveles inferiores.

Componentes de una computadora ( El panorama)

  • Mismos componentes para todo tipo de ordenador: escritorio, servidor, integrado.
  • Entrada/salida incluye:
    • Dispositivos de interfaz de usuario: pantalla, teclado, ratón.
    • Dispositivos de almacenamiento: disco duro, CD/DVD, flash.
    • Adaptadores de red: para comunicarse con otras computadoras.

Pantalla táctil

  • Dispositivo PostPC: reemplaza el teclado y el mouse.
  • Tipos resistivos y capacitivos.
  • La mayoría de las tabletas y los teléfonos inteligentes usan tecnología capacitiva.
  • Capacitivo permite múltiples toques simultáneamente.

Através del espejo

  • Pantalla LCD: elementos de imagen ( píxeles).
  • Refleja el contenido de la memoria intermedia de cuadros.

Abriendo la Caja

  • Pantalla LCD multitáctil capacitiva.
  • Batería de 3,8 V, 25 vatios-hora.
  • Tablero de computadora.

Dentro del procesador ( CPU)

  • Datapath: realiza operaciones en los datos.
  • Control: ruta de datos de secuencias, memoria, …
  • Memoria caché: pequeña memoria SRAM rápida para acceso inmediato a los datos.

Dentro del procesador

Apple A5/A12

Abstracciones ( El panorama)

  • La abstracción nos ayuda a lidiar con la complejidad: oculta detalles de nivel inferior.
  • Arquitectura del conjunto de instrucciones ( ISA): la interfaz hardware/software.
  • Interfaz binaria de la aplicación: la interfaz del software del sistema ( ISA + SO).
  • Implementación: los detalles subyacentes y la interfaz.

Un lugar seguro para los datos

  • Memoria principal volátil: pierde instrucciones y datos cuando se apaga.
  • Memoria secundaria no volátil: disco magnético, memoria flash, disco óptico ( CDROM, DVD).

Redes

  • Comunicación, intercambio de recursos, acceso no local.
  • Red de área local ( LAN): Ethernet.
  • Red de área amplia ( WAN): Internet.
  • Red inalámbrica: Wi-Fi, Bluetooth.

Tendencias tecnológicas

  • La tecnología electrónica sigue evolucionando: mayor capacidad y rendimiento, costo reducido ( capacidad DRAM).
AñoTecnologíaRendimiento/costo relativo
1951Tubo vacío1
1965Transistor35
1975Circuito integrado ( CI)900
1995CI de muy gran escala ( VLSI)2.400.000
2013IC de ultra gran escala250.000.000.000

Tecnología de semiconductores

  • Silicio: semiconductor.
  • Añadir materiales para transformar propiedades: conductores, aisladores.
  • Cambiar.

Fabricación de circuitos integrados

  • Rendimiento: proporción de troqueles de trabajo por oblea.

Oblea Intel Core i7

  • Oblea de 300 mm, 280 chips, tecnología de 32 nm.
  • Cada chip es de 20,7 x 10,5 mm.

Intel® Core 10th Gen

  • 300mm wafer, 506 chips, 10nm technology.
  • Each chip is 11.4 x 10.7 mm.

Costo del circuito integrado

  • Relación no lineal con el área y la tasa de defectos.
  • El costo y el área de la oblea son fijos.
  • Tasa de defectos determinada por el proceso de fabricación.
  • Área de matriz determinada por la arquitectura y el diseño del circuito.

Definición de rendimiento

¿Qué avión tiene el mejor rendimiento? Comparativa entre Boeing 777, Boeing 747, BAC/Sud Concorde y Douglas DC-8-50.

Gráficos de la diapositiva: barras comparando Passenger Capacity, Cruising Range ( miles), Cruising Speed ( mph) y Passengers × mph para los cuatro aviones. Los valores numéricos de las barras no se pudieron recuperar con fiabilidad de la extracción OCR.

Rendimiento

Dos conceptos clave:

AviónVía a ParísVelocidadPasajerosThroughput ( p·km/h)
Boeing 7476,5 horas970 km/h470455.900
Concorde3 horas2.160 km/h132285.120
  • Tiempo de Ejecución ( TEj): tiempo que tarda en completarse una tarea ( tiempo de respuesta, latencia).
  • Rendimiento ( Performance, Throughput): tareas por hora, día, …

“X es n veces más rápido que Y” significa:

Reducir el TEj incrementa el rendimiento.

Tiempo de respuesta y rendimiento

  • Tiempo de respuesta: cuánto se tarda en hacer una tarea.
  • Rendimiento: trabajo total realizado por unidad de tiempo, por ejemplo, tareas/transacciones/… por hora.
  • ¿Cómo se ven afectados el tiempo de respuesta y el rendimiento por…
    • ¿Reemplazar el procesador con una versión más rápida?
    • ¿Agregar más procesadores?
  • Nos centraremos en el tiempo de respuesta por ahora…

Tiempo de respuesta y rendimiento ( cont.)

  • I ( recuento de instrucciones): se reduce si el compilador genera menos instrucciones máquina o/y menos bucles. OJO: recuento dinámico, no estático.
  • CPI: se reduce el nº de ciclos de c/instr, o si la ejecución de las instr. se solapa ( segmentación y ejecución superescalar).
  • T_c ( procesador): se incrementa la frecuencia de reloj mejorando la tecnología del CI, o reduciendo el procesamiento por ciclo.

Observar que no son factores independientes: mejorar uno puede empeorar otro.

Rendimiento

  • N: nº de instrucciones ( Compiladores y LM).
  • CPI: ciclos medios por instrucción ( LM, implementación, paralelismo).
  • T_c: período de reloj ( implementación, tecnología).

Si asumimos que existen n tipos de instrucciones:

Ejemplo: ALU 1 ciclo ( 50%), Ld 2 ciclos ( 20%), St 2 ciclos ( 10%), saltos 2 ciclos ( 20%).

CPI: ALU 0.5, Ld 0.4, St 0.2, salto 0.4 → CPI TOTAL = 1.5

Desempeño relativo

Definir rendimiento = 1/Tiempo de ejecución.

“X es n veces más rápido que Y”:

Ejemplo: tiempo necesario para ejecutar un programa: 10s en A, 15s en B.

Entonces A es 1,5 veces más rápido que B.

Medición del tiempo de ejecución

  • Tiempo transcurrido: tiempo total de respuesta, incluyendo todos los aspectos ( procesamiento, E/S, sobrecarga del sistema operativo, tiempo de inactividad). Determina el rendimiento del sistema.
  • Tiempo de CPU: tiempo dedicado a procesar un trabajo determinado ( descuenta tiempo de E/S, acciones de otros trabajos). Comprende el tiempo de CPU del usuario y el tiempo de CPU del sistema.
  • Los diferentes programas se ven afectados de manera diferente por la CPU y el rendimiento del sistema.

Reloj de la CPU

  • Operación de hardware digital gobernado por un reloj de tasa constante: período de reloj ( ciclos) → transferencia de datos y computación → actualizar estado.
  • Período de reloj: duración de un ciclo de reloj, por ejemplo, 250ps = 0,25ns = 250×10⁻¹² s.
  • Frecuencia de reloj ( tasa): ciclos por segundo, por ejemplo, 4,0 GHz = 4000 MHz = 4,0 × 10⁹ Hz.

Tiempo de CPU

  • Rendimiento mejorado por: reducción del número de ciclos de reloj, aumento de la frecuencia del reloj.
  • El diseñador de hardware a menudo debe compensar la frecuencia del reloj con el recuento de ciclos.

Ejemplo de tiempo de CPU

Un programa tarda 10 segundos en ejecutarse en el ordenador A, que tiene una frecuencia de reloj de 2 GHz. Queremos que el computador B tarde 6 segundos en ejecutar el mismo programa. En este caso, se puede introducir una mejora para incrementar la frecuencia de reloj, pero esto supone que el ordenador B necesitará 1,2 veces más ciclos de reloj que el A para ejecutar el mismo programa. ¿Cuál es la frecuencia de reloj que cumple con estas condiciones?

Ejemplo de tiempo de CPU ( solución)

  • Computadora A: reloj de 2 GHz, tiempo de CPU de 10 s.
  • Diseño de la computadora B: apunta a 6 segundos de tiempo de CPU. Puede hacer un reloj más rápido, pero causa 1,2× ciclos de reloj.
  • ¿Cuál debe ser la frecuencia del reloj de la computadora B?

Recuento de instrucciones y CPI

  • Recuento de instrucciones para un programa: determinado por programa, ISA y compilador.
  • Ciclos promedio por instrucción: determinado por el hardware de la CPU.
  • Si diferentes instrucciones tienen diferentes CPI, el CPI promedio se ve afectado por la combinación de instrucciones.

Ejemplo de IPC

Tenemos dos implementaciones del mismo ISA. La implementación A tiene un periodo de reloj de 250 ps y un CPI de 2, para un programa, mientras que la B tiene un periodo de reloj de 500 ps y un CPI de 1,2, para el mismo programa. ¿Qué ordenador es más rápido ejecutando este programa y por cuánto?

Ejemplo de IPC ( solución)

  • Computadora A: Tiempo de ciclo = 250ps, CPI = 2.0.
  • Computadora B: Tiempo de ciclo = 500ps, CPI = 1.2.
  • Misma ISA. ¿Cuál es más rápido y por cuánto?

…por tanto, A es más rápido, por un factor de 1,2.

IPC en más detalle

Si diferentes clases de instrucción toman diferentes números de ciclos:

IPC medio ponderado:

Ejemplo de IPC

Un diseñador de compiladores tiene que decidir entre dos secuencias de código para un computador particular, usando instrucciones de las clases A, B y C. Se proporcionan los siguientes datos:

ClaseABC
CPI por clase123
Inst. en secuencia 1212
Inst. en secuencia 2411

¿Qué secuencia de código ejecuta más instrucciones? ¿Cuál es el CPI de cada secuencia? ¿Cuál es más rápida?

Secuencia 1: IC = 5. Secuencia 2: IC = 6.

Promedio CPI secuencia 1 = 10/5 = 2,0. Promedio CPI secuencia 2 = 9/6 = 1,5.

Resumen de Rendimiento

El rendimiento depende de:

  • Algoritmo: afecta IC, posiblemente CPI.
  • Lenguaje de programación: afecta IC, CPI.
  • Compilador: afecta IC, CPI.
  • Arquitectura del conjunto de instrucciones: afecta a IC, CPI, T_c.

Rendimiento global del computador: Benchmarks

  • La única forma fiable es ejecutando distintos programas reales.
  • Programas “de juguete”: 10~100 líneas de código con resultado conocido. Ej.: Criba de Eratóstenes, Puzzle, Quicksort.
  • Programas de prueba ( benchmarks) sintéticos: simulan la frecuencia de operaciones y operandos de un abanico de programas reales. Ej.: Whetstone, Dhrystone.
  • Programas reales típicos con cargas de trabajo fijas ( actualmente la medida más aceptada): SPEC.
  • Otros:
    • HPC: LINPACK, SPEChpc96, NAS Parallel Benchmark.
    • Servidores: SPECweb, SPECSFS ( File servers), TPC-C, SPECjbb ( Java).
    • Gráficos: SPECviewperf ( OpenGL), SPECapc ( aplicaciones 3D).
    • Winbench, EEMBC.

SPEC CPU Benchmark

  • Programas utilizados para medir el rendimiento, supuestamente típico de la carga de trabajo real.
  • Corporación de Evaluación de Desempeño Estándar ( SPEC). Desarrolla puntos de referencia para CPU, E/S, Web, …
  • SPEC. CPU2006: tiempo transcurrido para ejecutar una selección de programas; E/S insignificante, por lo que se centra en el rendimiento de la CPU.
  • Normalizar en relación con la máquina de referencia.
  • Resumir como media geométrica de los índices de rendimiento: CINT2006 ( entero) y CFP2006 ( coma flotante).

CINT2006 para Intel Core i7 920

SPECspeed 2017 Integer benchmarks on a 1.8 GHz Intel Xeon E5-2650L

La Ley de Moore

Microelectrónica y microarquitectura.

  • El escalado de la tecnología puede acabar en 10 años.
  • El grosor del aislante de la puerta está limitado a 2nm.

Según INTEL ( Fuente: Intel Corporation).

Rendimiento del monoprocesador

Limitado por potencia, paralelismo a nivel de instrucción, latencia de memoria.

Tendencias de consumo

En tecnología CMOS IC:

× 30 · 5V : 1V · × 1000

Reduciendo consumo

Supongamos que una nueva CPU tiene el 85% de la carga capacitiva de la CPU antigua, con una reducción de 15% de voltaje y de 15% de frecuencia:

El muro del consumo:

  • No podemos reducir más el voltaje.
  • No podemos quitar más calor.
  • ¿De qué otra manera podemos mejorar el rendimiento?

Multiprocesadores

  • Microprocesadores multinúcleo: más de un procesador por chip. Requiere programación paralela explícita.
  • Comparar con el paralelismo de nivel de instrucción: el hardware ejecuta múltiples instrucciones a la vez, oculto del programador.
  • Difícil de hacer: programación para el rendimiento, balanceo de carga, optimización de la comunicación y la sincronización.

SPEC Power Benchmark

  • Consumo de energía del servidor en diferentes niveles de carga de trabajo.
  • Rendimiento: ssj_ops/seg. Potencia: vatios ( julios/seg).

SPECpower_ssj2008 para Xeon X5650

Aceleración o Ganancia

  • Mide el efecto de una mejora en un computador ( “A” o “G”).
  • Cociente entre tiempos de ejecución antes y después de la mejora de un mismo programa ( s). Adimensional.
  • 1 significa que hay mejora: T1/T2 es >1 si T2 < T1 ( T2 es menor: se redujo el tiempo de ejecución, hay ganancia).

  • El programa/programas para medir se denomina “benchmark”.

Trampa: Ley de Amdahl I

Mejorar un aspecto de una computadora y esperar una mejora proporcional en el rendimiento general.

Ejemplo: multiplicaciones suponen 80/100 del tiempo. ¿Cuánta mejora se necesita en multiplicaciones para un rendimiento 5 veces superior?

Corolario: hacer el caso común rápido.

Ley de Amdahl II

Cuello de botella: subsistema o subsistemas que degradan el rendimiento general de la computadora. Mejorando el caso común, la ley de Amdahl mide el impacto en el desempeño del cambio en un subsistema.

Ley de Amdahl: A_m = factor de mejora introducido por el subsistema modificado; F_m = fracción de tiempo que el sistema completo utiliza el subsistema modificado.

Ejemplo: queremos mejorar el rendimiento de una computadora introduciendo un coprocesador matemático que realiza las operaciones en la mitad del tiempo. Calcular la ganancia en %velocidad de proceso del sistema para la ejecución de un programa si el 60% del mismo se dedica a operaciones aritméticas. Si el programa tarda 12 segundos en ejecutarse sin la actualización, ¿cuánto tardará con la mejora? A_m = 2 y F_m = 0,6.

Hacer que el sistema sea un 42% más rápido. Lo que hace que el programa tarde 8,45 segundos.

Falacia: bajo consumo de energía en suspensión

  • Referencia de potencia i7: al 100% de carga: 258W; al 50% de carga: 170W ( 66%); al 10% de carga: 121W ( 47%).
  • Centro de datos de Google: funciona principalmente con una carga del 10% al 50%. Al 100% de carga menos del 1% del tiempo.
  • Considere diseñar procesadores para que la potencia sea proporcional a la carga.

Dificultad: MIPS como métrica de rendimiento

MIPS: millones de instrucciones por segundo. No cuenta para: diferencias en las ISA entre computadoras, diferencias en complejidad entre instrucciones.

El CPI varía entre los programas en una CPU determinada.

Observaciones finales

  • El costo/rendimiento está mejorando debido al desarrollo tecnológico subyacente.
  • Capas jerárquicas de abstracción, tanto en hardware como en software.
  • Conjunto de instrucciones - arquitectura: la interfaz hardware/software.
  • Tiempo de ejecución: la mejor medida de rendimiento.
  • El consumo es un factor limitante.
  • Utilice el paralelismo para mejorar el rendimiento.

Ejercicios para hacer

Más ejercicios y ejemplos. Trabajo Personal.

Ecuaciones Rendimiento Resumen

  • T = Tiempo de ejecución de un programa. T = Cy · Tc.
  • Cy = Ciclos de reloj consumidos por el programa.
  • Tc = Período del ciclo de reloj en segundos ( o ns). Tc = 1/f.
  • f = frecuencia en Hertz ( Hz = ciclos/seg, MHz o GHz).
  • Cy = I · CPI.
  • I = Total de instrucciones ejecutadas ( recuento dinámico).
  • CPI = Ciclos por Instrucción. Media de ciclos de reloj empleados ( mezcla particular).
  • MIPS = 10⁻⁶ · I / T ( m.i.p.s.)

Ejemplo 1

Se tiene la siguiente información sobre la mezcla de instrucciones pertenecientes a un repertorio de una máquina que ejecuta un programa Benchmark. Calcular CPI de dicha mezcla. Se debe obtener la media ponderada de 3 CPI:

TipoCiclos que consume% uso
Aritmética y lógica entera250
Carga/Almacenamiento420
Transferencia de control220
Aritmética Coma Flotante810

Ejemplos:

add  R1,R2,R3        # R1 ← R2+R3
ld   R1, 16 ( R4)    # R1 ← M ( R4+16)
jnez R5, label1      # PC ← gets label1 ( address of next instruction)
addf F0,F5,F3        # F0 ← F5+F3, real numbers in FP representation

Ejemplo 2

En un procesador de una frecuencia de 40 MHz. se ejecuta un benchmark con la mezcla de instrucciones y ciclos mostrada en la tabla a continuación. Calcular recuento de instrucciones, CPI, MIPS y Tiempo de ejecución.

TipoNº Instruc.Ciclos
Aritmética entera45.0003
Transferencia de datos32.0002
Coma Flotante15.00010
Transferencia de control8.0002

Sol: I = 100.000; Cy = 365.000; CPI = 3,65; T ≈ 9ms; 10,95 MIPS

Ejemplo 3

  • Un programa benchmark en un procesador se ejecuta en 250 ms de los cuales, 200 ms se emplean en operaciones que manipulan números enteros.
  • Se realiza un cambio en la circuitería de este procesador con el propósito de acelerar estas operaciones de enteros.
  • Tras hacer estos cambios se comprueba que el mismo programa que se ejecutaba antes en 250 ms ahora tarda 210 ms.

¿Cuál es la Ganancia o Aceleración obtenida?

G = 250ms / 210ms = 1,19, o un 19% de aceleración.

Ejemplo 3 ( continuación)

¿Cuánto se ha acelerado el procesamiento de enteros para obtener esta ganancia?

T1 = 250ms = 200ms + 50ms. T2 = 210ms = ?? + 50ms.

El tiempo de proceso de enteros (??) tras la mejora fue de 160ms. La aceleración parcial sobre los enteros es de 200ms/160ms = 1,25.

Conclusión: una aceleración de un 25% sobre los enteros permite que el benchmark se acelere un 19% ( G).