1 / 34

Circuitos Digitales II

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.

vernon
Download Presentation

Circuitos Digitales II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

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

  4. Repaso : Ventajas y desventajas de diferentes ISAs Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  6. Repaso : Modos de Direccionamiento Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

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

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

  10. Repaso : C vs el ISA del MIPS-I Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  12. 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

  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 ? Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  14. 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

  15. 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

  16. 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

  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 • add $1, $1, $1 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  18. 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

  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 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

  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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  22. Desborde aritmético (Overflow) Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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. 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

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

  25. 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

  26. 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

  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 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

  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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  30. 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

  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 Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

  32. Diagrama del arreglo en memoria Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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] Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad 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. Departamento de Ing. Electrónica. Circuitos Digitales IIFacultad de Ingeniería 2008 - 2

More Related