Вы находитесь на странице: 1из 103

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADMICO AREA: INGENIERA / CARRERA: INGENIERA DE SISTEMAS

MATERIAL INSTRUCCIONAL DE APOYO


NOMBRE: MICROPROCESADORES Cdigo: 316 U.C.: 4 Ingeniera de Sistemas Cdigo: 236

CARRERA:

SEMESTRE: AUTOR:

VII Ing. Olga Esther Rodrguez Durn (Especialista de Contenido) Ing. Judit Carballo (Coordinadora Ingeniera de Sistemas) Lic. Carmen Velsquez de Rojas (Evaluadora) Lic. Antonio Alfonzo MsC ( Diseador Instruccional )

COMIT TCNICO:

Dra. Egle Arellano de Rojas ( Diseadora ) Caracas, Octubre 2005

INTRODUCCIN
El estudio a distancia e incluso el presencial en algunos momentos es una forma de aprendizaje que se basa especficamente en el trabajo personal de los estudiantes con mayor o menor independencia respecto de la gua directa de los profesores. El estudiante, al estar provisto de material autoinstruccional, puede de esta forma acceder a un mayor grado de aprendizaje, puesto que logra profundizar o aprender segn sus ritmos y conocimientos previos. Aqu radica el potencial que tiene la elaboracin del presente Material Instruccional de Apoyo (M.I.A.), el cual junto con el libro Los Microprocesadores Intel, de Barry B. Brey y el Software Simulador del Microprocesador 80286 se complementan para conformar el paquete instruccional del curso Microprocesadores, aunado a ello el estudiante cuenta con la asesora en los centros locales para aclarar dudas, tanto de manera presencial como a travs del correo electrnico. El Material Instruccional de Apoyo, se ha elaborado tomando en cuenta el nivel de conocimientos que ha obtenido el estudiante en los cursos anteriores, particularmente en el curso Arquitectura de Computadoras el cual define las conductas de entrada necesarias para el estudio de los microprocesadores y la implementacin de programas, para resolver un problema especfico. Tambin se ha considerado la complejidad de cada tpico y el uso del software simulador, ste software apoya el estudio de aquellas unidades en las cuales se realiza la descripcin y programacin de un microprocesador comercial. El Material Instruccional de Apoyo se ha organizado atendiendo a la Estructura del Curso. El Mdulo I: El Microprocesador, Arquitectura e Interfaces, consta de cuatro unidades. El Mdulo II: Familia de Microprocesadores, el Coprocesador Aritmtico y la Tecnologa MMX, incluye dos unidades, por su parte en el Mdulo III: Programacin del Microprocesador, se compone del estudio de dos unidades. Para cada mdulo se presenta: una breve introduccin, el objetivo del mdulo y las unidades que lo componen. Por su parte cada unidad incluye: una breve presentacin, el objetivo de la unidad, una sinopsis del contenido y una serie de actividades que el estudiante debe realizar para complementar su estudio, dentro de estas actividades se hace nfasis en la presentacin de aspectos tericos, ejemplos, ejercicios resueltos, ejercicios de autoevaluacin, consultas a material bibliogrfico y consultas a direcciones electrnicas en la Web. Cabe destacar que algunas de estas direcciones pueden no estar activadas al momento de la consulta, por lo que se recomienda al estudiante acceder a otras direcciones relativas al tema a travs de un buscador (Browser) en la Web. El estudio del curso Microprocesadores, exige el uso simultneo del Plan de Curso y el paquete instruccional. Estos dos componentes se interrelacionan para proporcionarle una visin general del curso y las herramientas necesarias para el logro del objetivo terminal.

3 Iconos empleados en el material instruccional A lo largo de la lectura de este material encontrar diversos conos, cuyo significado se explica a continuacin:

Ampliacin de conocimientos: Est dirigido al estudiante que desea profundizar ms en sus conocimientos en determinado tema. Atencin: Se presenta cuando se quiere hacer una aclaratoria, una advertencia o una reflexin sobre algn aspecto del contenido. Consulta en la Web: Indica referencias a pginas Web Consulta en otros libros: Se refiere a un llamado a consulta en libros que no figuran como textos de carcter obligatorio para el curso. Direccin de Correo electrnico: Indica direcciones de correo electrnico Ejercicios propuestos: son ejercicios sugeridos a manera de prctica sobre algn tema de la unidad. Ejercicios de autoevaluacin: Ejercicios que debe realizar el estudiante y posteriormente verificar contra los resultados aqu presentados. Ejemplo: Es la exposicin de un caso alusivo al tema en cuestin y su resolucin. Recordatorio: Indica algn aspecto a enfatizar, relacionado con los conocimientos adquiridos previamente por el estudiante.

MDULO I EL MICROPROCESADOR, ARQUITECTURA E INTERFACES.


En este mdulo se estudia la configuracin interna del microprocesador visible al programador, la manera como se direcciona la memoria y como funciona cada instruccin en la familia de los microprocesadores Intel. El establecimiento de las interfaces apropiadas para la conexin de los sistemas de memoria y de los dispositivos de entrada-salida (E/S) tambin son objetos de estudio en este mdulo. Finalmente se profundiza en la implementacin de interfaces sencillas que se conectan a los sistemas de bus ubicados en la computadora. Objetivo del Mdulo I: Resolver con sentido lgico y creativo, problemas inherentes a la arquitectura del microprocesador y al establecimiento de interfaces.

El mdulo I est estructurado en cuatro unidades: Unidad 1: Unidad 2: Unidad 3: Unidad 4: Arquitectura del Microprocesador. Interfaz con la memoria. Interfaz de E/S Bsica, Interrupciones y E/S Controlada por DMA. Interfaz del Bus.

UNIDAD 1
Arquitectura del Microprocesador. El estudio del modelo de programacin de los microprocesadores, puede realizarse travs de la descripcin de la arquitectura interna visible para el programa. Esta arquitectura comprende los registros que son utilizados por el programador en el desarrollo de aplicaciones, mediante instrucciones que hacen uso de ellos. En la Unidad I, se presentan los modelos de programacin de los microprocesadores 8086 al Pentium II, pertenecientes stos a la familia Intel, tambin su modo de funcionamiento en modo real y protegido. Las caractersticas de diseo de los microprocesadores, establecen sus capacidades y limitaciones, por ejemplo es conveniente para el programador, que el microprocesador tenga diversos modos de direccionamiento, ya que eso le permitir desarrollar software ms eficiente. La Unidad I presenta los modos de direccionamiento de datos, de la memoria y de la pila, para la familia de microprocesadores Intel. Finalmente se incluye en esta unidad el estudio de las instrucciones con que cuentan los miembros de esta familia, este estudio contempla entre otros aspectos la sintaxis del lenguaje ensamblador y algunas de sus directivas, as como tambin la funcin de cada instruccin, lo que permite sentar bases para la programacin de los microprocesadores en unidades posteriores. Objetivo de la Unidad 1: Aplicar los conceptos de arquitectura de los microprocesadores en la descripcin de su estructura y/o funcionamiento, dada no una situacin. Contenido de la Unidad 1: El contenido de la unidad contempla el estudio de los siguientes temas: El microprocesador y su arquitectura. Direccionamiento de memoria. Paginacin de memoria. Modos de direccionamiento. Direccionamiento de la pila de memoria. Instrucciones.

6 Actividades recomendadas para el estudio del contenido de la unidad 1. Atencin: Considerar que en el Plan de Curso de Microprocesadores, hay un error en la seccin V. Diseo de la Instruccin, en las secciones 2.1, 3.2, 4.2, 5.2 y 6.2, correspondientes a las unidades: 2, 3, 4, 5 y 6 respectivamente. El error se encuentra en la indicacin del Texto a utilizar a utilizar, donde dice: Texto Organizacin y Arquitectura de Computadoras . Debe decir : Texto: Los Microprocesadores Intel. .

1.- Examine la tabla 1.1, en ella contentivos de la unidad 1:

puede identificar las

lecturas de los temas

TTULO

MATERIAL DE REFERENCIA

CONTENIDO Arquitectura interna microprocesador. del

CAPITULO

Direccionamiento de memoria en modo real. texto Los El microprocesador y El Microprocesador su arquitectura. al es Intel, B. B. Introduccin direccionamiento de Brey. memoria en modo protegido. Paginacin de memoria. Modos de direccionamiento de datos. Modos de texto Los direccionamiento de la Modos de El direccionamiento. Microprocesador memoria del programa. es Intel, B. B. Modos de Brey. direccionamiento de la memoria de la pila. Instrucciones para El texto Los movimiento de datos. Microprocesador es Intel, B. B. Instrucciones aritmticas y lgicas. Brey. Instrucciones de control de programa.

4 5 6

Instrucciones.

Tabla 1.1

Atencin: Muchos de los ejemplos que presenta el texto Los microprocesadores Intel de B.B. Brey, usan el Microsoft MACRO Assembler (MAMS) como herramienta de desarrollo, pero la mayora de ellos pueden ser ensamblados con otros ensambladores, por ejemplo ASM (Intel Assembler) y TASM (Borland Turbo Assemler). En el curso Microprocesadores se utilizar el Software Simulador incluido en el paquete instruccional. No obstante se recomienda al estudiante investigar sobre el uso del MAMS, con el objeto de ampliar sus conocimientos. 2.- Una vez ledo el contendido indicado en la tabla 1.1, usted estar en capacidad de responder lo siguiente: 2.1 Qu es el modelo interno de programacin de un microprocesador? 2.2 Por qu se puede afirmar que el modelo de programacin de los microprocesadores Intel, es visible para el programa? 2.3 Qu microprocesadores Intel contienen registros de 8 y 16 bits? 2.4 Cul es la funcin de los registros de propsito especfico para los microprocesadores Intel? 2.5 Cul es la funcin y propsito de los registros de segmento: CS, DS, ES y SS? 2.6 Cules son las principales ventajas de los siguientes direccionamientos de datos: inmediato, directo, indirecto, registro, indirecto con registro? 2.7 Cules son los tres modos de direccionamiento de memoria de programa? 2.8 Cules registros controlan la memoria de la pila? 2.9 Cules son los cdigos de operacin que transfieren datos entre la pila y las banderas? 2.10 Cules son los registros que emplean las estructuras de transferencia de cadenas de datos para direccionar memoria? 2.11 Qu es una directiva de lenguaje ensamblador? 2.12 Para qu son empleadas las directivas PROC y ENDP? 2.13 Un microprocesador 80386 opera en el modo protegido y utiliza un registro de 32 bits, Es necesario que el cdigo de operacin est precedido del prefijo de tamao de registro? Razone su respuesta. 2.14 Cul es la funcin de la directiva .MODEL? 3.- Estudie el ejemplo 1.1, en el cual se presentan los modelos de programacin de dos microprocesadores de 8 bits. Ejemplo 1.1: Modelo de programacin de los microprocesadores de 8 bits: 8080 y Z80.

El microprocesador Z80 de Zilog es una versin apreciablemente mejorada tanto en circuitera como en caractersticas de programacin del modelo INTEL 8080, el Z80 resulta ser un microprocesador ms rpido y sencillo en el desarrollo de

8 sistemas ya que solo usa una fuente de alimentacin de +5 Volts, contiene ntegramente todo el conjunto de instrucciones del 8080, lo cual le permite ejecutar todos los programas escritos para el CPU 8080, contiene el Z80 una expansin adicional de 80 instrucciones de ah se deriva su nombre, su repertorio suma un total de 156 instrucciones. Esta significativa mejora puede apreciarse si se comparan los modelos de programacin de cada uno de ellos. Se presentan a continuacin los modelos de programacin de los microprocesadores 8080 de Intel y el Z80 de Zilog, as como tambin la descripcin y funcionamiento de cada uno de los registros que los conforman. MODELO DE PROGRAMACIN DEL MICROPROCESADOR 8080 En la figura 1.1 se presenta el modelo de programacin de este microprocesador , el cual dispone de los siguientes registros: Un registro acumulador de 8 bits (tambin llamado registro A). Seis registros de propsito general de 8 bits (B, C, D, E H y L.), que con algunas instrucciones pueden usarse como registros pares de 16 bits (B-C, D-E y H-L). Dos registros de 16 bits de propsito especfico: un puntero de Stack (SP, siglas en ingls de Stack Pointer)) y un contador de programa (PC, siglas en ingls de Counter Program). Cinco flags (banderas) de 1 bit cada una que posee la unidad aritmtico lgica y cuyo contenido es modificado despus de la ejecucin de numerosas instrucciones lgicas y aritmticas. Estas flags son: S, C, A, P y C. Registro acumulador A Registros de propsito general B D H C E L

Registros de propsito especfico SP (Stack Pointer) PC (Program Counter) Flags (banderas) Figura 1.1 Modelo de programacin del microprocesador Intel 8080

Atencin: El registro Flags contiene 8 bits, pero solo se utilizan los cincos bits menos significativos, que corresponden a las cinco banderas: S, C, A, P y C.

MODELO DE PROGRAMACIN DEL MICROPROCESADOR Z80 El modelo de programacin de este microprocesador (ver figura 1.2), est compuesto por un banco principal, otro alternativo y por ltimo un banco compuesto por registros especiales. La existencia del banco alternativo mejora la velocidad ante la presencia de las interrupciones ya que permite cambiar desde el banco principal al alternativo. Los registros son: Hay 2 grupos de registros de propsito general. Cada grupo contiene 6 registros de 8 bits, que pueden ser usados individualmente como registros de 8 bits o en parejas como registros de 16 bits. Un grupo se llama BC, DE y HL y el otro BC, DE y HL. El programador puede cambiar a cualquiera de los dos grupos de registros con una simple instruccin de intercambio. Registros de Acumuladores y Banderas: El Z80 tiene 2 registros acumuladores independientes de 8 bits (comnmente llamados A y A) y 2 registros de banderas asociados a los 2 acumuladores (F y F). Los acumuladores almacenan los resultados de operaciones aritmticas o lgicas de 8 bits, y los registros de banderas indican condiciones para operaciones de 8 y 16 bits. Estas banderas son S, Z, A, P, N y C. El programador puede usar el par acumulador-bandera que desee y puede cambiar al otro par con una simple instruccin de intercambio. Registros de propsito especfico: - Dispone del registro Program Counter (PC) de 16 bits, que contiene la direccin de la instruccin que se debe buscar en la memoria. - El Stack Pointer (SP) de 16 bits, el cual contiene la direccin del tope actual de la pila. - Dos Registros ndice (IX, IY), son dos registros independientes que contienen los 16 bits de direcciones que se usan en modos de direccionamiento indexado. En este modo, un registro ndice se usa como base para apuntar a una regin en memoria en la cual el dato ser almacenado o recuperado. - El Registro de Interrupciones (I): El Z80 puede operar en un modo donde cualquier posicin de memoria puede lograrse en respuesta de una interrupcin. Este registro se usa para almacenar los 8 bits ms significativos de la direccin, mientras el perifrico que interrumpe provee los 8 bits menos significativos. Esto da la posibilidad de que las rutinas de interrupcin sean localizadas dinmicamente en cualquier parte de la memoria con un mnimo tiempo de acceso a la rutina. - El Registro de Refresco de Memoria (R), de 8 bits que almacena el bloque de memoria a cuyo refresco se va a proceder.

10 Registros del banco principal A B D H F C E L Registros del banco alternativo A B C H F C E L

Registros ndice IX IY Registros de pila y contador del programa SP PC Registro de interrupciones y de refresco de memoria I R Figura 1.2 Modelo de programacin de microprocesador Zilog Z80. Atencin: El texto utilizado para el estudio del Curso Microprocesadores se basa en los modelos fabricados por la compaa Intel, sin embargo se utiliza en este ejemplo, el microprocesador Z80 desarrollado por la compaa Zilog, con el objeto de que el alumno ample sus conocimientos.

4.- Lea el siguiente contendido terico, el cual le aportar conocimientos necesarios para describir cmo acceder a la memoria de un computador, usando la tcnica de direccionamiento de memoria en modo real. Una de las funciones bsicas que debe implementar un SO (Sistema Operativo) es la Administracin de la Memoria, para tener un control sobre los lugares donde estn almacenados los procesos y datos que actualmente se estn utilizando. El direccionamiento de la memoria puede considerarse desde dos puntos de vista: fsico y lgico. El primero se refiere a los medios electrnicos utilizados en el computador para acceder a las diversas posiciones de memoria, el segundo, a la forma en que se expresan y guardan las direcciones. El sistema de numeracin utilizado para representar las direcciones de memoria no suele ser el decimal, sino el hexadecimal. La razn es que los nmeros

11 hexadecimales guardan cierta concordancia con las potencias de 2. Por ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones (28 = 256), expresado en hexadecimal es el rango 00-FF H. En caso de direcciones de 16 bits, se puede acceder 65.536 posiciones (es el rango 0000FFFF H). El bus de direcciones del PC XT, tiene 20 bits, las posibilidades son 1.048.576 (es el rango 00000-FFFFF H). Como veremos a continuacin, puede utilizarse una doble notacin: direcciones absolutas, indicadas por un hexadecimal de cinco dgitos, en el rango 00000FFFFF H, o en direcciones segmentadas, que utiliza dos grupos de cuatro dgitos hexadecimales. El direccionamiento segmentado, consiste en la asignacin de bloques de memoria de tamao variable, llamados segmentos. El tamao de cada segmento ser el requerido segn la peticin, por ejemplo el tamao del proceso a cargar. El tamao mximo para un segmento estar determinado por la capacidad de direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone para almacenar una direccin. El acceso a cada elemento individual (byte) en la memoria se hace mediante una direccin de memoria que se integra por dos elementos: una direccin de segmento y una de desplazamiento. La combinacin (suma) de la direccin de segmento y la de desplazamiento generan la direccin de memoria absoluta a acceder, tal como se muestra en la figura 1.3, mostrada a continuacin: Tabla de segmentos Po P1 P2 400 250 1200 P1 Direccin lgica Po 12 + Direccin absoluta 400 400+12 Po 250

1200 P2

Figura 1.3 Esquema de direccionamiento de memoria en modo real

12

Atencin: Una direccin lgica indica una posicin relativa al comienzo de un programa, las instrucciones de programas contienen solo direcciones lgicas. Una direccin fsica es, por supuesto, la posicin actual en la memoria principal. Cuando el procesador ejecuta un proceso, automticamente convierte las direcciones lgicas en fsicas.

