340 likes | 477 Views
Departamento de Ingeniería Electrónica Facultad de Ingeniería. 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. Temario.
E N D
Departamento de Ingeniería Electrónica Facultad de Ingeniería 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
Temario • 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Repaso : Arquitectura del Conjunto de Instrucciones (ISA) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Repaso : Ventajas y desventajas de diferentes ISAs Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Repaso : Modos de Direccionamiento Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Repaso : Ejecución de una aplicación Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Procesador MIPS Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería 2008 - 2
Repaso : C vs el ISA del MIPS-I Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Registros del MIPS • 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 ? Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Identificación de los Registros • Los registros son identificados por um$<num> • 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Política de uso de las convenciones • El registro 1 es reservado para el programa ensamblador, y los registros 26-27 para uso del sistema operativo. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Tipos de datos del MIPS • 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 • add $1, $1, $1 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Ejemplo en C • Una función sencilla en C : sum_pow2=2b+c Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 addqueda como: add $1, $2, $3 # a= b + c • Igualmente, el operador subse 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Desborde aritmético (Overflow) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. addidst, src1, inmediato • El inmediato es un valor de 16 bits con signo definido entre -215 y 215-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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Resumen: Aritmética simple en el MIPS Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Organización de la memoria • 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Organización de la memoria (…cont) • Para el MIPS, una palabra (word) es de 32 bits, o sea, 4 bytes. 232 bytes con direcciones de byte desde 0 hasta 232-1. 230 words con direcciones de byte 0, 4, 8,…. 232-4. Las palabras (words) son alineadas. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 copiarlos 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Ejemplo de carga de datos • Considere el ejemplo : a= b + *c ; • Use la instrucción lwpara cargar. • Asuma que a($s0), b($s1), c($s2) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
Diagrama del arreglo en memoria Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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] Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2
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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2