La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CLASE 10. QUE ES UN COMPUTADOR Niveles de abstracción Todos los computadores consisten de 5 componentes: Procesador: (1) Datapath y (2) el control. (3)

Presentaciones similares


Presentación del tema: "CLASE 10. QUE ES UN COMPUTADOR Niveles de abstracción Todos los computadores consisten de 5 componentes: Procesador: (1) Datapath y (2) el control. (3)"— Transcripción de la presentación:

1 CLASE 10

2 QUE ES UN COMPUTADOR Niveles de abstracción Todos los computadores consisten de 5 componentes: Procesador: (1) Datapath y (2) el control. (3) Memoria. (4) Dispositivos de entrada y (5) dispositivos de salida

3 MODELOS VON-NEWMAN Y HARDVARE

4 NIVELES DE ABSTRACCION AplicaciónLenguaje de Alto NivelSistema Operativo / CompiladorArquitectura del conjunto de InstruccionesOrganización HW sistemaCircuito DigitalNivel Físico PARTE 1 DEL CURSO PARTE 2 DEL CURSO

5 NIVELES DE CODIFICACION DE UN PROGRAMA

6 ¿QUE ES ARQUITECTURA DE COMPUTADORES? Arquitectura de la maquinaOrganización de la maquina

7 TIPO DE ALMACENAMIENTO DE LA CPU Las ISAs se diferencian por el tipo de almacenamiento interno que usa el procesador, definiendo a la vez su tipo de operandos. CLASIFICACIONPilaAcumulador Registros de propósito general Registro a memoria. Registro a registro.

8 ARQUITECTURAS DE PILA (STACK ARCHITECTURES) Los operandos están implícitos en el tope de la pila ALU TOS Memoria Procesador Stack El registro TOS (Top of stack) apunta al primer operando de entrada. El segundo operando de entrada es el que está una posición más abajo. El primer operando se descarta de la pila, el resultado ocupa el lugar del segundo y el registro TOS se actualiza para que apunte al resultado. Se emplean instrucciones push y pop: Push: mete datos a la pila. Pop: Saca datos de la pila. C = A + B; push A push B add pop C Declaración en alto nivel Declaración en bajo nivel Ejemplo: ¿Como se codificara la instrucción de código en alto nivel C = A + B en una arquitectura de pila?

9 ARQUITECTURAS DE ACUMULADOR (ACCUMULATOR ARCHITECTURES) Un operando implícito en el acumulador El acumulador es el primer operando de entrada (implícito). El segundo operando es una posición de memoria. El resultado se escribe en el acumulador. C = A + B; load A add B store C Declaración en alto nivel Declaración en bajo nivel Ejemplo: ¿Como se codificara la instrucción de código en alto nivel C = A + B en una arquitectura de acumulador? ALU Procesador Memoria Acumulador

10 ARQUITECTURAS DE REGISTROS DE PROPOSITO GENERAL (GENERAL-PURPOSE REGISTER ARCHITECTURES) – ARQUITECTURA REGISTRO A MEMORIA Operandos explícitos (en registros o posiciones de memoria) Un operando de entrada está en un registro, el segundo operando están en memoria y el resultado se escribe en un registro. C = A + B; load R1,A add R3,R1,B store R3 Declaración en alto nivel Declaración en bajo nivel Ejemplo: ¿Como se codificara la instrucción de código en alto nivel C = A + B en una arquitectura de registro a memoria? ALU Procesador Memoria Registros

11 ARQUITECTURAS DE REGISTROS DE PROPOSITO GENERAL (GENERAL-PURPOSE REGISTER ARCHITECTURES) – ARQUITECTURA REGISTRO A REGISTRO Operandos explícitos (en registros o posiciones de memoria) Todos los operandos están en registros (de entrada y resultado). Para cargar un registro con un valor desde memoria se emplean instrucciones load. Para transferir el resultado contenido en un registro a memoria se usan instrucciones store. C = A + B; load R1,A load R2,B Add R3,R1,R2 store R3,C Declaración en alto nivel Declaración en bajo nivel Ejemplo: ¿Como se codificara la instrucción de código en alto nivel C = A + B en una arquitectura de registros de propósito general? ALU Procesador Memoria Registros