5.- Estudie el ejemplo 1.2, en el cual se muestra un programa de aplicacin que contiene un segmento de cdigo, datos y pila cargado en un sistema DOS de memoria. Ejemplo 1.2: Almacenamiento de un programa de aplicacin en el sistema DOS de memoria.

El bus del PC XT contiene 20 lneas, estas lneas contienen las direcciones que identifican la parte del computador que comunica. Las direcciones son de dos tipos; unas se refieren a direcciones de memoria; otras a direcciones de puertos de E/S. Con los datos anteriores, resulta evidente que el PC XT puede manejar 1.048.576 direcciones (220). Sin embargo, el microprocesador 8088 presente en el XT dispone de registros de 16 bits que solo pueden albergar 65.536 posiciones (216), muy alejado del valor anterior. Para resolver el problema, se utilizan las direcciones segmentadas, compuestas por dos palabras de 16 bits que se componen para formar una direccin de 20 bits (esta direccin es denominada tambin como direccin absoluta). Para generar estas direcciones el 8088 dispone de cuatro registros de segmento: CS, SS, DS y ES. Los aspectos concretos de almacenamiento de un programa dependen de la plataforma; no existe un modelo nico. En la figura 1.4 se muestra como se utilizan los registros de segmento para sealar las direcciones de inicio de los diversos mdulos de un programa cargado en memoria, dentro del espacio de memoria direccionable con 20 bits (00000-FFFFF H).

13 FFFFF H Registros de puntero Segmento de cdigo IP SP BP Registros de segmento CS Segmento de datos SS DS ES 00000 H Figura 1.4 Programa de aplicacin cargado en un sistema de memoria DOS 6.- Estudie el ejemplo 1.3, en el cual se aplica el manejo de memoria en modo protegido, para describir cmo el microprocesador 80386 asigna las localidades de memoria a un segmento de datos. Ejemplo 1.3: Manejo de memoria en modo protegido. En la ejecucin de un programa en un sistema basado en microprocesador 80386, se requiere en un instante dado almacenar datos en la memoria, bajo estas condiciones el contenido del registro de segmento de datos DS es el mostrado en la figura 1-5: 0000000000001 0 00 Solicita nivel de privilegio 00 Elige descriptor en la tabla de descriptores globales Selecciona descriptor nmero 1 Figura 1.5 Contenido del registro de segmento DS Segmento extra de datos Fin de la pila Segmento de pila

14 Y el formato del descriptor nmero 1 contenido en la tabla de descriptores globales es el siguiente: Ocho bytes del descriptor 7 5 3 1 0000 0000 1111 0010 0000 0000 0001 0000 6 4 2 0

0000 0000 0000 0000 0000 0000 1111 1111

Figura 1.6 Formato del descriptor nmero 1 El inicio y fin del segmento de datos ser el siguiente: Base = Lmite = Final = Final = 00100000 H 000FF H Base + Lmite = 00100000 H + 000FF H 001000FF H.

Se puede concluir entonces, que el microprocesador utilizar las localidades de memoria comprendidas en el rango: 00100000 H 001000FF H para almacenar el segmento de datos. 7.- Estudie el ejemplo 1.4, en el cual se presenta uno de los cuatro mecanismos de manejo de la memoria disponible en el microprocesador Intel Pentium II. Ejemplo 1.4: Gestin de memoria segmentada paginada en el Pentium II.

El Pentium II incluye hardware, tanto para segmentacin como para paginacin. Cuando ambos mecanismos estn activados, se puede ver la memoria segmentada paginada. La segmentacin define particiones lgicas de memoria en el control de acceso. Por su parte con la paginacin, se gestiona la asignacin de memoria dentro de las particiones. Cuando se utiliza segmentacin las direcciones utilizadas en los programas son direcciones virtuales (llamadas tambin direcciones lgicas), estas direcciones constan de una referencia al segmento de 16 bits y un desplazamiento de 32 bits. El mecanismo de traduccin de direccin para la segmentacin implica hacer corresponder una direccin lgica con la direccin lineal. El siguiente paso es la traduccin de una direccin lineal a una direccin fsica de 32 bits. La figura

15 1.7 se ilustra la combinacin de los mecanismos de segmentacin y paginacin disponibles en el Pentium II.

Direccin lgica

Segmentacin

Paginacin

D e s p l a z a m i e n t o S e g m e n t o Tabla de segmentos

Dir.

Direccin lineal Desplazamiento Pgina + Direccin fsica

Directorio de pginas

Tabla de pginas

Memoria principal

Figura 1.7 Mecanismos de traduccin de una direccin de memoria en el Pentium II Atencin: Las particiones son bloques de memoria que pueden tener tamao fijo o tamao variable. 8.- Estudie el contenido de la Tabla 1.2, en la cual se presentan los registros de 8, 16 y 32 bits utilizados por la familia de microprocesadores Intel, para el direccionamiento de registro.

16

REGISTROS DE 8 BITS AH AL BH BL CH CL DH DL

REGISTROS DE 16 BITS AX BX CX DX SP BP DI SI CS ES DS SS FS GS

REGISTROS DE 32 BITS EAX EBX ECX EDX ESP EBP EDI ESI

* Nota: Son utilizados por algunas instrucciones MOV, as como tambin por las
instrucciones PUSH y POP. Tabla 1.2 9.- Estudie el ejemplo 1.5, en el cual se describen los modos de direccionamiento disponibles en el Pentium II. Ejemplo 1.5: Modos de direccionamiento del Pentium II.

En el mecanismo de traduccin de direcciones del Pentium II presentado en la figura 1.8, se obtiene una direccin lineal que pasa por un mecanismo de traduccin de pginas para producir una direccin fsica. En el ejemplo que se presenta a continuacin se ignora el paso de paginacin, ya que ste es transparente para el repertorio de instrucciones y para el programador. El Pentium II est equipado con diversos modos de direccionamiento, ideados para permitir la ejecucin eficiente de lenguajes de alto nivel. En la figura 1.8 se muestra el hardware involucrado y en la Tabla 1.3 los modos de direccionamiento disponibles.

17 Registro de segmento

SS Selector GS Selector FS Selector ES Selector DS Selector CS Selector

Registro base

Registro ndice

Escala: 1,2 u 8

Desplazamiento (en la instruccin, 0, 8 32 bits) Direccin efectiva Direccin lineal +

Registros descriptores Derechos de SS acceso Derechos de GS acceso Lmite Derechos de FS acceso Lmite Derechos de ES Direccin base acceso Lmite Derechos de DS Direccin base acceso Lmite Derechos de CS Direccin base acceso Lmite Direccin base Lmite Direccin base Direccin base

Figura 1.8 Clculos en el modo de direccionamiento del Pentium II

18 MODO ALGORITMO DESCRIPCIN El operando se incluye en la instruccin. El operando puede ser un byte, una palabra o una palabra doble de datos. Este modo puede utilizarse para definir y utilizar constantes, o para fijar valores iniciales de variables. El operando est situado en un registro. Si se hace un uso masivo de este direccionamiento en un repertorio de instrucciones, los registros de la CPU se emplearn intensamente, y debido al nmero limitado de registros en comparacin con el nmero de posiciones de la memoria principal, se recomienda usarlo eficientemente. El desplazamiento del operando est incluido, formando parte de la instruccin. Debido a que implica instrucciones largas, se puede encontrar en pocas mquinas, en el Pentium II, el valor del desplazamiento puede ser de 32 bits, haciendo que la instruccin tenga 6 bytes. Especifica que uno de los registros de 8, 16 o 32 bits contiene la direccin efectiva La instruccin incluye un desplazamiento que hay que sumar a un registro base, que puede ser cualquiera de los registros de uso general. Un ejemplo de uso de este modo es: utilizacin por un compilador para apuntar al comienzo de una zona de variables, en este caso el registro base apunta al comienzo de un marco de pila, que contiene las variables locales para el procedimiento correspondiente. La instruccin incluye un desplazamiento a sumar a un registro, llamado en este caso registro ndice. El registro ndice puede ser cualquiera de los registros de uso general excepto el ESP. Este modo es muy conveniente para indexar matrices.

Inmediato

Operando = A

Registro

LA = R

Con LA = (SR) + A desplazamiento

Base

LA = (SR) + (B)

Base con LA = (SR) + (B) + A desplazamiento

ndice escalado con LA = (SR) + (I) x S + A desplazamiento

19 MODO DESCRIPCIN Suma los contenidos de los registros base e ndice, y un desplazamiento para formar la direccin efectiva. Como Base con ejemplo, este modo de ndice y LA = (SR) + (B)+ (I) + A direccionamiento podra emplearse desplazamiento para manejar una matriz bidimensional; en este caso el desplazamiento apunta al inicio de la matriz, y cada registro gestiona una dimensin de la misma. Suma el contenido del registro ndice, multiplicado por un factor de escala, Base con con el contenido del registro base y el ndice escalado LA = (SR) + (I) x S + desplazamiento. Es til Este modo y (B) + A permite la indexacin eficiente de una desplazamiento matriz bidimensional cuando los elementos de la misma tienen longitudes de 2, 4 u 8 bytes. Se suma un desplazamiento al valor del contador del programa que apunta a la Relativo LA = (PC) + A siguiente instruccin. Puede emplearse en instrucciones de transferencia del control (control de flujo).
LA = direccin lineal SR = Registro de segmento A = Contenido de un campo de direccin de la instruccin I = Registro ndice (X) PC R B S = contenido de X = Contador de programa = Registro = Registro Base = Factor de escala

ALGORITMO

Tabla 1.3 Modos de direccionamiento del Pentium II. 10.- Estudie el ejemplo 1.6, en el cual se ilustra el uso de la pila para el paso de parmetros entre funciones, en el lenguaje C de alto nivel. Ejemplo 1.6: Uso de la pila cuando se invoca una funcin en lenguaje C.

En el lenguaje C normalmente se utiliza la pila para pasar parmetros entre funciones. Antes de realizar la llamada a una funcin se insertan en la pila todos los parmetros luego se invoca a la funcin y sta lee los parmetros de la pila. Cuando se realiza la invocacin de una funcin utilizando las instrucciones CALL y RET, la estructura tpica de la pila es la que se muestra en la figura 1.9:

20 Segmento de pila Final de la pila (valor inicial de ESP)

Variables locales pasadas al procedimiento llamado

Parmetros pasados al procedimiento llamado

EBP apunta a la direccin de la instruccin de retorno Direccin de la instruccin de retorno Registro EBP Registro ESP

Tope de la pila Figura 1.9 Uso de la pila cuando se invoca un funcin en lenguaje C El orden en el que se insertan los parmetros en la pila es importante. Los ltimos parmetros en insertarse en la pila son los primeros parmetros en la declaracin de la funcin C. 11.-Estudie el ejemplo mostrado a continuacin en el cual se convierte una instruccin escrita en lenguaje de mquina a lenguaje ensamblador, para los casos en que un microprocesador 80386 o posteriores, opera en el modo de instrucciones de 16 bits y de 32 bits. Ejemplo 1.7: Instruccin 668BEC H convertida a su forma de lenguaje ensamblador, cuando es ejecutada en un microprocesador 80386 o posteriores, operando en el modo de instrucciones de 16 bits.

21 El microprocesador opera en el modo de instrucciones de 16 bits. La instruccin consta de tres bytes: 66 H, 8B H instruccin en binario ser el siguiente: Byte 1 (66 H) 0 1 1 0 0 1 1 0 1 0 y EC H y el formato de la

Byte 2 (8B H) 0 0 1 0 1 1 W D

Prefijo de tamao de registro

Cdigo de operacin

Byte 3 (E8 H) 1 1 1 0 1 0 0 0

MOD

REG

R/M

El byte 1: Selecciona operandos de registro de 32 bits. El byte 2: Contiene el cdigo de operacin conformado por los seis bits ms significativos (100010), que corresponden a la operacin MOV. El bit de direccin D indica que la palabra doble (W = 1) ser movida al registro destino. El byte 3: Puesto que el campo MOD contiene 11, el campo R/M indica que es un registro. Las asignaciones de REG y R/M sern las siguientes: REG = 101, que corresponde al registro de 32 bits EBP (operando destino) R/M = 000, que corresponde al registro de 32 bits EAX (operando fuente)

La instruccin escrita en lenguaje ensamblador es MOV EBP, EAX. Esta instruccin mueve la palabra doble desde el registro EAX al registro EBP. Atencin: El ejemplo 1.7 est incluido en el texto Los microprocesadores Intel, pero es explicado con ms detalle en el presente material.

22 12.-Estudie el ejemplo 1.8, en el cual se presenta un pequeo programa escrito en lenguaje ensamblador que muestra el uso de la instruccin para transferencia de datos MOV y el empleo de algunas directivas. Ejemplo 1.8: Aplicacin de la instruccin MOV de transferencia de datos y las directivas ORG, DB y DW.

ORG 1000 H var_byte DB 20 H var_word DW ? ORG 2000 H MOV AX, 1000 H MOV BX, AX MOV BL, var_byte MOV var_word, BX END AX BX Instante En el programa anterior, se observa el uso el uso ms comn de la directiva ORG. La idea es separar las variables del programa. En el programa, las variables sern almacenadas a partir de la direccin 1000 H mientras que las instrucciones del programa estarn a partir de la direccin 2000 H. La primera instruccin MOV asigna el valor inmediato 1000 H al registro AX. Esta instruccin emplea el modo de direccionamiento conocido como inmediato. Como ambos son valores de 16 bits, no hay inconveniente en esa asignacin. El siguiente MOV asigna el contenido del registro AX al registro BX. De nuevo, como ambos son de 16 bits, es una asignacin vlida. El modo de direccionamiento que usa es el denominado registro. El tercer MOV asigna el contenido de la variable var_byte (que es 20 H) al registro BL. Como BL es la parte baja de BX, pasa de 1000 H a 1020 H. Como BL y var_byte son ambos de 8 bits, es una asignacin permitida. Adems, se emplea el modo de direccionamiento directo. El ltimo MOV asigna el valor contenido en el registro BX a la direccin de memoria a la que var_word hace referencia. Ahora, var_word contiene el valor 1020 H. 13.-Estudie el ejemplo 1.9, en el cual se presenta un pequeo programa escrito en lenguaje ensamblador que muestra el uso de las instrucciones aritmticas ADD y ADC. Ejemplo 1.9: Aplicacin de las instrucciones aritmticas ADD (suma) y ADC (suma con acarreo).

23

ORG 1000 H dato1_l dato1_h dato2_l dato2_h ORG 2000 H MOV ADD MOV ADC END

DW DW DW DW

0FFFF H 0015 H 0011 H 0002 H

AX, dato1_l AX, dato2_l BX, dato1_h BX, dato2_h

Note que la segunda suma es realizada usando un ADC y no un ADD. De esta manera, si en el ADD se produce un acarreo, ste es sumado junto a dato1_h y dato2_h durante el ADC, produciendo el resultado correcto. 14.-Estudie el ejemplo 1.10, en el cual se emula una instruccin de un lenguaje de alto nivel en lenguaje ensamblador, utilizando instrucciones aritmticas, de salto (condicional e incondicional) y de transferencia de datos. Ejemplo 1.10: Aplicacin de instrucciones del lenguaje ensamblador para codificar la estructura de control IF THEN ELSE del lenguaje Pascal.

No existe una instruccin en el lenguaje ensamblador que sea capaz de hacer lo que hace la estructura IF-THEN-ELSE de Pascal. Sin embargo, es posible emularla mediante la combinacin de instrucciones CMP y saltos condicionales e incondicionales. Por ejemplo, para simular el siguiente cdigo de Pascal: IF AL = 4 THEN BEGIN BL = 1; CL = CL + 1; END; Se debe comenzar calculando la condicin del IF, en este caso, comparar AL con 4. Eso se logra con una instruccin CMP: CMP AL, 4 Esta instruccin alterar los flags y en particular, interesa ver al flag Z, ya que si dicho flag est en 1, implica que al restar AL con 4, el resultado dio 0, por lo que AL tiene que valer 4. Entonces, si esa condicin es verdadera, se debera ejecutar las instrucciones que estn dentro del THEN. Si no, se evita ejecutarlas.

24 Una solucin que permite esto es la siguiente: CMP AL, 4 JZ Then JMP Fin_IF MOV BL, 1 INC CL HLT ;(1) ;(2) ;(3) ;(4) ;(5) ;(6)

Then: Fin_IF:

Analizando el cdigo se puede establecer lo siguiente para cada uno de los comentarios: Si la comparacin en (1) establece el flag Z en 1, el salto en (2) se produce, haciendo que la ejecucin contine en la etiqueta Then. Ah, se ejecutan las instrucciones (4) y (5) que hacen lo que se encuentra en el THEN del IF y contina la ejecucin en la instruccin apuntada por la etiqueta Fin_IF Si el flag Z qued en 0 en (1), el salto en (2) no se produce, por lo que la ejecucin contina en la prxima instruccin, el JMP en (3), que saltea las instrucciones y contina la ejecucin en la instruccin apuntada por la etiqueta Fin_IF , que seala el final del IF. En el final del IF, se ejecuta un HLT (6) para terminar la ejecucin del programa. 15.- Resuelva las preguntas y los problemas presentados en el texto indicado en la bibliografa obligatoria. Ejercicios propuestos

1.- Aplique los conceptos de modelo de programacin estudiados y describa el modelo interno de programacin de los microprocesadores de 16 y 32 bits de la familia Intel, utilizando el mismo esquema presentado en el ejemplo 1.1. 2.- Se propone al estudiante realizar el ejemplo 1.3, utilizando el sistema de codificacin hexadecimal para especificar el contendido del descriptor. 3.- Determine la direccin de memoria a la cual accede cada una de las siguientes instrucciones con el modo de operacin real (asuma para ello que DS = 0200 H, BX = 0300 H y DI = 400 H): a) MOV EAX,[BX] b) MOV [DI],AL 4.- Se propone al estudiante realizar el ejemplo 1.7, pero considerando que el modo de instrucciones es de 16 bits. 5.- Desarrolle una secuencia de instrucciones que intercambie el contenido de AX con BX, el de ECX con EDX y el de SI con DI. 6.- Explique cmo se convierte la instruccin AAM de binario a BCD.

25

Consulta en otros libros

