La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Circuitos Digitales II

Presentaciones similares


Presentación del tema: "Circuitos Digitales II"— Transcripción de la presentación:

1 Circuitos Digitales II
Departamento de Ingeniería Electrónica Facultad de Ingeniería Circuitos Digitales II Introducción al procesador MIPS Semana No. 2 Semestre Prof. Eugenio Duque Pérez Prof. Gustavo Patiño A. (prof. en comisión)

2 Recordando de la última clase…

3 Qué es un computador ? La verdad un computador luce más como esto….

4 Tendencias – Tipos de Computadores

5 Los cinco componentes de cualquier computador
Con: registros para almacenar variables, y modos de direccionamiento para accesar la memoria.

6 Abstracción: Evolución de los lenguajes
Los primeros programadores se comunicaban con los computadores usando números binarios. El crecimiento en la complejidad de las aplicaciones exigió nuevas notaciones que fueran traducidas a números binarios (ensamblador). Lenguaje ensamblador : Exige del programador “pensar” como la máquina. Esto, a su vez, exigió el desarrollo de nuevas notaciones más poderosas y expresivas (HLL) a fin de aprovechar todo el potencial que iba ofreciendo cada nueva máquina. Evolución

7 Arquitectura del Conjunto de Instrucciones (ISA)

8 Evolución del conjunto de instrucciones
La tendencia hasta el comienzo de la década de los 80’s estaba basada en una filosofía CISC (Complex Instruction Set Computers) para diseño del conjunto de instrucciones. Su conjunto se compone de muchas instrucciones. Posee instrucciones complejas que realizan la tarea de un conjunto de instrucciones más sencillas. (p.e una instrucción de lazo). Posee muchos formatos de instrucción y modos de direccionamiento. Posee diferentes clases de registros. Explicar modos de direcionamiento

9 Evolución del conjunto de instrucciones (…cont)
Desde el comienzo de la década de los 80s, la tendencia en el diseño de las nuevas ISAs ha estado basada en la filosofía RISC (Reduced Instruction Set Computers). Principios de esta filosofía: La simplicidad favorece la regularidad Todas las instrucciones son del mismo tamaño. Todas las instrucciones del mismo tipo siguen el mismo formato.

10 Evolución del conjunto de instrucciones (…cont)
Principios de la filosofía RISC (…cont) : En cuanto más pequeño, más rápido. Refiriéndose a un menor número de instrucciones. Un número relativamente bajo de tipos de registros. Un buen diseño demanda (exige) compromiso. Algunos pocos formatos de instrucción para manejar necesidades especiales. Haga que el caso más común sea rápido. Las instrucciones que son ejecutadas más frecuentemente o las características más utilizadas necesitan ser optimizadas en la arquitectura del HW. Especificación de pipeling (operación multi-ciclo), ejecución en un solo ciclo, tecnología de compilación, etc. Explicar formatos de instrucción y necesidades especiales

11 Procesador RISC de propósito general.
Procesador MIPS Procesador RISC de propósito general.

12 El ISA del MIPS MIPS: Compañía semiconductora que construyó uno de las primeras arquitecturas RISCs del mercado. Fundada por J. Hennessy. El MIPS prevalece en un mayor número de aplicaciones, en su mayoría embebidas, en donde se usa como el núcleo del procesador de un System on Chip (SoC).

13 Breve historia del MIPS

14 Ejecución de una aplicación

15 C vs el ISA del MIPS-I

16 Porque tiene Registros ?
Memory-memory ISA Todas la variables de un HLL son declaradas en memoria. No es posible operar directamente sobre los operandos ubicados memoria. Beneficios de los registros En cuanto más pequeño, más rápido. Múltiple acceso concurrente. Nombres más cortos. Load-Store ISA Las operaciones aritmética sólo usan operandos basados en registros. Los datos son cargados en registros, se opera sobre ellos, y el resultado se lleva de vuelta a la memoria. Característica de todos los conjuntos de instrucciones RISC.

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