12 CLASES DE ISA (RESUMEN) C = A + B; load R1,A load R2,B Add R3,R1,R2 store R3,C push A push B add pop C load A add B store C load R1,A add R3,R1,B store R3 Los operandos explícitos pueden ser accedidos directamente desde memoria o puede ser necesario cargarlos primero en un almacenamiento temporal, dependiendo de la arquitectura y de la instrucción específica.

13 LENGUAJE ENSAMBLADOR Los lenguajes de los procesadores corresponden a un nivel de abstracción bajo Lenguajes de Bajo Nivel (LBN) Ensamblador: Lenguaje de bajo nivel utilizado para escribir programas. Los LBN son definidos por una serie de Mnemónicos, símbolos alfabéticos que representan un código binario. Constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador add a,b,c a = b + c add a,b,c Mnemonico de la operacion Operandos

14 COMPONENTES DE UN ISA Organización de la estructuras de almacenamiento programables Registros Modos de direccionamiento y de acceso a datos e instrucciones. Tipos de datos y estructuras de los datos Codificación y representación Formatos de instrucciones. Conjunto de instrucciones (o código de operación) ULA, transferencia de control, tratamiento de excepciones.

15 RESUMEN INSTRUCTION SET ARCHITECTURE DEL MIPS R3000 Instrucciones: Todas las instrucciones son de 32 bits Clases: Load/Store. Computacional. Salto y ramificación. Punto flotante (coprocesador). Manejo de memoria. Especial. Formatos: 3 formatos de instrucciones todos de 32 bits. Conjuntos de registros: 32 registros de 32 bits. El registro cero ($R0) siempre es 0. Hi/Lo para multiplicación y división

16 RESUMEN INSTRUCTION SET ARCHITECTURE DEL MIPS R3000 Modos de direccionamiento y de acceso a datos e instrucciones Registro (directo) Inmediato Indexado Relativo al PC

17 RESUMEN INSTRUCTION SET ARCHITECTURE DEL MIPS R3000 Conjunto de instrucciones Aritmetico Logicas Add, AddU, Sub, SubU, And, Or, Xor, Nor, SLT, SLTU AddI, AddIU, SLTI, SLTIU, AndI, OrI, XorI, LUI SLL, SRL, SRA, SLLV, SRLV, SRAV Acceso a memoria LB, LBU, LH, LHU, LW, LWL,LWR SB, SH, SW, SWL, SWR Multiplicación/division MULT, DIV, DIVU, MFHI, MFLO, MTHI, MTLO Formatos: 3 formatos de instrucciones todos de 32 bits.

18 Y ESTO QUE TIENE QUE VER CON EL CURSO Objeto de estudio del curso: MIPS ISA 32 bits Arquitectura registro a registro (load/store). Quienes usan el MIPS? NEC, Nintendo, Sony, Silicon Graphics, Texas Instruments, Cisco, … ¿Qué aspectos se tienen que tener en cuenta a la hora de diseñar un ISA?

19 PRINCIPIOS DE DISEÑO DE UN ISA Principio de diseño #1: La simplicidad favorece la regularidad Instrucciones de tres operandos. El HW para un número variable de operandos es más complejo que para un número de operandos fijo. Principio de diseño #2: Más pequeño, más rápido 32 registros de propósito general de 32 bits cada uno (MIPS word: 32 bits) Los operandos de una instrucción se eligen entre los 32 registros de propósito general. Un número de registros elevado incrementa el ciclo de reloj (existe un compromiso entre el numero de registros y el ciclo de reloj). El número de registros influye en el número de bits necesarios para su codificación en el formato de instrucción.

20 OPERACIONES DEL HARDWARE DEL COMPUTADOR Todo computador debe ser capaz de realizar operaciones aritméticas a = b + c; add a,b,c Lenguaje CFormato MIPS ¿Cómo seria la codificación en lenguaje MIPS de la siguiente instrucción? a = b + c + d + e; add a,b,c# a = b + c add a,a,d# a = b + c + d add a,a,e # a = b + c + d + e Lenguaje C Formato MIPS comentarios instrucciones Restricción Las instrucciones aritméticas en el MIPS tienen formato fijo realizando solamente una operación y teniendo 3 variables