[Sayers 1995] trata arquitecturas prcticas de microprocesadores de 8, 16 y 32 bits. [Stallings 2000] Incluye material sobre: la organizacin de los registros visibles al usuario (modelo de programacin), los modos de direccionamiento y el repertorio de instrucciones. [Lameda 1984] presenta el estudio de microprocesadores de 8 bits. [Flyn85] Flynn, M,;Jonson, J.; and Wakefield, S. On Instruction Sets and Their Formats IEEE Transactions on Computer, September 1987. Contiene aspectos de diseo de repertorios de instrucciones, particularmente aquellos relativos a los formatos. [Tanenbaum 2000] en el cual se presentan los foatos de las intrucciones, los modos de direccionamiento y los tipos de instrucciones. Tambien presenta el nivel del lenguaje ensamblador. Adems se encuentra informacin sobre la arquitectura del microprocesador en cualquiera de los textos recomendados

Consulta en la Web

http://www.itlp.edu.mx/publica/tutoriales/ensamblador/indice5.htm : informacin sobre los elementos bsicos del lenguaje ensamblador.

Contiene

http://weblidi.info.unlp.edu.ar/catedras/organiza/download/apunte4.pdf : Contiene informacin sobre las instrucciones y directivas del lenguaje ensamblador. Incluye http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo4.html: informacin interesante sobre la segmentacin y la paginacin de memoria. http://futura.disca.upv.es/~eso/es/t2-arquitectura/gen-t2-arquitectura.html: Presenta una introduccin a la arquitectura IA-32 de los microprocesadores Intel.

26

Ejercicios de Autoevaluacin

1.- Responda con sus propias palabras los siguientes cuestionamientos: a) Cul es la funcin de un registro de segmento en el direccionamiento de memoria en modo protegido? b) Cul es la funcin del TLB (buffer de referencia de traduccin), ubicado dentro del microprocesador 80486? 2.- Cules son las localidades de inicio y final que direcciona un descriptor del microprocesador 80286 con una direccin de base de A00000 H y un lmite de 1000 H? 3.- Represente en forma grfica un descriptor que describa un segmento de memoria bajo las siguientes condiciones: Inicie en la localidad 03000000 H y termine en la localidad 05FFFFFF H. El segmento de memoria es un segmento de datos que crece hacia arriba en el sistema de memoria y puede ser escrito. El descriptor es para un microprocesador 80386.

4.- Genere en forma grfica la direccin de memoria a la cual accede la instruccin MOV AL,[1234 H] con el modo de operacin real (suponga para ello que DS = 0200 H y que en la localidad de memoria 3134 H se encuentra almacenado el valor 8A H). 5.- Desarrolle una secuencia corta que incluya instrucciones de transferencia de datos y lgicas, la cual permita establecer en 1 los cinco bits del extremo derecho de DI, sin cambiar los bits restantes de ste. La secuencia guardar el resultado en SI, con el objeto de no cambiar el contenido original de DI.

Respuesta a los Ejercicios de Autoevaluacin

1.- A continuacin las respuestas: a) El registro de segmento contiene un selector que elige a un descriptor de la tabla de descriptores ya sea local, o global, tambin contiene el nivel de privilegio solicitado. b) El TLB almacena las 32 ltimas traducciones de la direccin lineal a la fsica de la unidad de paginacin.

27 2.- El inicio y fin del segmento ser el siguiente: Base = Inicio = A00000 H Final = Base + lmite = A00000 + 1000 h Final = A01000 H 3.- Utilizando el formato presentado el ejemplo 1.3: Ocho bytes del descriptor 7 5 3 1 0000 0011 1001 0010 1001 0000 0000 0000 6 4 2 0

0000 0000 0000 0000 0010 1111 1111 1111

4.- A continuacin se genera la direccin para la instruccin MOV AL,[1234 H]:

AH

AL

EAX EBX ECX

8A H

8A H

8A H

3134 H

CS DS 0200 H DS x 10 H +

1234 H

28 5.- La secuencia ser la siguiente: MOV OR SI, DI SI, 1F H

29 UNIDAD 2 Interfaz con la Memoria. En computadores antiguos, la forma ms comn de almacenamiento de acceso aleatorio para la memoria principal consista en una matriz de pequeos anillos ferromagnticos denominados ncleos. Pero con el advenimiento de la microelectrnica y sus ventajas, naci el uso de las memorias semiconductoras para la memoria principal. En esta unidad se exploran aspectos claves de esta tecnologa, se inicia con el estudio de la organizacin y funcionamiento de los dispositivos semiconductores de memoria, especficamente los cuatro tipos ms comunes: ROM (memoria de slo lectura), EEPROM (memoria de slo lectura, borrable y programable elctricamente), SRAM (memoria esttica de acceso aleatorio) y DRAM (memoria dinmica de acceso aleatorio). Una vez estudiados los componentes que conforman la memoria principal del microprocesador, es necesario que se ensamblen estos componentes en forma correcta a objeto de producir un sistema de memoria adecuado para un microprocesador. Debe considerarse la cantidad de memoria requerida y el mtodo ptimo de conectar a toda la memoria del microprocesador. Por esto se incluye en la unidad 2, la solucin de problemas de conexin de la memoria al microprocesador mediante la interfaz adecuada, especficamente para la familia de los microprocesadores Intel. Objetivo de la Unidad 2: Resolver problemas de conexin de la memoria al microprocesador, mediante el uso de la interfaz apropiada. Contenido de la Unidad 2: El contenido de la unidad 2 incluye el estudio de los siguientes temas: 2.1 Dispositivos de memoria 2.2 Decodificacin de la direccin 2.3 Interfaz de memoria para los microprocesadores de 8, 16, 32 y 64 bits 2.4 RAM dinmica

30 Recomendaciones para el estudio del contenido de la unidad 2. 1.- Examine la tabla 2.1, en ella puede identificar las lecturas de los temas contentivos de la unidad 2.
MATERIAL DE REFERENCIA

TTULO

CAPITULO

CONTENIDO

SECCIN

El texto Los Interfaz con la Microprocesa memoria. dores Intel, B. B. Brey.

10

Dispositivos de 10.1 memoria. Decodificacin de la 10.2 direccin. Interfaz de la memoria de los microprocesadores 10.3 -10.6 de 8, 16, 32 y 64 bits. RAM dinmica. Impresoras. 10.7

Tabla 2.1 2.- Una vez ledo el contendido indicado en la tabla 2.1, usted estar en capacidad de responder lo siguiente: 2.1Cules son los terminales de conexin comunes a todos los dispositivos de memoria? 2.2Por qu es necesario decodificar las lneas de direccin del microprocesador? 2.3 Qu es una interfaz de memoria? 2.4Qu tipos de conexin son comunes para todos los dispositivos de memoria? 2.5 Cuntas palabras se encuentran en un dispositivo de memoria que tenga 8 conexiones de direccin? 3.- Estudie la figura 2.1, la cual ilustra una jerarqua de memoria tpica, como la que se podra encontrar en una computadora de tamao moderado. Tome en cuenta que no es la nica configuracin que se podra usar; pero sirve para ilustrar lo que podra esperarse encontrar cuando se estudia una computadora real.

31
Memoria principal que consiste en RAM y ROM. Almacena el programa y datos Actuales. Unidades de disco usadas para Almacenar datos programas para uso a futuro. Unidad de cinta usada para almacenar datos y programas que ya no se requieren o para proteccin Contra fallas de memoria Principal o disco.

Lectura/escritura

Lectura/escritura

Figura 2.1 Jerarqua tpica de memoria. Atencin Las unidades de almacenamiento de disco y de cinta no son objeto de estudio del curso Microprocesadores.

4.- Examine la figura 2.2 presentada en el ejemplo 2.1, esta arquitectura ilustra una arquitectura tpica de un arreglo de memoria. En el arreglo, m bits de direccin se dividen en t bits de direccin de fila y s bits de direccin de columna, para simplificar los decodificadores a utilizar. Ejemplo 2.1: Arquitectura tpica de un arreglo de memoria.

La memoria de la figura 2.2 tiene n bits de capacidad, o sea que puede almacenar n bits de datos. Para acceder a cualquiera de estas n celdas de memoria es necesario suministrar una direccin nica para identificar la localizacin requerida dentro del arreglo de memoria. El acceso o decodificacin de la direccin requerida se facilita dividindola en direcciones de fila y columna para aplicarlas al arreglo de memoria. Los m bits de direccin se dividen en t bits de direccin de fila y s de direccin de columna, lo que simplifica mucho los decodificadores requeridos en el chip de memoria. En vez de utilizar un decodificador de lnea m a lnea 2m, basta con dos decodificadores de lnea ms pequeos y simples, t a lnea 2t y lnea s a lnea 2s. Adems si m es un nmero par, es decir s y t son iguales, se puede simplificar todava ms el chip de memoria ya que solo se requiere un tipo de decodificador aunque se necesiten dos

32
Direccin de columna

1. . . . . . . s

Decodificador

2s
Direccin de fila

1 . . . . . t

Decodificador

Arreglo de memoria

2t

Celda de la memoria
Controladores de escritura y amplificadores de deteccin, ms multiplexor de entrada/salida

______
Lectura/escritura

Salida

Entrada

Figura 2.2 Arquitectura tpica de un arreglo de memria de 2n celdas.

5.- Estudie el ejemplo 2.2, el cual explica en trminos generales la forma en que se lleva a cabo la correccin de errores en las memoria semiconductoras.

33

Ejemplo 2.2: Cdigo corrector de errores.

Un error en un sistema digital producir que un 1 se reemplace con un 0 o que un 0 se reemplace con un 1. Es esencial que los errores se detecten de manera que se haga algo para rectificarlos [Sayers,1995]. Las memorias semiconductoras estn sujetas a errores. Es por esto que la mayora de los sistemas de memoria modernos incluyen lgica para detectar y corregir errores. La figura 2.3, ilustra en trminos generales como se lleva a cabo este proceso. Salida de error

Salida de datos

M Corrector

Entrada de datos M k Memoria f

M f k

k Compa racin -

Figura 2.3 Cdigo corrector de errores. Cuando se van a escribir datos en memria, se realiza un clculo com los datos representado por la funcin f, para producir un cdigo. Se almacenan tanto los datos como el cdigo en la memoria. De esta manera se va a almacenar una palabra de datos de M bits, y el cdigo tiene una longitud de k bits, el tamao real de la palabra almacenada es de M + k bits. Cuando se va a leer una palabra previamente almacenada, se utiliza el cdigo para detectar errores, se genera un nuevo cdigo de k bits a partir de los M bits de datos, que se comparara con los bits de cdigo captados de memoria. De esta comparacin se obtiene uno de los tres resultados posibles: No se detectan errores. Los bits de datos se envan al exterior. Se detecta un error y es posible corregirlo. Se dan a un corrector los bits de datos ms los bits de correccin de error, lo que produce el conjunto reducido de M bits a ser enviados fuera.

34 Se detecta un error, pero no es posible corregirlo. Se enva una seal de error.

Ejercicios propuestos 1.- Describa cmo se realiza la seleccin de la direccin requerida en el arreglo de memoria presentado en la figura 2.2, para el caso en que la memoria sea del tipo RAM. 2.- Cuntos dispositivos de memoria de 4 K x 1 se requieren para proporcionar un complemento total de memoria para un procesador de 8 bits con 16 lneas de direccin? Represente grficamente la conexin adecuada de la memoria al microprocesador.

Consulta en otros libros

[Sayers 1995] Incluye microprocesador.

informacin

sobre

arreglos

de

memoria

para

un

[Satallings 2000] Proporciona un tratamiento amplio sobre las memorias semiconductoras, incluyendo la interfaz RAMLink, la cual se centra en la interfaz procesador/memoria, en lugar de en la arquitectura interna de los chips DRAM. [Lameda 1984] presenta variados ejemlos sobre el diseo de los sistemas de memoria.

Consulta en la Web

http://ortihuela.galeon.com/ram.htm: Incluye informacin sobre los diversos tipos de memoria RAM. http://es.wikipedia.org/wiki/Memoria_RAM: Presenta informacin relevante sobre los tipos de memoria RAM y sus aplicaciones.

Ejercicios de Autoevaluacin

1.- Configure la memoria de un sistema con una longitud de palabra de 16 bits. La cantidad de memoria RAM requerida es de 1 K empezando en la posicin 000000 H. Y una cantidad de memoria ROM (EPROM) de 4K empezando en la

35 posicin 30F000 H. Para ello se dispone de circuitos EPROM de 2K x 8 y circuitos RAM de 256 x 8. Presente tambin la tabla de decodificacin necesaria. 2.- Se pide disear un sistema de microprocesador que pueda direccionar 64 K localizaciones de memoria. La memoria deber estar conformada por 4 K x 8 de EPROM y 4 K x 8 de RAM. El microprocesador a utilizar dispone de 16 lneas de direccin, y las seal de control R/W (cuando se desea leer un dato de memoria se activa la seal R mediante un 1 lgico, por el contrario si se desea escribir en la memoria RAM la seal W deber tomar el valor de 0 lgico). A continuacin se presenta el microprocesador y los dispositivos de memoria a utilizar: A15 A14 . . A0

Lneas de direccin

Microprocesador

D0 a D7

_ R/W

Canal de control Canal de datos

A0 A1 A0 A1 A11 __ CS ___ CSR

A11 __ CS

RAM 4kX8

EPROM 4kX8

___ CSE

_
D0 a D7 __ OE D0 a D7 R/W

En base al planteamiento dado anteriormente presenta la conexin adecuada de los dispositivos de memoria al microprocesador para lograr la configuracin deseada.

Respuesta a los Ejercicios de Autoevaluacin 1.- Como las direcciones contienen tres bytes, se requieren 24 lneas de direccin (desde A0 hasta A24). La cantidad de dispositivos RAM a utilizar es de 4 (ya que

36 4 x 256 bytes = 1024 bytes = 1k) y dos dispositivos EPROM. El sistema de memoria as configurado ser el siguiente: 000000 H RAM1 000200 H RAM3 0003FF H VACIO NO USADO 30F000 H RAM4 RAM2

EPROM1

EPROM2

30FFFF H VACIO NO USADO FFFFFF H Y la tabla de decodificacin ser la siguiente:


A2
3

A2
2

A2
1

A2
0

A1
9

A1
6

A1
7

A1
6

A1
5

A1
4

A1
3

A1
2

A1
1

A1
0

A
9

A
8

A
7

A
6

A
5

A
4

A
3

A
2

A
1

A
0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 1 1

0 0 0 0 1 1

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 1 1

0 0 0 0 1 1

0 0 0 0 1 1

0 0 0 0 1 1

0 0 0 0 X X

0 0 0 0 X X

0 0 1 1 X X

X X X X X X

X X X X X X

X X X X X X

X X X X X X

X X X X X X

X X X X X X

X X X X X X

X X X X X X

0 1 0 1 0 1

RAM1 RAM2 RAM3 RAM4 EPRO M1 EPRO M2

2.- Para direccionar la memoria slo se requieren utilizar 12 lneas de direccin (212 = 4 K) y para evitar que los dispositivos RAM y ROM coloquen informacin en el canal de datos, cuando las seales CSE y CSR toman el valor de cero lgico, es necesario distinguir entre las dos memorias mediante estas seales. Por medio de las lneas de direccin no usadas A12 a A15 se puede determinar el estado de las lneas de seleccin de los chips. Debe obtenerse una relacin entre las lneas de direccin restantes de modo que ambas lneas de seleccin de chip jams estn bajas al mismo tiempo. Esto se logra mediante la decodificacin de direcciones. La decodificacin se puede obtener de acuerdo a lo siguiente:

37

A15 0 0 0 . . . 1

A14 0 0 0 . . . 1

A13 0 0 1 . . . 1

___ A12 0 1 0 . . . 1

___ CSE 0 1 1 . . . 1

CSR 1 0 1 . . . 1

Usando este esquema, cada localizacin de memoria fsica se identifica en forma singular, a continuacin se muestra la conexin adecuada: Lneas de direccin A15 A12 A11 A1 A0 A0 A1 A11 __ CS ___ CSR

Microprocesador

D0 a D7

_ R/W

A0 A1

A11 __ CS __
CSE

RAM 4kX8

EPROM 4kX8

_
D0 a D7 R/W D0 a D7

__
OE

Canal de control

Canal de datos

38

UNIDAD 3
Interfaz de E/S Bsica, Interrupciones y E/S Controlada por DMA Por muy poderosa que sea una unidad central de procesamiento (CPU), la utilidad de una computadora depende esencialmente de sus capacidades de entrada y salida. Es decir sin ellas, no habra por ejemplo entrada desde el teclado, ni salida desde la pantalla, ni salida impresa y ni siquiera almacenamiento y recuperacin en disco. Para ello se requiere utilizar rutinas y medios especializados que permitan procesar la entrada y la salida. Motivado a esto, se presenta en esta unidad y sus interfaces, especficamente con el introducen dos tcnicas avanzadas de E/S, memoria, adems de los componentes y posibles. el estudio de los componentes de E/S microprocesador. Posteriormente se las interrupciones y acceso directo a las configuraciones que las hacen

Objetivo de la Unidad 3: Resolver problemas de atencin a los dispositivos de E/S, haciendo uso de interfases bsicas programables y/o por interrupcin y/o controladas por DMA. Contenido de la Unidad 3: El contenido de la unidad contempla el estudio de los siguientes temas: Interfaz bsica de E/S. Interrupciones. Acceso directo a la memoria. E/S controlada por DMA.

39 Actividades recomendadas para el estudio del contenido de la unidad 3. 1.- Examine la tabla 3.1, en ella contentivos de la unidad 3:
TTULO

puede identificar las

lecturas de los temas

MATERIAL DE REFERENCIA

CONTENIDO Introduccin a la interfaz de E/S. Decodificacin de direccin de un puerto de E/S.

CAPITUL O

texto Los La interfaz de El entrada/salida Microprocesadores bsica. Intel, B. B. Brey. La interfaz programable.

11 perifrica

La interfaz programable de teclado/pantalla tipo 8279. Procesamiento interrupciones. bsico de

Interrupciones por hardware. Expansin de la estructura de interrupciones.. Interrupciones. El texto Los Microprocesadores Intel, B. B. Brey. Controlador de interrupcin programable 8259A . 12

