fundamentos de computadores

Embed Size (px)

Citation preview

FUNDAMENTOS DE COMPUTADORESCURSO 2005/2006 1. PROYECTO DOCENTE 2. TRANSPARENCIAS DEL CURSO 3. GUIONES DE PRCTICAS 4. COLECCIN DE PROBLEMAS DE EXMENES

Carmelo Cuenca Hernndez y Francisca Quintana Domnguez

PROYECTO DOCENTE

CURSO: 2005/06

13877 - FUNDAMENTOS DE COMPUTADORES

ASIGNATURA: CENTRO: TITULACIN: DEPARTAMENTO: REA: PLAN: CURSO: CRDITOS:

13877 - FUNDAMENTOS DE COMPUTADORES Escuela Universitaria Informtica Ingeniero Tcnico en Informtica de Sistemas INFORMTICA Y SISTEMAS Arquitectura Y Tecnologa de Computadores 11 - Ao 2000 ESPECIALIDAD: Primer curso IMPARTIDA: Segundo cuatrimestre TIPO: Obligatoria 4,5 TERICOS: 3 PRCTICOS: 1,5

Descriptores B.O.E. Organizacin bsica de los computadores: elementos bsicos; esquemas de funcionamiento, desripcin de una mquina bsica, programacin. Temario 1 Arquitectura de un computador y jerarqua de niveles (3horas) 2 Arquitectura del nivel lenguaje mquina (10 horas) 2.1 Caractersticas generales del lenguaje mquina (3 horas) 2.2 Tipos de operandos e instrucciones (2 horas) 2.3 Modos de direccionamiento y formato de las instrucciones (2 horas) 2.4 Subrutinas (3 horas) 3 Diseo del procesador (15 horas) 3.1 Diseo y control cableado de un camino de datos monociclo (4 horas) 3.2 Diseo y control cableado de un camino de datos multiciclo ( 8 horas) 3.3 Diseo y control microprogramado de un camino de datos multiciclo (3 horas) 4 Rendimiento ( 2 horas) Conocimientos Previos a Valorar Los alumnos deberan haber cursado y aprobado la signatura de Sistemas Digitales, donde adquiriran los conocimientos acerca de los sistemas de numeracin y representacin de la informacin ms usuales, el lgebra de Boole y su aplicacin para simplificacin de funciones booleanas, las tcnicas de implementacin de circuitos combinacionales simples, los fundamentos y componentes bsicos de los sistemas secuenciales para desarrollar sistemas secuenciales sncronos. Tambin son necesarios algunos conocimientos bsicos de programacin en algn lenguaje de alto nivel para saber disear programas sencillos, y representar esos algoritmos en pseudocdigo, diagramas de flujo o algn mtodo equivalente. Objetivos Didcticos Fundamentos de Computadores es la asignatura que presenta los componentes de un computador y la organizacin de estos componentes para proporcionar, de una manera eficiente, las funciones necesarias para poder ejecutar programas.

Pgina 1

Obtener una visin general de la jerarqua de niveles de un computador. Saber diferenciar entre los conceptos de estructura y arquitectura de un computador. Conocer y comprender las caractersticas ms importante de la arquitectura y estructura de un computador. Conocer y comprender los elementos bsicos de la arquitectura del repertorio de instrucciones. Dominar la programacin en lenguaje ensamblador de algn procesador como, por ejemplo, el MIPS R2000. Conocer y comprender los elementos estructurales del procesador para la ejecucin de las instrucciones. Conocer los principios bsicos y mtodos de diseo de unidades de control cableadas y microprogramadas. Evaluar las alternativas de diseo, as como el rendimiento de computadores. Metodologa de la Asignatura La metodologa docente a utilizar durante la imparticin de la asignatura incluye los siguientes procedimientos: Clases magistrales. Clases prcticas en el laboratorio. Resolucin de problemas. Tutoras. Evaluacin La nota final de la asignatura ser el resultado de la ponderacin entre la nota de teora y la nota de las prcticas de laboratorio. Para aprobar la asignatura es preciso haber superado ambas partes con una nota mayor o igual a 5 puntos. La nota de teora tendr un peso de un 70% sobre la nota final y la nota de prcticas de laboratorio un 30%. La nota de teora y de prcticas de laboratorio se obtendr a partir de los exmenes de convocatoria de la asignatura, uno para teora y otro para prctica, en la fecha que el Centro fije para ello. As para calcular la nota final se utilizar la siguiente frmula: NF = 0.7 NT +0.3 NP (siempre que NT>=5 y NP>=5) donde NF es la nota final, NT es la nota de teora y NP es la nota de prcticas de laboratorio. Descripcin de las Prcticas Prctica n 1 DescripcinEl simulador PCspim. ObjetivosFamiliarizacin con la herramienta para las prcticas de la asignatura. Material de laboratorio recomendadoOrdenador personal. Windows. Simulador Pcspim N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 2 DescripcinLos datos en memoria ObjetivosAdquirir soltura en cmo estn ubicados los datos en memoria Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 3 DescripcinCarga y almacenamiento de los datos

Pgina 2

ObjetivosEstudio de la forma en que se cargan y almacenan los datos. Poner en prctica los conocimientos adquiridos en las clases tericas sobre el repertorio de instrucciones MIPS. Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 4 DescripcinLas operaciones aritmticas y lgicas. ObjetivosAdquirir soltura en el uso de las instrucciones aritmticas lgicas. Poner en prctica los conocimientos adquiridos en las clases tericas sobre el repertorio de instrucciones MIPS. Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim2 N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 5 DescripcinInterfaz con el programa ObjetivosFamiliarizacin con la forma en que el PCSPIM permite realizar entrada y salida de datos. Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 6 DescripcinEstructuras de control:condicionales y bucles ObjetivosAdquirir soltura en el uso de las instrucciones que permiten implementar estructuras condicionales y bucles Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim N horas estimadas en Laboratorio2N horas total estimadas para la realizacin de la prctica2 Prctica n 7 DescripcinGestin de subrutinas ObjetivosEstudio de la forma en que se manejan las subrutinas en lenguaje ensamblador. Material de laboratorio recomendadoOrdenador personal. Window NT 4.0. Simulador Pcspim N horas estimadas en Laboratorio3N horas total estimadas para la realizacin de la prctica3 Bibliografa[1] Organizacin y diseo de computadores: la interfaz hardware/software Hennessy, John L. , McGraw-Hill, Madrid (1995) - (2 ed.) 8448118294 [2] Computer organization and design: the hardware/software interface John L. Hennessy, David A. Patterson Morgan Kaufmann, San Francisco (California) (1998) - (2nd ed.) 1-55860-491-X [3] Introduccin a la informtica Alberto Prieto Espinosa, Antonio Lloris Ruiz, Juan Carlos Torres Cantero McGraw Hill, Madrid (2001) - (3 ed.) 8448132173

Pgina 3

[4] Organizacin de computadoras: un enfoque estructurado Andrew S. Tanenbaum Prentice Hall, Mxico [etc.] (2000) - (4 ed.) 970-17-0399-5 [5] Organizacin y arquitectura de computadores: diseo para optimizar prestaciones William Stallings Prentice Hall, Madrid (2000) - (5 ed.) 84-205-2993-1 [6] Problemas y tests de introduccin a la informtica: con ms de 400 problemas y 700 preguntas de tests por Beatriz Prieto Campos, Alberto Prieto Espinosa Universidad de Granada, Departamento de Arquitectura y Tecnologa de Computadores, Granada (2003) 8460791092 [7] Arquitectura de computadores: un enfoque cuantitativo John L. Hennessy, David A. Patterson , McGraw-Hill, Madrid (1993) 8476159129

Equipo Docente CARMELO CUENCA HERNANDEZCategora: TITULAR DE ESCUELA UNIVERSITARIA Departamento: INFORMTICA Y SISTEMAS Telfono: 928458713 Correo Electrnico: [email protected] WEB Personal: (COORDINADOR)

FRANCISCA QUINTANA DOMINGUEZ

(RESPONSABLE DE PRACTICAS)

Categora: TITULAR DE ESCUELA UNIVERSITARIA Departamento: INFORMTICA Y SISTEMAS Telfono: 928458736 Correo Electrnico: [email protected] WEB Personal:

Pgina 4

Proyecto docente Fundamentos de Computadoreshttp://serdis.dis.ulpgc.es/~itis-fc Titulacin de Ingeniera Tcnica en Informtica de Sistemas Escuela Universitaria de Informtica

Proyecto Docente - Profesorado Carmelo Cuenca Hernndez (coordinador) [email protected] Despacho 2-13 en el mdulo 3

Horario de T U T O R A S Lunes de 11.00-13.00 y jueves 9.00-13.00 Francisca Quintana Domnguez (responsable de prcticas) [email protected] Despacho 2-12 en el mdulo 3

Horario de T U T O R A S Lunes de 9.30-12.30 y mircoles 9.30-12.30

Curso 2005/2006

Fundamentos de Computadores

2

Proyecto Docente HorariosL8:30-9:30 9:30-10:30 10:30-11:30 11:30-12:30 12:30-13:30 13:30-14:30

M TA TB A1-A2 L1.1 A3-A4 L1.1 B3-B4 L1.1

V TB

TA

A-5 L3.3

B1-B2 L1.1

Curso 2005/2006

Fundamentos de Computadores

3

Proyecto docente - Objetivos de la asignatura Fundamentos de Computadores presenta los componentes de un computador y la organizacin de estos componentes para ejecutar programas Obtener una visin general de la jerarqua de niveles de un computador Conocer y comprender las caractersticas ms importante de la arquitectura y estructura de un computador Conocer y comprender los elementos bsicos de la arquitectura del repertorio de instrucciones Dominar la programacin en lenguaje ensamblador de algn procesador como, por ejemplo, el MIPS R2000 Conocer y comprender los elementos estructurales de un procesador para la ejecucin de las instrucciones Conocer los principios bsicos y mtodos de diseo de unidades de control cableadas y microprogramadas Evaluar alternativas de diseo, as como el rendimiento de un computador

Curso 2005/2006

Fundamentos de Computadores

4

Proyecto Docente - Temario1. Arquitectura de un computador y jerarqua de niveles (3 horas) 2. Arquitectura del nivel lenguaje mquina (10 horas)1. 2. 3. 4. Caractersticas generales del lenguaje mquina Tipos de operandos e instrucciones Modos de direccionamiento y formato de las instrucciones Subrutinas

3. Diseo del procesador (15 horas)1. Diseo y control cableado de un camino de datos monociclo 2. Diseo y control cableado de un camino de datos multiciclo 3. Diseo y control microprogramado de un camino de datos multiciclo

4. Rendimiento (2 horas)Curso 2005/2006 Fundamentos de Computadores 5

Proyecto Docente - Prcticas1. El simulador PCspim (2 horas) 2. Los datos en memoria (2 horas) 3. Carga y almacenamiento de los datos (2 horas) 4. Las operaciones aritmticas y lgicas (2 horas) 5. Interfaz con el programa (2 horas) 6. Estructuras de control condicionales y bucles (2 horas) 7. Gestin de subrutinas (3 horas)Curso 2005/2006 Fundamentos de Computadores 6

Proyecto Docente - Evaluacin Nota final = 0.7 Nota de teora + 0.3 Nota de prctica(siempre que nota de teora >=5 y Nota de prctica>=5)