21 OPERACIONES DEL HARDWARE DEL COMPUTADOR Ejemplo ¿Cuál será el código generado por un compilador para la siguiente porción de programa? a = b + c; d = a - e; add a,b,c# a = b + c sub d,a,e# a = a - e Ejemplo ¿Cuál será el código generado por un compilador para la siguiente porción de programa? f = (g + h) – (i + j); Solamente una operación es hecha por instrucción. Necesidad de variables temporales (t0,t1). add t0,g,h# t0 = g + h add t1,i+j# t1 = i – j Sub f,t0,t1# f = t0 – t1

22 OPERANDOS Y REGISTRADORES Lenguajes de alto nivelLenguaje ensamblador El numero de operandos (variables) puede variar. El numero de operandos es fijo. En C cada variable tiene una localización en memoria, pudiéndose reservar tantas posiciones de memoria como variables se necesiten. No se permite el uso de variables. En el caso del ensamblador los bloques básicos de memoria son los registros y su numero es limitado y dependiente del procesador (32 registros para el caso del MIPS) int a,b,c;

23 REGISTROS Registros MIPS El ISA del MIPS tiene 32 registros (el x86 tiene 8 registros). Cada registro tiene 32 bits de tamaño (en las arquitecturas mas modernas de 64 bits el tamaño de estos es de 64 bits). Word Entidad de 4 bytes (32 bits). En MIPS existe una convención de nombres para referirnos a los registros, la convención de $xy, donde: $s0 - $s7: para variables en C y java. $t0 - $t9: para variables temporales.

24 OPERACIONES DEL HARDWARE DEL COMPUTADOR f =(g + h)-(i + j); Solución: Supongamos que las variables f, g, h, i y j, son asignadas a los registros $s0, $s1, $s2, $s3 y $s4 respectivamente. add $t0,$s1,$s2# temporal t0 = g + h add $t1,$s3,$s4# temporal t1 = i – j Sub $s0,$t0,$t1# f = (g + h) – (i + j) Ejemplo Según lo anterior, ¿Cuál será el código generado por un compilador para la siguiente porción de programa?

25 OPERANDOS DE MEMORIA Además de variables simples, los lenguajes de alto nivel poseen estructuras de datos complejas (estructuras, arreglos). Por su tamaño, estas estructuras no se pueden almacenar en los GPRs, sino en memoria. Las operaciones aritméticas MIPS son posibles sólo entre registros. Instrucciones de transferencia de datos: Transfieren datos entre la memoria y los registros Para acceder a una palabra en memoria, la instrucción debe suministrar su dirección en memoria. 234 Memoria (Vista como un vector) Dirección Dato Memoria[2] = 72 ATENCIÓN: esta idea será refinada más adelante Dirección Contenido

26 DISPOSICION DE MEMORIA La mayor parte de las arquitecturas pueden direccionar bytes individuales. ¿Cómo se disponen en memoria los bytes de un valor escalar de múltiples bytes? Ejemplo: Dato (32 bits): 0x Most Significant Byte (MSB): 0x12. Least Significant Byte (LSB): 0x78 Dirección: 0x184 Memoria direccionable por bytes IBM360/370, Motorola 68K, SPARC, MIPS, ARM9 Intel 80x86, Pentium, VAX, Alpha, MIPS, ARM9

27 OPERANDOS DE MEMORIA RECAPITULANDO Se tiene un vector A = [0,0,0,0,15], con 5 posiciones, comenzando en la dirección de memoria 102. Esta dirección es llamada de dirección base del vector. Así, 102 es la dirección de A[0],103 y de A[1],...,106 y de A[4]. Datos Direcciones Dirección base de A

28 OPERANDOS DE MEMORIA Los valores deben ser traídos (fetched) de memoria antes de que las instrucciones (add y sub) puedan operar sobre ellos. Register Memory Register Memory Load word lw $t0, memory-address lw $t0, offset(registro_base) Store word sw $t0, memory-address sw $t0, offset(registro_base) Dirección de la memoria accedida es dada por la suma del offset (valor constante) con el contenido del registrador base.