Ejemplos de interrupcin. Acceso directo a Operacin bsica del DMA y texto Los memoria y E/S El el controlador del DMA 8237. controlada por Microprocesadores Intel, B. B. Brey. DMA. Operacin del bus compartido.

13

Tabla 3.1

40

a)

Ampliacin de conocimientos: El contenido Interfaz programable de comunicaciones 16550, incluido en el captulo 11 seccin 11-6, del texto Los Microprocesadores Intel, no es objeto de evaluacin del curso Microprocesadores, sin embargo, se recomienda su lectura, ya que sta es utilizada para conectarse prcticamente a cualquier tipo de interfaz serial.

Atencin: Para el establecimiento de una interfaz se requieren ciertos conocimientos de electrnica, el texto del curso examina algunos hechos relacionados con ella, los cuales se recomienda leer, a objeto de obtener una mejor comprensin del contenido.

2.- Lea los siguientes aspectos tericos, a travs de los cuales reforzar los conocimientos adquiridos. Buffer de tres estados (o buffer triestado). Un dispositivo lgico semiconductor que puede tener tres estados: (1) un estado lgico 0, (2) un estado lgico 1 y (3) un estado en el que la salida est, efectivamente, desconectada del resto del circuito y no tiene influencia sobre l. [Lameda,1984]. Tecnologa TTL Acrnimo en Ingls de Transistor-Transistor Logic o "Lgica Transistor a Transistor". Tecnologa de construccin de circuitos electrnicos digitales, en los que los elementos de entrada de la red lgica son transistores, as como los elementos de salida del dispositivo. Las caractersticas de la tecnologa utilizada, en la familia TTL, condiciona los parmetros que se describen en sus hojas de caractersticas segn el fabricante: Su tensin de alimentacin caracterstica se halla comprendida entre los 4.75 V y los 5.25 V como se ve un rango muy estrecho debido a esto, los niveles lgicos vienen definidos por el rango de tensin comprendida entre 0.2 V y 0.8 V para el estado L (bajo) y los 2.4 V y Vcc para el estado H (alto). La velocidad de transmisin entre los estados lgicos es su mejor baza, ciertamente esta caracterstica le hacer aumentar su consumo siendo su mayor enemigo. Motivo por el cual han aparecido diferentes versiones de TTL como FAST, LS, S, etc y ltimamente los TTL: HC, HCT y HCTLS. En algunos casos puede alcanzar poco ms de los 250 Mhz. [http://es.wikipedia.org/wiki/Tecnolog%C3%ADa_TTL]. Nota: Vcc es el nivel de 5 V (voltios).

41 LED (siglas en ingls de Diodo Emisor de Luz). Semiconductor especial que emite luz, cuando lo recorre una corriente elctrica. [Sayers 1995]. Interfaces con el microprocesador. La mayora de los microprocesadores tiene poco valor funcional por si mismos. Muchos no contienen una memoria sustancial, y pocos tienen puertos de entrada y salida que los conecten directamente a dispositivos perifricos. Los microprocesadores operan como parte de un sistema. La interconexin, o enlace, de las partes en este sistema se denomina interfaz. [Tokheim, 1995]. E/S asignada a memoria y E/S aislada. Cuando el procesador, la memoria principal y la E/S comparten un bus comn, son posibles dos modos de direccionamiento: asignado en memoria (memorymapped) y aislado. Con las E/S asignadas a memoria, existe un nico espacio de direcciones para las posiciones de memoria y los dispositivos de E/S. La CPU considera los registros de estado y de datos de los mdulos de E/S como posiciones de memoria, y utiliza las mismas instrucciones mquina para acceder tanto a la memoria como a los dispositivos de E/S. As por ejemplo, con 10 lneas de direccin se puede acceder a un total de 1024 posiciones de memoria y direcciones de E/S, en cualquier combinacin. Con la E/S asignadas en memoria, se necesita una sola lnea de lectura y una sola lnea de escritura en el bus. Alternativamente, el bus puede disponer de lneas de lectura y escritura en memoria junto con lneas para rdenes de entrada y salida. En este caso, las lneas de rdenes especifican si la direccin se refiere a una posicin de memoria o a un dispositivo de E/S. El rango completo de direcciones est disponible para ambos. De nuevo, con 10 lneas de direccin, el sistema puede soportar ahora 1024 posiciones de memoria y 1024 direcciones de E/S. Puesto que el espacio de direcciones de E/S est aislado del de memoria, ste se conoce con el nombre de E/S aislada. [Stallings, 2000]. Protocolo con respuesta (Handshaking) Un tpico sistema de comunicacin en paralelo puede ser de una direccin (unidireccional) o de dos direcciones (bidireccional). El ms simple mecanismo utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora. La parte transmisora coloca la informacin en las lneas de datos e informa a la parte receptora que la informacin (los datos) estn disponibles; entonces la parte receptora lee la informacin en las lneas de datos e informa a la parte transmisora que ha tomado la informacin (los datos). Observe que ambas partes sincronizan su respectivo acceso a las lneas de

42 datos, la parte receptora no leer las lneas de datos hasta que la parte transmisora se lo indique en tanto que la parte transmisora no colocar nueva informacin en las lneas de datos hasta que la parte receptora remueva la informacin y le indique a la parte transmisora que ya ha tomado los datos, a sta coordinacin de operaciones se le llama acuerdo entendimiento. Bien, en stos mbitos tecnolgicos es recomendable utilizar ciertas palabras en ingls que nos permiten irnicamente un mejor entendimiento de los conceptos tratados. Repito: a la coordinacin de operaciones entre la parte transmisora y la parte receptora se le llama handshaking, que en espaol es el acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un apretn de manos. El handshaking Para implementar el handshaking se requieren dos lneas adicionales. La lnea de estroboscopio (en ingls strobe) es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de informacin. La lnea de admisin (acknowledge) es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la informacin (los datos) y que est lista para recibir ms datos. El puerto paralelo provee de una tercera lnea de handshaking llamada en ingls busy (ocupado), sta la puede utilizar la parte receptora para indicarle a la parte transmisora que est ocupada y por lo tanto la parte transmisora no debe intentar colocar nueva informacin en las lneas de datos. Una tpica sesin de transmisin de datos se parece a lo siguiente: Parte transmisora: La parte transmisora chequea la lnea busy para ver si la parte receptora est ocupada. Si la lnea busy est activa, la parte transmisora espera en un bucle hasta que la lnea busy est inactiva. La parte transmisora coloca la informacin en las lneas de datos. La parte transmisora activa la lnea de strobe. La parte transmisora espera en un bucle hasta que la lnea acknowledge est activa. La parte transmisora inactiva la lnea de strobe. La parte transmisora espera en un bucle hasta que la lnea acknowledge est inactiva. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido. Parte receptora: La parte receptora inactiva la lnea busy (asumiendo que est lista para recibir informacin). La parte receptora espera en un bucle hasta que la lnea strobe est activa. La parte receptora lee la informacin de las lneas de datos (y si es necesario, procesa los datos). La parte receptora activa la lnea acknowledge. o La parte receptora espera en un bucle hasta que est inactiva la lnea de strobe. La parte receptora inactiva la lnea acknowledge. La parte receptora repite los pasos anteriores por cada byte que debe recibir.

43 Se debe ser muy cuidadoso al seguir stos pasos, tanto la parte transmisora como la receptora coordinan sus acciones de tal manera que la parte transmisora no intentar colocar varios bytes en las lneas de datos, en tanto que la parte receptora no debe leer ms datos que los que le enve la parte transmisora, un byte a la vez. [http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm]. CHIP Pequea placa o pastilla de material semiconductor usado para producir un circuito integrado. [Lameda, 1984]. Tipos de interfaces La interfaz entre el perifrico y el mdulo de E/S debe ajustarse a la naturaleza y la forma de funcionar del perifrico. Una de las principales caractersticas de la interfaz es si es serie o paralela. En una interfaz paralela, hay varias lneas que conectan el mdulo de E/S y el perifrico, y se transfieren varios bits simultneamente a travs del bus de datos. En una interfaz serie, hay slo una lnea para transmitir los datos, y los bits deben transmitirse uno a uno . Las interfaces paralelas se utilizan usualmente para los dispositivos de alta velocidad, como una cinta o disco. Las interfaces serie son ms propias de impresoras y terminales. [Stallings, 2000]. Tcnica de E/S mediante interrupciones. Es aquella en la que el programa genera una orden de E/S y despus contina ejecutndose hasta que el hardware de E/S interrumpe para indicar que la operacin de E/S ha concluido. [Stallings, 2000]. Lneas de interrupcin del microprocesador Intel 80386. El microprocesador 80386 de Intel posee una lnea de peticin de interrupcin (INTR, Interrup request) y una sola lnea de reconocimiento de interrupcin (INTA, Interrup Acknowledge). [Stallings, 2000]. Funcionamiento del DMA. El DMA requiere un mdulo adicional en el bus del sistema. El mdulo DMA (ver figura 3.1) es capaz de imitar al procesador y, de hecho, es capaz de recibir el control del sistema cedido por el procesador. Necesita dicho control para transferir datos a, y desde, memoria a travs del bus del sistema. Para hacerlo, el mdulo DMA debe utilizar el bus slo cuando el procesador no lo necesita, o debe forzar al procesador a que suspenda temporalmente su funcionamiento. sta ltima tcnica es la ms comn y se denomina robo de ciclo (cycle stealing), puesto que, en efecto, el mdulo DMA roba un ciclo de bus.

44

Contador de datos Lneas de datos Registro de datos Registro de direccin

Lneas de direcciones DMA REQ DMA ACK INTR Read Write

Lgica de control

Figura 3.1. Diagrama tpico de un mdulo de DMA. Cuando el procesador desea leer o escribir un bloque de datos, enva a una orden al mdulo de DMA, incluyendo la siguiente informacin: Si se solicita una lectura o una escritura, utilizando la lnea de control de lectura o escritura entre el procesador y el mdulo DMA. La direccin del dispositivo de E/S en cuestin, indicada a travs de la lnea de datos. La posicin inicial de memoria a partir de donde se lee o se escribe, indicada a travs de las lneas de datos y almacenada por un mdulo de DMA en su registro de direcciones. El nmero de palabras a leer o escribir, tambin indicando a travs de las lneas de datos y almacenado en el registro de cuenta datos. Despus el procesador contina con otro trabajo. Ha delegado la operacin de E/S al mdulo de DMA, que se encargar de ella El mdulo de DMA, transfiere el bloque completo de datos palabra a palabra, directamente desde, o hacia, la memoria, sin que tenga que pasar a travs del procesador. Cuando la transferencia se ha terminado, el mdulo de DMA enva una seal de interrupcin al procesador. As pues, el procesador slo interviene al comienzo y al final de la transferencia (ver figura 3.2). [Stallings, 2000].

45 CPU Mandar orden de lectura de bloque al mdulo DMA DMA Hacer otra cosa

Leer el estado del mdulo DMA

DMA

CPU

Figura 3.2. Acceso directo a memoria 3.- Estudie el ejemplo 3.1, en cual presenta la descripcin y funcionamiento de la interfaz programable de perifricos (IPP) Intel 82C55A. Ejemplo 3.1: Descripcin y funcionamiento de la programable 82C55A Intel. interfaz de perifrico

Este tipo de interfaz se utiliza para la E/S programada y para la E/S mediante interrupciones. El 82C55A es un mdulo de E/S de propsito general integrado en un solo chip y diseado para ser usado con el procesador Intel 8086. [Stallings,2000]. La figura 3.3 muestra el diagrama general de bloques de la IPP 82C55A de Intel.

46

Buffer de datos

Bus interno de 8 bits

Bus de datos del 8086

8 A

Fuente de alimentacin

+ 5 V (Vdd) Tierra (GND)

4 CA 4 CB

A0 A1 Read Write Reset Chip select Lgica de control 8 Registro de control

Buffer de datos Figura 3.3 Diagrama de bloques de la IPP 82C55A de Intel.

Las 24 lneas de E/S son programables por el 8086 mediante un registro de control. El 8086 puede fijar el valor del registro de control para especificar los diversos modos de operacin y configuraciones. Las 24 lneas se dividen en tres grupos de 8 bits (A, B, C). Cada grupo puede funcionar como un puerto de E/S de 8 bits. Adems, el grupo C se subdivide en grupos de 4 bits (CA y CB), que pueden usarse conjuntamente con los puertos de E/S de A y B. El diagrama de la figura 3.3 es la interfaz interna con el bus del 8086. sta incluye un bus de datos bidireccional de 8 bits (D0 a D7), usado para transferir datos a y desde, los puertos de E/S, y para transferir la informacin al registro de control. Las dos lneas de direcciones (A0 y A1) especifican uno de los dos puertos de E/S o el registro de control. Una transferencia se producir cuando la lnea de seleccin de

47 chip (CHIP SELECT) se activa junto con la lnea de lectura (READ) o escritura (WRITE). La lnea RESET se utiliza para iniciar el mdulo. El procesador escribe en el registro de control para seleccionar el modo de operacin y para definir las seales, en su caso. En el modo 0 de operacin, los tres grupos de 8 lneas externan funcionan como tres puertos de E/S de 8 bits. Cada puerto puede ser designado como de entrada o de salida. En caso contrario, los grupos A y B funcionan como puertos de E/S, y las lneas del grupo C sirven de lneas de control para A y B. Las lneas de control tiene dos funciones principales: la sincronizacin mediante conformidad de seales (handshaking) y la peticin de interrupciones. La conformidad de un mecanismo sencillo de temporizacin. El emisor utiliza una lnea de control como lnea de datos listos (DATA READY) para indicar que hay un dato en las lneas de datos de E/S. El receptor utiliza otra lnea como reconocimiento (ACKNOLEDGE), para indicar que el dato se ha ledo y que las lneas de datos se pueden liberar. Se puede seginar otra lnea como lnea de peticin de interrupcin (INTERRUPT REQUEST) en el bus del sistema. 4.- En el ejemplo 3.2, se presenta una aplicacin de la interfaz 82C55A, para controlar un terminal con teclado y pantalla. Ejemplo 3.2: Uso de la interfaz 82C55A para controlar la conexin de un teclado y una pantalla al microprocesador.

En la figura 3.4, se ilustra el uso de la interfaz programable de perifricos Intel 82C55A. El teclado proporciona 8 bits de entrada, dos de estos bits, SHIFT y CONTROL, tienen un significado especial para el programa de gestin de teclado que ejecuta el procesador. Sin embargo este significado es transparente para el 82C55A, que simplemente acepta los 8 bits de datos y los pone en el bus de datos del sistema. Existen dos lneas para la sincronizacin del teclado mediante conformidad (handshaking). La pantalla tambin est conectada a un puerto de datos de 8 bits. De nuevo, dos de los bits tiene un significado especfico que es transparente para el 82C55A. Junto a las dos lneas para la sincronizacin mediante conformidad, hay dos lneas ms para funciones de control adicionales.

48 Peticin de interrupcin
C3 A0 A0 A1 A2 A3 A4 A5 A6 R0 R1 R2 R3 R4 R5 Shift (deslazamiento) Control

C4 C5

Dato preparado Reconocimiento

82C55A S0 S1 S2 S3 S4 S5 Backspace Borrar

B0 B1 B2 B3 B4 B5 B6 B7

C0

C1 C2 C6 C7

Dato preparado Reconocmiento Blanking Borrar lnea

Peticin de Interrupcin Figura 3.4 Interfaz teclado/pantalla en el 82C55A 5.- En el ejemplo 3.3 se muestra el uso de la E/S mediante interrupciones, para leer un bloque de datos desde un dispositivo perifrico y almacenarlo en la memoria. Ejemplo 3.3: E/S con interrupciones para leer un bloque de datos.

En la figura 3.5 se muestra el conjunto de acciones que deben desarrollarse para procesar una E/S haciendo uso de las interrupciones. El procesador tras enviar una orden de E/S a un mdulo, contina realizando algn trabajo til. Despus, el mdulo de E/S interrumpir al procesador para solicitar su servicio cuando est preparado para intercambiar datos con l. El procesador ejecuta entonces la transferencia de datos, y despus contina con el procesamiento previo.

49

Mandar orden de lectura al mdulo de E/S Leer el estado del mdulo de E/S

CPU

I/O Hacer otra cosa

Interrupcin E/S CPU

Comprobar el estado

Condicin de error

Preparado Leer una palabra del mdulo de E/S E/S CPU

Escribir una palabra en memoria

CPU

Memoria

No

Comprobar el estado

Si Instruccin siguiente Figura 3.5. Entrada de un bloque de datos mediante interrupciones. 6.- En el ejemplo 3.4, se presenta una aplicacin del PIC (controlador de interrupciones programable) 82C59A para conectar varios mdulos de E/S con el microprocesador Intel 80386.

50

Ejemplo 3.4: Uso del PIC 82C59A para gestionar la interrupcin de 64 mdulos de E/S.

En la figura 3.6 se ilustra el uso del PIC 82C59A para conectar 64 mdulos de E/S. Debido a que un 82C59A slo puede manejar hasta 8 mdulos, es necesario disponer de un sistema en cascada para controlar los 64 mdulos de E/S. La nica responsabilidad del 82C59A es la gestin de interrupciones. Acepta la solicitud de interrupcin de los dispositivos conectados a l, determina qu interrupcin tiene la prioridad ms alta, y se lo indica entonces al procesador activando la seal INTR. El procesador reconoce la solicitud mediante la lnea INTA. Esto hace que el 82C59 site el vector apropiado en el bus de datos. Entonces, el procesador puede iniciar el procesamiento de la interrupcin y comunicarse directamente con el mdulo de E/S para leer o escribir datos. Si se precisa controlar ms de 8 mdulos, se puede disponer en cascada para manejar para conectar

51 Controlador de interrupciones 82C59A esclavo


Dispositivo externo 00 Dispositivo externo 01 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT

Dispositivo externo 07

Controlador de interrupciones 82C59A esclavo


Dispositivo externo 08 Dispositivo externo 09 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT

Concentrador de interrupciones 82C59A maestro


IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7

Procesador 80386

INT

INTR

Dispositivo externo 15

Controlador de interrupciones 82C59A esclavo


Dispositivo externo 56 Dispositivo externo 57 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 INT

Dispositivo externo 63

Figura 3.6. Uso del controlador de interrupciones 82C59A. Entrada de un bloque de datos mediante interrupciones.

52 7.- En el ejemplo 3.5, se presenta una aplicacin del funcionamiento de un mdulo DMA, para escribir un bloque de 32 bytes de la direccin de memoria 100 en una terminal (un terminal de computadora consta de dos partes: un teclado y un monitor). Ejemplo 3.5: Transferencia de un bloque de 32 bytes desde memoria a un terminal de computadora, usando la tcnica de E/S de DMA.

La E/S controlada por interrupciones es un gran adelanto en comparacin con la E/S programada [TANENBAUM, 2000]. El problema es que se requiere una interrupcin por cada carcter transmitido. El procesamiento de interrupciones es costoso. Razn por la cual es necesario una forma de reducir la mayor parte de las interrupciones. La solucin es regresar a la E/S programada, pero encargrsela a otro dispositivo que no sea el CPU. La figura 3.7 muestra como se logra esto. Se ha aadido un nuevo chip al sistema, un controlador de acceso directo a la memoria (DMA), con acceso directo al bus.

Direccin CPU Cuenta DMA 100 32 4 1 Dispositivo Sentido 100 Controlador RS232C Memoria

Bus Figura 3.7. Sistema controlador DMA El chip DMA contiene al menos cuatro registros, todos los cuales pueden ser cargados por software que se ejecuta en la CPU. El primero contiene la direccin de memoria que se leer o en la que se escribir. El segundo contiene el nmero de bytes (o palabras) que se transferirn. El tercero especfica el nmero de

53 dispositivo o espacio de direcciones de E/S que se usar, con lo que se especifica qu dispositivo de E/S se desea. El cuarto indica si los datos se escribirn en el dispositivo de E/S o se leern de l. Para escribir un bloque de 32 bytes de la direccin 100 en una terminal (por ejemplo, el dispositivo 4), la CPU escribe los nmeros 100, 32 y 4 en los primeros tres registros del DMA, y luego el cdigo de escribir ( por ejemplo, 1) en el cuarto, como se muestra en la figura 3.7. Una vez inicializado con estos valores, el controlador DMA emite una solicitud de bus para leer el byte 100 de la memoria, del mismo modo como la CPU leera de la memoria. Una vez que obtiene el byte, el controlador de DMA emite una solicitud de E/S al dispositivo 4, para escribir el byte en l. Una vez completadas ambas operaciones, el controlador de DMA incrementa en 1 su registro de direccin y decrementa en 1 su registro de cuenta. Si el registro de cuenta sigue siendo mayor que 0, se lee otro byte de la memoria y se escribe en el dispositivo. Cuando la cuenta por fin llega a 0, el controlador de DMA deja de transferir data y habilita la lnea de interrupcin en el chip del CPU. Con DMA, la CPU solo tiene que inicializar unos cuantos registros. Una vez hecho eso, queda libre para hacer otras cosas hasta que se completa la transferencia, Ejercicios propuestos

1.- Asuma que un procesador de 16 bits y dos de 8 bits deben conectarse a un bus del sistema. Considere los siguientes detalles: Todos los microprocesadores tiene el hardware necesario para cualquier tipo de transferencia: E/S programada, E/S mediante interrupciones y DMA. Todos los microprocesadores tienen un bus de direcciones de 16 bits. Hay dos tarjetas de memoria, de 64 Kbytes cada una, conectada al bus. El diseador desea que se comparta la mayor cantidad de memoria posible. El bus del sistema permite un mximo de cuatro lneas de interrupcin y una de DMA. Haga las suposiciones adicionales que necesite, y: a) Establezca las especificaciones del bus en trminos del nmero de lneas. b) Explique cmo es la interfaz de los dispositivos indicados arriba para conectarse al bus. 2.- Una impresora de caracteres simples podra usar razonablemente bien una entrada/salida programada, pues su velocidad es lenta. Comparada con la unidad central de procesamiento. Sin embargo, la mayora de las impresoras modernas utiliza el acceso directo a la memoria. Por qu?. 3.- Por qu el acceso directo a la memoria (DMA) sera intil si la computadora careciera de la capacidad de interrupcin?

