circuitos digitales ii
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 PresentationTRANSCRIPT
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
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
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
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
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
Repaso : Repaso : Modos de DireccionamientoModos de Direccionamiento
6Departamento de Ing. Electrónica. Circuitos Digitales II
Facultad de Ingeniería 2008 - 2
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
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
Procesador MIPS
9
Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería
2008 - 2
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
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
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
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
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
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
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
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
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
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
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
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
Desborde aritmético Desborde aritmético (Overflow)(Overflow)
22Departamento de Ing. Electrónica. Circuitos Digitales II
Facultad de Ingeniería 2008 - 2
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
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
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
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
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
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
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
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
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
Diagrama del arreglo en memoria
32Departamento de Ing. Electrónica. Circuitos Digitales II
Facultad de Ingeniería 2008 - 2
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
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