29 OPERANDOS DE MEMORIA (INSTRUCCIÓN LOAD WORD, LW) Suposiciones: A es un arreglo de 100 posiciones El compilador asocia h con el registro $s2 La dirección base de A está en $s3 Cómo se compilaría: g = h+A[8]; Compilación usando instrucciones de transferencia de datos Solución: Un operando está en memoria. Es necesario transferirlo a un registro mediante la instrucción load word, lw lw $t0, 8($s3) # registro $t0 almacena A[8] # el offset será refinado en breve Offset Base register Ambos operandos de la suma están en registros add $s1, $s2, $t0# g = h+A[8]

30 COMENTARIOS SOBRE LA TRADUCCION ANTERIOR g = h+A[8]; lw $t0, 8($s3) add $s1,$s2,$t0 La traducción anterior no toma en cuenta el hecho de como el MIPS direcciona las palabras de la memoria. La dirección de una palabra corresponde a la dirección de uno de sus 4 bytes (MIPS word: 32 bits). Las direcciones de palabras contiguas difieren en 4 Las palabras se ubican en direcciones múltiplo de 4 (restricción de alineamiento que garantiza transferencias de datos más rápidas)

31 RESTRICCIONES DE ALINEAMIENTO El acceso a objetos de tamaño mayor a un byte debe ser alineado El acceso a un objeto con tamaño de s bytes en la dirección de byte A está alineado si A mod s = 0 ¿Por qué se diseñan procesadores con restricciones de alineamiento? Soportar accesos desalineados eleva la complejidad del HW. El acceso a una dirección desalineada toma varias referencias alineadas a memoria. Los programas con accesos alineados tienen mejor rendimiento.

32 OPERANDOS DE MEMORIA (INSTRUCCIÓN STORE WORD, SW) Suposiciones: A es un arreglo de 100 palabras (word). El compilador asocia g y h con los registros $s1 y $s2. La dirección base de A está en $s3 Cómo se compilaría: g = h+A[8]; Compilación usando instrucciones de transferencia de datos Solución: Un operando está en memoria. Es necesario transferirlo a un registro mediante la instrucción load word, lw lw $t0, 32($s3) # registro $t0 almacena A[8] # el offset será refinado en breve Offset Base register Ambos operandos de la suma están en registros add $s1, $s2, $t0# g = h+A[8]

33 OPERANDOS DE MEMORIA (INSTRUCCIÓN LOAD WORD, LW) Suposiciones: A es un arreglo de 100 palabras. El compilador asocia h con el registro $s2 La dirección base de A está en $s3. Cómo se compilaría: A[12] = h+A[8]; Compilación de una sentencia en C cuando un operando está en memoria Solución: Una sentencia en C con dos operandos en memoria lw $t0, 32($s3) # registro $t0 almacena A[8] # Offset correcto add $t0, $s2, $t0 # registro $t0 almacena h+A[8] El resultado se lleva a memoria con la instrucción store word, sw sw $t0, 48($s3)# almacena h+A[8] en A[12]

34 DIRECCION ABSOLUTA DE LA POSICION 3 DEL VECTOR (i = 3) Registrador base $s2 Variable i (i=3) ($s4) Desplazamiento (offset): 4*i = 12 Dirección A[3]: ($s2)+12 A

35 EJEMPLO: MEMORIA Y VECTORES Suposiciones: A es un arreglo de 100 palabras. El compilador asocia g, h e i con los registros $s1, $s2 y $s4. La dirección base de A está en $s3. Cómo se compilaría: g = h+A[i]; Solución: Requerimos primero calcular la dirección de A[i]. Antes de sumar i a la dirección base de A, debemos multiplicar i por 4. Vamos hacer esto por ahora de la siguiente forma: add $t1, $s4, $s4 # $t1=i+i=2*i add $t1, $t1, $t1 # $t1=2*i+2*i=4*i Para coger A[i], sumamos $t1 con la dirección base de A, dada en $s3 (Recordar diapositiva anterior): add $t1, $t1, $s3 # $t1 = Dirección A[i]

36 EJEMPLO: MEMORIA Y VECTORES Solución continuación: Ahora podemos cargar A[i] para un registrador temporal, y realizar la suma, que será almacenada en g: lw $t0, 0($t1) # temporal $t0=A[i] add $s1, $s2, $t0 # g = h + A[i]