54

Consulta en otros libros

[Stallings, 2000] Dedica un captulo a los distintos aspectos de la organizacin de E/S, tambin describe la interfaz entre los mdulos de E/S y los dispositivos externos. [Tokheim, 1995] Hace una presentacin de las interfaces con el microprocesador. [Tanenbaum, 2000] Cubre algunos aspectos de los temas de esta unidad. [Lameda, 1984] Presenta un estudio de los mtodos para introducir y extraer datos del computador, tambin incluye el estudio de las interfaces con dispositivos para entrada/salida. [Sayers 1995] Contiene aspectos orientados al estudio de problemas externos de interfaz de un microprocesador con el mundo real. Se sugiere consultar tambin los otros textos recomendados en la bibliografa.

Consulta en la Web

http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm: Contiene informacin sobre el puerto paralelo del PC. http://www.iuma.ulpgc.es/users/armas/asignaturas/fundamentos/tutorial/entradas_y_ salidas/index.htm: Es un tutorial con informacin asociada a la E/S del sistema.

Ejercicios de Autoevaluacin

1.- Un dispositivo perifrico junto con su controlador de E/S se conectar a un computador mediante el uso de un controlador DMA. Todos los mdulos que conforman el sistema comparten el mismo bus master. El perifrico solicita una transferencia al controlador de DMA, el cual a su vez solicita el bus a la CPU. Si la CPU no est utilizando el bus ni est en estado LOCK, lo concede al

55 controlador de DMA, el cual a su vez informa al perifrico para que prepare los datos a transferir. En una transferencia de entrada, los datos se mueven desde el perifrico (I/O) a la memoria por el bus de datos sin pasar por el controlador de DMA y sin intervencin de la CPU. Las lneas de control para leer la I/O (IOR) y para escribir la memoria (MEMW) son manejadas por el controlador de DMA. De la misma forma, en una transferencia de salida los datos se mueven desde la memoria a la I/O y el controlador de DMA maneja las lneas de control para leer la memoria (MEMR) y para escribir en el perifrico (IOW). Con base a lo anteriormente expuesto, solucione la manera en que debe configurarse el sistema para el control de la E/S mediante el uso de la tcnica DMA y que cumpla con las especificaciones dadas. 2.- La conexin a perifricos en un sistema de microcomputador puede hacerse mediante el uso de chips especializados de entradas y salidas. Estos chips tienen como caracterstica comn su programabilidad por software y su conexin directa a los buses del sistema sin lgica auxiliar. Parta de la informacin dada anteriormente y resuelva el problema de la conexin de la PPI (interfaz perifrica programable) tipo 82C55, en un sistema de microprocesador directamente ligados a los buses.

Respuesta a los Ejercicios de Autoevaluacin

1.- En la siguiente figura se presenta una solucin que permite el control de la E/S, mediante el uso de un controlador DMA.

56 Se observa que el sistema configurado, consta de un perifrico con su controlador de E/S, un controlador de DMA y las seales de pedido y concesin del bus que permiten alternar el "bus master" entre la CPU y el controlador de DMA 2.- La disposicin de la PPI 82C55 en este tipo de sistema, se muestra a continuacin: Bus de datos (8 bits) 8 CS A0 A1 Bus de direcciones (16 bits)s)

Puerto A D0 D7 82C55 Puerto C

A1 A0 __ CS Puerto B __ RD I/OR __ WR

RESET RESET

I/OW

Bus de control

57

UNIDAD 4
Interfaz del bus El PC (Personal Computer), es un sistema de propsito general, que puede ser ajustado a las necesidades del usuario agregando placas con la electrnica necesaria, acompaadas de software que permita controlarlas. Un posible ejemplo es el procesamiento de imgenes de video: basta colocar una tarjeta adquisidora de video y configurar su software controlador para hacer que una aplicacin de procesamiento de imgenes, ejecutndose en el PC, pueda procesar las imgenes adquiridas con la placa. Se pueden colocar en un sistema PC, el tipo de interfaz (tarjeta) que uno desee, para controlar los ms variados dispositivos perifricos gracias a las Ranuras de Expansin o Slots (Conector). Existen varios tipos de Ranuras de Expansin, de distintas formas y caractersticas. Consisten simplemente en zcalos que sirven para conectar los bordes de las tarjetas interfaces. El conjunto de esos zcalos, de un cierto tipo se llama Bus de Sistema. Cada zcalo se denomina SLOT y da lo mismo, para conectar una tarjeta, un slot que otro ya que se encuentran conectados en paralelo. Los computadores poseen distintos tipos de buses que proporcionan comunicacin a distintos niveles dentro de la jerarqua del sistema. El bus que conecta los componentes principales del computador (procesador, memoria y E/S) se denomina bus del sistema. Las estructuras de interconexin ms comunes dentro de un computador estn basadas en el uso de uno o ms buses. En la unidad 4, se presenta el estudio de la Arquitectura de los buses, y la interconexin de los perifricos. Objetivo de la Unidad 4: Resolver problemas de implementacin de interfaces sencillas que se conecten a los buses ISA extendido y/o VESA Local y/o PCI y/o USB y/o AGP.

Contenido de la Unidad 4: El contenido de la unidad contempla el estudio de los siguientes temas: El bus ISA, Arquitectura de los buses ISA extendido (EISA) y (VESA) Local. El bus de interconexin de los componentes perifricos (PCI). El bus serial universal USB. Puerto grafico acelerado (AGP).

58 Actividades recomendadas para el estudio del contenido de la unidad 4. 1.- Examine la tabla 4.1, en ella puede identificar las lecturas de los temas contentivos de la unidad 4:

TTULO

MATERIAL DE REFERENCIA

CONTENIDO El bus ISA Arquitectura de los buses ISA extendido (EISA) y VESA Local.

CAPITULO

Interfaz del bus.

El texto Los El bus de Interconexin de Microprocesadores componentes perifricos Intel, B. B. Brey. (PCI) El bus (USB) Puerto (AGP) serial Universal

15

grfico

acelerado

Tabla 4.1 1.- Lea los siguientes aspectos tericos a travs de los cuales reforzar los conocimientos adquiridos: SLOT Ranura de la motherboard que permite expandir la capacidad de una computadora insertndole placas. http://www.sitiosargentina.com.ar/Help/diccionario%20tecnico.htm#s

MOTHERBOARD Placa que contiene los circuitos impresos bsicos de la computadora, la CPU, la memoria RAM y slots en los que se puede insertar otras placas (de red, de audio, etc.). http://www.sitiosargentina.com.ar/Help/diccionario%20tecnico.htm#s

La interfaz PCI PCI ("Peripheral Component Interconnect") es bsicamente una especificacin para la interconexin de componentes en ordenadores. Ha dado lugar a un

59 bus PCI, denominado tambin Mezzanine, en espaol entresuelo [1], porque funciona como una especie de nivel aadido al bus ISA/EISA tradicional de la placa-base. Es un bus de 32 bits que funciona a 5 V, 33 MHz, con una velocidad de transferencia inicial de 133 Mb/s (Megabits por segundo). Aunque seguiremos llamndolo "bus PCI", en realidad no es un bus local; por contra, ocupa un lugar intermedio (de ah el nombre mezzanine) entre el bus del procesador / memoria / cache y el bus estndar ISA. El bus PCI se encuentra separado del bus local mediante un controlador que hace de pasarela. Cuando la UCP escribe datos en los perifricos PCI (por ejemplo un disco duro), el controlador/pasarela PCI los almacena en su buffer. Esto permite que la UCP atienda la prxima operacin en vez de tener que esperar a que se complete la transaccin. A continuacin el buffer enva los datos al perifrico de la forma ms eficiente posible. http://www.zator.com/Hardware/H6_4.htm Comparacin de los tipos de bus Bus de datos Velocidad del bus de datos (MHz) Velocidad de transferencia (MB/s) Velocidades de transferencia implementadas (MB/s) 0-8 0-8 0-2 0-4 Nmero de Slots No Si Si Si Soporte de Bus Master No No No Si Paridad para direcciones y datos No No No Si Sync, Channel Checks No Si Si Si Identificacin de dispositivo & Auto configuracin N/A N/A Si Trabaja con ISA/EISA http://www.zator.com/Hardware/H6_4.htm AGP El AGP (Accelerated Graphics Port, Puerto de Grficos Acelerados) es una especificacin de bus que permite que se desplieguen rpidamente grficos en 3-D en computadoras personales comunes. El AGP es una interfaz especial diseada para transmitir imgenes en 3-D (por ejemplo, de pginas Web o CDROMs) mucho ms veloz y gilmente de lo que es posible hoy en una ordenador que no sea una costosa estacin de trabajo grfica. La interfaz usa el almacenamiento principal del ordenador (RAM) para refrescar la imagen del monitor y soportar el mapeo de texturas, el z-buffering y la mezcla alfa que se requieren para el despliegue de imgenes en 3-D. El uso que hace el AGP de la memoria principal es dinmico, lo cual significa que cuando no se est utilizando para grficos acelerados, la memoria principal se devuelve para uso del sistema operativo u otras aplicaciones. http://www.gamarod.com.ar/recursos/glosario/ ISA EISA VESA PCI 8/16 32 32/64 32/64 5.33/8.33 8.33 33/50 33 5.33/8.33 33 132/264 132/264 5.33/8.33 33 132 132

60 3.- El ejemplo 4.1 muestra la forma usual de utilizar el bus PCI en un sistema uniprocesador. Ejemplo 4.1: Uso de un bus PCI en un sistema uniprocesador

En la figura 4.1 se muestra una configuracin usual del bus PCI. En esta configuracin un dispositivo que integra el controlador DRAM y el adaptador al bus PCI proporciona el acoplamiento al procesador y la posibilidad de generar datos a velocidades elevadas. El adaptador acta como un registro de acople (buffer) de datos, puesto que la velocidad del bus PCI puede diferir de la capacidad de E/S del procesador.
Procesador Cache Adaptador/con trolador de memoria Monitor

DRAM

Audio

Imgenes en movimiento

Bus PCI

Grficos Adaptador del bus de expansin Dispositivos de E/S bsicos CS

Graficador

Bus de expansin

Figura 4.1 Bus PCI en un sistema uniprocesador 5.- El ejemplo 4.2 presenta el uso de una interfaz de bus ISA que se decodifica en las direcciones 800H y 803H. Ejemplo 4.2: Interfaz de bus ISA que contiene un 82C55 accedido por medio de direcciones de puertos.

2.- La figura 5.2 muestra una interfaz ISA decodificada en las direcciones 800H a 803H:

61

SD0 SD1 SD2 SD3 SD4 SD5 SD6 SD7 ___ IOR ___ IOW SA0 SA1 RESET

34 D0 33 D1 32 D2 31 D3 30 29 28 27 5 36 9 8 35 6 D4 D5 D6 D7 __ RD __ WR A0 A1 RESET __ CS PA4 PA5 PA6 PA7 PA3 PA2 PA1 PA0

4 3 2 1 40 39 38 37 18 PB0 PB1 PB2 PB3 PB4 PB5 PB6 19 20 21 22 23 24 25

SA2 SA3 SA4 SA5 SA6 SA7 SA8 SA9

1 I1 2 I2 3 I3 4 I4 5 6 7 8 I5 I6 I7 I8 I9 I10 O5 O6 O7 O8 O4 O3 O2 O1

19 18 17 16 15 14 13 12

PB7 14 15 PC1 16 PC2 17 PC3 13 PC4 12 PC5 11 PC6 10 PC7

PC0

SA10 9 SA11 11

82C55

16L8
SA12 SA13 SA14 SA15

Figura 4.2 Interfaz de bus ISA decodificada en las direcciones 800H a 803H

62

Ejercicios propuestos

1.- Explique mediante el uso de un diagrama de tiempos, cmo se realiza la operacin de escritura en un bus PCI. 2.- Desarrolle una interfaz del bus ISA, similar a la del ejemplo 4.2, pero que sea decodificada en las direcciones 0820H a 0823H.

Consulta en otros libros

[Stallings 2000] incluye en su contenido la interconexin con buses, especficamente la descripcin del bus PCI. [Hamacher, 2003]. Contiene el estudio de los buses PCI y USB.

Consulta en la Web http://www.des.udc.es/~emilioj/ECm2/ecm2_p2_t2-doc.pdf: Presenta de una manera sencilla la interconexin con buses, toma como ejemplos los buses PCI y USB. http://www.die.upm.es/cursos/BUSES1.pdf: Incluye informacin interesante sobre la evolucin de los buses. http://www.redeweb.com/microbit/articulos/7107125.pdf: Expone aspectos relacionados con las aplicaciones del bus PCI. http://www.terra.es/personal/zyryab/buspci.htm: Es un documento que incluye el diseo de una interfaz PCI para una aplicacin.

Ejercicios de Autoevaluacin

Como ejercicios de autoevaluacin, se recomienda revisar los problemas resueltos nmero 6 y 8, incluidos en el captulo 15 del texto Los Microprocesadores Intel, de Barry B Brey.

63

MDULO II FAMILIA DE MICROPROCESADORES, EL COPROCESADOR ARITMTICO Y LA TECNOLOGA MMX


En este mdulo se incluyen dos unidades que permiten complementar el estudio de los microprocesadores. En la unidad 5 se presenta la evolucin de una familia comercial de microprocesadores, en la bsqueda de mejores prestaciones. Como consecuencia de esta evolucin, se han incorporado nuevos elementos y tecnologas que amplan su panorama de uso, tales como el coprocesador aritmtico y la tecnologa MMX, los cuales son tema de estudio de la unidad 6. Objetivo del Mdulo II: Analizar con sentido lgico y creativo, la evolucin de una familia de microprocesadores y programas que resuelvan problemas aritmticos. El mdulo II est estructurado en dos unidades: Unidad 5: Unidad 6: Familia de microprocesadores. El Coprocesador Aritmtico y la Tecnologa MMX

64

UNIDAD 5 Familia de Microprocesadores