La nota de teora y de prctica se obtendr en los exmenes de convocatoria de la asignatura, uno para teora y otro para prcticaCurso 2005/2006 Fundamentos de Computadores 7

Arquitectura de un computador y jerarqua de nivelesLa arquitectura de un computador es la estructura de un computador que un programador en lenguaje mquina debe conocer para escribir un programa correcto (independiente del tiempo) Amdahl 1964

Objetivos Establecer caractersticas para nominar una mquina como computador Conocer los hitos de la arquitectura de los computadores Distinguir los diferentes niveles de estudio de los computadores Entender los mecanismos de traduccin e interpretacin de niveles Diferenciar entre la arquitectura y la estructura de un computador Describir los componentes bsicos de un computador y las funcionalidades de cada uno de ellos por separados Explicar el funcionamiento global de un computador a partir de las relaciones de sus componentes bsicos

Curso 2005/2006

Fundamentos de Computadores

9

Contenidos Concepto de computador Historia de los computadores La 1 generacin (los primeros computadores) La 2 generacin (transistores) La 3 generacin (SCI), la 4 (LSI) y la 5 (VLSI, UVLSI)

Organizacin estructurada de un computador Lenguajes, niveles y mquinas virtuales Computador multinivel

Funcionamiento de un computador Componentes de un computador Ciclo de instruccin Interconexin con buses

El futuro de los computadores Ley de Moore

Curso 2005/2006

Fundamentos de Computadores

10

Concepto de computador Diccionario de la Lengua Espaola Mquina electrnica dotada de una memoria de gran capacidad y de mtodos de tratamiento de la informacin, capaz de resolver problemas aritmticos y lgicos gracias a la utilizacin automtica de programas registrados en ella

Microsoft Encarta Dispositivo electrnico capaz de recibir un conjunto de instrucciones y ejecutarlas realizando clculos sobre los datos numricos, o bien compilando y correlacionando otros tipos de informacin

Enciclopedia Britnica Device for processing, storing, and displaying information

Wikipedia Sistema digital con tecnologa microelectrnica capaz de procesar informacin a partir de un grupo de instrucciones denominado programa

Curso 2005/2006

Fundamentos de Computadores

11

Historia de los computadores"Quien olvida las lecciones de la historia queda condenado a repetirla." Will Durant, Lecciones de la Historia

ENIAC Qu, quines, ? Electronic Numerical Integrator And Computer Eckert y Mauchly Universidad de Pennsylvania Tablas de trayectorias balsticas Ao de inicio 1943 Ao de finalizacin 1946 Tarde para la Segunda Guerra Mundial (1939-1945)

En funcionamiento hasta 1955

Curso 2005/2006

Fundamentos de Computadores

13

ENIAC - detalles Decimal (no binario) 20 registros acumuladores de 10 dgitos Programado manualmente mediante 6000 interruptores 18000 tubos de vaco y 1500 relevadores 30 toneladas 15000 pies cuadrados 140 Kw de consumo de potencia 5000 sumas por segundo

Curso 2005/2006

Fundamentos de Computadores

14

Von Neumann/Turing Concepto de programa almacenado Componentes de un computador La memoria principal (MM) almacena programas y datos La unidad aritmtica lgica (ALU) opera con datos binarios La unidad de control (UC) interpreta y provoca la ejecucin de las instrucciones en memoria

Mquinas EDSAC la primera computadora de programa almacenado Maurice Wilkes, Universidad de Cambridge, (?-1949)

La mquina IAS John von Neumann y Herman Goldstine, Instituto para Estudios Avanzados de Princeton, (19461952) Curso 2005/2006 Fundamentos de Computadores 15

Estructura de una mquina von Neumann

Cinco partes bsicas: la memoria (M), almacena datos e instrucciones la unidad aritmtica lgica (ALU), capaz de hacer operaciones con datos binarios la unidad de control (UC), interpreta y provoca la ejecucin de las instrucciones en memoria el equipo de entrada y salida (I/O)Curso 2005/2006 Fundamentos de Computadores 16

IAS - detalles Aritmtica binaria 1000 palabras de 40 bits 2 registros de instrucciones de 20 bits Registros dentro de la CPU R. temporal de memoria (MBR) R. de direcciones de memoria (MAR) R. de instrucciones (IR) R. temporal de instrucciones (IBR) R. contador de programa (PC) R. acumulador (AC) R. multiplicador cociente (MQ)Curso 2005/2006 Fundamentos de Computadores 17

Computadores comerciales 1947 Eckert-Mauchly Computer Comportation UNIVAC I (Universal Automatic Computer) Aplicaciones cientficas y comerciales Oficina del censo en 1950 Operaciones algebraicas con matrices, problemas de matrices, primas para las compaas de seguro, problemas logsticos ...

Absorcin por Sperry-Rand Comporation UNIVAC II a finales de los 50 Ms rpido Ms memoria

Serie UNIVAC 1100Curso 2005/2006 Fundamentos de Computadores 18

IBM Fabricante de equipos de procesamiento con tarjetas perforadas 1953 El 701 para aplicaciones cientficas 1955 El 702 para aplicaciones de gestin Lder mundial con las series 700/7000

Curso 2005/2006

Fundamentos de Computadores

19

La segunda generacin: los transistores (1955-1965) Invencin de Shockley y otros de los laboratorios Bell en 1947 Sustitucin de los tubos de vaco por transistores Ventajas del transistor Ms pequeo Ms barato Menor disipacin de calor Fabricado con silicio (arena)Fundamentos de Computadores 20

Curso 2005/2006

Computadores con transistores NCR y RCA fueron los primeros en comercializar pequeas mquinas con transistores IBM 7000 1957 - Fundacin de Digital Equipment Corporation (DEC) pionera de los minicomputadores PDP 1Curso 2005/2006 Fundamentos de Computadores 21

La 3, 4 y 5 generacin: los circuitos integrados (1965-????) Un computador consta de puertas, celdas de memoria e interconexiones Tales componentes podan ser fabricados a partir de un semiconductor como el silicio en un circuito integrado (Robert Noyce 1958) Generaciones 3, 4 y 5 de computadores 3 generacin Pequea y mediana integracin (SCI) 1965-1971 Hasta 100 componentes en un chip 1965 - IBM lder mundial inicia la familia 360 1965 - DEC lanza el minicomputador de bajo coste PDP-8

4 generacin Gran integracin (LSI ) 1972-1977 Entre 3000 y 100000 componentes en un chip

5 generacin Alta Integracin (VLSCI y UVLSI) 1978-???? Ms de 100000000 componentes en un chipCurso 2005/2006 Fundamentos de Computadores 22

Organizacin estructurada de un computadorLos computadores estn diseados como una serie de niveles, cada uno construido sobre sus predecesores. Cada nivel representa una abstraccin distinta, y contiene diferentes objetos y operaciones

Lenguajes, niveles y mquinas virtuales La mquina virtual Mi ejecuta slo programas escritos en el lenguaje de programacin Li Ejecucin de programas en Mi: Traduccin Un programa traductor sustituye cada instruccin escrita en Li por una secuencia equivalente de instrucciones en Li-1. El programa resultante consiste exclusivamente en instrucciones de Li-1. Luego, Mi-1 ejecuta el programa en Li-1

Interpretacin Un programa intrprete escrito en Li-1 examina las instrucciones una por una y ejecuta cada vez la sucesin de instrucciones en Li-1 que equivale a cada una

Curso 2005/2006

Fundamentos de Computadores

24

Computador multinivel N. aplicaciones Microsoft Office, eMule BASIC, C, C++, Java, Lisp, Prolog

N. lenguaje alto nivel N. lenguaje ensamblador N. sistema operativo Archivo, particin, proceso,

N. arquitectura del repertorio de instrucciones (ISA) Salto, pila, Banco de registros, ALU, camino de datos Puertas lgicas: AND, OR , biestables, registros Transistores, diodos, estado slido

N. microarquitectura N. lgica digital

N. dispositivos

Curso 2005/2006

Fundamentos de Computadores

25

Funcionamiento de un computador

Componentes de un computador Unidad central de proceso (CPU) Unidad de control (UC) Unidad aritmticalgica (ALU)

Memoria (M) Entrada y salida (E/S)

Curso 2005/2006

Fundamentos de Computadores

27

Ciclo de instruccin (1/2) Ciclo de bsqueda de instruccin El registro contador de programa (PC) contiene la direccin de la siguiente instruccin a ejecutar El procesador busca la instruccin a partir de la localizacin de memoria sealada por el PC El procesador incrementa el contador de programa (hay excepciones) La instruccin es cargada en el registro de instrucciones (IR)

Curso 2005/2006

Fundamentos de Computadores

28

Ciclo de instruccin (2/2) Ciclo de ejecucin (5 tipos) Procesador-memoria: transferencia de datos desde la CPU a la memoria o al revs Procesador-E/S: transferencia de datos a o desde el exterior Procesamiento de datos: la CPU ha de realizar alguna operacin aritmtica o lgica con los datos Control: una instruccin puede especificar que la secuencia de ejecucin sea alterada Combinaciones de las anteriores

Curso 2005/2006

Fundamentos de Computadores

29

Ejemplo de ejecucin de programa

Curso 2005/2006

Fundamentos de Computadores

30

Diagrama de estados del ciclo de instruccin

Curso 2005/2006

Fundamentos de Computadores

31

Esquema de interconexin mediante buses Conjunto de conductores elctricos para la conexin de dos o ms dispositivos Tipos de buses De memoria, de datos y de control Anchura de los buses: 8, 16, 32, 64 bits

Cmo son los buses? Pistas paralelas de los circuitos impresos Cintas de plstico con hilos conductores Conectores (ISA, PCI, ) Cables sueltos

Curso 2005/2006

Fundamentos de Computadores

32

Bus ISA (Industry Standard Architecture)

Curso 2005/2006

Fundamentos de Computadores

33

Bus de alta prestaciones

Curso 2005/2006

Fundamentos de Computadores

34

El futuro de los computadoresLa relacin coste/rendimiento ha mejorado los ltimos 45 aos aproximadamente 240 000 000 (un 54% anual)

Ley de Moore

La densidad de integracin dobla cada 18 meses Vlida hasta 2020?)

Curso 2005/2006

Fundamentos de Computadores

36

Arquitectura del repertorio de instrucciones (ISA)La arquitectura de un computador es la estructura del computador que un programador en lenguaje mquina debe conocer para escribir un programa correcto (independiente del tiempo) Amdahl 1964

Objetivos Caracterizar una instruccin de acuerdo con el tipo de operacin, de datos, de modos de direccionamiento y de formato de codificacin Codificar una instruccin de lenguaje mquina a una instruccin de lenguaje ensamblador y viceversa Distinguir una pseudoinstruccin de una instruccin Explicar con comentarios la finalidad de un bloque bsico de cdigo ensamblador Determinar los valores intermedios y finales de los registros y los contenidos de la memoria tras la ejecucin de un bloque bsico de cdigo ensamblador Escribir la secuencia de instrucciones de lenguaje ensamblador correspondiente a una pseudoinstruccin Traducir las sentencias bsicas de asignacin, operacin, toma de decisiones, bucles y llamadas a procedimientos a lenguaje ensamblador Traducir un algoritmo escrito en un lenguaje de alto nivel a lenguaje ensamblador y viceversa Escribir procedimientos en lenguaje ensamblador consecuentes con los convenios de pasos de parmetros a procedimientos Corregir errores en un programa escrito en lenguaje ensamblador para que funcione correctamente Calcular el tiempo de ejecucin y los ciclos por instruccin (CPI) de un bloque bsico de cdigo ensamblador Disear un repertorio de instrucciones con restricciones de diseo

