La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre 2008-2 Prof. Gustavo Patiño

Presentaciones similares


Presentación del tema: "Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre 2008-2 Prof. Gustavo Patiño"— Transcripción de la presentación:

1 Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre 2008-2 Prof. Gustavo Patiño gpatino@udea.edu.co Prof. Eugenio Duque eaduque@udea.edu.co Departamento de Ingeniería Electrónica Facultad de Ingeniería 1

2 Repaso de la última clase Arquitectura del Conjunto de Instrucciones (ISA). Clasificación de ISAs. Ventajas y desventajas de diferentes ISAs. Evolución RISC. El ISA del MIPS. Registros en el MIPS. Formato de las instrucciones. Operadores aritméticos. Transferencia de datos de memoria Resumen. Temario 2 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

3 Repaso : Arquitectura del Conjunto de Instrucciones (ISA) 3 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

4 Repaso : Ventajas y desventajas de diferentes ISAs ArquitecturaVentajasDesventajas StackCodificación simple, ubicación fija para el operando y el resultado. El operando se debe cargar en la pila. El operando debe estar en el orden correcto dentro de la pila. AccumulatorInstrucción simple dado que sólo se especifica un operando. La operación debe ser en el orden correcto. Es necesario tener en el acumulador el operando correcto. Register- Memory Menos número de instruccionesUn conjunto complejo de instrucciones. La decodificación es compleja. Posibilidad de dimensión variable de las instrucciones. Load-storeOperandos ubicados en registros. Es posible utilizar directamente un operando sin la necesidad de más instrucciones. Instrucciones más grandes y codificación compleja. 4 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

5 Repaso : Procesadores RISC Procesadores de servidores o de escritorio Digital Alpha HP PA-RISC IBM & Motorola PowerPC Silicon Graphics MIPS Sun Microsystem SPARC Sistemas Embebidos Advanced RISC Machine ARM Advanced RISC Machine Thumb Hitachi SuperH Mitsubishi M32R Silicon Graphics MIPS16 5 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

6 Repaso : Modos de Direccionamiento 6 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

7 Repaso : Codificación de las Instrucciones Opcode Formato de instrucción Variable : El modo de direccionamiento es incluido en el campo (Intel 80x86). Fijo : Modo de direccionamiento es especificado en el opcode (MIPS, SPARC). Hibrido : Ejemplo IBM 360/70. 7 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

8 Repaso : Ejecución de una aplicación 8 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

9 Procesador MIPS 9 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

10 Repaso : C vs el ISA del MIPS-I 10 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

11 Porque tiene Registros Memory-memory ISA Todas la variables de un HLL son declaradas en memoria. Porqué no operar directamente sobre los operandos de la memoria ? Beneficios de los registros Em cuanto más pequeño, más rápido. Multiple acceso concurrente. Nombres más cortos. Load-Store ISA Las operaciones aritmetica sólo usan operandos basados em registros. Los datos son cargados en registros, se opera sobre ellos, y el resultado se lleva de vuelta a la memoria. Caracterisitca de todos los conjuntos de instrucciones RISC. 11 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

12 CPU 32 32-bit General Purpose Registers – GPRs (r0 –r31). r0 tiene un valor fijo de cero. Dos registros de 32-bit (Hi & Lo) para retener el resultado de una división o multiplicación entera. Un registro de 32 bits para el contador del programa (PC). FPU : Procesador de punto flotante (coprocesador). 32 32-bit floating point registers –FPRs (f0 –f31). Cinco registros de control. Registros del MIPS 12 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

13 Uso de registros Los registros son un recurso finito que necesita ser bien manejado. Por el programador Por el compilador: ubicación de registros. Objetivos: Mantener los datos en los registros tanto como sea posible. Si es posible, siempre use los datos dentro de registros. Problemas Sólo hay disponible un número finito de registros Descargue los registros a la memoria cuando todos los registros estén en uso. Arreglos Demasiados datos para ser almacenados en registros. Cual es el impacto de más o menor número de registros ? 13 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

14 Identificación de los Registros Los registros son identificados por um $ Por convención, es común darles nombres: $zero : contiene el valor cero, físicamente definido. $v0, $v1 : usados para resultados y evaluación de expresiones. $a0 - $a3 : usados para argumentos. $s0, $s1,... $s7 : usados para almacenar valores. $t0, $t1,... $t9 : usados para almacenar valores temporales. Hay más registros que serán definidos posteriormente cuando sean necesarios. Los compiladores usan esta convención de nombres para simplificar la tarea de linking. 14 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

15 El registro 1 es reservado para el programa ensamblador, y los registros 26-27 para uso del sistema operativo. Política de uso de las convenciones 15 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

16 MIPS opera sobre : Enteros de 32 bits (sin signo o en complemento a dos). Números reales de 32 bits (punto flotante de precisión unitaria). Números reales de 64 bits (punto flotante de doble precisión). Los bytes o half words cargados en los GPRs son o cero o expandidos por signo a fin de completar los 32 bits. Solamente unidades de 32 bits pueden ser cargados en los FPRs. Los números reales de 64 bits requieren dos FPRs consecutivos para ser almacenados. Tipos de datos del MIPS 16 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