La historia de los microprocesadores (procesadores) ha pasado por diferentes situaciones, siguiendo la lgica evolucin de este mundo. Desde aquel primer procesador 4004 del ao 1971 hasta el Itanium producido en el 2001. Segn la opinin de expertos, para el ao 2011 se utilizar procesadores cuyo reloj ir a una velocidad de 10 GHz (10.000 MHz), contendr mil millones de transistores y ser capaz de procesar cerca de 100 mil millones de instrucciones por segundo. El factor responsable del gran aumento de la velocidad del microprocesador es la disminucin del tamao de los componentes del microprocesador; esto reduce la distancia entre componentes, y, por tanto, aumenta la velocidad. Sin embargo, la verdadera ganancia en velocidad en los ltimos aos se debe a la organizacin del microprocesador, incluyendo el uso de tcnicas para obtener mejores prestaciones de servicio. La unidad 5, presenta la evolucin de la Familia de Microprocesadores Intel, profundizando en las mejoras de hardware y software que han desarrollado los diseadores sobre los miembros de esta familia en la bsqueda de un mejor desempeo. Mediante el conocimiento obtenido, se podr describir importantes conceptos de diseo que han conducido al desarrollo de computadores ms potentes.

Objetivo de la Unidad 5: Analizar la evolucin de la arquitectura y/o funcionamiento de microprocesadores comerciales, para la descripcin de mejoras en sus prestaciones de servicio. Contenido de la Unidad 5: El contenido de la unidad contempla el estudio de los siguientes temas: Los microprocesadores 80186, 80188 y 80286. Los microprocesadores 80386 y 80486. Los microprocesadores Pentium y Pentium Pro. El microprocesador Pentium II

65 Actividades recomendadas para el estudio del contenido de la unidad 5. 1.- Examine la tabla 5.1, en ella puede identificar las lecturas de los temas contentivos de la unidad 5:
MATERIAL DE REFERENCIA

TTULO

CONTENIDO

CAPITULO

Los microprocesadores 80186, 80188 y 80286.

Arquitectura de los 80186 / 80188. Programacin de las mejoras de los 80186 / El texto Los 80188. Microprocesadores Ejemplo de interfaz con el Intel, B. B. Brey. 80C188EB. Introduccin al 80286. Introduccin al microprocesador 80386. Registros especiales del 80386 Administracin de la memoria del 80386.

16

Los microprocesadores 80386 y 80486.

Acceso al modo protegido El texto Los Microprocesadores Modo 8086 virtual. Intel, B. B. Brey. Modo 8086 virtual. Mecanismo de paginacin de memoria. Introduccin al procesador 80486.

17

Introduccin al procesador Pentium. Registros especiales del Pentium. Administracin de la Los memoria del Pentium. El texto Los microprocesadores Pentium y Pentium Microprocesadores Nuevas instrucciones del Pentium. Intel, B. B. Brey. Pro. Introduccin al microprocesador Pentium Pro. Caractersticas especiales del Pentium Pro.

18

Tabla 5.1

66

TTULO

MATERIAL DE REFERENCIA

CONTENIDO

CAPITULO

Introduccin al texto Los microprocesador El microprocesador El Pentium II. Microprocesadores Pentium II. Intel, B. B. Brey. Cambios al software del Pentium II.

19

Tabla 5.1 Continuacin

2.- Una vez ledo el contendido indicado en la tabla 5.1, usted estar en capacidad de responder lo siguiente: 2.1 Cul fue el primer microprocesador Intel de 32 bits? 2.2 Cuntos perodos del reloj encontramos en un ciclo de bus de los 80186/80188? 2.3 Cuntos bytes de memoria virtual direcciona la administracin de memoria del microprocesador 80386? unidad de

2.4 Describa brevemente cmo funciona el sistema de memoria cache. 2.5 A cunta memoria puede acceder el microprocesador Pentium? 2.6 Cuntas caches encontramos en el Pentium y cules son sus tamaos? 2.7 Cul es la diferencia entre la cache de nivel 2 en el Pentium Pro y la del Pentium II?

67 3.- Estudie la tabla 5.2 mostrada a continuacin, la cual resume las especificaciones tcnicas de los microprocesadores Intel:

Fecha de Velocidad Ancho Nmero de Memoria Memoria presentacin de reloj de bus transistores direccionable virtual 4004 15/11/71 108 KHz. 4 bits 2.300 (10 micras) 3.500 640 byte

Breve descripcin Primer chip con manipulacin aritmtica Manipulacin Datos/texto 10 veces las (6 micras) prestaciones del 8008

8008

1/4/72

108 KHz.

8 bits

16 KBytes

8080

1/4/74

2 MHz.

8 bits

6.000

64 KBytes

5 MHz. 29.000 8086 8/6/78 8 MHz. 10 MHz. 5 MHz. 8088 1/6/79 8 MHz. 8 MHz. 134.000 80286 1/2/82 10 MHz. 12 MHz. 16 MHz. Microprocesador 17/10/85 Intel 386 DX 25 MHz. 33 MHz. Microprocesador 16/6/88 Intel 386 SX 20 MHz. 25 MHz. Microprocesador 10/4/89 Intel 486 DX 50 MHz. 33 MHz. (1 micra, 0.8 32 Bits micras en 50 4 Gigabytes MHz.) 64 Cache de nivel 1 en el chip Terabytes 16 MHz. 16 Bits (1 micra) 275.000 4 gigabytes Bus capaz de direccionar 16 bits procesando Terabytes 32bits a bajo coste 64 20 MHz. 32 Bits (1 micra) 275.000 4 Gigabytes Primer chip x86 capaz de 64 manejar juegos Terabytes de datos de 32 bits 16 Bits (1.5 micras) 16 Megabytes 1 Gigabyte De 3 a 6 veces las prestaciones del 8086 8 bits 29.000 Idntico al 8086 excepto en su bus externo de 8 bits 16 bits (3 micras) 1 MegaByte 10 veces las prestaciones del 8080

16 MHz. Microprocesador 22/4/91 Intel 486 SX 25 MHz. 33 MHz. 20 MHz. 32 Bits (0.8 micras) 1.185.000 4 Gigabytes Idntico en diseo al Intel 486DX, pero sin Terabytes coprocesador matemtico 64

68
Fecha de Velocidad Ancho Nmero de Memoria Memoria presentacin de reloj de bus transistores direccionable virtual 60 MHz. 66 MHz. 75 MHz. 90 MHz. Procesador 22/3/93 Pentium 120 MHz. 133 MHz. 150 MHz. 166 MHz. 200 MHz. 150 MHz. Procesador 27/3/95 PentiumPro 200 MHz. 233 MHz. Procesador 7/5/97 PentiumII 300 MHz. 266 MHz. 64 Bits (0.32 micras) 7,5 millones 4 Gigabytes 180 MHz. 64 Bits (0.32 micras) 5,5 millones 4 Gigabytes Arquitectura de ejecucin dinmica con procesador de Terabytes altas prestaciones 64 S.E.C., MMX, Doble Bus Indep., Terabytes Ejecucin Dinmica 64 100 MHz. 32 Bits (0.8 micras) 3,1 millones 4 Gigabytes Arquitectura escalable. Hasta 5 veces las prestaciones Terabytes del 486 DX a 33 MHz. 64 Breve descripcin

Tabla 5.2. Especificaciones tcnicas de los microprocesadores Intel


Fuente: http://www.duiops.net/hardware/micros/microshis.htm

4.- En el siguiente ejemplo se muestra el nmero de caches que se utilizan en los microprocesadores: Ejemplo 5.1: Nmero de caches en los microprocesadores.

Cuando se introdujeron originalmente las caches, un sistema tena normalmente solo una cache. Ms recientemente, se ha convertido en una norma el uso de mltiples caches. El uso de de las memorias caches en los sistemas microprocesadores mejora la velocidad de proceso y sus prestaciones. Habitualmente se dimensionan caches de uno o dos niveles, aunque tambin hay sistemas con tres niveles. Los modernos microprocesadores tienen: Caches on-chip (cache de nivel 1, L1): Proporcionan las mejores prestaciones.

69 Cache off-chip mdulo externo (constituye el nivel 2, L2): Tiene tiempos de acceso memores que la memoria principal. Las caches L2. Suelen ser de 512 KBytes o menos. Caches de mayores tamaos no son rentables.

5.- En el ejemplo 5.2, se muestra el nmero de caches presentes en los microprocesadores de la familia Intel. Ejemplo 5.2: Nmero de caches en los microprocesadores de la familia Intel.

80386: Sin cache on-chip 80486: 8 KBytes de cache unificada. Lineas (bloques) de 16 bytes y organizacin asociativa en cuatro vas. Pentium (todas las versiones): Dos caches L1 on-chip. Cache partida de 16 KBytes, 8KBytes para datos y 8 KBytes para instrucciones. Pentium III: Se aade una cache L3 en la tarjeta (off-chip). Pentium 4: - Caches L1 de 8 KBytes, lneas (bloques) de 64 bytes, asociativa de 4 vas. - Caches L2: Unificada. Alimenta a las dos cache L1. - 256 KBytes, lneas de 128 bytes, asociativa de 8 vas. - Cache L3 on-chip. Atencin: Los microprocesadores Pentium III y Pentium 4, no son objeto de estudio del curso Microprocesadores.

. 6.- El ejemplo 5.3, presenta la evolucin de la estructura de la cache, en la evolucin de los microprocesadores de Intel. Ejemplo 5.3: Evolucin de la estructura cache en los microprocesadores Intel.

La evolucin de la estructura cache se observa claramente en la evolucin de los microprocesadores Intel. El 80386 no tiene cache on-chip. El 80486 incluye una sola cache on-chip de 8 KBytes, utilizando un tamao de lnea de 16 bytes y una organizacin asociativa por conjunto (la memoria cache se divide en conjuntos de n bloques, as al bloque i-simo de memoria principal le corresponde el conjunto i mdulo (k/n) donde k es el nmero de bloques de memoria cache) de cuatro vas. En la figura 5.1, se presenta el diagrama de bloques del 80486, en el cual se aprecia la ubicacin de la cache.

70

Figura 5.1. Diagrama de bloques del 80486.


Fuente: http://www.duiops.net/hardware/micros/microshis.htm

El Pentium II incluye dos caches on-chip, una para datos otra para instrucciones. Cada cache es de 8 KBytes, utilizando un tamao de lnea de 32 bytes y una organizacin asociativa por conjunto de dos vas. Incluye adems una cache L2 que alimenta a las dos cache L1. La cache L2 es asociativa por conjunto de cuatro vas, y con tamaos que oscilan entre 256 Kbytes y 1 Mbyte. La figura 5.2 proporciona una visin simplificada de la estructura del Pentium II, resaltando la ubicacin de las tres caches.

71
Bus del sistema Cach L2 (256K-1M)

Unidad de interfaz del bus

Cach de instrucciones L1 (8-16K) Captar

Cache de datos L1 (8-16K)

Cargar

Memorizar

Unidad de Captacin y decodificacin de instrucciones

Unidad de envo y ejecucin

Unidad de retirada

Depsito de instrucciones (buffer de reorden-ROB)

Figura 5.2. Diagrama de bloques del Pentium II 7.- En el ejemplo 5.4 pone en evidencia la evolucin de la arquitectura superescalar en los microprocesadores Intel, y describe la arquitectura superescalar del Pentium II. Ejemplo 5.4: Arquitectura superescalar del microprocesador Pentium II.

El microprocesador 80486 no dispona de elementos superescalares, el Pentium original tena unas caractersticas superescalares modestas, que consistan en la utilizacin de dos unidades de ejecucin de enteros independientes. El Pentium Pro introdujo un diseo completamente superescalar. Por su parte, el Pentium II tiene bsicamente la misma organizacin superescalar que el Pentium Pro. En la figura 5.2 mostrada anteriormente, se presenta el diagrama de bloques del Pentium II. Los elementos esenciales de la organizacin superescalar son: la unidad de captacin y decodificacin de instrucciones, la unidad de envo y ejecucin, y la unidad de retiro. Se describe a continuacin la operacin de cada una de ellas:

72 Operacin de la unidad de captacin y decodificacin. La figura 5.3 es un esquema simplificado de la unidad de captacin y decodificacin del Pentium II. La operacin de captacin consta de tres etapas encauzadas:
Desde la cache de instrucciones Camino de 32 bytes Buffer de instrucciones (contiene una lnea)
16 bytes

IFU1

Siguiente IP

IFU2

Decodificador de longitud de instrucciones


16 bytes

Prediccin dinmica de saltos

IFU3

Etapa de alineacin para los decodificadores


16 bytes

ID1

Decodificador 0 (complejas)

Decodificador 1 (sencillas)

Decodificador 2 (sencillas)

Secuenciador de instrucciones de microcdigo

6 x 118 bits ID2 Cola de instrucciones decodificadas 3 x 118 bits RAT Asignador de registros 3 x 118 bits Prediccin esttica de saltos

Al ROB

Figura 5.3. Unidad de captacin/decodificacin del Pentium II Etapa IFU1 Capta instrucciones desde la cache de instrucciones, una lnea (32 bytes) cada vez. La unidad <<Siguiente IP>> proporciona la direccin de la siguiente instruccin a captar, y se capta en el buffer IFU1 la lnea de cache que contiene la instruccin. Esta operacin no se calcula sencillamente incrementando el puntero, porque podra haber un salto o una interrupcin pendiente que moviese el puntero a una posicin diferente. Despus el contenido del buffer IFU1 pasa IFU2 (16 bytes cada vez). Etapa IFU2

73 Esta unidad lleva a cabo dos operaciones en paralelo. IFU2 examina los bytes para determinar los lmites de las instrucciones; esta es una operacin necesaria, debido a que las instrucciones del Pentium son de longitud variable. Si alguna de las instrucciones es de salto, la unidad pasa la direccin de memoria correspondiente a la unidad de prediccin dinmica de saltos. IFU2 pasa despus el bloque de 16 bytes a IFU3, que es responsable de alinear las instrucciones para presentarlas al decodificador apropiado. Etapa IFU3 Para comprender el funcionamiento de esta etapa, es necesario describir la primera etapa de la unidad de decodificacin de instrucciones, ID1. Esta etapa es capaz de manejar tres instrucciones en paralelo. ID1 traduce cada instruccin en de una a cuatro microoperaciones cada una de 118 bits. ID1 contiene tres decodificadores. El primero de ellos puede manejar instrucciones que se traduzcan hasta en cuatro microoperaciones. El segundo y el tercer decodificador maneja instrucciones sencillas que correspondan a una nica microoperacin (instrucciones registro a registro e instrucciones de carga). Si ms de una instruccin es compleja, las instrucciones deben introducirse en ID1 en etapas, de tal modo que el segundo y tercer decodificador no se les d una instruccin compleja. Las instrucciones que requieren ms de cuatro microoperaciones, se transfieren al secuenciador de instrucciones de microcdigo (MIS, microcode instruction sequencer), el cual funciona como unidad microprogramada. La salida de ID1 o MIS se introduce en la segunda etapa de decodificacin, ID2, es un bloque de hasta seis microoperaciones a la vez. En este punto, hay una segunda ocasin para predecir saltos. Las microoperaciones encoladas en ID2 pasan a travs de una fase de renombramiento de registro (RAT, register allocator). El RAT transforma las referencias a lo 16 registros de la arquitectura. Despus el RAT introduce las microoperaciones revisadas al buffer de reordenacin (ROB, reorder buffer). Las microoperaciones entran al ROB en orden; despus son enviadas desde el ROB a la unidad de envo/ejecucin sin orden. Operacin unidad de envo/ejecucin La figura 5.4 es un esquema simplificado de la unidad de envo/ejecucin del Pentium II. La central de reservas (RS, reservation station) es responsable de recuperar las microoperaciones del ROB., envindolas a su ejecucin y guardando los resultados de nuevo en el ROB. La RS busca en el ROB microoperaciones cuyo estado indique que la microoperacin dispone de todos sus operandos. Si est disponible la unidad de ejecucin que necesita una microoperacin, la RS capta esa microoperacin y la enva a la unidad de ejecucin conveniente. Se pueden enviar hasta cinco microoperaciones en un ciclo. Hay cinco puertos que unen la RS a las cinco unidades de ejecucin. El puerto 0 se usa para instrucciones con enteros y coma flotante, con la excepcin de las operaciones sencillas con enteros y la gestin de las predicciones de saltos

74 errneas que se asignan al puerto 1. Las unidades de ejecucin MMX se asignan tambin a estos puertos. Los puertos restantes se utilizan para cargas y almacenamientos en memoria. Cuando se completa una ejecucin, se actualiza la entrada adecuada del ROB, y la unidad de ejecucin queda disponible para otra microoperacin.

Puerto 4

Unidad de ejecucin de almacenamientos Unidad de ejecucin de almacenamientos

A/desde ROB

C e Puerto 3 n t r a Puerto 2 l d e R e s e r v a s Puerto 1

A/desde la cache de datos

Unidad de ejecucin de cargas Desplazador MMX ALU MMX IEU (sencillas) Y JEU

ALU MMX Multiplicador MMX IEU (complejas) Puerto 0 FPU (complejas) FPU (sencillas)

Figura 5.4. Unidad de envo/ejecucin del Pentium II Unidad de Retiro La unidad de retiro (RU, retire unit) va procesando el buffer de reordenacin para entregar los resultados de la ejecucin de instrucciones. En primer lugar la RU debe tener presentes los fallos en las predicciones de salto, y las microoperaciones que se hayan ejecutado pero para las cuales los saltos precedentes no se hayan validado. Una vez que se determina que una microoperacin se ha ejecutado y no es vulnerable a eliminacin debido a un fallo de prediccin se marca como lista para ser retirada. Cuando se ha retirado la instruccin del Pentium previa, y todas las microoperaciones de la siguiente instruccin se han marcado como listas para ser retiradas, la RU actualiza los registros de la arquitectura afectados por esta instruccin, y quita del ROB la microoperacin.

75

Ejemplo 5.5: Mejoras incorporadas al sistema de memoria del 80486.

Dada la disponibilidad de sistemas de memoria muy grandes, y debido a que los costos de los circuitos son mnimos, muchos fabricantes de tarjetas de memoria han agregado la verificacin de paridad a sus tarjetas de memoria RAM. Esto se pone de manifiesto al comparar el sistema de memoria del microprocesador 80386 y del 80486. Ambos sistemas contienen 4 GB, pero el sistema de memoria del 80486 incluye un generador / detector de paridad interno, para determinar si un dato es ledo correctamente de una localidad de memoria. Ejercicios propuestos