Curso 2005/2006

Fundamentos de Computadores

2

ndice Estructura de una mquina Von Neumman Mquinas RISC MIPS R3000 Nivel ISA Instrucciones aritmtico-lgicas Instrucciones de acceso a memoria Organizacin de la memoria Carga y almacenamiento

Instrucciones de salto condicional Lenguaje mquina Instrucciones aritmtico-lgicas, de acceso a memoria, de carga y almacenamiento, de salto condicional e incondicional

Datos inmediatos Gestin de procedimientos Llamadas y retornos de procedimientos Convenio de uso de registros Gestin de la pila

Otras instrucciones

Mquinas CSIC IA 32 Caractersticas del ISA Registros Instrucciones bsicas Formato de las instrucciones

Curso 2005/2006

Fundamentos de Computadores

3

Estructura de una mquina von Neumann Cinco partes bsicas la memoria (M) la unidad aritmtica lgica (ALU la unidad de control (UC) el equipo de entrada y salida (I/O)

Ciclo de instruccin Ciclo de bsqueda Ciclo de ejecucinCurso 2005/2006 Fundamentos de Computadores 4

RISC - Reduced Instruction Set Computer RISC es una filosofa de diseo con las siguientes caractersticas: Tamao fijo de las instrucciones Nmero reducido de codificaciones de las instrucciones, modos de direccionamientos y operaciones Instrucciones de load/store para los accesos a memoria, registros

Usados por NEC, Nintendo, Silicon Graphics, Cisco, Sony...1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0 1998 1999 2000 2001 2002 Other SPARC Hitachi SH PowerPC Motorola 68K MIPS IA-32 ARM

Curso 2005/2006

Fundamentos de Computadores

5

MIPS R3000 Nivel ISA Instrucciones de 32 bits 3 formatos 4 direccionamientos 5 tipos de instrucciones Aritmtico-lgicas Acceso a memoria Ruptura de secuencia Gestin de memoria EspecialesRegistros $0 - $31

PC HI LO

3 Instruction Formats:all 32 bits wide OP OP OP rs rs rt rt rd sa funct R format I format J format

32 registros de 32 bits de propsito general (GPR)Curso 2005/2006

immediate

jump target

Fundamentos de Computadores

6

MIPS Instrucciones aritmticolgicas Principio de diseo 1 La simplicidad favorece la uniformidad

Todos los computadores deben ser capaces de realizar clculos aritmticos y lgicosadd a, b, c # a sub a, a, d # a or a, a, e #aCurso 2005/2006

b+c a + d = (b + c) - d a + e = (b + c + d) OR e7

Fundamentos de Computadores

Ejemplos bsicos de compilacin de sentencias Dos sentencias de asignacin de C en MIPS Cdigo fuentea = b + c; d = a e;

Compilacinadd a, b, c sub d, a, e

Compilacin de una sentencia compleja de C en MIPS Cdigo fuentef = (g + h) (i + j);

Compilacinadd t0, g, h add t1, i, j sub f, t0, t1

Curso 2005/2006

Fundamentos de Computadores

8

MIPS - RegistrosRegisters

Control$0 - $31

Input Memory

DatapathPC HI LO Processor

OutputI/O

Principio de diseo 2 Cuanto ms pequeo ms rpido

Los operandos de las instrucciones computacionales son registros Los compiladores asocian variables con registros $s0, $s1,... para registros asociados a variables de C $t0, $t1,... para registros temporales Otros ms

Curso 2005/2006

Fundamentos de Computadores

9

Ejemplo de compilacin de una asignacin usando registros Cdigo fuente de Cf = (g + h) (i+j);

f, g, h, i y j en $s0, $s1, $s2, $s3 y $s4 Compilacin en MIPSadd $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 # el registro $t0 contiene # g+h # el registro $t1 contiene # i +j # f contiene $t0 - $t1, que # es (g+h) (i+h)10

Curso 2005/2006

Fundamentos de Computadores

Accesos a memoria - Organizacin de la memoria La memoria es un vector de bytes La direccin es un ndice dentro del vector de bytes 2 posibles ordenaciones para las palabras: Big Endian (IA-32) Little Endian (MIPS)Little EndianMSB LSB

Memoria . 0x11 0x22 0x33 0x44 .55

Big EndianMSB LSB

0x44332211

0x11223344

Objeto Byte Media palabra Palabra (4 bytes) Doble palabra

Bien alineado 0,1,2,3,4,5,6,.. (nunca) 0,2,4,6,8, ... 0,4,8,... 0,8, .. 1,3,5,7, ...

Mal alineado

Alineacin de datos address mdulo size = 0

1,2,3,5,6,7,9,10,11,... 1,2,3,4,5,6,7,9,10,11,12,13,14,15,....

Curso 2005/2006

Fundamentos de Computadores

11

Accesos a memoria Organizacin de la memoria del MIPS El tamao de las palabras es de 32 bits Big Endian 232 posiciones de memoria de bytes, 0, 1, 232-1 Accesos alineados 231 posiciones de memoria de medias palabras, 0, 2 232-2 230 posiciones de memoria de palabras, 0, 4, 232-4 228 posiciones de memoria de dobles palabras, 0, 8 232-8Curso 2005/2006 Fundamentos de Computadores 12

MIPS Cargas y almacenamientos Instrucciones para accesos a memoria de palabras lw $t0, 4($s3) # $t0 M[$s3+4] sw $t0, 4($s3) # M[$s3+4] $t0

La suma del registro base ($s3) y el desplazamiento (4) forma la direccin de memoria del dato El desplazamiento tiene signo (complemento a dos) Los accesos estn limitados a una regin centrada en el registro base de 213 palabrasCurso 2005/2006 Fundamentos de Computadores 13

Ejemplo de compilacin con un dato en memoria Cdigo fuente de Cg = h + A[8];

La base del vector asignada a $s3, las variables g y h asignadas a $s1 y $s2 Compilacin en MIPSlw $t0, 32($s3) # $t0 contiene A[8] add $s1, $s2, $t0# $s1 contiene g = h + A[8]

Curso 2005/2006

Fundamentos de Computadores

14

Ejemplo de compilacin de una asignacin con un ndice variable Cdigo fuente de Cg = h + A[i];

la base del vector en $s3, g y h e i en $s1, $s2 y $s4 Compilacin en MIPSadd $t1, $s4, $s4 add $t1, $t1, $t1 add $t1, $t1, $s3 lw $t0, 0($t1) add $s1, $s2, $t0Curso 2005/2006

# $t1 contiene 2 * i # $t1 contiene 4 * i # $t1 contiene $s3 + 4 * i # $t0 contiene A[i] # $s1 contiene g = h + A[i]15

Fundamentos de Computadores

MIPS Instrucciones de salto condicional Instrucciones de salto condicional (slo dos) bne $s0, $s1, L1 beq $s0, $s1, L1 # branch to L1 if no equal # branch to L1 if equal

Pseudoinstrucciones de salto condicional slt (set si menor que), beq, bne y $zero permiten las condiciones restantesblt $s1, $s2, etiqueta slt $at, $s1, $s2 bne $at, $zero, etiqueta # salta si menor que

El ensamblador expande las pseudoinstrucciones $at, registro utilizado por el programa ensambladorCurso 2005/2006 Fundamentos de Computadores 16

Ejemplo de compilacin de una sentencia de salto condicional Cdigo fuente de CIf (i==j) h = i + j; h, i y j en $s0, $s1 y $s2

Compilacin en MIPSbne $s1, $s2, etiqueta add $s0, $s1, $s2 etiqueta:

Curso 2005/2006

Fundamentos de Computadores

17

Lenguaje mquina Instrucciones aritmtico-lgicas El tamao de las instrucciones es de 32 bits Las instrucciones aritmtico-lgicas son codificadas con el formato tipo-R add $rd, $rs, $rt

Significado de los campos op rs, rt, rd shamt funct 6-bits cdigo de operacin 5-bits registro source, target, destination 5-bits nmero de bits a desplazar (cuando aplicable) 6-bits cdigo de funcin (extensin del cdigo de operacin)

op 6 bits000000

rs 5 bits01010

rt 5 bits11111

rd 5 bits00011

shamt funct Formato de instrucciones aritmticas 5 bits 6 bits Todas las instrucciones MIPS de 32 bits00000 100000 0x015f1820 add $3,$10,$31

Curso 2005/2006

Fundamentos de Computadores

18

Lenguaje mquina Instrucciones de acceso a memoria Principio de diseo 3 Un buen diseo necesita buenas soluciones de compromiso

Las instrucciones de load y store especifican dos registros y un desplazamiento Formato tipo I (16 bits para el dato inmediato) lw $rt, inmediato($rs), sw $rt, inmediato($rs lh, lhu, lb, lbu sh, sb (load half, half unsigned, byte, byte unsigned; store half, byte)

op 6 bits100011

rs 5 bits00011

rt 5 bits00101

Direccin/inmediato 16 bits0000000000100000

Formato de instruciones de carga Todas las instrucciones MIPS de 32 bits 0x8c650020 lw $5,32($3)

Curso 2005/2006

Fundamentos de Computadores

19

Traduccin de lenguaje ensamblador a lenguaje mquina Cdigo fuente de CA[300] = h + A[300]; La base del vector asignada a $t1 y h a $s2

Compilacin en MIPSlw $t0, 1200($t1) add $t0, $s2, $t0 sw $t0, 1200($t1)

Lenguaje mquina1000 1101 0010 1000 0000 0100 1011 0000 0000 0010 0100 1000 0100 0000 0010 0000 1010 1101 0010 1000 0000 0100 1011 0000Curso 2005/2006 Fundamentos de Computadores 20

Lenguaje mquina Instrucciones de salto condicional Formato tipo I (16 bits para el dato inmediato) El inmediato codifica el n de palabras desde la siguiente instruccin a la instruccin de salto (PC+4) hasta la instruccin destino Los saltos estn limitados a una regin centrada en el PC + 4 de 215 palabrasfrom the low order 16 bits of the branch instruction16

offset sign-extend00 32 32 Add 32 4 32 Add 32

branch dst address32

PC32

?

Curso 2005/2006

Fundamentos de Computadores

21

MIPS Instrucciones de ruptura de secuencia incondicional j etiqueta Formato tipo J 6 bits cdigo de operacin + 26 bits para el dato inmediato El inmediato de 26 bits codifica la direccin absoluta de la palabra con la instruccin destino de salto dentro de un segmento de 256MBop 26-bit address

from the low order 26 bits of the jump instruction26

00 32

4

PC

32

Curso 2005/2006

Fundamentos de Computadores

22

Ejemplo de compilacin de una sentencia de salto if-then-else Cdigo fuente de CIf (i==j) f = g + h; else f = g h; i, j, f, g y h en $s0 $s4

Compilacin en MIPSbne $s0, $s1, L1 add $s2, $s3, $s4 # f = g + h j L2 # salto incondicional sub $s2, $s3, $s4 # f = g - h Fundamentos de Computadores 23

L1: L2:Curso 2005/2006

MIPS Datos inmediatos (1/2) Instrucciones aritmtico-lgicas con un operando constanteslti $t0, $s2, 15 #$t0 = 1 si $s2>10 $1=$2>>$3 Comentarios

Curso 2005/2006

Fundamentos de Computadores

30

MIPS - Instrucciones de transferencia de datos (1/2)Instruccin carga byte carga byte sin ext. signo carga media palabra carga media palabra sin extensin de signo carga palabra carga inmediata de la parte ms significativa load upper inmediate Carga registro del coprocesador z almacena byte almacena media palabra almacena palabra almacena registro en memoria registro del coprocesador z Carga inmediata Carga direccin Ejemplo lb $1,10($2) lbu $1,10($2) lh $1,10($2) lhu $1,10($2) lw $1,10($2) lui $1,50 lwc1 $f0,10($2) sb $1,10($2) sh $1,10($2) sw $1,10($2) swc1 $f0,10($2) Significado $1=M[10+$2] $1=M[10+$2] $1=M[10+$2] $1=M[10+$2] $1=M[10+$2] $1=50*216 $f0= M[10+$2] M[10+$2]=$1 M[10+$2]=$1 M[10+$2]=$1 M[10+$2]=$f0Carga un dato de 16 bits en la parte ms significativa del registro.

ComentariosExtiende el bit de signo No extiende el bit de signo Extiende el bit de signo No extiende el bit de signo

li $1,1000 la $3,label

Pseudoinstrucciones Carga de un dato de 32 bits $1=1000 $3=direccin de Transfiere la direccin de memoria no el contenido. label

Curso 2005/2006

Fundamentos de Computadores

31

MIPS Instrucciones de movimiento de datos (2/2)

Instruccin mover desde Hi mover desde Lo mover a Hi mover a Lo mover desde coprocesador z mover al coprocesador z transfiere o mueve transfiere doble desde coproc. 1

Ejemplo Significado Comentarios mfhi $1 $1= Hi mflo $1 $1= Lo mthi $1 Hi=$1 mtlo $1 Lo=$1 $f0-$f30: Registros del coprocesador 1 mfcz $1,$f0 $1=$f0 mtcz $1,$f0 $f0=$1 Pseudoinstrucciones move $1,$2 $1=$2 $4=$F0 mfc1.d $4,$f0 $5=$F1

Curso 2005/2006

Fundamentos de Computadores

32

Instrucciones de comparacinInstruccin Ejemplo Inicializar menor que slt $1,$2,$3 Significado if ($2=0) ir a PC+4 +100 salta sobre mayor o igual que cero bgez $1,100 salta sobre mayor o igual que cero y bgezal $1,1000 si($1>=0) $31=PC+4; ir a 1000 enlaza ..... ir a 2000 bifurcar j 2000 ir a $1 bifurcar registro jr $1 $31=PC+4; ir a 10000 Bifurcar y enlazar jal 10000 $31=PC+4; ir a $1 bifurcar y enlazar registro jalr $1 Pseudoinstrucciones si($1>=$2) ir a PC+4 +100 salta sobre mayor o igual bge $1,$2,100 si($1>$2) ir a PC+4 +100 salta sobre mayor que bgt $1,$2,100 si($1 Estado 5 -> Estado 0 -> Estado 4 -> Estado 9 -> Estado 8 -> Estado 6 -> Estado 8 -> Estado 1 + Estado 2 -> Estado 0 + Estado 1 -> Estado 2 + Estado 6 + Estado 8 -> Estado 4 + Estado 7 -> Estado 7

Curso 2005/2006

Fundamentos de Computadores

47

Control cableado - Implementacin de FSM con ROM Diseo unificado (Tamao 210 20 = 20Kb) 6 bits cdigo de operacin + 4 bits de los estados = 210 posiciones de memoria 16 salidas de control + 4 salidas de nuevo estado = 20 bits de anchura ROM de seales de control (Tamao 24 16 = 256b) 4 bits de los estados = 2 posiciones de memoria 16 salidas de control = 4 bits de anchuraInputs Op5 Op3 Op4 Op2 Op1 Op0 S2 S3 S1 S0

Tamao: 20 Kbits vs 4.25 KbitsControl logic

PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource ALUOp

Diseo no unificado (Tamao 4.25Kb)4

Outputs

ALUSrcB ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0

ROM de nuevo estado (Tamao 210 4 = 4Kb) 6 bits cdigo de operacin + 4 bits de los estados = 210 posiciones de memoria 4 salidas de nuevo estado = 4 bits de anchura

Instruction register r opcode field

State register

Curso 2005/2006

Fundamentos de Computadores

48

Control cableado - Implementacin de FSM con PLA Tamao de la PLA #inputs #minterms + #outputs #minterms = (10 17)+(20 17) = 510 celdasOp5 Op4 Op3 Op2 Op1 Op0 S3 S2 S1 S0

PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource1 PCSource0 ALUOp1 ALUOp0 ALUSrcB1 ALUSrcB0 ALUSrcA RegWrite RegDst NS3 NS2 NS1 NS0

Curso 2005/2006

Fundamentos de Computadores

49

Diseo de la unidad de control Control microprogramado El estado siguiente es frecuentemente el estado actual + 1 Las seales de control estn almacenadas en una memoriaControl unit Microcode memory PCWrite PCWriteCond IorD MemRead MemWrite IRWrite BWrite MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst AddrCtl Datapath

Outputs

Input 1 Microprogram counter Adder Address select logic Op[5 0] Instruction register opcode field

Secuenciador externo

Curso 2005/2006

Fundamentos de Computadores

50

Control microprogramado Formato de la microinstruccin 7 campos: 6 campos de control + 1 campo de secuenciacinControl ALUNom bre del cam po Control ALU SRC1 SRC2

SRC1

SRC2

Control Registro

Memoria

Control PCWrite

Secuenciamiento

Funcin del cam po Especifica la operacin que va a realizar la ALU add subt durante el ciclo. Especifica la fuente para el primer operando de la ALU Especifica la fuente para el segundo operando de la ALU Especifica el nmero de registro y dato que se escribe en el mismo fuente del

Valores del cam po

Func code PC A B 4 Extend ExtShft Read W rite ALU (rd 1 Spec(int/fp)95 SparcStation 10/40 -> 41.26 SpecInt92 - 34.35 Specfp92

Curso 2005/2006

Fundamentos de Computadores

22

SPEC95 - ProgramasBenchmark go m88ksim gcc compress li ijpeg perl vortex tomcatv swim su2cor hydro2d mgrid applu trub3d apsi fpppp wave5 Description Artificial intelligence; plays the game of Go Motorola 88k chip simulator; runs test program The Gnu C compiler generating SPARC code Compresses and decompresses file in memory Lisp interpreter Graphic compression and decompression Manipulates strings and prime numbers in the special-purpose programming language Perl A database program A mesh generation program Shallow water model with 513 x 513 grid quantum physics; Monte Carlo simulation Astrophysics; Hydrodynamic Naiver Stokes equations Multigrid solver in 3-D potential field Parabolic/elliptic partial differential equations Simulates isotropic, homogeneous turbulence in a cube Solves problems regarding temperature, wind velocity, and distribution of pollutant Quantum chemistry Plasma physics; electromagnetic particle simulation

Curso 2005/2006

Fundamentos de Computadores

23

SPEC95 PentiumProcesador Pentium 100 -> 200 MHz (x2) Pentium Pro 150 -> 200 MHz (x1.33) SpecInt95 (mejora) 1.7 1.24 SpecFp95 (mejora) 1.4 1.18

10 9 8 7 SPECint 6 5 4 3 2 1 0 50 100 150 Clock rate (M Hz) 200 P entium P entium Pro 250

10 9 8 7 SPECfp 6 5 4 3 2 1 0 50 100 150 200 Pentium Pentium Pro 250 Clock rate (M Hz)

Curso 2005/2006

Fundamentos de Computadores

24

SPEC CPU2000SPEC programa = Tiempo ejecucin Sun Ultra5_10 (300MHz 256MB) Tiempo de ejecucin

SPEC global =

( SPEC

programai

)

1 n

CINT2000 (Integer Component of SPEC CPU2000) 12 aplicaciones enteras (11 C, 1 C++) Cint_rate, Cint_non_rate

CFP2000 (Floating Point Component of SPEC CPU2000) 14 aplicaciones FP (6 F77, 4 F90, 4 C) Cfp_rate, Cfp_non_rate

Curso 2005/2006

Fundamentos de Computadores

25

SPEC CPU2000 - Programas CINT2000 164.gzip Compresin de datos 175.vpr Circuitos FPGA 176.gcc Compilador de C 181.mcf Resuelve flujos de red de mnimo coste 186.crafty Programa de ajedrez 197.parser Procesamiento de lenguaje natural 252.eon Ray tracing 253.perlbmk Perl 254.gap Teora computacional de grupos 255.vortex Base de datos orientada a objetos 256.bzip2 Utilidad de compresin de datos 300.twolf Simulador CFP2000 168.wupwise Cromodinmica cuntica 171.swim Modelo de agua 172.mgrid Resuelve campo potencial en 3D mutimalla 173.applu Ecuaciones diferenciales parciales parablicas/elpticas 177.mesa librera grfica 3D 178.galgel Dinmica de fluidos 179.art Simulacin de redes neuronales 183.equake Simulacin de elementos finitos 187.facerec Reconocedor de caras 188.ammp Qumica computacional 189.lucas Teora de nmeros: N primos 191.fma3d simulacin de choques mediante elementos finitos 200.sixtrack modelo de acelerador de partculas 301.apsi Meteorologa: temperatura, viento y distribucin de la polucin

Curso 2005/2006

Fundamentos de Computadores

26

SPEC CINT2000 y CFP2000 para Pentium III y Pentium IV

Curso 2005/2006

Fundamentos de Computadores

27

SPECweb99 La primera versin de benchmarks para servidores web data de 1996. Actualizados en 1999 y 2005 Caractersticas Orientados a medir throughput ( nmero mximo de conexiones que puede soportar un sistema servidor web). El sistema debe proporcionar respuesta en un tiempo dado y con un nmero mximo de errores Son benchmarks de entornos multiprocesadores El programa para realizar las peticiones forma parte del benchmark El rendimiento depende en gran medida de las caractersticas del sistema, incluyendo el sistema de discos y la red

Curso 2005/2006

Fundamentos de Computadores

28

SPECweb99 - Sistemas Dell PowerEdge La frecuencia de reloj no es la caracterstica ms importante en servidores web El 8400 tiene el doble de procesadores lentos que el 6600 y ofrece mejor rendimiento

La configuracin adecuada de los sistemas permite obtener mejor rendimiento (adicin de discos e incremento de la conectividad hasta que el procesador sea el cuello de botella)Sistema 1550/1000 1650 2500 2550 2650 4600 6400/700 Procesador Pentium III Pentium III Pentium III Pentium III Pentium 4 Xeon Pentium 4 Xeon Pentium III N discos 2 3 8 1 5 10 5 N CPUs 2 2 2 2 2 2 4 N redes 2 1 4 1 4 4 4 f (GHz) 1.00 1.40 1.13 1.26 3.06 2.20 0.70 2.00 0.70 Resultado 2765 1810 3435 1454 5698 4615 4200 6700 29 8001

6600 Pentium 4 Xeon MP 8 4 8 Curso 2005/2006 Fundamentos de Computadores 8450/700 Pentium III Xeon 7 8 8

Benchmarks para embedded computing systems Un sistema empotrado es un sistema informtico de uso especfico construido dentro de un dispositivo mayor Las aplicaciones dispares de los sistemas empotrados (tiempo real restringido, tiempo real flexible, coste/rendimiento) dificultan el diseo de benchmarks Los benchmarks estn en un estado primitivo. Los fabricantes tienen preferencias de benchmarks diferentes (kernels como Dhrystone) EDN Embedded Microprocessor Benchmark Consortium (EEMBC) 34 benchmarks divididos en 5 clases: automocin/industrial, consumo, networking, automatizacin de oficinas, telecomunicaciones Mejor conjunto de benchmarks estandarizados en el entorno embedded Permite a los fabricantes dar resultados tanto para versiones modificadas del cdigo fuente como para versiones codificadas a mano de las aplicaciones (los kernels pequeos posibilitan la tarea.

Curso 2005/2006

Fundamentos de Computadores

30

Fiabilidad de los programas de prueba El fabricante mejorar el rendimiento con optimizaciones especficas de los benchmarks (los programas reales no mejoran en factores similares) Generalmente, los benchmarks reducidos y los sintticos No cargan la memoria principal del sistema de forma realista No calculan nada til para un usuario (existen excepciones) No reflejan el comportamiento de ningn programa

Los benchmarks reales son difciles de realizar, situacin que se agudiza en los casos de: Mquinas no construidas, simuladores ms lentos Benchmarks no portables Compiladores no disponibles

Curso 2005/2006

Fundamentos de Computadores

31

Ms mtricas del rendimiento MIPS (1/3) MIPS (millones de instrucciones por segundo)MIPSNativos

=

Recuento de Instrucciones Tiempo de Ejecucin x 106

MIPS

Nativos

=

Frecuencia del reloj CPI x 106

MIPS de pico MIPS obtenidos con un programa de CPI mnimo (el programa podra ser intil) Dan una idea del rendimiento terico mximo de la mquina. Algunos fabricantes la utilizan a veces en la publicidad de los productosCurso 2005/2006 Fundamentos de Computadores 32

Ms mtricas de rendimiento MIPS (2/3) MIPS relativos MIPS obtenidos respecto a una mquina de referencia

MIPS Re lativos =

Tiempo Tiempo

Re ferencia

x MIPS Re ferencia

En _ la _ maquina

TiempoRe ferencia = Tiempo de ejecucin de un programa en la mquina de referencia TiempoEn _ la _ mquina = Tiempo de ejecucin del mismo programa en la mquina a medir MIPS Re ferencia = MIPS para el computador de referencia

Proporcionales al tiempo de ejecucin SLO para un programa dado con una entrada dada A medida que pasan los aos la mquina de referencia deja de estar operativa Debera el computador de referencia ser actualizado con una nueva versin de sistema operativo y compilador?Curso 2005/2006 Fundamentos de Computadores 33

Ms mtricas de rendimiento MIPS (3/3) Inconvenientes de la mtrica MIPS: Los MIPS dependen del # de instrucciones ejecutadas y por tanto del repertorio de instrucciones Los MIPS no posibilitan comparar distintas arquitecturas Los MIPS varan entre programas en el mismo computador (no es una medida absoluta por mquina) Los MIPS no tienen en cuenta los tres factores de la ecuacin de tiempo de CPU (slo dos de ellos) Es posible una variacin de los MIPS inversamente proporcional al rendimientoCurso 2005/2006 Fundamentos de Computadores 34

Ms mtricas de rendimiento MFLOPS MFLOPS (Millones de operaciones en coma flotante por segundo)MFLOPS=

N operaciones en punto flotante Tiempo de ejecucin x 106

Inconvenientes Depende del programa y SLO es aplicable a las operaciones en coma flotante Instrucciones en coma flotante no comparables entre diferentes mquinasMquina A: +, -, * y / Mquina B: No tiene / (dar mas MFLOPS)

Depende de la mezcla de operaciones coma flotante rpidas y lentas Los MFLOPS para 100 sumas sern mayores que para 100 divisiones

MFLOPS normalizados +, -, * y comparaciones: peso 1 OP / y raz cuadrada: peso 4 OP Exponencial y trigonomtricas: 8 OP

Curso 2005/2006

Fundamentos de Computadores

35

Mtodos de comparacin y resumen de los resultadosMedia aritmtica 1 n TMedio = Ti n i =1(Si el rendimiento se expresa como una frecuencia (ej. MFLOPS,))

Media aritmtica ponderadan i =1

Media armnica n 1 donde Vi = n 1 Ti V i =1 i

TMedio = Pesoi * TiPesoi = Frecuencia del programa isimo. Suma de los pesos igual a 1.

Media armnica ponderada 1 n Pesoi V i =1 iTi

Media geomtrica para tiempos normalizados TMedio = n

Ti =1

n

Normalizado

i

Normalizado

= Tiempo de ejecucin, normalizado para la mquina de referencia, para el programa isimo de un total de n.

Ti = Tiempo de ejecucin del programa isimo

n = N de programas de la carga de trabajo

Curso 2005/2006

Fundamentos de Computadores

36

Ley de Amdahl (o ley de rendimientos decrecientes) El posible aumento de rendimiento para una mejora dada est limitado por la cantidad que se utiliza la caracterstica mejoradaRendimiento despus de la mejora Tiempo de ejecucin antes de la mejora = Rendimiento antes de la mejora Tiempo de ejecucin despus de la mejora Tiempo de ejecucin despus de la mejora = Tiempo de ejecucin afectado por la mejora = + Tiempo de ejecucin no afectado por la mejora Cantidad de la mejora Ganancia velocidad =

Si suponemos que la mejora acelera una fraccin F de la tarea en un factor de S, entonces la ganancia de velocidad (speedup) vendr dada por:G= 1 F + (1 F ) S

F 1

1-F

Corolario: Procurar hacer rpido el caso comnCurso 2005/2006 Fundamentos de Computadores 37

Ley de Amdahl Ejemplos (1/3) Calcula la ganancia de rendimiento obtenida con la modificacin de la unidad de control de un procesador si el tiempo de ejecucin de la tarea disminuye de 2,8s a 1,9s La ejecucin de un programa tarda en una mquina 100s, de los cuales 80 corresponden a instrucciones de multiplicar Cunto hay que mejorar la velocidad de la multiplicacin para que mi programa sea cuatro veces ms rpido? Y para que sea cinco veces ms rpido?Curso 2005/2006 Fundamentos de Computadores 38

Ley de Amdahl Ejemplos (2/3) Una propuesta de mejora de un computador implica que el precio del computador sea el doble. Si el procesador est activo durante el 60% del tiempo de ejecucin total de la tarea y la mejora supone aumentar la velocidad del procesador al triple, averigua el inters de introducir la mejora usando para ello la relacin precio/ganancia de rendimiento La adquisicin de un nuevo modelo de computador supone un incremento en la ganancia de rendimiento del 50% respecto al antiguo. Teniendo en cuenta que el antiguo tardaba en ejecutar una tarea 22 segundos, cunto tiempo emplear el nuevo en ejecutar la misma tarea?Curso 2005/2006 Fundamentos de Computadores 39

Ley de Amdahl Ejemplos (3/3) Suponga paralela un 90% o lo que es lo mismo, una tarea que puede ejecutarse por varios procesadores simultneamente, calcula la mejora cuando P = 10, 100 y 100Speedup P = Speedup10 =

1

0.1 +

1 0.9 0.1 + 10

= 5.3

Speedup100 =

1 0.9 0.1 + 100

0.9 P = 9.17

Speedup1000 =

1 0.9 0.1 + 1000

= 9.91

Calcula la mejora (para P = 100), si mejoramos en una cantidad 2 la parte no paralela 1Speedup100, 2 =

0.1 0.9 + 2 100

= 16.95

Calcula la mejora si a continuacin aumentamos la fraccin paralelizable en 0.05?Speedup100 =

1

0.95 0.05 + 100

= 16.80

Curso 2005/2006

Fundamentos de Computadores

40

Rendimiento, potencia y eficiencia de energa Los sistemas empotrados y porttiles estn limitados por el consumo de potencia (adems de por el coste y rendimiento) Utilizan enfriamiento pasivo (ventiladores versus tubos de calor) y alimentacin con bateras (la duracin de las bateras no ha aumentado)

Tcnicas de ahorro de potencia Desconexin de las partes no utilizadas Reduccin esttica o dinmica de la frecuencia de reloj y el voltajeCurso 2005/2006 Fundamentos de Computadores 41

Rendimiento, potencia y eficiencia de energa Familia Pentium (1/2) Intel Mobile Pentium y Serie Pentium M Procesadores diseados para aplicaciones mviles alimentadas por bateras Tienen una frecuencia mxima (mximo rendimiento) y una frecuencia reducida (mayor vida de la batera) Rendimiento/potencia optimizados mediante cambios dinmicos de frecuencia

El Pentium M tiene mejor rendimiento a fmxima y a fadaptativa El Pentium M a fmnima es ms lento que el Pentium 4-M y ms rpido que el Pentium III-M

Curso 2005/2006

Fundamentos de Computadores

42

Rendimiento, potencia y eficiencia de energa Familia Pentium (2/2) La eficiencia energtica mide la relacin entre rendimiento y consumo medio de potencia de entornos con limitaciones de potencia Los Pentium M (diseo especfico) tienen mayor eficiencia energtica que las versiones mobile de Pentium III y Pentium IV (rediseo)Curso 2005/2006 Fundamentos de Computadores 43

Conclusiones El arte del diseo consiste en encontrar el equilibrio entre coste y rendimiento El TIEMPO es la medida del rendimiento de un computador

TCPU = N CPI Tciclo

Imprescindible usar buenos benchmarks para medir el rendimiento de forma fiable...No excesiva credibilidad... Las medidas populares del rendimiento no reflejan siempre la realidad, a veces son utilizadas malintencionadamente para inducir a error Ley de Amdahl establece que la ganancia de rapidez est limitada por la parte del programa que no mejoraCurso 2005/2006 Fundamentos de Computadores 44

Prcticas de Fundamentos de Computadores

Ingeniera Informtica Facultad de Informtica Universidad de Las Palmas de Gran Canaria PRESENTACINLas prcticas de laboratorio de esta asignatura se centran en el conocimiento y uso de la arquitectura del R2000 a travs de su conjunto de instrucciones. Para ello se han elaborado unas prcticas en las que el alumno utilizar el lenguaje ensamblador de este procesador y conocer su funcionamiento mediante el simulador SPIM. Estas prcticas se han diseado para que el alumno pueda seguirlas de forma casi autnoma, requiriendo nicamente puntuales aclaraciones por parte del profesor. Con ello se pretende que el alumno pueda repasar fuera del horario de prcticas aquellas partes que no hayan quedado lo suficientemente claras. Las prcticas se han dividido en las siguientes partes:

Parte 1: El simulador SPIM Introduccin. Descripcin del simulador PCSpim Sintaxis del Lenguaje ensamblador del MIPS R2000. Problema propuesto.

Parte 2: Los datos en memoria Introduccin. Declaracin de palabras en memoria. Declaracin de bytes en memoria. Declaracin de cadenas de caracteres. Reserva de espacio en memoria. Alineacin de datos en memoria. Problemas propuestos.

Parte 3: Carga y almacenamiento de los datos Introduccin. Carga de datos inmediatos (constantes). Carga de palabras (transferencia de palabras desde memoria a registros). Carga de bytes (transferencia de bytes desde memoria a registros). Almacenamiento de palabras (transferencia de palabras desde registros a memoria).

Almacenamiento de bytes (transferencia de bytes desde registros a memoria). Problemas propuestos. Parte 4: Las operaciones aritmticas y lgicas Introduccin. Operaciones aritmticas con datos inmediatos (constantes). Operaciones aritmticas con datos en memoria . Operaciones lgicas. Operaciones de desplazamiento. Problemas propuestos. Parte 5: Interfaz con el programa Introduccin. Impresin de una cadena de caracteres. Impresin de enteros. Lectura de enteros. Lectura de una cadena de caracteres. Problemas propuestos. Parte 6: Estructuras de control: condicionales y bucles Introduccin. Estructura de control condicional Si-entonces con condicin simple. Estructura de control condicional Si-entonces con condicin compuesta. Estructura de control condicional Si-entonces-sino con condicin simple. Estructura de control condicional Si-entonces-sino con condicin compuesta. Estructura de control repetitiva para. Estructura de control repetitiva mientras. Problemas propuestos. Parte 7: Gestin de subrutinas Introduccin. Gestin de la pila. Llamada y retorno de una subrutina. Llamadas anidadas de subrutinas. Paso de parmetros. Bloque de activacin de una subrutina. Problemas propuestos. Cada una de estas partes no se corresponde con una sesin de prcticas. As, salvo la primera sesin que ser ms guiada, en el resto de sesiones el alumno o equipo de alumnos seguir un ritmo de aprendizaje propio, teniendo en cuenta que deber haber cubierto todas las partes de estas prcticas en 7 sesiones de 2 horas. Desde este enlace puedes descargar el simulador que se va a utilizar (SPIM) para Windows:

o

Ejecutable SPIM para Windows (comprimido .zip)

El simulador SPIM-->

Parte I. El simulador SPIM

Introduccin. Descripcin del simulador PCSpim. Sintaxis del Lenguaje ensamblador del MIPS R2000. Problema propuesto.

IntroduccinEl SPIM (MIPS al revs) es un simulador que ejecuta programas en lenguaje ensamblador para los computadores basados en los procesadores MIPS R2000/R3000. La arquitectura de este tipo de procesadores es RISC, por lo tanto simple y regular, y en consecuencia fcil de aprender y entender. La pregunta obvia en estos casos es por qu se va a utilizar un simulador y no una mquina real. Las razones son diversas: entre ellas cabe destacar la facilidad de poder trabajar con una versin simplificada y estable del procesador real. Los procesadores actuales ejecutan varias instrucciones al mismo tiempo y en muchos casos de forma desordenada, esto hace que sean ms difciles de comprender y programar. El simulador a utilizar en prcticas es una versin grfica del SPIM, denominadaPCSPIM. La instalacin del PCSpim es sencilla: Windows Ejecutar el programa spimwin.exe. Se realizar la instalacin y slo habr que ejecutar el icono PCSpim for Windows para arrancar el programa.

Descripcin del Simulador PCSpimAl ejecutar PCSpim aparece la siguiente ventana

La ventana principal de PCSpim se divide en cuatro partes: 1. La parte superior de la ventana es la barra de mens. Permite acceder a las operaciones con ficheros (men File), especificar las opciones del simulador (men Simulator), seleccionar la forma de visualizacin de las ventanas incluidas en la ventana principal (men Window), y obtener informacin de ayuda (men Help). 2. Debajo de la barra de mens se encuentra la barra de herramientas que incluye en forma de botones algunas de las acciones ms comunes en PCSpim. 3. La parte central de la ventana de la aplicacin sirve para visualizar cuatro ventanas: Registros (Registers), Segmento de Texto (Text Segment), Segmento de Datos (Data Segment) y Mensajes (Messages). A continuacin se presentan las caractersticas de estas cuatro ventanas:

Registros (Registers) Aparecen el nombre y el contenido de los registros enteros, R0 a R31, con sus correspondientes alias entre parntesis, los registros de coma flotante, FP0 a FP31, los registros de control de la CPU (BadVAddr, Cause, Status, EPC) y los registros especiales para la multiplicacin y divisin entera, HI y LO.

Segmento de Texto (Text Segment) Se pueden ver cada una de las direcciones, el cdigo mquina, las instrucciones ensambladas y el cdigo fuente del programa de usuario (a partir de la direccin 0x00400000) y del ncleo del simulador (a partir de la direccin 0x80000000). Antes de que se cargue ningn programa aparecen una serie de instrucciones, introducidas por el simulador para lanzar adecuadamente la ejecucin de nuestro cdigo.

Segmento de Datos (Data Segment) Aparecen las direcciones y datos almacenados en las zonas de memoria de datos del usuario (a partir de la direccin 0x10000000 en adelante), el ncleo del simulador (a partir de la direccin 0x90000000) y la pila (el puntero de pila, registro sp, se encuentra cargado con la direccin 0x7fffeffc, y sta crece hacia direcciones decrecientes).

Mensajes (Messages) En este panel se observan los diversos mensajes que comunica el simulador, que nos tendrn informados del resultado y evolucin de las acciones que ste lleva a cabo.

Existe una quinta ventana, llamada Consola, independiente, a la que se accede con la opcin Window->Console, y que sirve para realizar la entrada/salida del programa simulado. En esta ventana se teclean los datos de entrada, cuando sean necesarios, y se lee la informacin que pueda imprimir nuestro programa.

Carga y ejecucin de programasLos ficheros de entrada a PCSpim son de tipo texto ASCII, que incluyen las instrucciones ensamblador del programa que se desea simular.

Para cargar un programa se selecciona File->Open (o el botn Open de la barra de herramientas, con el icono de la carpeta abrindose) con lo que aparecer un cuadro de dilogo donde se puede seleccionar el fichero que se quiere abrir. Para ejecutar el programa, Simulator->Go (o el botn Go de la barra de herramientas, con el icono de un programa con una flecha que indica ejecucin), har que PCSpim comience a simularlo. Previamente pedir que se le indique la direccin de comienzo del programa (en hexadecimal). En nuestro caso este valor ser normalmente 0x00400000 (donde comienza nuestro segmento de texto). Si se desea detener la ejecucin del programa, Simulator->Break (Ctrl-C). Para continuar con la ejecucin, Simulator->Continue. Si el programa incluye operaciones de lectura o escritura desde el terminal, PCSpim despliega una ventana independiente llamada Console, a travs de la cual se realiza la entrada-salida (se simula un terminal de la mquina MIPS).

Depuracin de programasSi un programa no hace lo que se esperaba, hay algunas caractersticas del simulador que ayudarn a depurar el programa. Con Simulator->Single Step (o bien la tecla F10) es posible ejecutar las instrucciones del programa una a una (paso a paso). Esto permite verificar el contenido de los registros, la pila, los datos, etc., tras la ejecucin de cada instruccin. Empleando Simulator->Multiple Step se consigue ejecutar el programa un nmero determinado de instrucciones. PCSpim tambin permite ejecutar todas las instrucciones de un programa hasta llegar a un determinado punto, denominado breakpoint (punto de ruptura), a partir del cual se puede recuperar el control del programa y, por ejemplo, continuar paso a paso. Para ello, se selecciona Simulator->Breakpoints (o el botn Breakpoints de la barra de herramientas, con el icono de una mano indicando detencin). Una vez seleccionada esa opcin, PCSpim muestra una ventana en la que pide la(s) direccin(es) en la(s) que se quiere que el programa se detenga, para recuperar el control sobre el mismo. Se debe mirar cul es la direccin en que interesa parar el programa, en la ventana del segmento de texto, e introducirla (en hexadecimal) en la ventana, pulsando a continuacin la tecla Add, para aadir dicho breakpoint. Se pueden introducir tantos puntos de ruptura como se desee. Una vez encontrado el error y corregido, se vuelve a cargar el programa con Simulator>Reload. Con Simulator->Clear Registers se pone el contenido de los registros a cero (excepto $sp), mientras que Simulator->Set Value permite cambiar el valor actual de un registro o de una posicin de memoria por un valor arbitrario. Otras opciones tiles disponibles en el men principal son las contenidas en el men de ventana (Window). Con ellas se pueden mostrar y ocultar las barras de herramientas y de estado, as como las distintas ventanas del simulador, organizar visualmente las mismas y limpiar la consola de entrada/salida.

PCSpim tambin proporciona ayuda en lnea (Opcin Help->Help Topics), que muestra un documento con ayuda sobre el programa, y el icono de la barra de herramientas con una flecha y una interrogacin, que sirve para pedir ayuda sobre una opcin concreta de los mens.

Opciones del simuladorAl elegir la opcin Simulator->Settings se muestran las diversas opciones que ofrece el simulador. PCSpim utiliza estas opciones para determinar cmo cargar y ejecutar los programas. Una vez escogida esta opcin aparece la siguiente ventana

El significado de las opciones es el siguiente: 1. Save window positions. PCSpim guarda la posicin de las ventanas al salir, y la recupera al ejecutar de nuevo PCSpim. 2. General registers/Floating point registers in hexadecimal. Fija el formato de los registros en hexadecimal. En caso de no estar seleccionada esta opcin, se muestra el contenido en decimal (con signo; es decir, interpretado en complemento a 2). 3. Bare machine. Simula el ensamblador sin pseudoinstrucciones o modos de direccionamiento suministrados por el simulador. 4. Allow pseudo instructions. Determina si se admiten las pseudoinstrucciones. 5. Load trap file. Indica si se debe cargar el manejador de interrupciones (fichero trap.handler). En tal caso, cuando se produce una excepcin, PCSpim salta a la direccin 0x80000080, que contiene el cdigo necesario para tratar la excepcin. 6. Mapped I/O. Si se selecciona esta opcin, se activa la entrada-salida mapeada en Memoria. Los programas que utilizan llamadas al sistema (syscall), para leer o escribir en el terminal, deben desactivar esta opcin. Aquellos otros programas que vayan a hacer entrada-salida mediante mapeo en memoria deben tenerla activada.

7. Quiet. Si se activa, PCSpim no imprime mensaje alguno cuando se producen las excepciones. De otra manera, se muestra un mensaje cuando ocurre una excepcin.

Sintaxis del Lenguaje ensamblador del MIPS R2000La sintaxis del lenguaje ensamblador es algo que se descubrir poco a poco, pero es interesante introducir algunos conceptos bsicos: Comentarios Estos son muy importantes en los lenguajes de bajo nivel ya que ayudan a seguir el desarrollo del programa y, por tanto, se usan con profusin. Comienzan con un carcter de almohadilla # y desde este carcter hasta el final de la lnea es ignorado por el ensamblador. Identificadores Son secuencias de caracteres alfanumricos, guiones bajos (_) y puntos (.), que no comienzan con un nmero. Los cdigos de operacin son palabras reservadas que no pueden ser utilizadas como identificadores. Etiquetas Son identificadores que se sitan al principio de una lnea y seguidos de dos puntos. Sirven para hacer referencia a la posicin o direccin de memoria del elemento definido en sta. A lo largo del programa se puede hacer referencia a ellas en los modos de direccionamiento de las instrucciones. Pseudoinstrucciones No son instrucciones que tengan su traduccin directa al lenguaje mquina que entiende el procesador, pero el ensamblador las interpreta y las convierte en una o ms instrucciones mquina reales. Permiten una programacin ms clara y comprensible. A lo largo del desarrollo de las prcticas se irn introduciendo diferentes pseudoinstrucciones que permite utilizar este ensamblador. Directivas Tampoco son instrucciones que tengan su traduccin directa al lenguaje mquina que entiende el procesador, pero el ensamblador las interpreta y le informan a ste de cmo tiene que traducir el programa. Son identificadores reservados, que el ensamblador reconoce y que van precedidos por un punto. A lo largo del desarrollo de las prcticas se irn introduciendo las distintas directivas que permite utilizar este ensamblador. Por otro lado, los nmeros se escriben, por defecto, en base 10. Si van precedidos de 0x, se interpretan en hexadecimal. Las cadenas de caracteres se encierran entre comillas

dobles (). Los caracteres especiales en las cadenas siguen la convencin del lenguaje de programacin C:

Salto de lnea: \n Tabulador: \t Comilla: \

A la hora de generar un fichero con un programa en ensamblador (extensin .s), hay que tener en cuenta que algunas versiones del SPIM tienen un bug, que se evita haciendo que los cdigos en ensamblador almacenados en estos ficheros terminen siempre con una lnea en blanco (vaca).

Problema propuestoDado el siguiente ejemplo de programa ensamblador:.data dato: memoria a 3 .text .globl main: main lw $t0, dato($0) # debe ser global

.byte 3

# inicializo una posicin de

Indica las etiquetas, directivas y comentarios que aparecen en el mismo.

Parte II. Los datos en memoria

Introduccin. Declaracin de palabras en memoria. Declaracin de bytes en memoria. Declaracin de cadenas de caracteres. Reserva de espacio en memoria. Alineacin de datos en memoria. Problemas propuestos.

IntroduccinSe comienza viendo cmo se definen los datos en memoria. Para ello hay que recordar que, aunque la unidad base de direccionamiento es el byte, las memorias de estos computadores tienen un ancho de 4 bytes o 32 bits, que se llamar palabra o word, el mismo ancho que el del bus de datos. As pues, cualquier acceso a una palabra de memoria supondr leer cuatro bytes (el byte con la direccin especificada y los tres almacenados en las siguientes posiciones). Las direcciones de palabra deben estar alineadas en posiciones mltiplos de cuatro. Otra posible unidad de acceso a memoria es transferir media palabra (half-word). El ensamblador permite reservar posiciones de memoria para los datos de un programa de usuario, as como inicializar los contenidos de esas direcciones utilizando directivas. En este apartado se describen y crean programas en ensamblador para utilizar estas directivas.

Declaracin de palabras en memoriaUtilizacin de las directivas .data y .word valor Primer ejercicio En el directorio de trabajo crea un fichero con la extensin .s, por ejemplo "ejer1.s", y con el siguiente contenido:.data palabra1: palabra2: # comienza zona de datos # decimal # hexadecimal

.word 15 .word 0x15

Este programa en ensamblador incluye diversos elementos que se describen a continuacin: la directiva .data dir indica que los elementos que se definen a continuacin se almacenarn en la zona de datos y, al no aparecer ninguna direccin como argumento de dicha directiva, la direccin de almacenamiento ser la que hay por defecto (0x10010000). Las dos sentencias que aparecen a continuacin reservan dos nmeros enteros, de tamao word, en dos direcciones de memoria, una a continuacin de la otra, con los contenidos especificados. Ejecuta el programa xspim desde el directorio de trabajo y crgalo con la opcin File>Open...

Cuestiones

Encuentra los datos almacenados por el programa anterior en memoria. Localiza dichos datos en el panel de datos e indica su valor en hexadecimal. En qu direcciones se han almacenado dichos datos? Por qu? Qu valores toman las etiquetas palabra1 y palabra2?

Segundo ejercicio Crea otro fichero (ejer2.s) o modifica el anterior con el siguiente cdigo:.data 0x10010000 palabras: .word 15,0x15 # comienza zona de datos # decimal/hexadecimal

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Comprueba si hay diferencias respecto al programa anterior. Crea un fichero con un cdigo que defina un vector de cinco palabras (word), que est asociado a la etiqueta vector, que comience en la direccin 0x10000000 y con los valores 0x10, 30, 0x34, 0x20 y 60. Comprueba que se almacena de forma correcta en memoria. Qu ocurre si se quiere que el vector comience en la direccin 0x10000002? En qu direccin comienza realmente? Por qu?

Declaracin de bytes en memoria

La directiva .byte valor inicializa una posicin de memoria, de tamao byte, a valor.

Tercer ejercicio Crea un fichero con el siguiente cdigo:.data octeto: # comienza zona de datos # hexadecimal

.byte

0x10

Borra los valores de la memoria Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Qu direccin de memoria se ha inicializado con el contenido especificado? Qu valor se almacena en la palabra que contiene el byte?

Cuarto ejercicio Crea otro fichero o modifica el anterior con el siguiente cdigo:.data de datos palabra1: palabra2: .byte .word 0x10,0x20,0x30,0x40 0x10203040 # hexadecimal # hexadecimal # comienza zona

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Cules son los valores almacenados en memoria? Qu tipo de alineamiento y organizacin de los datos (Big-endian o Littleendian) utiliza el simulador? Por qu? Qu valores toman las etiquetas palabra1 y palabra2?

Declaracin de cadenas de caracteresLa directiva .ascii tira permite cargar en posiciones de memoria consecutivas, de tamao byte, el cdigo ascii de cada uno de los caracteres que componen tira.

Quinto ejercicio Crea un fichero con el siguiente cdigo:.data cadena: .ascii "abcde" octeto: .byte 0xff

# defino string

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Localiza la cadena anterior en memoria. Qu ocurre si en vez de .ascii se emplea la directiva .asciiz? Describe lo que hace esta ltima directiva. Crea otro fichero cargando la tira de caracteres cadena en memoria utilizando la directiva .byte.

Reserva de espacio en memoriaLa directiva .space n sirve para reservar espacio para una variable en memoria, inicializndola a 0. Sexto ejercicio Crea un fichero con el siguiente cdigo:.data # comienza zona de datos espacio: .space 8 # reservo espacio .byte 0xff

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Qu rango de posiciones se han reservado en memoria para la variable espacio? Cuntos bytes se han reservado en total? Y cuntas palabras?

Alineacin de datos en memoriaLa directiva .align n alinea el siguiente dato a una direccin mltiplo de 2n. Sptimo ejercicio Crea un fichero con el siguiente cdigo:.data byte1: espacio: byte2: palabra: # comienza zona de datos .byte .space .byte .word 0x10 4 0x20 10

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Qu rango de posiciones se han reservado en memoria para la variable espacio? Estos cuatro bytes podran constituir los bytes de una palabra? Por qu? A partir de que direccin se ha inicializado byte1? y byte2? A partir de que direccin se ha inicializado palabra? Por qu?

Octavo ejercicio Crea un fichero con el siguiente cdigo:.data byte1: .align espacio: byte2: palabra: # comienza zona de datos .byte 2 .space .byte .word 0x10 4 0x20 10

Borra los valores de la memoria con la opcin Simulator->Reinitialize y carga el nuevo fichero. Cuestiones

Qu rango de posiciones se ha reservado en memoria para la variable espacio? Estos cuatro bytes podran constituir los bytes de una palabra? Por qu? Qu ha hecho la directiva .align?

Problemas propuestos1. Disea un programa ensamblador que reserva espacio para dos vectores A y B de 20 palabras cada uno a partir de la direccin 0x10000000.

2. Disea un programa ensamblador que realice la siguiente reserva de espacio en memoria a partir de la direccin 0x10001000: o una palabra o un byte o una palabra alineada en una direccin mltiplo de 4.

3. Disea un programa ensamblador que realice la siguiente reserva de espacio e inicializacin en memoria a partir de la direccin por defecto: 3 (palabra), 0x10 (byte), reserve 4 bytes a partir de una direccin mltiplo de 4, y 20 (byte).

4. Disea un programa ensamblador que defina, en el espacio de datos, la siguiente cadena de caracteres: Esto es un problema utilizandoo o o .ascii .byte .word

5. Sabiendo que un entero se almacena en un word, disea un programa ensamblador que defina en la memoria de datos la matriz A de enteros definida como

a partir de la direccin 0x10010000 suponiendo que: o La matriz A se almacena por filas. o La matriz A se almacena por columnas.

Parte III. Carga y almacenamiento de los datos

Introduccin. Carga de datos inmediatos (constantes). Carga de palabras (transferencia de palabras desde memoria a registros). Carga de bytes (transferencia de bytes desde memoria a registros). Almacenamiento de palabras (transferencia de palabras desde registros a memoria). Almacenamiento de bytes (transferencia de bytes desde registros a memoria). Problemas propuestos.

IntroduccinEn esta tercera parte se estudia cmo cargar los datos en los registros del R2000 (empleando los registros generales del procesador) y almacenar despus su valor en memoria. Dado que la arquitectura del R2000 es RISC, utiliza un subconjunto concreto de instrucciones que permiten las acciones de carga y almacenamiento de los datos entre los registros del procesador y la memoria. Generalmente, las instrucciones de carga de un dato de memoria a registro comienzan con la letra l (de load en ingls) y las de almacenamiento de registro en memoria con s (de store en ingls), seguidos por la letra inicial correspondiente al tamao de dato que se va a mover (en ingls), b para byte, h para media palabra y w para palabra.

Carga de datos inmediatos (constantes)

Primer ejercicio Crea un fichero con el siguiente cdigo:.text main: # zona de instrucciones lui $s0, 0x8690

La directiva .text sirve para indicar el comienzo de la zona de memoria dedicada a las instrucciones. Por defecto esta zona comienza en la direccin 0x00400000 y en ella, se pueden ver las instrucciones que ha introducido el simulador para

ejecutar, de forma adecuada, nuestro programa. La primera instruccin de nuestro programa debe estar referenciada con la etiqueta main:. Esta etiqueta le indica al simulador dnde est el principio del programa que debe ejecutar. Por defecto hace referencia a la direccin 0x00400020. A partir de esta direccin, el simulador cargar el cdigo de nuestro programa en el segmento de memoria de instrucciones. La instruccin lui es la nica instruccin de carga inmediata real, y almacena la media palabra que indica el dato inmediato de 16 bits en la parte alta del registro especificado, en este caso s0. La parte baja del registro se pone a 0. Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize y carga el nuevo fichero. Cuestiones Localiza la instruccin en memoria de instrucciones e indica: La direccin donde se encuentra. El tamao que ocupa. La instruccin mquina, analizando cada campo de sta e indicando que tipo de formato tiene. Ejecuta el programa con la opcin del men principal Simulator->Go . Comprueba el efecto de la ejecucin del programa en el registro.

Segundo ejercicio El ensamblador del MIPS ofrece la posibilidad de cargar una constante de 32 bits en un registro utilizando una pseudoinstruccin. sta es la pseudoinstruccin li. Crea un fichero con el siguiente cdigo:.text main: # zona de instrucciones li $s0, 0x12345678

Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize , carga el nuevo fichero y ejectalo con la opcin del men principal Simulator->Go Cuestiones Comprueba el efecto de la ejecucin del programa en el registro. Comprueba qu conjunto de instrucciones reales implementan esta pseudoinstruccin.

Carga de palabras (transferencia de palabras desde memoria a registros)

Tercer ejercicio Crea un fichero con el siguiente cdigo:.data palabra: .word 0x10203040 .text main: lw $s0, palabra($0)

# zona de instrucciones

La instruccin "lw" carga la palabra contenida en una posicin de memoria, cuya direccin se especifica en la instruccin, en un registro. Dicha posicin de memoria se obtiene sumando el contenido del registro (en este caso $0, que siempre vale cero) y el identificador "palabra". Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize, carga el nuevo fichero y ejectalo con la opcin del men principal Simulator->Go Cuestiones Localiza la instruccin en memoria de instrucciones e indica cmo ha transformado dicha instruccin el simulador. Explica cmo se obtiene a partir de esas dos instrucciones la direccin de palabra. Por qu crees que el simulador traduce de esta forma la instruccin original? Analiza cada uno de los campos que componen estas instrucciones e indica el tipo de formato que tienen. Comprueba el efecto de la ejecucin del programa. Qu pseudoinstruccin permite cargar la direccin de un dato en un registro? Modifica el programa original para que utilice esta pseudoinstruccin, de forma que el programa haga la misma tarea. Comprueba qu conjunto de instrucciones sustituyen a la pseudoinstruccin utilizada una vez el programa se carga en la memoria del simulador. Modifica el cdigo para que en lugar de transferir la palabra contenida en la direccin de memoria referenciada por la etiqueta palabra, se intente transferir la palabra que est contenida en la direccin referenciada por palabra+1. Explica qu ocurre y por qu.

Modifica el programa anterior para que guarde en el registro $s0 los dos bytes de mayor peso de "palabra". Nota: Utiliza la instruccin lh que permite cargar medias palabras (16 bits) desde memoria a un registro (en los 16 bits de menor peso del mismo).

Carga de bytes (transferencia de bytes desde memoria a registros)

Cuarto ejercicio Crea un fichero con el siguiente cdigo:#------------------------------------------------# # zona de datos # .data #------------------------------------------------# octeto: .byte 0xf3 siguiente: .byte 0x20 #------------------------------------------------# # zona de instrucciones # .text #------------------------------------------------# main: lb $s0, octeto($0)

La instruccin "lb" carga el byte de una direccin de memoria en un registro. Al igual que antes la direccin del dato se obtiene sumando el contenido del registro $0 (en este caso siempre vale cero) y el identificador "octeto".

Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize, carga el nuevo fichero y ejectalo con la opcin del men principal Simulator->Go Cuestiones Localiza la instruccin en memoria de instrucciones e indica cmo ha transformado dicha instruccin el simulador. Comprueba el efecto de la ejecucin del programa. Cambia en el programa la instruccin "lb" por "lbu". Qu sucede al ejecutar el programa? Qu significa esto? Si "octeto" se define como:octeto: .byte 0x30

existe diferencia entre el uso de la instruccin lb y lbu Por qu Cul es el valor del registro s0 si octeto se define como:octeto: .word 0x10203040 ?.

Por qu? Cul es el valor del registro s0 si se cambia en "main" la instruccin existente por la siguientemain: lb $s0, octeto+1($0)?

Por qu? Por qu en este caso no se produce un error de ejecucin (excepcin de error de direccionamiento)?

Almacenamiento de palabras (transferencia de palabras desde registros a memoria)

Quinto ejercicio Crea un fichero con el siguiente cdigo:#------------------------------------------------# # zona de datos # .data #------------------------------------------------# palabra1: .word 0x10203040 palabra2: .space 4 palabra3: .word 0xffffffff #------------------------------------------------# # zona de instrucciones # .text #------------------------------------------------# main: lw $s0, palabra1($0) sw $s0, palabra2($0) sw $s0, palabra3($0)

La instruccin "sw" almacena la palabra contenida en un registro en una direccin de memoria. Esta direccin se obtiene sumando el contenido de un registro ms un desplazamiento especificado en la instruccin (identificador).

Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize, carga el nuevo fichero y ejectalo con la opcin del men principal Simulator->Go Cuestiones Localiza la primera instruccin de este tipo en la memoria de instrucciones e indica cmo ha transformado dicha instruccin el simulador. Comprueba el efecto de la ejecucin del programa.

Almacenamiento de bytes (transferencia de bytes desde registros a memoria)

Sexto ejercicio Crea un fichero con el siguiente cdigo:#------------------------------------------------# # zona de datos # .data #------------------------------------------------# palabra1: .word 0x10203040 octeto: .space 2 #------------------------------------------------# # zona de instrucciones # .text #------------------------------------------------# main: lw $s0, palabra1($0) sb $s0, octeto($0)

La instruccin sb almacena el byte de menor peso de un registro en una direccin de memoria. La direccin se obtiene sumando el desplazamiento indicado por el identificador y el contenido de un registro. Borra los valores de la memoria con la opcin del men principal Simulator>Reinitialize, carga el nuevo fichero y ejectalo con la opcin del men principal Simulator->Go Cuestiones Localiza la instruccin en memoria de instrucciones e indica cmo ha transformado dicha instruccin el simulador. Comprueba el efecto de la ejecucin del programa.

Modifica el programa para que el byte se almacene en la direccin "octeto+1". Comprueba y describe el resultado de este cambio.

Modifica el programa anterior para transferir a la direccin de octeto el byte en la posicin palabra+3.

Problemas propuestosDisea un programa ensamblador que defina el vector de palabras V=(10,20,25,500,3) en la memoria de datos a partir de la direccin 0x10000000 y cargue todos sus componentes en los registros s0-s4. Disea un programa ensamblador que copie el vector definido en el problema anterior a partir de la direccin 0x10010000. Disea un programa ensamblador que, dada la palabra 0x10203040, almacenada en una posicin de memoria, la reorganice en otra posicin de memoria, invirtiendo el orden de sus bytes. Disea un programa ensamblador que, dada la palabra 0x10203040 definida en memoria la reorganice en la misma posicin, intercambiando el orden se sus medias palabras. Nota: utiliza las instrucciones lh y sh. Disea un programa en ensamblador que inicialice cuatro bytes a partir de la posicin 0x10010002 a los siguientes valores 0x10, 0x20, 0x30, 0x40, y reserve espacio para una palabra a partir de la direccin 0x10010010. El programa transferir los cuatro bytes contenidos a partir de la posicin 0x10010002 a la direccin 0x10010010.

-->

Parte 4. Las operaciones aritmticas y lgicas

Introduccin. Operaciones aritmticas con datos inmediatos (constantes) . Operaciones aritmticas con datos en memoria. . Operaciones lgicas. . Operaciones de desplazamiento. . Problemas propuestos.

IntroduccinEn este apartado se presentan las instrucciones que permiten realizar operaciones aritmticas, lgicas y de desplazamiento. Entre las primeras se encuentran las instrucciones de suma y resta (add, addu, addi, addiu, sub, subu) y las instrucciones de multiplicacin y divisin (mult, multu, div, divu ). Las instrucciones acabadas en u consideran los operandos como nmeros en binario puro, mientras que las instrucciones no acabadas en u consideran los operandos de las instrucciones como nmeros en complemento a dos. En ambos casos, se producir una excepcin aritmtica si el resultado de la operacin no es representable en 32 bits. Recuerda que el rango de representacin de los nmeros enteros con signo de 32 bits en complemento a 2 va desde 2.147.483.648 a 2.147.483.647 (0x80000000 a 0x7fffffff). Dentro del grupo de instrucciones que permiten realizar operaciones lgicas estn: suma lgica (or y ori), producto lgico (and y andi) y la or exclusiva (xor y xori). Finalmente, se presentan las instrucciones de desplazamiento aritmtico y lgico (sra, sll, srl).

Operaciones aritmticas con datos inmediatos (constantes)Primer ejercicio.data .word 2147483647 .text lw $t0,numero($0) addiu $t1,$t0,1

numero: main:

La instruccin addiu es una instruccin de suma con un dato inmediato y sin deteccin de desbordamiento.

Borra los valores de la memoria, carga el fichero y ejectalo paso a paso. Cuestiones

Localiza el resultado de la suma efectuada. Comprueba el resultado. Cambia la instruccin "addiu" por la instruccin "addi". Borra los valores de la memoria, carga el fichero y ejectalo paso a paso. Qu ha ocurrido al efectuar el cambio? Por qu?

Operaciones aritmticas con datos en memoriaSegundo ejercicio.data .word 0x80000000 .word 1 .word 1 .text lw $t0,numero1($0) lw $t1,numero2($0) subu $t0,$t0,$t1 lw $t1,numero3($0) subu $t0,$t0,$t1 sw $t0,numero3($0)

numero1: numero2: numero3: main:

Borra los valores de la memoria, carga el fichero y ejectalo paso a paso. Cuestiones

Qu hace el programa anterior? Qu resultado se almacena en numero3? Es correcto? Se producir algn cambio si las instrucciones "subu" son sustituidas por instrucciones "sub"? Por qu?

Multiplicacin y divisin con datos en memoriaTercer ejercicio Crea un fichero con el siguiente cdigo:.data .word .word .space .text lw lw mult

numero1: numero2:

0x7fffffff 16 8 $t0,numero1($0) $t1,numero2($0) $t0,$t1

main:

mflo mfhi sw sw

$t0 $t1 $t0,numero2+4($0) $t1,numero2+8($0)

La instruccin mult multiplica dos registros de propsito general (en el ejemplo anterior los registros t0 y t1) y deja el resultado de 64 bits en dos registros especiales de 32 bits llamados HI y LO. Las instrucciones mfhi y mflo sirven para mover los contenidos de estos registros especiales a los registros de propsito general (en este caso otra vez los registros t0 y t1). El cdigo realiza la multiplicacin de dos nmeros, almacenando el resultado de la multiplicacin a continuacin de los dos multiplicandos.

Borra los valores de la memoria, carga el fichero y ejectalo. Cuestiones

Qu resultado se obtiene despus de realizar la operacin? Por qu se almacena en dos palabras de memoria? Modifica los datos anteriores para que numero1 y numero2 sean 0xffffffff y 1 respectivamente. Cul es el valor del registro HI? Por qu? La instruccin de tipo R mul multiplica dos registros y guarda el resultado en un tercero. Escribe un programa en ensamblador que utilice la instruccin mul para multiplicar numero1 y nmero2 y deje el resultado en el registro $t2. Deja el resultado tambin en algn otro registro? Qu ocurre al cambiar la instruccin mul en el programa anterior por la pseudoinstruccin mulo? Qu ocurre al cambiar la pseudoinstruccin mulo en el programa anterior por la pseudoinstruccin mulou? Modifica los datos anteriores para que numero1 y numero2 sean 10 y 3 respectivamente. Escribe el cdigo que divida numero1 entre numero2 (dividendo y divisor respectivamente) y coloque el cociente y el resto a continuacin de dichos nmeros. La pseudointruccin div divide dos registros y guarda el resultado en un tercero (de manera similar a cualquier instruccin tipo-R). Escribe un programa en ensamblador que utilice la pseudoinstruccin div para dividir numero1 y nmero2 y deje el resultado en el registro $t2. Comprueba excepciones? Cul? Qu ocurre al cambiar la pseudoinst