Estructura de Computadores - Inicio · Departamento de...
Transcript of Estructura de Computadores - Inicio · Departamento de...
Introducción
Primer computador Electrónico
University of PennsylvaniaENIAC (Electronic Numerical Integrator and
Calculator, 18.000 tubos al vacío).
Introducción
En 1952 esta a la venta el primer computador IBM computer (IBM 701), se venden 19 unidades.
En 1964 IBM anuncia System/360
Introducción
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.
Introducción
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.
Introducción
Arquitectura de ComputadoresCoordinar diferentes niveles de abstracción
con: Cambios tecnológicos De programación. Aplicaciones. Sistemas Operativos.
Introducción
Arquitectura de Computadores
MemoriaMemoria Sistema Entrada/SalidaSistema Entrada/Salida
Camino de Datos y ControlCamino de Datos y Control
Diseño DigitalDiseño Digital
Diseño CircuitosDiseño CircuitosLógicosLógicos
TransistoresTransistores
Repertorio de InstruccionesRepertorio de InstruccionesAssemblerAssembler
Sistema OperativoSistema Operativo
FirmwareFirmware
CompiladorCompilador
AplicacionesAplicaciones
Introducción
Arquitectura de ComputadoresArquitectura del repertorio de Instrucciones.Organización de Máquina.
Introducción
Arquitectura del repertorio de InstruccionesVista que poseen los diseñadores de
compiladores y sistemas operativos de un computador.
Establece los atributos del sistema computacional vistos por el programador.
Introducción
La elección de la Arquitectura del 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
Introducción
La elección de la Arquitectura del repertorio se refleja en:
Modos de direccionamiento y formas de acceder a los datos y a las instrucciones.
Tratamiento de Excepciones.
Introducción
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.
Introducción
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.
Introducción
Tipos de RepertoriosUna 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).
Introducción
Tipos de RepertoriosSuele 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
Introducción
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.
Operando 1Operando 1MemoriaMemoria
Tope pilaTope pila Operando 2Operando 2………………
Introducción
Tipos de Repertorios EjemplosMáquinas con acumulador
add A acc ⇐ acc + M[A] add x(A) acc ⇐ acc + M[A + x]
Registro especial denominado acumulador
Introducción
Tipos de Repertorios Ejemplos
Máquinas de Registro-Memoria add opA, opB opA ⇐ opA + opB add opA, opB, opC opA ⇐ opB + opC
Los operandos pueden ser direcciones de memoria o registros internos.
Introducción
Tipos de Repertorios Ejemplos
Máquinas de Carga-Almacenamiento add Ra, Rb, Rc Ra ⇐ Rb + Rc load Ra, Rb Ra ⇐ M[Rb] store Ra, Rb M[Rb] ⇐ Ra
Las operaciones de efectúas solamente entre registros.
Introducción
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
Introducción
Tipos de RepertoriosEjemplo, 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 ; tope++,M[tope] = M[A] Push B ; tope++, M[tope] = M[B] Add ; M[tope-1] += M[tope], tope-- Pop C ; M[C] = M[tope], tope—
Introducción
Tipos de RepertoriosEjemplo, para realizar C = A + B
Máquina con acumuladorLoadA ; acc = M[A]Add B ; acc = acc + M[B]Store C ; M[C] = acc
Introducción
Tipos de RepertoriosEjemplo, 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
Introducción
Tipos de RepertoriosEjemplo, para realizar C = A + B
Máquina con registros carga-almacenamiento
Load R1, A ; R1 = M[A]
Load R2, B ; R2 = M[B]
Add R3, R1, R2 ; R3 = R1 + R2
Store R3, C ; M[C] = R3
Introducción
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.
Introducción
Instrucciones típicas de un repertorioMovimientos 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).
Introducción
Instrucciones típicas de un repertorioAritmé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.
Introducción
Instrucciones típicas de un repertorioCorrimientos:
Aritméticos hacia la izquierda y derecha. Lógicos hacia la izquierda y derecha. Rotaciones hacia la izquierda y derecha.
Introducción
Instrucciones típicas de un repertorioControl de Secuencia de ejecución:
Comparaciones. Saltos condicionales e incondicionales. Bifurcaciones condicionales.
Introducción
Instrucciones típicas de un repertorioEnlace 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.
Introducción
Instrucciones típicas de un repertorioControl 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.
Introducción
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) ).
loadload 22 %22 %
bifurcación condicionalbifurcación condicional 20 %20 %
comparecompare 16 %16 %
storestore 12 %12 %
addadd 8 %8 %
andand 6 %6 %
subsub 5 %5 %
movimiento entre registrosmovimiento entre registros 4 %4 %
llamados a subrutinasllamados a subrutinas 1 %1 %
retornos de subrutinasretornos de subrutinas 1 %1 %
Introducción
Modos de Direccionamiento(no todos están presentes en los diferentes repertorios)
ModoModo EjemploEjemplo SignificadoSignificadoRegistro 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]
Introducción
Modos de Direccionamiento(no todos están presentes en los diferentes repertorios)
ModoModo EjemploEjemplo SignificadoSignificadoMemoria 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]
Introducción
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
Introducción
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 carga-almacenamiento.
Introducción
Estadística de uso de modos de direccionamiento.A 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.
Introducción
Organización de MáquinaDescribe 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.
Introducción
Organización de MáquinaDesde 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.
Introducción
Organización de MáquinaDesde 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.
Introducción
Organización de MáquinaTodos los computadores consisten de 5
partes: Procesador:
Camino de datos. Control.
Memoria Dispositivo de entrada Dispositivo de salida
Introducción
Niveles de Representación
Lenguaje CLenguaje C
Assembler MIPSAssembler MIPS
Lenguaje MáquinaLenguaje Máquina
Introducción
Niveles de RepresentaciónProgramació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.
Introducción
Niveles de RepresentaciónProgramació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
IntroducciónPrograma 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