37 OPERANDOS INMEDIATOS Más del 50% de las instrucciones aritméticas del MIPS tienen como uno de sus operandos una constante. Una instrucción inmediata usa un numero constante como una de sus entradas (en vez de un registro) Instrucción suma inmediata addi $s3, $s3, 4# $s3 = $s3 + 4 Principio de diseño #3: Hacer el caso mas común mas rápido Como los operandos constantes son muy comunes, el permitir su uso en las instrucciones las hace más rápidas que si las constantes fueran cargadas desde memoria

38 EXTENCION DE SIGNO Busca que cuando se represente un número usando un número mayor de bits se conserve su valor numérico En la arquitectura MIPS varias instrucciones involucran extensión de signo: addi :extiende el valor inmediato lb, lh :extienden el dato (byte, media palabra) cargado beq, bne :extienden el desplazamiento La extensión de signo consiste en replicar el bit de signo hacia la izquierda Los valores sin signo se extienden con ceros Ejemplo: extensión de 8 a 16 bits +2: => –2: =>

39 ARQUITECTURA MIPS (ESTADO ACTUAL DE ESTUDIO)

40 CONCEPTO DE PROGRAMA ALMACENADO Termino usado para referirse al modelo de von Neumann Las instrucciones se representan como números, y como tales son indistinguibles de los datos Los programas se almacenan en una memoria modificable (que puede ser escrita y leída) justo como los datos. Ciclo de búsqueda y ejecución: Las instrucciones son buscadas y colocadas en un registro especial. Los bits en el registro controlan las acciones subsecuentes. Se busca la próxima instrucción y se continua.

41 REPRESENTACION DE LAS INSTRUCCIONES Tanto las instrucciones como los datos se representan como cadenas de dígitos binarios. Cada instrucción está conformada por campos numéricos puestos uno tras otro. Como los registros son los operandos de casi todas las instrucciones, existe una convención para asociar sus nombres con números.