17 Formato de las Instrucciones El tipo básico de instrucciones tiene cuatro componentes : Nombre de la operación Operando del primer dato-fuente. Operando del segundo dato-fuente. Operando del destino dst, src1 y src2 son los nombres de los registros ($). Ejemplo: Qué hacen las siguientes instrucciones ? add $1, $1, $1 17 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

18 Ejemplo en C Una función sencilla en C : sum_pow2=2 b+c 18 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

19 Operadores aritméticos Considere la línea 5: una operación suma en C. a= b + c; Asuma que las variables están en los registros $1 - $3 respectivamente. Entonces, usando estos registros, el operador add queda como: add $1, $2, $3 # a= b + c Igualmente, el operador sub se usa para representar una resta en el MIPS. sub $1, $2, $3 # a = b – c Recordemos que a, b, y c se están refiriendo a ubicaciones en la memoria. 19 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

20 Operaciones complejas Qué ocurre con operaciones más complejas ? a = b + c + d - e; Es necesario dividirla en instrucciones más simples : add $t0, $s1, $s2# $t0=b + c add $t1, $t0, $s3# $t1=$t0 + d sub $s0, $t1, $s4# a = $t1 - e 20 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

21 Números con signo y sin signo Dado un b[n-1;0] en un registro o en memoria Valor sin signo: Valor con signo (en complemento a dos) 21 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

22 Desborde aritmético (Overflow) 22 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

23 Constantes A menudo se desea poder especificar de manera explicita un operando en la instrucción: inmediato o literal. dst = src1 + 5 Para esos casos, use la instrucción addi. addi dst, src1, inmediato El inmediato es un valor de 16 bits con signo definido entre -2 15 y 2 15 -1; o de signo-extendido de 32 bits. Considere el código en C: a++; Em este caso, se usa el operador addi: Addi $s0, $s0, 1# a = a + 1 23 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

24 Resumen: Aritmética simple en el MIPS 24 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

25 Organización de la memoria 08 bits de datos 1 2 3 4 5 6 Vista como una gran arreglo de una sola dimensión, donde cada registro posee una dirección. Una dirección de memoria es un índice en el arreglo. Direccionamiento por byte significa que un índice apunta a un byte de la memoria. 25 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

26 Para el MIPS, una palabra (word) es de 32 bits, o sea, 4 bytes. 2 32 bytes con direcciones de byte desde 0 hasta 2 32 -1. 2 30 words con direcciones de byte 0, 4, 8,…. 2 32 -4. Las palabras (words) son alineadas. Organización de la memoria (…cont) 032 bits de datos 4 8 1232 bits de datos 1632 bits de datos 26 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

27 Transferencia de datos de memoria Motivación: Los operandos para todas las operaciones lógicas y aritméticas están contenidos en registros. Para operar sobre datos alojados en la memoria principal, es necesario primero copiar los datos a los registros. Las instrucciones para transferencias de datos son usadas para mover datos desde y para la memoria. Una operación de carga (load) mueve datos desde una ubicación de memoria a un registro, Una operación de almacenamiento (store) mueve datos desde un registro a una ubicación de memoria. 27 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

28 Instrucciones de transferencias de datos : load Las instrucciones de transferencias de datos tienen tres partes: Nombre del operador (especificando también tamaño de la transferencia). Registro de destino. Registro de la dirección base y la constante offset. lw dst, offset (base) El valor offset es una constante con signo. 28 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

29 Acceso a memoria Todo el acceso a memoria ocurre a través de cargas y almacenamientos. Pueden ser del tipo word, half-word y bytes. Las cargas y almacenamientos de punto flotante son para accesar registros FP. Modo de direccionamiento basado en desplazamiento. 29 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

30 Ejemplo de carga de datos Considere el ejemplo : a= b + *c ; Use la instrucción lw para cargar. Asuma que a($s0), b($s1), c($s2) 30 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

31 Acceso de arreglos en realidad, los arreglos son punteros a la dirección base en memoria. Ejemplo: La dirección del elemento A[0]. En estos casos se usa el valor de offset para indicar el índice del arreglo. Recuerde que las direcciones están en bytes a fin de multiplicar por el tamaño real del elemento. Considere el arreglo de enteros, donde pow2 es la dirección de base. Así, cada entero requiere 4 bytes. Como ejemplo de un dato que se quiera accesar considere el índice 5, o sea: pow2[5]. Entonces, la dirección de memoria de ese dato es : pow2 + 5*4 31 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

32 Diagrama del arreglo en memoria 32 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

33 Ejemplo de arreglo Considere el ejemplo a= b+ pow2[7]; Use la instrucción lw con offset. Asuma que $s3 = 1000. lw $t0, 28($s3)# $t0 = memory[pow2[7]] add $s0, $s1, $t0# a = b + pow2[7] 33 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2

34 Ejemplo de un arreglo complejo Considere la línea 7 del ejemplo de sum_pow2() ret = pow2[a]; Primero, encuentre el offset correcto. De nuevo asuma que $s3 = 1000. 34 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2


Descargar ppt "Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre 2008-2 Prof. Gustavo Patiño"

Presentaciones similares


Anuncios Google