1.- Explique cmo el modo pipeline alarga el tiempo de acceso para muchos accesos de memoria en un sistema basado en el microprocesador 80386. 2.- El avance de la tecnologa ha trado consigo la aparicin de una cantidad importante de nuevos bienes y servicios de carcter tecnolgico, como los mviles, ordenadores, los servicios de Internet, etc. El desarrollo de la investigacin e innovacin permite la constante actualizacin y renovacin del sector tecnolgico, tal es el caso de la potencia de los microprocesadores la cual se duplica cada 18 meses. Con base a la informacin anterior analice la evolucin de la velocidad de los microprocesadores Intel y describa las mejoras del desempeo obtenidas en la construccin de computadoras personales.

Consulta en otros libros

[Sayers 1995] trata arquitecturas prcticas de microprocesadores de 8, 16 y 32 bits. [Tokheim, 1995] incluye informacin sobre microprocesadores de la compaa Intel y Motorola. [Stallings 2000] Destaca las mejoras del diseo de microprocesadores tomando como ejemplos el microprocesador Pentium II y el PowerPC. Adems se encuentra informacin sobre la arquitectura del microprocesador en cualquiera de los textos recomendados

76

Consulta en la Web

http://www.duiops.net/hardware/micros/microshis.htm: Presenta la historia de los microprocesadores Intel. http://www.ac.uma.es/educacion/cursos/telecomunicacion/FundCompST/mas_ material/prestaciones/evolucion_80x86_n05.pdf: Muestra un cuadro en donde se resume la evolucin de la familia de microprocesadores Intel. http://petra.euitio.uniovi.es/~i1766818/TUTOR/TUTOR06.htm#1: Describe de una manera muy sencilla los microprocesadores Intel a partir del modelo 80486.

Ejercicios de Autoevaluacin

1.- Si se compara la arquitectura del microprocesador 80386 con la del 80486 no se encontrar diferencias. Sin embargo el tiempo de ejecucin de las instrucciones vara significativamente de un microprocesador a otro. Con base a la informacin analice cmo ha evolucionado el tiempo de ejecucin de las instrucciones en estos microprocesadores para la mejora del desempeo. 2.- La unidad de coma flotante del microprocesador Pentium se ha rediseado totalmente respecto a la que usa el 80486. Este desarrollo ha ocasionado la ejecucin ms rpida de operaciones aritmticas y de carga de datos. Tome como base lo antes expuesto y realice lo siguiente: - Estudie la construccin de la unidad de coma flotante en el Pentium II y describa las mejoras incluidas en su construccin para un mejor desempeo.

Respuesta a los Ejercicios de Autoevaluacin

1.- En el 80486 casi la mitad de las instrucciones son ejecutadas en un perodo de reloj, en vez de los dos perodos que necesita el 80386 para ejecutar instrucciones similares. 2.- La unidad de coma flotante del Pentium II, hace uso de nuevos algoritmos que aceleran la ejecucin de las operaciones e incluye nuevos elementos de hardware dedicados, como son: un multiplicador, un sumador y un divisor.

77

UNIDAD 6 El Coprocesador Aritmtico y la Tecnologa MMX.


Los procesadores del tipo 8086 solo podan realizar operaciones aritmticas con nmeros enteros. Para los fraccionarios deban utilizar complicados artificios, por lo que desde el principio se crearon procesadores especficos y costosos para operaciones aritmticas con nmeros fraccionarios. Puesto que la CPU no hace otra cosa que clculos, el estudiante podra estar preguntndose por qu necesita ayuda para realizarlos. Lo que ocurre es que la CPU solo puede llevar a cabo operaciones aritmticas bsicas con nmeros enteros, para procesar operaciones con valores fraccionarios, requiere bastante tiempo lo que disminuye su velocidad considerablemente, debido especialmente a que la CPU tiene que ejecutar tambin otras tareas simultneamente. En aquellos campos de aplicacin donde se requieren muchas posiciones decimales y los errores de redondeo deben de mantenerse tan insignificantes como sea posible, resulta imprescindible la utilizacin de un coprocesador aritmtico. A partir de la introduccin del 80486, Intel incorpor el coprocesador aritmtico junto con el procesador principal, por lo que su existencia dej de ser opcional, convirtindose en estndar. Con cada generacin de CPU utilizada en sistemas de computadoras personales Intel, tambin introduca su correspondiente coprocesador. La unidad 5 del presente material incluye el estudio del funcionamiento de la familia de coprocesadores aritmticos etiquetada como 80X87. Tambin se incluye en esta unidad el estudio de la tecnologa MMX, introducida por Intel en su lnea de procesadores Pentium. Aunque no se pueda considerar la tecnologa MMX como un procesador en si mismo, es uno de los mayores pasos que ha dado Intel. Este realce incluye 57 nuevas instrucciones muy optimizadas para tareas multimedia, estas instrucciones usan una tcnica conocida como SIMD (single-instruction, multiple-data), es decir una secuencia de instrucciones y mltiples secuencias de datos que posibilita efectuar la misma operacin, tal como una suma o una multiplicacin con varios elementos de datos a la vez Objetivo de la Unidad 6: Analizar programas que resuelvan problemas aritmticos, para la descripcin de la operacin del coprocesador aritmtico o de la tecnologa MMX. Contenido de la Unidad 5: El contenido de la unidad contempla el estudio de los siguientes temas: Formato de datos y arquitectura del coprocesador aritmtico. Conjunto de instrucciones y programacin del coprocesador aritmtico. La tecnologa MMX: Tipos de datos y conjunto de instrucciones.

78

Actividades recomendadas para el estudio del contenido de la unidad 6. 1.- Examine la tabla 6.1, en ella puede identificar las lecturas de los temas contentivos de la unidad 6:
MATERIAL DE REFERENCIA

TTULO

CONTENIDO Formato de datos para el coprocesador aritmtico.

CAPITULO

Arquitectura de 80X87. El texto Los El Coprocesador Microprocesadores Conjunto de instrucciones. Aritmtico y la Intel, B. B. Brey. Tecnologa MMX. Programacin con el coprocesador aritmtico. . Introduccin a la tecnologa MMX. Tipo de datos e instrucciones.

14

Tabla 6.1 2.- Una vez ledo el contendido indicado en la tabla 5.1, usted estar en capacidad de responder lo siguiente: 2.2 Qu tipos de datos maneja el coprocesador? 2.8 Qu tipos de nmeros flotantes soporta el coprocesador? 2.9 Cules son las directivas que emplea el coprocesador para almacenar datos? 2.10 Para qu tipo de aplicaciones estn diseadas especficamente las instrucciones MMX? 3.- Estudie los siguientes contenidos tericos a travs de los cuales complementar los conocimientos adquiridos con las lecturas indicadas en la tabla 6.1: El Coprocesador Aritmtico Es un microprocesador de instalacin opcional, tambin denominado Unidad de Punto Flotante, que auxilia al microprocesador en el uso eficiente de programas de graficacin, clculos matemticos complejos y diseo, lo cual al

79 especializarse en dichas funciones acelera la velocidad con que una computadora puede responder a necesidades tan sofisticadas. Los coprocesadores estn todava mas crticamente ajustados a la velocidad del reloj que los procesadores normales. Por lo tanto, debe asegurarse que cualquier coprocesador que se seleccione para un sistema est diseado para manejar la frecuencia de reloj de su computadora. Fuente: El autor. Instruccin Simple, Mltiples Datos (SIMD) Las aplicaciones de multimedia y comunicaciones de hoy en da con frecuencia usan ciclos repetitivos que, aunque ocupan el 10 por ciento o menos del cdigo total de la aplicacin, pueden ser responsables hasta por el 90 por ciento del tiempo de ejecucin. El proceso denomina SIMD (Single Instruction Multiple Data) hace posible que una instruccin realice la misma funcin sobre mltiples datos, en otras palabras, las instrucciones ejecutan las operaciones simultneamente en varios datos en paralelo. Un ejemplo de su funcionamiento en la realidad es con el vdeo: En los procesadores conocidos hasta la llegada del MMX llegaban 8 pixeles de datos grficos de una en una y se procesaban separadamente. En los procesadores MMX, los 8 pixeles llegan al procesador en un paquete de 64 bits y se procesan a todos en una sola instruccin. Otro ejemplo lo tenemos aqu, en una muestra de sonido de 16 bits, podemos manipular hasta 4 muestras al mismo tiempo. Sobre una aplicacin estndar, el rendimiento mejora entre un 10 y un 20 por ciento, pero cuando el programa ha sido diseado especficamente para utilizar todo el potencial del MMX, el rendimiento puede llegar al 40 o 60 por ciento. http://neutron.ing.ucv.ve/revista-e/No3/Ferreira.html Pixel Pxel es la abreviatura de la expresin inglesa Picture Element (Elemento de Imagen), y es la unidad ms pequea que encontraremos en las imgenes compuestas por mapa de bits. El pxel es la unidad mnima en que se divide la retcula de la pantalla del monitor y cada uno de ellos tiene diferente color. Su tono de color se consigue combinando los tres colores bsicos (rojo, verde y azul) en distintas proporciones. Un pxel tiene tres caractersticas distinguibles: Forma cuadrada Posicin relativa al resto de pxeles de un mapa de bits. Profundidad de color (capacidad para almacenar color), que se expresa en bits. http://www2.canalaudiovisual.com/ezine/books/jirimag/1Imag21.htm Instrucciones MMX del Pentium Este conjunto de instrucciones est orientado a programacin multimedia. Los datos de vdeo y audio suelen representarse mediante vectores o matrices

80 grandes, compuestos por datos de longitud reducida (8 o 16 bits), mientras que las instrucciones convencionales operan normalmente con datos de 32 o 64 bits. Estos son algunos ejemplos: En grficos y en vdeo, cada escena consiste en una matriz de puntos de imagen, y hay 8 bits para cada punto de imagen u 8 bits para cada componente de color (rojo, verde, azul) del punto de imagen. Las muestras de audio suelen estar cuantizadas con 16 bits. Para algunos algoritmos de grficos de 3D es comn emplear 32 bits para los tipos de datos bsicos. Para posibilitar le procesamiento paralelo con estos tamaos de datos, en MMX se definen tres nuevos tipos de datos. Tienen una longitud de 64 bits, y constan de varios campos de datos ms pequeos, cada uno de los cuales contiene un entero de coma fija. Estos tipos de datos son los siguientes: Byte empaquetado: Ocho bytes en una cantidad de 64 bits. Palabra empaquetada: Cuatro palabras de 16 bits empaquetadas en 64 bits. Palabra doble empaquetada: Dos palabras dobles de 32 bits empaquetadas en 64 bits. [Stallings, 2000] 4.- En el siguiente ejemplo se muestra el uso de la instruccin PADDB de la tecnologa MMX disponible en el Pentium II: Ejemplo 6.1: Suma con saturacin mediante el uso de la instruccin PADDB.

La instruccin PADDB toma como operando un byte empaquetado, y realiza en paralelo sumas con cada posicin de byte para producir un byte empaquetado de salida. Una caracterstica inusual que presenta el conjunto de instrucciones MMX es la introduccin de la aritmtica de saturacin. Con la aritmtica sin signo ordinaria, cuando una operacin produce un desbordamiento (es decir, se produce una acarreo en la posicin del bit mas significativa) el bit se trunca. Considere, por ejemplo las dos palabras en hexadecimal, F000H y 3000H. Su suma se expresara como:

F000H = +3000H =

1111 0000 0000 0000 0011 0000 0000 0000 1 0010 0000 0000 0000 = 2000H

Acarreo

81 Si los dos nmeros representaban intensidad de imagen, el resultado de la suma hace que la combinacin de zonas sombreadas oscuras aparezca como ms clara. Esto no es lo que se pretende normalmente. Mediante la aritmtica con saturacin, cuando la suma produce un desbordamiento, o la resta produce un desbordamiento negativo, el resultado se fija respectivamente al mayor o al menor valor representable. Para el ejemplo dado, la aritmtica con saturacin dara como resultado:

F000H = +3000H =

1111 0000 0000 0000 0011 0000 0000 0000 1 0010 0000 0000 0000 = 2000H

Acarreo 1111 1111 1111 1111 = FFFFH Suma con saturacin 5.- En el ejemplo 6.2 tomado de [Stallings, 2000], se muestra el uso de las instrucciones MMX en una funcin tpica de video. Ejemplo 6.2: Composicin de una imagen en una funcin tpica de vdeo mediante el uso de la tecnologa MMX.

Una funcin tpica de vdeo es el efecto de desvanecimiento o extincin progresiva (fade-out) y reaparicin (fade-in), mediante el cual una imagen A se deshace y convierte gradualmente en otra B. Las dos imgenes se combinan mediante una media ponderada: Pixel_resultado = Pixel_A x fade + Pixel_B x (1 fade) Este clculo se efecta para cada posicin de punto de imagen en A y B. Si se produce una secuencia de video mientras fade est cambiando progresivamente desde 1 a 0 (con una escala ajustada a un entero de 8 bits), el resultado es una transformacin paulatina de la imagen A en la imagen B. La figura 6.1 muestra para un conjunto de puntos de imagen, la secuencia de pasos necesaria. Las componentes de pixel de 8 bits son transformadas en elementos de 16 bits para adaptarlas al tamao de las multiplicaciones MMX de 16 bits.

82

Alpha
Azul Verde

Alpha
Azul Verde

Rojo

Rojo

Imagen A

Imagen B

Ar3

Ar2

Ar1

Ar0

Br3

Br2

Br1

Br0

1. Desempaquetar bytes de componentes de pixel rojo de las imgenes A y B

Ar3

Ar2

Ar1

Ar0

Br3

Br2

Br1

Br0

Sustraccin

2. Restar la imagen B de la imagen A

r3

r2

r1

r0

3.Multiplicar

el resultado por el valor de fade

fade

fade

fade

fade

fade x r3

fade x r2

fade x r1

fade x r0

4.Sumar los pixels


de la imagen B

+
Br3

+
Br2

+
Br1

+
Br0

5.Volver

a empaquetar en bytes los nuevos pxels compuestos

nuevor3

nuevor2

nuevor1

nuevor0

r3

r2

r1

r0

Figura 6.1 Composicin de imagen en una representacin de planos de colores

83 A continuacin se presenta el cdigo MMX que ejecuta las operaciones antes indicadas: PXOR MOVQ MOVD MOVD PUNPCKBLW PUNPCKBLW PSUBW PMULHW PADDDW PACKUSWB MM7, MM7 MM3, fad_val MM0, imagenA MM1, imagenB MM0, MM7 MM1, MM7 MM0, MM1 MM0, MM3 MM0, MM1 MM0, MM7 ; poner a cero MM7 ; cargar el valor de fade replicado 4 veces ; cargar las componentes de rojo de 4 pixels de la imagen A ; cargar las componentes de rojo de 4 pixels de la imagen B ; desempaquetar a 16 bits 4 pixels ; desempaquetar a 16 bits 4 pixels ; restar la imagen B de la imagen A ; multiplicar los valores de la resta por el valor de fade ; sumar el resultado a la imagen B ; empaquetar en bytes los resultados de 16 bits

Ejercicios propuestos

1.- La siguiente lnea corresponde a una seccin de un programa escrito para ser ejecutado por el coprocesador aritmtico: FST DATA Analice la seccin del programa dado y describa cmo la ejecuta el coprocesador. Asuma que DATA est definida como una localidad de memoria de 64 bits. 2.- Describa cmo ocurre la saturacin con signo, si las cantidades a sumar son de un byte.

Consulta en otros libros

[Stallings 2000] Destaca las mejoras del diseo de microprocesadores tomando como ejemplos el microprocesador Pentium II y el PowerPC.

84

Ejercicios de Autoevaluacin

1.- El siguiente conjunto de instrucciones, ha sido extrado de un programa desarrollado para ser ejecutado por el coprocesador aritmtico: .MODEL SMALL . . . RAD .DD 2.34 . . FLD RAD . . . Analice la seccin del programa dado y describa que funcin realiza la instruccin FLD RAD. 2.- A continuacin se presenta la seccin de un programa que emplea instrucciones MMX, tales como: PADDB MM1, MM2

Para la instruccin dada, responda lo siguiente: Qu tipo de operacin permite realizar? Describa qu funcin realiza esta instruccin.

Respuesta a los Ejercicios de Autoevaluacin

1.- En la seccin del programa dado, la instruccin FLD RD, carga el valor almacenado en RAD en ST. 2.- Solucin: La instruccin permite realizar la operacin aritmtica de la suma. Esta instruccin suma el contenido completo de 64 bits del registro MM2 al contenido del registro MM1, byte por byte. El resultado es ubicado en MM1.

85

MDULO III PROGRAMACIN DEL MICROPROCESADOR


El mdulo III est conformado por las unidades 7 y 8. El estudio de estas unidades, permite desarrollar en el estudiante las competencias necesarias en la solucin de problemas, haciendo uso de los microprocesadores. El desarrollo de la solucin implicar, la codificacin de algoritmos en el lenguaje ensamblador del microprocesador Intel 80286 y la implementacin del programa codificado en un microprocesador de este tipo. El programa as codificado, se ejecutar en un software simulador, el cual proporciona un modelo real de un microprocesador Intel 80286. Objetivo del Mdulo III: Implementar con sentido lgico y creativo, programas especficos, haciendo uso de los microprocesadores. El mdulo III est estructurado en dos unidades: Unidad 7: Unidad 8: Programacin en Lenguaje Ensamblador Implementacin de Programas en el Microprocesador

86

UNIDAD 7
Programacin en Lenguaje Ensamblador Los programas que convierten un programa de usuario escrito en algn lenguaje, a otro lenguaje, se llaman traductores. El leguaje en el que est escrito el programa original se llama lenguaje fuente, y el lenguaje a que se convierte se llama lenguaje objeto o lenguaje de mquina. El lenguaje fuente es en lo esencial una representacin simblica (lenguaje mnemotcnico) de un lenguaje de mquina numrico, el traductor se llama lenguaje ensamblador. Las computadoras siguen utilizando el lenguaje de mquina para procesar los datos, pero los programas ensambladores traducen antes los smbolos de cdigo de operacin especificados a sus equivalentes en lenguaje de mquina. Este proceso es al que se le denomina ensamblado de cdigo. Para facilitar la elaboracin de programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje Ensamblador. En la unidad 5 se presenta el uso del lenguaje ensamblador, especficamente el correspondiente al microprocesador 80286. El estudio de esta unidad afianzar en el estudiante los conocimientos obtenidos en el curso, especialmente en lo que respecta a la programacin Objetivo de la Unidad 7: Codificar algoritmos, utilizando un lenguaje ensamblador y las tcnicas apropiadas, para la resolucin de un problema especfico. Contenido de la Unidad 7: El contenido de la unidad contempla el estudio de los siguientes temas: Lenguaje ensamblador, Lenguaje de mquina Mnemnicos, Conjunto de instrucciones de un microprocesador especfico Programacin modular Codificacin de algoritmos en un lenguaje ensamblador especfico

