Estructura de Computadores - Inicio · Departamento de...

68
Estructura de Computadores

Transcript of Estructura de Computadores - Inicio · Departamento de...

Estructura de Computadores

Introducción

Perpectiva Histórica

Pasado y Presente

Avances Tecnológicos

Introducción

Primer computador Electrónico

University of PennsylvaniaENIAC (Electronic Numerical Integrator and

Calculator, 18.000 tubos al vacío).

Introducción

Ejemplo Tubos Vacío12AT7 amplificador 9-pin (medium-gain dual

triode vacuum tube).

Introducción

TransistorTres regiones semiconductoras

Introducción

Junio 1951, UNIVAC IPrimer Computador Comercial en EEUU

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

Intel 4004

Introducción

1976 Cray-1, el primer supercomputador comercial.

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.

1981 primer computador portátil de la historia, Osborne-1

Introducción

The Xerox Alto, inspiración Desktop

Introducción

Progreso en medio siglo.

Introducción

En la actualidad Intel (Nehalem)

Introducción

En la actualidad Intel (Nehalem)

Introducción

En la actualidad Intel (Nehalem)

Introducción

En la actualidadAMD

Introducción

En la actualidadAMD

Introducción

En la actualidadAMD

Introducción

En la actualidadUltraSPARC T2 (Niagara 2)

Introducción

En la actualidad IBM Power 6

Introducción

Introducción

Placas Madres

Introducción

Crecimiento de DRAM(Dynamic Random Access Memory)

Introducción

Reloj y Consumo.

Introducción

Crecimiento CPU

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