42 REPRESENTACION DE LAS INSTRUCCIONES Representación simbólica de una instrucción (ensamblador) add $t0, $s1, $s2 Representación decimal $s1$s2$t0 campo Representación binaria (lenguaje de maquina) bits5 bits 6 bits Formato de instrucción Las instrucciones MIPS son de 32 bits, al igual que los datos (Principio de diseño #1: la simplicidad favorece la regularidad)

43 REPRESENTACION DE LAS INSTRUCCIONES ¿Qué pasa si una instrucción requiere campos más grandes que estos? Instrucción load: dos registros y una constante (offset) Campo de 5 bits Offset [0..31]Demasiado pequeño para ser útil!!! Tenemos un conflicto entre el deseo de mantener todas las instrucciones de la misma longitud y el deseo de tener un solo formato de instrucción registro 6 bits5 bits 6 bits campo Principio de diseño #4: Un buen diseño requiere buenos compromisos Conservar las instrucciones MIPS de 32 bits Crear diferentes formatos de instrucción para diferentes categorías de instrucciones

44 FORMATOS DE INSTRUCCIÓN MIPS Formato R (register) Operaciones ALU registro-registro: rd rs funct rt opcode:operación básica de la instrucción rs:primer registro de origen rt:segundo registro de origen rd:registro de destino (resultado de la operación) shamt:cantidad de desplazamiento funct:función (define la variante especifica de la operación descrita en el opcode) opcodersrtrdshamtfunct 6 bits5 bits 6 bits

45 FORMATOS DE INSTRUCCIÓN MIPS Formato I (immediate) Operaciones con valores inmediatos: rt rs op {constant or address} Instrucciones de transferencia de datos (load/store) opcode: operación básica de la instrucción rs: primer registro de origen rt: registro de destino (resultado de la operación) constant or address:constante o dirección de 16 bits (este valor puede ser tratado como un valor con o sin signo, de acuerdo con la instrucción) opcodersrtconstant or address 6 bits5 bits 16 bits

46 FORMATOS DE INSTRUCCIÓN MIPS Demasiados formatos de instrucción hacen más complejo el HW La complejidad se puede reducir si los formatos son similares Estos dos formatos se diferencian por el valor del opcode De esta forma el HW sabe como tratar la parte restante de la instrucción opcodersrtconstant or address 6 bits5 bits 16 bits opcodersrtrdshamtfunct 6 bits5 bits 6 bits Formato R Formato I

47 FORMATOS DE INSTRUCCIÓN MIPS Ejercicio: Si $t1 apunta a la base del vector A y $s2 corresponde a la variable h, compile la siguiente declaración en lenguaje C en instrucciones ensamblador del MIPS. Luego escriba las instrucciones de código de máquina correspondientes a las instrucciones ensamblador A[300] = h+A[300];

48 FORMATOS DE INSTRUCCIÓN MIPS Solucion: A[300] = h+A[300]; Instrucciones ensamblador MIPS: lw $t0, 1200($t1) # registro $t0 almacena A[300] add $t0, $s2, $t0 # registro $t0 almacena h+A[300] sw $t0, 1200($t1) # almacena h+A[300] en A[300] Instrucciones de código de máquina: Escritas en decimal: Escritas en binario:

49 ARQUITECTURA MIPS (ESTADO ACTUAL DE ESTUDIO)

50 OPERACIONES LOGICAS Proporcionan la capacidad de operar sobre campos de bits o bits individuales dentro de una palabra. Operación lógica Operador C Operador Java Ejemplo MIPSSignificado and&& and $s1,$s2,$s3 $s1 = $s2 & $s3 or|| or $s1,$s2,$s3 $s1 = $s2 | $s3 nor nor $s1,$s2,$s3 $s1 = ~($s2 | $s3) and immediate&& andi $s1,$s2,100 $s1 = $s2 & 100 or immediate|| ori $s1,$s2,100 $s1 = $s2 | 100 shift left logical<< sll $s1,$s2,10 $s1 = $s2 << 10 shift right logical>>>>> srl $s1,$s2,10 $s1 = $s2 >> 10

51 OPERACIONES LOGICAS Las instrucciones de desplazamiento lógico (shift logical) mueven los bits de una palabra hacia la izquierda o la derecha, llenando los bits vacíos con ceros Ejemplo instrucción de desplazamiento lógico en ensamblador: sll $t2, $s0, 4 #reg $t2 = reg $s0 << 4 bits Versión en código de máquina de la instrucción previa: opcodersrtrdshamtfunct Desplazar hacia la izquierda un número i de bits equivale a multiplicar por 2 i

52 OPERACIONES LOGICAS La instrucción AND realiza una operación bit a bit que deja un 1 en el resultado sólo si ambos bits de los operandos son 1 Ejemplo (valores de los registros escritos en binario): Si $t2: y $t1: la instrucción and $t0, $t1, $t2 #reg $t0 = reg $t1 & reg $t2 produce $t0: Instrucción útil para enmascarar bits (forzar bits a cero de acuerdo con el patrón aplicado)

53 OPERACIONES LOGICAS La instrucción OR realiza una operación bit a bit que deja un 1 en el resultado si uno o ambos de los bits de los operandos es 1 Ejemplo (valores de los registros escritos en binario): Si $t2: y $t1: la instrucción or $t0, $t1, $t2 #reg $t0 = reg $t1 | reg $t2 produce $t0: Instrucción útil para forzar bits a 1 de acuerdo con el patrón aplicado

54 OPERACIONES LOGICAS La operación lógica NOT es la negación (toma un operando y deja un 1 en el resultado si el bit del operando es cero, y viceversa) Para ser fiel al formato de dos operandos de entrada, MIPS no incluye la instrucción NOT, pero sí incluye la instrucción NOR (NOT OR) A NOR 0 = NOT (A or 0) = NOT A Ejemplo (valores de los registros escritos en binario): Si $t1: y $t3: la instrucción nor $t0, $t1, $t3 #reg $t0 = ~(reg $t1 | reg $t3) produce $t0:

55 ARQUITECTURA MIPS (ESTADO ACTUAL DE ESTUDIO)

56 REFERENCIAS Computer organization and design. The hardware/software interface, 3rd ed., Chapter 2. D. Patterson and J. Hennessy. Morgan Kaufmann Publishers


Descargar ppt "CLASE 10. QUE ES UN COMPUTADOR Niveles de abstracción Todos los computadores consisten de 5 componentes: Procesador: (1) Datapath y (2) el control. (3)"

Presentaciones similares


Anuncios Google