87 Actividades recomendadas para el estudio del contenido de la unidad 7. 1.- Lea el captulo 7 del texto Los Microprocesadores Intel, B. B. Brey. 2.- Lea los siguientes contenidos tericos: Lenguaje de Mquina Es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de un ordenador o el microcontrolador de un autmata (un PIC). Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la mquina. Un programa de computadora consiste en una cadena de estas instrucciones de lenguaje de mquina (ms los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de cada mquina o arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas. http://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quina

Mnemnico En Informtica un Mnemnico es una palabra que sustituye a un cdigo de operacin (Lenguaje de mquina), con lo cual resulta ms fcil la programacin, es de aqu de donde resulta el concepto de lenguaje ensamblador. Un ejemplo comn de mnemnico es la instruccin MOV, que le indica al microprocesador que debe de mover datos de un lugar a otro. El microprocesador no entiende palabras, sino que nmeros binarios, por lo que es necesario la traduccin del mnemnico a cdigo objeto. http://es.wikipedia.org/wiki/Mnem%C3%B3nico

Lenguaje Ensamblador. Una CPU puede interpretar y ejecutar instrucciones de mquina. Estas instrucciones son, simplemente, nmeros binarios almacenados en el computador. Sin un programador quisiera programar directamente en lenguaje de mquina, necesitara introducir los programas como datos binarios. Considere la sencilla sentencia BASIC: N=I+J+K Suponga que queremos programar esta sentencia en un lenguaje de mquina y dar a I, J y K los valores iniciales 2,3, y 4, respectivamente. La forma de hacer esto se muestra en la figura 7.1a. El programa empieza en la posicin 101

88 (hexadecimal). Se reserva memoria parea las cuatro variables a partir de la posicin 201. El programa consta de cuatro instrucciones: 1. 2. 3. 4. Cargar el contenido de la posicin 201 en el acumulador (AC). Sumar a AC el contenido de la posicin 202. Suma a AC el contenido de la posicin 203. Memorizar el contenido de AC en la posicin 204.

Esto es claramente un proceso tedioso y muy susceptible de errores. Una ligera mejora consiste en redactar el programa en hexadecimal, e lugar de en binario, ver figura 7.1b. Para que la mejora sea ms significativa, podemos hacer uso de nombres simblicos o mnemotcnicos de las instrucciones. El resultado es el programa simblico mostrado en la figura 7.1c. Cada lnea sigue representando una posicin de memoria, y consta de tres campos separados por espacios. El primer campo contiene la direccin de una posicin. El segundo campo contiene el smbolo de tres letras que representa su cdigo de operacin. Si se trata de una instruccin que hace referencia a memoria, un tercer campo contiene la direccin. Para memorizar un dato concreto en una posicin dada, nos inventamos una pseudoinstruccin con el smbolo DAT. Esta es meramente un indicador de que el tercer campo de la lnea contiene un nmero en hexadecimal a memorizar en la posicin que especifica el primer campo. El uso de programas simblicos hace la vida mucho ms fcil, pero es aun engorroso. En particular hay, hay que dar una direccin absoluta para cada palabra. Un procedimiento mejor, es emplear direcciones simblicas. Esto se ilustra en la figura 7.1d. Cada lnea sigue teniendo tres campos. El primero sigue siendo para la direccin, pero se utiliza un smbolo en lugar de una direccin numrica absoluta. Algunas lneas carecen de direccin, indicando que la direccin de dicha lnea es uno ms que la direccin precedente. Para las instrucciones que hacen referencia a memoria, el tercer campo contiene tambin una direccin simblica. Con este ltimo refinamiento, hemos inventado un lenguaje ensamblador. Los programas escritos en lenguaje ensamblador (programas en ensamblador) se traducen a lenguaje de mquina mediante un ensamblador. El desarrollo de los lenguajes ensambladores fue un logro importante en la evolucin de la tecnologa de computadores. Fue el primer paso hacia los lenguajes de alto nivel de hoy en da.

89

Direccin 101 102 103 104

0010 0001 0001 0011

Contenido 0010 0000 0010 0000 0010 0000 0010 0000

0001 0010 0011 0100

101 102 103 104

LDA ADD ADD STA

201 202 203 204

201 202 203 204

0000 0000 0000 0000

0000 0000 0000 0000

0000 0000 0000 0000

0010 0011 0100 0000

201 202 203 204

DAT DAT DAT DAT

2 3 4 0

(a) Programa en binario


Direccin 101 102 103 104 Contenido 2201 1202 1203 3204 Etiqueta FORMUL

(c) Programa simblico


Operacin LDA ADD ADD STA Operando I J K N

201 202 203 204

0002 0003 0004 0000

I J K N

DATA DATA DATA DATA

2 3 4 0

(a) Programa en hexadecimal

(c) Programa en ensamblador

Figura 7.1. Clculo de la frmula N = I + J + K. Stallings, 2000.pp. 346.

Conjunto de instrucciones Un conjunto de instrucciones repertorio de instrucciones ISA (del ingls instruction set architecture -arquitectura del conjunto de instrucciones-) es una especificacin que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos. La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de caractersticas de la microarquitectura, que son los elementos y tcnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentras las microinstrucciones y los sistemas de cach. Procesadores con diferentes diseos internos pueden compartir un conjunto de instrucciones; por ejemplo el Intel Pentium y AMD Athlon implementan

90 versiones casi idnticas del conjunto de instrucciones x86, pero tiene diseos internos completamente opuestos. http://es.wikipedia.org/wiki/Conjunto_de_instrucciones

Diseo del repertorio de instrucciones Uno de los aspectos ms interesantes y ms analizado del diseo de un computador, es el diseo del repertorio de instrucciones del lenguaje de mquina. El diseo de un repertorio de instrucciones es muy complejo, ya que afecta a muchos aspectos del computador. El repertorio de instrucciones define muchas de las funciones realizadas por la CPU y tiene, por tanto, un efecto significativo sobre la implementacin de la misma. El repertorio de instrucciones es el medio que tiene el programador para controlar la CPU. Algunos de los aspectos ms bsicos relativos al diseo son los siguientes: Repertorio de operaciones: Cuntas y qu operaciones considerar, y cun complejas deben ser. Tipos de datos: Los distintos tipos de datos con los que se efectan las operaciones. Formato de instrucciones: Longitud de la instruccin (bits), nmero de direcciones, tamao de los distintos campos, etc. Registros: Nmero de registros de la CPU que pueden ser referenciados por instrucciones, y su uso. Direccionamiento: El modo o modos de direccionamiento mediante los cuales puede especificarse la direccin del operando. Stallings, 2000. pp. 318.

El microprocesador Intel 80286 El Intel 80286 (llamado oficialmente iAPX 286, tambin conocido como i286 o 286) es un microprocesador de 16 bits de la familia x86, que fue lanzado al mercado por Intel el 1 de febrero de 1982. Las versiones iniciales del i286 funcionaban a 6 y 8 MHz, pero acab alcanzando una velocidad de hasta 20 MHz. El i286 fue el microprocesador ms empleado en los IBM PC y compatibles entre mediados y finales de los aos 80. El i286 funciona el doble de rpido por ciclo de reloj que su predecesor (el Intel 8086) y puede direccionar hasta 16 Mbytes de memoria RAM, en contraposicin a 1 Mbyte del i8086. En mquinas DOS, esta memoria adicional solo poda ser accedida a travs de emulacin de memoria extendida. De todos modos, pocos ordenadores basados en el i286 tuvieron ms de 1 Mbyte de memoria. El i286 fue diseado para ejecutar aplicaciones multitarea, incluyendo comunicaciones (como centralitas automatizadas), control de procesos en tiempo real y sistemas multiusuario. Para ello se le aadi un modo protegido,

91 en el cual existan cuatro anillos de ejecucin y divisin de memoria mediante tablas de segmentos. En este modo trabajaban las versiones de 16 bits del sistema operativo OS/2. A pesar de su gran popularidad, hoy en da quedan pocos ordenadores con el i286 funcionando. El sucesor del i286 fue el Intel 80386, de 32 bits. http://es.wikipedia.org/wiki/Intel_80286 3.- En el ejemplo 7.1, se muestra un programa fuente que permite desplegar un mensaje en pantalla mediante llamadas al DOS. Ejemplo 7.1: Programa fuente que imprime un mensaje en la pantalla.

Aqu se tratar todo lo concerniente con el lenguaje ensamblador y el conjunto de directivas del Microsoft Macro Assembler v4.0. Si bien esto puede resultar bastante extenso y complejo, aqu slo se describirn las instrucciones y directivas bsicas. Para comenzar se presenta un pequeo ejemplo que ilustra el formato del programa fuente. Este ejemplo est completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS (system calls) para imprimir el mensaje Hola mundo en pantalla. ; HOLA.ASM ; Programa clasico de ejemplo. Despliega una leyenda en pantalla. STACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pila STACK ENDS DATA SEGMENT ; Segmento de datos SALUDO DB "Hola mundo",13,10,"$" ; Cadena DATA ENDS CODE SEGMENT ; Segmento de Cdigo ASSUME CS:CODE, DS:DATA, SS:STACK

INICIO: MOV AX,DATA MOV DS,AX MOV DX,OFFSET SALUDO MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END INICIO

; Punto de entrada al programa ; Pone direccin en AX ; Pone la direccion en los registros ; Obtiene direccion del mensaje ; Funcin: Visualizar cadena ; Servicio: Funciones alto nivel DOS ; Funcin: Terminar

; Marca fin y define INICIO

92 La descripcin del programa es como sigue: Las declaraciones SEGMENT y ENDS definen los segmentos a usar. La variable SALUDO en el segmento DATA, define la cadena a ser desplegada. El signo de dlares al final de la cadena (denominado centinela) es requerido por la funcin de visualizacin de la cadena de MS-DOS. La cadena incluye los cdigos para carriage-return y line-feed. La etiqueta INICIO en el segmento de cdigo marca el inicio de las instrucciones del programa. La declaracin DW en el segmento de pila define el espacio para ser usado por el stack del programa. La declaracin ASSUME indica que registros de segmento se asociarn con las etiquetas declaradas en las definiciones de segmentos. Las primeras dos instrucciones cargan la direccin del segmento de datos en el registro DS. Estas instrucciones no son necesarias para los segmentos de cdigo y stack puesto que la direccin del segmento de cdigo siempre es cargada en el registro CS y la direccin de la declaracin del stack segment es automticamente cargada en el registro SS. Las ltimas dos instrucciones del segmento CODE usa la funcin 4CH de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero sta es la ms recomendada. La directiva END indica el final del cdigo fuente y especifica a START como punto de arranque.

5.- El ejemplo 7.2 muestra la importancia del uso de las directivas PUBLIC y EXTRN en la programacin modular. Ejemplo 7.2: Uso de directivas PUBLIC y EXTRN.

A continuacin se presentan dos mdulos de programa: MAIN y TASK, el primer mdulo corresponde al mdulo principal, mientras que el segundo al mdulo que contiene una rutina. Ambos mdulos son archivos que se editan por separado, se ensamblan por separado, pero se ligan juntos.

93 MODULO PRINCIPAL: MAIN.ASM NAME MAIN PUBLIC EXIT EXTRN PRINT:NEAR STACK SEGMENT WORD STACK 'STACK' DW 64 DUP(?) STACK ENDS DATA DATA CODE START: MOV AX, DATA MOV DS, AX JMP PRINT EXIT: MOV AH, 4CH INT 21H CODE ENDS END START ; carga localizacin del segmento ; en el registro DS ; va a PRINT en el otro modulo SEGMENT WORD PUBLIC 'DATA' ENDS SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:CODE, DS:DATA

SUBMODULO: TASK.ASM NAME TASK PUBLIC PRINT EXTRN EXIT:NEAR DATA SEGMENT WORD PUBLIC 'DATA' ENTRADA DB "Entrando a un submodulo....",13,10,"$" SALIDA DB ".......saliendo del submodulo.",01,07,13,10,"$" DATA ENDS CODE PRINT: MOVE AH,06H ; Funcin para borrar pantalla MOV AL,0 ; todas las lneas MOV CX,0 ; de 0,0 MOV DH,24D MOV DL,79D MOV BH,0 ; atributo en lneas vacas INT 10H ; Ser vicio de e/s vdeo MOV DX, OFFSET ENTRADA MOV AH,09H INT 21H MOV DX, OFFSET SALIDA INT 21H SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:CODE, DS:DATA

94 JMP ENDS END EXIT ; Regresa al otro modulo

CODE

Ejercicios propuestos

1.- Codifique una rutina en el lenguaje ensamblador del 80286 que permita el ingreso de caracteres, verificando si se ha oprimido una tecla pero sin esperar que ocurra. Si esto ha ocurrido entonces devuelve su codificacin ASCII en un registro; en caso contrario devuelve cero. 2.- Considere una cadena como una secuencia de caracteres terminada por un byte cero, y se requiere calcular su longitud. Con base a lo antes planteado, codifique en el lenguaje ensamblador 80286 un algoritmo que permita calcular la longitud de la cadena de caracteres.

Consulta en otros libros

[Stallings 2000] Incluye el repertorio de instrucciones de dos familias de computadores: el Pentium II de Intel y el Power PC. [Englander 2002] Incluye la descripcin del conjunto de instrucciones de la familia x86. Consulta en la Web

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68H C11.html:Contiene informacin interesante relacionada con el lenguaje ensamblador. http://www.alpertron.com.ar/80286.HTM: Describe el microprocesador 80286 y las instrucciones adicionales que controlan el sistema de memoria virtual.

Ejercicios de Autoevaluacin

1.- Desarrolle un procedimiento llamado SUMS, que permita sumar el valor del contenido de los registros BX, CX y DX con el contenido de AX. Utilice la definicin de procedimiento cercano (NEAR).

95 2.-Codifique un programa que despliegue OK en la pantalla del monitor, utilizando para ello el procedimiento DISP mostrado a continuacin: DISP PROC MOV INT RET ENDP NEAR AH, 2 21H

DISP

Respuesta a los Ejercicios de Autoevaluacin

1.- El procedimiento es el siguiente: SUMS PROC NEAR ADD AX, BX ADD AX, CX ADD AC, DX RET ENDP

SUMS

2.- A continuacin se muestra el programa: .MODEL .CODE STARTUP TINY

MOV MOV CALL MOV CALL .EXIT END

BX, OFFSET DISP DL, O BX0 DL, K BX

96

UNIDAD 8
Implementacin de Programas en el Microprocesador Una vez que el estudiante se ha familiarizado con el repertorio de instrucciones de una arquitectura especfica, y ha desarrollado una solucin a un problema especfico mediante un programa, se pretende en la unidad 8, implementar el programa codificado en un software simulador que le permitir familiarizarse con esta arquitectura haciendo uso de las instrucciones. Objetivo de la Unidad 8: Implementar un programa en un microprocesador, resolviendo un problema dado. Contenido de la Unidad 8: El contenido de la unidad contempla el estudio de los siguientes temas: Uso del software simulador. Ejecucin de programas en el software simulador.

97 Actividades recomendadas para el estudio del contenido de la unidad 7. 1.- A continuacin se presenta informacin relacionada con dos software de simulacin de la arquitectura del microprocesador Intel 8085. Se recomienda su lectura por parte del estudiante, ya que esto le permitir visualizar el modelo de programacin y la manera como opera este microprocesador. Cabe destacar que en la red Internet se encuentran disponibles estas aplicaciones, algunos podrn descargarse en forma gratuita para su uso, otros en cambio se ofertan para la venta.

Simulador del microprocesador 8085 versin 3 para Windows Este simulador se oferta en http://www.insoluz.com/Micro/Micro.html. Internet en la direccin:

La figura 8.1 presenta la arquitectura de este simulador, y a continuacin se resume sus caractersticas: Ofrece la transparencia completa de los registros, de los indicadores y de la pila. Ofrece la codificacin fcil a travs de una pista del clave de cdigo con la validacin completa de la entrada de informacin. Ofertas fciles y el poner a punto extenso incluyendo puntos de interrupcin y perfilar. Tuerca hexagonal De las Ayudas / Ficheros De Obj. Tambin ofrece un editor de textos del ensamblador con destacar del sintaxis. El software es acuerdo y est disponible en lenguajes mltiples. Fichero diseado y detallado del receptor de papel de la ayuda.

La figura 8.2 muestra una pantalla de aplicacin en la cual puede apreciarse un programa en ejecucin. Por su parte en la figura 8.3, se muestra el proceso de carga de un programa fuente, haciendo uso del editor de textos del ensamblador.

http://www.insoluz.com/Sp/Micro/Micro.html

98

Figura 8.1. Simulador del microprocesador 8085 Proceso de entrada

99

Figura 8.2. Simulador del microprocesador 8085 - Ejecucin

100

Figura 8.1. Simulador del microprocesador 8085 Editor de textos del ensamblador

101 Simulador del microprocesador 8085 versin 1.0.0 Desarrollado por Pedro J. Casanova Pelez, se encuentra disponible en forma gratuita en la siguiente direccin electrnica: http://voltio.ujaen.es/casanova/simu8085/sim8085.htm . Este simulador presenta las siguientes caractersticas: Funciona bajo Windows Completo soporte de 64 KBytes de memoria y 256 puertos de E/S Entrada de datos en Hexadecimal Todos los registros visibles y modificables Ejecucin paso a paso y seguida Carga / almacenamiento en formato hexadecimal Intel de 8 bits Ensamblador incluido

En la figura 8.4 puede apreciarse el modelo de programacin de este simulador.

102

Simulador del microprocesador 8085

Descargar Volver a pgina anterior

103

Ejercicios propuestos

Implemente las rutinas codificadas en los Ejercicios Propuestos en la unidad 7, en el software simulador disponible en la siguiente direccin electrnica: http://voltio.ujaen.es/casanova/simu8085/sim8085.htm .

Consulta en la Web

Encontrar http://www.softwareforeducation.com/sms32v50/simulator.htm: informacin con un software simulador de microprocesador para principiantes.