Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre 2008-2 Prof. Gustavo Patiño

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Diseño de la ruta de datos monociclo para la arquitectura MIPS
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
© Dr. Iván E. Calimano Formas, usos, etc.
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
Ing. María Rosa Dámaso Ríos CPU(cuarta semana)
SISTEMA DE NUMEROS NÚMEROS ENTEROS DIVISIBILIDAD NÚMEROS PRIMOS
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Arquitectura de Computadores I
Arquitectura de Computadores I
I S A INSTRUCTION SET ARCHITECTURE
Razonamiento Cuantitativo
UPC Tema: ESPACIO VECTORIAL Rn
1 Circuitos Digitales II Circuitos Digitales II Fundamentos de Arquitectura de Computadores Información sobre el Curso Semana No.1 Semestre Prof.
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
Circuitos Digitales II
Tema 1.- Aritmética. 1.-Usar el algoritmo de Euclides para calcular el máximo común divisor de a y b y expresarlo en función de a y b para: a) a= 56,
Introducción a los Números Fraccionarios
Operaciones con expresiones algebraicas
Circuitos Digitales II Alineamiento en Memoria y Ejecución de un programa Semana No.8 Semestre Prof. Gustavo Patiño Prof. Eugenio.
Circuitos Digitales II
Proyecto para Centros que trabajan una vez por semana.
Expresiones Racionales
Exponentes Racionales y Radicales
Assembly y el Simulador SPIM
66.20 Organización de Computadoras
CLASE 10.
CLASE 12.
Circuitos Digitales II
Expresiones Algebraicas
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
ARQUITECTURA INTEL FORMATOS DE INSTRUCCIÓN
El procesador: la ruta de datos y el control (II Parte)
Circuitos Digitales II
Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre Prof. Gustavo Patiño
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre Prof. Gustavo Patiño Prof. Eugenio.
INTRODUCCIÓN A LA PROGRAMACIÓN
Números enteros.
Arquitectura de Conjunto de Instrucciones (ISA)
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Conceptos Básicos de Java
Circuitos Combinacionales Comunes
Composición Interna de un Procesador
© 2006 Cisco Systems, Inc. Todos los derechos reservados.Información pública de Cisco 1 Listas de control de acceso Acceso a la WAN: capítulo 5.
CLASE 11.
Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División.
Direcciones físicas y direcciones virtuales (lógicas)
ISA (Instruction Set Architecture)
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
MIPS Intermedio.
Unidad 2: Organización del CPU
(CC) , José M. Foces-Morán.
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Lenguaje de Programación cap. 1 Estructura del Computador.
Aritmética PARA COMPUTADORAS
Tema 2: Lenguaje máquina
Arquitectura de Von Neumann
Datapath para las instrucciones de carga y almacenamiento (load/store)
Organización del Computador
Tema 7: UNIDAD CENTRAL DE PROCESOS (CPU) Cáceres Pari Ángel Raúl
Capítulo 4 CPU y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
Modos de direccionamiento
MIPS Intermedio.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Transcripción de la presentación:

Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre Prof. Gustavo Patiño Prof. Eugenio Duque Departamento de Ingeniería Electrónica Facultad 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. Temario 2 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Repaso : Arquitectura del Conjunto de Instrucciones (ISA) 3 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Repaso : Ventajas y desventajas de diferentes ISAs ArquitecturaVentajasDesventajas StackCodificació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. AccumulatorInstrucció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 instruccionesUn conjunto complejo de instrucciones. La decodificación es compleja. Posibilidad de dimensión variable de las instrucciones. Load-storeOperandos ubicados en registros. Es posible utilizar directamente un operando sin la necesidad de más instrucciones. Instrucciones más grandes y codificación compleja. 4 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 5 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Repaso : Modos de Direccionamiento 6 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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

Repaso : Ejecución de una aplicación 8 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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

Repaso : C vs el ISA del MIPS-I 10 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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. 11 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

CPU 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) bit floating point registers –FPRs (f0 –f31). Cinco registros de control. Registros del MIPS 12 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 ? 13 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Identificación de los Registros Los registros son identificados por um $ 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. 14 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

El registro 1 es reservado para el programa ensamblador, y los registros para uso del sistema operativo. Política de uso de las convenciones 15 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 MIPS 16 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 17 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Ejemplo en C Una función sencilla en C : sum_pow2=2 b+c 18 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 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. 19 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 20 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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) 21 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Desborde aritmético (Overflow) 22 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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. addi dst, src1, inmediato El inmediato es un valor de 16 bits con signo definido entre y ; 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 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Resumen: Aritmética simple en el MIPS 24 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Organización de la memoria 08 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. 25 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Para el MIPS, una palabra (word) es de 32 bits, o sea, 4 bytes bytes con direcciones de byte desde 0 hasta words con direcciones de byte 0, 4, 8,… Las palabras (words) son alineadas. Organización de la memoria (…cont) 032 bits de datos bits de datos 1632 bits de datos 26 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 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. 27 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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

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. 29 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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) 30 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 31 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Diagrama del arreglo en memoria 32 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

Ejemplo de arreglo Considere el ejemplo a= b+ pow2[7]; Use la instrucción lw con offset. Asuma que $s3 = lw $t0, 28($s3)# $t0 = memory[pow2[7]] add $s0, $s1, $t0# a = b + pow2[7] 33 Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería

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 = Departamento de Ing. Electrónica. Circuitos Digitales II Facultad de Ingeniería