circuitos digitales ii

34
Circuitos Digitales Circuitos Digitales II II Elementos sobre la Arquitectura del Elementos sobre la Arquitectura del Conjunto de Instrucciones Conjunto de Instrucciones Semana No.2 Semana No.2 Semestre 2008-2 Semestre 2008-2 Prof. Gustavo Patiño Prof. Gustavo Patiño [email protected] Prof. Eugenio Duque Prof. Eugenio Duque [email protected] Departamento de Ingeniería Electrónica Departamento de Ingeniería Electrónica Facultad de Ingeniería Facultad de Ingeniería 1

Upload: vernon

Post on 11-Jan-2016

52 views

Category:

Documents


1 download

DESCRIPTION

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 [email protected] Prof. Eugenio Duque [email protected]. Temario. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Circuitos Digitales II

Circuitos Digitales IICircuitos Digitales II

Elementos sobre la Arquitectura del Conjunto de Elementos sobre la Arquitectura del Conjunto de InstruccionesInstrucciones

Semana No.2Semana No.2Semestre 2008-2Semestre 2008-2

Prof. Gustavo PatiñoProf. Gustavo Patiñ[email protected]

Prof. Eugenio DuqueProf. Eugenio [email protected]

Departamento de Ingeniería ElectrónicaDepartamento de Ingeniería Electrónica

Facultad de IngenieríaFacultad de Ingeniería

1

Page 2: Circuitos Digitales II

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.

TemarioTemario

2Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 3: Circuitos Digitales II

Repaso : Repaso : Arquitectura del Conjunto de Arquitectura del Conjunto de Instrucciones Instrucciones (ISA)(ISA)

3Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 4: Circuitos Digitales II

Repaso : Repaso : Ventajas y desventajas de Ventajas y desventajas de diferentes ISAsdiferentes ISAsArquitectura Ventajas Desventajas

Stack Codificació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.

Accumulator Instrucció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 instrucciones Un conjunto complejo de instrucciones. La decodificación es compleja. Posibilidad de dimensión variable de las instrucciones.

Load-store Operandos ubicados en registros. Es posible utilizar directamente un operando sin la necesidad de más instrucciones.

Instrucciones más grandes y codificación compleja.

4Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 5: Circuitos Digitales II

Repaso : Repaso : Procesadores RISCProcesadores 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

5Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 6: Circuitos Digitales II

Repaso : Repaso : Modos de DireccionamientoModos de Direccionamiento

6Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 7: Circuitos Digitales II

Repaso : Repaso : Codificación de las Codificación de las InstruccionesInstrucciones 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.

7Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 8: Circuitos Digitales II

Repaso : Repaso : Ejecución de una aplicaciónEjecución de una aplicación

8Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 9: Circuitos Digitales II

Procesador MIPS

9

Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

2008 - 2

Page 10: Circuitos Digitales II

Repaso : Repaso : C C vsvs el ISA del MIPS-I el ISA del MIPS-I

10Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 11: Circuitos Digitales II

Porque tiene RegistrosPorque 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.

11Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 12: Circuitos Digitales II

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 MIPSRegistros del MIPS

12Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 13: Circuitos Digitales II

Uso de registrosUso 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 ?

13Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 14: Circuitos Digitales II

Identificación de los Identificación de los RegistrosRegistros 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.

14Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 15: Circuitos Digitales II

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 Política de uso de las convencionesconvenciones

15Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 16: Circuitos Digitales II

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 MIPSTipos de datos del MIPS

16Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 17: Circuitos Digitales II

Formato de las InstruccionesFormato 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

17Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 18: Circuitos Digitales II

Ejemplo en CEjemplo en C

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

18Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 19: Circuitos Digitales II

Operadores aritméticosOperadores 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.

19Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 20: Circuitos Digitales II

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

20Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 21: Circuitos Digitales II

Números con signo y sin Números con signo y sin signosigno Dado un b[n-1;0] en un registro o en

memoria Valor sin signo:

Valor con signo (en complemento a dos)

21Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 22: Circuitos Digitales II

Desborde aritmético Desborde aritmético (Overflow)(Overflow)

22Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 23: Circuitos Digitales II

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

23Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 24: Circuitos Digitales II

Resumen: Aritmética simple en Resumen: Aritmética simple en el MIPSel MIPS

24Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 25: Circuitos Digitales II

Organización de la memoriaOrganización de la memoria

0 8 bits de datos

1 8 bits de datos

2 8 bits de datos

3 8 bits de datos

4 8 bits de datos

5 8 bits de datos

6 8 bits de datos

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.

25Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 26: Circuitos Digitales II

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.

Organización de la memoria Organización de la memoria (…cont)(…cont)

0 32 bits de datos

4 32 bits de datos

8 32 bits de datos

12 32 bits de datos

16 32 bits de datos

26Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 27: Circuitos Digitales II

Transferencia de datos de Transferencia de datos de memoriamemoria 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.

27Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 28: Circuitos Digitales II

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

Page 29: Circuitos Digitales II

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.

29Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 30: Circuitos Digitales II

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)

30Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 31: Circuitos Digitales II

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

31Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 32: Circuitos Digitales II

Diagrama del arreglo en memoria

32Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 33: Circuitos Digitales II

Ejemplo de arreglo

Considere el ejemploa= 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]

33Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 34: Circuitos Digitales II

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.

34Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2