Estructura de Computadores
Perpectiva Histórica Pasado y Presente Avances Tecnológicos
Primer computador Electrónico University of Pennsylvania ENIAC (Electronic Numerical Integrator and Calculator, 18.000 tubos al vacío).
Ejemplo Tubos Vacío 12AT7 amplificador 9-pin (medium-gain dual triode vacuum tube).
Transistor Tres regiones semiconductoras
Junio 1951, UNIVAC I Primer Computador Comercial en EEUU
En 1952 esta a la venta el primer computador IBM computer (IBM 701), se venden 19 unidades. En 1964 IBM anuncia System/360
Un año después Digital Equipment Corporation (DEC) PDP-8, el primer micro computador comercial. En 1971 Intel entrega el primer microprocesador Intel 4004. CPU de 4bits. Contiene 2.300 transistores.
Intel 4004
1976 Cray-1, el primer supercomputador comercial.
1977 personal computer, Apple IIe (Steve Jobs y Steve Wozniak) inicia un estándar en los computadores personales de bajo costo y alto desempeño.
1981 primer computador portátil de la historia, Osborne-1 Memoria era de 64 Kb. Tenía una pantalla monocromática de 25 x 52 caracteres que medía 5 pulgadas. Contaba con dos unidades de disco de 5.25 pulgadas (los discos podían almacenar hasta 91Kb cada uno). Tenía un puerto serial RS-232. Un puerto para módem y un teclado desprendible. Dimensiones eran: 32.5 x 50 x 36.5 cms. Peso de casi 13 kilogramos.
1981 primer computador portátil de la historia, Osborne-1
The Xerox Alto, inspiración Desktop
Progreso en medio siglo.
En la actualidad Intel (Nehalem)
En la actualidad Intel (Nehalem)
En la actualidad Intel (Nehalem)
En la actualidad AMD
En la actualidad AMD
En la actualidad AMD
En la actualidad UltraSPARC T2 (Niagara 2)
En la actualidad IBM Power 6
Placas Madres
Crecimiento de DRAM(Dynamic Random Access Memory)
Reloj y Consumo.
Crecimiento CPU
Arquitectura de Computadores Coordinar diferentes niveles de abstracción con: Cambios tecnológicos De programación. Aplicaciones. Sistemas Operativos.
Arquitectura de Computadores Aplicaciones Compilador Sistema Operativo Assembler Firmware Repertorio de Instrucciones Memoria Sistema Entrada/Salida Camino de Datos y Control Diseño Digital Diseño Circuitos Lógicos
Arquitectura de Computadores Arquitectura del repertorio de Instrucciones. Organización de Máquina.
Arquitectura Instrucciones del repertorio de Vista que poseen los diseñadores de compiladores y sistemas operativos de un computador. Establece los atributos del sistema computacional vistos por el programador.
La elección de la Arquitectura repertorio se refleja en: La organización del almacenamiento. Tipos de Datos. Estructuras de Datos. Codificación y Representaciones. Repertorio de Instrucciones. Formatos de Instrucciones del
La elección de la Arquitectura repertorio se refleja en: Modos del de direccionamiento y formas de acceder a los datos y a las instrucciones. Tratamiento de Excepciones.
El repertorio de instrucciones establece la interfaz software-hardware. Existen variados tipos de arquitecturas de repertorios, las cuales han ido evolucionando en el tiempo: Digital Alpha. HP PA-RISC. Sun Sparc, UltraSPARC. SGI MIPS. Intel. Etc.
Tipos de Repertorios Se clasifican de acuerdo a cómo se especifican los operandos de entrada y salida. Una instrucción requiere especificar: Donde se encuentran los operandos de entrada. La operación a realizar. Dónde se depositará el resultado, La próxima instrucción a realizar.
Tipos de Repertorios Una instrucción es una secuencia de unos y ceros Si el número de bits necesarios es menor o igual a de una palabra de memoria, puede ensamblarse los distintos campos en una celda de memoria. Si el número de bits es mayor, puede emplearse dos o más palabras para especificar una instrucción (tendrá que accesarse en más de una oportunidad a la memoria para procesar la instrucción).
Tipos de Repertorios Suele emplearse una notación simbólica para describir los campos de la instrucción. Se describe cada instrucción en una línea con los campos separados por espacios y pueden incluirse comentarios (lenguaje simbólico de máquina o assembler) Operación op1, op1 ;comentario
Tipos de Repertorios. Ejemplos: Máquinas de Stack add M[tope-1] M[tope-1] + M[tope] ; tope--; Suele solo especificar la operación, se asume que los operandos están en posiciones fijas de memoria. Tope pila Memoria Operando 1 Operando 2
Tipos de Repertorios Ejemplos Máquinas add A add x(a) con acumulador acc acc + M[A] acc acc + M[A + x] Registro especial acumulador denominado
Tipos de Repertorios Ejemplos Máquinas de Registro-Memoria add opa, opb add opa, opb, opc opa opa + opb opa opb + opc Los operandos pueden ser direcciones de memoria o registros internos.
Tipos de Repertorios Ejemplos Máquinas de Carga-Almacenamiento add Ra, Rb, Rc load Ra, Rb store Ra, Rb Ra Rb + Rc Ra M[Rb] M[Rb] Ra Las operaciones de solamente entre registros. efectúas
Tipos de Repertorios Las diferentes arquitecturas de repertorios suelen compararse, observando: El número de bytes por instrucción. El número de instrucciones que se requieren para efectuar una acción determinada. El número de ciclos de reloj por instrucción
Tipos de Repertorios Ejemplo, para realizar C = A + B Siendo A, B, C variables en memoria se requieren las siguientes secuencias de instrucciones dependiendo del tipo de repertorio: Máquina Stack: Push A Push B Add Pop C ; tope++,m[tope] = M[A] ; tope++, M[tope] = M[B] ; M[tope-1] += M[tope], tope-; M[C] = M[tope], tope
Tipos de Repertorios Ejemplo, para realizar C = A + B Máquina con acumulador LoadA ; acc = M[A] Add B ; acc = acc + M[B] Store C ; M[C] = acc
Tipos de Repertorios Ejemplo, para realizar C = A + B Máquina con operandos registro-memoria Load R1, A ; R1 = M[A] Add R1, B ; R1 = R1 + M[B] Store R1, C ; M[C] = R1
Tipos de Repertorios Ejemplo, para realizar C = A + B Máquina con almacenamiento Load R1, A Load R2, B Add R3, R1, R2 Store R3, C registros ; R1 = M[A] ; R2 = M[B] ; R3 = R1 + R2 ; M[C] = R3 carga-
Instrucciones típicas de un repertorio Son las operaciones que se encuentran en casi todos los repertorios de instrucciones. No todas están presentes en un repertorio determinado. Si no están pueden implementarse con las primitivas existentes.
Instrucciones típicas de un repertorio Movimientos de Datos: Cargar registro desde la memoria. Almacenar registro en la memoria. Movimiento entre celdas de memoria. Movimiento entre registros. Desde registro hacia dispositivo de salida (output). Desde dispositivo de entrada hacia registro (input). Push, pop. Operaciones en stack (pila).
Instrucciones típicas de un repertorio Aritméticas: Suma, resta, multiplicación, división. En binario, con y sin signo. Suma, resta, multiplicación, división. En BCD, con y sin signo. Suma, resta, multiplicación, división. En punto flotante (reales binarios), con y sin signo. Suma, resta, multiplicación, división de precisión extendida. En binario, con y sin signo.
Instrucciones típicas de un repertorio Corrimientos: Aritméticos hacia la izquierda y derecha. Lógicos hacia la izquierda y derecha. Rotaciones hacia la izquierda y derecha.
Instrucciones típicas de un repertorio Control de Secuencia de ejecución: Comparaciones. Saltos condicionales e incondicionales. Bifurcaciones condicionales.
Instrucciones típicas de un repertorio Enlace a Subrutinas: Llamado y retorno de subrutinas. Interrupciones: Seteo del sistema de prioridades, habilitación y deshabilitación de las interrupciones, retorno de interrupciones enmascaradas y no enmascaradas. Sincronización: Test and set. Operación para manejar procesos.
Instrucciones típicas de un repertorio Control del procesador: Halt, manejo de memoria virtual y caché, llamados al sistema, entrada y salida de modo supervisor. String: Traducir, buscar, etc. Gráficas: Operaciones para el manejo gráfico.
Instrucciones típicas de un repertorio Estadística de la frecuencia de uso de instrucciones de un procesador Intel(8086). (Justifica empíricamente los repertorios reducidos de instrucciones (RISC) ). load 22 % bifurcación condicional 20 % compare 16 % store 12 % add 8% and 6% sub 5% movimiento entre registros 4% llamados a subrutinas 1% retornos de subrutinas 1%
Modos de Direccionamiento (no todos están presentes en los diferentes repertorios) Modo Ejemplo Significado Registro Add R4, R3 R4 R4 + R3 Inmediato Add R4, #3 R4 R4 + 3 Desplazamiento Add R4, 100(R1) R4 R4 + M[100 + R1] Registro indirecto Add R4, (R1) R4 R4 + M[R1] Indice / Base Add R3, (R1+R2) R3 R3 + M[R1 + R2] Directo o absoluto Add R1, (1001) R1 R1 + M[1001]
Modos de Direccionamiento (no todos están presentes en los diferentes repertorios) Modo Ejemplo Significado Memoria indirecto Add R1, @(R3) R1 R1+ M[M[R3]] Auto-incremento Add R1, (R2)+ R1 R1 + M[R2]; R2 R2 +d Auto-decremento Add R1, (R2) R2 R2 d; R1 R1+ M[R2] Escalado Add R1, 100(R2)[R3] R1 R1+ M[100+R2+R3*d]
Uso de Registros. Todas las máquinas modernas usan múltiples registros. Los registros son más rápidos que la memoria principal y que la memoria cache. Permiten mantener variables de uso frecuente, rápidamente accesibles reduciendo los accesos a memoria
Uso de Registros. En el lenguaje C existe la posibilidad de indicar al compilador cuales variables deben ser almacenadas en registros ( se agrega la palabra register a variable). Se requiere menos bits para especificar registros de direcciones de memoria. Debido a técnicas de segmentación suelen emplearse repertorios tipo cargaalmacenamiento.
Estadística de uso direccionamiento. de modos A de través de mediciones, en máquinas que tienen todos los modos de direccionamiento, y con diversos programas, se llegó a que: 42% de los modos usados son con offset. 33% inmediatos. 13% son con registro indirecto. 12% de otros modos.
Organización de Máquina Describe la forma en que están organizados: Flujos de datos. La estructura del control. La ejecución de microinstrucciones. Diseño lógico. Implementación física.
Organización de Máquina Desde un punto de vista del diseñador lógico, interesan: Las capacidades y comportamiento característico de las principales unidades funcionales. (Registros, ALU, Shifters, Unidad de control...) Las formas en que esas componentes están interconectadas. Los flujos de información entre las componentes.
Organización de Máquina Desde un punto de vista del diseñador lógico, interesan: Medios lógicos por los cuales se controlan los flujos de datos. Cómo las unidades funcionales (o recursos) realizan el repertorio de instrucciones. Lenguaje de transferencia entre registros.
Organización de Máquina Todos los computadores consisten de 5 partes: Procesador: Camino de datos. Control. Memoria Dispositivo de entrada Dispositivo de salida
Niveles de Representación Lenguaje C Assembler MIPS Lenguaje Máquina
Niveles de Representación Programación Lenguaje C Diseñado considerando que sus elementos pudieran se eficientemente traducidos a assembler. Se verá como se desglosa cada instrucción de C mediante una o varias instrucciones de un determinado assembler.
Niveles de Representación Programación Assembler. Representación simbólica de la codificación binaria de las instrucciones o lenguaje de máquina El procesador decodifica los campos binarios y ejecuta la secuencia de transferencias que realizan las acciones que interpretan la instrucción
Programa de alto nivel (en C) swap (int v[], int k) (int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; ) Programa en assembler (para MIPS) swap: sll $2, $5, 2 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Código Máquina (object code) (para MIPS) 000000 00000 00101 0001000010000000 000000 00100 00010 0001000000100000