18 Identificación de los Registros
Los registros son identificados por un $<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.

19 Política de uso de las convenciones
El registro 1 es reservado para uso del programa ensamblador, y los registros para uso del sistema operativo.

20 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 simple). 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.

21 Ejemplo en C Una función sencilla en C : sum_pow2=2b+c

22 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 $2,$3,$4 respectivamente. Entonces, usando estos registros, el operador add queda como: add $2, $3, $ # a= b + c Igualmente, el operador sub se usa para representar una resta en el MIPS. sub $2, $3, $ # a = b – c Recordemos que a, b, y c se están refiriendo a ubicaciones en la memoria.

23 Operaciones complejas
Qué ocurre con operaciones más complejas ? a = b + c + d - e; Es necesario dividirla en instrucciones más simples. Asociando a,b,c,d,e a los registros : $s0,……,$s4 respectivamente add $t0, $s1, $s2 # $t0=b + c add $t1, $t0, $s3 # $t1=$t0 + d sub $s0, $t1, $s4 # a = $t1 - e

24 Constantes A menudo se desea poder especificar de manera explicita un operando en la instrucción (operando inmediato) 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 -215 y 215-1; o de signo-extendido de 32 bits. Considere el código en C: a++; En este caso, se usa el operador addi: Addi $s0, $s0, 1 # a = a + 1

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

26 Desborde aritmético (Overflow)

27 Resumen: Aritmética simple en el MIPS

28 Overflow Detection MIPS detects Overflow with an exception, also called interrupt on many computers. An exception or interrupt is an unscheduled procedure call. The address that generated the exception is saved in a EPC(Exception Program Counter) register, and the computer jumps to a predefined address for running the corresponding exception routine. 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

29 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. 8 bits de datos 1 2 3 4 5 6

30 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 230 words con direcciones de byte 0, 4, 8,… Las palabras (words) son alineadas. 32 bits de datos 4 8 12 16

31 Transferencia de datos de memoria
Motivación: Los operandos para todas las operaciones lógicas y aritméticas deben estar contenidos en registros. Para operar sobre datos alojados en la memoria principal, es necesario primero copiar los mismos a los registros. Las instrucciones para transferencias de datos son usadas para mover datos desde y hacia la memoria. Una operación de carga (load) mueve datos desde una ubicación de memoria hacia un registro, Una operación de almacenamiento (store) mueve datos desde un registro hacia una ubicación de memoria.

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

33 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 están ligadas a los registros FP. Modo de direccionamiento basado en desplazamiento.

34 Ejemplo de carga de datos
Considere el ejemplo : a= b + *c ; /* Recordar que c es una variable que almacena la dirección de otra variable * : valor apuntado por .. &: address de.. */ Use la instrucción lw para cargar. Asuma que a($s0), b($s1), c($s2)

35 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 apuntan a los 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

36 Diagrama del arreglo en memoria

37 Ejemplo de arreglo Considere el ejemplo
a= b+ pow2[7]; Use la instrucción lw con offset. Asuma que $s3 = 1000, dirección base del arreglo lw $t0, 28($s3) # $t0 = memory[ *4] add $s0, $s1, $t0 # a = b + pow2[7]

38 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. sll $t0, $s0, # $t0 = 4*a : shift left by 2 add $t1, $s3, $t0 # $t1 = pow2 +4*a lw $v0, 0($t1) # $v0 = Memory [$t1]

39 Bibliography MIPS general information.
Computer Organization & Design, 3rd Edition. The hardware/software Interface. David Patterson & J. Hennessy MIPS general information. MIPS architecture – Wikipedia. Mhtml document MIPS manuals MIPS Quick tutorial.mhtml. MIPS Instruction Reference.mhtml MipsReference.pdf Spim_Instruction_Set.pdf


Descargar ppt "Circuitos Digitales II"

Presentaciones similares


Anuncios Google