introducción a la estructura de computadores

272
Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05 1 Tema 1: Introducción a la estructura de computadores 1. Objetivos de la asignatura. 2. Niveles de descripción de un computador. 3. Estructura básica de un computador convencional. 4. Evolución histórica: tecnología y arquitectura. 5. Lenguajes de descripción hardware. 1. Objetivos de la asignatura La arquitectura de un computador está constituida por el conjunto de funcionalidades disponibles para un programador que utiliza el lenguaje máquina, básicamente, el repertorio de instrucciones y los elementos de memoria referenciados desde él, es decir, los registros generales y la memoria principal. Las funcionalidades de una arquitectura se pueden conseguir con diferentes organizaciones internas o estructuras, diferenciándose unas de otras fundamentalmente en los parámetros de rendimiento y el coste. Finalmente, la estructura de un computador se puede implementar con diferentes tecnologías, siendo nuevamente el coste y el rendimiento los elementos diferenciales. Arquitectura, estructura y tecnología constituyen, pues, tres niveles de estudio del hardware de un computador. En esta asignatura abordaremos el estudio de la organización o estructura interna de un computador. Para ello la materia la dividiremos en cuatro módulos. En el primero realizaremos una introducción general a la estructura de computadores. En el segundo estudiaremos la arquitectura del repertorio de instrucciones (ISA), arquitectura que define la interfaz hardware- software de la máquina. En el tercero veremos toda la jerarquía de memoria de una máquina y su gestión. Finalmente, en el cuarto estudiaremos las unidades de entrada/salida, los periféricos y los buses de comunicación. El estudio de la unidad aritmético-lógica y la unidad de control se aborda en la asignatura Ampliación de Estructura de Computadores. Para situar con mayor precisión el objeto de estudio de esta asignatura analizaremos en el apartado siguiente los diferentes niveles de descripción que se suelen contemplar en el estudio de un computador digital. 2. Niveles de descripción de un computador La estrategia que habitualmente se utiliza para abordar el estudio de los sistemas complejos consiste en especificarlos a diferentes niveles de abstracción. Cada nivel se caracteriza por: A) Unos elementos de entrada, es decir, disponibles para el diseño en este nivel, y que proceden del nivel inmediato inferior. B) Unos elementos de salida, es decir, objetivos del diseño en este nivel, y destinados al nivel inmediato superior. C) Una metodología de análisis y síntesis de los elementos de salida en términos de los de entrada. Con esta estrategia, la complejidad del sistema queda dividida, acotada y organizada en las complejidades parciales de cada nivel, dentro de cuyos límites se puede aplicar una metodología propia de estudio. Al computador digital como sistema artificial complejo se le ha aplicado esta estrategia. En nuestro caso consideraremos los siguientes niveles de abstracción dentro del estudio de un

Upload: axel-kuerten

Post on 24-Jun-2015

653 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 1: Introducción a la estructura de computadores

1. Objetivos de la asignatura. 2. Niveles de descripción de un computador. 3. Estructura básica de un computador convencional. 4. Evolución histórica: tecnología y arquitectura. 5. Lenguajes de descripción hardware.

1. Objetivos de la asignatura

La arquitectura de un computador está constituida por el conjunto de funcionalidades disponibles para un programador que utiliza el lenguaje máquina, básicamente, el repertorio de instrucciones y los elementos de memoria referenciados desde él, es decir, los registros generales y la memoria principal. Las funcionalidades de una arquitectura se pueden conseguir con diferentes organizaciones internas o estructuras, diferenciándose unas de otras fundamentalmente en los parámetros de rendimiento y el coste. Finalmente, la estructura de un computador se puede implementar con diferentes tecnologías, siendo nuevamente el coste y el rendimiento los elementos diferenciales. Arquitectura, estructura y tecnología constituyen, pues, tres niveles de estudio del hardware de un computador.

En esta asignatura abordaremos el estudio de la organización o estructura interna de un computador. Para ello la materia la dividiremos en cuatro módulos. En el primero realizaremos una introducción general a la estructura de computadores. En el segundo estudiaremos la arquitectura del repertorio de instrucciones (ISA), arquitectura que define la interfaz hardware-software de la máquina. En el tercero veremos toda la jerarquía de memoria de una máquina y su gestión. Finalmente, en el cuarto estudiaremos las unidades de entrada/salida, los periféricos y los buses de comunicación. El estudio de la unidad aritmético-lógica y la unidad de control se aborda en la asignatura Ampliación de Estructura de Computadores. Para situar con mayor precisión el objeto de estudio de esta asignatura analizaremos en el apartado siguiente los diferentes niveles de descripción que se suelen contemplar en el estudio de un computador digital. 2. Niveles de descripción de un computador La estrategia que habitualmente se utiliza para abordar el estudio de los sistemas complejos consiste en especificarlos a diferentes niveles de abstracción. Cada nivel se caracteriza por:

A) Unos elementos de entrada, es decir, disponibles para el diseño en este nivel, y que proceden del nivel inmediato inferior.

B) Unos elementos de salida, es decir, objetivos del diseño en este nivel, y destinados al

nivel inmediato superior. C) Una metodología de análisis y síntesis de los elementos de salida en términos de los de

entrada. Con esta estrategia, la complejidad del sistema queda dividida, acotada y organizada en las

complejidades parciales de cada nivel, dentro de cuyos límites se puede aplicar una metodología propia de estudio.

Al computador digital como sistema artificial complejo se le ha aplicado esta estrategia. En nuestro caso consideraremos los siguientes niveles de abstracción dentro del estudio de un

Page 2: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

computador digital:

Estructura de Computadores

ARQUITECTURA

SOFTWARE BASICO (S.O.)

LENGUAJES DE ALTO NIVEL

ALGORITMOS

APLICACIONES

TRANFERENCI DE REGISTROS

ELECTRONICO

FISICO

LOGICO

Cada nivel se corresponde con la visión que tiene del sistema un tipo determinado de

usuario, y en cada uno podemos considerar dos procesos de estudio diferentes, el análisis y la síntesis. El análisis parte de la implementación del sistema a un cierto nivel en términos de elementos básicos del nivel inferior, y llega a determinar la función del mismo, es decir, su especificación. El sentido de la síntesis es el opuesto, parte de la especificación de un sistema y obtiene su implementación en función de los elementos básicos del nivel inferior. En la siguiente figura hemos representado gráficamente esta relación:

ESPECIFICACION IMPLEMENTACION

Análisis

Síntesis

Ejemplo:

Especificación Implementación

Sín tesisa

bSumador

a+b

arrast rea

b

a+b

ar rast re

a b a+b a r ra st re

0 0 0 00 1 1 01 0 1 01 1 0 1

Análisis

Page 3: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

Comentaremos en los subapartados siguientes cada uno de estos niveles. Nivel Físico En el nivel físico se manipulan como elementos de entrada las formas geométricas que se corresponden con las máscaras de difusión utilizadas en el proceso de fabricación de los circuitos integrados del computador. Determinadas disposiciones de estas formas representan dispositivos electrónicos concretos, tales como transistores, resistencias, etc., que son los elementos de salida del nivel físico. En este nivel se suele utilizar como herramienta de estudio software de manipulación gráfica con restricciones.

OUTIN

DD

VSS

Fís ico (s i lic io)

Nivel Electrónico En este nivel los elementos de salida, es decir, los biestables y las puertas lógicas, se obtiene a partir de dispositivos electrónicos (resistencias, transistores, etc.) conectados según una determinada topología. Como metodología de estudio (análisis y síntesis) en este nivel se utilizan técnicas cuantitativas de análisis en el plano eléctrico-temporal, fundamentalmente ecuaciones algebraicas y diferenciales.

OUTIN

VDD

VSS

Circu ito e léc trico

Nivel Lógico Los elementos de entrada a este nivel son los biestables y las puertas lógicas, y los de salida son módulos combinacionales y secuenciales tales como multiplexores, codificadores, sumadores, registros, contadores, etc. Este nivel de estudio dispone de sus propias técnicas de análisis y síntesis. El comportamiento de un circuito combinacional se representa con una función lógica que admite una expresión algebraica manipulable simbólicamente dentro de un formalismo matemático: el álgebra de conmutación (un álgebra de Boole). Para los circuitos secuenciales se utiliza la teoría de las máquinas de estados finitos.

Page 4: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

S

R

Q

NQ

S

R

Q

NQ

Circu ito lóg ico

Transferencia de Registros (RT) Los elementos de entrada al nivel RT son registros, módulos combinacionales y elementos de interconexión (buses y/o multiplexores). Los primeros mantienen el estado del sistema, los segundos definen las transformaciones elementales del estado, y los terceros permiten el intercambio de información entre los dos primeros. Los elementos de salida son el conjunto de transferencias elementales posibles en la ruta de datos construida con los tres tipos de elementos de entrada. Al contrario de lo que ocurría en los dos niveles anteriores, el nivel RT no dispone de una herramienta propia de análisis y síntesis, aunque sí es posible utilizar los modernos lenguajes de descripción hardware (por ejemplo VHDL) como instrumentos de expresión precisa y estándar a este nivel.

bus

bus

Transferencia de registros

MAR RI

RMICAUX RMIC

ROM

DE CONTROL

SECUENCIADOR

Arquitectura (lenguaje máquina) Este es el nivel que separa el hardware del software. Los elementos básicos de entrada son las transferencias y transformaciones posibles de información en la ruta de datos de un computador. Con ellos se construyen las instrucciones máquina y su método de secuenciamiento, es decir, lo que se denomina un lenguaje máquina. Lo más significativo de este nivel es que con él comienzan los niveles propiamente simbólicos, es decir, niveles cuyos componentes básicos no son objetos físicos, sino símbolos relacionados por un lenguaje, el instrumento por excelencia del conocimiento simbólico. El nivel de lenguaje máquina suele ser el primer nivel al que tiene acceso el usuario de un computador, salvo si la máquina es microprogramable, en cuyo caso dispone de un nivel intermedio que permite modificar el repertorio de instrucciones. Normalmente, el usuario no utiliza directamente el lenguaje máquina, sino una representación simbólica del mismo conocida como lenguaje ensamblador, que ofrece algunas prestaciones más que el puro lenguaje máquina, como el uso de macros y la definición simbólica de constantes y posiciones de memoria. Este nivel queda definido por 1) el repertorio de instrucciones, con sus formatos, tipos de direccionamiento, modos de secuenciamiento y representación de datos, y 2) la memoria y el conjunto de registros visibles por el programador. En la actualidad cabe distinguir dos planteamientos diferentes a la hora de definir el nivel máquina de un computador.

Page 5: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Mem oria R egistros R epertorio de instrucciones

LDR Ri, Dj STR Ri, Dj ADD Ri, Rj

En primer lugar está el planteamiento CISC (Complex Instruction Set Computers) que define un repertorio de instrucciones bastante complejo y numeroso, con muchos tipos de direccionamiento y muchos modos de control, pretendiendo reducir la distancia semántica que lo separa de los lenguajes de alto nivel, y facilitar así el diseño del compilador. La microprogramación es la técnica de diseño de la unidad de control con la flexibilidad suficiente para facilitar la implementación de las máquinas CISC. Un caso extremo de proximidad al lenguaje de alto nivel lo tenemos en arquitecturas avanzadas que tienen este tipo de lenguaje como su lenguaje máquina. En segundo lugar tenemos el planteamiento RISC (Reduced Instruction Set Computer), que simplifica la complejidad y el número de instrucciones máquina, dejándolo reducido a un conjunto pequeño y rápido que cubre un porcentaje muy elevado del peso computacional de los programas. Los compiladores para este tipo de arquitecturas asumen la responsabilidad de utilizar eficientemente unas instrucciones con poco contenido semántico pero elevada velocidad de ejecución. Dos aspectos importantes del nivel máquina son también la gestión de memoria y la entrada/salida. Sin embargo, en los computadores actuales estos recursos los utiliza el programa del usuario a través del sistema operativo. Software básico (sistema operativo) El Sistema Operativo (SO) no constituye un nivel del mismo tipo que los demás, por ejemplo, el lenguaje máquina o el lenguaje de alto nivel. En realidad se trata de un gestor de determinados recursos del nivel máquina que por la frecuencia y complejidad de uso resulta más eficiente utilizarlos agrupados en una especie de máquina virtual que es el SO. En los primeros computadores las funciones del SO eran escasas, limitadas básicamente a la carga del programa y a la entrada salida. Sin embargo, las competencias de este sistema han ido aumentando con la complejidad y sofisticación de las máquinas modernas, que funcionan en entornos multiusuario y multitarea y que requieren una gestión de todos los recursos de la máquina: la CPU, la jerarquía de memoria, el tratamiento de las excepciones, los mecanismos de protección, etc. El protagonismo que el SO tiene en un computador actual hace que cuando se diseña la arquitectura de un procesador se tengan muy en cuenta las funciones de este sistema. Lenguajes de alto nivel En este nivel se utilizan lenguajes de programación con una sintaxis y una semántica más complejas que las del lenguaje ensamblador. Estos lenguajes pretenden facilitar el trabajo del programador aportando recursos expresivos más próximos a los problemas que se van a resolver. En este sentido cabe diferenciar dos grandes grupos. Un primer grupo, denominado de estilo imperativo como Pascal, Fortran, etc., que presentan una semántica operacional que refleja directamente el funcionamiento de la máquina Von Neumann, es decir, que obligan al programador a expresar la secuencia de órdenes cuya ejecución resuelve el problema en cuestión. El segundo grupo lo formarían los lenguajes de estilo declarativo, como Prolog, Miranda o Lisp (puro), que disponen de un modelo computacional diferente (aunque equivalente) al de la máquina Von Neumann. En este caso el programador tan solo tiene que declarar las relaciones lógicas o funcionales de los elementos que intervienen en la especificación del problema a resolver.

Page 6: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

Este nivel requiere un proceso de traducción al nivel máquina que es realizado por un programa denominado compilador. Se trata de un programa que toma como dato de entrada un programa fuente escrito en un lenguaje de alto nivel, y produce como salida un programa objeto escrito en lenguaje máquina con una semántica equivalente (igual significado).

Nivel L.M. CMP A, B Bope L1 <sentencias2> BRA L2

L1 <sentencias1> L2 ......

Nivel L.A.N. IF A ope B THEN <sentencias1> ELSE <sentencias2>

Algoritmos En el nivel algorítmico se expresa la resolución de un problema mediante un conjunto de reglas aplicadas de forma sistemática y ordenada, es decir, mediante un algoritmo. Los procedimientos que define un algoritmo son independientes de cualquier lenguaje de programación y de cualquier máquina particular. Aplicaciones Las aplicaciones se corresponden con dominios de actividad que pueden automatizarse con el uso de un computador digital. Del análisis del dominio se extraen unas especificaciones funcionales que son expresadas mediante algoritmos. Codificados estos algoritmos en un lenguaje de programación y previa compilación, se ejecutan en la máquina. • Inconvenientes de la división entre niveles El establecimiento de niveles de abstracción en el estudio de un computador hace posible acotar su complejidad al utilizar metodologías de análisis y síntesis propias en cada nivel, permitiendo que dentro de un nivel el usuario pueda abstraerse de lo que ocurre en los demás niveles. Este planteamiento que facilita sin duda el estudio del computador presenta sin embargo algunas dificultades cuando se contempla el problema de la optimización. En efecto, a la hora de implementar una especificación no sólo deben cumplirse todos los requerimientos funcionales de la misma, además se deben optimizar ciertas funciones de calidad que generalmente tienen que ver con la velocidad (maximización) y el costo (minimización). En efecto, existen ocasiones en las que contemplar tan solo los niveles frontera de un nivel en el que se plantea un problema de diseño puede dar lugar a la imposibilidad de optimizar la implementación. A título de ejemplo citaremos dos casos en los que se presenta esta situación. El primero entre los niveles eléctrico y lógico, y el segundo entre los niveles lenguajes de alto nivel y arquitectura (repertorio de instrucciones)

1) Niveles eléctrico <--> lógico Si nos planteamos el diseño de un multiplexor con conmutadores bidireccionales (tecnología NMOS estática) respetando los niveles de diseño, obtendríamos en primer lugar el esquema lógico (con puertas) del multiplexor, y después expresaríamos cada puerta lógica en términos de los conmutadores bidireccionales.

Page 7: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

Z

X3

X2

X1

X0

MUX

X3

X2

X1

X0

1

1

El diseño resultante es más costoso (mayor número de conmutadores) que el que podemos

obtener si planteamos el diseño directamente con conmutadores:

S1 S0

S1 S0

S1 S0

S1 S0 1

X3

X2

X1

X0

2) Niveles lenguaje de alto nivel <--> arquitectura

En este caso un compilador, para optimizar el código máquina que genera (mayor velocidad),

Page 8: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

tiene en cuenta no sólo la arquitectura (repertorio de instrucciones) sino la forma en que se ejecutan estas instrucciones (estructura) en la ruta de datos de la máquina. Este hecho puede dar lugar a que el orden de las instrucciones máquina generadas no sea el orden lógico que utilizaría un programador de lenguaje máquina que ignorase los detalles estructurales de la arquitectura. Esta situación viene producida fundamentalmente por la segmentación y paralelización de las instrucciones dentro de la máquina y se estudiará con detalle en las asignaturas de Ampliación de Estructura de Computadores y Arquitectura e Ingeniería de Computadores. 3. Estructura básica de un computador convencional La estructura básica de un computador actual sigue siendo la original de von Neumann, una máquina secuencial que ejecuta datos escalares y que hemos representado en la siguiente figura:

CONTROL

UAL REG.

ENTRADA SALIDA

MEMORIA

P ROCESADOR

La memoria almacena las instrucciones del programa, los datos iniciales, los resultados parciales y los finales. Se accede de forma directa (RAM) a cualquier posición para realizar operaciones de lectura o escritura. El procesador es la unidad encargada de leer y ejecutar las instrucciones. Para ello dispone de una ruta de datos constituida por un conjunto de registros (REG.), una unidad aritmético-lógica (UAL), y unos buses de comunicación; y una unidad de control, que es la encargada de generar las señales que gobiernan todos los dispositivos. La entrada y salida constituyen la unidad para la transferencia de información con el mundo exterior. Funcionalmente la máquina tiene las siguientes características: 1) Organización lineal de la memoria 2) Palabra de longitud fija. 3) Espacio único de direcciones. 4) Memoria única para datos e instrucciones sin diferenciar entre ambos. 5) Ejecución secuencial de las instrucciones salvo las de ruptura de secuencia A esta organización básica de von Neumann se han ido incorporando algunas aportaciones significativas entre las que destacaremos las siguientes: a) Sistema de interrupciones, que permite la interrupción de un programa en ejecución producida por una señal externa a la máquina. El sistema de interrupciones permite una mejor sincronización de la Entrad/Salida con el exterior y la posibilidad de compartir la CPU por más de un programa

Page 9: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

señal de interrupción

línea de interrupción

Programa principalI1I2..

.IiIi+1

.

..In

Rutina de tratamientoi1i2..

im

b) Sistema de memoria cache, que permite disminuir el tiempo de acceso a la memoria principal(Mp) ubicando una memoria de menor tamaño y mayor velocidad (memoria cache, Mc) entre la CPU y Mp. El sistema explota la localidad de referencia de los programas haciendo que Mc contenga en cada momento los bloques de Mp más referenciados, y evitando así que la CPU tenga que acceder a Mp:

CPU

Memoria cache(Mc)

Memmoria principal(Mp)

palbras

bloques

c) Sistema de memoria virtual, que permite la ejecución de programas cuyo tamaño supere el de la Mp. Para ello el sistema mantiene en Mp, de forma transparente para el programador, tan sólo el conjunto de páginas activas (con mayor probabilidad de ser referenciadas) del programa en ejecución. Las restantes páginas que completan el programa residen en la memoria secundaria, hasta que son referenciadas, en cuyo caso el sistema las activa llevándolas a Mp:

Page 10: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Memoria principal(Mp)

páginas

Memoria secundaria(Ms)

4. Evolución histórica: tecnología, estructura y arquitectura La velocidad de procesamiento de información de un computador está determinada básicamente por tres elementos: arquitectura, organización (o estructura) y tecnología. Podemos analizar la influencia de estos elementos en la velocidad de procesamiento de información de un computador teniendo en cuenta que el tiempo T de ejecución de un programa se puede expresar como el producto de tres factores: el número de instrucciones del programa (N), el número medio de ciclos por instrucción (CPI), y el tiempo de ciclo (Tc), como hemos representado en la siguiente figura:

t iempo

I1

I2

I3

N inst rucciones.

Tc

1 ciclo

3 ciclos

2 ciclos

CP I (n º de ciclos medio/inst rucción)

Programa

T

Page 11: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Arquitectura del computador Compilador

Arquitectura del computadorOrganización del computador

Organización del computador Tecnología

T = tiempo de ejecución del programa N = número de instrucciones del programa CPI = número medio de ciclos por instrucción Tc = tiempo de ciclo

T = N * CPI * Tc

Es decir, mientras la arquitectura influye a través del número medio de ciclos por instrucción y del

número total de instrucciones, la organización lo hace a través de éste último y el tiempo de ciclo, mientras que la tecnología lo hace casi exclusivamente a través del tiempo de ciclo (o su inversa, la frecuencia de reloj del procesador). El tiempo de ciclo viene determinado por los tres niveles tecnológicos: físico, electrónico, lógico y trasferencia de registros.

La tecnología ha experimentado una transformación continua durante las últimas décadas. Desde la aparición del primer computador comercial, la industria informática ha pasado por cuatro generaciones de computadores, diferenciadas básicamente por la tecnología de los componentes básicos. Los relés y las válvulas de vacío de 1940 a 1950, los diodos y transistores discretos de 1950 a 1960, los circuitos integrados de pequeña y media escala de integración (SSI/MSI) de 1960 a 1970, y los circuitos integrados de alta y muy alta escala de integración (LSI y VLSI) desde 1970 en adelante. La disminución del tiempo de conmutación de los componentes electrónicos ha repercutido directamente en el aumento de velocidad de los computadores. También el aumento de la capacidad de integración y de encapsulado han repercutido en la misma dirección. Los cambios tecnológicos alteran constantemente las relaciones de compromiso tecnología/organización/arquitectura, obligando a la reconsideración de viejas ideas ante un nuevo avance tecnológico. Aumento de rendimiento a través de la organización y arquitectura A lo largo de las últimas cuatro décadas la organización y arquitectura de computadores ha experimentado un desarrollo gradual, no traumático, que ha ido decantando aquellas características responsables de las mejoras de rendimiento. Paralelismo y Segmentación Las organizaciones y arquitecturas paralelas consiguen que en ciertos instantes de tiempo el computador procese simultáneamente más de una operación básica. La simultaneidad temporal se consigue fundamentalmente con dos técnicas: el paralelismo y la segmentación. La primera ejecuta simultáneamente varias operaciones independientes replicando el número de operadores hardware. La segunda descompone el operador y la operación correspondiente en etapas secuenciales y autónomas, de manera que simultáneamente se puedan ejecutar etapas diferentes de varias operaciones. Ambas técnicas se consideran como dos formas del paralelismo: el paralelismo espacial o replicación la primera, y el paralelismo temporal la segunda. La idea básica de la segmentación estaba ya latente en la propuesta de von Neumann para construir el primer computador de programa almacenado. Al hablar sobre las técnicas de entrada/salida, sugería la conveniencia de disponer un buffer que permitiese el solapamiento

Page 12: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

de la ejecución del programa con las operaciones de E/S, es decir, una forma primaria de procesamiento segmentado. Procesadores Segmentados Se trata de arquitecturas monoprocesador que operan con una organización interna en la que se segmenta la ejecución de las instrucciones a fin de iniciar una (y finalizar otra) cada ciclo de operación. Sin embargo este objetivo límite difícilmente llega a conseguirse debido a los riesgos estructurales, las dependencias de datos, las bifurcaciones y las excepciones. Para reducir al máximo el efecto de tales ineficiencias se utilizan técnicas software como la reordenación estática de instrucciones, el renombramiento de registros, y los saltos retardados; y técnicas hardware como el adelantamiento (forwarding), la reordenación dinámica de instrucciones y la predicción dinámica de saltos.

Búsqueda Decodificación Ejecución Escr itura

UnidadBu

UnidadEs

UnidadEj

UnidadDe

Regist ros

1 2 3 4 5 6 7 8ciclos

Bu1

Ej2Bu2 Es2De2

Es1Ej1De1

Bu3 De3 Ej3 Es3

Inst rucción 1

Inst rucción 2

Inst rucción 3

Inst rucción 4Bu4 De4 Ej4 Es4

Procesadores Superescalares Un procesador superescalar de grado m emite m instrucciones por ciclo, debiendo ser también m el paralelismo a nivel de instrucción para explotarlo completamente. En estos procesadores los recursos para la decodificación y ejecución de instrucciones se incrementan hasta el punto de disponer de m cauces segmentados operando concurrentemente, si bien en algunas etapas los cauces pueden compartir algunas unidades funcionales. En general, los conflictos por dependencias de datos, de control y estructurales de los procesadores escalares segmentados siguen existiendo en los superescalares con mayor complejidad. Las máquinas superescalares proporcionan compatibilidad a nivel del código objeto con las máquinas escalares, detectando el paralelismo de las instrucciones en tiempo de ejecución. Normalmente, se dividen las instrucciones máquina en categorías, y como mucho una instrucción de cada categoría pueden emitirse simultáneamente.

Page 13: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

vía 1

vía 2

vía 3

Unidad de ejecución 2

Unidad de ejecución 3

Unidad de ejecución 1

Unidadde

Emisiónde

Inst rucciones

Unidadde

Búsqueda

Procesadores VLIW En un procesador VLIW (Very Long Instruction Word) una única instrucción especifica más de una operación concurrente, reduciéndose el número de instrucciones por programa en comparación con el caso escalar. Las organizaciones VLIW extendieron y formalizaron el concepto de microcodificación horizontal que se venia utilizando años atrás para el diseño de procesadores de propósito especial dedicados a tareas intensivas en cálculo, tales como el procesamiento de señales digitales. Utilizando técnicas avanzadas de compilación se puede extraer el paralelismo de grano fino de un amplio rango de aplicaciones científicas y de propósito general. En estos procesadores los conflictos por dependencias de datos y estructurales se resuelven antes de la ejecución, y son explícitamente controlados por las instrucciones. El hardware adicional se dedica a caminos de datos paralelos y más unidades funcionales, en lugar de a lógica de control y sincronización.

Unidad de ejecución

Unidad de ejecución 3

Unidad de ejecución 1DEC

DEC

DEC

Inst rucción la rga

Regist ros

Procesadores Vectoriales Los procesadores vectoriales disponen de operaciones que trabajan sobre vectores de números. Por ejemplo, una operación vectorial puede sumar dos vectores de 64 elementos en punto flotante dando como resultado otro vector de 64 elementos. La instrucción vectorial es equivalente a un bucle completo en el que se calcula un elemento del resultado en cada iteración, se actualiza el índice y se bifurca al comienzo. Una simple instrucción vectorial especifica, pues, una gran cantidad de trabajo, por lo que se reduce la anchura de banda necesaria para su lectura en comparación con la de las instrucciones escalares equivalentes. Además, el acceso a los datos tiene un patrón conocido. Desde el punto de vista arquitectónico son procesadores segmentados con instrucciones máquina vectoriales. Al no existir dependencias entre operaciones de una instrucción vectorial, se explota eficientemente la segmentación en las unidades aritméticas. Pero para conseguir el

Page 14: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

rendimiento máximo de estas arquitecturas hay que alimentar a las unidades funcionales segmentadas con nuevos datos en cada ciclo de reloj, lo que requiere un gran ancho de banda con la memoria principal.

Memor ia

Regist ros Unidad a r itmét ica segmentada

Regist ros

Regist ros Unidad a r itmét ica segmentada

Unidad a r itmét ica segmentada

Multiprocesadores de Memoria Compartida Se trata de arquitecturas compuestas por un conjunto de procesadores que acceden a una única memoria común a través de una red de interconexión. Utilizan memorias cache locales para las que hay que resolver el problema de su coherencia con respecto a la memoria principal y entre sí. Las soluciones que se adoptan tienen un mayor o menor soporte hardware y dependen mucho de la red de interconexión. Otro problema que plantean estas arquitecturas es el de la sincronización de los diferentes procesadores cuando participan de una tarea común. Para ello es necesario disponer del soporte hardware en forma de instrucciones máquina del tipo TEST&SET, TEST&AND, etc. que permiten implementar secciones críticas y otros mecanismos de sincronización a nivel del sistema operativo.

Red de in terconexión(bus, red mult ietapa , crossbar )

ProcesadorP1

ProcesadorP2

ProcesadorPn

Memor ia común compar t ida

Multicomputadores Son multiprocesadores de memoria distribuida donde cada procesador tiene un espacio privado de direcciones. Se comunican y sincronizan mediante paso de mensajes a través de una red de interconexión. Las topologías de red más utilizadas son la malla y el hipercubo.

Page 15: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

Red de in terconexión está t ica

ProcesadorP1

Memor iaM1

ProcesadorPn

Memor iaMn

5. Lenguajes de descripción hardware.

Los lenguajes de descripción hardware son lenguajes de alto nivel con una sintaxis similar a los de programación (C, ADA, Pascal, Modula, etc.) y una semántica que permite el modelado y simulación de los dispositivos hardware a diferentes niveles de abstracción. Los primeros lenguajes de este tipo sólo pretendían servir de vehículo de comunicación del diseño. Se trataba de formalismos de especificación de los dispositivos hardware desarrollados por instituciones universitarias o por industrias electrónicas que alcanzaron escasa difusión. Pero los actuales lenguajes han adquirido un alto grado de estandarización y han adoptado los nuevos conceptos de la ingeniería software, permitiendo la verificación de la especificación del diseño mediante simulación. Se utilizan como vehículo de entrada a muchas herramientas de diseño automático. Revisaremos brevemente algunos de estos lenguajes

5.1. Lenguajes precursores

CDL (Computer Design Language) fue desarrollado por Yaohan Chu a comienzo de los años 60 bajo el principio de separación de la componente lógica y electrónica de un computador digital. CDL refleja directamente el hardware y sus operaciones, es decir, existe una correspondencia uno-a-uno entre los objetos y operaciones hardware (registros, RAMs, relojes, suma, cuenta, etc.) y las construcciones del lenguaje. La primera versión del simulador CDL para IBM 7090 estuvo disponible en 1968, y la versión tercera para Univac pocos años más tarde. Se utilizó en universidades y en la industria del radar y aeronáutica.

DDL (Digital systems Design Language) se desarrolló a mediados de los 60 en la Universidad de Wisconsin con varios objetivos: precisión y concisión para facilitar la especificación de los diseños, potencia suficiente para modelar sistemas complejos, independencia respecto a cualquier tecnología o procedimiento de diseño, capacidad de especificación a diferentes niveles de abstracción y, finalmente, una sintaxis y una semántica que permitieran la documentación jerárquica del diseño.

AHPL (A Hardware Programming Language) fue propuesto por F.J. Hill y G.R. Peterson unos meses más tarde que el CDL y DDL, y apareció publicado por primera vez en 1973 en la edición original de Digital Systems: Hardware Organization and Design. Los autores concibieron AHPL como un lenguaje de síntesis: todo dispositivo síncrono que pudiese ser implementado en hardware debía ser expresable en AHPL de manera tal que se pudiese traducir a una realización física siguiendo un conjunto simple de reglas. En opinión de uno de sus autores, F.J. Hill, que participó como miembro del grupo de trabajo que formuló las especificaciones originales para VHDL, la existencia de AHPL favoreció la incorporación de mecanismos para permitir el proceso de síntesis en VHDL.

Page 16: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

ISPS (Instruction Set Processor Specifications) con este lenguaje se dió un paso importante hacia la formalización del proceso de diseño a niveles de comportamiento. Además de la simulación y la síntesis, ISPS se utilizó en la generación de software, la verificación de programas y la evaluación de arquitecturas. ISPS favoreció los aspectos de comportamiento sobre los estructurales pero sin eliminarlos completamente.

TI-HDL (Texas Instruments-HDL) es un lenguaje de descripción jerárquica del diseño, estructurado en bloques y basado en texto, que se ha utilizado principalmente en el diseño de circuitos integrados. Procede de antiguos lenguajes usados allá por 1968, concretamente el TIBSD (TI Boolean System Description), desarrollado como lenguaje de entrada de datos para un sistema CAD de circuitos impresos, y Fusim (Functional Simulator), utilizado para describir modelos de alto nivel de microprocesadores y para generar prototipos de patrones de tests.

5.2. Lenguajes actuales Verilog es un lenguaje de descripción hardware diseñado por la compañía Cadence Design Systems Inc., que se ha venido utilizando como lenguaje del simulador digital Cadence. El uso de Verilog está promovido por la Open Verilog International (OVI), que publicó en octubre del 91 la primera versión del Hardware Description Language Reference Manual. En Verilog la unidad de diseño fundamental es el módulo, que describe un componente hardware con su interfaz y contenido. Desde un punto de vista funcional, un módulo Verilog contiene la información de una entidad y su correspondiente arquitectura VHDL. Verilog no proporciona compilación independiente de módulos: todos los módulos relacionados con el mismo diseño y simulación deben estar en el mismo archivo. UDL/I (Unified Design Language for Integrated circuits) es un lenguaje de descripción hardware que se viene desarrollando desde 1989 por la Japan Electronic Industry Development Association, dependiente de importantes compañías japonesas tales como NTT. Una de las características de UDL/I es que pretende ser específico para modelar circuitos integrados. La única unidad de diseño existente en UDL/I es la descripción de diseño, que comprende varias subentidades denominadas descripciones de módulos. Una descripción de diseño contiene el modelo de un circuito integrado que consta de varias subunidades o módulos, cada uno de los cuales está especificado por una descripción de módulo. VHDL (VHSIC Hardware Description Language) es un lenguaje impulsado por el Departamento de Defensa de los Estados Unidos dentro del programa VHSIC (Very High Speed Integrated Circuits) y estandarizado por IEEE Computer Society. Con VHDL se puede estudiar un sistema digital a diferentes niveles de abstracción dentro de un único lenguaje de programación, acelerando considerablemente las diferentes fases diseño y proporcionando un mejor conocimiento del mismo cuando se aborda la fase de implementación física. VHDL es un lenguaje con una semántica orientada a la simulación. Por ello, su principal dominio de aplicación es el modelado de dispositivos hardware para comprobar su corrección funcional. Sin embargo, como ilustra la siguiente figura sus áreas de aplicación son cada vez más numerosas, y hoy día se utiliza en la síntesis automática, la diagnosis de fallos, la verificación formal, el modelado de rendimiento y la documentación

Page 17: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

ENTITY circu ito IS PORT(i1,i2 : IN bit ; sum, car ry : OUT);END circu ito;

ARCHITECTURE estructu ra OF circu ito BEGIN PROCESS.................. ENDEND

Diagnos is de

CLK

X

Z

Sim u lac ió

suma

carry

i1

i2

Sín te s i

Ve rificac ió

si

¿cor recto

Form a

Mode ladoRe ndim ie n t

Docum e ntac i

suma

carry

i1

i2

-

VHDL

Circu itosemisumadoComponen tes: puer ta AND puer ta OR puer ta XOR........................................................

La síntesis automática tiene como objetivo la generación de dispositivos digitales a partir de una

especificación inicial expresada en un lenguaje de descripción hardware. VHDL, al ser un lenguaje con una semántica poco formal, en el que se pueden mezclar diferentes estilos de descripción, no es el más apropiado para utilizar como entrada en las herramientas de síntesis. Sin embargo, dado su status de estándar IEEE y su amplia aceptación en la industria electrónica, resulta muy conveniente no romper el ciclo de diseño saliendo de VHDL en la fase de síntesis. Por ello, lo que se realiza habitualmente en este terreno es definir subconjuntos sintetizables de VHDL. En este sentido cabe distinguir dos grandes subconjuntos. Uno que engloba las construcciones secuenciales de VHDL, utilizado para la síntesis de alto nivel, y otro que parte de unas construcciones concurrentes de VHDL que permiten descripciones de dispositivos a nivel de transferencia de registros (RTL), utilizado para la síntesis de bajo nivel.

Page 18: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

La diagnosis de fallos en circuitos digitales se puede plantear a partir de las descripciones VHDL

de los mismos. En efecto, en lugar de identificar la parte de circuito que falla, podemos localizar la parte de descripción VHDL cuya implementación hardware tiene un fallo físico y está causando el fallo de comportamiento observado. En principio esta diagnosis es similar a la que se realiza a nivel de puertas, pero en este caso el nivel de descripción hardware puede ser más alto y consecuentemente el modelo de fallos será diferente.

La verificación formal de un diseño consiste en probar que para todos los estados iniciales

aceptables y para todas las entradas posibles, la implementación del diseño cumple su especificación. Las otras dos alternativas para verificar un diseño, la síntesis automática y la simulación funcional, pueden resultar incompletas. En efecto, los diseños producidos por síntesis automática son correctos por construcción si los componentes primitivos están completamente verificados y si las transformaciones realizadas en el proceso de síntesis son así mismo correctas. Sin embargo, probar la corrección formal de un método de síntesis implica probar la corrección formal del método en sí y del software que lo implementa, tarea que puede resultar impracticable. Por otra parte, la verificación funcional por simulación exhaustiva también es impracticable a partir de una complejidad media en el diseño. La verificación formal requiere un modelo matemático para representar las propiedades bajo estudio y un cálculo para realizar computación simbólica sobre el modelo. La lógica es la rama de las matemáticas más ampliamente utilizada en la verificación formal, incluyendo la lógica de predicados de primer orden, la lógica de orden superior y la lógica temporal. Al no existir una semántica formal para VHDL los sistemas de verificación formal, al igual que los sistemas de síntesis, se limitan a subconjuntos del lenguaje.

Los modelos de rendimiento constituyen el nivel más alto de abstracción de los sistemas

electrónicos. Estos modelos se utilizan principalmente para estudiar la capacidad global de procesamiento de información de un sistema en las primeras etapas del proceso de diseño. El objetivo es identificar las principales unidades funcionales y definir su forma de actuación en la transformación de los datos de entrada en datos de salida. A este nivel de conceptualización el diseñador ve una unidad funcional como algo que realiza una cierta tarea en un cierto tiempo, sin detalles específicos sobre la forma de realizar la tarea. En realidad, puede que estos detalles no se conozcan aún en esta fase del diseño. Debido a esta ocultación de detalles sobre los valores de los datos y sus transformaciones específicas se dice que los datos son no interpretados, y para resaltar este hecho a los modelos de rendimiento se les denomina a veces modelos no interpretados. VHDL, al disponer de recursos expresivos con alto nivel de abstracción, facilita la confección de modelos de rendimiento basados en redes de Petri extendidas y colas estocásticas.

Finalmente, la documentación es una de las tareas más importantes en todo proceso de diseño, y

muy particularmente cuando el sistema tiene el grado de complejidad de los circuitos actuales. En estos casos se hace indispensable disponer de lenguajes con una elevada capacidad de abstracción y ampliamente aceptados por los diseñadores, como ocurre en la actualidad con VHDL.

Como muestra la siguiente figura, VHDL dispone de recursos expresivos para cubrir totalmente la descripción y el modelado de dispositivos digitales en los niveles circuito lógico, transferencia de registros y chip. Los niveles de sistema y circuito eléctrico sólo se cubren parcialmente. Pero lo más interesante del lenguaje en este aspecto es que permite mezclar en una misma descripción diferentes niveles. Esto, unido al modelo de concurrencia que permite la construcción de modelos estructurales en los que los componentes básicos pueden a su vez ser descritos con modelos estructurales, hace posible el establecimiento de una descomposición estructural de la jerarquía de diseño.

Page 19: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

SOFTWARE

ARQUITECTURA

TRANSFERENCIA DE REGISTROS

LÓGICO

ELECTRICO

FÍSICOÁ

VHDL

Page 20: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 2: Formato de las instrucciones y modos de direccionamiento

1. Formato de las instrucciones 2. Propiedades generales del direccionamiento 3. Modos de direccionamiento. 4. Soporte de los modos de direccionamiento a los lenguajes de alto nivel

Las instrucciones máquina son las acciones elementales que puede ejecutar un computador. Una acción compleja deberá codificarse como una secuencia de instrucciones máquina en lo que se denomina un programa. La arquitectura de un procesador entendida como el conjunto de recursos operativos disponibles por un programador a nivel de lenguaje máquina queda definida por el repertorio de instrucciones (ISA: Instruction Set Architecture). En general, una instrucción codifica una operación básica que el computador realiza sobre unos datos ubicados en la memoria o en los registros de la máquina y a los que accede utilizando un modo de direccionamiento. Por consiguiente, la arquitectura ISA de un procesador viene determinada por los siguientes factores:

a) Tipos de datos y formatos que pueden manejar las instrucciones: naturales, enteros, reales,

caracteres, etc. b) Modos de direccionamiento de los datos ubicados en la memoria: inmediato, directo,

indirecto, etc. Estos dos factores son determinantes para la implementación eficiente de las estructuras complejas de datos de un lenguaje de alto nivel.

c) Conjunto básico de operaciones que se pueden realizar sobre los datos: suma, resta, etc. Propiedad de ortogonalidad Diremos que un repertorio es ortogonal cuando las instrucciones puedan combinar los elemento de los tres factores anteriores sin ninguna restricción. La ortogonalidad completa no se da en ningún repertorio de máquina real.

(MUL, real, indirecto)

tipo de direccionamiento

operaciones entero -- natural -- real --

ADD XOR SUB MUL| | | | |

.indirecto --

directo --

inmediato --

tipo de datos

1. Formato de las instrucciones Las informaciones relativas a los cuatro factores anteriores se codifican en cada una de las instrucciones siguiendo un formato preestablecido. El formato determinará la longitud en bits de las

Page 21: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

instrucciones y los campos que codifican el valor de los factores citados. En general una instrucción se compone de los siguientes campos:

• Código de operación (CO) • Operandos fuente (OP1, OP2,...) • Operando destino o Resultado (OPd) • Instrucción siguiente (IS)

CO OP1 OP2 .......... OPd IS

El CO determina la operación que se realiza sobre OP1,OP2,... El resultado se deja en OPd. Lo normal es que el número de operandos fuente de un repertorio no pase de 2. La dirección de la instrucción siguiente IS queda implícita en todas las instrucciones (se trata de la instrucción siguiente del programa) salvo en las instrucciones de ruptura condicional o incondicional de secuencia. 1.1 Diseño del repertorio de instrucciones. Los repertorios de instrucciones podemos clasificarlos atendiendo a los siguientes criterios:

A) Número de operandos explícitos por instrucción a) 3 operandos explícitos

CO OP1 (fuente 1) OP2 (fuente 2) OP3 (destino)

ejemplo: ADD B,C,A A B + C • Máxima flexibilidad • Ocupa mucha memoria si los operandos no están en registros b) 2 operndos explícitos

CO OP1 (fuente 1) OP2 (fuente

ejemplo: ADD B, C B B + C • Reduce el tamaño de la instrucción • Se pierde uno de los operandos c) 1 operando explícito

CO OP1 (fuente

ejemplo: ADD B Acumulador <Acumulador> + B • Supone que fuente 1 y destino es un registro predeterminado (acumulador) • Se pierde un operando fuente d) 0 operandos explícitos

CO

ejemplo: ADD cima de pila <cima de pila> + <cima de pila - 1>

Page 22: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

• Se trata de computadores que trabajan sobre una pila Ejemplo:

E = (A – B)*(C + D) 3 operandos 2 operandos 1 operando 0 operandos

ADD C, D, C SUB A, B, A MUL A, C, E

ADD C, D SUB A, B MUL A, C MOV C, E

LOAD A SUB B STORE A LOAD C ADD D MUL A STORE E

(PUSH) LOAD A (PUSH) LOAD B SUB (PUSH) LOAD D (PUSH) LOAD C ADD MUL (PULL) STORE E

B) Forma de almacenar operandos en la CPU

a) Arquitectura de pila (HP 3000/70) b) Arquitectura de acumulador (Motorola 6809) c) Arquitectura de registros de propósito general (IBM 360)

Ejemplo: código máquina en cada una de las tres alternativas correspondiente a la sentencia de asignación C := A + B

C = A + B Pila Acumulador Conjunto de registros PUSH A PUSH B ADD POP C

LOAD A ADD B STORE C

LOAD R1, A ADD R1, B STORE C, R1

Las arquitecturas de registros de propósito general se clasifican a su vez atendiendo al número máximo de operandos (2 ó 3) que pueden tener las instrucciones de la ALU y cuantos de ellos se pueden ubicar en memoria: (operandos - en memoria) ( 3 - 0 ) Arquitectura registro-registro (también llamada de carga-almacenamiento). Utilizan tres operandos totales y cero en memoria. Formato de longitud fija y codificación simple de las instrucciones que pueden ejecutarse en un número similar de ciclos. Facilitan un modelo simple de generación de código apara el compilador. SPARC, MIPS, PowerPC ( 2 - 1 ) Arquitectura registro-memoria. Utilizan dos operandos totales con uno ubicado en la memoria. Intel 80X86, Motorola 68000 ( 3 - 3 ) Arquitectura memoria-memoria. Utilizan tres operandos totales con la posibilidad de ser ubicados los tres en memoria. VAX

Códigos de operación de longitud fija y variable

Una máquina con un formato de instrucción que dedica n bits al CO permitirá n2 instrucciones diferentes, cada una de las cuales puede tener diferente número de operandos (0, 1, 2, 3, etc.). Los bits del campo

Page 23: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

OPERANDOS se pueden utilizar para extender el CO de aquellas instrucciones con menor número de operandos.

Ejemplo: Partimos de una máquina con instrucciones de longitud fija de 24 bits y consideraremos los siguientes supuestos:

1) La máquina dispone de 16 registros generales 4 4 16

CO R OP

En este caso se pueden codificar 16 instrucciones de 2 operandos: uno en registro y el otro en

memoria 2) Si queremos extender el CO se puede utilizar una de las 16 combinaciones del CO (quedarían 15 con 2 operandos), por ejemplo CO = 1111, dando la posibilidad de codificar 16 instrucciones de 1 operando en memoria. Si queremos seguir extendiendo el CO podemos utilizar CO = 1111 1111 (quedarían 15 con 1 operando) para definir instrucciones sin operandos (216 = 65.536) En la siguiente tabla se resume el proceso descrito. 0 0 0 0 0 0 0 1 . . . 1 1 1 0

R R . . . R

15 instrucciones de

2 operandos

(CO de 4 bits)

1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 . . . 1 1 1 1 1 1 1 0

OP OP . . . . . OP

15 instrucciones de

1 operando

(CO de 8 bits)

1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 . . . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

216 = 65.536

instrucciones de 0 operandos

(CO de 24 bits)

Otra alternativa: dedicar 2 bits para indicar si la instrucción tiene 0, 1 o 2 operandos:

2 2 4 16

L CO R OP

En este caso podemos codificar los siguientes grupos de instrucciones: L = 00 CO de 2 bits 4 instrucciones de 2 operandos L = 01 CO de 6 bits 64 instrucciones de 1 operando L = 10 CO de 22 bits 4.194.304 instrucciones de 0 operandos Optimización del CO variable en función de la frecuencia de las instrucciones. Una posibilidad a la hora de codificar las operaciones de un repertorio de instrucciones es utilizar algún criterio de óptimo. En este sentido tenemos dos alternativas: a) Frecuencia de aparición en el programa optimización de memoria b) Frecuencia de ejecución en el programa optimización del tráfico CPU-Memoria La alternativa b) es la más interesante en la actualidad, pues prima la velocidad de ejecución sobre

Page 24: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

la memoria .necesaria para almacenar el programa. Para optimizar el CO se puede utilizar la codificación de Huffman que veremos con el siguiente Ejemplo: Supongamos las siguientes frecuencias de ejecución de 7 tipos diferentes de instrucciones: Tipo de instrucciones Frecuencia de ejecución

ADD SUB MUL DIV STA LDA JMP

0.53 0.25 0.12 0.03 0.03 0.02 0.02

Con CO de longitud fija se necesitarían 3 bits. Para obtener el código de Huffman procedemos de la siguiente manera: 1) Se escriben en una columna las instrucciones y a su derecha su frecuencia de ejecución. Cada elemento de la columna será un nodos terminal del árbol de decodificación. 2) Se unen las dos frecuencias menores de la columna anterior con sendos arcos, obteniéndose un nuevo nodo cuyo valor será la suma de los nodos de procedencia. 3) Se repite el paso 2) hasta llegar a la raíz del árbol que tendrá valor 1 4) Comenzando en la raíz, asignamos 0 (1) al arco superior y 1 (0) al inferior hasta llegar a los nodos terminales 5) Se obtiene el código de cada instrucción recorriendo el árbol de la raíz a la instrucción y concatenando los valores de los arcos del camino Para nuestro ejemplo tendremos lo siguiente:

1

0

0

1

0

0

1

0

1

0

1

0.06

0.04

0.10

0.22

0.47 1

ADD 0.53

SUB 0.25

MUL 0.12

DIV 0.03

STA 0.03

LDA 0.02

J MP 0.02

Tipo de instrucciones Frecuencia de ejecución Código de Huffman

ADD SUB MUL DIV STA LDA JMP

0.53 0.25 0.12 0.03 0.03 0.02 0.02

0 10 110 11100 11101 11110 11111

Longitud media del código resultante:

Page 25: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

bitsbits

lfl ii

im

_3_89.1

502.0502.05003.05003.0312.0225.0153.0

<

=×+×+×+×+×+×+×=×= ∑

2. Propiedades generales del direccionamiento. Resolución Es la menor cantidad de información direccionada por la arquitectura. El mínimo absoluto es un bit, aunque esta alternativa la utilizan pocos procesadores, por ejemplo, el iAPX432 de Intel (1981) Requiere un gran número de bits para expresar las direcciones de una cierta cantidad de información y mucho tiempo para alinearlos correctamente. Lo más frecuente en los procesadores actuales es utilizar resoluciones de 1 o 2 bytes. La resolución puede ser diferente para instrucciones y datos aunque lo normal es que coincida.

Resolución MC68020 VAX-11 IBM/370 B1700 B6700 iAPX432 Instrucciones

Datos 16 8

8 8

16 8

1 1

48 48

1 8

Orden de los bytes en memoria El concepto de endian lo introdujo Cohen para expresar la forma como se ordenan los bytes de un escalar de varios bytes. • Modo big-endian: almacena el byte más significativo del escalar en la dirección más baja de memoria • Modo little-endian: almacena el byte más significativo del escalar en la dirección más alta de memoria. Ejemplo: el hexadecimal 12 34 56 78 almacenado en la dirección de memoria 184 tendrá la siguiente organización en cada uno de los modos:

big-endian little-endian 184 12 184 78 185 34 185 56 186 56 186 34 187 78 187 12

Alineación Un objeto de datos de n bytes ubicado en la dirección de memoria D se dice que está alineado si D mod n = 0 Objeto de datos direccionado (tamaño) Alineaciones correctas byte media palabra (2 bytes) palabra (4 bytes) doble palabra (8 bytes)

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0, 2, 4, 6, 8, 10 0, 4, 8, 12 0, 8, 16

• Determinadas máquinas sólo permiten accesos alineados • La falta de alineación implica complicaciones hardware • Los programas con accesos alineados se ejecutan más rápidamente • Para alinear datos se utiliza una red de alineación. En el caso de la figura para acceder a una palabra no alineada serán necesarios 2 accesos para obtener la parte alta y baja

Page 26: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

32 bits 32 bits

32 bits

a la CPU

32 bits

Espacios de direcciones En un mismo procesador pueden diferenciarse hasta 3 espacios de direcciones diferentes:

• Espacio de direcciones de registros • Espacio de direcciones de memoria • Espacio de direcciones de entrada/salida

Los espacios de direcciones de memoria y entrada/salida de algunos procesadores están unificados (un solo espacio), ocupando los puertos de E/S direcciones de ese espacio único. En estos procesadores (ejemplo, 68000) no existen instrucciones específicas de E/S, para esta función se utilizan las de referencia a memoria (carga y almacenamiento) con las direcciones asignadas a los puertos. 3. Modos de direccionamiento. Los modos de direccionamiento determinan la forma como el operando (OPER) presente en las instrucciones especifican la dirección efectiva (DE) del dato operando (DO) sobre el que se realiza la operación indicada por CO.

Inmediato. DO = OPER • El dato operando se ubica en la propia instrucción ==> no requiere accesos a memoria. • Se suele utilizar para datos constantes del programa • El tamaño está limitado por el número de bits de OPER

Implícito CO

• El dato operando se supone ubicado en algún lugar específico de la máquina, por ejemplo, una pila Directo (memoria o registros) OPER = Dirección de memoria o de un registro DE = OPER DO = <OPER>

Memoria oRegistros

DO

CO OPER

CO OPER

Page 27: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

• La especificación de un registro requiere menor número de bits que la de una posición de memoria • El acceso a los registros es más rápido que a Memoria • El direccionamiento directo a memoria se conoce como absoluto • A veces se limita el número de bits de OPER limitando el acceso a sólo una parte de la memoria que suele ser la correspondiente a las direcciones más bajas (página cero) Indirecto (memoria) OPER = Dirección de memoria DE = <OPER> DO = <<OPER>>

Memoria

DE

DO

CO OPER

• Permite el tratamiento de una dirección de memoria como un dato • Permite el paso por referencia de parámetros a subrutinas • Permite referenciar un espacio mayor de direcciones

p bits n-p bits

n-bits

2n-p direcciones

2n-p direcciones

2n direcciones

p bits n-p bits

CO dirección

CO dirección

dirección

Indirecto (registro) OPER = Dirección de un registro DE = <OPER> DO = <<OPER>>

Registros Memoria CO OPER

DE

DO

Modos con desplazamiento. Calculan la dirección efectiva (DE) sumando al contenido de un registro el operando declarado

Page 28: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

en la instrucción (OPER) que se interpreta como un desplazamiento respecto al contenido del registro. La distinta naturaleza del registro hace que se diferencien tres modos con desplazamiento. Todos explotan la proximidad de los datos o instrucciones referenciadas para utilizar menor número de bits en el campo OPER.

Direccionamiento base más desplazamiento DE = <Registro base> + OPER; OPER = desplazamiento • Se utiliza para la reubicación de datos y programas en memoria

+

Memoria

DO

CO OPER

Registro Base

Ejemplo: A = B + C Programa LOAD RB,1; RD1 (RD1 <-- <RB>+1) <RB> + 1 = B LOAD RB, 2; RD2 (RD2 <-- <RB>+2) <RB> + 2 = C ADD RD1; RD2 (RD1 <-- <RD1> + <RD2>) STORE RD1; RB,0 (A<RB>+0 <-- <RD1>) <RB> + 0 = A

Memoria

RB

C

B

A

RD1

RD2

Registros de datos

Este programa podremos reubicarlo en memoria y siempre llevará a la dirección apuntada por el registro base RB la suma de los contenidos de las dos direcciones siguientes. Direccionamiento relativo DE = <Contador de programa> + OPER; OPER = desplazamiento • Se utiliza en las instrucciones de salto para conseguir la reubicación de estas instrucciones • El desplazamiento en estas instrucciones tiene signo (c2) lo que significa que el salto relativo se puede dar hacia posiciones anteriores o siguientes a la ocupada por la instrucción.

+

Memoria

DO

CO OPER

Contador de Programa

Page 29: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Direccionamiento indexado DE = <Registro índice> + OPER; OPER = desplazamiento • Se utiliza para recorrer estructuras lineales como los arrays • Par facilitar su uso se suele complementar con el pre o post incremento o decremento del registro índice

+

Memoria

DO

CO OPER

Registro Indice

Resumen de los tipos de direccionamiento

Indirecto (memoria)

Direccionamiento instrucción registro memoria

+

registro dirección operando

dirección dirección

registro

dirección

desplazamiento operando

+registro

desplazamiento

dirección operando

+registro

dirección dirección

operando

Indirecto (registro)

base

Indexado

Relativo

Modos compuestos Veremos los modos compuestos analizando el repertorio de algunos procesadores. Modos de direccionamiento del MC 68.X

CO OPER

• Inmediato DO = OPER - enteros: 8, 16 y 32 bits - reales: 32 bits (simple precisión), 64 bits (doble precisión) y 96 bits (precisión extendida) • Directo

- Memoria o absoluto DE = OPER, DO = <DE>, con OPER de 16 y 32 bits

Page 30: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

- Registro Ri = OPER, DO = <Ri>, con Ri cualquier registro

• Indirecto registro - puro

DE = <Ri>, con Ri cualquier registro Memoria

CO OPER

Ri

DO DE

- Indirecto registro con postincremento DE = <Ri>; Ri <Ri> + Inc, con Inc = 1, 2 ó 4 bytes

+ Inc

Memoria CO OPER

Ri

DO DE

- Indirecto registro con predecremento Ri <Ri> - Dec, DE = <Ri>, con Dec = 1, 2 ó 4 bytes

- Dec

Memoria CO OPER

Ri

DO DE

- Indirecto con desplazamiento (= base + desplazamiento) DE = <Ri> + Despla

+

Memoria

DO

CO Despla

Ri

DE

Page 31: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

- Indirecto registro indexado (= base + desplazamiento indexado) DE = <Ri> + <Rj>xEscala + Despla, con Escala = 1, 2, 4, 8 bytes

+

Memoria

DO

CO Despla

Ri

x

Escala

Rj

DE

• Indirecto memoria - Postindexado (= base + desplazamiento indirecto indexado + desplazamiento) DE = <<Ri> + despla1> + <Rj>xEscala + Despla2

+

Memoria

DORi

CO Despla1 Despla2

Rj

x

Escala

DIR

+

DE

- Preindexado (base + desplazamiento indexado indirecto + desplazamiento) DE = <<Ri> + Despla1 + <Rj>xEscala> + Despla2

Page 32: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

+Memoria

DO

Ri

CO Despla1 Despla2

Rj

x

Escala

DIR+ +

DE

• Relativo - Básico DE = <CP> + Despla

+

Memoria

DO

CO Despla

CP

DE

- Indexado con desplazamiento DE = <CP> + <Rj>xEscala + Despla

+

Memoria

DO

CO Despla

CP

x

Escala

Rj

DE

Page 33: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

- Indirecto memoria postindexado DE = <<CP> + Despla1> + <Rj>xEscala + Despla2

+

Memoria

DOCP

CO Despla1 Despla2

Rj

x

Escala

DIR

+

DE

- Indirecto memoria preindexado DE = <<CP> + Despla1 + <Rj>xEscala> + despla2

+Memoria

DO

CP

CO Despla1 Despla2

Rj

x

Escala

DIR+ +

DE

Modos de direccionamiento del MIPS R-2000 • Inmediato • Registro LA = R • Relativo DE = <PC> + Despla

Page 34: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

• Indirecto registro con desplazamiento (= base + desplazamiento) DE = <Ri> + Despla Modos de direccionamiento del Pentium II

DE

(6 registros SR)

Registros de uso general0, 8 ó 32 bits

CO A

segmento

B A I

+

X Escala(1,2,4,8)

+ SR

LA

Registro base Registro índice

Registro de segmento

Memoria

Paginación

• Inmediato DO = A (1,2,4 bytes) • Registro LA = R, DO = <R> (LA = dirección lineal) • Desplazamiento LA = <SR> + A • Base LA = <SR> + <B> • Base + desplazamiento LA = <SR> + <B> + A • Indexado LA = <SR> + <I>xEscala + A • Base + desplazamiento indexado LA = <SR> + <B> + <I> + A • Base + desplazamiento indexado escalado LA = <SR> + <B> + <I>xEscala + A • Relativo LA = <PC> + A

Page 35: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

4. Soporte de los modos de direccionamiento a los lenguajes de alto nivel Visibilidad en C Un programa escrito en C no es más que una colección de subprogramas (funciones) en

idéntico nivel, dentro del programa principal (Main). Estas funciones pueden llamarse entre sí, incluso de forma recursiva. Las variables locales definidas en una función son visibles sólo dentro de la función. En cambio las variables globales se definen fuera de la funciones (en la función Main) y pueden ser referenciadas desde cualquiera de ellas.

Las variables locales de una función se asignan dinámicamente Estudiaremos ahora los modos de direccionamiento más adecuados para satisfacer los requerimientos de los lenguajes de alto nivel. Estos modos reducirán al mínimo el número de instrucciones requeridas para acceder a los elementos de las diferentes estructuras de datos (array, record, etc.) que soportan estos lenguajes, es decir, para calcular sus direcciones efectivas. Estos lenguajes presentan una estructura de bloques e incorporan el concepto de visibilidad de las variables del programa, es decir, las reglas de acceso a las variables de cada uno de los bloques.

, es decir, cada vez que se activa la función. La asignación tiene lugar dentro de un registro de activación (RA) que se ubica en la pila asociada al programa. Dada la naturaleza recursiva de las llamadas, pueden existir en la pila más de un RA para la misma función (tantos como llamadas). Supongamos el siguiente perfil de progrma C:

Main( ) { . . . ... = ... fe(...) ... . . . } fa (...) { . . . }

fb (...) { . . . ... = ... fb(...) ... . . . ... = ... fc(...) ... . . . }

fc (...) { . . . ... = ... fc(...) ... . . . ... = ... fb(...) .. . . . }

fd (...) { . . . } fe (...) { . . . ... = ... fc(...) ... . . . }

La estructura de este programa sería la siguiente:

main

fa fb fc fd fe

Supongamos que tiene lugar la siguiente secuencia de llamadas: main fe fc fc fb fb fc

En la pila del programa se ubican los registros de activación correspondientes a cada una de estas llamadas, tal como se muestra en la siguiente figura, donde se ha sombreado las variables que pueden ser accedidas desde la tercera activación de la función fc: las globales y las locales a esta tercera llamada. Para realizar el acceso se dispone de sendos registros que apuntan a cada uno de estos RA, el Puntero al Registro de Activación Global (PRAG) y el Puntero al Registro de Activación Local (PRAL)

Page 36: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

Puntero al Registro de Activación Local

RA fc(1ª llamada)

RA main

RA fe

RA fc(2ª llamada)

RA fb(1ª llamada)

RA fb(2ª llamada)

RA fc(3ª llamada)

PRAL

Puntero al Registro de Activación Global

PRAG

Crecimiento de la PILA

Registros de Activaciónvisibles desde la últimallamada a fc

Visibilidad en Pascal En los lenguajes de tipo Pascal un bloque puede ser un procedure o una function, y el concepto

de visibilidad adquiere una estructura anidada. Los bloques de un programa de este tipo presentan una estructura jerárquica y la visibilidad de variables desde la llamada a un bloque se extiende a todos los bloques (últimas llamadas) en el camino hasta la raíz (main)

main

Bc Bd Be Bf Bg

Bh Bi

BbBa

program main(..)procedure abegin

procedure cbegin...endprocedure dbegin...end

endprocedure bbegin

procedure ebegin... function h (..)endprocedure fbegin... function i (..)endprocedure gbegin...end

end end

Secuencia de llamada: main Ba Bb Bb Bf Be Bh Bh

Page 37: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

RA Bb(1ª llamada)

RA main

RA Ba

RA Bb(2ª llamada)

RA Bf

RA Be

RA Bh(1ª llamada)

PRAL

PRAG

RA Bh(2ª llamada)

Display del RA Bh

Registros de Activaciónvisibles desde la últimallamada al bloque Bh

El display de un RA contiene un puntero a cada RAi visible desde RA Acceso a variables escalares locales o globales (contenido)

DesplaRA main

PRA G

Variable g lobal

DesplaRA

(procedimientoen ejecución)

PRA L

Variable local Variables locales: DE = <PRAL> + despla direccionamiento base + desplazamiento Variables globales: DE = <PRAG> + despla direccionamiento base + desplazamiento

Page 38: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

Acceso a variables escalares no locales (contenido)

main

Bb Bc

BlBa

Bd

Secuencia de llamada: main Ba Ba Bb Bc Bd

Despla 1

Despla 2RA Ba(2ª llamada)

RA main

RA Ba(1ª llamada)

RA Bb

PRAL

PRAG

RA Bd

RA BcUbicación del dato accedido

display

DE = <<PRAL> + Despla1> + Despla 2 direccionamiento base + desplazamiento indirecto + desplazamiento

Page 39: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

Acceso a variables escalares locales (dirección)

Despla

Var. referenciada

RA proc. Ejec.

PRALPuntero local

DE = <<PRAL> + Despla> direccionamiento base + desplazamiento indirecto Acceso a variables escalares no locales (dirección)

Despla 1

Referencia a var.

RA proc. Ejec. PRAL

Inicio RA referenc.

Despla 2

Var. referenciada

RA proc. refer.

display

DE = <<<PRAL> + Despla1> + Despla 2> direccionamiento base + desplazamiento indirecto + desplazamiento indirecto

Page 40: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

Acceso a variables de tipo array locales (contenido)

array

RA proc. Ejec.

PRAL

1º elemento

Despla

n-simo elemento

IndexaciónRX

Factor_escala (=1,2,4,8)

X

DE = <PRAL> + Despla + <RX>factor_escala direccionamiento base + desplazamiento indexado Acceso a variables de tipo array no locales (contenido)

display

array

RA proc. referen.

PRAL

1º elemento

Despla 2

n-simo elemento

IndexaciónRX

Factor_escala (=1,2,4,8)

X

Inicio RA referenc.

RA proc. Ejec.

Despla 1

DE = <<PRAL> + Despla 1> + Despla 2 + <RX>factor_escala direccionamiento base + desplazamiento indirecto + desplazamiento indexado

Page 41: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

Acceso a variables de tipo array locales (dirección)

array

PRAL

1º elemento

n-simo elemento

IndexaciónRX

Factor_escala (=1,2,4,8)

X

RA proc. Ejec.

Puntero localDespla

DE = <<PRAL> + Despla > + <RX>factor_escala direccionamiento base + desplazamiento indirecto indexado Acceso a variables de tipo record locales (contenido)

record

RA proc. ejec.

PRAL

1º campo

Despla 1

n-simo campo

Despla 2

DE = <PRAL> + Despla 1 + Despla 2 direccionamiento base + desplazamiento Despla 1 = dirección e inicio del record (conocido en tiempo de compilación) Despla 2 = posición en record del campo accedido (conocido en tiempo de compilación)

Page 42: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

Acceso a variables de tipo record anidados locales (contenido)

acceso al campo z de R

record RR

RA proc. ejec.

PRAL

1º campo de RR(x)

Despla 1

1º campo de R (y)

Despla 2

2º campo de R (z)Despla 3

RR: record x: real R: record y: boolean z: integer . . . end R . . .end RR

DE = <PRAL> + Despla 1 + Despla 2 + Despla 23 direccionamiento base + desplazamiento Despla 1 = dirección e inicio RR (conocido en tiempo de compilación) Despla 2 = posición en RR del campo R (conocido en tiempo de compilación) Despla 3 = posición en R del campo accedido z (conocido en tiempo de compilación) Acceso a variables de tipo record locales (dirección)

record

RA proc. ejec.

PRAL

Despla 1

puntero local

Despla 2

campo accedido

DE = <<PRAL> + Despla 1> + Despla 2 direccionamiento base + desplazamiento indirecto + desplazamiento

Page 43: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

24

Apéndice (motivación del direccionamiento indirecto)

Consideremos un computador con una memoria de 4K palabras de 12 bits, un registro acumulador y dos bits de condición (Z y N)

MEMOR IA

000

FFF

110 11

0 ACUMULADOR (AC)

N Z1 0

R egistro de estado

Todas las instrucciones tienen longitud fija de 12 bits y están compuestas por un código de operación (CO) situado en los 4 bits más significativos (del 8 al 11) y una dirección/operando situada en los 8 bits menos significativos (del 0 al 7). Los 8 bits de la dirección/operando tienen el significado de dirección en las instrucciones de salto y referencia a memoria, y significado de dato en las instrucciones de operando inmediato.

11 8 7 0CO DIR ECCION /OPE RAN DO

La máquina dispone de once instrucciones, tres de carga y almacenamiento (LDA, STA, LDAI), tres aritmetico-lógicas (SUM, SUMI, NOR), cuatro de salto condicional (JZ, JNZ, JN, JNN) y una instrucción de parada (HALT). En la siguiente tabla se muestran el código simbólico, el tipo de direccionamiento, el código binario (CO) y la semántica de cada una de las instrucciones. El símbolo <-- significa transferencia de la información a su derecha hacia el elemento a su izquierda; MEMORIA(DIRECCION) expresa el contenido de la posición de MEMORIA apuntada por DIRECCION; los paréntesis angulares expresan contenido y el símbolo & concatenación.

Nombre Simbólico DIR/OPE COP Semántica LDA DIR 0001 AC <-- MEMORIA(DIR) STA DIR 0010 MEMORIA(DIR) <-- <AC> SUM DIR 0011 AC <-- <AC> + MEMORIA(DIR) LDAI OPE 0100 AC <-- 0000&OPERANDO SUMI OPE 0101 AC <-- <AC> + 0000&OPERANDO NOR DIR 0110 AC <-- <AC> NOR MEMORIA(DIR)

JZ DIR 0111 PC <-- DIR SI <Z> = 1 JNZ DIR 1000 PC <-- DIRE SI <Z> = 0 JN DIR 1001 PC <-- DIR SI <N> = 1

JNN DIR 1010 PC <-- DIR SI <N> = 0 HALT - 0000 parada de la máquina

Page 44: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

25

Programa Inicializa 10 posiciones de memoria (de la 20 a la 29) con un contenido igual a su dirección. Dirección Simbólico Binario comentario 0 LDA 4 0001 00000100 AC <-- (STA -----) 1 SUMI 1 0101 00000001 AC <-- (STA -----) + 1 2 STA 4 0010 00000100 MEMORIA(4) <-- (STA ------ + 1) 3 LDA 14 0001 00001110 AC <-- índice 4 STA ---- 0010 00010011 MEMORIA(índice) <-- índice 5 SUMI 1 0101 00000001 AC <-- índice + 1 6 STA índice 0010 00001110 índice <-- índice + 1 7 LDA 30 0001 00001101 AC <-- límite 8 NOR 30 0110 00001101 AC <-- complemento1(límite) 9 SUMI 1 0101 00000001 AC <-- complemento2(límite) 10 SUM índice 0011 00001110 AC <-- índice - límite 11 JNZ 0 1000 00000000 Vuelve a dirección 0 si resultado ≠ 0 12 HALT 0000 00000000 Parada 13 30 000000011110 límite 14 20 000000010100 índice Para referenciar posiciones de memoria consecutivas (indexación) hemos utilizado un artificio poco recomendable en programación: modificar instrucciones en tiempo de ejecución, concretamente, sumando un 1 a la instrucción STA índice (inicialmente en binario 001000010011) de la posición 4. De esa forma, cada vez que se recorra el cuerpo del ciclo que constituye el programa, la instrucción STA índice referenciará la posición de memoria siguiente a la que referenció en el recorrido anterior. El ciclo finalizará cuando el índice iguale el límite. Para detectarlo se realiza la resta índice -limite (complementando a dos límite, es decir, complementando a 1 y sumando 1, y sumando el resultado a índice) y se bifurca sobre Z. Esto lo podemos solucionar introduciendo el direccionamiento indirecto (ind) para la instrucción de almacenamiento STA (ind) y modificando las instrucciones 0,1,2 y 4 del programa de la forma siguiente: 0 LDA 14 1 SUMI 1 2 STA 14 4 STA (ind) 14

Page 45: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 3: Formato de los datos y clases de instrucciones

1. Tipos de datos y formatos de representación. 2. Instrucciones que operan sobre datos. 3. Instrucciones de control del flujo de ejecución. 4. Soporte de las instrucciones de control a las construcciones de alto nivel

1. Tipos de datos y formatos de representación. Números naturales Representación binaria

N ≡ ( n−1x , n− 2x , ..., 1x , 0x )

V(N) = i2i= 0

n−1

∑ . ix

• rango de representación = [0, 2n - 1] • resolución = 1 • dificultades:

el resultado de la suma puede necesitar n+1 bit no es posible en general la resta: habría que comprobar que el minuendo es mayor que el

sustraendo para el producto se necesitan 2n bits

Representación BCD(Decimal Codificado en Binario)

Codifica en binario puro con 4 bits cada uno de los dígitos decimales Ejemplo 2 5 5 ---> BCD = 0010 0101 0101 en cambio en binario sería: 2 5 5 ---> binario = 1111 1111 Existen 2 formatos de representación:

BCD desempaquetado

zona dígito zona dígito zona dígito

1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1

BCD empaquetado

0 0 1 0 0 1 0 1 0 1 0 1

Page 46: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Números enteros Signo y magnitud N ≡ ( n−1x , n− 2x , ..., 1x , 0x )

i

n

i

i xNV ∑−

==

2

02)( si Xn-1 = 0

i

n

i

i xNV ∑−

=−=

2

02)( si Xn-1 = 1

como 1 - 2•Xn-1 = 1 si Xn-1 = 0 1 - 2•Xn-1 = -1 si Xn-1 = 1

i

n

i

in xxNV ∑

=−−=

2

01 2)21()(

• rango de representación = [-(2n-1 - 1), 2n-1 - 1] • resolución = 1 • dificultades

doble representación del cero no es posible en general la resta: habría que comprobar que el minuendo es mayor que el

sustraendo

Complemento a dos • Los números positivos se representan igual que en signo y magnitud • Los números negativos se representan como 2n - magnitud del número

Ejemplo: (para n= 8 bits) X = - 50 se representa por 1 0000 0000 = 28 - 0011 0010 = 50 (magnitud de -50)

0 1100 1110 = - 50 en c2 • El valor del número X se puede expresar en general como:

i

n

i

inn xxNV ∑

=

−− +•−=

2

0

11 22)(

Se puede obtener el valor decimal de un número en c2 sumando los pesos de las posiciones con 1:

-128 64 32 16 8 4 2 1

1 0 0 0 1 0 0 0-128 +8 = -120

Page 47: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

0 bien pesando sólo las posiciones con cero (cuando el número es negativo) y sumando 1: 64 + 32 + 16 + 4 + 2 + 1 + 1 = 120 Podemos calcular el c2 de un número binario complementando bit a bit (c1) y sumado 1: 0 1 0 0 0 0 0 1 = 65 c1 = 1 0 1 1 1 1 1 0 + 1 1 0 1 1 1 1 1 1 = -65 • rango de representación = [-2n-1 , 2n-1 - 1] • resolución = 1 • ventaja: la resta se convierte en suma del c2 del sustraendo

Complemento a uno

• Los números positivos se representan igual que en signo y magnitud • Los números negativos se representan como 2n - magnitud del número - 1 • El valor del número X se puede expresar en general como:

i

n

i

inn xxNV ∑

=

−− ++•−=

2

0

11 2)12()(

• rango de representación = [- 2n-1 - 1, 2n-1 - 1] • resolución = 1 • dificultades

doble representación del cero la resta es más compleja que en c2

• Para hallar el c1 de un número binario se complementa bit a bit el número. Tabla de representación de los tres sistemas para n = 4 bits Número decimal Signo y magnitud Complemento a 1 Complemento a 2

+7 +6 +5 +4 +3 +2 +1 0

0111 0110 0101 0100 0011 0010 0001 0000

0111 0110 0101 0100 0011 0010 0001 0000

0111 0110 0101 0100 0011 0010 0001 0000

-0 1000 1111 No existe -1 -2 -3 -4 -5 -6 -7

1001 1010 1011 1100 1101 1110 1111

1110 1101 1100 1011 1010 1001 1000

1111 1110 1101 1100 1011 1010 1001

-8 no existe No existe 1000

Page 48: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

Números reales Utilizando una notación exponencial, un número real R queda determinado por dos valores, un exponente (e) y una mantisa (m) tal que el valor de R venga dado por la expresión:

V(R) = B e • m

Donde B es una base conocida. Por ejemplo, utilizando base 10 tenemos: 976.000.000.000.000 = 9,76 •10 14 0,0000000000000976 = 9,76 •10 -14 Los números quedarían definidos por: 976.000.000.000.000 mantisa m = 9,76; exponente e = 14 0,0000000000000976 mantisa m = 9,76; exponente e = -14. La representación en coma flotante utiliza esta definición y establece un formato para la mantisa y para el exponente. Exponente Utiliza una representación sesgada o codificación en exceso con un sesgo = 2k-1-1; siendo k el número de bits reservados para el campo del exponente. Es decir, en lugar de representar directamente e, utilizamos su codificación E exceso 127, siendo E = e + 127. Para k = 8 bits se codifica el exponente (con signo) con valores que van de –127 a +128 utilizando el código exceso 28-1-1 = 127. Los correspondientes valores codificados van en decimal de 0 (todos los bits a 0) a 255 (todos los bits a 1). La tabla siguiente muestra el rango de valores del exponente y su codificación en exceso 127:

E (binario) E (decimal) e = E-127 0000 0000 0000 0001 0000 0010

.

.

. 0111 1110 0111 1111 1000 0000

.

.

. 1111 1111

0 1 2 . . .

126 127 128

.

.

. 255

-127 -126 -125

.

.

. -1 +0 +1 . . .

+128

Una propiedad importante de la codificación sesgada es que se mantiene el orden natural de los vectores binarios en relación con su magnitud: el más grande es el 1111 1111 y el más pequeño 0000 0000, cosa que no ocurre en la representación en signo y magnitud, c1 o c2. Esta propiedad es importante a la hora de comparar números en coma flotante.

Page 49: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Mantisa La mantisa m se representa en coma fija normalizada (signo y magnitud), es decir, haciendo que el primer dígito decimal valga 1, y ajustando convenientemente el exponente:

mantisa m mantisa normalizada M = ± 0,1bbb...b con b ∈ { 0, 1 }

Como el primer bit de la mantisa es siempre 1 no necesita almacenarse en el campo M, por lo que se pueden representar mantisas con 24 bits con valores en decimal que van de:

0,5 correspondiente a la mantisa 0,100000000000000000000000 a 1 ( en realidad 1- 2 -24 ) correspondiente a la mantisa 0,111111111111111111111111

Base Se suele utilizar la base 2. (la arquitectura IBM S/390 utiliza base 16) Teniendo en cuenta lo anterior, un número real R vendría representado por:

V(R) = (-1)s • 2 E - 127 • M

con el siguiente formato para una longitud de palabra de 32 bits (1 para el signo de la mantisa, 8 para el exponente, 23 para la magnitud de la mantisa):

signo Exponente Mantisa

31 30 23 22 0

s E M

Por ejemplo:

0,11010001 x 2 10100 = 0 10010011 10100010000000000000000 -0,11010001 x 2 10100 = 1 10010011 10100010000000000000000 0,11010001 x 2-10100 = 0 01101011 10100010000000000000000 -0,11010001 x 2-10100 = 1 01101011 10100010000000000000000 corresponden a las expresiones decimales: 0,8164062 x 2 20 = 856063,95 - 0,8164062 x 2 20 = - 856063,95 0,8164062 x 2 -20 = 0,000000778585 - 0,8164062 x 2 -20 = - 0,000000778585 Los rangos de números que pueden representarse en coma flotante con 32 bits y el formato descrito aparecen en la siguiente gráfica:

0111 1111 = 127 + 1 0100 1001 0011

Page 50: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

- (1 - 2-24) x 2128 - 0,5 x 2-127 0 0,5 x 2-127 (1 - 2-24) x 2128

desbordamientonegativo

números negativosrepresentables

números positivosrepresentables

desbordamientopositivo

desbordamientoa cero negativo

desbordamientoa cero positivo

recta real

En esta gráfica se aprecia la existencia de 5 regiones excluidas de dichos rangos: • región de desbordamiento negativo • región de desbordamiento a cero negativo • región de desbordamiento a cero positivo • región de desbordamiento positivo Problemas de la representación en coma flotante: • La anterior representación no contempla un valor para el cero. Sin embargo, en la practica se destina

una configuración de bits especial, como veremos en el estándar del IEEE. • Aparecen dos tipos de desbordamientos, el desbordamiento propiamente dicho que ocurre cuando una

operación aritmética da lugar a un número cuyo exponente es mayor que 128 (ejemplo 2 215), y el desbordamiento a cero que ocurre cuando una magnitud fraccionaria es demasiado pequeña (ejemplo 2-215)

• Los números representados no están espaciados regularmente a lo largo de la recta real. Están más

próximos cerca del origen y más separados a medida que nos alejamos de él. • Tenemos que elegir el compromiso entre rango de representación y precisión de la misma repartiendo

convenientemente los bits entre mantisa y exponente. Si aumentamos los bits del exponente aumentamos el rango pero disminuimos la densidad de números representados en dicho rango, ya que la cantidad total de valores representables lo determina el número total de bits (32).

Hay que notar que con la representación en coma flotante no se representan más valores individuales. Con 32 bits sólo podemos representar 232 valores diferentes. La coma flotante distribuye estos valores entre dos intervalos, uno positivo y otro negativo. Estándar IEEE 754 Desarrollado para facilitar la portabilidad entre diferentes procesadores de programas numéricos La base implícita es 2 y utiliza dos formatos, uno simple de 32 bits y otro doble de 64 bits, además define dos formas ampliadas de estos formatos (dependientes de la implementación). formato simple

signo Exponente Mantisa

31 30 23 22 0

s E f

Page 51: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

formato doble

signo Exponente Mantisa

63 62 52 51 0

s E f

En el formato simple, los valores de exponente de 1 a 254 representan números en coma flotante normalizados distintos de cero, con exponente sesgado en un rango de -127 a +127 y mantisa con un 1 implícito a la izquierda del punto decimal, lo que significan 24 bits efectivos. Ejemplo: RIEEE = 1 10000001 01000000000000000000000 ↓ ↓ ↓ - e = 129 - 127 = 2 f = 0.01(2 = 0.25(10 => 1.f = 1.25(10 => R(10 = -1.25 • 2 2 = - 5 En este estándar no todos los patrones de bits se interpretan como valores numéricos, algunas se utilizan para representar valores especiales: 1) Un exponente cero con una fracción cero representa al +0 ó -0, dependiendo del bit de signo. 2) Un exponente todo unos con una parte fraccionaria cero representa al +∞ o al -∞, dependiendo del bit de signo. 3) Un exponente de todo unos con una fracción distinta de cero se conoce como NaN (Not a Number) y

se emplea para indicar varias condiciones de excepción. 4) Un exponente cero con una parte fraccionaria distinta de cero representa un número denormalizado. En este caso el bit a la izquierda de la coma es cero y el exponente original -126. En la siguiente tabla resumimos la interpretación de los números en coma flotante y simple precisión:

precisión simple (32 bits) signo exponente fracción valor positivo normalizado ≠0 0 0<E<255 f 2 E - 127(1,f) negativo normalizado ≠0 1 0<E<255 f -2 E - 127(1,f) cero positivo 0 0 0 0 cero negativo 1 0 0 -0 más infinito 0 255(todos 1s) 0 ∞ menos infinito 1 255(todos 1s 0 -∞ NaN silencioso 0 ó 1 255(todos 1s ≠0 NaN NaN indicador 0 ó 1 255(todos 1s ≠0 NaN positivo denormalizado 0 0 f≠0 2 E - 126(0,f) negativo denormalizado 1 0 f≠0 -2 E - 126(0,f) Infinito

n + (+ ∞) = + ∞ n - (+ ∞) = - ∞ n + (- ∞) = - ∞ n - (- ∞) = + ∞ n x (+ ∞) = + ∞

n ÷ (+∞) = +0 (+ ∞)+ (+ ∞) = + ∞ (- ∞)+ (- ∞) = - ∞ (- ∞)- (+ ∞) = - ∞ (+ ∞)- (- ∞) = + ∞

Page 52: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

NaN indicadores y silenciosos Un NaN es un valor simbólico codificado en formato de coma flotante. Existen dos tipos: indicadores y silenciosos. Un NaN indicador señala una condición de operación no válida siempre que aparece como operando. Permiten representar valores de variables no inicializadas y tratamientos aritméticos no contemplados en el estándar. Los NaN silenciosos se propagan en la mayoría de las operaciones sin producir excepciones. La siguiente tabla indica operaciones que producen un NaN silencioso:

Operación

Suma o resta

(+ ∞)+ (- ∞) (- ∞)+ (+ ∞) (+ ∞)- (+ ∞) (- ∞)- (- ∞)

Multiplicación 0 x ∞

División 0/0 ∞/∞

Resto x RE 0 ∞ RE y

Raíz cuadrada x con x < 0 Números denormalizados Se incluyen para reducir las situaciones de desbordamiento hacia cero de exponentes. Cuando el exponente del resultado es demasiado pequeño se denormaliza desplazando a la derecha la parte fraccionaria e incrementando el exponente hasta que el exponente esté dentro de un rango representable. Caracteres

ASCII (American Standard Code for Information Interchange) Utiliza un patrón de 7 bits con el que se pueden representar hasta 128 caracteres diferentes, suficientes para codificar los caracteres del alfabeto incluyendo signos especiales y algunas acciones de control. El patrón 011XXXX representa los dígitos decimales del 0 al 9 con los correspondientes valores binarios para XXXX.. Así, 011 0000 representa al 0; 011 0001 representa al 1; etc.

EBCDIC(Extended Binary-Coded-Decimal Interchange Code) Se trata de un código de 8 bits utilizado por IBM. En este caso los dígitos decimales del 0 al 9 vienen codificados por los patrones del 1111 0000 al 1111 1001. Como se puede observar en ambos casos la representación es compatible con la BCD empaquetada de 4 bits. Además, el valor binario (sin signo) de ambos códigos mantiene el orden de los símbolos correspondientes a los dígitos decimales y caracteres, lo que facilita la ordenación de información simbólica en los programas. Compresión de datos

La representación de datos comprimidos ha ido adquiriendo cada vez más importancia debido a la utilización de mayores cantidades de información, sobre todo en las aplicaciones multimedia. Comprimiendo datos se optimiza tanto la memoria utilizada para su almacenamiento como el tiempo de transmisión por las redes. Uno de los métodos de compresión más conocido es el llamado de Lempel-Ziv (LZ), que aprovecha de forma bastante simple las repeticiones de ciertos patrones de bits que aparecen en una cadena. Se aplica a cualquier tipo de información representada por una cadena de bits y se realiza en los siguientes pasos:

1) Se descompone la cadena de modo que no se repita el mismo patrón de bits. Para ello:

Page 53: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

a) se coloca un separador después del primer dígito b) el siguiente separador se coloca de modo que el fragmento entre separadores sea el más corto posible que no haya aparecido previamente. El proceso continúa hasta fragmentar toda la cadena.

Ejemplo: la cadena de bits 101100101001101001000

se fragmentaría de la forma siguiente: 1-0-11-00-10-100-110-1001-000

2) Se enumeran los fragmentos. 1 2 3 4 5 6 7 8 9

1-0-11-00-10-100-110-1001-000

Cada fragmento es siempre la concatenación de un fragmento prefijo aparecido con anterioridad, y de un bit adicional, 0 ó 1. Por ejemplo, el fragmento número 3, 11, es el número 1 seguido de un 1; el número 6, 100, es el 5 seguido de un 0; y así sucesivamente.

3) Se sustituye cada fragmento por el par (número de prefijo, bit adicional). El 0 indicará el prefijo vacío. En nuestro ejemplo:

(0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0)

4) Se codifican en binario los números de los prefijos. En nuestro ejemplo, como aparecen siete prefijos, se necesitan tres bits para codificarlos: (000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0)

5) Se quitan los paréntesis y los separadores y obtenemos la cadena de bits comprimida:

000100000011010000101010011011011000

La descompresión se realiza siguiendo el proceso inverso y conociendo el número de bits de la codificación del prefijo, tres en nuestro ejemplo. Sabemos entonces que cada fragmento está codificado por cuatro bits, tres para el prefijo y uno para el bit adicional:

000100000011010000101010011011011000 1) 0001-0000-0011-0100-0010-1010-0110-1101-1000 2) (000,1)-(000,0)-(001,1)-(010,0)-(001,0)-(101,0)-(011,0)-(110,1)-(100,0) 3) (0,1)-(0,0)-(1,1)-(2,0)-(1,0)-(5,0)-(3,0)-(6,1)-(4,0) 1 2 3 4 ....... 4) 1-0-11-00 .......

En el ejemplo anterior la cadena resultante es más larga que la original, en contra del propósito del

método. La causa es la poca eficiencia del método para cadenas muy cortas. Cuando se aplica a una cadena muy larga, los fragmentos crecen en longitud más rápidamente que las subcadenas de bits necesarias para su codificación. Por ejemplo, supongamos que una cadena de 100.000 bits se ha dividido en 1.000 fragmentos con un tamaño medio de 100 bits (los primeros serán probablemente más cortos y los últimos más largos). Para codificar el prefijo solo se necesitan 10 bits (210 = 1024). Por tanto cada fragmento estará codificado por 11 bits (los 10 del prefijo más el bit adicional), mientras que su longitud original era de 100 bits. Es decir, el método lograría comprimir el fichero de datos a un 10% de su tamaño original.

Page 54: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

100 bit s

100.000 bit s

1.000 fragmen tos

1.000 fragmentos => 20 bits para su codificación +1 bit adicional 21 bits/fragmento x 1.000 fragmentos = 21.000 bitsluego 100.000 bits se comprimen a 21.000 bits => al 20% de su tamaño

Está claro que cuanto más largos sean los fragmentos, más eficaz será el método. Esto ocurre si la

cadena tiene muchas repeticiones. El caso extremo es una cadena con todo ceros. En este caso la fragmentación es muy simple:

0-00-000-0000-00000-000000-0000000-...

Ejemplo1: cadena de 28 ceros, se comprime en una de igual tamaño 0000000000000000000000000000 1 2 3 4 5 6 7 0-00-000-0000-00000-000000-0000000 (0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0) 000,0-001,0-010,0-011,0-100,0-101,0-110,0 0000001001000110100010101100 Ejemplo2: cadena de 36 ceros, se comprime en una de 32 bits 000000000000000000000000000000000000 1 2 3 4 5 6 7 8 0-00-000-0000-00000-000000-0000000-00000000 (0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0) 000,0-001,0-010,0-011,0-100,0-101,0-110,0-111,0 00000010010001101000101011001110 Ejemplo3: cadena de 55 ceros, se comprime en una de 50 0000000000000000000000000000000000000000000000000000000 1 2 3 4 5 6 7 8 9 10 0-00-000-0000-00000-000000-0000000-00000000-000000000-0000000000 (0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0)-(8,0)-(9,0) 0000,0-0001,0-0010,0-0011,0-0100,0-0101,0-0110,0-0111,0-1000,0-1001,0 00000000100010000110010000101001100011101000010010 Una cadena con n ceros se dividiría en un número de fragmentos m -1 tal que:

n = 1+2+3+...+(m-1) = m(m+1)/2 (progresión aritmética)

lo que implica que aproximadamente 2nm≈ . Para 1MB, que son 8.388.608 bits, tendríamos 4.096 fragmentos y necesitaríamos sólo 12 bits

para describir el prefijo. Por tanto, necesitaríamos 13 bits para describir cada fragmento o 53.248 bits para

Page 55: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

describir el fichero entero. El fichero habría quedado reducido a 6,65 KB, es decir, al 0,63 % de su tamaño original.

El caso opuesto es una cadena de bits cuya fragmentación contenga todas las subcadenas posibles. Por ejemplo, hay 128 subcadenas de 8 bits. Si la fragmentación resultara en una concatenación de todas ellas, se necesitarían 8 bits para describir el prefijo y 9 para describir el fragmento, mientras que la longitud original de los fragmentos es de 8 bits. El método resultaría perfectamente inútil en este caso.

El método LZ es más eficaz cuanto más regular sea la cadena, es decir, cuantas más repeticiones contenga. Esta característica está de acuerdo con el teorema de Shannon, que afirma que cuanto más regular y menos aleatoria sea una cadena (menor sea su entropía), mayor será su grado de compresión. Shannon demostró que para una cadena de n bit aleatorios y completamente independientes unos de otros la entropía vale:

H = -n[p log2 p + (1 - p) log2 (1 - p)]

donde p es la probabilidad de que cada bit sea un 1.

Como el programa WinZip de Windows utilizan alguna variante de este método, se puede comprobar empíricamente la fórmula de Shannon creando ficheros de cadenas de bits aleatorios con diferentes probabilidades p = 0,01; 0,1; 0,2, etc. y comprimiendo los ficheros con WinZip. Después se podrá observar que los tamaños comprimidos están en la misma relación que los previstos en la fórmula de Shannon. Ejemplo4: cadena de 55 ceros seguida de un 1, se comprime en una de 55 bits 00000000000000000000000000000000000000000000000000000001 1 2 3 4 5 6 7 8 9 10 11 0-00-000-0000-00000-000000-0000000-00000000-000000000-0000000000-1 (0,0)-(1,0)-(2,0)-(3,0)-(4,0)-(5,0)-(6,0)-(7,0)-(8,0)-(9,0)-(0,1) 0000,0-0001,0-0010,0-0011,0-0100,0-0101,0-0110,0-0111,0-1000,0-1001,0-0000,1 0000000010001000011001000010100110001110100001001000001 Ejemplo5: cadena de 42 bits con máxima variación, se comprime en una de 64 0100011011000001010011100101110111 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0-1-00-01-10-11-000-001-010-011-100-101-110-111 (0,0)-(0,1)-(1,0)- (1,1-(2,0)-(2,1)-(3,0)-(3,1)-(4,0)-(4,1)-(5,0)-(5,1)-(6,0)-(6,1) 000,0-000,1-001,0-001,1-010,0-010,1-011,0-011,1-100,0-100,1-101,0-101,1-110,0-110,1 00000001001000110100010101100111100010011010101111001101

Tipos de datos en el 68000

Utiliza la alternativa big-endian para ordenar los bytes de las palabras (2 bytes) y dobles palabras (4 bytes), es decir, el byte menos significativo se almacena en la dirección más baja. Dispone de los siguientes tipos:

Entero con signo en c2: de 1 byte, 2 bytes y 4 bytes. Entero sin signo: de 1 byte, 2 bytes y 4 bytes. BCD empaquetado (2 dígitos d 4 bits en un byte)

Carece de datos en formato de coma flotante Tipos de datos en el Pentium II

Puede trabajar con tipos de datos de 8 (byte), 16 (palabra), 32 (palabra doble) y 64 (palabra cuádruple) bits de longitud. Los tipos mayores de 1 byte no es necesario que estén alineados en memoria, el procesador se encarga de ello si no lo están. Utiliza la alternativa little-endian para ordenar los bytes de las palabras, dobles palabras y cuádruples palabras, es decir, el byte menos significativo se almacena en la dirección más baja. Admite una gran variedad de tipos:

Page 56: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

General: byte, palabra, doble palabra y cuádruple palabra con contenido binario arbitrario. Entero: valor binario con signo en c2 de una palabra, una doble palabra, o una cuádruple palabra. Ordinal: entero sin signo de un byte, una palabra o una doble palabra. BCD desempaquetado: un dígito BCD en cada byte BCD empaquetado: dos dígitos BCD en un byte. Campo de bits: secuencia contigua de bits independientes no alineada de hasta 232 - 1 bits. Cadena de bytes: Secuencia contigua de bytes, palabras, o dobles palabras de hasta 232 - 1 bytes. Coma flotante: • IEEE 754 de simple precisión (32 bits) • IEEE 754 de doble precisión (64 bits) • IEEE 754 de precisión ampliada(78 bits)

2. Instrucciones que operan sobre datos.

En este apartado revisaremos las instrucciones máquina que operan sobre datos. En el siguiente veremos las que controlan el flujo de ejecución. Podemos clasificar las instrucciones que operan sobre datos en los siguientes grupos:

Movimiento o transferencia de datos Desplazamiento y rotación Lógicas y manipulación de bits Transformación de datos Entrada/salida Manipulación de direcciones

En otro apartado estudiaremos las nuevas instrucciones paralelas que operan simultáneamente sobre un

conjunto de datos del mismo tipo, conocidas como SIMD (Single Instructions Multiple Data) e introducidas por primera vez en el Pentium para acelerar las operaciones enteras de las aplicaciones multimedia (MMX), y ampliadas en el Pentium III a las operaciones paralelas de coma flotante (SSE: Streaming SIMD Extension), muy frecuentes en las aplicaciones visuales.

2.1 Instrucciones de movimiento o transferencia de datos Se trata del tipo más básico de instrucción máquina. Transfieren el contenido de información entre

elementos de almacenamiento: registros (REG), memoria (MEM) y PILA. Dependiendo de la fuente y destino de la transferencia estas instrucciones suelen recibir nombres diferentes que resumimos en la siguiente tabla: REG --> REG: transferencia MEM --> REG: carga (load) PILA --> REG: extracción (pop) REG -->MEM: almacenamiento (store) MEM --> MEM: movimiento(move) PILA --> MEM: extracción (pop) REG --> PILA: inserción (push) MEM --> PILA: inserción (push) Una instrucción de este tipo deberá especificar los siguientes elementos: • Tipo de transferencia. Para especificar el tipo existen dos alternativas:

- Una instrucción genérica, con un único CO, siendo el operando el que especifica el tipo de movimiento. Ejemplo MOVE

- Una instrucción diferente para cada tipo de movimiento. Ejemplos TR, STO, LD, PUSH, POP

• Direcciones de la fuente y destino de la transferencia. Son los operandos de la instrucción con sus correspondientes tipos de direccionamiento

• Tipo y tamaño del dato transferido: byte, media palabra, una palabra, doble palabra, etc. Ejemplo MC 68.X

MOVE tipo OPs DESTINO FUENTE

bWLW

Page 57: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

• Número de datos a mover: - Movimiento simple. Como el ejemplo anterior - Movimiento múltiple

Ejemplo: MC 68.X

Registros

MOVEM Dir Tamaño Reg. Dir Memoria Máscara de la lista de registros

Memoria

Reg --> MemMem --> Reg

16 o 32 bits

Ejemplo VAX-11

Memoria

Long. Fuente Dirección Fuente Long. Destino Dirección DestinoRelleno

Relleno

Memoria

MOVEC

Long. Fuente = Long. Destino => transferencia total Long. Fuente > Long. Destino => transferencia parcial: finaliza cuando se agota el destino Long. Fuente < Long. Destino => transferencia total: se completa con el carácter de relleno

2.2 Instrucciones de desplazamiento y rotación Una instrucción de este tipo deberá especificar los siguientes elementos: • Tipo de operación: desplazamiento aritmético, lógico, rotación (especificado en CO) • Cuenta: número de posiciones (normalmente 1 bit, especificado en CO) • Dirección: izquierda, derecha (especificado en CO o en el signo de Cuenta) • Tipo de dato: normalmente su longitud

Desplazamientos aritméticos

desplazamiento aritmético izquierdadesplazamiento aritmético derecha

S S 0

Desplazamientos lógicos

Page 58: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

desplazamiento lógico izquierdadesplazamiento lógico derecha

00

Rotaciones

rotación izquierdarotación derecha

2.3 Instrucciones lógicas y de manipulación de bits Son instrucciones para la manipulación de bits individuales dentro de una unidad direccionable (byte, palabra, etc.) a través de operaciones booleanas. Las instrucciones lógicas operan bit a bit sobre los vectores de bits de sus operandos, las más frecuentes en los repertorios son las siguientes:

• NOT (complementación) • AND (conjunción lógica) • OR (disyunción lógica) • XOR (disyunción exclusiva) • Equivalencia

Con la AND podemos realizar funciones de máscara cuando queramos seleccionar un conjunto

determinado de bits, y con la XOR podemos complementar bit a bit un segmento de bits. En el siguiente ejemplo hemos creado una máscara sobre los 4 bits menos significativos de R1 haciendo la AND con R2, y hemos complementado los 6 bits centrales de R1 haciendo la XOR con R3: <R1> = 1010 0101 <R2> = 0000 1111 <R3> = 0111 1110 <R1> AND <R2> = 0000 0101 <R1> XOR <R3> = 1101 1011 Las instrucciones de manipulación de bits permiten poner a 0 ó a 1 determinados bits del operando, en especial algunos bits del registro de estado.

2.4 Instrucciones aritméticas Casi todos los repertorios disponen de las operaciones aritméticas básicas de suma resta multiplicación

y división sobre enteros con signo (coma fija). Con frecuencia disponen también de operaciones sobre reales (coma flotante) y decimales (BCD).

Suma Resta Multiplicación División Cambio de signo Valor absoluto Incremento Decremento Comparación

Page 59: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

2.5 Instrucciones de transformación de datos Traducción: traducen valores de una zona de memoria utilizando una tabla de correspondencia.

Conversión: operan sobre el formato de los datos para cambiar la representación.

Por ejemplo cambio de BCD a binario o cambio de formato EBCDIC a formato ASCII como realiza la instrucción Translate (TR) del S/370.

2.6 Instrucciones de entrada/salida Estas instrucciones coinciden con las de referencia a memoria de carga y almacenamiento (LOAD

y STORE) para aquellos procesadores que disponen de un único espacio de direcciones compartido para Memoria y E/S.

Los procesadores con espacio de E/S independiente disponen de instrucciones específicas tales

como:

Inicio de la operación: START I/O

Prueba del estado: TEST I/O

Bifurcación sobre el estado: BNR (Branch Not Ready)

Entrada: IN que carga en el procesador un dato de un dispositivo periférico

Salida: OUT que lo envía a un dispositivo periférico.

2.7 Instrucciones de manipulación de direcciones Estas instrucciones calculan la dirección efectiva de un operando para manipularla como un dato

cargándola en un registro o una pila. Como ejemplos tenemos las instrucciones LEA y PEA del 68000:

LEA.L opf, An: dirección fuente --> An lleva dirección efectiva del operando fuente opf al registro de direcciones An PEA.L opf: dirección fuente --> Pila lleva dirección efectiva del operando fuente opf a la Pila de la máquina a través del registro SP con predecremento: dirección --> -(SP)

2.8 Instrucciones que operan sobre datos del Pentium II

Movimiento o transferencia de datos MOV PUSH PUSHA MOVSX MOVS LODS

Transferencia entre registros, o entre registro y memoria Inserción del operando en la pila Inserción de todos los registros en la pila Transfiere un byte a una palabra, o una palabra a una doble palabra con extensión del signo Mueven un byte, palabra o doble palabra de una cadena indexada Carga un byte, palabra o doble palabra de una cadena

Page 60: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

Desplazamiento y rotación SHL SHR SAL SAR ROL ROR

Desplazamiento lógico a la izquierda Desplazamiento lógico a la derecha Desplazamiento aritmético a la izquierda Desplazamiento aritmético a la derecha Rotación izquierda Rotación derecha

Lógicas y manipulación de bits AND BTS BSF SETcc

Conjunción lógica de los operandos BitTes&Set utilizada para primitivas de sincronismo en multiproceso Identifica el primer bit a 1 de una palabra o doble palabra y almacena su número de posición en un registro Pone un byte a cero o a uno dependiendo de algún bit del registro de estado

Transformación de datos XLAT Traduce con la ayuda de una tabla

Entrada/Salida IN OUT

Entrada de dato desde un dispositivo de E/S Salida de dato hacia un dispositivo de E/S

Manipulación de direcciones LEA Carga el desplazamiento del operando fuente (no su valor) en el destino

2.9 Instrucciones que operan sobre datos del 68000 (Ver bibliografía de Laboratorio de Estructura de Computadores)

2.10 Instrucciones paralelas SIMD (Single Instruction Multiple Data) Se trata de instrucciones muy optmizadas para realizar operaciones multimedia. Fueron

introducidas en el 96 en la microarquitectura P6 de la familia IA-32 como tecnología MMX del Pentium. Estas instrucciones operan sobre los datos siguiendo un modo SIMD(Single Instruction Multiple Data), es decir, realizando la misma operación (single instruction) en paralelo sobre múltiples secuencias de datos, consiguiendo una mejora de velocidad sobre la alternativa secuencial del orden de 2 a 8 veces. Las ventajas de estas extensiones SIMD se habían probado con éxito en los repertorios de otros procesadores, por ejemplo, en el SPARC de Sun Microsystems con el nombre de VIS (Visual Instruction Set) y PA-RISC de Hewlett-Packard con el nombre de conjunto de instrucciones MAX-2.

Los programas multimedia operan sobre señales muestreadas de vídeo o audio representadas por grandes vectores o matrices de datos escalares relativamente pequeños (8 a 16 bits) o incluso 32 bits para señales 3D Tipos de datos Los diferentes medios de una aplicación multimedia suelen utilizar el siguiente número de bits para codificar sus informaciones básicas: Gráficos y vídeos: utilizan 8 bits para cada punto (escala de grises) o componente de color. Audio: utiliza 16 bits para cada valor muestreado de la señal. Gráficos 3D: pueden utilizar hasta 32 bits por punto.

Page 61: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

Para poder realizar el procesamiento paralelo de estas informaciones básicas, MMX define los tres tipos de datos siguientes:

8 bytes empaquetados

2 dobles palabras empaquetadas

4 palabras empaquetadas

B

W

D

1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte

1 palabra 1 palabra 1 palabra 1 palabra

1 doble palabra 1 doble palabra

1 cuádruple palabras empaquetada

Q1 cuádruple palabra

Registros MMX

Existen 8 registros de propósito general MMX que se designan como mmi (i = 0,...7). Estos registros no tienen una realidad independiente dentro de la organización del procesador, se soportan sobre los 64 bits menos significativos de los registros de punto flotante de 80 bits. El campo de exponente del correspondiente registro de punto flotante (bits 64-78) y el bit de signo (bit 79) se pone a 1’s, convirtiendo el contenido en un valor NaN desde el punto de vista de los valores en punto flotante. De esta forma se reduce la posible confusión, asegurando que los valores de datos MMX no se tomen como valores en punto flotante. Las instrucciones MMX acceden sólo a los 64 bits menos significativos de los registros. Este uso dual de los registros de punto flotante no significa que se pueda mezclar en las aplicaciones ambos usos de forma indiscriminada. Dentro de una aplicación el programador deberá asegurar que el código MMX y el código en punto flotante estén encapsulados en rutinas separadas.

1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte 1 byte

Repertorio de instrucciones MMX Formato CSO [<tipo de datos>] <registros MMX> CSO = Código Simbólico de Operación Tipo de datos = B, W, D ó Q

Page 62: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

Ejemplo: instrucción de suma paralela con truncamiento de dos registros MMX con 8 bytes empaquetados

mmi

mmi

mmj

+ + + + + + + +

0101 0101 0101 0101 0101 0101 0101 0101

0101 0101 0101 0101 0101 0101 0101 0101

PADDB mmi, mmj

<mmi> + <mmj> mmj

1010 1010 1010 1010 1010 1010 1010 1010

Instrucciones Aritméticas Este grupo lo forman 9 instrucciones, 3 de suma, 3 de resta y 3 de multiplicación. En ellas se distingue entre la aritmética con saturación y con truncamiento. En la aritmética binaria con truncamiento el resultado de una operación con desbordamiento queda truncado por la pérdida del bit de desbordamiento. Por el contrario, en la aritmética con saturación, cuando la suma produce un desbordamiento, o la resta un desbordamiento negativo, el resultado se fija respectivamente al mayor o menor valor representable.

Ejemplo: 1111 0000 0000 0000 + 0011 0000 0000 0000 rebose --> 1 0010 0000 0000 0000 resultado en aritmética con truncamiento 1111 1111 1111 1111 resultado en aritmética con saturación

La aritmética con saturación se utiliza, por ejemplo, cuando se suman dos números que representan intensidad de imagen (nivel de negro., por ejemplo, o de un color base) y no se quiere que el resultado sea menos negro (menos intenso en el caso de color base) que la suma de las imágenes originales. Las instrucciones de este grupo son las siguientes:

Instrucciones Aritméticas Semántica PADD [B, P, D] mmi, mmj Suma paralela con truncamiento de 8 B, 4 W ó 2 D

PADDS [B, W] mmi, mmj Suma con saturación

PADDUS [B, W] mmi, mmj Suma sin signo con saturación

PSUB [B,W, D ] mmi, mmj Resta con truncamiento

PSUBS [B,W] mmi, mmj Resta con saturación

PSUDUS [B, W] mmi, mmj Resta sin signo con saturación

PMULHW Multiplicación paralela con signo de 4 palabras de 16 bits, con elección de los 16 bits más significativos del resultado de 32 bits

PMULLW mmi, mmj Multiplicación paralela con signo de 4 palabras de 16 bits, con elección de los 16 bits menos significativos del resultado de 32 bits

PMADDWD mmi, mmj Multiplicación paralela con signo de 4 palabras de 16 bits, y suma de pares adyacentes del resultado de 32 bits

Page 63: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

Instrucciones de Comparación La tecnología MMX dispone de instrucciones paralelas de comparación que generan una máscara de bits como resultado. Estas instrucciones posibilitan la realización de cálculos dependientes de los resultados anteriores eliminando la necesidad de instrucciones de bifurcación condicional. La máscara resultado de una comparación tiene todo 1’s en los elementos correspondientes a una comparación con resultado true, y todo 0’s cuando el resultado de la comparación es false:

SI

ENTONCES

= = = =

a3 a2 a1 a0

b3 b2 b1 b0

11...11 00...00 11...11 00...00

a3 = b3a2 ≠ b2a1 = b1a0 ≠ b0

Las instrucciones de este grupo son las siguientes:

Instrucciones de Comparación Semántica

PCMPEQ [B, W, D] mmi, mmj Comparación paralela de igualdad, el resultado es una máscara de 1´s si True y de 0´s si False

PCMPGT [B, W, D] mmi, mmj Comparación paralela de > (magnitud), el resultado es una máscara de 1´s si True y de 0´s si False

Instrucciones de Conversión La tecnología MMX utiliza dos conjuntos de instrucciones para realizar conversiones entre los tipos de datos MMX (PACK y UNPACK). Las instrucciones UNPACK toman un tipo de datos pequeño y producen uno mayor (por ejemplo, uno de 16 bits en otro de 32 bits). Las instrucciones UNPACK toman dos operandos y los entrelazan, como ocurre en el siguiente ejemplo para datos con componentes de 16 bits:

mmi

mmi mmjb3 b2 b1 b0 a3 a2 a1 a0

b1 a1 b0 a0

Si sólo se quiere desempaquetar elementos de 16 bits en elementos de 32 bits se ejecuta la instrucción UNPACK con un operando de todos 0’s. El resultado es 2 palabras de 32 bits con 0’s en las posiciones más significativas:

mmi

mmi mmj 0 0 0 0 a3 a2 a1 a0

0 a1 0 a0

Page 64: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

Las instrucciones de este grupo son las siguientes:

Instrucciones de Conversión Semántica PACKUSWB mmi, mmj Empaqueta palabras en bytes con saturación sin signo

PACKSS [WB, DW] mmi, mmj Empaqueta palabras en bytes con saturación con signo, o palabras dobles en palabras

PUNPCKH [BW, WD, DQ] mmi, mmj Desempaqueta en paralelo los B, W o D más significativos del registro MMX. Mezcla entrelazada

PUNPCKL [BW, WD, DQ] mmi, mmj Desempaqueta en paralelo los B, W o D menos significativos del registro MMX. Mezcla entrelazada

Instrucciones Lógicas El repertorio MMX dispone de 4 operaciones lógicas que realizan otras tantas operaciones bit a bit de este tipo sobre los 64 bits de los operandos. Combinadas con las máscaras resultantes de las instrucciones de comparación permiten la realización de cálculos alternativos en función de resultados anteriores. Las instrucciones de este grupo son las siguientes:

Instrucciones Lógicas Semántica PAND mmi, mmj AND lógico bit a bit (64 bits)

PANDN mmi, mmj AND NOT lógico bit a bit (64 bits)

POR mmi, mmj OR lógico bit a bit (64 bits)

PXOR mmi, mmj XOR lógico bit a bit (64 bits)

Instrucciones de Desplazamiento Este grupo lo constituyen operaciones de desplazamiento y rotación lógicos y aritméticos realizados en paralelo sobre cada uno de los elementos de datos de uno de sus operandos. El otro indica el número de bits de desplazamiento o rotación. Las instrucciones de este grupo son las siguientes:

Instrucciones de Desplazamiento Semántica PSLL [W, D, Q] mmi Desplazamiento lógico izquierda paralelo de W, D ó Q tantas veces

como se indique en el registro MMX o valor inmediato PSRL [W, D, Q] mmi Desplazamiento lógico derecha paralelo de W, D ó Q tantas veces como

se indique en el registro MMX o valor inmediato PSRA [W, D,] mmi Desplazamiento aritmético derecha paralelo de W ó D tantas veces

como se indique en el registro MMX o valor inmediato Instrucciones de Transferencia

La única instrucción de este grupo permite la transferencia de información entre registros MMX, la carga de registros MMX desde memoria, y el almacenamiento de los contenidos de los registros MMX en memoria:

Instrucción de Transferencia Semántica MOV [D, Q] mmi, memoria Transfiere una D ó Q a/desde el registro MMX

Ejemplo 1. Codificación MMX de un bucle iterativo for i = 0 to 3 if a[i] = color then Salida[i] = c[i] else Salida[i] = a[i]

Page 65: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

mm0

mm2

mm0

mm0

mm4 C

mm0

mm4

mm0 A

mm1 Color

mm0

OR

AND AND = (NOT-AND)mm0

= = = =

a3 a2 a1 a0

color color color color

11...11 00...00 11...11 00...00

c3 c2 c1 c0

c3 a2 c1 a0

11...11 00...00 11...11 00...00

c3 0 c1 0

a3 a2 a1 a0

0 a2 0 a0

00...00 11...11 00...00 11...11

Fase 1

Fase 2

El programa MMX que implementa el proceso iterativo es el siguiente: MOVQ mm0, A ;carga el array A MOVQ mm2, mm0 ;hace copia del array A MOVQ mm4, C ;carga el array C MOVQ mm1, Color ; carga Color PCMPEQW mm0, mm1 ;compara A con Color PAND mm4, mm0 ;selecciona elementos de C PANDN mm0, mm2 ;selecciona elementos de A POR mm0, mm4 ;genera la salida Ejemplo 2. Transposición de matrices

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

0000

1111

2222

3333

0123

0123

0123

0123

abcdabcdabcdabcd

ddddccccbbbbaaaa T

El proceso se realiza en dos pasos y supondremos que los elementos de la matriz son palabras de 16 bits. En la fase 1 se utiliza la instrucción UNPACK para entrelazar los elementos de filas adyacentes; y en la fase 2 se desempaquetan los resultados de la primera fase utilizando esta vez instrucciones UNPACK de doble palabra (32 bits) para producir la salida deseada. El proceso se resume en la siguiente figura:

Page 66: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

mm1mm3

mm2 mm1mm3mm4d3 d2 d1 d0 b3 b2 b1 b0

d1 c1 d0 c0

c3 c2 c1 c0 a3 a2 a1 a0

b1 a1 b0 a0

mm5mm1

mm3 mm5mm1mm3d1 c1 d0 c0 d1 c1 d0 c0

d0 c0 b0 a0

b1 a1 b0 a0 b1 a1 b0 a0

d1 c1 b1 a1

El programa MMX que implementa el proceso de transposición es el siguiente: MOVQ mm1, fila1 ;carga la primera fila de la matriz MOVQ mm2, fila2 ;carga la segunda fila de la matriz MOVQ mm3, fila3 ;carga la tercera fila de la matriz MOVQ mm4, fila4 ;carga la cuarta fila de la matriz PUNPCKLWD mm1, mm2 ;desempaqueta palabras orden inf. de filas 1 & 2, mm1=[b1,a1,b0,a0] PUNPCKLWD mm3, mm4 ;desempaqueta palabras orden inf. de filas 3 & 4, mm3=[d1,c1,d0,c0] MOVQ mm5, mm1 ;copia mm1 en mm5 PUNPCKLDQ mm1, mm3 ;desempaqueta dobles palabras orden inferior -> mm1=[d0,c0,b0,a0] PUNPCKHDQ mm5, mm3 ;desempaqueta dobles palabras orden superior -> mm1=[d1,c1,b1,a1] las otras 2 filas [d3,c3,b3,a3] y [d4,c4,b4,a4] se generan de forma análoga. Ejemplo 3: Función de desvanecimiento gradual de una imagen B y aparición simultanea de otra imagen A Las dos imágenes A y B se combinan en un proceso que efectúa sobre cada par de pixels homólogos la media ponderada por un factor de desvanecimiento fade que irá variando de 0 a 1, y su complementario (1-fade), que lo hará de 1 a 0

Pixel_resultante = Pixel_A * fade + Pixel_B*(1 - fade) El resultado es una transformación gradual de la imagen B en la imagen A a medida que fade pasa de 0 a 1. Cada pixel ocupa 1 byte y hay que desempaquetarlo previamente a un valore de 16 bits para adaptarlo al tamaño de las multiplicaciones MMX de 16 bits. Si una imagen tiene una resolución de 640 X 480 y en el cambio de imagen se emplean 255 valores posibles para fade (fade codificado con 1 byte), será necesario ejecutar el proceso 640*480*255 = 7.833.600 veces. Eso para el caso de imágenes en blanco y negro, si fuesen en color necesitaríamos esa cantidad multiplicada por 3 (tres componentes básicas del color), es decir 23.500.800. Para secuenciar las operaciones pongamos la expresión anterior de la intensidad del pixel resultante de la siguiente forma: Pixel_resultante = Pixel_A * fade + Pixel_B - Pixel_B*fade =

(Pixel_A - Pixel_B) * fade + Pixel_B

Page 67: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

Luego hay que restar al Pixel_A el valor del Pixel_B, multiplicar el resultado por fade y sumar finalmente el valor del Pixel_B. A estas operaciones hay que añadir las previas de movimiento de datos y desempaquetamiento. En la siguiente figura aparece el esquema del proceso:

mm0 mm1

empaqueta

= = = =

= = = =

+ + + +

x x x x

Desempaquetar

Imagen_BImagen_Amm0 mm1

mm0

mm3

mm0

mm1

mm0

mm0

Resta

r3*fade r2*fade r1*fade r0*fade

r3 r2 r1 r0

b3 b2 b1 b0

a3 a2 a1 a0 b3 b2 b1 b0

a3 a2 a1 a0

fade fade fade fade

b3 b2 b1 b0

nuevo3 nuevo2 nuevo1 nuevo0

r3 r2 r1 r0

El programa MMX que implementa este proceso es el siguiente: PXOR mm7, mm7 ;pone a cero mm7 MOVQ mm3, valor_fade ;carga en mm3 el valor de fade replicado 4 veces MOVD mm0, imagenA ;carga en mm0 la intensidad de 4 pixels de la imagen A MOVD mm1, imagenB ;carga en mm1 la intensidad de 4 pixels de la imagen B PUNPCKLBW mm0, mm7 ;desempaqueta a 16 bits los 4 pixels de mm0 PUNPCKLBW mm1, mm7 ;desempaqueta a 16 bits los 4 pixels de mm1 PSUBW mm0, mm1 ;resta la intensidad de la imagen B de la de A PMULHW mm0, mm3 ;multiplica el resultado anterior por el valor de fade PADDDW mm0, mm1 ;suma el resultado anterior a la imagen B PACKUSWB mm0, mm7 ;empaqueta en bytes los 4 resultados de 16 bits 3. Instrucciones de control del flujo de ejecución.

El orden de procesamiento de las instrucciones viene determinado por el avance del contador de programa, que lo hace de forma secuencial con todas las instrucciones salvo con las de los siguientes grupos:

Bifurcación condicional (e incondicional) Bifurcación a subrutinas

Page 68: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

24

Este grupo de instrucciones juega un triple papel en las posibilidades expresivas y computacionales del repertorio:

Toma de decisiones en función de resultados previamente calculados. Las instrucciones de bifurcación condicional cumplen este papel en el repertorio.

Reutilización de parte del código del programa. Los procesos iterativos son el caso más elemental

de reutilización de código, que se construyen con instrucciones de bifurcación condicional. El segundo caso es el de las subrutinas, con ellas se construyen los bloques (funciones y procedimientos) de los lenguajes de alto nivel.

Descomposición funcional del programa. Se trata del segundo papel que cumplen las subrutinas dentro de un programa: facilitar la modularidad del mismo, y con ello su depuración y mantenibilidad.

3.1 Instrucciones de bifurcación condicional Los tres componentes básicos de las instrucciones de salto condicional son: el código de operación, la condición de salto y la dirección destino.

CO Condición Dirección

Semántica:

IF Condición = True THEN CP <-- Dirección ELSE CP <-- <CP> + 1 Gestión de la Condición

• Generación

a) Implícita: la condición se genera como efecto lateral de la ejecución de una instrucción de manipulación de datos (ADD, SUB, LOAD, etc.) b) Explícita: existen instrucciones específicas de comparación o test que sólo afectan a las condiciones (CMP, TST, etc.)

• Selección

a) Simple: afecta a un sólo bit del registro de condiciones (Z, N, C, etc.) b) Compuesta: afecta a una combinación lógica de condiciones simples (C+Z, etc.)

simples compuestas nemotécnico Condición nemotécnico Condición CC (carry clear) CS (carry set) NE (not equal) EQ (equal) VC (overflow clear) VS (overflow set) PL (plus) MI (minus)

¬C C ¬Z Z ¬V V ¬N N

HI (high) LS (low or same) HS (high or same) LO (low) GE (greater or equal) LT (less than) GT (greater than) LE (less or equal)

¬C • ¬Z C + Z ¬C C

N xor ¬V N xor V

(N xor ¬V)and¬Z (N xor V)orZ

Page 69: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

25

• Uso

a) Con almacenamiento de la condición en un registro de estado o condición: una 1ª instrucción de gestión de datos o comparación genera la condición que se almacena en un registro de estado de la máquina, y una 2ª instrucción selecciona la condición y bifurca en caso que sea cierta (True)

b) Con almacenamiento de la condición en un registro general: una 1ª instrucción de gestión de datos o comparación genera la condición que se almacena en un registro general de la máquina que debe especificarse en la misma, y una 2ª instrucción selecciona la condición y bifurca en caso que sea cierta (True)

c) Sin almacenamiento de la condición: una única instrucción genera, selecciona la

condición y bifurca en caso que sea cierta (BRE R1, R2, DIR : salta a DIR si <R1> = <R2>)

Especificación de la dirección • direccionamiento directo (Jump) • direccionamiento relativo (Branch) • direccionamiento implícito (Skip: salta una instrucción si se cumple la condición))

3.2 Subrutinas Supongamos que en diferentes puntos de un programa se realiza la operación de elevar al cuadrado un número. El código simbólico (MC68000) de la operación sería el siguiente: MOVE.W N, D0 MULS D0, D0 MOVE,W D0, N El programador tiene dos opciones para repetir el código en los puntos donde aparezca la operación: las macros y las subrutinas. a) Una MACRO o subrutina abierta es una llamada que se realiza en aquellos puntos donde aparece la operación y que el ensamblador sustituye por el código correspondiente en un proceso denominado de expansión de macros.

N12

N22

MOVE.W N1, D0 MULS D0, D0MOVE.W D0, N1

MOVE.W N2, D0 MULS D0, D0MOVE.W D0, N2

Page 70: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

26

b) Una SUBRUTINA o subrutina cerrada por el contrario no repite el código en cada llamada, bifurca a un único código que una vez ejecutado devuelve control a la instrucción siguiente a la que realizó la bifurcación:

N12

N22

MOVE.W N, D0 MULS D0, D0MOVE.W D0, N

Cuatro problemas hay que resolver en el mecanismo de una subrutina (cerrada):

Controlar la dirección de vuelta a la instrucción siguiente a la que realizó la llamada

Organizar el paso de parámetros

Ubicar las variables locales de la subrutina

Preservar el contexto del programa Analizaremos las diferentes alternativas de resolución de estos problemas resaltando las ventajas e inconvenientes de cada una.

3.2.1 Control de la dirección de vuelta Para hacer que la dirección de vuelta de una subrutina sea siempre la siguiente a la de la

instrucción que realiza la llamada se pueden utilizar las siguientes alternativas: 1) Utilización de un registro Se trata de una alternativa fácil de implementar y rápida en su ejecución, sin embargo, impide el

anidamiento y la recursión.

dir

PC

Prog. Principal

RegistroP i i l

Subrutina

Sub

Salto Sub Retorno

dir

dir

Aunque en el 68000 no es necesario utilizar esta alternativa, su codificación podría ser la siguiente:

Page 71: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

27

cuadrado MOVE.W N, D0 MULS D0, D0 MOVE.W D0, N JMP (A0) ....... MOVE.W N1, N LEA.L siguiente1, A0 JMP cuadrado siguiente1 ...... MOVE.W N2, N LEA.L siguiente2, A0 JMP cuadrado siguiente2 .

. 2) Utilización de una posición de memoria de la subrutina Esta alternativa exige que antes de bifurcar a la subrutina se ponga la dirección de vuelta en una

posición de memoria perteneciente a la subrutina (por ejemplo, la primera). El retorno se realiza con un salto incondicional e indirecto sobre esta posición.

dir Salto Sub1

Prog. Principal Subrutina 1

Sub1

Subrutina 2

Sub2

dir1

dir

Salto Sub2

Retorno

dir1

Retorno

Esta alternativa permite un número ilimitado de llamadas anidadas, pero no permite la recursión. En el 68000 codificaríamos esta alternativa llevando el contenido de la posición de memoria a un registro de direcciones y realizando para implementar la vuelta un salto indirecto sobre él: vuelta --------------------------- cuadrado MOVE.W N, D0 MULS D0, D0 MOVE.W D0, N LEA.L vuelta, A0 JMP (A0) ....... LEA.L siguiente1, A1 MOVE.L A1, vuelta JMP cuadrado siguiente1 ....... LEA.L siguiente2, A1 MOVE.L A1, vuelta JMP cuadrado siguiente2 ......

Page 72: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

28

3) Utilización de una pila (stack) Inmediatamente antes de realizar la bifurcación a la subrutina se coloca la dirección de retorno en

la pila. Lo último que realiza la subrutina es recuperar esta dirección de retorno y llevarla al contador de programa. Esta alternativa permite el anidamiento y la recursión porque resuelve el orden de los retornos con el orden de inserción y extracción que impone la Pila. Se vuelve a la instrucción siguiente a la última llamada porque de la pila siempre se extrae el último retorno almacenado. En el 68000 existen dos instrucciones que realizan las dos acciones descritas:

JSR D1 bifurca a D1 almacenando previamente la dirección de la instrucción siguiente en la Pila

RTS lleva el último retorno introducido en la Pila al PC.

Sub3

dir JSR Sub1

Prog. Principal Subrutina 1

Sub1

Subrutina 3

dir1JSR Sub2

RTS RTS

Subrutina 2

Sub2

dir2JSR Sub3

RTS

La evolución de la Pila en las secuencias de llamadas y vueltas sería la siguiente:

La estructura del código para el 68000 sería la siguiente:

cuadrado MOVE.W N, D0 MULS D0, D0 MOVE.W D0, N RTS ......

JSR cuadrado siguiente1 .....

JSR cuadrado siguiente2 ..... ......

Pila despuésde la llamada a sub2

Pila despuésde la llamadaa sub1

Pila antes dela llamada asub1

dir dir

dir1

Pila después de la llamada a sub3

dir

dir1

dir2

Pila después de la vuelta de sub3

dir

dir1

Pila después de la vuelta de sub2

dir

Pila después de la vuelta de sub1

Page 73: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

29

3.2.2 Paso de parámetros 1) Utilización de un registro La utilización de registros para el paso de parámetros y devolución de resultados entre el

programa principal y la subrutina es el método más rápido (pues no hay que acceder a memoria) pero resulta bastante limitado si el procesador no dispone de un buen número de registros. (Veremos más adelante que en algunos procesadores RISC existen mecanismos especiales para realizar el paso de parámetros a través de registros con solapamiento).

2) Utilización de memoria La utilización de memoria para el paso de parámetros aporta mayor capacidad pero lentifica

el proceso por la necesidad de acceder a memoria. Tanto esta alternativa como la anterior impiden la recursión de las subrutinas

3) Utilización de la pila Cuando se realiza la llamada no sólo se introduce en la pila la dirección de retorno, sino que

previamente se introducen también los parámetros que deben transferirse. La subrutina accede a los parámetros actuales en la pila.

Sub

dir

Paso deparámetros

(PUSH)

JSR Sub

Liberaciónde parámetros

Prog. PrincipalSubrutina

RTS

La evolución de la Pila en el proceso de llamada y vuelta de subrutina sería la siguiente:

Pila despuésdel paso deparámetros

parámetro 1

parametro n

Pila después de la llamada a sub

parámetro 1

parametro n

dir

Pila antesdel paso deparámetros

Pila después de la vuelta de sub

parámetro 1

parametro n

Pila despuésde laliberacióndel área deparámetros

3.2.3 Preservación del contexto Para que no se modifique el contexto de operación del programa principal, será necesario que la subrutina comience preservando el valor todos los registros que se modifican en su ejecución, y finalice restaurando el valor de dichos registros:

Page 74: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

30

Sub

dir

Paso deparámetros

(PUSH)

JSR Sub

Liberaciónde parámetros

Prog. PrincipalSubrutina

Preservacióndel contexto

Restauracióndel contexto

RTS

En este caso la evolución de la Pila sería la siguiente:

Pila despuésdel paso deparámetros

parámetro 1

parametro n

Pila después de la llamada a sub

parámetro 1

parametro n

dir

Pila antesdel paso deparámetros

Pila después de preservar el contexto

parámetro 1

parametro n

Pila despuésde restaurarel contexto

Pila después de la vuelta de sub

parámetro 1

parametro n

Pila despuésde laliberacióndel área deparámetros

dir

contexto

parámetro 1

parametro n

dir

3.2.3 Variables locales de la subrutina Para que una subrutina con variables locales sea re-entrante y por tanto recursiva es necesario crear un conjunto nuevo de variables locales cada vez que se produce una nueva llamada sin haber finalizado la anterior. Para ello se puede utilizar de nuevo la Pila, que se convierte así en el soporte de la gestión dinámica de la memoria en las llamadas a subrutinas. El conjunto de información que se introduce en la pila como consecuencia de una llamada a subrutina se conoce como Registro de Activación (RA)

Sub

dir

Paso deparámetros

(PUSH)

JSR Sub

Liberaciónde parámetros

Prog. PrincipalSubrutina

Creación devariab. localesPreservacióndel contexto

Restauracióndel contexto

Destrucción devariab. locales

RTS

Page 75: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

31

La evolución de la Pila en el proceso de llamada, ejecución con variables locales y vuelta de subrutina sería la siguiente:

Pila después de la vuelta de sub

Pila despuésdel paso deparámetros

parámetros

Pila después de la llamada a sub

parámetro 1

dir

Pila después de preservar el contexto

parámetros

Pila despuésde restaurarel contexto

Pila después de liberarvar. locales

parámetros

dir

contexto

parámetros

dir

Pila después de reservar var. locales

parámetros

dir

variableslocales

parámetros

variableslocales

variableslocales

dir

Finalmente, para que el RA de una subrutina pueda recuperarse cuando se vuelve de una

llamada a otra subrutina, es necesario que antes de realizar la llamada se guarde en el nuevo RA (el de la subrutina llamada) la dirección del antiguo RA (el de la subrutina que realiza la llamada, o subrutina padre). De esta manera todos los RAs quedan enlazados a través de este nuevo campo:

R.Ade

Sub3

R.Ade

Sub2

R.Ade

Sub1

parámetros

Dir. Retorno

contexto

var. locales

D. RA padre

parámetros

Dir. Retorno

contexto

var. locales

D. RA padre

parámetros

Dir. Retorno

contexto

var. locales

D. RA padre

Sub3

Subrutina 1

Sub1

Subrutina 3

JSR Sub2

RTS RTS

Subrutina 2

Sub2

JSR Sub3

RTS

Subrutinaen

ejecuciónEstado de

la Pila

MC 68000 En el 68000 los registros de activación se gestionan con las instrucciones LINK y UNLK, y contienen los cuatro campos siguientes: • parámetros reales de la llamada a la subrutina, • dirección de retorno de la subrutina,

Page 76: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

32

• puntero del registro de activación del subprograma padre • zona de variables locales. El puntero al registro de activación actual se almacena en un registro de direcciones, que normalmente es el registro A6. El puntero de pila (SP) es el registro A7 y el puntero a las variables globales A5.

A7

A6

Parámetros

Dirección de retorno

Puntero al RA padre

Variables locales

PRAL

SP

A5PRAGVariables globales

La instrucción LINK sirve para reservar la memoria correspondiente a un registro de activación y actualizar el puntero al mismo, es decir, para asignar y enlazar el registro de activación. La instrucción UNLIK deshace el enlace y devuelve la memoria. La instrucción LINK tiene el siguiente formato:

LINK An, #desplazamiento An se usará como puntero al registro de activación, y el desplazamiento es un número entero

negativo, cuya magnitud es el número de bytes que ocupan las variables locales. Su semántica es la siguiente:

An --> -(SP); SP --> An; SP + desplazamiento --> SP

Es decir: 1. Guarda el registro en la pila. 2. Copia el contenido del puntero de pila en el registro. 3. Suma el número negativo al puntero de pila, decrementando el puntero de pila un número de bytes

igual al que ocupan las variables locales. Teniendo en cuenta que en la pila están ya los parámetros y la dirección de retorno de la subrutina la ejecución de esta instrucción inmediatamente después de entrar en la rutina tiene el siguiente efecto: • Guarda en la pila el puntero de registro de activación actual (A6), que contiene el puntero de registro

de activación de la subrutina padre. • Copia el puntero de pila en el puntero de registro de activación actual, que no varía durante la

ejecución de la subrutina. Con esto se enlaza el registro de activación de la subrutina con el de la subrutina padre.

• Decrementa el puntero de pila reservando espacio para las variables locales de la subrutina.

Page 77: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

33

La instrucción UNLK desasigna la zona de memoria local restituyendo el puntero de registro de activación de la subrutina padre. Tiene el siguiente formato:

UNLK An An es el registro de direcciones que se ha usado como puntero de registro de activación. Su

semántica es la siguiente: An --> SP; (SP)+ --> An

Es decir: 1. Copia el contenido del registro en el puntero de pila. 2. Saca un palabra larga de la pila y la almacena en el registro. La ejecución de esta instrucción antes del retorno de subrutina tiene el siguiente efecto: • Copia en el puntero de pila el contenido del puntero del registro de activación actual. Con esto se

libera la zona de variables locales de la pila. • Saca de la pila el puntero de registro de activación de la subrutina padre y lo coloca como puntero de

registro de activación actual. El puntero de pila queda apuntando a la dirección de retorno.

Programa Principal Sub

dir

Paso de parámetros(PUSH)

JSR Sub

Liberaciónde parámetros

SubrutinaLINK A6, #despla

Preservación delcontexto

Restauración delcontexto

UNLK A6RTS

Pentium El procesador Pentium II tiene instrucciones equivalentes a las del 68000 para realizar la gestión de las subrutinas: CALL, ENTER, LEAVE y RETURN equivalentes a JSR, LINK, UNLK y RTS.

Programa Principal Sub

dir

Paso de parámetros(PUSH)

CALL Sub

Liberaciónde parámetros

SubrutinaENTER

Preservación delcontexto

Restauración delcontexto

LEAVERETURN

Page 78: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

34

Sin embargo, en el 8088 y 8086 la subrutina se iniciaba con la siguiente secuencia de instrucciones: PUSH EBP MOV EBP, ESP SUB ESP, espacio_para_variables_locales dode EBP es el PRAL y ESP el Puntero de pila (SP). Esta secuencia de instrucciones es más rápida que su equivalente ENTER que se introdujo con el 80286 (10 ciclos ENTER frente a 6 la secuencia anterior). La instrucción ENTER se añadió al repertorio para sustituir a todo el código anterior, aunque su velocidad de ejecución es menor que la de dicho código. 4. Soporte de las instrucciones de control a las construcciones de alto nivel

4.1 Construcciones condicionales IF-THEN

LM.CMP A, BB¬ope L<sentencias>

L ......

L.A.N.IF A ope B THEN

<sentencias1>

IF-THEN-ELSE

L.M.CMP A, BBope L1<sentencias2>BRA L2

L1 <sentencias1>L2 ......

L.A.N.IF A ope B THEN

<sentencias1>ELSE

<sentencias2>

IF-THEN-ELSE-IF

L.M.CMP A1, B1B¬ope1 L1<sentencias1>BRA L

L1 CMP A2, B2B¬ope2 L2<sentencias2>BRA L

L2 .......

Ln-1 CMP An, BnB¬open Ln<sentenciasn>BRA L

Ln <sentencias>L ........

L.A.N.IF A1 ope1 B1 THEN

<sentencias1>ELSE IF A2 ope2 B2 THEN

<sentencias2>......ELSE IF An open Bn THEN

<sentenciasn>ELSE

<sentencias>

Page 79: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

35

CASE L.M.

TABLAL0L1L2...LnLn+1

MOVE K, A1LEA TABLA(A1), A2JMP (A2)

L0 <sentencias0>BRA FIN

L1 <sentencias1>BRA FIN

....Ln <sentenciasn>

BRA FINLn+1 <sentenciasn+1>FIN ........

L.A.N.CASE K OF

0: <sentencias1>1: <sentencias2>......n: <sentenciasn>

defecto: <sentencias>

4.2 Construcciones iterativas WHILE-DO

L.M.INI CMP A, B

B¬ope L<sentencias>BRA INI<sentencias1>

L ......

L.A.N.WHILE A ope B

BEGIN<sentencias1>

END DO

REPEAT

L.M.INI <sentencias>

CMP A, BB¬ope INI......

L.A.N.REPEAT

<sentencias>UNTIL A ope B

FOR

L.M.MOVE B, ACMP C, ABGT L2<sentencias>INC A

BRAL1 ......

L.A.N.FOR A = B TO C DO

<sentencias>

Page 80: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 4: Rendimiento del procesador.

1. Medidas del rendimiento de un computador 2. Influencia en el rendimiento de las alternativas de diseño. 3. Influencia de los compiladores de lenguajes de alto nivel. 4. Procesadores RISC y CISC.

1. Medidas del rendimiento de un computador Cuando se quieren comparar diferentes procesadores es necesario establecer el criterio de medida que

permita cuantificar los resultados de la comparación. En este sentido existen dos extremos que aclarar previamente: la unidad de medida y el patrón de medida. El primero se refiere a la métrica utilizada para cuantificar la comparación. Y el segundo al objetivo mismo de la comparación.

El tiempo es la unidad de medida por excelencia cuando se comparan varios procesadores, aunque no siempre coincidan los puntos de vista de los diferentes observadores. Así, el usuario de un procesador puede decir que el procesador A es mejor que el procesador B cuando A ejecuta su programa en menor tiempo que B. En cambio el responsable de un centro de cálculo entenderá que A es mejor que B si es capaz de ejecutar mayor número de trabajos por unidad de tiempo. El primero estará interesado en el tiempo de respuesta (response time) del procesador mientras que el segundo lo estará en la productividad (throughput). Pero en ambos casos la clave es el tiempo: el procesador que realiza la misma cantidad de trabajo en el menor tiempo posible será el más rápido, la diferencia estriba en si medimos una tarea (tiempo de respuesta) o muchas (productividad).

El patrón de medida más significativo es el conjunto de programas reales que se ejecutan en los procesadores. Sin embargo aquí surge de nuevo y con más intensidad la diversidad de puntos de vista. En efecto, el usuario de un editor de texto querrá medir el rendimiento de un procesador respecto a la eficiencia para ejecutar su programa, que posiblemente no coincida con el punto de vista del usuario de un programa de diseño gráfico. Fijar de la forma más objetiva posible los patrones o programas respecto a los cuales se mida el rendimiento de un procesador será pues una tarea polémica y siempre cuestionada por la comunidad de interesados en los resultados de la medida.

1.1 Tiempo de ejecución

El tiempo que tarda un programa en ser ejecutado por un computador puede ser difícil de medir, debido a los Sistemas Operativos Multitarea y a los dispositivos de E/S, que tienen tiempos de respuesta que son independientes de la frecuencia de reloj del ordenador. Por ello es necesario diferenciar entre el tiempo que tarda una CPU en ejecutar el código de un programa, el tiempo que utiliza el S.O. para realizar sus tareas, y el tiempo necesario para acceder a los dispositivos de E/S.

El tiempo de ejecución de un programa lo dividiremos en las siguientes componentes: • Tiempo de respuesta • Tiempo de CPU A su vez, el tiempo de CPU lo dividimos en: • Tiempo de CPU utilizado por el usuario. • Tiempo de CPU utilizado por el S.O.

Tiempo de respuesta Es el tiempo necesario para completar una tarea, incluyendo los accesos al disco, a la memoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el usuario.

Tiempo de CPU Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el tiempo de espera

debido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide en:

Page 81: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el programa del usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros programas

Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su gestión interna.

La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65%, donde: • Tiempo de CPU del usuario = 90.7 segundos • Tiempo de CPU utilizado por el sistema = 12.9 segundos • Tiempo de CPU= 90.7 seg.+ 12.9seg = 103.6 • Tiempo de respuesta = 2 minutos 39 segundos =159 segundos • Tiempo de CPU = 65% del tiempo de respuesta = 159 segundos*0.65 = 103.6 • Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de respuesta =

159 segundos*0.35 = 55.6 segundos El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU del usuario sobre un sistema no cargado. El tiempo de CPU de un programa podemos expresarlo como: Tiempo_de_CPU = Número_de_ciclos_de_reloj_de_la_ CPU • Tc donde Tc = Duración_del_ciclo_de_reloj

FcCPUladerelojdeciclosdeNúmeroCPUdeTiempo _________ =

donde Fc = Frecuencia_de_reloj = 1/Tc Además del número de ciclos de reloj que necesita la ejecución de un programa, también se puede medir el número de instrucciones NI ejecutadas, y podremos calcular el número medio de Ciclos de reloj Por Instrucción o CPI como:

NICPU_la_de_reloj_de_ciclos_de_NúmeroCPI =

por lo que el tiempo de CPU podemos expresarlo como: Tiempo_de_CPU = NI • CPI • Tc. o bien:

FcCPINICPUdeTiempo •

=__

• NI: depende del compilador y la arquitectura utilizada, y se expresa en instrucciones/programa

• CPI: depende de la arquitectura y estructura (organización) de la máquina, y se expresa en ciclos de

reloj/instrucción

• Tc: Depende de la estructura y la tecnología de la máquina, y se expresa en segundos/ciclo de reloj En determinadas situaciones de diseño puede ser útil calcular el número total de ciclos de reloj de la CPU como:

Page 82: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

Número_de_ciclos_de_reloj_de_la_CPU = i

n

1ii NICPI •∑

=

donde NIi representa el número de veces que el grupo de instrucciones i es ejecutado en un programa, y CPIi representa el número medio de ciclos de reloj para el conjunto de instrucciones i. El tiempo de CPU se evalúa en este caso mediante una de las 2 siguientes expresiones:

Tiempo_de_CPU = ⎟⎠

⎞⎜⎝

⎛•∑

=i

n

ii NICPI

1• Tc

Fc

NICPICPUdeTiempo

i

n

ii ⎟⎟

⎞⎜⎜⎝

⎛•

=∑=1__

El número medio de ciclos por instrucción vendrá dado por:

)(1

1

NINI

CPINI

NICPICPI i

n

ii

i

n

ii

•=⎟⎟⎠

⎞⎜⎜⎝

⎛•

= ∑∑

=

=

Esta última expresión calcula el CPI multiplicando cada CPIi individual por la fracción de ocurrencias de las instrucciones i en el programa. CPIi debe ser medido, y no calculado a partir de la tabla del manual de referencia, ya que se deben incluir los fallos de cache y otras ineficiencias del sistema de memoria. Ejemplo Se consideran 2 alternativas para implementar el salto condicional en un procesador: CPU A: Una instrucción de comparación genera el código de condición, y una de salto bifurca en función del valor de código generado. CPU B: Una única instrucción de salto que incluye la comparación. En ambos casos la instrucción de salto consume 2 ciclos de reloj, las demás instrucciones consumen 1 ciclo. Se ignoran las pérdidas debidas al sistema de memoria. En la CPU A, el 20% de las instrucciones ejecutadas son saltos condicionales, y como en esta CPU cada salto es precedido por una comparación, otro 20% de las instrucciones ejecutadas son comparaciones. Debido a que la CPU A no incluye la comparación en el salto, su ciclo de reloj es un 25% más rápido que el de la CPU B. Bajo estas condiciones ¿Qué CPU es más rápida? Solución

80100

Comparaciones

Saltos

Otrasinst rucciones

CPU A20 %

20 %

60 %

CPU B20 %

60 %

Page 83: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

Tc_B/ Tc_A = 1.25 ==> Tc_B = 1.25 • Tc_A NI_B = 0.8 • NI_A Tiempo de CPU_A = NI_A • CPI_A • Tc_A Tiempo de CPU_B = NI_B • CPI_B • Tc_B Tiempo de CPU_B = (0. 8 • NI_A ) • CPI_B• ( 1.25 • Tc_ A ) Tiempo de CPU_B = (0.8 • 1.25) • NI_A * CPI_B • Tc_A. CPI_A = (NI_salto_A /NI_A) •CPI_salto + (NI_resto_A/NI_A) •CPI_resto = (20/100) •2 + (80/100)•1 = 0.2 • 2 + 0.8 • 1 = 1.2 CPI_B = (NI_salto_B /NI_B) •CPI_salto + (NI_resto_B/NI_B) •CPI_resto = (20/80) •2 + (60/80)•1 = 0.25•2 + 0.75•1 = 1.25 Luego la alternativa de diseño correspondiente a la CPU A sería más rápida. La ganancia de velocidad de la alternativa A sobre la B valdrá: Tiempo de CPU_A = 1.2 • NI_A • Tc_A. Tiempo de CPU_B = 1.25 • NI_A • Tc_A

0416.12.125.1

CPU_A de TiempoCPU_B de Tiempo

==

1.2 Otros parámetros de rendimiento

MIPS (Millones de Instrucciones Por Segundo)

666 10*CPIFc

Tc* 10 *CPI1

10 _ejecución _de TiempoNIMIPS ===

610*MIPSNIejecución_de_Tiempo =

• Los MIPS dependen del repertorio de instrucciones, por lo que resulta un parámetro difícil de utilizar para

comparar máquinas con diferente repertorio • Varían entre programas ejecutados en el mismo computador • Pueden variar inversamente al rendimiento, como ocurre en máquinas con hardware especial para punto

flotante, que emplean menor tiempo que las que no disponen de este hardware y por tanto tienen mejor rendimiento. Sin embargo presentan un menor valor de los MIPS porque ejecutan menor número de instrucciones

En definitiva, los MIPS pueden fallar al dar una medida del rendimiento, puesto que no reflejan el tiempo de ejecución. Por esta razón se han venido utilizando los MIPS relativos, que miden cuantas veces más tarda en ejecutarse un programa en la máquina a medir que en una de referencia, que por definición tiene un MIPS (VAX-11/780):

arefeerencirelativos MIPSmedir a máquina la en ejecución de Tiempo

referencia de máquina la en ejecución de TiempoMIPS •=

Page 84: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

MIPSrefeerencia = 1 (MIPS del VAX-11/780)

MFLOPS (Millones de operaciones en punto FLOtante Por Segundo)

610 ejecución de Tiempoprograma un de flotante coma en soperacione de Número

MFLOPS•

=

• Existen operaciones en coma flotante rápidas (como la suma) o lentas (como la división), por lo que puede

resultar una medida poco significativa. Por ello se han utilizado los MFLOPS normalizados, que dan distinto peso a las diferentes operaciones. Por ejemplo: suma, resta, comparación y multiplicación se les da peso 1; división y raíz cuadrada peso 4; y exponenciación, trigonométricas, etc. peso 8:

Productividad (throughput) Número de tareas ejecutadas en la unidad de tiempo 1.3 Ganancia de velocidad (speedup): Ley de Amdahl

Para calcular el aumento de rendimiento que puede obtenerse al mejorar alguna parte de un computador se utiliza la Ley de Amdahl: La mejora obtenida en el rendimiento global de un computador al utilizar algún modo de ejecución más rápido está limitada por la fracción de tiempo que se puede utilizar ese modo más rápido. La ganancia de velocidad global de un sistema se define por el siguiente cociente:

)Tcon(mejora_con_ejecución_de_Tiempo)Tsin(mejora_sin_ejecución_de_Tiempogvglobal =

Si llamamos fm a la fracción de tiempo que puede utilizarse el modo de ejecución más rápido, es decir, introduciendo una mejora, y gvmejora la ganancia de velocidad propia del elemento o modo mejorado, la ganancia de velocidad global del sistema vendrá dada por la siguiente expresión:

tiempoahorradoen lamejora

tiempo enque sepuedeutilizar lamejora

fm * Tsin / gvmejora

(1 - fm) * Tsin

fm * Tsin

TsinTcon = (1 - fm) * Tsin + fm * Tsin / gvmejora

Page 85: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

mejora

m

mejora

mm

global

gvf)fm1(

1

gvTsin*fTsin*)f1(

TsinTconTsingv

+−=

+−==

Esta expresión recoge la forma cuantitativa de la ley de Amdahl. Si obtenemos el límite cuando la ganancia de velocidad del modo mejorado tiende a infinito, es decir, suponemos que el modo mejora infinitamente, obtenemos lo siguiente:

∞→

−=

mejora

mglobal

gv

f11gv_lim

Es decir, que la ganancia de velocidad global se mantiene limitada por una expresión de la fracción fm

gvmejora

1/(1-fm)

gvglobal

Ejemplo Un disco magnético 10 veces más rápido que en la máquina original. El disco se utiliza sólo el 40% del tiempo de ejecución. ¿Cual es la ganancia de velocidad global?

gvglobal

fr=0.4gvmejora = 10 CPU

gvmejora = 10; fm = 0.4 ==> gvglobal =

104.0)4.01(

1

+− =

64.01 = 1.56

lim gvglobal = )4.01(1−

= 1.666 (máxima ganancia para velocidad del disco infinita)

gvmejora --> ∞ 1.4 Rendimiento medio armónico Sean P1, P2, ..., Pi,...Pm un conjunto de programas que representan modos de funcionamiento de una carga de trabajo. Por ejemplo, P1, puede representar el modo de funcionamiento entero, P2 el modo real, etc. Sean r1, r2, ..., ri,... rm las velocidades de ejecución en instrucciones/segundo de los programas anteriores, y t1, t2, ... , ti,... tm los tiempos de ejecución medios por instrucción en segundos/instrucción: ti = 1/ri Se definen los siguientes parámetros: Tiempo de ejecución medio aritmético

∑∑==

==m

1i i

m

1iia r

1m1t

m1T

Page 86: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

Velocidad de ejecución media armónica

∑=

== m

1i i

ah

r1

mT1R

Tiempo de ejecución medio ponderado

∑=

=m

1i i

i*a r

fT con f1, f2, ... fi, ...fm los pesos de los programas P1, P2, ..., Pi,...Pm; 1f

m

1ii =∑

=

Velocidad de ejecución media armónica ponderada

∑=

== m

1i i

i*a

*h

rf

1T1R

Velocidad de ejecución media aritmética

∑=

=m

1iia r

m1R

Velocidad de ejecución media aritmética ponderada

∑=

=m

1iiia r*fR

Problema cuando se promedian velocidades en lugar de tiempos P1 ejecuta 10.000 instrucciones en 5 segundos => r1 = 2.000 instrucciones/segundo P2 ejecuta 10.000 instrucciones en 2 segundos => r2 = 5.000 instrucciones/segundo

10.000 instruciones 10.000 instrucciones

5 segundos 2 segundos

P1 P2

Velocidad de ejecución media aritmética Ra = (2.000 + 5.000)/2 = 3.500 instrucciones/segundo Si con esta velocidad media calculamos las instrucciones ejecutadas en 7 segundos = 3.500 * 7 = 24.500 instrucciones ≠ 20.000 Ta = 1/2(5/10.000 + 2/10.000) = 7/20.000 => Rh = 1/Ta =20.000/7 =2.857,14 Si con esta velocidad media armónica calculamos las instrucciones ejecutadas en 7 segundos = 2.857,14 * 7 = 20.000 Ejemplo Se ejecutan 4 programas P1, P2, P3, P4 (que representan 4 modos de ejecución de un programa general) sobre 3 computadores A, B y C. Por cada programa se ejecutan 108 instrucciones, resultando los siguientes tiempos en segundos:

Tiempo de ejecución (seg) Computador Programa A B C

P1 P2 P3 P4

1 10.000

500 100

10 100

1000 800

20 20 50

100

Page 87: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

¿Cuál es el computador más rápido? Los MIPS da cada procesador para cada programa valdrán:

MIPS Computador Programa A B C

P1 P2 P3 P4

100 0,1 0,2 1

10 1

0,1 0,125

5 5 2 1

∑∑==

==m

1i i

m

1iia r

1m1t

m1T

Tiempos de ejecución medios aritméticos Ta(A) = 1/4*(1/100+1/0,1+1/0,2+1) = 16,01/4 = 4,002 Ta(B) = 1/4*(1/10+1+1/0,1+1/0,125) = 19,1/4 = 4,775 Ta(C) = 1/4*(1/5+1/5+1/2+1) = 1,9/4 = 0,475 Velocidades de ejecución medias armónicas Rh(A) = 1/ Ta (A) = 0,25 Rh(B) = 1/ Ta (B) = 0,21 Rh(C) = 1/ Ta (C) = 2,12 Luego el mejor computador (más rápido) es C, seguido de A, y seguido de B Velocidad de ejecución media geométrica

∏=

=m

i

mig RR

1

/1

Velocidad de ejecución media geométrica ponderada

∏=

=m

i

fig

iRR1

*

Se utiliza con medidas de rendimiento normalizadas con respecto a una máquina de referencia. 1.5 Patrones de medida (Benchmarks)

Para evaluar el rendimiento de un computador podemos utilizar diferentes técnicas: • Modelos analíticos (matemáticos) de la máquina • Modelos de simulación (algorítmicos) de la máquina • La máquina real

Las dos primeras alternativas se utilizan cuando la máquina no está disponible. Los modelos analíticos tienen limitado su ámbito de utilización por la dificultad de expresar en forma de ecuaciones matemáticas el comportamiento detallado de la máquina y su carga de trabajo. Se utilizan en fases muy tempranas de diseño para realizar estimaciones generales del rendimiento.

Page 88: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

Los modelos de simulación pueden construirse con mayor precisión, recogiendo especificaciones detalladas de diseño. Sin embargo, estos modelos requieren una gran capacidad computacional cuando se incorporan todos los componentes básicos de la máquina.

En la tercera alternativa es la máquina o máquinas reales las que se evalúan con el fin de disponer de algún criterio de elección. En este caso (y posiblemente en algunos modelos de simulación) será necesario disponer de un conjunto de programas representativos de la carga real de trabajo que vaya a tener la máquina, y con respecto a los cuales se realicen las medidas. Estos programas patrones se denominan benchmarks, y serán el objeto de estudio de este apartado.

Podemos utilizar diferentes criterios no excluyentes a la hora de clasificar los benchmarks que se utilizan en la actualidad para evaluar los computadores.

Comenzaremos con una clasificación general en función del ámbito de aplicación que representan, es decir, el tipo de recursos computacionales que mayoritariamente intervienen en la evaluación. En este sentido los clasificaremos en:

• Enteros: aplicaciones en las que domina la aritmética entera, incluyendo procedimientos de búsqueda,

operaciones lógicas, etc. Por ejemplo, SPECint2000.

• Punto flotante: aplicaciones intensivas en cálculo numérico con reales. Por ejemplo, SPECfp2000 y LINPACK.

• Transacciones: aplicaciones en las que dominan las transacciones on-line y off-line sobre bases de datos.

Por ejemplo, TPC-C. En segundo lugar los agruparemos por la naturaleza del programa que implementan:

• Programas reales: Compiladores, procesadores de texto, etc. Permiten diferentes opciones de ejecución. Con ellos se obtienen las medidas más precisas

• Núcleos (Kernels): Trozos de programas reales. Adecuados para analizar rendimientos específicos de las

características de una determinada máquina: Linpack, Livermore Loops • Patrones conjunto (benchmarks suits) Conjunto de programas que miden los diferentes modos de

funcionamiento de una máquina: SPEC y TPC. • Patrones reducidos (toy benchmarks): Programas reducidos (10-100 líneas de código) y de resultado

conocido. Son fáciles de introducir y ejecutar en cualquier máquina (Quicksort,...) • Patrones sintéticos (synthetic benchmarks): Código artificial no perteneciente a ningún programa de

usuario y que se utiliza para determinar perfiles de ejecución. (Whetstone, Dhrystone)

A continuación estudiaremos con algún detalle tres de los benchmarks con mayor difusión. LINPACK

Es una colección de subrutinas Fortran que analizan y resuelven ecuaciones lineales y problemas de mínimos cuadrados. Los sistemas de ecuaciones lineales que contempla utilizan diferentes formas de las matrices: generales, en banda, simétricas, triangulares etc. Se diseñó para medir el rendimiento en supercomputadores a finales de los 70 y principio de los 80 (Dongarra). Lo componen las siguientes subrutinas:

matrices generales matrices en banda matrices definidas positivas matrices en banda definidas positivas

Page 89: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

matrices indefinidas simétricas matrices triangulares matrices tridiagonales descomposición de Cholesky descomposición QR actualización de las descomposiciones QR y Cholesky descomposición valores singulares

La tabla siguiente muestra los resultados de este benchmark para algunos computadores corriendo bajo un sistema operativo y utilizando un compilador concreto. La primera columna numérica presenta el resultado en Mflops/segundo, es decir, en millones de operaciones en punto flotante por segundo para una matriz de orden 100. La segunda para una matriz de orden 1000, y la tercera presenta el rendimiento de pico de la máquina. Para resolver un sistema de n ecuaciones se realizan 2/3n3 + 2n2 ( se cuentan tanto las sumas y as multiplicaciones) .

Computador OS/Compilador N=100 Mflops/s

N=1000 Mflops/s

Peak Mflops/s

Cray T916 (8 proc. 2.2 ns) cf77 (6.0) -Zp -Wd-68 10800 14400Cray T916 (4 proc. 2.2 ns) cf77 (6.0) -Zp -Wd-68 5711 7200Cray T916 (2 proc. 2.2 ns) cf77 (6.0) -Zp -Wd-68 2943 3600Cray T916 (1 proc. 2.2 ns) cf77 (6.0) -Zp -Wd-68 522 1576 1800Cray C90 (16 proc. 4.2 ns) CF77 5.0 -Zp -Wd-e68 479 10780 15238Cray C90 (8 proc. 4.2 ns) CF77 5.0 -Zp -Wd-e68 468 6175 7619Cray 3-128 (4 proc. 2.11 ns) CSOS 1.0 level 129 421 2862 3792Hitachi S-3800/480(4 proc 2 ns) 20640 32000Hitachi S-3800/380(3 proc 2 ns) 16880 24000Hitachi S-3800/280(2 proc 2 12190 16000Hitachi S-3800/180(1 proc 2 ns) OSF/1 MJ FORTRAN:V03-00 408 6431 8000Cray 3-128 (2 proc. 2.11 ns) CSOS 1.0 level 129 393 1622 1896Cray C90 (4 proc. 4.2 ns) CF77 5.0 -Zp -Wd-e68 388 3275 3810Cray C90 (2 proc. 4.2 ns) CF77 5.0 -Zp -Wd-e68 387 1703 1905Cray C90 (1 proc. 4.2 ns) CF77 5.0 -Zp -Wd-e68 387 902 952NEC SX-3/44R (4 proc. 2.5 ns) 15120 25600NEC SX-3/42R (4 proc. 2.5 ns) 8950 12800NEC SX-3/41R (4 proc. 2.5 ns) 4815 6400NEC SX-3/34R (3 proc. 2.5 ns) 12730 19200NEC SX-3/32R (3 proc. 2.5 ns) 6718 9600NEC SX-3/31R (3 proc. 2.5 ns) 3638 4800NEC SX-3/24R (2 proc. 2.5 ns) 9454 12800NEC SX-3/22R (2 proc. 2.5 ns) 5116 6400NEC SX-3/21R (2 proc. 2.5 ns) 2627 3200NEC SX-3/14R (1 proc. 2.5 ns) f77sx 040 R2.2 -pi*:* 368 5199 6400NEC SX-3/12R (1 proc. 2.5 ns) f77sx 040 R2.2 -pi*:* 368 2757 3200Cray 3-128 (1 proc. 2.11 ns) CSOS 1.0 level 129 327 876 948NEC SX-3/44 (4 proc. 2.9 ns) 13420 22000NEC SX-3/24 (2 proc. 2.9 ns) 8149 11000NEC SX-3/42 (4 proc. 2.9 ns) 7752 11000NEC SX-3/22 (2 proc. 2.9 ns) 4404 5500NEC SX-3/14 (1 proc. 2.9 ns) f77sx 020 R1.13 -pi*:* 314 4511 5500NEC SX-3/12 (1 proc. 2.9 ns): f77sx 020 R1.13 -pi*:* 313 2283 2750Cray Y-MP/832 (8 proc. 6 ns) CF77 4.0 -Zp -Wd-e68 275 2144 2667Fujitsu VP2600/10 (3.2 ns) FORTRAN77 EX/VP V11L10 249 4009 5000Cray Y-MP/832 (4 proc. 6 ns) CF77 4.0 -Zp -Wd-e68 226 1159 1333Fujitsu VPP500/1(1 proc. 10 ns) FORTRAN77EX/VP V12L20 206 1490 1600Cray Y-MP M98 (8 proc. 6 ns) CF77 5.0 -Zp -Wd-e68 204 1733 2666Fujitsu VP2200/10 (3.2 ns) FORTRAN77 EX/VP V12L10 203 1048 1250Cray 2S/4-128 (4 proc. 4.1 ns CSOS 1.0 level 129 202 1406 1951

Page 90: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

SPEC: (System Performance and Evaluation Cooperative)

SPEC es una sociedad sin ánimo de lucro cuya misión es establecer, mantener y distribuir un conjunto estandarizado de benchmarks que se pueden aplicar a las últimas generaciones de procesadores. Se han sucedido ya 4 generaciones de benchmarks: SPEC89, SPEC92, SPEC95 y SPEC2000. En lo que sigue nos limitaremos a la última, que es la única en vigor. SPEC2000

SPEC CPU2000 Los diseña el OSG (Open Systema Group) de SPEC que es el encargado de los benchmarks de componentes y sistemas. En este apartado se encuentran los SPECint2000 y SPECfp2000, representativos de las aplicaciones enteras y reales (punto flotante). Dentro de SPEC existen otros dos grupos HPG (High Performance Group) y GPCG (Graphics Performance Caracterization Group). La máquina de referencia de los SPEC CPU2000 es la UltraSPARC10 con un procesador UltraSPARC IIi, a 300 MHz y 256 MB de memoria. Esto significa que todos los resultados se calculan como ratios frente a la máquina de referencia, que por definición tiene SPECint2000 = 100, y SPECfp2000 = 100. SPECint2000 Lo integran los siguientes programas:

gzip: programa de compresión de datos que utiliza el algoritmo de Lempel-Ziv (LZ77).

vpr(versatil place and route): implementa los procesos de ubicación (placement) y conexionado (routing) de un circuito digital sobre bloques lógicos de FPGAs. Pertenece a la clase de programas de optimización combinatoria. Utiliza simulated annealing como procedimiento de optimización.

gcc: compilador de C que genera código para el procesdor Motorola 88100.

mcf: Programa de planificación temporal (scheduling) de transporte público que utiliza el código

MFC del método simplex de red (versión especializada del algoritmo simplex de programación lineal).

crafty: programa de juego de ajedrez por computador con un número significativo de operaciones

enteras y lógicas tales como AND, OR, XOR y desplazamientos.

parser: analizador sintáctico de inglés basado en gramáticas de enlace (link grammar) con un diccionario de mas de 60.000 palabras.

eon: trazador de rayos (ray tracer) que transmite un número de líneas 3D (rayos) sobre un modelo

poligonal 3D, calcula la intersección entre las líneas y los polígonos, y genera nuevas líneas para calcular la luz incidente en los puntos de intersección. El resultado final es una imagen vista por cámara.

perlbmk: versión del lenguaje de script Perl en el que se han eliminado las características

específicas del SO.

Page 91: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

gap: implementa un lenguaje diseñado para computar en grupos (GAP: Groups, Algorithm and Programming).

vortex: procede de un OODBMS (sistema de gestión de bases de datos orientado a objetos) que se

ha adaptado para conformarlo a las exigencias de SPEC2000.

bzip2: basado en la versión 0.1 de bzipb.

twolf: paquete de ubicación (placement) y conexionado (routing) en el proceso de diseño de circuitos integrados basados en celdas standard. Utiliza el algoritmo de simulated annealing.

SPECffp2000 Lo integran los siguientes programas:

wupwise: cromodinámica cuántica

swim: modelado del agua superficial

mgrid: resolutor multi-malla: campo potencial 3D

applu: ecuaciones diferenciales parciales elípticas/parabólicas

mesa: librería gráfica 3D

galgel: dinámica de fluidos

art: reconocimiento de imágenes/redes neuronales

equake: simulación de propagación de ondas sísmicas

facerec: procesamiento de imagen: reconocimiento del rostro

ammp: química computacional

lucas: teoría de números/prueba de números primos

fma3d: simulación de choques por elementos finitos

sixtrack: diseño de aceleradores de física nuclear de alta energía

apsi: meteorología: distribución de contaminantes

Page 92: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

CINT2000 Result

Copyright © 1999-2002 Standard Performance Evaluation Corporation

Intel Corporation Intel D850MD motherboard (2.0A GHz, Pentium 4 processor)

SPECint2000 = 735 SPECint_base2000 =722

SPEC license # 13

Tested by: Intel Corporation Test date: Nov-2001 Hardware Avail: Jan-2002 Software Avail: Oct-2001

Benchmark Reference

Time Base

Runtime Base Ratio Runtime Ratio

164.gzip 1400 184 762 182 767

175.vpr 1400 316 443 315 444

176.gcc 1100 128 862 128 861

181.mcf 1800 326 552 326 553

186.crafty 1000 147 681 146 686

197.parser 1800 249 723 250 721

252.eon 1300 142 917 122 1066

253.perlbmk 1800 209 860 209 860

254.gap 1100 116 944 116 945

255.vortex 1900 162 1171 159 1192

256.bzip2 1500 259 580 254 591

300.twolf 3000 596 503 594 505

SPECint_base2000 722 SPECint2000 735

Vendor: Intel Corporation Model Name: Intel D850MD motherboard (2.0A GHz,

Pentium 4 processor) CPU: Pentium 4 processor (2.0A GHz, 400

MHz bus) CPU MHz: 2000

FPU: Integrated CPU(s) enabled: 1

CPU(s) orderable: 1 Parallel: No

Primary Cache: 12k micro-ops I + 8KBD on chip Secondary Cache: 512KB(I+D) on chip

L3 Cache: N/A Other Cache: N/A

Memory: 256 MB (2 128 MB PC800 RDRAM non-ECC modules)

Disk Subsystem: IBM DTLA-307030 ATA-100 Other Hardware: None

Software Operating System: Windows XP Professional(Build 2600)

Compiler: Intel C++ Compiler 5.0.1 Build 010525Z Microsoft Visual C++ 6.0 SP5(for libraries)

File System: FAT32 System State: Default

Tiempo en una UltraSPARC10 con procesador UltraSPARCIIi, 300 MHz y 256 MB de memoria = 100 SPECint2000

Page 93: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

CINT2000 Result Copyright © 1999-2000 Standard Performance Evaluation Corporation

Intel Corporation Intel VC820 (1.0 GHz Pentium III)

SPECint2000 = 410 SPECint_base2000 =407

SPEC license # 13

Tested by: Intel Corporation Test date: Mar-2000 Hardware Avail: Mar-2000 Software Avail:

Benchmark Reference

Time Base

Runtime Base Ratio Runtime Ratio

164.gzip 1400 288 486 287 488

175.vpr 1400 426 329 426 329

176.gcc 1100 297 371 295 373

181.mcf 1800 710 254 710 254

186.crafty 1000 200 499 200 499

197.parser 1800 523 344 523 344

252.eon 1300 320 406 320 406

253.perlbmk 1800 312 576 313 576

254.gap 1100 290 379 289 381

255.vortex 1900 272 697 266 714

256.bzip2 1500 413 363 398 377

300.twolf 3000 844 355 820 366

SPECint_base2000 407 SPECint2000 410

Hardware Vendor: Intel Corporation

Model Name: Intel VC820 (1.0 GHz Pentium III) CPU: 1.0 GHz Pentium III processor

CPU MHz: 1.0 GHz FPU: Integrated

CPU(s) enabled: 1 CPU(s) orderable: 1

Parallel: No Primary Cache: 16KBI + 16KBD on-die

Secondary Cache: 256KB(I+D) on-die ECC L3 Cache: N/A

Other Cache: N/A Memory: 256 MB PC800 RDRAM non-ECC

Disk Subsystem: IBM DJNA 371800 ATA-66 Other Hardware: Diamond Multimedia Viper 770 Ultra

TNT2 AGP

Software Operating System: Windows 2000 (Build 2195)

Compiler: Intel C Compiler 4.5 for Windows 2000 Microsoft Visual C++ 6.0 C libraries, SmartHeap library

File System: FAT32 System State: Default

Page 94: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

CFP2000 Result Copyright © 1999-2002 Standard Performance Evaluation Corporation

Intel Corporation Intel D850EMV2 motherboard (2.0A GHz, Pentium 4 processor)

SPECfp2000 = 773 SPECfp_base2000 = 764

SPEC license # 13

Tested by: Intel Corporation Test date: May-2002 Hardware Avail: May-2002 Software Avail: Apr-2002

Benchmark Reference

Time Base

Runtime Base Ratio Runtime Ratio

168.wupwise 1600 168 952 167 957

171.swim 3100 235 1317 233 1333

172.mgrid 1800 246 730 245 736

173.applu 2100 263 798 258 815

177.mesa 1400 183 767 182 769

178.galgel 2900 268 1084 265 1094

179.art 2600 489 532 484 538

183.equake 1300 144 905 137 950

187.facerec 1900 201 947 200 951

188.ammp 2200 434 507 431 511

189.lucas 2000 189 1057 189 1057

191.fma3d 2100 282 746 281 746

200.sixtrack 1100 302 365 293 376

301.apsi 2600 454 572 454 573

SPECfp_base2000 764 SPECfp2000 773

Intel Corporation Model Name: Intel D850EMV2 motherboard (2.0A

GHz, Pentium 4 processor) CPU: Pentium 4 processor (2.0A GHz, 400

MHz bus) CPU MHz: 2000

FPU: Integrated CPU(s) enabled: 1

CPU(s) orderable: 1 Parallel: No

Primary Cache: 12k micro-ops I + 8KBD on chip Secondary Cache: 512KB(I+D) on chip

L3 Cache: N/A Other Cache: N/A

Memory: 256 MB (2 128 MB PC800-40 RDRAM non-ECC modules)

Disk Subsystem: IBM 120GXP 80 GB IC35L080AVVA07-0 ATA-100

Software Operating System: Windows XP Professional(Build 2600)

Compiler: Intel C++ Compiler 6.0 Build 020321Z Intel Fortran Compiler 6.0 Build 020321Z Microsoft Visual C++ 6.0 SP5(for libraries)

File System: FAT32 System State: Default

Page 95: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

La siguiente gráfica muestra la evolución de los procesadores en los últimos años caracterizados por su valor de SPECint con referencia en el VAX 11/780

TPC (Transaction Processing Performance Council) TPC es un consorcio de 47 fabricantes de software y hardware entre los que se encuentran Compaq, Digital,

IBM, NCR, Sun, Informix, Intel, Microsoft y Oracle dedicado al diseño de benchmarks para la medida de rendimiento de los sistemas informáticos. Estos benchmarks analizan la mayoría de los aspectos del sistema en relación con el procesamiento de transacciones, es decir, accesos de consulta y actualización a bases de datos. Tiene el inconveniente de la cantidad de tiempo que requieren las pruebas (meses) haciendo que su coste sea elevado (millones de pesetas). Los benchmarks TPC-A , TPC-B y TPC-C ya están en desuso. TPC-D fue sustituido en abril de 1999 por TPC-H y TPC-R.

TPC-H: es un benchmark de soporte a la decisión. Consta de un conjunto preguntas (queries)

específicas, orientadas a la actividad comercial.

TPC-R: es similar a TPC-H pero permite optimizaciones adicionales basadas en el conocimiento de las preguntas.

Además, TPC ha introducido un benchmark para medir las transacciones en la WEB:

TPC-W: La carga de trabajo se configura en un entorno de comercio que simula las actividades de un servidor de WEB orientado a las transacciones comerciales.

Estudiaremos con más detalle en los siguientes parágrafos los actuales TPC-R y TPC-H. TPC-R y TPC-H

Los benchmarks TPC-R y TPC-H fueron introducidos para sustituir al TPC-D como estándar industrial para aplicaciones comerciales. Los dos son muy similares ya que modelan la misma aplicación comercial (base de datos, preguntas y funciones de refresco). Se diferencian en las reglas de implementación , ya que mientras TPC-H limita el uso de índices y esquemas de particiones, TPC-R no limita el uso de estas estructuras en la base de datos.

Page 96: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

Base de Datos La base de datos de TPC-H y TPC-R utiliza un esquema en la 3ª forma normal y responde al diagrama relación-entidad de la siguiente figura (8 tablas):

part partsupp

supplier customer orders

regionnation

lineitem

TPC dispone de un generador de datos para todas las tablas de la base dependiendo del factor de escala SF. El factor de escala determina el tamaño de los datos de la base, por ejemplo, SF=100 significa que la suma de todas las tablas de la base es igual a 100 GB. Las dos tablas mayores son lineitem y orders que contienen el 83% de los datos. El tamaño de todas las tablas excepto nation y region tienen un tamaño proporcional al factor de escala. Carga de Trabajo Las cargas de trabajo para ambos benchmarks constan de los siguientes componentes:

• Construcción de la base de datos • Ejecución de 22 preguntas de solo-lectura en modo monousuario y multiusuario • Ejecución de 2 funciones de refresco.

La construcción de la base de datos incluye todos los tiempos de respuesta para crear las tablas, cargar los

datos, crear índices, definir y validar restricciones, etc. Las 22 preguntas están definidas en SQL-92 como plantillas (templates), por lo que antes de ser ejecutada

sobre la base de datos se tiene que realizar la sustitución de parámetros. Se han elegido para mostrar la capacidad del sistema utilizando todos los recursos en contextos monousuario y multiusuario.

Las dos funciones de refresco (RF1 y RF2) modelan la carga de nueva información (RF1) y la eliminación de información obsoleta (RF2). RF1 inserta nuevas filas en la tabla lineitem y orders, mientras que RF2 elimina el mismo número de filas de las mismas tablas. Métrica de rendimiento

La principal métrica de rendimiento de TPC es la métrica de rendimiento compuesta (QphH/QphR). Para calcular la métrica compuesta de un sistema para un factor de escala dado, hay que ejecutar un test de potencia seguido por un test de capacidad de procesamiento (throughput). Después se combinan los resultados de ambos tests para calcular la métrica compuesta. En un test de potencia se ejecuta la función de refresco RF1, seguida por la ejecución de las 22 preguntas en modo de único usuario, y por la ejecución de la función de refresco RF2. En el test de capacidad se ejecutan las 22 preguntas (flujos de preguntas Si) en orden predefinido en múltiples sesiones concurrentes. Además en una sesión separada se ejecuta secuencialmente un par de actualizaciones (RF1, RF2) por cada flujo de preguntas.

Page 97: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

Test de Potencia Test de Capacidad (throughput) Inserción Flujo de preguntas Borrado

RF1

Q1 Q2 Q3 . . . Q21 Q22

RF2

S1 S2

....

Sn RF1

RF2

.

.

.RF1

RF2

tiempo

El número mínimo de flujos depende del factor de escala, según la tabla siguiente: Factor de Escala (SF) Flujos (S) 1 2 10 3 100 4 300 6 1000 7 3000 8 10000 9 Los resultados de los test de potencia y capacidad se utilizan para calcular la potencia de procesamiento (Powre@Size) y la capacidad de procesamiento (Throughput@Size) La potencia de procesamiento se calcula como la media geométrica de los tiempos de respuesta correspondientes a las preguntas y funciones de refresco. La unidad es preguntas/hora. La media geométrica reduce los efectos de las preguntas con tiempos de respuesta muy cortos y muy largos. Para un factor de escala SF dado, la potencia de procesamiento se calcula como:

24

22

1

2

1

)0,(*)0,(

3600@

∏ ∏=

=

=

=

∗=

i

i

j

j

jRIiQI

SFSizePower

• i=1,2,...22;j=1,2 • QI(i,0): tiempo de respuesta en segundos de la query Qi del test de potencia (power) • RI(j,0): tiempo de respuesta en segundos de la función de refresco RFj • 3600: segundos (= 1 hora)

La capacidad de procesamiento se calcula como la razón del número total de preguntas ejecutadas a lo largo del intervalo de ejecución. La unidad es preguntas/hora. Para un factor de escala SF viene dada por:

Page 98: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

SFT

SSizeThroughputS

∗∗∗

=360022@

• Ts:tiempo de respuesta de la ejecución multi flujo • S: número de flujos • 3600: segundos (= 1 hora) • 22: número de preguntas por flujo

La métrica de rendimiento compuesta (QphH para TPC-H y QphR para TPC-R) se calcula como:

SizeThroughputSizePowerSizeQphRSizeQphH @@@,@ ∗= TPC-H y TPC-R también definen una métrica precio/rendimiento como la división del precio total del sistema por el resultado de la métrica compuesta. 100 GB Results

Rank Company System QphH Price/QphH System Availability Database Operating

System Date

Submitted Cluster

1

HP AlphaServer ES45 Model

68/1000

5,578 404 US $ 07/15/02

Oracle 9iR2 w/Real

Application Cluste

HP Tru64 Unix

V5.1A/IPK 07/15/02 Y

2

IBM eServer x350 with DB2 UDB

2,960 336 US $ 06/20/02 IBM DB2 UDB 7.2

Turbolinux 7 Servers

02/01/02 Y

3

SGI 1450 Server with DB2 UDB EEE v7.2

2,733 347 US $ 10/31/01 IBM DB2 UDB EEE 7.2 Linux 2.4.3 05/11/01 Y

4

HP Proliant DL760 X900

1,933 89 US $ 12/31/02

Microsoft SQL Server 2000 Enterprise

Edition

Microsoft Windows

.NET Enterprise

Server

07/31/02 N

5

ProLiant 8000-X700-8P

1,699 161 US $ 08/01/00 Microsoft SQL

2000

Microsoft Windows

2000 07/21/00 N

6

HP Proliant DL580 G2

1,695 82 US $ 06/26/02

Microsoft SQL Server 2000 Enterprise

Edition

Microsoft Windows

2000 Advanced

Server

06/26/02 N

7

e-@ction Enterprise

Server ES5085R

1,669 169 US $ 01/31/01 Microsoft SQL Server 2000

Microsoft Windows

2000 12/22/00 N

8

Netfinity 8500R

1,454 200 US $ 08/01/00 Microsoft SQL Server 2000

Microsoft Windows

2000 05/23/00 N

9

ProLiant 8000-8P

1,308 174 US $ 08/01/00 Microsoft SQL

2000

Microsoft Windows

2000 04/05/00 N

10

NetServer LXr8500

1,291 195 US $ 08/18/00 Microsoft SQL Server 2000

Microsoft Windows

2000 08/18/00 N

Page 99: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

300 GB Results

Rank Company System QphH Price/QphH System Availability

Database Operating System

Date Submitted

Cluster

1

Compaq ProLiant

DL760 x900-64P

12,995 199 US $ 06/20/02 IBM DB2 UDB 7.2

Microsoft Windows

2000 Advanced

Server

04/09/02 Y

2

NUMA-Q 2000

7,334 616 US $ 08/15/00 IBM DB2 UDB 7.1

DYNIX/ptx 4.5.1 05/03/00 N

3

Compaq AlphaServer ES45 Model

68/1000

5,976 453 US $ 06/01/02 Oracle 9i R2 Enterprise

Edition

Compaq Tru64 Unix V5.1A/IPK

05/05/02 Y

4

NUMA-Q 2000

5,923 653 US $ 09/05/00 IBM DB2 UDB 7.1

DYNIX/ptx 4.5.1 09/05/00 N

5

Unisys ES7000 Orion 130 Enterprise

Server

4,774 219 US $ 03/31/03

Microsoft SQL Server

2000 Enterprise Ed. 64-bit

Microsoft Windows .NET Server 2003 Datacenter

Edt.

10/17/02 N

6

NUMA-Q 2000

4,027 652 US $ 09/05/00 IBM DB2 UDB 7.1

DYNIX/ptx 4.5.1 09/05/00 N

7

AlphaServer ES40 Model

6/667 2,832 1,058 US $ 02/14/01

Informix XPS 8.31 FD1

Compaq Tru64 UNIX

V5.1 12/19/00 Y

8

ProLiant 8000-8P

1,506 280 US $ 11/17/00 Microsoft

SQL Server 2000

Microsoft Windows

2000 11/17/00 N

9

NetServer LXr 8500

1,402 207 US $ 08/18/00 Microsoft

SQL Server 2000

Microsoft Windows

2000 08/18/00 N

1,000 GB Results

Rank Company System QphH Price/QphH System Availability Database Operating

System Date

Submitted Cluster

1

HP 9000 Superdome Enterprise

Server

25,805 231 US $ 10/30/02

Oracle 9i Database Enterprise

Edition v9.2.0.2.0

HP UX 11.i 64-bit 06/24/02 N

2

Compaq ProLiant DL760

X900-128P

22,361 255 US $ 06/20/02 IBM DB2 UDB 7.2

Microsoft Windows

2000 Advanced

Server

02/06/02 Y

3

Sun Fire[TM]

15K server 18,802 256 US $ 07/17/02

Oracle 9i Database Enterprise

Edition

Sun Solaris 8

01/17/02 N

4

WorldMark 5250

18,542 638 US $ 07/27/01 Teradata V2R4.1

MP-RAS 3.02.00 10/09/01 Y

5

HP 9000 Superdome Enterprise

13,160 564 US $ 09/05/01 Orcacle9i.9.0.1 Enterprise Edi

HP UX 11.i 64-bit 08/06/01 N

Page 100: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

Server

6

IBM RS/6000 SP

550 12,866 649 US $ 08/15/00 IBM DB2 UDB

7.1 IBM AIX

4.3.3 06/15/01 Y

7

HP 9000 Superdome Enterprise

Server

9,754 814 US $ 02/13/01

Informix Extended

Parallel Ser 8.31FD1

HP UX 11.i 64-bit

02/13/01 N

8

Sun Fire 6800

4,735 581 US $ 10/31/01 IBM DB2 UDB EEE 7.2

Sun Solaris 8

06/11/01 N

3000 GB Results

Rank Company System QphH Price/QphH System Availability

Database Operating System

Date Submitted

Cluster

1

HP 9000 Superdome Enterprise

Server

27,094 240 US $ 10/30/02

Oracle 9i Database Enterprise

Edition v9.2.0.2.0

HP UX 11.i 64-bit 08/26/02 N

2

Sun Fire[TM] 15K Server

with Oracle9i R2

23,813 237 US $ 10/30/02 Oracle 9i R2 Enterprise

Edition Sun Solaris 9 06/26/02 N

3

Compaq ProLiant DL760

X900-128P

21,053 291 US $ 06/20/02 IBM DB2 UDB 7.2

Microsoft Windows

2000 Advanced

Server

02/06/02 Y

4

WorldMark 5250

18,803 989 US $ 07/27/01 Teradata V2R4.1

MP-RAS 3.02.00 10/09/01 Y

5

HP 9000 Superdome Enterprise

Server

17,908 569 US $ 05/15/02

Oracle 9i Database Enterprise

Edition

HP UX 11.i 64-bit

12/17/01 N

6

Sun Starfire Enterprise 10000 with

Oracle9i

10,764 1,250 US $ 06/19/01

Oracle9i Database

Ent. Edition 9.0.1

Sun Solaris 8 04/13/01 Y

100 GB Results ^ Compan

y System QphR Price/QphR System Availability Database Date

Submitted

PowerEdge 6600/1.6 GHz Xeon

MP 4,452 41 US $ 04/04/03 Oracle 9i R2 Enterprise

Edition 10/11/02

1,000 GB Results

^ Company System QphR Price/QphR System Availability Database Date Submitted

WorldMark 5200 17,529 737 US $ 02/15/00 NCR Teradata V2R3.0 08/23/99

WorldMark 5200 21,254 607 US $ 08/31/00 NCR Teradata V2R4.0 03/06/00

Page 101: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

Otros benchmarks

Whetstone: Benchmark sintético representativo de la programación numérica escalar (punto flotante). Está formado por un conjunto de bucles con una alta localidad de referencia, lo que favorece a las cache pequeñas. Utiliza muchas llamadas a librería, lo que posibilita mejorar los resultados optimizando estas librerías. El resultado se expresa en whetstone/segundo, es decir, instrucciones del benchmark/segundo. Se basa en una estadística recogida por Brian Wichmann del National Physical Laboratory de Inglaterra, utilizando un compilador Algo 60 que traducía Algo a instrucciones de la máquina imaginaria Whetstone, una pequeña ciudad a las afueras de Leicester.

Dhrystone: Benchmark sintético que utiliza un juego de palabras relativas a su antecesor whetstone y es

representativo de programas generales (enteros) escritos originariamente en Fortran. Reúne operaciones aritméticas de enteros, tratamiento de caracteres y punteros. Está constituido por un bucle de gran tamaño. El resultado se expresa en dhrystone/segundo, es decir, número de ejecuciones del bucle por segundo. En la actualidad está también disponible en ADA, Pascal y C.

2. Influencia en el rendimiento de las alternativas de diseño Revisaremos en este apartado las alternativas de diseño de los repertorios de instrucciones (ISA)

estudiadas en los temas anteriores con el objeto de seleccionar aquellas que aportan mayor rendimiento al procesador. En muchos casos las alternativas se contemplan junto con datos reales de su presencia en el código máquina que generan los compiladores para programas reales. El resultado será la caracterización de un repertorio (ISA) que definirá las propiedades generales de los procesadores de tipo RISC. Nosotros proyectaremos estas propiedades sobre un procesador hipotético denominado DLX, que es un compendio de las principales características de los actuales procesadores RISC: MIPS, Power PC, Precision Architecture, SPARC y Alpha. 2.1 Tipo de elementos de memoria en la CPU Tres alternativas:

Tipo de máquina Ventajas Inconvenientes Pila Acumulador • Instrucciones cortas • Elevado tráfico con Memoria Registros • Mayor flexibilidad para los compiladores

• Más velocidad (sin acceso a Memoria) • Instrucciones más largas

El tráfico con memoria es uno de los cuellos de botella más importantes para el funcionamiento del procesador. Se disminuye este tráfico con instrucciones que operen sobre registros, ya que el acceso es más rápido y las referencias a los registros se codifican con menor número de bits (instrucciones más cortas). Conclusión

Se opta por el tipo de máquina con registros de propósito general (RPG) 2.2 Referencias a memoria en instrucciones ALU Tres alternativas:

Tipo de máquina Ventajas Inconvenientes Registro-Registro • Ninguna referencia a Memoria

• Codificación fija => formato simple • Generación de código simple

• Mayor número de instrucciones por programa

Registro-Memoria • Menor número de instrucciones • Mayor tráfico con Memoria

Page 102: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

• Formato más complejo Memoria-Memoria • Muchos tipos de direccionamiento

• Nnúmero mínimo de instrucciones por programa

• Mucho acceso a memoria • Formato complejo

Conclusión

Dentro de las máquinas con registros de propósito general, las que operan en la instrucciones ALU de registro - registro (RR) son las que optimizan el uso de registros, quedando el acceso a memoria limitado a las instrucciones de carga y almacenamiento.

Almacenamiento

Carga

RegistrosGenearales

Memoria

R0

R1

R2

R3..

.

.Rn

ALU

2.3 Orden de ubicación de los datos Dos alternativas: big-endian litle-endian

Selección basada en motivos de compatibilidad

Conclusión

Es indiferente desde el punto de vista del rendimiento. Serán motivos de compatibilidad con otros procesadores los que determinen una elección

2.4 Alineamiento de datos Dos alternativas: acceso alineado • más rápido acceso no alineado • más lento en general

• mayor flexibilidad Conclusión

Datos alineados, o si el procesador permite lo no alineados, será el compilador quien genere siempre datos alineados.

2.5 Direccionamientos

Los modos de direccionamiento pueden reducir significativamente el número de instrucciones de un programa. Sin embargo, añaden complejidad al repertorio aumentando con ello el CPI (número medio de ciclos por instrucción). En la gráfica siguiente aparecen los resultados de medir los modos de direccionamiento que utilizan 3 programas del SPEC89 sobre la arquitectura VAX (una de las que más modos de direccionamiento dispone): Tex, Spice y gcc. Como puede observarse en la gráfica, los direccionamientos inmediato y con desplazamiento dominan con diferencia sobre los demás. No se ha incluido el direccionamiento relativo que se utiliza casi exclusivamente en las instrucciones de bifurcación.

Page 103: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

24

3%

40%

39%

11%

6%

1%

3%

55%

17%

3%

16%

6%

0%

32%

43%

24%

0%

1%

0% 10% 20% 30% 40% 50% 60%

Otros

Desplazamiento

Inmediato

Indirecto registro

Indexado

Indirecto memoria

Frecuencia de los modos de direccionamiento

TeXSpicegcc

El direccionamiento registro + desplazamiento alcanza más del 75%. El tamaño de los desplazamientos no aparece en la gráfica pero varía de 12 a 16 bits en un porcentaje que va del 75% al 99%. El tamaño del campo inmediato varia de 8 a 16 bits en un porcentaje que va del 50% al 80%. Conclusiones Una máquina eficiente, que favorezca los casos frecuentes (que como hemos visto por la ley de Amdahl son los que más aportan a la ganancia de velocidad global de la máquina) debería soportar:

Direccionamientos registro + desplazamiento y el inmediato Tamaños de los desplazamientos de 12 a 16 bits Tamaño del dato inmediato de 8 a 16 bits La supresión de los modos complejos no afectan decididamente al rendimiento

2.5 Datos operando

La siguiente figura muestra el porcentaje de referencias en los benchmarks anteriores a los objetos de datos mas usuales: byte, media palabra, palabra y doble palabra. Se desprende que los accesos a datos de longitud palabra o doble palabra dominan sobre los demás. Si a ello añadimos la necesidad de acceder al elemento mínimo que define la resolución del direccionamiento, así como el soporte del tipo carácter, es decir, el byte; y la existencia en la mayoría de los procesadores de operaciones hardware en punto flotante, llegamos a las siguientes Conclusiones

enteros de 16 y 32 bits flotantes de 64 bits caracteres de 8 bits

Page 104: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

25

5%

4%

91%

0%

0%

0%

34%

66%

11%

0%

89%

0%

0% 20% 40% 60% 80% 100%

BYTE

Media Palabra

Palabra

Doble Palabra

Frecuencia de la referencia

TeXSpicegcc

2.6 Operaciones

Se cumple en la práctica que las operaciones más simples son las que más se repiten en los programas, concretamente las operaciones de carga, salto condicional, comparación, almacenamiento, suma, and, resta, transferencia entre registros y saltos-retornos de subrutina se llevan el 96% de las ocurrencias, para el caso de programas enteros ejecutándose sobre la familia x86, tal como muestra la siguiente tabla:

ordenación instrucción x86 % total ejecutadas 1 2 3 4 5 6 7 8 9 10

carga salto condicional comparación almacenamiento suma and resta transferencia RR salto a subrutina retorno de subrutina TOTAL

22% 20% 16% 12% 8% 6% 5% 4% 1% 1%

96%

Conclusiones

El repertorio ISA de un procesador eficiente no debera incluir muchas más operaciones que las aparecidas en la tabla anterior.

2.8 Sentencias de salto condicional

En la siguiente figura tenemos el porcentaje de aparición de los tres tipos de sentencias de ruptura de secuencia. Como se puede observar las bifurcaciones condicionales ocupan el primer lugar (un 75%), por lo que resulta importante diseñar de forma eficiente el mecanismo de generación de condiciones y salto sobre el valor de las mismas.

Page 105: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

26

78%

12%

10%

75%

12%

13%

18%

16%

66%

0% 10% 20% 30% 40% 50% 60% 70% 80% 90%

Condicional

Bifurcación

Llamada/retorno

Frecuencia de un salto de este tipo

TeXSpicegcc

Si analizamos la distribución de los saltos condicionales observamos (figura siguiente) que más de un 70% son saltos sobre igual o diferente, y un gran número son comparaciones con cero. Esto justifica que algunos procesadores incorporen un registro cuyo contenido es siempre igual a cero.

89%

0%

11%

75%

25%

0%

72%

3%

25%

0% 20% 40% 60% 80% 100%

EQ/NE

GT/LE

LT/GE

Frecuencia de tipos de comparaciones en saltos

TeXSpicegcc

La gráfica siguiente muestra la distribución del desplazamiento (número de bits) relativa al PC:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

bits del desplazamiento

0

5

10

15

20

25

30

35

40

enteros

punto flotante

Conclusiones

Instrucciones que integren el test sobre la condición y el correspondiente salto Registro cuyo contenido es inalterable igual a cero. Desplazamiento de 8 bits

2.9 Llamadas a procedimientos (subrutinas)

Aunque las instrucciones de llamada a procedimientos no son tan frecuentes como las de bifurcación condicional, su consumo de tiempo en los LAN es elevado debido a la gestión de los registros de activación (RA)

Page 106: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

27

que deben de realizar. Resulta, pues, conveniente optimizar la ejecución de estas instrucciones. Del análisis de los datos se deducen los siguientes hechos: • Más del 98% de las llamadas utilizan menos de 6 parámetros • Más del 92% de las llamadas utilizan menos de 6 variables locales • La variación del nivel de anidamiento en la que se mueve un programa se mantiene relativamente pequeña a

lo largo de una secuencia de llamadas/retorno, como se muestra en la siguiente figura:

t = 33

profundidaddeanidamiento

w = 5

retorno

llamada

tiempo en unidades de llamada/retorno

Puede observarse que la variación del nivel de anidamiento se ha mantenido dentro de un valor w = 5 durante una secuencia de t = 33 llamadas/retornos de procedimientos. Conclusiones

Este comportamiento de los programas en lo relativo a las llamadas a procedimientos se ha explotado en algunos procesadores (por ejemplo, SPARC) utilizando una ventana de registros para soportar los entornos, marcos o registros de activación (RA). Este mecanismo lo analizamos en el punto siguiente.

Registros de propósito general: ventanas para soportar llamadas a procedimientos El procesador dispone de n registros físicos r0, r1, ...rn de los que en cada momento sólo son visibles para

el programador (ventana) m de ellos: R0, R1, ..., Rm (m < n). Cuando todavía no se ha realizado ningún salto a subrutina, los registros visibles coinciden con los m primeros registros físicos. Cuando se ejecuta una instrucción de salto, los registros visibles se desplazan sobre los físicos de tal manera que se da un solapamiento entre los últimos antes del salto y los primeros después del salto. Es en los registros de solapamiento donde se realiza el paso de parámetros a la rutina y la devolución de resultados.

Page 107: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

28

R0 RmR. parámetros R. var. locales R. temporales

R0 RmR. parámetros R. var. locales R. temporalessalto 1

r0 r1 rn

R0 RmR. parámetros R. var. locales R. temporales

registros físicos de la máquina

ri

ventana de solapamiento 1

ventana de solapamiento 2

salto 2

Ventana de registros visibles

El conjunto de registros tiene una estructura de buffer circular, de tal manera que cuando se agota su capacidad se lleva a memoria el conjunto de registros del entorno (registro de activación) que primero se introdujo (primera llamada). El tamaño del buffer se elige de manera tal que permita soportar un nivel de anidamiento activo (en registros) de acuerdo a los datos empíricos que muestran los programas. En nuestro caso vimos que una variación de nivel igual a 5 se mantenía durante 33 llamadas/retorno, lo que significa que durante esas 33 llamadas todos los registros de activación se hubiesen soportado en un sistema con 5 ventanas .

C.inB.out

salvaguardia

restauración

B.locB.inA.out

A.loc

A.in

ventana salvada

ventana actual

Ejemplo En la siguiente figura se presenta el diseño de un sistema de registros con ventana de solapamiento que dispone de 32 registros físicos, r0, r1, ...r31, y una ventana de 8 registros: R0, R1, ..., R7. El solapamiento es de 2 registros.

Page 108: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

29

r0

r1

r2

r3

r5

r4

r9

r7

r8

r6

r10

r13

r12

r11

r31

R0

R1

R2

R3

R4

R5

R6

R7

R0

R1

R2

R3

R4

R5

R6

R7

Sumador

Lógicacombinacional

dirección delregistro visible

+1 -1

JSR RTS

000 00000001 00110010 01100011 01010100 10110

3. Influencia de los compiladores de lenguajes de alto nivel Las prestaciones de los actuales computadores al ejecutar un programa dependen significativamente del

compilador que se utilice. Cuando se diseña el repertorio de instrucciones se tiene en mente en todo momento la tecnología de diseño de compiladores. Las decisiones arquitectónicas afectan directamente a la complejidad de diseño de un buen compilador

Un compilador consta de una serie de etapas, las cuales transforman representaciones abstractas de alto nivel, en representaciones de más bajo nivel, hasta llegar al repertorio de instrucciones. Un compilador busca en primer lugar la exactitud de la traducción (mantenimiento de la semántica del programa en la transformación), en segundo lugar la velocidad del código generado, en tercer lugar el tamaño del código, en cuarto lugar la velocidad del compilador, y en quinto lugar el soporte a la depuración. Desde el punto de vista del rendimiento que ahora nos ocupa, la velocidad del código generado es el factor a optimizar

Las optimizaciones realizadas por los compiladores modernos podemos resumirlas en las siguientes: Optimización de alto nivel: realizadas en el código fuente • Integración de procedimientos: sustituye la llamada a un procedimiento por el cuerpo de éste (expansión

de macros).

Optimizaciones locales: afectan a fragmentos de código lineal (sin bifurcaciones) • Eliminación de subexpresiones comunes • Propagación de constantes

Page 109: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

30

• Reducción del tamaño de la pila en la evaluación de expresiones reorganizando su estructura

Optimizaciones globales: afectan al programa completo, son más complejas de implementar. • Optimización de bucles • Eliminación de subexpresiones comunes de alcance global (incluyendo saltos) • Propagación de copias: sustituye todas las instancias de una variable asignada.

Optimización del uso de registros: es una de las que reporta mayor incremento de rendimiento. La

estudiaremos con más detalle a continuación.

Optimizaciones dependientes de la máquina: Aprovechan el conocimiento de las arquitecturas específicas. • Multiplicación por una constante y sustitución por sumas y desplazamientos • Elección del desplazamiento más corto en los saltos

Por último conviene destacar que las dos ayudas más importantes que la arquitectura de un procesador puede prestar al diseño del compilador son: • Regularidad del repertorio, es decir, ortogonalidad de sus elementos para simplificar la generación de código • Proporcionar funciones primitivas, no soluciones codificadas en las instrucciones, pues estas resultan difícil

de utilizar cuando el caso se aparta ligeramente del que originó su diseño. 3.1 Optimización de registros

El uso optimizado de los registros de una máquina es responsabilidad del compilador cuya misión es mantener en registros ( y no en memoria) los operandos necesarios para el mayor número posible de cálculos, minimizando las operaciones de carga/almacenamiento de registros que requieren el acceso a memoria El proceso de asignación óptima de registros se realiza en dos fase: 1) Diseño del grafo de interferencias entre las variables del programa: nodos: las variables arcos: entre variables que están activas simultáneamente en el programa 2) Coloreado del grafo Se intenta colorear el grafo con n colores, siendo n el nº de registros disponibles en la máquina. A los nodos no coloreados se le asignan posiciones de memoria y se utilizan instrucciones de carga/almacenamiento. Como se sabe este es un problema NP-duro que requiere el uso de heurísticas muy elaboradas para acortar el tiempo de proceso. Ejemplo Asignación de las 6 variables (V1,...V6) que aparecen en el segmento de programa de la siguiente figura, en la que se indica de forma gráfica sus interferencias. Se disponen de 3 registros en la máquina: R1, R2 y R3. 1) Se construye el grafo de interferencias tal como se muestra en la siguiente figura. 2) Se colorea el grafo asignando a los nodos los tres registros de manera que no se asigne el mismo registro a

dos nodos conectados por un arco en el grafo. 3) Los nodos que no pueden ser asignados a registros se asignan a memoria (V7)

Page 110: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

31

R1 R2

R3 R1 R3

V6V5V4V3

V2V1 V1 V2 V3 V4 V5 V6

Memoria

1. Procesadores RISC y CISC Características comparativas CISC(Complex Instruction Set Computers) RISC( Reduced Instruction Set Computers) • Arquitectura RM y MM • Arquitectura RR (carga/almacenamiento) • Diseñadas sin tener en cuenta la verdadera demanda

de los programas • Diseñadas a partir de las mediciones practicadas en los

programas a partir de los 80 • Objetivo: dar soporte arquitectónico a las funciones

requeridas por los LANs • Objetivo: dar soporte eficiente a los casos frecuentes

• Muchas operaciones básicas y tipos de direccionamiento complejos

• Pocas operaciones básicas y tipos de direccionamiento simples

• Instrucciones largas y complejas con formatos muy diversos ==> decodificación compleja (lenta)

• Instrucciones de formato simple (tamaño filo) ==> decodificación simple (rápida)

• Pocas instrucciones por programa ==> elevado número de ciclos por instrucción (CPI)

• Muchas instrucciones por programa ==> reducido número de ciclos por instrucción (CPI)

• Muchos tipos de datos ==> interfaz con memoria compleja

• Sólo los tipos de datos básicos ==> interfaz con memoria sencilla

• Número limitado de registros de propósito general ==> mucho almacenamiento temporal en memoria

• Número elevado de registros ==> uso eficiente por el compilador para almacenamiento temporal

• Baja ortogonalidad en las instrucciones ==> muchas excepciones para el compilador

• Alto grado de ortogonalidad en las instrucciones ==> mucha regularidad para el compilador

Segmentación Una de la ventajas de los procesadores RISC es la facilidad que presentan sus instrucciones para ser ejecutadas de forma segmentada, es decir, solapando dos o más fases de ejecución. La tarea de cada instrucción se divide en etapas, de tal forma que en cada ciclo se ejecuta una etapa de una instrucción, simultaneándose la ejecución de etapas de diferentes instrucciones.

Page 111: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

32

Modelo secuencial

instrucción 1

instrucción 2

instrucción 3

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ciclos

I D X EM

I D X EM

I D X EM

Modelo segmentado lineal Los primeros RISC tenían un modelo de ejecución segmentado lineal en el que todas las instrucciones pasan por las mismas etapas y en cada ciclo entra una nueva instrucción a ejecutar.

instrucción 1

instrucción 2

instrucción 3

instrucción 4

instrucción 5

1 2 3 4 5 6 7 8 9 ciclos

I D X EM

I D X EM

I D X EM

I D X EM

I D X EM

Modelo infrasegmentado En cada n ciclos se lanza una nueva instrucción (Stanford MIPS). Esto está motivado fundamentalmente porque el tiempo de ciclo no permite acceder a algunos recursos hardware como la memoria, por lo que se necesitan dos (o más) ciclos para acceder a la misma.

instrucción 1

instrucción 2

instrucción 3

instrucción 4

instrucción 5

1 2 3 4 5 6 7 8 9 10 11 12 13 14 ciclos

I D X EM

I D X EM

I D X EM

I D X EM

I D X EM

Modelo supersegmentado Aumentan el rendimiento disminuyendo el tiempo de ciclo. Esto lo consiguen aumentando considerablemente el número de etapas del procesador (o dividiendo la etapa en subciclos). Con ello se consigue que el rendimiento máximo del procesador aumente; pero tiene un inconveniente que va a afectar considerablemente al rendimiento real: el aumento de las latencias de las instrucciones inducido por el aumento del número de conflictos entre las instrucciones que tengan algún tipo de dependencia a la hora de la ejecución (dependencias de datos, estructurales o de control), con la consiguiente pérdida de rendimiento.

Page 112: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

33

instrucción 1

instrucción 2

instrucción 3

instrucción 4

instrucción 5

1 2 3 4 5 6 7 8 9 10 11 12 ciclos

I D X EX

I D X EX

I D X EX

I D X EX

I D X EX

X BX

X X M

MXX

MXX

MXX

Modelo superescalar Para aumentar el rendimiento el modelo superescalar lanza a ejecutar en cada ciclo n instrucciones a la

vez, siendo n el orden o grado del superescalar. Sin embargo, para que se puedan lanzar a ejecutar a la vez n instrucciones no debe haber conflictos entre ellas. Éste es un factor que va a limitar, de forma significativa, el rendimiento, y es una medida del paralelismo implícito que presentan las aplicaciones y que pueden extraer los compiladores.

instrucción 1

instrucción 2

instrucción 3

instrucción 4

instrucción 5

instrucción 6

1 2 3 4 5 6 7 8 ciclos

I D X EM

I D X EM

I D X EM

I D X EM

I D X EM

I D X EM

Dependencias Son las causantes de la disminución de rendimiento en la ejecución segmentada y superescalar. Son de tres tipos:

Dependencias de datos Producidas por la referencia a un mismo dato por más de una sentencia (instrucción). Son de tres tipos:

Dependencia de flujo (verdadera dependencia) RAW(Read After Write) S1 S2

S1 X := ...

.

.

. S2 ...:=...X...

Ejemplo: Load r1, a

Add r2, r1, r1

Page 113: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

34

Antidependencia WAR (Write After Read) S1 --/ S2

S1 ...:=...X... . . . S2 X :=... Ejemplo: Mul r1, r2, r3 Add r2, r4, r5

Dependencia de salida WAW (Write After Write) S1 –O S2

S1 X :=... . . . S2 X :=... Ejemplo: Mul r1, r2, r3

Add r1, r4, r5

Grafo de dependencias S1: Load R1, A /R1 M(A)/ S2: Add R2,R1 /R2 <R1>+<R2>/ S3: Move R1,R3 /R1 <R3>/ S4 Store B,R1 /M(B) <R1>/

S1

S3

S4 S2

Dependencias de control Debido a las instrucciones de salto condicional. Ejemplo: Mul r1, r2, r3 Jz zproc Sub r4, r1, r1 . . . zproc Load r1, x

Dependencias de recursos(estructurales) Producidas al tratar de usar recursos compartidos

Page 114: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

35

Ejemplo: DLX • Arquitectura de 32 bits • 32 registros de uso general (GPR) de 32 bits. R0 siempre contiene 0 • Memoria direccionable por byte en modo big-endian • Instrucciones de longitud fija de 32 bits y alineadas • Un solo modo de direccionamiento: registro + desplazamiento (16) • Datos 8, 16 y 32 bits (enteros) Formatos de las instrucciones

Saltos condicionales, incondicionales y a subrutina

Cargas rd Memoria Almacenamientos Memoria rs Operaciones inmediatas rd rs Operación Inmediato

tipo I (Inmediato)

Tipo J (salto)

Tipo R

(registro)

6 26

6 5 5 5 11

6 5 5 16

Operación rs rd Inmediato

Operación Destino

Operación rs1 rs2 rd Función

Operaciones aritmético-lógicas rd rs1 Función rs2

Repertorio de instrucciones Veamos algunas de las instrucciones de los diferentes grupos:

INSTRUCCIONES ARITMETICO/LOGICAS

Instrucción Ejemplo Semántica ADD (Sumar) R1 ← R2 + R3 ADD R1, R2, R3 ADDI (Sumar inmediato) R1 ← R2 + 3 ADDI R1, R2, #3 SLLI (Desplazamiento lógico izquierda) R1 ← R2 << 5 SLL R1, R2, #5 SLT (Activa menor que) IF (R2 < R3) R1 ← 1 ELSE R1 ← 0 SLT R1, R2, R3

INSTRUCCIONES DE CONTROL DE FLUJO Instrucción Semántica Ejemplo

J (Salto) PC ← nombre J nombre JAL (Salto y enlace) R31 ← PC + 4; PC ← nombre JAL nombre JR (Salto registro) PC ← R3 JR R3 BEQZ (Bifurcación si igual cero) IF (R4 == 0) PC ← nombre BEQZ R4, nombre BNEZ (Bifurcación si no igual cero) IF (R4 != 0) PC ← nombre BNEZ R4, nombre

INSTRUCCIONES DE CARGA/ALMACENAMIENTO Instrucción Semántica Ejemplo

LW (Cargar palabra) R1 ←32 M[30 + R2] LW R1, 30 (R2) R1 ←32 M[1000 + 0] LW R1, 1000 (R0) LB (Cargar byte) R1 ←32 (M[40 + R3]0)24 ## M[40+R3] LB R1, 40 (R3) LBU (Cargar byte sin signo) R1 ←32 024 ## M[40+R3] LBU R1, 40 (R3) SW (Almacenar palabra) M[500+R4]←32 R3 SW 500(R4), R3

Page 115: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

36

SH (Almacenar media palabra) M[502+R2]←16 R316..31 SH 502(R2), R3 SB (Almacenar byte) M[41+R3]←8 R224..31 SB 41(R3), R2

Síntesis de otros modos de direccionamiento y operaciones Instrucción aparente Instrucción real

LW R2, <despl. de 16 bits> Dir. Directo (16 bits) LW R2, <despl. de 16 bits> (R0) LW R2, <despl. de 32 bits> Dir. Directo (32bits) LW R1, <16 bits altos del despl.> (R0)

LW R2, <16 bits bajos del despl.> (R1) LW R2, <despl. de 32 bits> (R4) Dir. Base+Desplazamiento (32 bits)

LW R1, <16 bits altos del despl.> (R0) ADDU R1, R1, R4 LW R2, <16 bits bajos del despl.> (R1)

Carga de un registro con datos inmediatos ADDI R1, R0, #8 R1 8 Transferencia entre registros ADD R1,R0,R2 R1 R2 Eficiencia de los procesadores RISC Comparación entre el VAX y el DLX utilizando 5 programas del SPEC92 (compress, eqntott, espresso, gcc, li) Se representan las siguientes relaciones:

• relación (ratio) del número de instrucciones ejecutadas • relación (ratio) de CPIs • relación (ratio) de rendimiento medido en ciclos de reloj

Discusión: el DLX ejecuta aproximadamente el doble de instrucciones que el VAX el CPI del VAX es aproximadamente 6 veces que el del DLX Conclusión: el DLX tiene aproximadamente el triple de rendimiento que el VAX

0

0,5

1

1,5

2

2,5

3

3,5

4

spice

matrix

nasa

7

fpppp

tomca

tv

dodu

c

espr

esso

eqnto

tt fi

SPEC 89

DLX/

VAX

0

0,5

1

1,5

2

2,5

3

3,5

4ratio de rendimiento

ratio de instrucciones ejecutadas

ratio CPI

Page 116: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 5: Organización de la memoria: memoria principal.

1. Características generales de las memorias. 2. Jerarquía de las unidades de memoria de un computador. 3. Memoria principal: organización. 4. Memoria entrelazada.

1. Características generales de las memorias Las memorias se pueden clasificar atendiendo a diferentes criterios. Revisaremos en los apartados siguientes los más significativos:

Método de acceso • Acceso aleatorio (RAM): acceso directo y tiempo de acceso constante e independiente de

la posición. • Acceso secuencial (SAM): tiempo de acceso dependiente de la posición. • Acceso directo (DAM): acceso directo a un sector con tiempo de acceso dependiente de la

posición, y acceso secuencial dentro del sector. • Asociativas CAM): acceso por contenido

Soporte físico

• Semiconductor • Magnéticas • Opticas • Magneto-ópticas

Alterabilidad • RAM: lectura y escritura • ROM (Read 0nly Memory): Son memorias de sólo lectura. Existen diferentes variantes:

ROM programadas por máscara, cuya información se escribe en el proceso de fabricación y no se puede modificar.

PROM, o ROM programable una sola vez. Utilizan una matriz de diodos cuya unión se puede destruir aplicando sobre ella una sobretensión.

EPROM (Erasable PROM) o RPROM (Reprogramable ROM), cuyo contenido puede borrarse mediante rayos ultravioletas para volverlas a escribir.

EAROM (Electrically Alterable ROM) o EEROM (Electrically Erasable ROM), son memorias que están entre las RAM y las ROM ya que su contenido se puede volver a escribir por medios eléctricos. Se diferencian de las RAM en que no son volátiles.

Memoria FLASH. Utilizan tecnología de borrado eléctrico al igual que las EEPROM, pueden borrarse enteras en unos cuantos segundos, mucho más rápido que las EPROM.

Volatilidad con la fuente de energía

• Volátiles: necesitan la fuente de energía para mantener la información. • No volátiles: mantienen la información sin aporte de energía.

Duración de la información

• Estáticas: el contenido permanece inalterable mientras están polarizadas. • Dinámicas: el contenido sólo dura un corto período de tiempo, por lo que es necesario

refrescarlo (reescribirlo) periódicamente.

Proceso de lectura • Lectura destructiva: necesitan reescritura después de una lectura. • Lectura no destructiva

Page 117: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Ubicación en el computador • Interna (CPU): registros, cache(L1), cache(L2), memoria principal • Externa (E/S): discos, cintas, etc.

Parámetros de velocidad • Tiempo de acceso • Tiempo de ciclo • Ancho de banda(frecuencia de acceso)

Unidades de transferencia

• Palabras • Bloques

2. Jerarquía de las unidades de memoria de un computador

Las distintas memorias presentes en un computador se organizan de forma jerárquica:

nivel superioraumenta velocidadaumenta capacidad

Registros de la CPU

Memoria cache(L1,L2)

Memoria principal

Discos magnéticos

Cintas, CD-ROM, etc.

En el nivel i+1 se ubica una copia de aquellos bloques del nivel i que tienen mayor probabilidad de ser referenciados en el futuro inmediato

nivel i+1

nivel i

Este mecanismo de migración entre niveles es efectivo gracias al principio de localidad referencial que manifiestan los programas:

• espacial • temporal

Page 118: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

Se consigue que el mayor número de referencias generado por los programas correspondan a informaciones ubicadas en los niveles más altos de la jerarquía. 3. Memoria principal: organización.

Una memoria principal se compone de un conjunto de celdas básicas dotadas de una determinada organización. Cada celda soporta un bit de información. Los bits se agrupan en unidades direccionables denominadas palabras. La longitud de palabra la determina el número de bits que la componen y constituye la resolución de la memoria (mínima cantidad de información direccionable). La longitud de palabra suele oscilar desde 8 bits (byte) hasta 64 bits.

Cada celda básica es un dispositivo físico con dos estados estables (o semi-estables) con

capacidad para cambiar el estado (escritura) y determinar su valor (lectura). Aunque en los primeros computadores se utilizaron los materiales magnéticos como soporte de las celdas de memoria principal (memorias de ferritas, de película delgada, etc.) en la actualidad sólo se utilizan los materiales semiconductores.

Dentro de las memorias electrónicas de semiconductor podemos distinguir dos grandes

grupos: las estáticas (SRAM: Static Random Access Memory) y las dinámicas (DRAM: Dynamic Random Access Memory). Las estáticas utilizan el principio de biestabilidad que se consigue con dos puertas inversoras (NAND ó NOR) realimentadas, mientras que las dinámicas aprovechan la carga o ausencia de carga de un pequeño condensador creado en un material semiconductor. Debido a la descarga natural que sufren las celdas cargadas, las memorias dinámicas necesitan un sistema de refresco que periódicamente - y antes que la carga eléctrica del condensador se haga indetectable - recargue las celdas que se encuentran en estado de carga.

Desde un punto de vista conceptual y con independencia de la tecnología,

consideraremos la celda básica de memoria como un bloque con tres líneas de entrada (entrada dato, selección y lectura/escritura) y una de salida (salida dato). La celda sólo opera (lectura ó escritura) cuando la selección está activa.

Entrada dato

Lectura/Escritura

Selección

Salida dato

3.1 Organización interna de la memoria.

Las celdas de memoria se disponen en el interior de un chip atendiendo a dos organizaciones principales: la organización por palabras, también denominada 2D, y la organización por bits, también denominada 2 ½ D o 3D. Organización 2D

Es la organización más sencilla que responde al esquema mostrado en la siguiente figura:

Page 119: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

SC R/W

n

mm

2ndirección

Selección

Matriz de celdas

2n X m celdas

Control

datos entrada

datos salida

Las celdas forman una matriz de 2n filas y m columnas, siendo 2n el número de palabras del chip y m el número de bits de cada palabra. Cada fila es seleccionada por la decodificación de una configuración diferente de los n bits de dirección.

Esta organización tiene el inconveniente que el selector (decodificador) de palabras crece exponencialmente con el tamaño de la memoria. Igual le ocurre al número de entradas (fan-in) de las puertas OR que generan la salida de datos.

Ejemplo En la siguiente figura se muestra la organización 2D de un chip de memoria con 4 palabras de 4 bits:

A0

A1

3210

DEC

De0 De1 De2 De3

Ds0 Ds1 Ds2 Ds3

R/W

Page 120: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Organización 3D En lugar de una única selección (decodificador) de 2n salidas en esta organización se

utilizan dos decodificadores de 2n/2 operando en coincidencia. Las líneas de dirección se reparten entre los dos decodificadores. Para una configuración dada de las líneas de dirección se selecciona un único bit de la matriz. Por ello se la denomina también organización por bits.

n

n/2

2n/2

SCR/W

n/2

mm

2n/2

direcciónSelección

Y

Matriz de celdas

2n X m celdas

Control

datosentrada

datossalida

SelecciónX

Ejemplo:

0 1 2 3

A0 A1

3 2 1 0

DEC

R/W

DEC

A2 A3

Page 121: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

En esta organización se necesitan varias matrices de celdas básicas, tantas como bits deba tener la palabra de memoria, actuando sobre ellas en paralelo los circuitos de decodificación:

DEC X

DECY

una pa labr a

3.2 Diseño de memorias

Cuando se ha de diseñar una memoria principal cuyas dimensiones (número de bits y número de palabras) exceden a las de un chip, se tienen que disponer varios chips en una placa de circuito impreso para alcanzar las dimensiones requeridas. Para mayor claridad trataremos independientemente cada una de las dimensiones.

a) Ampliación del número de bits de la palabra de memoria

Se trata de formar una memoria de 2n * (m * k) bits a partir de chips de 2n * m bits

m

SC 2n * m bits R/W

n

m•k

SC 2n * m * k bits

R/W

n

Page 122: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

El esquema general se muestra en la siguiente figura. Simplemente se disponen en paralelo k chips de 2n * m bits al que llegarían las mismas líneas de dirección y control. Cada chip aportaría m líneas de datos a la palabra de la memoria total.

R/W

k • m

m

SC 1

2n x m bit s

R/W

n

m

SC 2

2n x m bit s

R/W

n

m

SC k

2n x m bit s

R/W

n

n

SC

Ejemplo: Diseño de una memoria de 1K x 8 bits a partir de módulos (chips) de 1K x 2 bits;

A0A1

A9

SC

R/W

D0...

D7

SC

1K x 2 bit s

R/W

SC

1K x 2 bit s

R/W

SC

1K x 2 bit s

R/W

SC

1K x 2 bit s

R/W

Page 123: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

b) Ampliación del número de palabras de memoria Se trata de formar una memoria de 2n * m* N bits a partir de chips de 2n * m bit, es decir,

aumentar el número de palabras manteniendo la misma longitud de palabra.

m

SC 2n * m bits R/W

n

m

SC 2n * N * m bits

R/W

n+k

El esquema general se muestra en la siguiente figura. La nueva memoria tendrá n + k líneas de dirección. Se disponen N=2k chips en paralelo a los que se llevan las mismas m líneas de datos, las mismas n líneas de dirección menos significativas y la misma línea de lectura/escritura (R/W). Las k líneas de dirección más significativas se decodifican para activar con cada salida del decodificador el selector de chip (SC) de cada uno de los N=2k chips.

An+k+1,...An

An-1,...A0

2k-1

1 0

m

R/Wm

SC 1

2n x m bits

R/W

n

m

SC 2

2n x m bits

R/W

n

m

SC N

2n x m bit s

R/W

n

n

SC

DEC

bus de da tos

direcciones

Page 124: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

Ejemplo: Diseño de una memoria de 4K x 8 bits con módulos de 1K x 8 bits;

A0A1

A9

SC

R/W

D0...

D7

SC

1K x 8 bit s

R/W

SC

1K x 8 bit s

R/W

SC

1K x 8 bit s

R/W

SC

1K x 8 bit s

R/W

DEC

SC

A10

A11

c) Ampliación de la longitud y el número de palabras de memoria

En este caso ampliaríamos en primer lugar el número de líneas de datos (longitud de palabra) y con los bloques resultantes diseñaríamos una memoria con mayor número de palabras.

m

SC 2n * m bits R/W

n

m*k

SC 2n * N * m * k bits

R/W

n+k’

3.3 Ubicación en el espacio de direcciones.

Dado un espacio de direcciones dn-1, dn-2,...,d1, d0 y una memoria de capacidad 2m palabras(m ≤ n)se trata de hallar la función lógica de selección (SC) que ubique a la memoria en un segmento de direcciones consecutivas Di,...Dj, así como las señales locales de dirección de la memoria.

Page 125: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

dn-1 dn-2........ d1 d0 D0 D1 D2 D3 . . . Di . . . Dj . . . D2n-1

0 0 ... 0 0 0 0 ... 0 1 0 0 ... 1 0 0 0 ... 1 1 . . . --------------------- Memoria 2m palabras --------------------- 1 1 ... 1 1

Debe cumplirse que Dj – Di + 1 = 2m

dn-1dn-2...d1

d0

ldm-1ldm-2...ld1ld0

Memor ia

2m pa labras

SC

Funciónde

selección

Bus de direcciones Direcciones loca les

Si la memoria debe ocupar posiciones consecutivas, las líneas menos significativas del bus de direcciones se conectarán con las líneas de direcciones locales de la memoria:

ld0 = d0 ld1 = d1

.

.

.

ldm-2 = dm-2 ldm-1 = dm-1

La función de selección será una función booleana del bus de direcciones: SC = fb(dn-1, dn-2,...,d1, d0)

Ejemplo: Ubicar una memoria de 8 palabras en un espacio de 4 líneas de dirección (d3,d2,d1,d0).

Page 126: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Ubicación 1: a partir de la dirección 5 (0101)

d3 d2 d0 d3 d2 d1 d3 d1 d0 d3 d2

d2

d1

d0

d3

00 01 11 10

0 0 1 1

0 1 0 1

0 1 0 1

0 1 0 1

00 01 11 10

ld2 ld1 ld0

d3 d2 d1 d0 D00 0 0 0 0 D01 0 0 0 1 D02 0 0 1 0 D03 0 0 1 1 D04 0 1 0 0 D05 0 1 0 1 D06 0 1 1 0 D07 0 1 1 1 D08 1 0 0 0 D09 1 0 0 1 D10 1 0 1 0 D11 1 0 1 1 D12 1 1 0 0 D13 1 1 0 1 D14 1 1 1 0 D15 1 1 1 1

RAM

23 = 8 palabbras

SC

Ubicación 2: a partir de la dirección 4 (0100)

d3 d2 d3 d2

d2

d1

d0

d3

00 01 11 10

0 1 0 1

0 1 0 1

0 1 0 1

0 1 0 1

00 01 11 10

ld2 ld1 ld0

d3 d2 d1 d0 D00 0 0 0 0 D01 0 0 0 1 D02 0 0 1 0 D03 0 0 1 1 D04 0 1 0 0 D05 0 1 0 1 D06 0 1 1 0 D07 0 1 1 1 D08 1 0 0 0 D09 1 0 0 1 D10 1 0 1 0 D11 1 0 1 1 D12 1 1 0 0 D13 1 1 0 1 D14 1 1 1 0 D15 1 1 1 1

RAM

23 = 8 palabbras

SC

Page 127: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

Ubicación 3: a partir de la dirección 0 (0000)

d3

d2

d1

d0

d3

00 01 11 10

1 1 0 0

1 1 0 0

1 1 0 0

1 1 0 0

00 01 11 10

ld2 ld1 ld0

d3 d2 d1 d0 D00 0 0 0 0 D01 0 0 0 1 D02 0 0 1 0 D03 0 0 1 1 D04 0 1 0 0 D05 0 1 0 1 D06 0 1 1 0 D07 0 1 1 1 D08 1 0 0 0 D09 1 0 0 1 D10 1 0 1 0 D11 1 0 1 1 D12 1 1 0 0 D13 1 1 0 1 D14 1 1 1 0 D15 1 1 1 1

RAM

23 = 8 palabbras

SC

Ubicación 4: a partir de la dirección 8 (1000)

d3

d2

d1

d0

d3

00 01 11 10

0 0 1 1

0 0 1 1

0 0 1 1

0 0 1 1

00 01 11 10

ld2 ld1 ld0

d3 d2 d1 d0 D00 0 0 0 0 D01 0 0 0 1 D02 0 0 1 0 D03 0 0 1 1 D04 0 1 0 0 D05 0 1 0 1 D06 0 1 1 0 D07 0 1 1 1 D08 1 0 0 0 D09 1 0 0 1 D10 1 0 1 0 D11 1 0 1 1 D12 1 1 0 0 D13 1 1 0 1 D14 1 1 1 0 D15 1 1 1 1

RAM

23 = 8 palabbras

SC

Conclusión: la función de selección es más simple cuanto más alineado se encuentre el bloque de memoria en el espacio de direcciones. La máxima alineación la tendremos cuando se cumpla que:

dirección inicial mod 2n = 0

Es decir, el resto de dividir la dirección inicial por el tamaño de bloque es igual a 0.

Page 128: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

Caso de módulos con más de un selector Se simplifica la lógica global de selección, pero hay que descomponer la función en un producto. Ejemplo: ubicación 2 (anterior)

función de selección: SC = d2 • d3 + d2 • d3 que en forma de producto resulta:

SC = (d2 + d3) • (d2 + d3)

d3d2

d3d2

da tos

ld2

ld1

ld0

RAM

23 = 8pa labbras

SC1 SC2

Decodificación parcial y total

Cuando se generan las funciones de selección de varios bloques de memoria o puertos de E/S que han de ubicarse en el espacio de direcciones tiene que evitarse siempre que una dirección sea asignada a más de una posición de memoria o registro de E/S. En caso contrario el resultado de las operaciones de lectura/escritura puede resultar incierto. Sin embargo, no es necesario que a una posición de memoria o registro le corresponda sólo una dirección. En algunos casos, para simplificar la decodificación, y siempre que no se vaya a utilizar totalmente el espacio disponible, se puede realizar una decodificación parcial.

Ejemplo: Ubicación en un espacio de direcciones de 12 líneas d11, d10,...,d1, d0 (212 = 4.086 = 4K) de un bloque de RAM de 2K y un puerto de E/S de 4 registros.

000

7FF800

FFF

datosda tos

d10

d0

d11

RAM

212 = 4Kpalabbras

SC

d1

d0

puer to E/S22 = 4

pa labbrasSC

RAM

(2K)

puer to E/S

(2K)

La RAM la hemos decodificado completamente, en cambio el puerto de E/S presenta una decodificación parcial, ya que hemos utilizado 2K del espacio disponible para ubicar tan sólo 4 palabras. Esto significa que los 4 registros presentan múltiples direcciones cada uno (exactamente 512):

Page 129: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

R0 800 804 808 80C ... R1 801 805 809 80D ... R2 8o2 806 80A 80D ... R3 803 807 80B 80F ...

Decodificación en placa o en bus Decodificación en placa

A0

A15

datos

A0

A12

A13

A14

A15

RAM

213 = 8Kpalabbras

SC

Decodificación en bus (back plane)

A0

A12

A13

A14

A15

datos

A0

A12

RAM

213 = 8Kpalabbras

SC

DEC

Disposición de los módulos de memoria

SIMM (Single In-line Memory Module). Un SIMM típico consta de varios chips de DRAM instalados en una pequeña placa de circuito impreso (PCB) que se fija verticalmente a través de un conector a la placa del sistema. Los SIMMs disponen de varios formatos y número de contactos. Una de las ventajas de la memoria SIMM es la posibilidad de instalar gran cantidad de memoria en un área

Page 130: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

reducida. Algunos SIMMs de 72 contactos contienen 20 ó más chips de DRAM; 4 de estos SIMMs contienen, pues, 80 ó más chips de DRAM. Ocupan un área de 58 cm2 , mientras que si los chips se instalaran horizontalmente en la placa del sistema ocuparían 135 cm2.

DIMM (Dual In-line Memory Module).

Los módulos de memoria DIMM, al igual que los SIMMs, se instalan verticalmente en los conectores de expansión. La diferencia principal estriba en que en los SIMMs los contactos de cada fila se unen con los contactos correspondientes de la fila opuesta para formar un solo contacto eléctrico; mientras que en los DIMMs los contactos opuestos permanecen eléctricamente aislados para formar dos contactos independientes.

3.4 Detección y corrección de errores.

Códigos detectores de errores Para la detección de errores simples en dispositivo de memoria se suelen utilizar los bits de

paridad. Es decir, se amplía en 1 la longitud de palabra para almacenar en las operaciones de escritura la paridad total (par o impar) de la palabra. En las operaciones de lectura se comprueba si se mantiene la paridad convenida. Las detecciones de fallos de la memoria se suelen traducir en excepciones (interrupciones) del sistema.

Códigos correctores de errores (Hamming) Permite la corrección de un error simple. El dato a transmitir de m bits de longitud se amplía

con k bits de paridad, suficientes para codificar la posición de un posible bit erróneo en el mensaje completo de m + k bits. Es decir, deberá cumplirse que 2k – 1 ≥ m + k.

Nº de bits del dato

Nº de bits de paridad Nº total de bits Incremento porcentual

8 16 32 64 128 256

4 5 6 7 8 9

12 21 38 71 135 265

50 % 31,25 % 18,75 % 10,94 % 6,25 % 3,52 %

Page 131: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

Datos de sa lidaLibre de er roressimples

Datos de entrada

Direcciones

R/W

Memor ia

F

FCOMP

CORR

Ejemplo Supongamos que la longitud de palabra de la memoria es m = 8. Los datos de m = 8 bits

(d8, d7, d6, d5, d4, d3, d2, d1)

los ampliamos con k = 4 bits de paridad

(C8, C4, C2, C1)

para formar un mensaje de m + k = 12 bits

(m12, m11, m10, m9, m8, m7, m6, m5, m4, m3, m2, m1).

Los bits de paridad Ci ocupan las posiciones en el mensaje correspondientes a las potencias de 2, es decir la 1, 2, 4 y 8 (de aquí el subíndice i).

Con los bits (C8, C4, C2, C1) se codifican todas las posiciones del mensaje (12), es decir:

(C8, C4, C2, C1) = 0 0 0 1 = 1 en decimal para m1, ... (C8, C4, C2, C1) = 1 1 0 0 = 12 en decimal para m12,

de manera que cuando se produzca un error simple (complementación de un bit) en el bit mj del mensaje, (C8, C4, C2, C1) sea igual a j en decimal.

Es decir, Ci deberá recoger la paridad de todos los mj que tengan Ci = 1 en su codificación, incluido el propio Ci: d8 d7 d6 d5 d4 d3 d2 d1 datos

Page 132: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

C8 C4 C2 C1 paridades m12 m11 m10 m9 m8 m7 m6 m5 m4 m3 m2 m1 mensaje 1 1 1 1 1 0 0 0 0 0 0 0 C8 1 0 0 0 0 1 1 1 1 0 0 0 C4 0 1 1 0 0 1 1 0 0 1 1 0 C2 0 1 0 1 0 1 0 1 0 1 0 1 C1 d8 ⊕d7 ⊕d6 ⊕d5 = C8 d8 ⊕d4 ⊕d3 ⊕d2 = C4 d7 ⊕d6 ⊕d4 ⊕d3 ⊕d1 = C2 d7 ⊕d5 ⊕d4 ⊕d2 ⊕d1 = C1

El sistema de memoria deberá generar en la escritura los bits de paridad Ci para almacenarlos junto a los bits de datos Supongamos que el dato escrito es: d8 d7 d6 d5 d4 d3 d2 d1 = 1001 1101 Los bits de paridad para el código de Hamming valdrán: Función F: C8 = d8⊕d7⊕d6⊕d5 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0 C4 = d8⊕d4⊕d3⊕d2 = 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1 C2 = d7⊕d6⊕d4⊕d3⊕d1 = 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 C1 = d7⊕d5⊕d4⊕d2⊕d1 = 0 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1

En la lectura se generará de nuevo los bits de paridad con el bloque F’ a partir de los bits de datos leídos de memoria. El bloque F’ responde a la misma función lógica que F. Supongamos que en la lectura se produce un error simple en d5, es decir, escribimos un 1 y hemos leído un 0, el valor de F’ será: Función F’: C’8 = d’8⊕d’7⊕d’6⊕d’5 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1 C’4 = d’8⊕d’4⊕d’3⊕d’2 = 1 ⊕ 1 ⊕ 1 ⊕ 0 = 1 C’2 = d’7⊕d’6⊕d’4⊕d’3⊕d’1 = 0 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 1 C’1 = d’7⊕d’5⊕d’4⊕d’2⊕d’1 = 0 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0

Para detectar la existencia de un error simple y su posición (para poderlo corregir) comparamos (Comparador COMP) los bits de paridad generados en la lectura, C’i con los almacenados en la escritura, Ci: Comporador COMP: C’’8 = C8 ⊕ C’8 = 0 ⊕ 1 = 1 C’’4 = C4 ⊕ C’4 = 1 ⊕ 1 = 0 C’’2 = C2 ⊕ C’2 = 1 ⊕ 1 = 0 C’’1 = C1 ⊕ C’1 = 1 ⊕ 0 = 1

Si el resultado de la comparación es C’’8 C’’4 C’’2 C’’1 = 0 0 0 0 significa que no se ha producido error. Si se ha producido un error, los Ci’’ codificarán su posición.

En nuestro ejemplo el resultado de la comparación vale

Page 133: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

C’’8 C’’4 C’’2 C’’1 = 1 0 0 1 = 9 (decimal) el bit m9 del mensaje ha fallado, es decir el bit de datos d5

Para corregir el error decodificamos su posición, es decir, los Ci’’ (decodificador DEC) con lo que

disponemos de una línea individual para cada posible posición de error. Con cada una de estas líneas podemos controlar la inversión o no de la correspondiente línea de

datos di’ leída de memoria según que se haya producido o no error en dicha línea. Para la inversión controlada de estas líneas utilizamos una etapa de puertas XOR.

En la siguiente figura aparece el esquema completo de la memoria tolerante a un fallo simple

y el proceso de corrección del fallo que hemos supuesto en el ejemplo

1000 1101 0111

d1 d2 d3 d4 d5 d6 d7 d8

Direcciones R/W

d1 d2 d3 d4 d5 d6 d7 d8

1001 1101

F

F’

COMP

0 1 2 3 4 5 6 7

DEC 8 9 10 11

12 13 14 15

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

error

Ausencia de error

1 1 1 0

0 1 1 1

1 0 0 1 Corrector

Page 134: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

F’ = F

FC8 = d8⊕d7⊕d6⊕d5 C4 = d8⊕d4⊕d3⊕d2 C2 = d7⊕d6⊕d4⊕d3⊕d1C1 = d7⊕d5⊕d4⊕d2⊕d1

Corrector D8 = dec12 ⊕ d’8 D7 = dec11 ⊕ d’7 D6 = dec10 ⊕ d’6 D5 = dec9 ⊕ d’5 D4 = dec7 ⊕ d’4 D3 = dec6 ⊕ d’3 D2 = dec5 ⊕ d’2 D1 = dec3 ⊕ d’1

1. Memoria entrelazada. Para aumentar el ancho de banda de una memoria principal se puede descomponer en

módulos con accesos independientes, de manera que se pueda acceder simultáneamente a una palabra de cada uno de los módulos.

Me m oria prin cipa l

Módulo M1

R. Datos

R. Direcciones

Módulo M0

R. Datos

R. Direcciones

Módu lo Mk

R. Datos

R. Direcciones

Existen diferentes elementos de diseño en una memoria modular, siendo el orden del

entrelazado de las direcciones uno de los principales. Básicamente existen dos tipos de entrelazado para el espacio de direcciones de una memoria: entrelazado de orden superior y entrelazado de orden inferior.

Page 135: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

Entrelazado de orden superior Mp = 2n palabras Se divide Mp en 2m módulos de 2n-m palabras

Entre lazado de orde n superior

Módulo M1

R. Datos

Módulo M0

R. Datos

Módulo Mk

R. Datos

DEC

m bits (n – m) bits

Módulo Dirección dentro del módulo

Ejemplo: Para n = 5 y m = 2 tendríamos una distribución de direcciones de manera que las consecutivas irán en el mismo módulo:

M1módulo Dir.módulo

89101112131415

0 1 0 0 00 1 0 0 10 1 0 1 00 1 0 1 10 1 1 0 00 1 1 0 10 1 1 1 00 1 1 1 1

M3módulo Dir.módulo

2425262728293031

1 1 0 0 01 1 0 0 11 1 0 1 01 1 0 1 11 1 1 0 01 1 1 0 11 1 1 1 01 1 1 1 1

M0módulo Dir.módulo

01234567

0 0 0 0 00 0 0 0 10 0 0 1 00 0 0 1 10 0 1 0 00 0 1 0 10 0 1 1 00 0 1 1 1

M2módulo Dir.módulo

1617181920212223

1 0 0 0 01 0 0 0 11 0 0 1 01 0 0 1 11 0 1 0 01 0 1 0 11 0 1 1 01 0 1 1 1

Page 136: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

Entrelazado de orden inferior

En tre la za d o d e o rd e n in fe rio r

Módu lo M1

R. Da tos

Módu lo M0

R. Da tos

Módu lo Mk

R. Da tos

Módu loDir ección den t r o del m ódu lo

DEC

Ejemplo: Para n = 5 y m = 2 el entrelazado de orden inferior produciría una distribución de direcciones de manera que las consecutivas irán módulos diferentes:

M1

1591317212529

M3

37111519232731

M0móduloDir.módulo

0481216202428

0 0 0 0 00 0 1 0 00 1 0 0 00 1 1 0 01 0 0 0 01 0 1 0 01 1 0 0 01 1 1 0 0

M2

26101418222630

0 0 0 0 10 0 1 0 10 1 0 0 10 1 1 0 11 0 0 0 11 0 1 0 11 1 0 0 11 1 1 0 1

0 0 0 1 00 0 1 1 00 1 0 1 00 1 1 1 01 0 0 1 01 0 1 1 01 1 0 1 01 1 1 1 0

0 0 0 1 10 0 1 1 10 1 0 1 10 1 1 1 11 0 0 1 11 0 1 1 11 1 0 1 11 1 1 1 1

móduloDir.módulo móduloDir.módulo móduloDir.módulo

Page 137: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

5.1 Memoria entrelazada con organización S La organización S (Sencilla) utiliza entrelazado de orden inferior, accediendo

simultáneamente, con la misma dirección local, a la misma palabra de cada uno de los módulos

Org a n iza c ió n S

Sa lida

Módu lo M1

R. Da tos

Módu lo M0

R. Da tos

Módu lo Mk

R. Da tos

MU X

(n – m ) bits m bits

Módu loDir ección den t r o del m ódu lo

Con t r ol

tiempo

Módulos

(p1,M0) (p1,M1)...... (p1,M2m

-1)(p1,M0) (p1,M1)...... (p1,M2m

-1)

M2m

-1...M1

M0

Salida

acceso 2acceso 1

acceso 1

acceso 1 acceso 2

acceso 2 acceso 3

acceso 3

acceso 3

Page 138: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

5.2 Memoria entrelazada con organización C

Org a n iza c ió n C

Con t rola dorDe

Mem or ia

Módu lo M0

Dir ección Con t r ol

Módu lo M1

Dir ección Con tr ol

Módu lo Mk

Dir ección Con tr ol

DEC

Page 139: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 6: Memoria Caché.

1. Principios básicos de funcionamiento de la memoria caché. 2. Elementos de diseño. 3. Factores de rendimiento de la memoria caché. 4. Ejemplos.

1. Principios básicos de funcionamiento de la memoria caché

La velocidad de la memoria se ha distanciado progresivamente de la velocidad de los procesadores. En la figura siguiente se muestran las gráficas de la evolución experimentada por el rendimiento de las CPUs y las memoria DRAM (soporte de la memoria principal de los computadores actuales) en los últimos años. Las curvas muestran que el rendimiento de la CPU aumentó un 35% anual desde 1980 hasta 1987; y un 55% anual a partir de ese año. En cambio la memoria ha mantenido un crecimiento sostenido del 7% anual desde 1980 hasta la fecha. Esto significa que si se mantiene la tendencia, el diferencial de rendimiento no sólo se mantendrá sino que aumentará en el futuro. Para equilibrar esta diferencia se viene utilizando una solución arquitectónica: la memoria caché

Diferenciaprogresiva

7%

55%

35%

100.000

10.000

1000

100

10

0.1

1980 1987 2000

CPU

Memoria(DRAM)

64 KB (DRAM)

Evolución de la mejora de rendimiento de la CPU y memoria DRAM

La memoria caché es una memoria pequeña y rápida que se interpone entre la CPU y la memoria principal para que el conjunto opere a mayor velocidad. Para ello es necesario mantener en la caché aquellas zonas de la memoria principal con mayor probabilidad de ser referenciadas. Esto es posible gracias a la propiedad de localidad de referencia de los programas. Localidad de referencia

Los programas manifiestan una propiedad que se explota en el diseño del sistema de gestión de memoria de los computadores en general y de la memoria caché en particular, la localidad de referencias: los programas tienden a reutilizar los datos e instrucciones que utilizaron recientemente. Una regla empírica que se suele cumplir en la mayoría de los programas revela que gastan el 90% de su tiempo de ejecución sobre sólo el 10% de su código. Una consecuencia de la localidad de referencia es que se puede predecir con razonable precisión las instrucciones y datos que el programa utilizará en el futuro cercano a partir del conocimiento de los accesos a memoria realizados en el pasado reciente. La localidad de referencia se manifiesta en una doble dimensión: temporal y espacial.

Localidad temporal: las palabras de memoria accedidas recientemente tienen una alta probabilidad de volver a ser accedidas en el futuro cercano. La localidad temporal de los programas viene motivada principalmente por la existencia de bucles.

Page 140: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Localidad espacial: las palabras próximas en el espacio de memoria a las recientemente referenciadas tienen una alta probabilidad de ser también referenciadas en el futuro cercano. Es decir, que las palabras próximas en memoria tienden a ser referenciadas juntas en el tiempo. La localidad espacial viene motivada fundamentalmente por la linealidad de los programas (secuenciamiento lineal de las instrucciones) y el acceso a las estructuras de datos regulares.

CPU

Memoria cache (Mc)

Memmoria principal Mp

palabras

bloques (líneas)

Para implementar el mecanismo de actualización de la caché con los datos con mayor probabilidad de ser

refernciados se divide la memoria principal en bloques de un número de bytes (4,8,16 etc.) y la caché en marcos de bloque o líneas de igual tamaño. El bloque será, pues, la unidad de intercambio de información entre la memoria principal y la caché, mientras que entre la caché y la CPU sigue siendo la palabra. El directorio contiene la información de qué bloques de Mp se encuentran ubicados en Mc

Marco deBloque 0

Marco deBloque m -1

Direcciónde memoria

012

2n -1

Bloque 0

Bloque 1

Bloque 2n/K -1

n

direccion

DirectorioMp

Mc

m marcos de bloque o líneas2n palabrasK palabras/bloqueM = 2n/K bloques >> m

El funcionamiento de la memoria caché se puede resumir en el diagrama de flujo de la siguiente figura. En

él se describe el proceso de traducción de la dirección física procedente de la CPU (en el supuesto que el procesador no disponga de memoria virtual o esté desactivado) en el dato ubicado en la posición de memoria determinada por dicha dirección:

Page 141: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

Mc <-- CPU(DF)

Mc <-- Mp(bloque)

CPU <-- <DF>

no

(fallo)

si (acierto)

Recibe laDirección Física(DF) de la CPU

¿ DF∈ bloqueen la cache?

Acceso a Mp para obtenerel bloque que contiene DF

Asignar un marco de lacache al bloque de Mp

Cargar el bloque deMp en el marco

asignado de la cahe

Llevar el contenidode la DF a la CPU

Leer el contenido de DFy llevarlo a la CPU

Cuando una dirección se presenta en el sistema caché pueden ocurrir dos cosas:

• Acierto de caché (hit): el contenido de la dirección se encuentre en un bloque ubicado en una línea de la caché.

• Fallo de caché (miss): el contenido de la dirección no se encuentre en ningún bloque ubicado en alguna línea de la caché.

Si en la ejecución de un programa se realizan Nr referencias a memoria, de las que Na son aciertos caché y Nf fallos caché, se definen los siguientes valores: • Tasa de aciertos: Ta = Na/ Nr • Tasa de fallos: Tf = Nf/ Nr Evidentemente se cumple: Ta = 1 - Tf 2. Elementos de diseño. A la hora de diseñar un sistema de memoria caché hay que elegir entre una serie de alternativas para cada uno de los siguientes elementos de diseño:

• Función de correspondencia: determina las posibles líneas de la caché (marcos de bloque) en las que se puede ubicar un determinado bloque de la memoria principal que ha sido referenciado por el programa y hay que llevarlo a memoria caché.

• Algoritmo de sustitución: determina el bloque que hay que desubicar de una línea de la caché cuando ésta

está llena y hay que ubicar un nuevo bloque.

Page 142: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

• Política de escritura: determina la forma de mantener la coherencia entre memoria caché y memoria principal cuando se realizan modificaciones (escrituras)

• Política de búsqueda de bloques: determina la causa que desencadena la llevada de un bloque a la caché

(normalmente un fallo en la referencia)

• Cachés independientes para datos e instrucciones: frente a cachés unificadas. 2.1 Función de correspondencia Existen tres funciones de correspondencia para definir la posible ubicación de un bloque de memoria principal (Mp) en la memoria caché (Mc): directa, asociativa y asociativa por conjuntos. En el primer caso un bloque de Mp sólo puede ubicarse en una línea de la caché, aquella que coincide con el bloque cuando superponemos Mc sobre Mp respetando fronteras de Mc, es decir, sobre espacios de Mp que son múltiplos del tamaño de Mc. En la correspondencia asociativa un bloque puede ubicarse en cualquier línea de Mc. Finalmente, la correspondencia asociativa por conjuntos es un compromiso entre las dos anteriores.

McMcMc

Mp

B0B1B2B3B4B5B6B7

B0B1B2B3B4B5B6B7

C0C1C2C3

Directa Asociativa Asociativa por conjuntos

2.1.1 Correspondencia directa En la correspondencia directa el bloque Bj de Mp se puede ubicar sólo en el marco de bloque MBi que cumple la siguiente relación i = j mod m, donde m es el número total de líneas que tiene la caché. En la tabla siguiente se especifica el conjunto de bloques que se pueden ubicar en una línea de Mc:

Bloques de Mp Marcos de bloque de Mc 0, m, 2m, ... , 2s-1m 1, m+1, 2m+1,..., 2s-1m+1 ...... m-1, 2m-1, 3m-1,..., 2sm-1

0 1 ...

m-1

Page 143: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Interpretación de una dirección física en correspondencia directa:

bloque

s-r r w

etiqueta marco de bloque palabra

s

2w palabras/bloque 2s bloques de Mp 2r marcos de bloque en Mc (2r = m) 2s-r veces contiene Mp a Mc

Los s - r bits de la etiqueta diferenciarán a cada uno de los bloques de Mp que pueden ubicarse en el mismo marco de bloque de Mc. El directorio caché en correspondencia directa contendrá un registro de s - r bits por cada marco de bloque para contener la etiqueta del bloque ubicado en ese momento en dicho marco.

El mecanismo de obtención del contenido de una dirección física en cachés con correspondencia directa podemos resumirlo en el siguiente esquema:

B2s-1

s-r

etiqueta

fallo acierto

s+w

s

w

w

w rs-r

Mp

dato

dato

dato

dato

dato

dato

dato

dato

dato

dato

dato

dato

etiqueta marco palabra etiqueta

MB0

MBi

etiqueta

MBm-1

Memoria Cache

Bj

B0

Comparador

Page 144: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

Ejemplo: para los tres tipos de correspondencia utilizaremos los siguientes datos: • Tamaño de bloque K = 4 bytes = 22 => w = 2 • Tamaño de Mc = 64 KBytes = 216 Bytes = 214 marcos de bloque => r = 14 • Tamaño de Mp = 16 MBytes = 224 Bytes = 222 bloques => s = 22

Una Mc de correspondencia directa se puede implementar sobre una RAM con longitud de palabra suficiente para ubicar un bloque y los bits de etiqueta (directorio), tal como se muestra en la siguiente figura:

MB0

MB1

MB2

MBm-2

MBm-1

Memoria cache (RAM)

aciertofallo

etiqueta línea palabra

etiqueta p0 p1 p2 p3

etiqueta p04 p5 p6 p7

etiqueta p8 p9 p10 p11

etiqueta

etiqueta

MUXComparador

En una operación de lectura se lee la palabra completa de la RAM, es decir, la línea y la etiqueta. Si la etiqueta leída coincide con la procedente de la dirección física, significa que la línea contiene la

palabra de Mp referenciada por dicha dirección física: se produce un acierto de caché. En este caso con los w bits de palabra se selecciona la palabra referenciada dentro de la línea.

Si no coinciden las etiquetas, significa que Mc no contiene el bloque de Mp al que pertenece la palabra

referenciada, por lo que se produce un fallo de caché. Parte de un posible contenido de Mc en un instante determinado para el ejemplo anterior podría ser el

siguiente:

Page 145: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

8 14 2

etiqueta línea palabra

16MB

MB0 MB1 MB2 MB3 . . . . . . .MB214-1

64KB

64KB

64KB Mc

Mp

16

FF

00

0000 0004 FFF8 FFFC

13 57 92 4600 00 00 0011 11 11 1133 33 33 33 00 13 57 92 46

FF 24 56 78 99 16 22 33 44 55 00 33 33 33 33 16 55 55 55 55

0000 0004 FFF8 FFFC

13 67 988 824 24 25 2622 33 44 55 55 55 55 55

0000 0004 FFF8 FFFC

13 12 34 5624 56 78 99

Se ha dibujado Mp divididida en zonas consecutivas de tamaño 64 KB (igual que el tamaño de Mc) para facilitar la correspondencia de los bloques de Mp y los marcos de bloque de Mc. 2.1.2 Correspondencia asociativa En la correspondencia asociativa un bloque Bj de Mp se puede ubicar en cualquier marco de bloque de Mc. Interpretación de una dirección física en correspondencia asociativa:

s w

etiqueta palabra

2s bloques de Mp 2r marcos de bloque de Mc

En este caso la etiqueta tendrá s bits para poder diferenciar a cada uno de los bloques de Mp (todos) que pueden ubicarse en el mismo marco de bloque de Mc. El directorio caché en correspondencia asociativa contendrá, pues, un registro de s bits por cada marco de bloque para contener la etiqueta del bloque ubicado en ese momento en dicho marco.

El mecanismo de obtención del contenido de una dirección física en cachés con correspondencia asociativa podemos resumirlo en el siguiente esquema:

Page 146: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

falloacierto

s+w

s

w

ws

Mp

etiqueta palabra

Memoria Cache

Bj

B0

Comparador

MB0

MBi

MBm-1

El directorio de una Mc de correspondencia asociativa se puede implementar con una memoria asociativa con tantas palabras como líneas tenga Mc. Las líneas se soportan sobre un array de memoria con longitud de palabra suficiente para ubicar un bloque, tal como se muestra en la siguiente figura:

Dirección física

MB0

MB1

MBm-2

MBm-1

Etiquetas Datos

acierto/fallo

etiqueta palabra

MUX

MemoriaAsociativa

La memoria asociativa contiene las direcciones de todos los bloques de Mp ubicados en cada momento en Mc. Opera realizando una comparación simultánea de su contenido con el campo de etiqueta de la dirección física.

Page 147: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

2.1.3 Correspondencia asociativa por conjuntos En la correspondencia asociativa por conjuntos las líneas de Mc se divide en v=2d conjuntos con k

líneas/conjunto o vías cada uno. Se cumple que el número total de marcos de bloque (líneas) que tiene la caché m = v*k. Un bloque Bj de Mp se puede ubicar sólo en el conjunto Ci de Mc que cumple la siguiente relación i = j mod v. Interpretación de una dirección física en correspondencia asociativa por conjuntos:

bloque

s-d d w

etiqueta conjunto palabra

s

En este caso la etiqueta tendrá s – d bits para poder diferenciar a cada uno de los bloques de Mp que pueden ubicarse en el mismo conjunto de Mc. El directorio caché en correspondencia asociativa por conjuntos contendrá, pues, un registro de s - d bits por cada conjunto de líneas de Mc.

El esquema lógico de acceso a una caché de correspondencia asociativa por conjuntos se muestra en la siguiente figura:

fallo

acierto

s+w

s

w

w ds-d

Mp

etiqueta conjunto palabra

C0

Memoria Cache

Bj

B0

ComparadorCv-1

Page 148: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Una Mc de correspondencia asociativa por conjuntos de v vías se puede implementar como k módulos de

correspondencia directa en paralelo cada uno con v líneas. Los conjuntos lo formarían las líneas que ocupan idéntica posición en cada módulo:

etiqueta conjunto palabra

C0

C1

MUX

Comparador

C0

C1

MUX

Comparador

Si dibujamos Mp divididida en zonas consecutivas de tamaño 32 KB (con tantos bloques como conjuntos

tiene Mc) para facilitar la correspondencia de los bloques de Mp y los marcos de bloque de Mc, podremos representar fácilmente parte de un posible contenido de Mc con correspondencia asociativa por conjuntos de dos vías en un instante determinado para el ejemplo anterior.

k = 2 => v = m/k = 2r/2 = 214/2 = 213 => d = 13 w = 2 s = 22 => s -d = 9

Page 149: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

9 13 2

etiqueta línea palabra

32KB

32KB

32KB

C0C1C2

Mc Mp

001

1FF

000

0000 0004 7FF8 7FFC

13 57 92 46 00 00 00 00 11 11 11 11 33 33 33 33

001 13 67 98 88 1FF 24 56 78 99 001 55 55 55 55

0000 0004 7FF8 7FFC

13 67 98 88 24 24 25 26 22 33 44 55 55 55 55 55

0000 0004 7FF8 7FFC

13 12 34 56 24 56 78 99 55 55 55 55

000 13 57 92 46 001 24 24 25 26 1FF 55 55 55 55

Las tres funciones de correspondencia se pueden ver en realidad como una sola, la asociativa por conjunto, siendo las otras dos correspondencias casos extremos de ella:

asociativa

aumenta laasociatividad

etiqueta índice palabra

directa

Si k = 1 ==> m = v ==> asociativa por conjuntos de 1 vía = directa

Si v = 1 ==> m = k ==> asociativa por conjuntos de m vías = asociativa

conjunto/línea

Page 150: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

2.2 Algoritmos de sustitución Como hemos visto, el espacio de ubicación de un bloque en Mc depende de la función de correspondencia. La

correspondencia directa reduce el espacio a un marco de bloque, por lo que no queda alternativa de sustitución cuando hay que ubicar un nuevo bloque. En las correspondencias asociativa y asociativa por conjuntos hay que decidir qué bloque sustituir. En la primera la elección se tiene que realizar sobre cualquier bloque presente en Mc, mientras que en la segunda se reduce al conjunto único donde puede ubicarse el nuevo bloque. Las políticas de reemplazamiento más utilizadas son cuatro:

1. Aleatoria: se escoge un bloque al azar 2. LRU(Least Recently Used)

• Se sustituye el bloque que hace más tiempo que no ha sido referenciado • Algoritmo: se asocian contadores a los marcos de bloque y

Si se referencia MBi ∀ MBk : contador(MBk) ≤ contador(MBi) ==> contador(MBk) := contado(MBk) + 1 contador(MBi) = 0 Cuando se produce un fallo se sustituye el MBi : contador(MBi) = MAXIMO

• Para una memoria asociativa de dos vías basta con añadir un bit de uso a cada marco de bloque. Cuando un marco de bloque es referenciado su bit de uso se pone a 1 y el del marco del mismo conjunto a 0. Cuando hay que sustituir se elige el marco de bloque con bit de uso igual a 0.

3. FIFO (First In First Out)

• Se sustituye aquel bloque que ha estado más tiempo en la caché (independientemente de sus

referencias) • Se puede implementar con una cola

4. LFU(Least Frequently Used)

• Se sustituye aquel bloque que ha experimentado menos referencias • Se puede implementar asociando un contador a cada marco de bloque

2.3 Política de escritura Determina la forma de actualizar Mp cuando se realizan operaciones de escritura. Hay que diferenciar dos casos: cuando la posición de memoria sobre la que se va a escribir está en Mc (acierto) y cuando no lo está (fallo). 1) Frente a aciertos en la caché: dos alternativas:

• Escritura directa o inmediata (write through)

• Todas las operaciones de escritura se realizan en Mc y Mp • Inconveniente: genera un tráfico importante a Mp • Solución: utilización de un buffer de escritura (alpha 21064)

Buffer

de escritura

Mp

Page 151: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

• Postescritura (copy back)

• Las actualizaciones se hacen sólo en Mc • Se utiliza un bit de actualización asociado a cada marco de bloque para indicar la escritura del

marco en Mp cuando es sustituido por la política de reemplazamiento • Inconveniente: inconsistencia temporal entre Mc y Mp ==> complicación del acceso de la E/S a

memoria que debe realizarse a través de Mc. 2) Frente a fallos en la caché

• Asignación en escritura (write allocate)

• El bloque se ubica en Mc cuando ocurre el fallo de escritura y a continuación se opera como en un acierto de escritura, es decir, con wirte through o copy back

• No asignación en escritura (No write allocate)

• El bloque se modifica en Mp sin cargarse en Mc 2.4 Política de búsqueda Determina las condiciones que tienen que darse para buscar un bloque de Mp y llevarlo a una línea de Mc. Existen dos alternativas principales: 1) Por demanda

• Se lleva un bloque a Mc cuando se referencia desde la CPU alguna palabra del bloque y éste no se encuentra en Mc

2) Anticipativa (prebúsqueda)

• Prebúsqueda siempre: la primera vez que se referencia el bloque Bi se busca también Bi+1

• Prebúsqueda por fallo: cuando se produce un fallo al acceder al bloque Bi se buscan los bloques Bi y Bi+1

Clasificación de los fallos caché

Los fallos de la caché se pueden clasificar en tres tipos:

• Forzosos: producidos por el primer acceso a un bloque

• Capacidad: producidos cuando Mc no puede contener todos los bloques del programa

• Conflicto: (en correspondencia directa o asociativa por conjuntos) producidos por la necesidad de ubicar un bloque en un conjunto lleno cuando Mc no está completa.

3. Factores que determinan el rendimiento de la memoria caché. El tiempo de acceso a memoria durante la ejecución de un programa será : Tacceso = Na * Tc + Nf * Tp (1)

donde:

Na es el número de referencias con acierto Nf es el número de referencias con fallo Tc es el tiempo de acceso a una palabra de Mc Tp es el tiempo de acceso a un bloque de Mp

Page 152: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

El tiempo de acceso medio durante la ejecución del programa valdrá:

Tacceso_medio = Tacceso/ Nr = Ta*Tc + Tf*Tp

donde:

Ta = Na/Nr es la tasa de aciertos Tf = Na/Nr es la tasa de fallos Nr es el número total de referencias a memoria

El tiempo de acceso a un bloque de Mp constituye la componente principal del tiempo total de penalización de un fallo. En la siguiente expresión hemos considerado ambos términos equivalentes:

Tacceso_medio = Tacierto + Tf * Penalización_fallo (2)

donde:

Tacierto = Ta*Tc, válido si frente a un fallo, el bloque se lleva a Mp al tiempo que la palabra referenciada del bloque se lleva (en paralelo) a Mc. Si estas dos acciones se realizan de forma secuencial Tacierto = Tc. ya que toda referencia implicaría un acceso a Mc y por tanto la expresión (1) se transformaría en: Tacceso = Nr * Tc + Nf * Tp ==> Tacceso_medio = Tacceso/ Nr = Tc + Tf*Tp (3) De las expresiones (2) ó (3) podemos inducir que para mejorar el rendimiento de una caché, podemos actuar sobre tres términos, dando lugar a tres tipos de optimizaciones:

1. Reducción de la tasa de fallos, Tf 2. Reducción de la penalización de los fallos, Penalización_fallo 3. Reducción del tiempo de acierto, Tacierto

3.1 Reducción de la tasa de fallos La tasa de fallos podemos reducirla con las siguientes alternativas:

a) Aumento del tamaño del bloque • Al aumentar el tamaño de bloque disminuye la tasa de fallos iniciales (forzosos) porque mejora la localidad

espacial.

• Sin embargo con el aumento del tamaño de bloque aumenta la penalización de fallos, ya que el tiempo de lectura y transmisión serán mayores si los bloques son mayores.

b) Aumento de la asociatividad

• Experimentalmente se comprueba que una caché asociativa por conjuntos de 8 vías es tan eficiente (tasa de fallos) como una caché completamente asociativa.

15%10%

Tf Mc

1K

4K

16 32 64 128 tamaño de bloque

• Una caché de correspondencia directa de tamaño N tiene aproximadamente la misma tasa de fallos que una

asociativa por conjuntos de 2 vías de tamaño N/2

• Al aumentar la asociatividad se incrementa el ciclo de reloj y por tanto Tacierto c) Utilización de una caché de víctimas

Page 153: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

• Se añade una pequeña caché completamente asociativa entre Mc y su camino hacia Mp para contener sólo los

bloques descartados (sustituidos) por un fallo (víctimas) • Ante un fallo se comprueba si el bloque está en la caché de víctima antes de acudir a Mp • Reducen los fallos de conflicto fundamentalmente en cachés pequeñas con correspondencia directa.

McMpCache de víctima

=

d) Cachés pseudoasociativas Se trata de cachés de correspondencia directa que con una ligera modificación se pueden comportar como

asociativas. Para ello se permite que un bloque de Mp se pueda ubicar en dos (pseudoasociativa de 2 vías) marcos de bloque de Mc, el que le corresponde (por la correspondencia directa) y el que resulta de conmutar el bit más significativo de la dirección del bloque, tal como se indica en el siguiente esquema:

conjuntopseudoasociativo

0 X X...........X

1 X X...........X

Memoria cache pseudoasociativa

aciertofallo

etiqueta marco palabra

MUXComparador

Analicemos el rendimiento de una Mc pseudoasociativa: Tiempo_acceso_mediopseudo = Tiempo_aciertopseudo + Tasa_fallospseudo *Penalización_fallospseudo

Page 154: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

Tasa_fallospseudo = Tasa_fallos2vías Penalización_fallospseudo = Penalización_fallosdirecta Tiempo_aciertopseudo = Tiempo_aciertodirecta + Tasa_aciertos_alternativospseudo *2 Tasa_aciertos_alternativospseudo = Tasa_aciertos2vías - Tasa_aciertosdirecta = (1 - Tasa_fallos2vías)- (1 - Tasa_fallosdirecta) = Tasa_fallosdirecta - Tasa_fallos2vias Tiempo_acceso_mediopseudo = Tiempo_aciertodirecto + (Tasa_fallosdirecta - Tasa_fallos2vias)*2 + Tasa_fallos2vías *Penalización_fallosdirecta Ejemplo: Tamaño (caché) grado asociatividad tasa de fallos penalización fallo Tiempo de acierto

2 K 2 K

1 2

0,098 0,076

50 -

1 -

Tiempo_acceso_mediopseudo = 1 + (0,098 - 0,076)*2 + 0,076*50 = 4,844

Tiempo_acceso_mediodirecta 1 + 0,098*50 = 5,90 > 4,844 e) Prebúsqueda de instrucciones y datos

• La prebúsqueda de instrucciones y/o datos antes de ser demandados por la caché disminuye la tasa de fallos.

• Las instrucciones o datos prebuscados son llevados directamente a la caché o a un buffer externo que es accedido a mayor velocidad que Mp

Mc

Mp

Buffer de

Prebúsqueda

• El Alpha AXP 21064 pre-busca dos bloques cuando ocurre un fallo, el que contiene la palabra causante del

fallo y el siguiente. El primero lo coloca en MC y el segundo en el buffer de prebúsqueda • Experimentalmente se ha comprobado que un buffer de prebúsqueda simple elimina el 25 % de los fallos de

una caché de datos con correspondencia directa de 4 KB f) Prebúsqueda controlada por el compilador

Page 155: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

• Utiliza instrucciones explícitas de prebúsqueda del tipo prefetch(dato) que el compilador utiliza para optimizar los programas después de realizar un análisis de sus sentencias.

• La prebúsqueda se realiza al tiempo que el procesador continúa la ejecución del programa, es decir, la

prebúsqueda se hace en paralelo con la ejecución de las instrucciones. • Los bucles son las construcciones más apropiadas para que el compilador genere prebúsqueda Ejemplo

Supongamos que en una caché de 8 KB de correspondencia directa y bloques de 16 bytes se ejecuta el siguiente programa:

for (i = 0; i < 3; i = i + 1) for (j = 0; j < 100; j = j + 1) a[i][j] = b[j][0] * b[j+1][0];

Cada elemento de los arrays a[i][j] y b[j][j] ocupan 8 bytes (doble precisión) y están dispuestos en

memoria en orden ascendente de sus índices, es decir:

a[0][0] a[0][1] a[0][2] ........ a[0][99] a[1][0] a[1][1] a[1][2] ........ a[1][99] a[2][0] a[2][1] a[2][2] ........ a[2][99]

b[0][0] b[0][1] b[0][2] ......... b[0][99] b[1][0] b[1][1] b[1][2] ......... b[1][99] b[2][0] b[2][1] b[2][2] ......... b[2][99]

Cada 2 elementos consecutivos ocupan un bloque, por lo que a[ ][ ] se beneficiará de la localidad espacial:

los valores pares de j producirán fallos (forzosos: primera lectura) y los impares aciertos (puesto que se llevan a Mc en los mismos bloques que los pares). Por tanto, teniendo en cuenta que tenemos 3 filas y 100 columnas, el número de fallos será (3 * 100)/2 = 150.

El array b[ ][ ] no se beneficia de la localidad espacial ya que los accesos no se realizan en el orden en que están almacenados sus elementos. En cambio se beneficiará dos veces de la localidad temporal ya que se accede a los mismos elementos para cada iteración de i. Además, cada iteración de j usa los mismos valores de b[ ][ ] que la iteración anterior. Ignorando los posibles fallos por conflicto, el número de fallos en el acceso a b serán 101, es decir, 1 para b[0][0] y 100 para b[1][0] hasta b[100][0]. En la 1ª iteración se producirán dos fallos: b[0][0] y b[1][0]; en la 2ª uno: b[2][0], puesto que b[1][0] ya está en Mc; en la última uno: b[100][0].

Page 156: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

1 + 100 = 101 fallos

3*100/2 = 150 fallos

a[0][0]a[0][1]

b[0][0]b[0][1]

b[1][0]b[1][1]

i= 0, j= 0 a[0][0] ,b[0][0],b[1][0]

i= 0, j= 1 a[0][1] ,b[1][0],b[2][0]b[2][0]b[2][1]

i= 0, j= 2 a[0][2] ,b[2][0],b[3][0]a[0][2]a[0][3]

b[3][0]b[3][1]

i= 0, j= 98 a[0][98] ,b[98][0],b[99][0]b[99][0]b[99][1]

a[0][98]a[0][99]

b[100][0]b[100][1]

i= 0, j= 99 a[0][99] ,b[99][0],b[100][0]

a[1][0]a[1][1]

i= 1, j= 0 a[1][0] ,b[0][0],b[1][0]

a[2][98]a[2][99]

i= 2, j= 98 a[1][0] ,b[0][0],b[1][0]

iteraciones

Mc

El número total de fallos será, pues, de 251. Utilizando prebúsqueda el compilador puede transformar el programa en el siguiente:

for (j = 0; j < 100; j = j + 1) prefetch (b[j+6][0]); prefetch (a[0][j+6]); a[0][j] = b[j][0] * b[j+1][0]; for (i = 1; i < 3; i = i + 1) for (j = 0; j < 100; j = j + 1) prefetch (a[i][j+6]); a[i][j] = b[j][0] * b[j+1][0];

Se ha descompuesto el bucle en dos, el primero (iteración para i = 0) prebusca a partir de b[6][0] y a[0][6]:

Page 157: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

Mc

fallosprebusqueda

1 + 5 = 6 fallos3 fallos

a[0][0]a[0][1]

b[0][0]b[0][1]

b[1][0]b[1][1]

i= 0, j= 0

i= 0, j= 1b[2][0]b[2][1]

i= 0, j= 2a[0][2]a[0][3]

b[3][0]b[3][1]

i= 0, j= 3b[4][0]b[4][1]

a[0][4]a[0][5]

b[5][0]b[5][1]

i= 0, j= 4

a[0][6]

iteraciones

a[0][7]

a[0][99]

b[6][0]

b[0][7]

b[99][0]

i= 99 j= 99

Se ha elegido el valor 6 para el número de iteraciones que se buscan por adelantado.

En el segundo bucle sólo se prebusca a[1][6]... a[1][99], a[2][6]... a[2][99] puesto que todo el array b[i][j]

ya ha sido prebuscado en el primer bucle y se halla en Mc. E el número de fallos en estas dos iteraciones de i será 2*3 = 6. Luego en total solo se producen 15 fallos. El costo de evitar 236 fallos de cachés es ejecutar 400 instrucciones de prebúsqueda. g) Optimizaciones del compilador Las optimizaciones consisten en transformaciones del código fuente del programa realizadas en tiempo de compilación con el objetivo de aumentar la localidad espacial y/o temporal del programa, y consiguientemente reducir la tasa de fallos. Entre las transformaciones más importantes estudiaremos las siguientes:

• Fusión de arrays Se sustituyen varios arrays de igual tamaño por un único array de elementos estructurados. La transformación aumenta la localidad espacial si el programa referencia localmente las componentes de igual índice de los aarrays originales. Ejemplo:

programa original programa transformado int val[SIZE]; int key [SIZE];

struct merge { int val; int key; }; struct merge array_fundido[SIZE]

Page 158: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

val array_fundido

key

La transformación mejora la localidad espacial de los elementos de los dos arrays originales.

• Fusión de bucles

programa original programa transformado

for (i = 0; i < 100; i = i + 1) for (j = 0; j < 100; j = j + 1) a[i][j] = 2/b[i][j] *c[i][j]; for (i = 0; i < 100; i = i + 1) for (j = 0; j < 100; j = j + 1) d[i][j] = a[i][j] + c[i][j];

for (i = 0; i < 100; i = i + 1) for (j = 0; j < 100; j = j + 1) a[i][j] = 2/b[i][j] *c[i][j]; d[i][j] = a[i][j] + c[i][j];

La transformación mejora la localidad temporal, ya que las referencias a a[][] y c[][] en el primer bucle

del programa original se hacen separadas en el tiempo a las referencias a a[][] y c[][] del segundo bucle. En cambio en el programa transformado estas referencias se hacen para los mismos valores de los índices en las 2 expresiones consecutivas.

• Intercambio de bucles

programa original programa transformado

for (j = 0; j < 100; j = j + 1) for (i = 0; i < 5000; i = i + 1) x[i][j] = 2*x[i][j];

for (i = 0; i < 100; i = i + 1) for (j = 0; j < 5000; j = j + 1) x[i][j] = 2*x[i][j];

Page 159: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

bucle intercambiado

iteración 1

iteración 2

iteración 5001

iteración 5002

iteración 495001

iteración 495002

iteración 500000

bucle original

iteración 1

iteración 101

iteración 2

iteración 102

iteración 100

iteración 200

iteración 500000

x[0][0]

x[0][1]

x[0][4999]

x[0][2]

x[1][0]

x[1][1]

x[1][4999]

x[1][2]

x[99][0]

x[99][1]

x[99][4999]

x[99][2]

La transformación mejora la localidad espacial.

• Descomposición en bloques

• Reduce la tasa de fallos aumentando la localidad temporal • En lugar de operar sobre filas o columnas completas de un array los algoritmos de descomposición en

bloques operan sobre submatrices o bloques • El objetivo es maximizar los accesos a los datos cargados en la caché antes de ser reemplazados

Ejemplo: multiplicación de matrices

for (i = 1; i < N; i = i + 1) for (j = 0; j < N; j = j + 1) { r = 0; for (k = 0; k < N; k = k + 1){ r = r + Y[i][k] *Z[k][j];}; X[i][j] = r; };

Page 160: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

X00 X01 X02 X03 X04 X05

X10 X11 X12 X03 X14 X15 X20 X21 X22 X23 X24 X25

X30 X31 X32 X33 X34 X35 X40 X41 X42 X43 X44 X45 X50 X51 X52 X53 X 54 X55

Z00 Z01 Z02 Z03 Z04 Z05

Z10 Z11 Z12 Z13 Z14 Z15 Z20 Z21 Z22 Z23 Z24 Z25

Z30 Z31 Z32 Z33 Z34 Z35 Z40 Z41 Z42 Z43 Z44 Z45 Z50 Z51 Z52 Z53 Z54 Z55

Y00 Y01 Y02 Y03 Y04 Y05

Y10 Y11 Y12 Y13 Y14 Y15 Y20 Y21 Y22 Y23 Y24 Y25

Y30 Y31 Y32 Y33 Y34 Y35 Y40 Y41 Y42 Y43 Y44 Y45 Y50 Y51 Y52 Y53 Y 54 Y55

Programa transformado:

for (jj = 0; jj < N; jj = jj + B) for (kk = 0; kk < N; kk = kk + B) for (i = 0; i < N; i = i + 1) for (j = jj; j < min(jj + B, N); j = j + 1) { r = 0; for (k = kk; k < min(kk + B,N); k = k + 1){ r = r + Y[i][k] *Z[k][j];}; X[i][j] = X[i][j] +r; };

Este programa va calculando parcialmente los valores de x[][] para que los bloques de elementos de Y[][] y Z[][] sean utilizados totalmente cuando se llevan a la caché, aumentando su localidad temporal:

X00 X01 X02

X10 X11 X12

Z00 Z01 Z02

Z10 Z11 Z12 Z20 Z21 Z22

Y00 Y01 Y02

Y10 Y11 Y12

3.2 Reducción de la penalización de fallos a) Prioridad a los fallos de lectura frente a los de escritura

Con una caché de escritura directa (writre throuhg) la mejora de rendimiento más importante proviene del uso de un buffer de escritura de tamaño apropiado. Sin embargo, esto complica los accesos a memoria debido a que el buffer puede contener el valor actualizado (escrito) de una posición que se necesita en un fallo de lectura.

Ejemplo: Supongamos que una Mc de correspondencia directa y escritura directa hace corresponder los bloques en los que se encuentran las direcciones 512 y 1024 sobre la misma línea de Mc. Supongamos que se ejecuta el siguiente programa:

(1) M[512] <-- <R3> // escritura sobre M[512] (2) R1 <-- M[1024] // lectura de M[1024] (3) R2 <-- M[512] // lectura de M[512]

Page 161: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

<R3>

Mc

Mp Buffer de Escritura

512

1024

512 / 1024

1

2

3

Cuando se ejecuta (1) se lleva <R3> al buffer de escritura y a la línea de Mc a la que pertenece la posición

512 (supuesto acierto de escritura, es decir, el bloque al que pertenece 512 se encuentra en Mc). Cuando se ejecuta (2) se produce un fallo de lectura y se sustituye en Mc el bloque al que pertenece 512

por el bloque al que pertenece 1024 Cuando se ejecuta (3) se vuelve a producir un fallo de lectura para llevar de nuevo el bloque al que

pertenece 512 a Mc, pero es posible que éste no esté actualizado por el efecto de (1) si aún el contenido del buffer no se ha escrito en Mp

Este problema de inconsistencia se puede resolver de dos maneras: 1) Retrasando el servicio del fallo de lectura producido por (3) hasta que el buffer esté vacío (todo su

contenido se haya reflejado en Mp). Esta solución penaliza bastante los fallos de lectura, pues los datos empíricos demuestran que la espera sistemática a que el buffer se vacíe para servir un fallo e lectura puede penalizar estos fallos por un factor de 1.5. Por ello es recomendable dar prioridad a la lectura (es mucho más frecuente que la escritura) adoptando la segunda alternativa.

2) Incorporar al proceso asociado al fallo de lectura producido por (3) la comprobación de si el buffer

contiene la posición 512, y continuar si el resultado es falso. b) Utilización de sub-bloques dentro de un bloque

La utilización de bloques de gran tamaño no solo disminuyen la tasa de fallos sino que reduce el espacio de memoria caché dedicado al directorio (almacenamiento de las etiquetas de los bloques residentes en una línea). Sin embargo, bloques grandes aumentan la penalización por fallos debido al aumento de la cantidad de datos que se deben transferir en el servicio de cada fallo. Una forma de disminuir la penalización por fallos sin modificar los otros factores positivos consiste en dividir el bloque en sub-bloques y asociar un bit de validez a cada sub-bloque. De esta forma, cuando se produzca un fallo, no será necesario actualizar más que el sub-bloque que contiene la palabra referenciada. Esta alternativa hace que no sólo haya que comprobar si el bloque está en la caché comparando etiquetas, sino que habrá que asegurar que el sub-bloque que contiene la palabra referenciada es un sub-bloque válido, es decir, con datos actualizados.

También podemos ver esta alternativa de diseño como una forma de economizar información de directorio

asociando una sola etiqueta a un grupo de bloques, e indicando con un bit particular asociado a cada bloque (bit de validez) su estado de actualización cuando el grupo está en Mc. En la siguiente figura se muestra un esquema de esta alternativa de diseño:

Page 162: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

24

etiqueta subbloque1 subbloque2 subloque3 subloque4etiqueta línea palabra

Comparado

bits de validez de los subloques

c) Utilización de un segundo nivel de caché Como los fallos se sirven leyendo bloques de Mp, una alternativa para disminuir la penalización por fallo consiste en disminuir el tiempo de acceso a Mp utilizando el mismo mecanismo caché, es decir, utilizando una caché intermedia o de segundo nivel (L2) entre Mc (L1) y Mp.

Mc (L1)

Mc (L2)

Mp

CPU

Tiempo_acceso_medio = Tiempo_acierto N1 + Tasa_fallos N1 * Penalización_fallos N1 Penalización_fallosN1 = Tiempo_acierto N2 + Tasa_fallos N2 * Penalización_fallos N2 Cuando tenemos varios niveles de cachés hay que diferenciar entre la tasa de fallos local y la global: Tasa_fallos_local = nº de fallos / nº de accesos a la caché Tasa_fallos_global = nº de fallos / nº total de accesos realizados por la CPU En general se cumple:

Page 163: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

25

Tasa_fallos_local ≥ Tasa_fallos_global Y en particular: Tasa_fallos_localN1 = Tasa_fallos_globalN1 Tasa_fallos_localN2 > Tasa_fallos_globalN2 Ejemplo: 1000 referencias a un sistema de cahé de dos niveles 40 fallos se producen en N1 20 fallos se producen en N2 Tasa_fallos_localN1 = Tasa_fallos_globalN1 = 40/1000 = 0.04 (4%) Tasa_fallos_localN2 = 20/40 = 0.5 (50%) Tasa_fallos_globalN2 = 20/1000 = 0.02 (2%) 3.3 Reducción del tiempo de acierto El tiempo de acierto podemos optimizarlo (minimizarlo) actuando sobre tres factores: a) Cachés pequeñas y simples

• El hardware pequeño acelera la comparación de etiquetas y por tanto el tiempo de acierto

• También hace posible su incorporación al chip de la CPU, eliminando el conexionado externo y por tanto

el tiempo de acceso desde la CPU b) Evitar traducción de direcciones durante la indexación de las cachés

• Utilización de direcciones virtuales en las cachés

c) Escrituras segmentadas para rápidos aciertos de escritura Los aciertos de lectura son más rápidos que los de escritura, entre otros motivos porque en los primeros se puede leer el dato de Mc al tiempo que se comprueba si su etiqueta coincide con la de la dirección física. Si no coincide se ignora el dato leído. Esto no es posible en las escrituras, pero sí podemos simultanear la escritura de un dato con la comparación de la etiqueta del siguiente. Es decir, segmentar (pipe-line) la escritura sobre Mc. De esta forma se aceleran los aciertos de escritura.

Page 164: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 7: Memoria Virtual.

1. Gestión de memoria. 2. Memoria virtual. 3. Memoria virtual paginada. 4. Memoria virtual segmentada. 5. Ejemplos

1. Gestión de memoria

El sistema de memoria virtual de los actuales computadores surgió para liberar al programador de una serie de tareas relacionadas con el uso que los programas debían realizar con la memoria. La memoria virtual automatiza la gestión entre los dos niveles principales de la jerarquía de memoria: memoria principal y disco. Antes de entrar en los mecanismos específicos de la memoria virtual revisaremos una serie de funciones que deben incorporarse en la gestión de memoria.

Solapamiento (overlay)

El tamaño de la memoria principal disponible en los computadores ha aumentado de forma sostenida desde sus orígenes. Sin embargo, el tamaño de los programas ha crecido más rápidamente, por lo que la necesidad de ejecutar programas que no cabían en la memoria principal ha sido una constante en la historia de los computadores. Una forma de superar esta limitación es el uso de la técnica de solapamiento (overlay).

En primer lugar, con la técnica de solapamiento se divide en módulos el programa

que no cabe completo en la memoria principal. Después hay que situar en los lugares adecuados de cada módulo las instrucciones de E/S necesarias para cargar en memoria principal aquellos módulos residentes en el disco cuyas instrucciones deban ejecutarse o cuyos datos sean referenciados. Es decir, el propio programa se encarga de cargar dinámicamente aquellos módulos que son referenciados.

Con este mecanismo se puede superar la limitación de la memoria principal, sin

embargo tiene el inconveniente de hacer depender el programa del tamaño de la memoria disponible en el computador, con lo que variaciones en su configuración obligan a revisar la división modular del programa.

Memoria principal

M3 M4M2M1

M1

M2

e/s

Disco

Page 165: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Reubicación En sistemas con multiprogramación se necesita que varios programas residan

simultáneamente en memoria. El tiempo de CPU se va distribuyendo entre ellos de acuerdo a una política de prioridades determinada. La ubicación en memoria de los programas no se conoce en tiempo de compilación, por lo que no se pueden generar direcciones absolutas. Para conseguir una asignación dinámica de memoria en tiempo de ejecución se utilizan registros de reubicación. La dirección efectiva se obtiene sumando a la dirección generada por el compilador el contenido del registro de reubicación asignado al programa. Paginación

La paginación también surgió de la necesidad de mantener más de un programa residente en memoria cuando la capacidad de ésta es inferior a la suma de los tamaños de los programas. Se trata de un mecanismo automático de solapamiento múltiple que practica el Sistema Operativo para hacer posible la multiprogramación. El espacio de memoria principal se divide en bloques de tamaño fijo denominados páginas. Los programas se dividen también en páginas y residen en el disco. El Sistema Operativo se encarga de asignar páginas físicas a los programas en ejecución (multiprogramación). De esta forma el tiempo de CPU puede distribuirse entre los programas residentes. Protección Un papel importante de la gestión de memoria es la protección. Si varios programas comparten la memoria principal debe asegurarse que ninguno de ellos pueda modificar el espacio de memoria de los demás. Como casi todos los lenguajes permiten el uso de punteros dinámicos, los test en tiempo de compilación no son suficientes para garantizar la protección. Esta debe mantenerla en tiempo de ejecución el sistema de gestión de memoria (MMU) Compartición Esta función parece estar en contradicción con la anterior. Sin embargo, con frecuencia los programas de un sistema multiprogramado deben poder compartir y actualizar información, por ejemplo, un sistema de bases de datos. Además, no es necesario tener varias copias de una rutina si se permite que todos los programas accedan a una misma copia. 2. Memoria virtual

El sistema de memoria virtual implementa todas las funciones anteriores de forma integrada.

En un computador con memoria virtual (MV) las direcciones de los programas

(generadas por la CPU) hacen referencia a un espacio mayor que el espacio físico realmente disponible en la memoria principal o memoria física (MF).

Los programas operan virtualmente con un tamaño físico de memoria principal

mucho mayor que el realmente disponible. En estas máquinas hay que diferenciar, pues, entre el espacio de direcciones virtuales generado por la CPU y el espacio de direcciones físicas o reales existentes en memoria principal y determinado por el número de líneas del bus de direcciones.

El espacio virtual se soporta sobre un disco con la ayuda de un mecanismo de

traducción que genera la dirección física de memoria principal a partir de la virtual. En la siguiente figura hemos representado el mecanismo de traducción de direcciones virtuales (DV) a direcciones físicas (DF).

Page 166: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

CPU

2v páginas

Memoria virtual

Tabla de Páginas

Memoria física

Número de Página Virtual (NPV) Desplaz. Página (DP) Dirección Virtual (DV)

Número de Página Física (NPF) Desplaz. Página (DP)

Dirección Física (DF)

Página 0

Página 1

Página 2

Página f-2

Página f-1

Página 0

Página 1

Página 2

Página 3

Página 4

Página 5

Página2 v-3

Página2 v-2

Página2 v-1

control pv 0 pag. fí sica f-1

control pv 1 pag. fí sica 2

control pv 2 pag. fí sica 1

control pv v-2 pag. fí sica 0

control pv v-1 pag. en disco

Memoria de Disco

Reg. Base Tabla de Paginas

Sumador

pv v-1

2w páginas

ACIERTO

FALLO

v

w

Tanto la memoria principal como la memoria del disco se dividen en páginas de igual tamaño. El número de páginas de la memoria virtual en general es mayor que el número de páginas disponibles de la memoria física. Por este motivo, en cada momento sólo las copias de un conjunto de páginas virtuales del programa residen en la memoria física. Este conjunto recibe el nombre de conjunto de trabajo o conjunto activo, y resulta relativamente estable a lo largo del tiempo, debido a la localidad referencial que manifiestan los programas. Esta es la clave del buen funcionamiento de la memoria virtual, al igual que ocurría con la memoria cache.

Los bits de una DV se consideran divididos en dos campos, el número de página

virtual (NPV) los más significativos, y el desplazamiento dentro de la página (DP), los menos significativos. El número de bits del campo DP lo determina el tamaño de página (nº de bits de DP = log2 tamaño de página). El número de bits del campo NPV lo determina el número de páginas virtuales (nº de bits de NPV = log2 nº de páginas virtuales). Los bits de una DF se consideran divididos también en dos campos, el número de página física (NPF) los más significativos, y el desplazamiento dentro de la página (DP), los menos significativos. El número de bits del campo DP de una DF es el mismo que el de una DV, puesto que las páginas tienen igual tamaño en MV y MF. El número de bits del campo NPF lo determina el número de páginas físicas de MF (nº de bits de NPF = log2 nº de páginas físicas).

Las DVs generadas por la CPU se traducen a DFs con la ayuda de una Tabla de

Páginas (TP). Esta tabla contiene tantas entradas como páginas existen en la MV, y la posición en la tabla de una entrada correspondiente a una página virtual concreta coincide con su NPV. Cada entrada contiene un primer campo de bits de control, de los que por el

Page 167: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

momento haremos referencia tan sólo a uno, el bit de presencia (P). Si este bit está activo (por ejemplo a 1) significa que la página virtual correspondiente a esa entrada está presente en la MF, y en este caso el segundo campo de la entrada contiene el correspondiente NPF. Si el bit P está inactivo (por ejemplo a 0) significa que la correspondiente página virtual no está en la MF, sino en el disco. En este caso el segundo campo de la entrada apunta a la dirección del disco donde se encuentra la página virtual. Como en un momento se pueden estar ejecutando más de un programa (multiprogramación o multiusuario) existirán más de una TP, una para cada programa (proceso) activo. Por ello, el acceso a la TP se realiza con la ayuda de un registro base de la tabla de páginas (RBTP) asociado a cada programa.

Para traducir una DV en DF se busca en la correspondiente entrada de la TP. Si el

bit P de esta entrada vale 1, se dice que ha ocurrido un acierto de página, y se lee el contenido del segundo campo que en los aciertos constituye el NPF en la memoria principal. La DF completa se obtiene concatenando los bits de NPF con los de DP de la DV. Si el bit P de la entrada de la TP vale 0, se dice que ha ocurrido un fallo de página, lo que significa que la página virtual donde se ubica la DV que se está traduciendo, no se encuentra en MF. En este caso el fallo de página se sirve buscado la página en el disco, ubicándola en MF y actualizando la correspondiente entrada de la TP.

3. Memoria virtual paginada El mecanismo de traducción de DV a DF que acabamos de describir corresponde a un sistema de memoria virtual paginada. En él el espacio virtual (y físico) se divide en páginas de igual tamaño. Veremos en el apartado siguiente otra alternativa en la que la MV se divide en segmentos de longitud variable, dando lugar a la memoria virtual segmentada. Las entradas de la TP de una MV paginada, además del NPF contiene unos bits de control, de los que hemos mencionado el bit de presencia P.

Como se muestra en la siguiente figura, existen otros bits que controlan los derechos de acceso a la página: lectura (R), escritura (W) y ejecución (X), este último sólo para páginas de código. También suele existir un bit que indica si la página ha sido modificada (datos) y necesita escribirse en disco cuando sea sustituida. En general, los demás bits de control dependen de cada procesador.

P = bit de presencia (de la página en memoria física) RWX = derechos de acceso de lectura, escritura y ejecución

Entrada de la tabla de páginas con correspondencia directa P R W X Dirección de Página Física

Cada programa (proceso) puede ocupar una gran cantidad de memoria virtual. Por ejemplo, en la arquitectura VAX, cada proceso puede tener hasta 231 = 2 GBytes de memoria virtual. Utilizando páginas de 29 = 512 bytes, eso significa que se necesitan tablas de páginas de 222 entradas por proceso. La cantidad de memoria dedicada sólo a tablas de páginas podría ser inaceptablemente alta.

Para solucionar este problema, la mayoría de los esquemas de memoria virtual

almacenan las tablas de páginas en la propia memoria virtual, en lugar de utilizar la memoria física. Esto significa que la tabla de páginas también está sujeta a paginación, igual que el resto de los programas. Cuando un programa se está ejecutando, al menos una

Page 168: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

parte de su tabla de páginas, incluyendo el elemento correspondiente a la página actualmente en ejecución, debe estar en la memoria principal.

3.1 Tablas de páginas de varios niveles

Algunos procesadores hacen uso de un esquema de dos o más niveles para organizar las tablas de páginas. En este esquema, hay una página de directorio de nivel 1 en la que cada elemento apunta a una tabla de páginas de nivel 2, y así sucesivamente. En la siguiente figura se muestra una TP organizada en tres niveles: N1, N2 y N3. Típicamente, la longitud máxima de una tabla de páginas se restringe al tamaño de una página.

Dirección Virtual

Tabla Paginas N3

Tabla Paginas N2

Tabla Paginas N1

Dirección Física

Nivel 1 Nivel 2 Nivel 3 Despla. Página

+

RBP

Entrada TP

Entrada TP

Entrada TP +

+

Número de página física Despla. Página

3.2 Tabla de páginas invertida HASH Esta alternativa elimina de la TP las entradas que no apuntan a una página de la

memoria física, reduciendo las entradas a número igual al de páginas de la memoria física. El campo NPV de la DV se hace corresponder sobre una tabla de dispersión (tabla

hash) mediante una función de dispersión sencilla. La tabla de dispersión incluye un puntero a una TP invertida, que contiene los elementos de la TP. Existe un elemento en la tabla de dispersión y en la tabla de páginas invertida para cada página de memoria física, en vez de para cada página de memoria virtual.

Se necesita, pues, una zona fija de la memoria física para las tablas,

independientemente del número de programas o páginas virtuales que se admitan. Puesto que más de una DV puede apuntar al mismo elemento de la página de

dispersión, se utiliza una técnica de encadenamiento para solucionar este problema. La

Page 169: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

técnica de dispersión da lugar a cadenas usualmente cortas, con uno o dos elementos. Esta alternativa de TP se utiliza en el PowerPC.

Tabla de Dispersión Tabla de Páginas

Dirección Física

Dirección Virtual Nº Página Virtual Desplazamiento

Función deDispersión

NPF

Nº Página Física Desplazamiento

NPV NPF Enlace

3.3 Buffer de traducción anticipada (TLB)

En principio toda referencia a memoria virtual requiere dos accesos a la memoria física: uno para acceder al elemento de la TP, y otro para acceder a la memoria física. Por tanto, un esquema de memoria virtual como el que acabamos de estudiar duplicaría el tiempo de acceso a memoria.

Para evitar este inconveniente los esquemas de memoria virtual utilizan una cache

especial para los elementos de la TP, llamada usualmente buffer de traducción anticipada (TLB, Translation Lookaside Buffer).

El TLB funciona lo mismo que una memoria cache, y contiene aquellas entradas de

la TP a las que se han accedido recientemente. Por el principio de localidad temporal, la mayoría de las referencias a memoria corresponderán a posiciones incluidas en páginas recientemente utilizadas. Por ese motivo, la mayoría de las referencias involucran a entradas de la TP presentes en el TLB. Normalmente el TLB utiliza una correspondencia totalmente asociativa, por lo que una entrada de la TP puede ubicarse en cualquier posición del TLB

Page 170: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

Dirección Física

NPV DP

RWX NPV NPF

Buffer de traducción anticipada (TLB)

=

RWX MemoriaAsociativa

Violación de acceso

Fallo de página

NPF DP

3.4 Interacción entre la memoria virtual y la memoria cache

La memoria virtual debe interactuar con la memoria cache (no con la cache que implementa el TLB, sino con la cache de la memoria principal).

Para traducir una DV el sistema de memoria consulta el TLB para comprobar si la

entrada de la TP se encuentra en él. Si es así, se genera la dirección real (física), combinando el NPF con el DP. Si no, se accede a la TP en busca del elemento correspondiente. Una vez que se ha generado la dirección física, compuesta por una etiqueta y un número de conjunto, se consulta la cache para ver si el bloque que contiene la palabra referenciada se encuentra en dicho conjunto. Si es así, se envía al procesador. Si no, se produce un fallo de cache y se busca la palabra en memoria principal.

Por tanto, la dirección virtual debe pasar primero por el TLB antes de que la

dirección física pueda acceder a la cache, lo que alarga el tiempo de acierto. Este mecanismo se puede acelerar utilizando dos alternativas:

1. Acceder en paralelo (simultáneamente) al TLB para buscar el NPF y al directorio de la cache para buscar el bloque.

2. Utilizar caches con direcciones virtuales

La primera alternativa requiere que la longitud del campo de desplazamiento DP de la DV (igual al DP de la DF) sea mayor o igual que los campos de conjunto y palabra del formato de la DF para la cache, tal como se muestra en la siguiente figura. De esta forma será posible realizar en paralelo la búsqueda en el TLB del NPF que se corresponde con la

Page 171: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

etiqueta, y en el directorio de la cache el nº de bloque (línea), que junto a la palabra dentro del bloque, se corresponde con el DP, del que se dispone desde el instante que se genera la DV, pues no requiere traducción.

N PV DP

NPV NPF

TLB

Fallo de página

N PF DP

etiqueta datos

aciertofallo

MUXComparador

etiqueta línea palabra

Memoria cache

Esto significa que el tamaño de la cache viene impuesto por el tamaño de la página y

el grado de asociatividad. Por ejemplo, si tenemos un tamaño de página de 1K, el DP tendrá 10 bits. Si el número de palabras por bloque es 8 (3 bits de palabra) quedarán 7 bits para el campo de conjunto de la dirección física de la cache. Si la asociatividad fuese 1 (correspondencia directa) con esos 7 bits podríamos distinguir tan sólo entre 128 marcos de bloque o líneas de la cache, lo que impondría un tamaño de cache de 128 x 8 = 1024 = 1K.

Page 172: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

Para aumentar este tamaño tendríamos que aumentar la asociatividad. Por ejemplo,

si el grado de asociatividad es 2, el tamaño de la cache sería de 2K. Cuando aumenta el grado de asociatividad, también aumentan las comparaciones que debemos realizar con la etiqueta obtenida del TLB, ya que se deben comparar con ella todas las etiquetas del conjunto de la cache (tantas como vías)

La segunda alternativa de utilizar caches direccionadas virtualmente tiene la ventaja de que en caso de acierto en la cache, no es necesario el proceso de traducción. Sin embargo, esta alternativa tiene dos problemas fundamentales. El primero surge en las conmutaciones de procesos. Cuando se cambia de proceso, la misma dirección virtual de cada proceso referencia diferentes direcciones físicas, lo que exige que se limpie la cache y esto supone una gran fuente de fallos forzosos. El segundo se origina porque es posible que distintos procesos con diferentes direcciones virtuales se correspondan con la misma dirección física (aliasing). Esto puede producir dos copias del mismo dato en una cache virtual, lo que ocasiona problemas de inconsistencia si hay escrituras. 3.5 Múltiples espacios virtuales

Una forma de acelerar la conmutación de procesos evitando tener que borrar la TP (que puede estar en TLB o memoria invertida) es extender las entradas con un campo que contiene el identificador de proceso (PID).

Dirección Física

N PV DP

RWX PID NPV NPF

(TLB)

=

RWXPID

Violación de acceso

Fallo de página

N PF DP =

3.6 Políticas de búsqueda (fetch)

• Prebúsqueda (análoga a la utilizada en memoria cache) • Búsqueda por demanda (análoga a la utilizada en memoria cache)

Políticas de sustitución (replacement) • Aleatoria

Page 173: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Elige una página aleatoriamente, sin mirar el número de referencias o el tiempo que la página lleva en memoria principal. En general esta política tiene unos resultados pobres, excepto en entornos donde donde existe poca localidad como en las bases de datos.

• FIFO (First In First Out)

Se sustituye la página que lleva más tiempo residente en memoria. Utiliza una cola FIFO y hace un uso pobre de la localidad temporal

• Reloj (FINUFO: First In Not Used First Out) Es una mejora de la FIFO en la que también se chequea si una página ha sido referenciada, haciendo mejor uso de la localidad temporal. Para implementar esta política se mantiene una cola como en la FIFO, pero circular, con un puntero a la última página sustituida, y un flag asociado a cada página para anotar que ha sido referenciada.

• LRU (Least Recently Used) Análoga a la utilizada en memoria cache

• Optima (MIN)

Se trata de la mejor política posible: sustituir la página que vaya a tardar más tiempo en ser referenciada en el futuro (Belady). Aunque esta política tiene el mínimo número posible de fallos de página (de aquí el nombre de política MIN), no se puede llevar a la práctica en tiempo real, y se utiliza como una referencia teórica para medir la eficiencia de otras políticas en entornos experimentales.

4. Memoria virtual segmentada

Mientras que la paginación es transparente para el programador, y le proporciona un espacio de direcciones mayor, la segmentación es normalmente visible para el programador, y proporciona una forma lógica de organizar los programas y los datos, y asociarle los privilegios y atributos de protección.

La segmentación permite que el programador vea la memoria constituida por múltiples espacios de direcciones o segmentos. Los segmentos tienen un tamaño variable, dinámico. Usualmente, el programador o el sistema operativo asignará programas y datos a segmentos distintos. Puede haber segmentos de programa distintos para varios tipos de programas, y también distintos segmentos de datos. Se pueden asignar a cada segmento derechos de acceso y uso. Las direcciones virtuales estarán constituidas en este caso por un número de segmento (NS) y un desplazamiento dentro del segmento (DP). El proceso de traducción de dirección virtual a física es análogo al de la memoria virtual paginada, con la diferencia que ahora tenemos una tabla de segmentos (TS) cuyas entradas (denominadas también descriptores de segmento) contienen, además de los bits de control y la dirección real del segmento, la longitud L del mismo, ya que los segmentos tienen longitud variable. En la siguiente figura hemos representado esquemáticamente el proceso de traducción.

Page 174: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Dirección Física

Tabla de segmentos (TS)

RWX Número Segmento(NS) Desplaz. (DP)

Reg. Tabla Segmentos

Dir. Real Seg. Desplaz.(DP)

P RWX L Dir.Real Seg

Tipo acceso Dirección Virtual

P = bit de presencia L = Longitud del segmento

Esta organización tiene ciertas ventajas para el programador, frente a un espacio de direcciones no segmentado:

• Simplifica la gestión de estructuras variables de datos. Si el programador no conoce a priori el tamaño que puede llegar a tener una estructura de datos particular, no es necesario que lo presuponga. A la estructura de datos se le asigna su propio segmento, y el sistema operativo lo expandirá o lo reducirá según sea necesario.

• Permite modificar los programas y recompilarlos independientemente, sin que sea

necesario volver a enlazar y cargar el conjunto entero de programas. De nuevo, esto se consigue utilizando varios segmentos.

• Permite que varios procesos compartan segmentos. Un programador puede situar un

programa correspondiente a una utilidad o una tabla de datos de interés en un segmento, que puede ser direccionado por otros procesos.

• Se facilita la protección. Puesto que un segmento se construye para contener un

conjunto de programas o datos bien definido, el programador o el administrador del sistema puede asignar privilegios de acceso de forma adecuada.

4.2 Políticas de ubicación (placement) para memorias segmentadas

Se identifican los huecos de memoria principal por su tamaño(longitud) y dirección inicial, y se reúnen en una lista. La política de ubicación determinará la ordenación previa de la lista. Una vez que se decide el hueco donde se ubica el segmento, se actualiza la lista de huecos con el que se acaba de crear (a no ser que el segmento mida exactamente igual que el hueco de memoria utilizado). Si no se puede encontrar un hueco apropiado para el segmento, interviene la política de sustitución. Las tres políticas de ubicación de segmentos más utilizadas son las siguientes: • Mejor ajuste (best fit)

Page 175: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

La lista de huecos se mantiene ordenada en orden creciente de tamaño y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo.

• Peor ajuste (worst fit) La lista de huecos se mantiene ordenada en orden decreciente de tamaño y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo.

• Primer ajuste (first fit)

La lista de huecos se mantiene ordenada en orden creciente de las direcciones iniciales de los huecos, y se ubica el segmento en el primer hueco con capacidad suficiente para albergarlo. Con esta política, cuando transcurre un cierto tiempo, se acumulan un número elevado de huecos pequeños próximos a la cabeza de la lista, penalizando las búsquedas. Esto se puede evitar adelantando cíclicamente, después de cada búsqueda un hueco la posición inicial de la lista.

4.3 Memoria con segmentos paginados

Como vimos en el apartado anterior, la segmentación presenta una serie de propiedades ventajosas para el programador, sin embargo, la paginación proporciona una forma más eficiente de gestionar el espacio de memoria. Para combinar las ventajas de ambas, algunos sistemas permiten una combinación de ambas, es decir, un sistema virtual con segmentos paginados. El mecanismo de traducción de DVs a DFs no es más que la composición del mecanismo de la memoria segmentada y el de la paginada, tal como se muestra en la siguiente figura:

Tabla de Paginas del Segmento

Dirección Física

Tabla de segmentos

RWX Nº Segmento Nº Página DP

Reg. Tabla Segmentos

P RWX L Dir.Real Seg

Tipo acceso Dirección Virtual

NPF DP

P = bit de presencia L = Longitud del segmento

P NPF

Page 176: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

5. Ejemplo de sistema de memoria virtual: procesador Pentium II El Pentium II dispone de un sistema de gestión de memoria virtual con posibilidad

de segmentación y paginación. Los dos mecanismos se pueden activar o desactivar con independencia, dando pues lugar a cuatro formas de funcionamiento del sistema de memoria: 1) Memoria no segmentada no paginada: la dirección virtual coincide con la dirección física. Esta alternativa resulta útil cuando el procesador se utiliza como controlador de sistemas empotrados. 2) Memoria paginada no segmentada: la memoria constituye un espacio lineal de direcciones paginado. La protección y la gestión de memoria se realizan a través de la paginación. 3) Memoria segmentada no paginada: la memoria constituye un conjunto de espacios de direcciones virtuales (lógicas). Esta alternativa presenta la ventaja frente a la paginación en que proporciona, si es necesario, mecanismos de protección a nivel de byte. Además, garantiza que la tabla de segmentos se encuentra ubicada en el procesador cuando el segmento está en memoria. Por ello, la segmentación sin páginas da lugar a tiempos de acceso predecibles. 4) Memoria segmentada paginada: se utilizan simultáneamente los dos mecanismos, la segmentación para definir particiones lógicas de memoria en el control de acceso, y la paginación u para gestionar la asignación de memoria dentro de las particiones. 5.1 Mecanismo de segmentación

Cuando se activa la segmentación una dirección virtual (llamada dirección lógica en la terminología de Intel) consta de una referencia al segmento de 16 bits y un desplazamiento de 32 bits. Dos bits de la referencia al segmento se utilizan para el mecanismo de protección, y los 14 bits restantes para especificar al segmento en cuestión (16K segmentos). Con una memoria segmentada, el espacio de memoria virtual total que ve el usuario es 246 = 64 Terabytes (TBytes). El espacio de direcciones físicas utiliza direcciones de 32 bits, con una capacidad máxima de 4 GBytes.

Existen dos formas de protección asociadas a cada segmento: el nivel de privilegio y

el atributo de acceso. Hay cuatro niveles de privilegio, desde el más protegido (nivel 0), al menos protegido

(nivel 3). El nivel de privilegio asociado a un segmento de datos constituye su clasificación; mientras que el nivel de privilegio asociado a un segmento de programa constituye su acreditación (clearance). Un programa en ejecución puede acceder a un segmento de datos sólo si su nivel de acreditación es menor (tiene mayor privilegio) o igual (igual privilegio) que el nivel de privilegio del segmento de datos.

La forma de utilizar los niveles de privilegio depende del diseño del sistema

operativo. Lo usual es que el nivel de privilegio 1 lo utilice la mayor parte del sistema operativo, y el nivel 0 una pequeña parte del mismo, la dedicada a la gestión de memoria, la protección y el control del acceso. Esto deja dos niveles para las aplicaciones. En muchos sistemas, las aplicaciones utilizan el nivel 3, dejándose sin utilizar el nivel 2. Los aplicaciones que implementan sus propios mecanismos de seguridad, como los sistemas de gestión de bases de datos, suelen utilizar el nivel 2. Además de regular el acceso a los segmentos de datos, el mecanismo de privilegio limita el uso de ciertas instrucciones. Por ejemplo, las instrucciones que utilizan los registros de gestión de memoria, sólo pueden ejecutarse desde el nivel 0; y las instrucciones de E/S sólo pueden ejecutarse en el nivel

Page 177: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

determinado por el sistema operativo, que suele ser el nivel 1. El atributo de acceso al segmento de datos especifica si se permiten accesos de lectura/ escritura o sólo de lectura. Para los segmentos de programa, el atributo de acceso especifica si se trata de acceso de lectura/ejecución o de sólo lectura.

El mecanismo de traducción de dirección para la segmentación hace corresponder una dirección virtual con una dirección lineal. Una dirección virtual consta de un desplazamiento de 32 bits y un selector de segmento de 16 bits.

32 0

Selector de segmento

15 2 1 0

Desplazamiento

Número de segmento TI RPL

DirecciónVirtual

El selector de segmentos consta de los siguientes campos:

• TI: Indica si la traducción va a utilizar la tabla de segmento global o local. • Número de segmento: se utiliza como índice en la tabla de segmentos. • RPL: Indica el nivel de privilegio del acceso.

Cada elemento de la tabla de segmentos consta de 64 bits, como muestra la siguiente figura:

Descriptorde

segmento

32 0

Base(8bits) G D/B Límite P DPL S Tipo Base(8 bits)

Base (16 bits) Límite (16 bits)

Los campos son los siguientes:

• Base ( 32 bits): dirección de comienzo del segmento dentro del espacio lineal de direcciones

• Límite ( 20 bits): tamaño del segmento • Nivel de privilegio(DPL) (2 bits) • Bit de segmento presente(P) ( 1 bit): indica si el segmento está disponible en

memoria principal • Bit S (1 bit): determina si el segmento es del sistema • Tipo (4 bits) determina el tipo de segmento e indica los atributos de acceso • Bit de granularidad (G) (1 bit): indica si el campo límite se interpreta en unidades

Bytes o 4KBytes • Bit D/B (1 bit): indica si los operandos y modos de direccionamiento son de 16 ó 32

bits (en segmentos de código)

5.2 Mecanismo de paginación Cuando se activa la paginación los programas utilizan directamente direcciones

lineales. El mecanismo de paginación del Pentium II utiliza una tabla de páginas de dos niveles. El primero es un directorio de páginas, que contiene hasta 1.024 elementos. Esto divide los 4 GBytes del espacio lineal de memoria en 1.024 grupos de páginas, cada grupo

Page 178: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

con 4 Mbytes de capacidad y con su propia tabla de páginas. La flexibilidad del sistema de gestión de memoria permite utilizar un directorio de páginas para todos los procesos, un directorio de páginas para cada proceso o una combinación de ambos. El directorio de páginas del proceso en curso está siempre en memoria principal. Las tablas de páginas pueden estar en memoria virtual.

La siguiente figura ilustra la combinación de los mecanismos de segmentación y paginación en la que no aparece el TLB ni la memoria cache. El Pentium II permite seleccionar dos tamaños de páginas de 4 KBytes ó de 4 MBytes. Cuando se utilizan páginas de 4 MBytes, hay un sólo nivel en la tabla de páginas. El uso de páginas de 4 MBytes reduce las necesidades de memoria. Con páginas de 4 KBytes, una memoria principal de 4 GBytes necesita del orden de 4 MBytes de memoria sólo para la tabla de páginas. Con páginas de 4 MBytes, una única tabla, de 4 KBytes de longitud, es suficiente para la gestión de las páginas.

Dirección lineal

Dir Página Desplaz.

Segmentación

Tabla desegmentos

Directoriode páginas

Tabla depáginas

Direcciónfísica

Dirección lógica (virtual)

Segmento Desplazamiento

Paginación

Memoriaprincipal

Page 179: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 8: Organización de la Entrada/salida

1. Funciones implicadas en las operaciones de e/s. 2. Estructura del sistema de e/s: módulos de e/s y controladores 3. Mecanismos básicos de e/s: sincronización 4. E/S controlada por programa 5. E/S serie y paralela

1. Funciones implicadas en las operaciones de entrada/salida Para que un computador pueda ejecutar un programa debe ser ubicado previamente en la memoria,

junto con los datos sobre los que opera, y para ello debe existir una unidad funcional de entrada de información capaz de escribir en la memoria desde el exterior. Análogamente, para conocer los resultados de la ejecución de los programas, los usuarios deberán poder leer el contenido de la memoria a través de otra unidad de salida de datos. La unidad de Entrada/Salida (E/S) soporta estas funciones, realizando las comunicaciones del computador (memoria) con el mundo exterior (periféricos). Los dispositivos periféricos que se pueden conectar a un computador se suelen clasificar en tres grandes grupos: a) Dispositivos de presentación de datos. Son dispositivos con los que interactuan los usuarios, transportando

datos entre éstos y la máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc. b) Dispositivos de almacenamiento de datos. Son dispositivos que forman parte de la jerarquía de memoria

del computador. Interactúan de forma autónoma con la máquina, por ejemplo, discos magnéticos y cintas magnéticas.

c) Dispositivos de comunicación con otros procesadores. Permiten la comunicación con procesadores remotos a través de redes, por ejemplo, las redes de área local o global.

d) Dispositivos de adquisición de datos. Permiten la comunicación con sensores y actuadores que operan de forma autónoma en el entorno del computador. Se utilizan en sistemas de control automático de procesos por computador y suelen incorporar conversores de señales A/D y D/A.

E/S

TecladoCinta

DiscoCRT Impresora

Memoria CPU

25° C

A/D-D/A

Los dispositivos de transporte y presentación de datos representan una carga muy baja de trabajo para el procesador comparados con los dispositivos de almacenamiento. La siguiente tabla muestra las velocidades de transferencia típicas para diferentes dispositivos:

Page 180: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

Dispositivos Velocidad Sensores Teclado Línea de comunicaciones Pantalla (CRT) Impresora de línea Cinta (cartridge) Disco Cinta

1 Bps – 1 KBps 10 Bps 30 Bps – 200 KBps 2 KBps 1 – 5 KBps 0.5 – 2 MBps 4.5 MBps 3-6 MBps

Aunque la velocidad de transferencia de los dispositivos de presentación de datos ha sido

tradicionalmente lenta comparada con la de los dispositivos de almacenamiento, en los últimos tiempos la situación está cambiando. Cada vez más, los computadores se utilizan para manejar documentos multimedia que constan de gráficos, vídeos y voz. La siguiente tabla presenta algunos parámetros de transferencia para los dispositivos modernos de E/S multimedia:

Medio Velocidad Retardo máximo Gráficos Vídeo Voz

1 MBps 100 MBps 64 KBps

1 - 5 segundos 20 milisegundos 50 - 300 milisegundos

Los gráficos requieren una gran capacidad de procesamiento de datos, hasta el punto que se han

diseñado procesadores de propósito especial para manejar sofisticadas representaciones gráficas. El procesamiento de las imágenes gráficas puede requerir de 5 a 10 microprocesadores de alta velocidad.

El problema del vídeo es simplemente la animación de los problemas gráficos, ya que debe crearse

una nueva imagen cada 1/30 de segundo (33 milisegundos).

El procesamiento de la voz es también elevado porque exige la creación o el reconocimiento de varios fonemas en tiempo real. De hecho es el medio que más capacidad de procesamiento requiere debido a que presenta el mayor grado de intolerancia por retrasos en el usuario.

Los dispositivos periféricos que pueden conectarse a un computador para realizar entrada y salida de

información presentan, pues, las siguientes características:

Tienen formas de funcionamiento muy diferentes entre sí, debido a las diferentes funciones que realizan y a los principios físicos en los que se basan.

La velocidad de transferencia de datos es también diferente entre sí y diferente de la presentada por la CPU y la memoria.

Suelen utilizar datos con formatos y longitudes de palabra diferentes

No obstante estas diferencias, existen una serie de funciones básicas comunes a todo dispositivo de E/S:

Identificación única del dispositivo por parte de la CPU Capacidad de envío y recepción de datos Sincronización de la transmisión, exigida por la diferencia de velocidad de los dispositivos de E/S con

la CPU La identificación del dispositivo se realiza con un decodicador de direcciones. El envío y la recepción de datos tiene lugar a través de registros de entrada y salida de datos. Los circuitos de sincronización se manipulan por medio de registros de estado y control. El siguiente esquema representa gráficamente estas funciones:

Page 181: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

líneas de control

líneas de datos

líneas de direcciones

Registros de datos(entrada y/o salida)

Registros deestado y control

Circuitos desincronización

Dispositivo periférico

identificación

envio/recepción

Decodificadorde direcciones

Las tres funciones básicas se pueden realizar a través del bus del sistema que conecta la memoria y la CPU, o bien se puede utilizar un bus específico para las operaciones de E/S. Estas alternativas se traducen en dos formas de organización de los espacios de direcciones:

• Espacios de direcciones unificados Las unidades de E/S se ubican en el espacio único de direcciones como si fuesen elementos de memoria. A cada unidad de E/S se le asigna un conjunto de direcciones (suficiente para diferenciar todos sus registros internos). La interacción entre CPU y unidad de E/S se realiza a través de instrucciones de referencia a memoria. El bus del sistema es único.

bus del sistema

CPUUnidadde E/S 1

Unidadde E/S nMemoria

• Espacios de direcciones independientes (Memoria y E/S) Las unidades de E/S se ubican en un espacio de direcciones diferente al de memoria. La interacción entre CPU y unidad de E/S se realiza a través de instrucciones específicas de E/S. La separación de espacios de direcciones puede soportarse con un bus único de uso compartido entre Memoria y E/S en función del estado de una línea de control MEM/IO:

Page 182: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

Línea MEM/IO

bus del sistema

CPUUnidadde E/S 1

Unidadde E/S nMemoria

Pero el desdoblamiento de espacios de direcciones puede responder a la existencia de dos buses independientes, uno para memoria (bus del sistema) y otro para E/S:

bus de E/S

bus de memoria

CPU

Unidadde E/S 1

Unidadde E/S 2

Unidadde E/S n

Memoria

Funcionalmente son equivalentes, pero desde el punto de vista de la codificación de programas difieren en el uso de las instrucciones. En el caso de E/S asignada en memoria se utilizan instrucciones de referencia a memoria, mientras que para E/S aislada existe un grupo particular de instrucciones para realizar esta función. Los dos ejemplos siguientes muestran ambas alternativas: E/S programada asignada en memoria 200 LOAD #1 / AC <-- #1 STORE 517 / M[517] <-- <AC> 202 LOAD 517 / AC <-- M[517] BPL 202 / Bifurca si N=0 LOAD 516 / AC <-- M[516] E/S programada aislada 200 START I/O 5 201 TEST I/O 5 BNR 201 / Bifurca si dispositivo no disponible IN 5 2. Estructura del sistema de E/S: módulos de e/s y controladores de dispositivos

Las diferencias existentes entre los dispositivos periféricos han hecho que la unidad de E/S de un computador se organice en torno a dos tipos de elementos, unos que soportan las características comunes a todos los dispositivos (módulos de E/S) y otros específicos para cada periférico que son los controladores de dispositivo:

Page 183: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Controlador de dispositivo

8259

8259

DISCO

Módulo de E/S

2.1 Módulos de E/S

Un módulo de E/S permite que el procesador gestione una amplia gama de dispositivos periféricos de una forma similar, ocultando los detalles concretos de temporización, formatos de datos y principios físicos de funcionamiento. El módulo de E/S se conecta con el procesador a través de un conjunto de líneas de datos, dirección y control (un bus). Los datos que se transfieren se almacenan temporalmente en un registro de datos. El estado del módulo se refleja en los bits de un registro de estado. El registro de control permite configurar y programar diferentes funciones en el módulo. Estos dos registros (estado y control) pueden unificarse en uno sólo en módulos simples. Un módulo de E/S dispone de la lógica específica para su conexión con uno o más dispositivos periféricos. En la siguiente figura se muestra la estructura general de un módulo de E/S:

Líneasde Datos

Líneas dedirección

Líneasde control

Registro de datos

Registro de estado/control

Lógicade E/S

Lógica deinterfaz con

el dispositivoexterno

Lógica deinterfaz con

el dispositivoexterno

Datos

Estado

Control

Datos

Estado

Control

Un módulo sencillo de E/S capaz de realizar la interfaz de un computador con una impresora podría tener la estructura mostrada en la siguiente figura. El decodificador hace que el módulo se identifique (SEL*) para A7 = 1, A6 = 0, A5 = 1, A4 = 1, A3 = 1,A2 = 1, A1 = 0, A0 = --, es decir, que ocupe las direcciones de memoria: 10111100 y 10111101, la primera corresponderá a los registros de estado y control (A0 = 0), y la segunda al registro de datos (A0 = 1). Los registros de estado y control pueden tener una única dirección asociada porque el primero sólo se lee (RD*) y el segundo sólo se escribe (WR*) desde el bus.

Page 184: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

INTERFAZ DE IMP RESORADECODIFICADOR

A7

A1

...

A0

RD*

WR*

B. DATOS

SEL*CLK

OE*

CLK

DATOS

ESTADO

CONTROL

CP U

2.2 Controlador de dispositivo (periférico)

La estructura del controlador de un dispositivo tendrá que adaptarse en cada caso a las peculiaridades específicas del periférico. Unos tendrán que actuar sobre elementos electromecánicos (impresoras de línea), otros sobre elementos ópticos (CD-ROM), o magnéticos (discos), etc. Sin entrar en las singularidades de cada uno, podemos decir que los controladores de dispositivos periféricos presentan una estructura general como la representada en la siguiente figura:

Datos(desde y hacia el exterior)

Control(desde el módulo de E/S)

Estado (hacia el módulo de E/S)

Datos(desde y hacia el módulo de E/S)

Lógicade

control

Buffer

Transductor

Controlador de dispositivo

La conexión con el módulo de E/S se realiza a través de señales de control, estado y datos. Es la parte

del controlador que omologa su comportamiento singular al esquema general de gestión de la E/S. Las señales de control determinan la función que debe realizar el dispositivo. La lógica de control asociada al dispositivo controla su operación en respuesta a las indicaciones del módulo de E/S. El transductor convierte las señales eléctricas asociadas a los datos a otra forma de energía. Además, suele existir un buffer asociado al transductor para almacenar temporalmente el dato que se transfiere entre el módulo de E/S y el dispositivo. En el tema 8 estudiaremos una serie de dispositivos periféricos particulares y sus controladores asociados. 2.3 Comunicación entre el módulo de E/S y el controlador de dispositivo periférico

Page 185: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

Analizaremos en este apartado el dialogo de señales que de forma general tiene lugar entre el módulo de E/S y el controlador de dispositivo en una transmisión de datos. • Salida

En el caso de un dispositivo de salida (o de e/s en operación de salida) las líneas básicas que intervienen son las del bus de datos y dos de control: dato válido y dato aceptado. La primera indica al dispositivo la validez del dato presente en el bus de datos, y es activada por el módulo de E/S cuando ha estabilizado el bus de datos con el valor del dato a transmitir. La segunda la activa el dispositivo periférico en respuesta a la lectura y procesamiento del dato, y como respuesta a la disponibilidad para aceptar un nuevo dato. En la siguiente figura hemos representado en forma gráfica la evolución temporal de las señales en una operación de salida

dato válido

bus de datos

dato aceptado

dato válido

bus de datos

Módulode E/S

Dispositivoperiférico

dato aceptado

Salida

La anterior secuencia de acciones que realizan el módulo de E/S y el dispositivo periférico en una operación de salida podemos también verlas en el siguiente diagrama:

Dato --> bus de datos

"1" --> dato válido

bus de datos --> periférico

"1" --> dato aceptado

0 --> dato válido

"Z" --> bus de datos

"0" --> dato aceptado(listo para aceptar una

nueva operación)

"1" = capacitación"0" = descapacitación"Z" = alta impedancia

Módulo de E/S Periférico

• Entrada

Page 186: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

En el caso de un dispositivo de entrada (o de e/s en operación de entrada) las líneas básicas que intervienen son las del bus de datos y dos de control: petición de dato y dato aceptado. La primera solicita al dispositivo un dato de entrada, y es activada por el módulo de E/S. La segunda la activa el dispositivo periférico cuando ha generado el dato y su valor es estable en el bus de datos. Con la activación de esta señal el módulo de E/S conoce la validez del dato en el bus y puede proceder a su carga en el registro de datos. En la siguiente figura hemos representado en forma gráfica la evolución temporal de las señales en una operación de entrada

bus de datos

petición dato

dato valido

dato válido

bus de datos

Módulode E/S

Dispositivoperiférico

petición dato

Entrada

La anterior secuencia de acciones que realizan el módulo de E/S y el dispositivo periférico en una operación de entrada podemos también verlas en el siguiente diagrama:

"1" --> petición dato

Dato --> bus de datos

"1" --> dato válido

bus de datos--> Módulo E/S

0 --> petición dato

"0" --> dato válido(listo para aceptar una

nueva operación)

"1" = capacitación"0" = descapacitación"Z" = alta impedancia

Módulo de E/S Periférico

Page 187: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

3. Mecanismos básicos de e/s: sincronización Las diferencias de velocidad entre la CPU y los periféricos de E/S, y lo que es más importante, la no

previsibilidad del tiempo de respuesta de estos últimos, hace necesario un mecanismo de sincronismo que permita coordinar adecuadamente las transferencias de datos entre ambas unidades. Existen dos mecanismos básicos para sincronizar las operaciones de E/S con las de la CPU:

a) Sincronización por programa b) Sincronización por interrupción

El comportamiento de cada uno de estos mecanismos se resume en los dos siguientes organigramas:

no

si

Orden delectura al

módulo de

Leer el estadodel módulo

Leer el datodel módulo

de E/S

¿estado indicaorden realizada?

Escribir eldato en

memoria

¿final?

CPU → E/S

E/S → CPU

E/S → CPU

CPU → Memoria

si

no

E/S Programada

si

Orden delectura al

módulo de

Leer el estadodel módulo

Leer el datodel módulo

de E/S

Escribir eldato en

memoria

¿final?

CPU → E/S

E/S → CPU

E/S → CPU

CPU → Memoria

si

no

Error

Interrupción

Ejecutar otra tarea

¿estado indicaorden realizada?

no

E/S por interrupción

4. E/S controlada por programa

La sincronización por programa (E/S programada) es la más sencilla de implementar en un computador, sin embargo, presenta algunos inconvenientes: • Pérdida de tiempo: el computador no realiza trabajo útil en el bucle de espera • Impide la realización de tareas periódicas, como la exigida por el refresco de una pantalla • Dificultades para atender varios periféricos

Page 188: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Los dos últimos inconvenientes podrían paliarse en parte limitando el tiempo de espera, como se muestra en el siguiente organigrama:

no

si

Orden delectura al

módulo de

Leer el estadodel módulo

Leer el datodel módulo

de E/S

Escribir eldato en

memoria

¿final?

CPU → E/S

E/S → CPU

E/S → CPU

CPU → Memoria

si

no

¿límite de tiempo?

no

Otrasoperaciones

de E/S

¿estado indicaorden realizada?

Ejemplos de E/S controlada por programa

Determinemos el porcentaje de tiempo de ocupación de CPU de tres dispositivos que se conectan a un procesador mediante E/S programada: un ratón, un disco flexible y un disco duro. Supondremos que el número de ciclos que requiere la operación completa de E/S sobre el dispositivo es de 400, y que el procesador trabaja a 500 MHz. Se supone que se puede ejecutar la consulta del estado del dispositivo con la frecuencia necesaria para que no se pierda ningún dato, y que los dispositivos están potencialmente siempre ocupados. 1. El ratón debe ser leído 30 veces por segundo para asegurar que no se pierde ningún movimiento 2. El disco flexible transfiere datos al procesador en unidades de 16 bits, a una velocidad de 50KB/seg. No

debe perderse ningún dato. 3. El disco duro transfiere datos en bloques de 4 palabras, y puede transferir a una velocidad de 4MB/seg. No

debe perderse ningún dato. Ratón: Ciclos de reloj por segundo para la lectura = 30 X 400 = 12.000 ciclos por segundo Porcentaje de ciclos de procesador consumidos en la lectura = 12 x 103 / 500 x 103 = 0,002 % El resultado muestra que se podría utilizar E/S programada con el ratón, sin un impacto significativo en el rendimiento del procesador Disco flexible

Page 189: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

La frecuencia a la que debe realizarse la lectura será: 50KB/seg / 2 byte/acceso por encuesta = 25 K acceso por lectura/ seg. Ciclos por segundo para la lectura = 25K x 400 Porcentaje de ciclos de procesador consumidos en la lectura = 25 x 1000 x 400 / 500 x 106 = 2 % Este tiempo es importante, pero se puede tolerar en un sistema de gama baja. Disco duro Hay que realizar lectura del dispositivo a una frecuencia que coincida con el ritmo al que llegarán los bloques de 4 palabras, que es 250 K veces por segundo (4 MB por segundo / 16 bytes por transferencia). Por tanto: Ciclos consumidos para lectura = 250 K x 400 Porcentaje de ciclos de procesador consumidos en la lectura = 100 x 106 / 500 x 106 = 20 % Resultado que indica que una quinta parte del tiempo del procesador se consumirá en la lectura del dispositivo, con lo que resulta claramente inaceptable

5. E/S serie y paralelo

La conexión entre el módulo de E/S y el dispositivo periférico se puede realizar en forma serie o paralela. La E/S serie utiliza una única línea de transmisión, y se emplea cuando módulo de E/S y dispositivo periférico están a una distancia media o larga y el costo del medio de transmisión resulta importante. La transmisión tiene lugar haciendo que la línea adquiera sucesivamente a lo largo del tiempo el estado de cada uno de los bits constitutivos del mensaje. El tiempo asignado a cada bit determina la velocidad de transmisión en bits/segundo o baudios.

MódulodeE/S

Dispositivoperiférico

En cambio, la E/S paralela se utiliza para conectar módulos de E/S que se encuentran relativamente

cerca del dispositivo periférico. Utiliza un conjunto de líneas por las que se transmiten simultáneamente (en paralelo) los bits del mensaje

MódulodeE/S

Dispositivoperiférico

5.1 E/S serie Existen dos métodos para sincronizar las transmisiones en la E/S serie: • Asíncrona, que no utiliza reloj (de ahí su nombre) y que se resincroniza periódicamente con el dispositivo

receptor al inicio de cada byte transmitido • Síncrona, que transmite simultáneamente la señal de datos junto con el reloj de sincronización

Page 190: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

E/S serie asíncrona En este tipo de E/S no existe un reloj común entre el emisor (módulo de E/S) y el receptor

(dispositivo), aunque ambos utilizan señales locales de reloj para generar (emisor) y muestrear (receptor) la información, señales con valores de frecuencia nominalmente iguales. El estado de reposo de la línea de tranmisión serie es en alta. El emisor comienza la transmisión con un bit de start de valor 0 cuyo flanco negativo detecta el receptor como inicio de una transmisión. A partir de ese momento el emisor transmite en forma serie los bits de datos de su registro de salida (que es un registro de desplazamiento) a una frecuencia marcada por su reloj local (reloj emisor). El receptor muestrea la línea con una frecuencia nominalmente igual a la del emisor sobre su registro de entrada (que es otro registro de desplazamiento). Como ambos relojes son físicamente diferente, no se evita que con el tiempo se vaya desplazando uno respecto al otro, con el risgo que si los bits transmitidos son muchos el receptor los muestree incorrectamente. Sin embargo, como emisor y receptor se resincronizan con el bit de start del siguiente caracter transmitido, y sólo se tranmite un caracter cada vez, estos deslizamientos no producen error.

1 0 1 1 0 0 1 0

R. desplazamiento (E)10110010

R. desplazamiento (R)10110010

relojemisor

relojreceptor

En la siguiente figura se muestra que el reloj local del receptor muestrea la línea de transmisión en

instantes de tiempo correctos, es decir, dentro del intervalo de tiempo correspondiente a un bit (intervalo bit)

relojreceptor

R. desplazamiento (R)10110010

En cambio, si el reloj local del receptor tiene una frecuencia ligeramente inferior (mayor período),

como se muestra en la siguiente figura, a partir del cuarto intervalo bit la señal será muestreada incorrectamente en el receptor.

Page 191: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

relojreceptor

R. desplazamiento (R)10100100

E/S serie síncrona La E/S serie síncrona utiliza una señal de transmisión que codifica conjuntamente la señal de

información y el reloj. Por ejemplo, el código de Manchester, que se muestra en la siguiente figura, utiliza una codificación por transiciones, de tal manera que el 0 se codifica como una transición positiva y el 1 como una transición negativa. De esta forma en un intervalo bit existe al menos un cambio en la señal, con lo que se puede extraer la señal del reloj.

1 0 1 1 0 0 1 0

CodificaciónManchester

Codificaciónpor nivel

Relojdecodificado

Ejemplo de módulo de E/S serie: ACIA (Asynchronous Communicatios Interface Adapter) E/S paralela Ejemplo de módulo de E/S paralelo: VIA (Versatil Interface Adapter)

Page 192: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 9: Interrupciones

1. E/S por interrupción: gestión de interrupciones 2. Tipos de sistemas de interrupciones: prioridades 3. Enmascaramiento de interrupciones. 4. Anidamiento de interrupciones 5. Ejemplos

1. E/S por interrupción: gestión de interrupciones En la E/S programada el procesador tiene que esperar un tiempo considerable a que el módulo de E/S esté preparado para realizar la operación. El procesador espera comprobando repetidamente el estado del módulo de E/S, degradándose significativamente el rendimiento de la CPU. Para evitar este inconveniente se introdujo el sistema de interrupciones en los procesadores.

Básicamente una interrupción viene determinada por la ocurrencia de una señal externa que provoca la bifurcación a una dirección especifica de memoria, interrumpiendo momentáneamente la ejecución del programa. A partir de esa dirección se encuentra la rutina de tratamiento que se encarga de realizar la operación de E/S propiamente dicha, devolviendo después el control al punto interrumpido del programa.

señal de interrupción

línea de interrupción

Programa principalI1I2..

.IiIi+1

.

..In

Rutina de tratamientoi1i2..

im

Podemos, pues, ver una interrupción como un salto a subrutina (rutina de tratamiento) ocasionado por una

señal externa, y no por una instrucción del programa. De esta forma se pueden eliminar los tiempos muertos de consulta de la E/S programada

La implementación de un sistema de interrupciones implica introducir una fase de consulta de las líneas de interrupción al final de la ejecución de cada instrucción. En un procesador sin sistema de interrupciones, se podría conseguir un efecto similar introduciendo una instrucción de consulta y la correspondiente de salto sobre el valor de la consulta, detrás de cada instrucción natural del programa. De esta forma se garantizaría la respuesta al dispositivo de E/S en el momento que pasa a estado disponible, al tiempo que la CPU ejecuta instrucciones útiles del programa. El precio a pagar sería el recargo introducido por la ejecución de las parejas de instrucciones de consulta y salto introducidas detrás de cada instrucción útil del programa. Sería algo así como una E/S programada en la que en lugar de preguntar en el mismo punto del programa por el estado del periférico, se replica la consulta por todo el programa, intercalándose con la ejecución de las instrucciones útiles. Pues bien, un sistema de interrupciones podemos verlo como la integración en hardware del supuesto software anterior, es decir, la integración de la consulta y posible salto dentro de la ejecución de cada instrucción del repertorio.

Page 193: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

El mecanismo de interrupción de un procesador tiene que implementar todas las medidas que hagan que se pueda bifurcar a la rutina de tratamiento y recuperar el estado del programa interrumpido cuando la rutina finaliza su ejecución. En el siguiente esquema se detallan las fases que tienen lugar en la atención a una interrupción producida por algún dispositivo periférico:

1 9

76

3

5

4

programa

8

2

rutina de tratamiento

programa

petición de interrupción

(1) El programa en ejecución (CPU) activa el sistema de interrupciones utilizando instrucciones que operan (ponen a 1 y a 0) sobre el bit de capacitación de las interrupciones I del registro de estado (RE):

STI I <--1; CLI I <-- 0

bit de interrupción

Registro de Estado (RE)

I C N Z

(2) Se produce la petición de interrupción por parte de algún dispositivo periférico en un instante de tiempo impredecible para la CPU.

señal de interrupciónlínea de interrupción (INT)

CPU

PC

1 RE

(3) La CPU finaliza la ejecución de la instrucción en curso. (4) La CPU salva automáticamente el estado en la pila, es decir, el contador de programa (PC) y el registro de estado (RE):

Page 194: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

CPU Memoria

PC

1 RE

PC

1 RE

SP

(5) La CPU obtiene la dirección de la rutina de tratamiento a partir del vector de interrupción (VI), que usualmente se ubica en memoria.

CPU Memoria

PC

1 RE

dirección r.t.vector de interrupción

(6) La CPU descapacita las interrupciones (I = 0) para que durante la ejecución de la primera instrucción de la rutina de tratamiento no se vuelva a detectar la misma interrupción y provoque un bucle infinito.

CPU

PC

0 RE

(7) La CPU ejecuta la rutina de tratamiento de la interrupción que realiza lo siguiente:

• Salva en la pila los registros a utilizar • Realiza la operación de Entrada/Salida • Restaura desde la pila los registros utilizados

(8) Finaliza la rutina de tratamiento con la ejecución de la instrucción de retorno de interrupción (RTI), que restaura automáticamente el estado de la CPU desde la pila y vuelve al programa interrumpido:

Page 195: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

CPUMemoria

PC

1 RE

PC

1 RESP

(9) La CPU continúa la ejecución del programa interrumpido, quedando las interrupciones capacitadas automáticamente al recuperarse el valor I = 1 del RE. 2. Tipos de sistemas de interrupciones: prioridades Clasificaremos las interrupciones atendiendo a dos criterios independientes: la fuente que produce la interrupción, y el modo de obtener la dirección de la rutina de tratamiento o vector de interrupción. a) Atendiendo a la fuente que produce la interrupción:

Interrupciones hardware

♦ Internas: producidas por la CPU

• división por cero • desbordamiento • instrucción ilegal • dirección ilegal • logaritmo de cero • raíz cuadrada de negativos • etc.

♦ Externas: producidas por los dispositivos de E/S

• vectorizadas • no vectorizadas

Interrupciones software: producidas por la ejecución de instrucciones de la CPU.

b) Atendiendo al modo de obtener el vector de interrupción:

Interrupciones autovectorizadas: el vector de interrupción es fijo, una posición de memoria asociada a la línea de interrupción.

Interrupciones vectorizadas: el vector de interrupción o parte de él lo suministra el propio periférico cuando se le

reconoce la interrupción.

El método usual de obtener la dirección de la rutina de tratamiento de la interrupción en ambos casos es a través de la tabla de vectores de interrupción, tabla que contiene las direcciones de las rutinas de tratamiento de cada interrupción.

Page 196: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Memoria

d.r.t. interrupción 1

d.r.t. interrupción 0

d.r.t. interrupción 3

d.r.t. interrupción 2

d.r.t. interrupción i

d.r.t. interrupción N-1

d.r.t. interrupción N

Tabla de vectores de Interrupción

Vectorizadas

Autovectorizadas

vector de interrupción

2.1 Interrupciones autovectorizadas

Disponen de una línea única de petición interrupción a la que se pueden conectar más de un dispositivo periférico, efectuándose en el punto de conexión la función lógica OR. El vector de interrupción para esta línea ocupa una posición fija de la tabla de vectores de interrupción. Cuando uno o más de los dispositivo periféricos conectados a la línea genera una señal de interrupción, la CPU debe identificar por software el dispositivo causante de la interrupción, y en caso de ser varios, establecer el orden de prioridad entre ellos. La identificación se realiza consultando los registros de estado locales de cada módulo de E/S.

línea única de interrupción

INT estado

control

E/S 1

INT estado

control

E/S 2

INT estado

control

E/S n

INT

CPU

La OR-cableada en la línea de interrupción INT se realiza normalmente con tecnología de transistores con colector abierto. Por ello normalmente la señal activa de interrupción es en baja.

Page 197: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

E/S 1

+5Vcc

INT estado

E/S 2

INT estado

E/S n

INT estado

INT

La rutina general de tratamiento asociada a la línea de interrupción comienza su ejecución identificando por encuesta el periférico causante de la interrupción, para bifurcar después a la rutina de tratamiento específica de dicho periférico, en donde se realiza la operación de E/S propiamente dicha:

Leer estado de E/S 1

Leer estado de E/S n

Rutina de tratamiento E/S 1

Rutina de tratamiento E/S n

RTI

Eliminar fuentede interrupción

Eliminar fuentede interrupción

RTI

RTI

INTactivo

INTactivo

Programa

interrupción

2.2 Interrupciones vectorizadas:

Page 198: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

• Disponen de dos líneas de interrupción, una de petición y otra de reconocimiento. • El vector de interrupción es generado por el dispositivo que produce la interrupción. • Utiliza un mecanismo de daisy chaining en la transmisión de la señal de reconocimiento.

+ prioridad -

vectorlínea de reconocimiento de interrupción

INT

RINT

bus de datos

línea de petición de interrupción

INT1 estado

control

E/S 1

INT2 estado

control

E/S 2

INTn estado

control

E/S nCPU

El proceso de interrupción se desarrolla en los siguientes pasos:

1. El dispositivo de E/S genera la petición de interrupción activando INT. 2. La CPU la reconoce activando RINT. 3. Los dispositivos de E/S que reciben RINT y no han interrumpido, la transmiten al siguiente elemento de la

cadena. 4. El dispositivo de E/S que recibe RINT y ha realizado la petición coloca el vector de interrupción n en el bus

de datos. 5. A partir del vector n la CPU bifurca a la rutina de tratamiento correspondiente al dispositivo.

La lógica interna del paso de la señal de reconocimiento por encadenamiento (daisy chain) para cada módulo se representa en la siguiente figura:

INT

CPU

RINT

INT RE

vector INT

2.3 Prioridades

Page 199: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

Cuando dos o más dispositivos de E/S generan una petición de interrupción, el sistema de prioridades determina la interrupción que se atiende en primer lugar.

Interrupciones no vectorizadas: la prioridad la establece el software de encuesta con el orden de recorrido de todos los dispositivos de E/S salida conectados a una línea. Es decir, se establece por software.

Interrupciones vectorizadas: la prioridad la determina el orden de proximidad a la CPU establecido por la línea de retorno de interrupción Es decir, se establece por hardware.

Cuando existen más de una línea de interrupción, la prioridad viene establecida por hardware en el diseño del procesador:

prioridad

INT1INT2

.

.

.INTn

CPU

En ocasiones, cada línea de interrupción tiene su propia señal de reconocimiento:

RINT3 INT3 RINT3 INT3 RINT3 INT3CPU

E/S 1 E/S 1 E/S 1

Aunque suele ser frecuente, para minimizar el número de pines del chip, que las diferentes líneas entren codificadas a la CPU, siendo necesario el uso de un codificador externo:

mRINT (reconocimiento)

código reconocido

m = log2 n

INT1INT2INT3

INTn-1INTn

INT1INT2

.

.

.INTm

CPU

COD

En estos casos suele existir una única señal de reconocimiento RINT, generándose por las líneas menos significativas del bus de direcciones el código de la interrupción reconocida, que será la más prioritaria entre las que realizaron la petición.

Page 200: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

3. Enmascaramiento de interrupciones El sistema de interrupciones de un procesador dispone en general de la posibilidad de ser inhibido, es decir,

impedir que las interrupciones sean atendidas por la CPU. Esta posibilidad hay que utilizarla en determinadas ocasiones en las que por ningún concepto se puede interrumpir el programa en ejecución. Además de la inhibición total del sistema, existe la posibilidad de enmascarar individualmente algunas de las líneas de interrupción utilizando un registro de máscara:

INT 0

INT 1

INT 2

INT 3

Registro de Máscara

0

1

1

0

Unidadde

Control

CPU

RE I

DECPrioridad

La descapacitación de algunas interrupciones también se puede realizar a nivel local del propio módulo de E/S, actuando sobre su registro de control. A nivel software también se pueden inhibir las interrupciones producidas sobre una misma línea por diferentes periféricos, en la fase de identificación de la rutina de tratamiento correspondiente. 4. Anidamiento de interrupciones Un tema importante en un sistema de interrupciones es el de la capacidad de anidar interrupciones, es decir, la posibilidad de interrumpir la rutina de tratamiento de una interrupción por la generación de otra interrupción. Tal posibilidad viene determinada por el sistema de prioridades: "un dispositivo sólo puede interrumpir a otro cuando su nivel de prioridad es mayor que el que se está atendiendo".

INT2 INT4 INT7

Programa Rutina INT2 Rutina INT4 Rutina INT7

Page 201: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

Para describir con más detalle la forma en que opera la combinación de las prioridades y el anidamiento en un sistema de interrupciones, consideremos una CPU con tres líneas de interrupción: INT0, INT1, INT2, siendo la primera la más prioritari, y la última la menos prioritaria. Supongamos que llegan tres peticiones de interrupción en el orden temporal del siguiente esquema:

prioridad

tiempo

prioridad

CPUINT0

INT1

INT2

La CPU dispone de tres bits en su registro de estado para permitir la inhibición de forma independiente cada línea:

INT2INT0 INT1Si INTi = 0 nivel capacitado

Si INTi = 1 nivel descapacitado

Las interrupciones con menor prioridad no podrán interrumpir la rutina de tratamiento de una de mayor prioridad, por lo que la secuencia de peticiones y servicios será la que aparece en el siguiente esquema:

INT2

INT0

d2

d1 d0

dir1dir1+1

ProgramaRutina INT0

Rutina INT2

Rutina INT1

dir dir+1

INT1

La evolución consiguiente de la pila y el estado de la CPU (CP y RE) será el siguiente:

Page 202: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Pila

CP RE

dir+1

000

dir+1

000

dir1+1

011

dir+1

000

dir+1

000

d1

011

d1+ n

011

d0

111

dir1+1

011

dir+1

000

d2

001

dir+1

000

llega INT1 llega INT2 fin INT1fin INT0llega INT0 atiende INT2 fin INT2

6. Ejemplos de sistemas de interrupciones

Estudiaremos en este apartado de forma general los sistemas de interrupciones de dos micrprocesadores, uno de 8 bits, el MC 6809, y otro de 16, el MC 68000. Con el primero estudiaremos la forma de multiplicar una línea de interrupción autovectorizada en varias, también autovectorizadas, utilizando un dispositivo hardware. Con el segundo veremos un sistema de interrupciones más complejo en el que coexisten las interrupciones autovectorizadas y vectorizadas.

6.1 Sistema de interrupciones del microprocesador MC 6809 El MC 6809 dispone de las siguientes líneas de interrupción:

Línea Prioridad Dirección Rutina Bit de máscara en RE Comportamiento IRQ

FIRQ NMI

RESET

Baja ⏐ ↓

Alta

FFF8 – FFF9 FFF6 – FFF7 FFFC – FFFD FFFE - FFFF

I F

No enmascarable No enmascarable

Salva todos los registros Salva CP y RE Salva todos los registro No salva registros

Veremos como se puede transformar la línea IRQ en 8 líneas de interrupción diferentes. Para ello se aprovecha el que cuando se produce una interrupción por esta línea y es atendida por la CPU, ésta accede a su vector de interrupción que se encuentra en las direcciones FFF8 y FFF9, lo que significa que en el bus de direcciones aparecerán estas direcciones. Sólo en respuesta a una interrupción por IRQ se generan estas direcciones en el bus, por lo que podemos identificarla por hardware y descomponerla en 8 pares diferentes, una por cada línea nueva de interrupción. El esquema completo de un dispositivo que realiza esta conversión lo hemos representado en la siguiente figura. El dispositivo se selecciona cuando se activa la señal CS, por lo que esta señal deberá generarse cuando en el bus aparezcan las direcciones FFF8 y FFF9. Cuando eso ocurra, el dispositivo transformará las 4 líneas menos significativas del bus de direcciones (A4,A3,A2,A1) en otras 4 (Z4,Z3,Z2.Z1) de manera que en las Zi se genere uno de los 8 pares de las nuevas direcciones, el correspondiente a la línea INTi activada de mayor prioridad.

Page 203: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

IRQ

Z4

Z3

Z2Z1

INT7

INT6

INT5

INT4

INT3

INT2

INT1

INT0

R/W

CS

E

A4

A3

A2 A1

Rgist roDe

Pet ición

Pr ior idady

Máscara Vector

Lógicacombinacional

Seleccióny

Cont rol

La tabla de transformación de direcciones sería, pués, la siguiente:

Dirección entrada Línea Dirección salida A16....A4 A3 A2 A1 1 A16....Z4 Z3 Z2 Z1

FFF8 – FFF9

INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0

FFE6 – FFE7 FFE8 – FFE9 FFEA – FFEB FFEC – FFED FFEE – FFEF FFF0 – FFF1 FFF2 – FFF3 FFF4 – FFF5

La disposición del controlador de interrupciones respecto a la CPU y la memoria se muestra en el siguiente esquema:

Page 204: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

IRQ

A5,...A16

INT7INT6INT5INT4INT3INT2INT1INT0

CP U IRQ

Con tro ladorde

In te rru pcion e s

CS

Memor ia

Z4Z3Z2Z1

A4A3A2A1

A5,...A16

D0,...D7

6.2 Sistema de interrupciones del microprocesador MC 68000 En el MC 68000 las interrupciones se generalizan al concepto de excepción, que incluye las interrupciones hardware de E/S propiamente dichas, las producidas por eventos internos en la CPU, y las producidas por software.

Líneas de interrupción Las excepciones de E/S llegan a la CPU en forma codificada a través de tres líneas externas: IPL2, IPL1, IPL0, que codifican la ausencia de excepción (111), y 7 niveles con prioridad (000 el más prioritario y 110 el menos prioritario).

VPA

CP U 68000

IPL2

IPL1

IPL0

FC2 = 1

FC1 = 1

FC0 = 1

A3 A2 A1

Una cuarta línea, VPA, determina si los siete niveles de las líneas IPLi codifican una excepción autovectorizada (VPA = 0) o vectorizada (VPA = 1). En el primer caso el vector de excepción es fijo para cada nivel, y en el segundo lo determina el periférico y lo transmite por las 8 líneas menos significativas del bus de datos cuando le llega la señal de reconocimiento procedente de la CPU, que corresponde al valor 111 de las señales de estado FC2, FC1, FC0. El número de la línea vectorizada reconocida lo genera la CPU a través de las líneas del bus de direcciones A3, A2, A1. Por ello, es necesario complementar con circuitería lógica externa el sistema, tal como aparece en el siguiente esquema:

Page 205: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

INTA1INTA2INTA3INTA4INTA5INTA6INTA7

VPA

CP U 68000

CODIPL2

IPL1

IPL0

FC2

FC1

FC0

DECOD

A3

A2

A1

n ivel 7n ivel 6n ivel 5n ivel 4n ivel 3n ivel 2n ivel 1

n ivel 7n ivel 6n ivel 5n ivel 4n ivel 3n ivel 2n ivel 1

7 líneasvectorizadas

7 líneasautovectorizadas

Seña l dereconocimien toglobal paraexcepcionesvector izadas

Seña l dereconocimien toindividua lparacada n ivel

Enmascaramiento

Los bits I2,I1,I0 del registro de estado codifican los niveles inhibidos por la CPU, de acuerdo a la siguiente tabla:

I2 I1 I0 Niveles inhibidos 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Ninguno Nivel 1 Niveles 1 al 2 Niveles 1 al 3 Niveles 1 al 4 Niveles 1 al 5 Niveles 1 al 6 Niveles 1 al 6

El nivel 7 no es enmascarable

T S I2 I1 I0 X N Z V C

Vectores de excepción

Page 206: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

Los vectores de excepción son posiciones de memoria donde la CPU obtiene la dirección de la rutina de tratamiento de la excepción. En el MC 68000 existen 255 vectores que se agrupan en la tabla de vectores de excepción ubicada en la zona más baja de memoria (desde la dirección 0 a la 1020 en decimal). Cada vector ocupa 2 palabras (4 bytes) excepto el vector de RESET que ocupa 4 palabras, 2 para el CP y las otras 2 para el SP, y se identifica con un número de 8 bits (en decimal del 0 al 255, excepto el 1, que corresponde a la segunda mitad del 0, que es el de RESET). La dirección real se obtendrá multiplicando por 4 el número de vector. El número de vector lo genera la CPU (excepciones autovectorizadas) o el periférico (excepciones vectorizadas).

Tabla de vectores de excepción Nº de vector Asignación

0 1 1 3 4 5 6 . . .

RESET (CP inicial) RESET (SP inicial) error del bus dirección no existente instrucción ilegal división por cero instrucción CHK (entero fuera de rango)

25 26 27 28 29 30 31

autovector nivel 1 autovector nivel 2 autovector nivel 3 autovector nivel 4 autovector nivel 5 autovector nivel 6 autovector nivel 7

.

.

.

64 . . .

255

192 vectores de excepción de usuario

Ejemplo de conexión de periféricos Para finalizar veamos el esquema completo de conexión de periféricos al sistema de excepción del MC 68000. Se han conectado tres periférico de forma encadenada (daisy chain) a la línea vectorizada de nivel 3.

Page 207: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

NUMERO DE

VECTOR

BUS DE DATOS

INTA1 INTA2 INTA3 INTA4 INTA5 INTA6 INTA7

VPA

CPU 68000

COD IPL2

IPL1

IPL0

FC2

FC1

FC0

CIRCUITO LOGICO

A3

A2

A1

Periférico 4

Periférico 3

Periférico 5

BUS DE DIRECCIONES

nivel 7 nivel 6 nivel 5 nivel 4 nivel 3 nivel 2 nivel 1 nivel 7 nivel 6 nivel 5 nivel 4 nivel 3 nivel 2 nivel 1

vectorizadas

autovectorizadas

Periférico 2

Periférico 1

Page 208: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 10: E/S de alta velocidad

1. E/S por acceso directo a memoria (DMA): motivación 2. Estructura y funcionamiento de un controlador de DMA 3. Procesadores de e/s: tipos y estructura. 4. Programas de operación de los procesadores de e/s.

1. E/S por acceso directo a memoria (DMA): motivación

La E/S por interrupciones ocupa menos tiempo de CPU que la E/S controlada por programa. Sin embargo, con cualquiera de las dos alternativas las transferencias de datos deben pasar a través de la CPU. Esto significa que la velocidad de las transferencias está limitada por la velocidad a la que la CPU atiende el dispositivo periférico, ya que tiene que gestionarlas ejecutando una serie de instrucciones. En la E/S controlada por programa la CPU está dedicada exclusivamente a la E/S, transfiriendo los datos a relativa velocidad, pero al precio de dedicarse a ello a tiempo completo. Las interrupciones liberan en buena medida a la CPU de la gestión de las transferencias, a costa de disminuir su velocidad, pues la rutina de servicio de las interrupciones contiene por lo general instrucciones ajenas a la propia transferencia. Ambos procedimientos manifiestan, pues, ciertas limitaciones que afectan a la actividad de la CPU y la velocidad de transferencia.

Para poner de manifiesto de forma cuantitativa las limitaciones de la E/S programada y por interrupción, consideremos los dos siguientes supuestos:

Supuesto 1: conexión de un periférico lento, una impresora láser. La CPU opera a 200 Mhz.

y su CPI vale 2. La impresora opera a 20 páginas/minuto, con 3.000 caracteres (bytes) por página. Se trata de imprimir un bloque de 10 Kbytes ubicado en la memoria.

200 MhzCPI = 2

CP U

Memor iaMódulo

E/S

20 pag./min.1 pag = 3000 bytes

10 Kbytes

a) E/S programada

Una instrucción tarda en ejecutarse 2 * 5 ns = 10 ns, ya que el tiempo de ciclo Tc = 1/Frecuencia = 1/200*106 seg. = 1/200*106 * 10-9 ns = 5 ns.

La impresora imprime 20 * 3.000 = 60.000 caractéres/minuto = 1.000 caracteres/segundo = 1 Kbyte/s. Luego los 10 Kbytes los imprimirá en 10 segundos.

La CPU está ocupada durante 10 segundos b) E/S por interrupción

Para este caso habrá que conocer el número de instrucciones que se ejecutan dentro de la rutina de tratamiento de la interrupción. Supondremos que son 10 las instrucciones (3 para

Page 209: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

salvar contexto, 2 para comprobar el estado y bifurcar, 1 para la transferencia, 3 para restaurar contexto, y 1 para retorno de interrupción, RTI). La impresora genera una interrupción cada vez que está preparada para recibir un nuevo caracter.

Para transferir los 10 Kbytes se producirán 10.000 interrupciones, lo que significa ejecutar 100.000 instrucciones.

Luego la CPU se ocupa durante 105 * 10 ns = 106 ns = 106 * 10-9 s. = 0,001 s. = 1 milisegundo.

La E/S por interrupción ha reducido en 10.000 veces el tiempo que la CPU está ocupada en atender la impresora. Sin embargo, la velocidad de la operación de E/S no ha cambiado, como era de esperar al estar dominada por la velocidad del periférico.

Supuesto 2: conexión de un periférico rápido, un disco magnético. La CPU opera igual que

en caso anterior, es decir, a 200 Mhz y su CPI vale 2. El disco opera a una velocidad de transferencia de 10 Mbytes/s. Se trata en este caso de transmitir un bloque de 10 Mbytes de la memoria al disco.

200 MhzCPI = 2

CP U

Memor iaMódulo

E/S10 Mbytes

10 Mbytes/s

10 Mbytes

c) E/S programada

A la velocidad de 10 Mbytes/s el disco tarda 1 segundo en recibir los 10 Mbytes, y como por E/S programada la CPU envia un byte cada vez que el disco está preparado para recibirlo, la CPU está ocupada en la tranferencia durante 1 segundo.

d) E/S por interrupción Seguimos suponiendo que la rutina de tratamiento ejecuta 10 instrucciones. Como ahora se

transmiten 107 bytes se producirán otras tantas interrupciones, lo que significa que la CPU ejecuta en toda la operación 107 * 10 = 108 instrucciones. Por tanto el tiempo total de ocupación de la CPU en la transferencia de E/S será 108 instrucciones * 10 ns/instrucción = 109 ns = 1 segundo.

Luego en el supuesto 2 las interrupciones no ahorran tiempo de CPU en la operación de E/S frente a la E/S programada. La razón está en que se ha llegado al límite de velocidad que es capáz de soportar la línea de interrupción del supuesto (1 byte cada 100 ns). Por encima de los 10 Mbytes/s la E/S por interrupción perdería datos puesto que se presentaría un nuevo byte antes de haber finalizado la rutina de tratamiento del byte anterior. La E/S programada todavía admitiría mayor velocidad puesto que no tendría que ejecutar las instrucciones de guarda y restauración del contexto ni la instrucción RTI. El bucle de la E/S programada ejecutaría sólo 3 instrucciones (2 para comprobar el estado y bifurcar, 1 para la transferencia), es decir tardaría 30 ns en lugar de los 100 ns que tarda la rutina de tratamiento de la interrupción. Por tanto podría llegar hasta el límite de 30 ns/byte, es decir, 33 Mbytes/segundo

Page 210: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

Por tanto, cuando se tienen que transferir grandes cantidades de datos y a una elevada velocidad, es necesario disponer de una técnica que realice de forma más directa las transferencias entre la memoria y el dispositivo periférico, limitando al máximo la intervención de la CPU. Esta técnica se conoce con el nombre de acceso directo a memoria (DMA: Direct Memory Access).

Básicamente se trata de un módulo con capacidad para leer/escribir directamente en la memoria los datos procedentes/enviados de/a los dispositivos periféricos. Para ello solicita la correspondiente petición a la CPU. Antes de que la CPU conceda acceso a memoria al DMA, pone en estado de alta impedancia su conexión a los buses del sistema (datos, direcciones y R/W), lo que es equivalente a desconectarse de la memoria durante el tiempo que es gestionada por el DMA. Cuando finaliza la operación de E/S el DMA genera una interrupción y la CPU vuelve a tomar control de la memoria. De esta forma la velocidad de transferencia sólo estarán limitadas por el ancho de banda de la memoria.

petición

concesión

B. DIR

B. DATOS

CPU

MAR

MDR

MEMORIA

Acceso Directo aMemoria(DMA)

MóduloE/S

Control

2. Estructura y funcionamiento de un controlador de DMA Para gestionar las transferencias de información, un controlador de DMA dispone de 3

registros: datos, dirección y contador de palabras. El registro de dirección almacena la dirección de la siguiente palabra a transmitir,

incrementándose de forma automática después de cada transferencia. El contador de palabras almacena el número de palabras que quedan por transmitir y también se decrementa automáticamente después de cada transferencia. La lógica de control comprueba el contenido del contador de palabras y finaliza la operación cuando alcanza el valor 0. Un decodificador se encargará de identificar la dirección de memoria asignada al DMA. La CPU debe enviar, pues, la siguiente información al DMA cuando quiera realizar una operación de E/S:

• El sentido de la operación de E/S: lectura o escritura • La dirección del periférico • La posición de memoria donde comienza el bloque a leer o escribir • El número de palabras que componen el bloque

Page 211: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

Transmitida esta información, la CPU pasa a realizar otra tarea, delegando totalmente la

operación de E/S al DMA. El DMA transfiere directamente, palabra a palabra, el bloque de datos entre el periférico y la memoria, sin pasar por la CPU. Cuando la transferencia finaliza el DMA envía una señal de interrupción a la CPU.

r/w bus de datos bus de direcciones

petición concesióninterrupción

Contador de palabras Registro de datosDirección de memoria

Lógica de control DEC

CPU

Dispositivo periférico

Memoria

DMA

r/w

Para poder transferir a/desde la memoria, el DMA necesita controlar el bus durante un tiempo

suficiente para completar la transferencia. Sin embargo, este tiempo no tiene que ser continuo, puede fraccionarse en pequeños intervalos que se alternan con la CPU. Existen diferentes alternativas en la forma de controlar el bus. Cada alternativa supone un compromiso diferente entre velocidad de transferencia y actividad de la CPU. El empleo de una alternativa en concreto dependerá de las prestaciones que se deseen y de las características del procesador que se utilice. Son las siguientes: • Ráfagas: el DMA toma control del bus y no lo libera hasta haber transmitido un bloque de

datos completo. Con este método se consigue la mayor velocidad de transferencia pero puede dejar sin actividad a la CPU durante períodos grandes de tiempo.

Inst rucción 1 Inst rucción 2

Ciclo DMA Ciclo DMA

• Robo de ciclos: el DMA toma control del bus y lo retiene durante un solo ciclo. Transmite una

palabra y libera el bus. Es la forma más usual de transferencia y en ella se dice que el DMA roba ciclos a la CPU.

Page 212: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Inst rucción 1

Ciclo DMA Ciclo DMA

Inst rucción 2

• Transparente: el DMA accede al bus sólo en los ciclos en los que la CPU no lo utiliza. Y esto ocurre en diferentes fases de ejecución de las instrucciones. De esta forma la ejecución del programa no se ve afectado en su velocidad de ejecución.

Búsqueda AlmacenamientoEjecuciónBúsquedaDecodificación

Ciclo DMA Ciclo DMA

Inst rucción

En los sistemas con memoria cache también se puede aprovechar el acceso de la CPU a la cache para que el DMA pueda acceder simultáneamente a la memoria principal. En resumen, los pasos que se siguen en la transferencia mediante DMA son:

1. La CPU ejecuta las instrucciones de E/S que cargan los registros de dirección y contador de palabras del controlador de DMA. El registro de dirección debe contener la dirección base de la zona de memoria principal que se va a utilizar en la transferencia de datos. El registro contador de palabra almacena el número de palabras que se transfieren desde/hacia la memoria.

2. Cuando el controlador de DMA está preparado para transmitir datos, activa la línea de

petición. La CPU espera a un punto de concesión del DMA, renuncia al control de los buses de datos y direcciones y activa la línea de reconocimiento de DMA.

3. El DMA transfiere directamente los datos a/desde memoria principal por alguno de los

métodos que se acaban de ver. Después de transferir una palabra, el registro de dirección y el registro contador de palabras del controlador se incrementa y decrementa respectivamente.

4. Si el contenido del registro contador de palabra no es 0, pero el periférico no está preparado para enviar o recibir los siguientes datos, el DMA devuelve el control a la CPU liberando el bus del sistema y desactivando la línea de petición. La CPU responde desactivando la línea de reconocimiento de DMA y continuando con su operación normal.

5. Si el contenido del contador de palabras es 0, el controlador de DMA renuncia al control del bus del sistema y envía una señal de interrupción a la CPU.

Page 213: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

El DMA, se puede configurar de diferentes formas: • Bus único (DMA independiente): todos los módulos comparten el bus del sistema. El DMA,

que actúa en sustitución de la CPU, intercambia datos entre la memoria y el periférico utilizando un procedimiento análogo al de E/S controlada por programa, es decir, hace de intermediario entre ambas unidades.

CPU DMA MemoriaE/SE/S

Esta configuración, aunque puede ser muy económica, es claramente poco eficaz, ya que cada transferencia de una palabra consume 2 ciclos del bus.

• Integración de funciones DMA-E/S: reduce a 1 el número de ciclos de utilización del bus. Esto

significa que hay un camino entre el controlador de DMA y uno o más controladores de E/S que no incluyen al bus del sistema.

CPU DMA Memoria

E/S

E/S

DMA

E/S

La lógica del DMA puede ser una parte de un controlador de E/S o puede ser un módulo independiente que controla a uno o más controladores de E/S. • Bus de E/S conectado al DMA: El concepto anterior se puede generalizar si se utiliza un bus

de E/S para conectar los controladores de E/S al DMA. Esta alternativa reduce a una el número de interfaces de E/S en el DMA, y proporciona una configuración fácilmente ampliable.

Page 214: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

bus del sistema

bus de E/S

CPU Memoria

E/S

DMA

E/SE/S

3. Procesadores de E/S: tipos y estructura.

Como hemos visto en los 2 temas anteriores y en los primeros apartados de este tema, la E/S de los computadores ha experimentado una continua evolución. Comenzó con la E/S controlada por programa. Le siguió la introducción de las interrupciones para evitar que la CPU malgastase su tiempo esperando la realización de las operaciones de E/S, aumentando el rendimiento global del sistema. Posteriormente se introduce en el controlador de E/S la capacidad para acceder directamente a memoria a través del DMA. De esta forma se pueden transferir bloques de datos a/desde memoria sin intervención de la CPU, excepto al comienzo y al final de la transferencia.

Pero este proceso de evolución de la E/S no termina en el DMA. En el paso siguiente se potencia la capacidad del controlador de E/S hasta convertirlo en un procesador con un conjunto de instrucciones especializadas en operaciones de E/S. La CPU traduce las operaciones de E/S en órdenes dirigidas al procesador de E/S (PE/S) para que ejecute un programa de E/S residente en memoria. El PE/S ejecuta ese programa sin la intervención de la CPU y sólo se interrumpe cuando se ha ejecutado la secuencia completa. A los procesadores de E/S se les suele denominar también con el nombre de canales de E/S. No obstante los dos términos se emplean de forma indistinta.

bus E/S2bus E/S1

bus del sistema

CPU MEMORIA

PE/S1 PE/S2

CONTROLE/SPeriférico

CONTROLE/SPeriférico

CONTROLE/SPeriférico

CONTROLE/SPeriférico

CONTROLE/SPeriférico

CONTROLE/SPeriférico

Page 215: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

Un PE/S representa, pues, una extensión del concepto DMA. Un PE/S tiene la capacidad de

ejecutar instrucciones de E/S, lo que le da un control completo sobre dicha operación. En los computadores que incluyen PE/S, la CPU no ejecuta las instrucciones de E/S, éstas se almacenan en memoria principal para ser ejecutadas por un PE/S. Así, la CPU inicia una transferencia de E/S al dar una orden al PE/S para que ejecute un programa en memoria. El programa especifica entre otras cosas las siguientes:

• El periférico (o periféricos) que interviene en la operación de E/S. • Las zonas de memoria utilizadas en la transferencia • Las acciones a realizar si se producen ciertas condiciones de error durante la transferencia.

MEMORIA

Progra made canal

Programa--

E/S--

CP U Procesador deE/S ó canal Per ifér ico

Las comunicaciones entre la CPU y el procesador de E/S a lo largo de la ejecución de una operación de E/S podemos resumirlas en el siguiente esquema:

Page 216: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

Solicita el estado del P

/S Envía a memoria la palabra de

estado

Accede a Memoria para leer

comandos del programa de E/S

Si el estado es válido emite la orden de inicio de la operación

de E/S

Accede a Memoria para transferir porDMA bloques de

datos

Interrumpe a la CPU cuando ha

finalizado el programa de E/S

La CPU continúa la ejecución de

otro programa

Solicita el estado al P E/S

Transfiere a memoria el estado de realización del programa de E/S Comprueba que

la operación de E/ S ha sido

correcta

CPU Procesadaor de E/S

3.1 Tipos de procesadores de E/S o canales Existen tres tipos de PE/S o canales:

• Canales multiplexores • Canales selectores • Canales multiplexores por bloques

Canal multiplexor

Un canal multiplexor se utiliza para conectar dispositivos de velocidad baja y media. Son capaces de transferir datos a velocidades mayores que las de los dispositivos individuales

Page 217: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

conectados al canal. Esto les permite operar en forma multiplexada sobre varios dispositivos de E/S.

CanalMult iplexor

ControladorE/S

ControladorE/S

ControladorE/S

ControladorE/S

En la siguiente figura aparece la organización interna de un canal multiplexor. Los parámetros correspondientes a la operación de cada dispositivo se ubican en posiciones fijas de la memoria principal. Cuando el canal direcciona un dispositivo particular, busca previamente los parámetros en memoria y los lleva a los registros de uno de los subcanales. Cuando el dispositivo se desconecta, los valores actualizados se llevan de nuevo a memoria. El número de subcanales disponibles en el sistema determina el número máximo de operaciones de E/S que pueden mantenerse simultáneamente.

Page 218: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Subcana l 1

dirección

n º pa labr as

control

Subcana l n

dirección

n º pa labr as

control

Subcana l 2

dirección

nº pa labr as

control

Buffer de da tosCont rol

del cana l

Canal selector Un canal selector controla múltiples dispositivos de alta velocidad. En cualquier instante de

tiempo está dedicado a la transferencia de datos con uno sólo de estos dispositivos. El PE/S selecciona un dispositivo y efectúa la transferencia de datos completa.

CanalSelector

Cont roladorE/S

Cont roladorE/S

Canal multiplexado por bloques Este tipo de canal combina las características de los canales multiplexores con las de los

selectores. Permite la multiplexación de varias operaciones de E/S de alta velocidad, bloque por bloque. Las ventajas obtenidas a través del empleo de canales multiplexados por bloques, en comparación con las de los canales selectores, surgen de la naturaleza de la operación de dispositivos de E/S tales como discos y cintas magnéticas. Una operación común con una unidad de disco puede requerir la siguiente secuencia de comandos:

• Localización de pista(mover la cabeza de lectura/escritura a una pista dada). • Búsqueda de un sector específico. • Inicio de la lectura de los datos contenidos en el sector.

Page 219: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

Debido al considerable retraso mecánico involucrado en las primeras dos operaciones, no es adecuado mantener ocupado el canal durante esta secuencia, lo que sería el caso con un canal selector. Un canal multiplexor por bloques puede enviar a la unidad de disco la orden de localización de pista y después desconectarse para dar servicio a otros dispositivos de E/S. Cuando se completa la operación de localización de pista, el canal se vuelve a conectar, envía la orden de búsqueda del sector y se desconecta de nuevo. Al terminar la búsqueda de sector, el canal inicia la transferencia del sector y permanece conectado hasta que finaliza la operación. El uso de un canal multiplexor por bloques da como resultado una mejora importante en la productividad, en comparación con los canales selectores. 4. Programas de operación de los procesadores de E/S.

En un DMA simple los parámetros relacionados con las transferencias de datos se cargan en los registros correspondientes utilizando instrucciones de E/S. En máquinas grandes que utilizan canales de E/S, esto se sustituye por el concepto de programa de canal. El canal, como se ha dicho antes, es un pequeño procesador que tiene acceso a la memoria principal. Es capaz de ejecutar un conjunto limitado de instrucciones, conocidas como comandos de canal. Estos comandos especifican aquellos parámetros que el canal necesita para controlar los dispositivos de E/S y realizar operaciones de transferencia de datos. Un programa de canal es una secuencia de estos comandos almacenada en la memoria principal. La CPU inicia una operación de E/S con la emisión de una orden especial al canal que hace que el canal empiece a buscar en memoria y ejecutar los comandos que constituyen el programa de canal.

El programa de canal consta de una serie de palabras de comando de canal (CCW: channel command words) cuyo formato simplificado aparece en la siguiente figura:

Operación Dirección del da to F lags Nº de pa labras

CD CC SKIP PCI

Operación Este campo corresponde al código de operación de las instrucciones máquina normales. Especifica la operación que debe realizar la CCW. La unidad de control decodifica este campo y envía las señales adecuadas de control al dispositivo. Existen varias operaciones, las más importantes son las siguientes:

Lectura: el canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo nº de palabras, en orden ascendente de direcciones, empezando en la dirección especificada en el campo dirección del dato. Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura. Control: se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S, como rebobinar una cinta magnética, etc. Bifurcación: cumple en el programa de canal la misma función que una instrucción de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo dirección del dato como la dirección de la siguiente CCW a ejecutar.

Flags Los bits de este campo indican lo siguiente:

Page 220: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

CC (Encadenamiento de comando): cuando este bit está a 1, indica al canal que la siguiente CCW especifica una nueva operación de E/S que debe realizarse con el mismo dispositivo. El canal ejecuta primero la operación de E/S especificada en la CCW que tiene a 1 el flag CC. Después ejecuta la siguiente sobre el mismo dispositivo. Desde el punto de vista del dispositivo, las dos operaciones resultantes de la primera y segunda CCW aparecen como dos comandos de E/S separados.

CD (Encadenamiento de datos): una CCW con el bit CD a 1, indica al canal que la siguiente CCW contiene una nueva dirección del dato y un nuevo nº de palabras. Éstos deben utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S, mediante la orden especificada por la CCW actual. Cuando el canal termina la transferencia de datos especificada en la CCW con el bit CD a 1, no corta la conexión con el dispositivo de E/S, continúa la transferencia utilizando la dirección y el nº de palabras de la siguiente CCW. Con el encadenamiento de datos, los datos transferidos por la primera y segunda CCW aparecen como un bloque para el dispositivo de E/S. Esto facilita las transferencias entre un dispositivo y posiciones no contiguas de la memoria principal.

Para poner de manifiesto la diferencia entre encadenamiento de comandos y de datos veamos lo que ocurre con una transferencia de dos bloques de datos de la memoria principal a una cinta magnética. Si se utiliza encadenamiento de comandos, los dos bloques se escribirán en la cinta separados por un separador de registros que la unidad de cinta inserta de forma automática al final de una operación de E/S especificada por una CCW en donde CD = 0. En cambio, el encadenamiento de datos provoca que los dos bloques se unan en un solo registro en la cinta. Una CCW con los flags CD y CC a 0 significa el final del programa de canal.

SKIP (Salto): este bit, cuando está a 1, hace que el programa de canal salte un número de palabras igual al especificado en el campo nº de palabras. Cuando se utiliza con la orden de lectura, este flag hace que los datos se lean del dispositivo sin que se transfieran a la memoria principal.

PCI (Interrupción controlada por programa): el canal produce una interrupción cuando ejecuta una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento de comandos, la interrupción se genera después de que hayan concluido todas las transferencias de datos.

Ejemplo 1 En la siguiente figura se muestra un ejemplo de programa que transfiere tres bloques de

datos de la memoria principal a una cinta magnética. CCW1 lee 70 bytes de memoria, a partir de la posición 2000, y los escribe en cinta. La operación de Escritura y la unidad de cinta a utilizar se especifican en el campo de operación. Puesto que el bit CD está 1, CCW2 debe interpretarse como una continuación de CCW1. Se realiza la misma operación de E/S, esto es, una Escritura en el mismo dispositivo, pero con los datos especificados en CCW2. Obsérvese que en CCW2 no se tienen en cuenta los bits de orden. Se transfieren a la cinta 100 bytes de memoria, a partir de la posición 2.200, como continuación del registro iniciado con CCW1. En CCW2 el bit CC está 1, lo que significa que sigue otra CCW (CCW3), pero que no está relacionada con la CCW2. Por lo tanto, al finalizar CCW2, se inserta un espacio de separación de registros en la cinta. De nuevo, CCW3 especifica una Escritura en la misma cinta. El resultado es una transferencia a la cinta de 500 bytes a partir de la posición 2.500 de memoria. Puesto que los flags CD y CC valen cero, se trata del final del programa de canal.

OPERACION DIRECCION FLAGS Nº PALABRAS

CD CC SK PCI

Page 221: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

CCW1 ESCRITURA CCW2 CCW3 ESCRITURA

2000 2200 2500

1 0 0 0 0 1 0 0 0 0 0 0

70 100 500

separadorregistro

registro

CCW1

CCW2

CCW3

Memoria principal Cinta magnética

2000

2200

2500

70 bytes

100 bytes

50 bytes

Ejemplo 2

En la siguiente figura aparece otro programa de canal que muestra el empleo del flag de salto (SKIP). La primera CCW (CCW1) transfiere 80 bytes de la unidad de cinta especificada en el campo de operación a la memoria, a partir de la posición 4.500. Puesto que CD = 1, CCW2 realiza la misma operación. Sin embargo, como en CCW2 el flag de salto está 1, significa que el canal no transmitirá los siguientes 30 bytes que lea de la cinta. Puesto que CD sigue 1, continúa la misma operación de lectura con CCW3, provocando la transferencia de los siguientes 50 bytes a la memoria, a partir de la posición 4.700. Por lo tanto, el programa transfiere dos bloques de datos a la memoria principal desde un registro de la cinta, con un salto de 30 bytes a la mitad del registro.

OPERACION DIRECCION FLAGS Nº PALABRAS CD CC SK PCI CCW1 LECTURA CCW2 CCW3

4500 4700

1 0 0 0 1 0 1 0 0 0 0 0

80 30 50

Page 222: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

registro

CCW1

CCW2

Memoria principal Cinta magnética

4500

4700

80 bytes

50 bytes

80 bytes

30 bytes

50 bytes

Inicio y control de los programas de canal

Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S. Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro instrucciones máquina que la CPU puede utilizar para estos fines. Son las siguientes: START I/O Inicia una operación de E/S. El campo de dirección de la instrucción se

emplea para especificar el canal y el dispositivo de E/S que participa en la operación.

HALT I/O Finaliza la operación del canal. TEST CHANNEL Prueba el estado del canal. TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.

Una operación de E/S se inicia con la instrucción START I/O. La ubicación del programa de canal en la memoria principal viene definida en la palabra de dirección de canal (CAW: Channel A ddress word), que siempre está almacenada en la posición 72 de la memoria principal.

Memor ia pr incipa l

72

Programa de canal

CAW

Page 223: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

La CAW debe cargarse, pues, en la posición 72 antes de la ejecución de la instrucción

START E/S. El dispositivo indica su disponibilidad para participar en la operación de E/S devolviendo su dirección al canal. A partir de este momento el dispositivo permanece conectado al canal hasta que finaliza la operación de E/S. Establecida la disponibilidad del dispositivo, el canal envía una señal a la CPU. En este momento finaliza la instrucción START E/S, y la CPU deja de ocuparse de la operación de E/S. Al finalizar la instrucción de START E/S, el canal comienza a ejecutar el programa de canal.

Page 224: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

1

Tema 11: Dispositivos periféricos y buses de comunicación.

1. Dispositivos periféricos y controladores asociados 2. Buses de comunicación: síncronos y asíncronos 3. Arbitraje de acceso a los buses 4. Buses normalizados

1. Dispositivos periféricos y controladores asociados

Estudiaremos en este apartado los principios de funcionamiento de los principales dispositivos periféricos que se conectan a un computador así como la estructura lógica de los correspondientes controladores.

1.1 Discos magnéticos

Los discos magnéticos se conectan al computador como dispositivos periféricos, aunque muchos forman parte de la jerarquía de memoria del computador. Un dispositivo de discos magnéticos está constituido por una o más superficies circulares recubiertas por un material ferromagnético sobre el que se puede grabar información alterando el sentido de la magnetización de pequeñas áreas de su superficie. El conjunto de superficies gira por la acción de un motor. La información se escribe y lee a través de un conjunto de cabezas (una por superficie) que se mueve radialmente de forma solidaria por la acción de un motor paso-a-paso, tal como se muestra en la siguiente figura:

Super ficiem agnét ica

Cabeza delectu r a yescr itu r a

Mot orpas o-a-pas o

Mot orde gir o

1.1.1. Grabación de información sobre superficies magnéticas Los materiales ferromagnéticos se caracterizan porque se magnetizan de forma permanente cuando se les aplica un

campo magnético externo. Normalmente el campo externo se genera eléctricamente. Esto no les ocurre a los materiales diamagnéticos, que son repelidos por los campos magnéticos y no se magnetizan, ni a los materiales paramagnéticos, que son atraídos por los campos magnéticos y tampoco se magnetizan. Un material ferromagnético se caracteriza por sus curvas de magnetización e histéresis. Supongamos que el material ferromagnético está originariamente desmagnetizado (punto a de la siguiente gráfica). Conforme se incrementa el campo magnético externo H, también se incrementa la magnetización inducida M, hasta que se alcanza el valor de saturación (punto b). La curva entre los puntos a y b se denomina curva de magnetización. Si ahora reducimos el campo externo, la magnetización inducida también se reduce, pero no sigue la curva original. El material retiene una cierta magnetización permanente denominada magnetización remanente, que persiste incluso cuando se anula el campo externo (punto c). Si reducimos aún más el campo externo (sentido opuesto) podemos llegar a anular la magnetización remanente (Punto d), y si continúa la reducción se crea una magnetización inducida de sentido opuesto, llegándose también en este caso a un valor de saturación (punto e). Si ahora vamos reduciendo el campo externo hasta anularlo, el material queda con una magnetización remanente de sentido opuesto a la anterior (punto f). Para anular esta magnetización remanente debemos aumentar el campo externo (con el sentido

Page 225: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

2

original) hasta alcanzar el punto g, y si seguimos aumentando llegamos de nuevo a la saturación (punto b), con lo que se completa el ciclo de histéresis. Los materiales ferromagnéticos tienen por tanto dos valores estables de magnetización, uno norte, correspondiente al punto c de la gráfica y otro sur, correspondiente al punto f. Estos dos estados de magnetización remanente que se mantienen en ausencia de campo externo son los que se utilizan para codificar la información binaria cuando se utilizan los materiales ferromagnéticos como soporte de memoria.

M

e f

c b

d a g H

Los procesos de lectura y escritura sobre las superficies ferromagnéticas de un disco (habitualmente de

óxido de hierro) se realizan a través de una cabeza de grabación compuesta por un núcleo de hierro en forma de herradura y dos bobinas conductoras, una para escritura y otra para lectura. La cabeza opera muy cerca de la superficie, de forma que casi vuela sobre ella, sobre el colchón de aire formado por su propio movimiento. Debido a esto, están cerrados herméticamente, porque cualquier partícula de polvo puede dañarlos.

cor r iente

movimiento Supermagn

+

-

t ensión

lectu raescr itu ra

Escritura: Se hace pasar por la bobina de escritura una corriente que crea un campo magnético en el núcleo de hierro que se cierra a través de la pequeña región de la superficie magnética que en ese momento está bajo la cabeza, dejando una magnetización remanente del mismo sentido que el campo de la bobina.

Lectura: Se mueve la superficie magnética previamente grabada por debajo de la cabeza. Cada variación de flujo producida por las pequeñas áreas magnetizadas inducirá una pequeña tensión en la bobina de lectura. Amplificando e interpretando adecuadamente estas tensiones podemos reconstruir en forma de señal eléctrica digital los valores grabados en la superficie del disco.

Los discos magnéticos actuales disponen de AUTOPARK o aparcamiento automático de las cabezas, que posiciona las cabezas en un lugar fuera del alcance de la superficie del disco al apagar el ordenador. Esto evita posibles daños en la superficie del disco cuando la unidad es sometida a vibraciones o golpes en un posible traslado.

Page 226: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

3

1.1.2. Métodos de codificación sobre superficies magnéticas Para grabar información en la superficie, se siguen una serie de códigos que transforman un patrón de

bits en una secuencia de celdas con diferentes estados de magnetización. 1) Retorno a cero (RZ: «return to zero»).

El 1 lógico se graba magnetizando el centro de la celda. El 0 es ausencia de magnetización 2) Retorno a saturación (RS: «return to saturation»).

El 1 se representa por un estado de magnetización en el centro de la celda. El resto de la celda y el 0 se representa con el estado de magnetización opuesto. 3) Retorno a cero bipolar (BRZ: «bipolar return to zero»).

El 1 se representa por un estado de magnetización en el centro de la celda y el 0 por el estado de magnetización opuesto, también en el centro de la celda. Los extremos de la celda quedan sin magnetizar. 4) Sin retorno a cero (NRZ: «non-return zero»).

El 1 se representa por un estado de magnetización en toda la celda y el 0 por el estado contrario, también en toda la celda. 5) Sin retorno a cero inverso (NRZI: «non-return to zero invert»).

El 1 se representa por un cambio del sentido del flujo de magnetización en toda la celda respecto al estado de la celda anterior. El 0 se representa por ausencia de cambio.

RZ

RS

BRZ

NRZ

NRZ1

0 1 1 0 0 1 0

6) Codificación en fase (PE: «phase encoding»). El 1 se representa por un cambio y el 0 por el cambio contrario. Estos cambios se realizan en el centro de la celda. Para

poderse detectar dos ceros o dos unos seguidos, es necesario efectuar también un cambio al comienzo del segundo. 7) Modulación de frecuencia (FM: «frequency modulation»).

Es la codificación más sencilla, consiste en la grabación de un cambio de flujo para cada uno, y el omitir el cambio de flujo para cada cero. Es decir, siempre se produce un cambio al comienzo de la celda, en el centro se producirá un nuevo cambio de magnetización si y sólo si se graba un 1. Este procedimiento se puede realizar con una electrónica de control relativamente simple, pero tiene el inconveniente de que cada bit de datos consume dos cambios de flujo, limitando mucho la capacidad del disco 8) Coeficiente de pulso (PR: «pulse ratio»).

Page 227: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

4

La celda tiene un primer intervalo de longitud RI en un estado de magnetización, y el segundo intervalo, de longitud R2, en el estado contrario. El 1 se representa por un pulso tal que Rl/R2 < 1, y el 0 por un pulso tal que R1/R2 > 1. 9) FM modificada (MFM: «modifed FM»).

Similar a FM excepto que el cambio de estado al inicio de la celda se efectúa sólo si el bit precedente y actual son ambos 0. 10) Modulación de frecuencia modificada-modificada (MIFM: «modified-modified FM).

Igual que FM pero sólo se efectúa el cambio de estado al comienzo de la celda si la celda anterior no contiene ningún cambio (ni al principio ni en el centro), y la celda actual no es un 1 .

PE

FM

PR

MFM

M2FM

0 1 1 0 0 1 0

1.1.3. Formato de grabación

Los datos en un disco magnético se organizan en un conjunto de anillos concéntricos sobre el plato denominados pistas. Las pistas adyacentes están separadas por bandas vacías. Esto minimiza los errores debidos a falta de alineamiento de la cabeza o a interferencias del campo magnético. Para simplificar la electrónica, se suele almacenar el mismo número de bits en cada pista. Esto significa que la densidad en bits es mayor en las pistas más internas.

Los datos se transfieren en bloques y se almacenan en regiones del tamaño de un bloque, conocidas como

sectores. Normalmente hay entre 10 y 100 sectores por pista, y estos pueden ser de longitud fija o variable. Los sectores adyacentes se separan con regiones vacías. El disco se graba con un formato que contiene algunos datos extra, usados sólo por el controlador del disco y no accesibles al usuario. En la siguiente figura se puede ver la disposición de los datos:

Page 228: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

5

Banda deseparaciónde pista s

sectores

pista s

Separaciónin terbloques

En la siguiente figura se muestra un ejemplo del formato de grabación de un disco. En este caso, cada pista contiene 30 sectores de longitud fija, de 600 bytes cada uno. Cada sector contiene 512 bytes de datos, junto con la información de control utilizada por el controlador del disco. El campo ID es un identificador único, o dirección, usado para localizar un sector particular. El byte SINCRO es un patrón de bits especial que delimita el comienzo del campo. El número de pista identifica cada pista. El número de cabeza identifica una cabeza, si el disco tiene varias superficies. El ID y los campos de datos contienen, cada uno, un código de detección de errores de redundancia cíclica (CRC) que estudiaremos en el apartado siguiente.

Bytes 1 512 2

Bytes 1 2 1 1 2

Sincro

Gap (17 bytes)

iden t ificador

pista

ID Gap (41 yt es) Datos (41 bytes) Gap (20 bytes)

................... ................................. 30 sectoresSector i

Nº pista Nº cabeza Nº sector CRC (er rores)

DatosSincro CRC (er rores)

Existen procedimientos para aumentar la capacidad del disco colocando más sectores sobre las pistas exteriores que son más largas, manteniendo constante la velocidad de rotación. El sistema ZBR (Zone Bit Recording) es un ejemplo que requiere el uso de controladores más complejos..

Page 229: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

6

Un parámetro a tener en cuenta en el funcionamiento de un disco es el tiempo medio entre fallos, MTBF (Mean Time Between Failures), que se mide en horas (15000, 20000, 30000..). Cuanto mayor sea este parámetro mayor será la fiabilidad del disco.

1.1.4. Comprobación de Redundancia Cíclica (CRC) Los códigos de comprobación de redundancia cíclica (CRC) se utilizan fundamentalmente en dispositivos de

tratamiento serie de la información. El emisor genera a partir de un mensaje de k-bits que se quiere transmitir una secuencia de n-bits, denominada secuencia de comprobación (FCS: frame check sequence), que concatena con el anterior para formar el mensaje realmente transmitido, con n+k bits. El FCS se elige de manera que el mensaje transmitido sea divisible por algún número predeterminado. El receptor dividirá el mensaje recibido por ese número, y si el resto de la división es cero significa que no ha habido errores en la transmisión. Aritmética

La aritmética que se utiliza en las operaciones CRC es módulo 2, de acuerdo con las reglas de la teoría de campos algebraicos. Es decir, no existen acarreos para la suma ni préstamos para la resta. Tanto la suma como la resta resultan pues idénticas a una O-exclusiva:

Suma

1111101 + 0101001 ---------- 1010100

Resta

1101101 - 0101001 ---------- 1000100

Multiplicación

1111101 x 11 ---------- 1111101 1111101 ---------- 10000111

División

11 Cociente ---------- 1111101 10000111 Dividendo 1111101 ------- 1111101 1111101 ------- 0 Resto Divisor

Codificación M = mensaje de k bits original que se desea transmitir F = n bits de la secuencia de comprobación (FCS) T = mensaje de (k + n) bits que se transmite, con n < k P = patrón de n + 1 bits: divisor elegido Es evidente que multiplicar M por 2n equivale a desplazar hacia la izquierda n bits, introduciendo ceros por la derecha. Por tanto la operación de concatenación de M con F para dar T podemos expresarla de la siguiente forma:

T = 2n M + F

El objetivo es escoger F de tal manera que T sea divisible por P. Como:

2n M R ------ = Q + --

P P Siendo Q el cociente y R el resto. Por tanto haremos:

F = R

T = 2n M - R = 2n M + R

Ya que la suma y resta coinciden en aritmética módulo 2.

Page 230: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

7

Ejemplo

Emisor Mensaje original a transmitir M = 1010001101 (10 bits) Patrón P = 110101 (6 bits) FCS R = resto de la división de 2nM entre P

2nM = 25M = 101000110 00000 1101010110 Q --------------- P 110101 101000110100000 2nM 110101 ------ 111011 110101 ------ 111010 110101 ------ 111110 110101 ------ 101100 110101 ------ 110010 110101 ------ 01110 R

El resto se suma a 2nM para formar T

T = 2nM + R = 101000110 01110

Que es el mensaje o trama que se transmite Receptor Si no hay errores el receptor recibe el mensaje transmitido por el emisor y calcula el resto de la división por P: 1101010110 Q --------------- P 110101 101000110101110 2nM 110101 ------ 111011 110101 ------ 111010 110101 ------ 111110 110101 ------ 101111 110101 ------ 110101 110101 ------ 0 R

Como el resto es cero se sabe que no ha habido errores.

Page 231: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

8

Representación de los errores Si se produce un error en la transmisión de un bit del mensaje significa que si en origen valía 0 en

destino vale 1, y viceversa. Por tanto la representación de cualquier error (simple o múltiple) podemos hacerla con una cadena de bits E de longitud igual al mensaje transmitido, con valor 1 en aquellas posiciones de bit en las que se haya producido un error. El mensaje recibido Tr tendrá pues la siguiente expresión en términos del mensaje transmitido T y el error producido E :

Tr = T ⊕ E Si T = 11000111 y se ha producido un error en el tercer bit por la derecha, es decir, E = 00000100, entonces Tr = (11000111) ⊕ ( 00000100 ) = 11000011

Evidentemente el receptor fallará en la detección de un error si y solo si Tr es divisible por P, lo que equivale a decir que E sea divisible por P. Interpretación polinómica de de los códigos CRC

Los patrones de bits podemos representarlos como polinomios de una variable anónima X con coeficientes 0 ó 1. Los coeficientes corresponderán con los bits de la configuración binaria del patrón. Así, si M = 110011, M(X) = X5 + X4 + X + 1. Las operaciones aritméticas siguen realizándose en módulo 2. El polinomio correspondiente al mensaje que se transmite en código CRC vendrá dado por:

T(X) = XnM(X) + R(X) donde R(X) es el resto de la división de XnM(X) entre P(X), es decir: XnM(X) / P(X) = Q(X) + R(X) / P(X) Errores Al recibir el mensaje Tr(X) el receptor lo divide por P(X). Error simple: si ha habido un error en un solo bit, E(X) = Xi donde i determina la posición del error. Si P(X) contiene el factor X+1, E(X) nunca será divisible por P(X), por lo que detectarán los errores simples. Errores dobles: en este caso E(X) = Xi +Xj, donde i > j. Esto también se puede escribir como E(X) = Xj (Xi-j + 1). Si suponemos que P(X) no es divisible entre X, una condición suficiente para detectar todos los errores dobles es que P(X) no sea divisor exacto de (Xk + 1) para ningún k hasta el valor máximo de i – j, es decir, hasta la longitud máxima del mensaje. Se conocen polinomios sencillos de bajo grado que dan protección a mensajes largos. Por ejemplo, X15 + X14 + 1 no dividirá exactamente a (Xk + 1) para ningún valor de k < 32.768. Errores en ráfaga: un error en ráfaga comienza y finaliza en 1, y entre ambos 1’s hay 0’s y 1’s. Para un error en ráfaga de longitud k, el polinomio tendrá la forma: Xi(Xk-1 + …+), donde i determina la distancia a la que se encuentra la ráfaga desde el extremo derecho del mensaje recibido. Si P(X) contiene un término X0, no tendrá a Xi como factor, por lo que, si el grado de (Xk-1 + …+) es menor que el grado de P(X), el residuo nunca puede ser cero. Si la longitud de la ráfaga es r+1, el residuo de la división entre P(X) será cero si y solo si la ráfaga es idéntica a P(X). Por la definición de ráfaga, el primero y último bits deben ser 1, así que el que sean iguales o no depende de los r – 1 bits intermedios. Si se consideran igualmente probables todas las combinaciones, la probabilidad de que se acepte como válido el mensaje recibido de de 1/2r-1

Page 232: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

9

Polinomios generadores estándar CRC-12 = X12 + X11 + X3 + X2 + X1 + X0 CRC-16 = X16 + X15 + X2 + X0 CRC-CCITT = X16 + X12 + X5 + X0 CRC-22 = X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+X0

Implementación hardware

La generación y detección CRC se implementa con un circuito divisor compuesto por puertas O-exclusiva y un registro de desplazamiento. El registro contiene tantos bits como el FCS, es decir, n, y n-1 puertas O-exclusiva. Cada puerta O-exclusiva se ubica a la entrada de un biestable correspondiente a un monomio de coeficiente 1, salvo Xn. Para el divisor del ejemplo, 110101, cuyo polinomio asociado es

X5 + X4 + X2 + X0

El divisor tendrá la siguiente forma:

X5 X4 X3 X2 X1 X0

Bits de entrada

C4 ⊕

C3 ⊕

C1

C2

C0 ⊕

Sobre este circuito podemos seguir el proceso de generación CRC del ejemplo anterior, para el mensaje M = 1010001101:

C4 C3 C2 C1 C0 C4 ⊕ C3 C4 ⊕ C1 C4 ⊕ entrada entrada

Inicial Paso 1 Paso 2 Paso 3 Paso 4 Paso 5 Paso 6 Paso 7 Paso 8 Paso 9 Paso 10 Paso 11 Paso 12 Paso 13 Paso 14 Paso 15

0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0

0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0

mensaje a enviar

cinco ceros añadidos

Page 233: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

10

1.1.5. Parámetros de rendimiento de un disco magnético Tiempo de búsqueda (Ts): tiempo que tarda la cabeza en posicionarse en la pista. Se compone de dos partes, el tiempo de comienzo s o tiempo necesario para que la cabeza adquiera una cierta velocidad radial, y el tiempo necesario para atravesar las pistas que preceden a la que se accede, que no es una función lineal del número de pistas atravesadas. Sin embargo podemos aproximar Ts con la siguiente expresión:

Ts = m * n + s donde: n = número de pistas atravesadas m = constante que depende del disco En un disco barato de PC m puede tener un valor de 0,3 ms y s de 20 ms; mientras que en un disco más caro m puede tener un valor de 0,1 ms y s de 3 ms Retardo rotacional (Tr): tiempo que tarda el sector en alcanzar la cabeza. Si r es la velocidad angular del disco en revoluciones/segundo (rps), la expresión del valor medio de Tr será la siguiente:

Tr = 1/2r En discos duros que giran a 3.600 rpm, una revolución tardará 16,7 ms, y el valor medio del retardo rotacional será 8,3 ms. En cambio los disquetes que giran entre 100 y 600 rpm tienen un retardo rotacional medio que va de 100 a 200 ms. Tiempo de acceso (Ta): es la suma del tiempo de búsqueda y el retardo rotacional

Ta = Ts + Tr = m * n + s + 1/2r

Tiempo de transferencia (Tt): tiempo que tardan en transferirse los datos a ó desde el disco una vez accedido el inicio de los mismos. Dependerá de la velocidad de rotación del disco:

Tt = b/rN donde: b = número de bytes a transferir N = número de bytes de una pista r = velocidad de rotación en rps

Tiempo de operación (To): es la suma de las componentes anteriores, es decir:

To = m * n + s + 1/2r + b/rN

En un computador que funciona bajo control de un SO, para realizar una operación de E/S, a estos tiempos habrá que añadir el tiempo de espera por un canal, si el disco no dispone del suyo propio, y el tiempo de espera en la cola hasta que el dispositivo esté disponible. Comparación de tiempos en acceso secuencial y aleatorio

Ts = 20 msVelc. Transfe. = 1 MB/sSector = 512 BPista = 32 sectoresArch ivo de 128KB = 256 sectores

1 Acceso secuencial

8 pistas adyacentes (256 sectores / 32 sectores/pista = 8 pistas)

Page 234: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

11

Acceso a la primera pista = Ts + Tr + Tt(1 pista) Ts = 20 ms Bytes / pista = 512*32 = 16.384 Tiempo / pista = 16.384 / 1000.000 = 0,016384 s. Tr = 0,016384 / 2 = 0,008192 = 8,192 ms

Tt(1 pista) = 0,016384 s. = 16,384 ms Acceso a la primera pista = Ts + Tr + Tt(1 pista) = 45 ms.

Acceso a las restantes 7 pistas = 7 * (Tr + Tt(1 pista) ) = 7*(8,192 + 16,384 = 7 * 25 = 220 ms. 2 Acceso aleatorio

Acceso a un sector = Ts + Tr + Tt(1 sector) = 20 + 8,3 + 512/1000000 = 28,8 ms. Acceso a 256 sectores = 256 * 28,8 = 7.372 ms

Existen una serie de técnicas que permiten aminorar los accesos a disco así como acelerar las transferencias de datos entre el sistema y el dispositivo. Una de las más conocidas es la utilización de memorias intermedias, buffers o cachés.

Buffer de Pista: Es una memoria incluida en el controlador del disco, que almacena el contenido de una pista completa. Así cuando se hace una petición de lectura de una pista, esta se puede leer de una sola vez, enviando la información a la CPU.

Cachés de Disco: Pueden estar dentro del propio disco duro, en tarjetas especiales o bien a través de programas utilizando la memoria central. La gestión de esta memoria es completamente transparente y consiste en almacenar en ella los datos más pedidos por la CPU y retirar de ella aquellos no solicitados en un determinado tiempo.

1.1.6. Dispositivo floppy El dispositivo floppy disk fue introducido por IBM en 1967. La primera versión tenía un tamaño de 8

pulgadas y se redujo a 5.50 pulgadas en la segunda con 360 KB, que se utilizó en el primer IBM PC en 1981. Posteriormente apareció la versión de 3.25 pulgadas con 1.44 MB. El floppy utiliza una fina capa de material plástico recubierta de óxido de hierro (material ferromagnético)

Estructura de bloques del dispositivo

Como puede verse en el esquema de la siguiente figura, un dispositivo floppy dispone de los siguientes elementos:

• Mecanismo de cabeza: una sola cabeza para lectura y escritura, y otra para borrado inmediatamente antes de la

escritura. La cabeza es accionada por un motor paso-a-paso que le permite posicionarla radialmente en una cualquiera de las pistas del floppy. También dispone de un mecanismo de elevación de la cabeza que se utiliza para evitar el rozamiento con la superficie cuando se mueve radialmente.

• Motor de giro: hace girar el diskette a una velocidad de 300 ó 369 revoluciones por minuto.

• Detector de la pista cero: que el dispositivo utiliza como referencia para desplazar la cabeza a la pista adecuada.

• Detector de inicio de pista: fotodetector que genera una señal cada vez que se inicia una nueva revolución de giro.

Page 235: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

12

Detectorde pista 0

fotocélula

Cabeza l/eMotorde Giro

Pu lsoDirección pu lsoE levación cabeza

Giro m otor

Listo

Protección escr i.

In dice

Pista 0

RelojDatos lectura

Datos escr itu r a

MotorPaso-a-paso

Lectu raY

Escr itu ra

Estado

Con trol

Todos los elementos del dispositivo son accionados y supervisados desde la circuitería de Control, Lectura/Escritura y Estado a través del controlador del dispositivo.

Formato de datos

índice

sector

ID Campo de Datos

marca CRCpista sector longitudsector

marca 128 bytes de datos CRC

marcainiciopista

Page 236: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

13

Estructura y funcionamiento del controlador de dispositivo La estructura del controlador del floppy disk se representa en la siguiente figura:

DISCORegist ro de Datos

Regist ro de Desplazamiento

R. de Compensación y Sa lida

Regist ro de Ordenes

Regist ro de P ista

Regist ro de Sector

Regist ro de EstadoBuffer

deDatos

Lógicade

Seleccióny

Control

CP U

Circu itosde

Adaptacióny

Control

Consta de los siguientes elementos: Registro de pista contiene el número de pista sobre el que se encuentra en cada momento la cabeza.

Registro de estado codifica la información de estado del dispositivo: disponible,….

Registro de Ordenes almacena la orden recibida por la unidad de E/S. Entre otras dispone de las siguientes:

Búsqueda de pista Búsqueda de sector Lectura de sector Escritura de sector

Analicemos las acciones que tienen lugar en el dispositivo durante la ejecución de la primera de estas órdenes. Búsqueda de pista

El registro de pista se inicializa a 0 cuando se enciende el motor de giro y se activa el detector de pista 0. Una vez que el módulo de E/S ha puesto la orden de Búsqueda de pista sobre el Registro de Ordenes, carga en el Registro de Datos el número de la pista a buscar y comienza la operación. Se comparan los registros de Datos y Pista. Si sus contenidos coinciden, la cabeza se encuentra en la pista buscada, y la operación finaliza con una interrupción después de desactivar la señal de Elevación de cabeza y transcurrir un retardo de tiempo para el asentamiento de la cabeza. En caso contrario se envía un pulso al motor paso-a-paso de la cabeza con la dirección adecuada (dependiendo del resultado menor o mayor de la comparación) a fin de desplazarla a la pista contigua. Después se actualiza el Registro de Pista y se vuelve a comparar.

Page 237: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

14

> = <

<R.Datos> : <R.P ista>

Pulso ΠDirección pu lso 1R.P ista <R.Pista> + 1

Pulso ΠDirección pu lso 0R.P ista <R.P ista> - 1

Elevación cabeza 0Retardo( asen tamien to de la cabeza)In terrupción

R.Datos n º de pista

1.2 Discos ópticos

Se trata de dispositivos para el almacenamiento de información cuya lectura se realiza por medios ópticos. Existen diferentes tipos, siendo los más importantes el CD-ROM (Compact Disc ROM) y el WORM(Write Once, Read Many times). 1.2.1. CD-ROM

La información se almacena en forma de hoyos (pits) y salientes (bumps), grabados mecánicamente sobre un substrato de aluminio brillante, y son leídos por medio de un láser que se refleja con diferente dirección en los hoyos que en los salientes.

0,5 micras

1,6 micras

Base de

policarbonato transparente

EtiquetaCapa protectoraCapa aluminio

El proceso de escritura (grabación) sigue los siguientes pasos: • La información se codifica usando un código de canal con el que cada byte (ASCII) queda representado por 14 bits y

se graba en una cinta magnética • La cinta es leída por un grabador de moldes para controlar un modulador óptico de un láser de potencia. • El láser se enfoca sobre la superficie fotosensible que recubre el disco molde (que es de cristal). • Mediante un proceso análogo al utilizado en la fabricación de CIs se revela el disco. • Las zonas de la superficie fotosensible que han sido expuestas a la luz se convierten en hoyos, resultando un relieve

exactamente igual al que tendrán los CD-ROM.

Page 238: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

15

• Del molde original se obtienen varios discos denominados matrices, que son copias en negativo de los discos definitivos.

• Con las matrices se obtiene la capa de aluminio de CD-ROM. • Finalmente se aísla del exterior, emparedándola entre la capa protectora superior y la base inferior de plástico Con los CD-ROM se consiguen una densidad de grabación de 16.000 pistas/pulgada (t/i) muy superior a la de los discos magnéticos (los disquetes 96 t/i. El proceso de lectura sigue los siguientes pasos: • Se utiliza un haz de luz generado por un diodo láser de arseniuro de galio, que una lente enfoca sobre la superficie de

la base de plástico, convirtiéndose en un punto de 1 micra. • El enfoque no se realiza sobre la superficie externa de la base de plástico, sino sobre el aluminio, por lo que las

partículas de polvo o rayados del exterior del disco apenas afectan a su lectura. • La lectura se efectúa con un fotodetector que mide la cantidad de luz reflejada (genera una corriente proporcional a la

radiación recibida). • Cuando la luz incide sobre los bordes de los hoyos se desvía, de forma que apenas vuelve nada hacia el objetivo,

obteniéndose así un "1". • Cuando el haz incide sobre la superficie plana de hoyos y salientes se refleja casi sin desviación, captándose en el

detector prácticamente la totalidad del haz, obteniéndose así un "0".

laser de lectura(lee 1)

laser de lectura(lee 0)

Base de

10000010010000000000001000000010000001

Codificación de la información A nivel lógico la información se organiza en bloques (sectores) de 2.352 bytes, con el formato que aparece en la siguiente figura:

bytes 12 4 2.048 288

Sincronismo ID Datos ECC

Minuto Segund. Sector Modo00 FF FF FF 00

A nivel físico

Los 1's se representan por el cambio de hoyo a saliente y los 0's por las superficies de los hoyos y salientes. Cada 0,3 micras de hoyo o saliente a lo largo de la pista corresponde a un 0. La longitud mínima físicamente posible para hoyos y salientes es de 0,6 micras, lo que exige que 2 1's deben estar separados como mínimo por 2 0's. Por eso cada byte de datos se codifica con 14 bits de canal, según la siguiente tabla:

Page 239: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

16

Codificación EFM (Eight to Fourteen Modulation)

Byte Código de canal

0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 .........

01 0010 0010 0000 10 0001 0000 0000 10 0100 0010 0000 10 0010 0010 0000 01 0001 0000 0000 00 0001 0001 0000 00 0100 0010 0000 00 1001 0000 0000 .................

los 2.352 bytes de cada sector se estructuran en tramas. Cada trama contiene 24 bytes de sector.

bits 24 3 17 136

588 bitsbyte de sector 24

1 byte de sector

bits 14 3

datos sep

byte de sector 1 byte de sector i sincronización sep control 8 ECC

Un sector queda representado por 98 tramas Bits de canal de un sector = 588 bits/trama * 98 tramas/sector = 57.624 bits Luego los 2.048 bytes = 16.388 bits de datos de usuario ocupan 2.352 bytes = 18.816 bits de datos lógicos y 57.624 bits físicos de canal. 1.2.2. DVD (Digital Versatil Discs)

Constan de varias capas de información sobre una misma cara del disco separadas por materiales que permiten el acceso selectivo a cada capa por medio de láseres con diferentes propiedades de reflexión.

Base de

Base de

1.2.3. WORM (Write Once, Read Many times)

Page 240: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

17

Son unidades de discos ópticos similares a los lectores de CD-ROM, pero que contienen un láser de potencia, de forma que en la propia unidad se puede efectuar la grabación del disco. 1.3 Discos magnetoópticos o WMRA (Write Many, Read Always) Proceso de escritura: • Los discos vírgenes son previamente magnetizados, es decir, escritos todo a 0's, magnetización norte, o todo a 1's,

magnetización sur. • En la fase de escritura se realizan dos acciones:

1. Toda la superficie del disco se somete a un campo magnético uniforme, de sentido contrario al de magnetización inicial, y de intensidad no suficiente para alterar el estado de magnetización inicial de cada celda.

2. Simultáneamente se hace incidir un láser de unos 40 mW de potencia sobre las celdas en las que hay que escribir

un valor distinto al inicial. De esta forma la celda se calienta cerca de su punto de Curie, con lo que cambia el sentido de magnetización inicial de la celda.

campo magnético externo

láser de escritura

magnetización inicial

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑↑

↑ ↑ ↑ ↑ ↑ ↓ ↑ ↑ ↑ ↑ ↑↑

Proceso de lectura: • El proceso de lectura se funda en el efecto Kerr, que consiste en que el plano de polarización de un haz de luz gira en

un sentido u otro, según el estado de magnetización de la superficie en la que se refleja. La lectura se realiza con un láser de unos 10 mW de potencia, que incide secuencialmente sobre las celdas del disco que se van a leer, captándose la luz reflejada en un fotodetector después de haber pasado por un analizador óptico.

Page 241: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

18

fotodetector

láser de lectura

↑ ↑ ↑ ↑ ↑ ↓ ↑ ↑ ↑ ↑ ↑↑

fotodetector

láser de lectura

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑↑

Proceso de regrabación • Para volver a escribir sobre un disco previamente escrito se procede en primer lugar al borrado de todas las celdas

que contengan un sentido de magnetización distinto al inicial. Para ello se aplica un campo magnético externo de sentido igual al inicial y con la suficiente intensidad para invertir el sentido de magnetización de cualquier celda que no coincida con el del campo externo.

La capacidad de este tipo de discos va de 0.5 a 1 GB y una velocidad de transferencia de unos 150 KB/s con tiempo de acceso de 300 ms.

1.4 Monitores de tubo de rayos catódicos (CRT)

Existen dos tipos de monitores basados en tubos de rayos catódicos, los caligráficos y los de barrido o raster. Los primeros generan la imagen haciendo que un haz de electrones trace sobre la superficie fosforescente de la pantalla la forma de la figura que se quiere visualizar. Los de barrido componen la imagen sobre un conjunto de líneas paralelas horizontales, inhibiendo o no el haz en el momento que pasa por los diferentes puntos de la pantalla.

1.4.1. Principios de funcionamiento

En la siguiente figura se han representado los componentes principales de un monitor monocromo (blanco y negro) de tubo de rayos catódicos (CRT) que utiliza la técnica de barrido. El componente básico es el tubo de rayos catódicos que incluye un cañón que produce un haz de electrones. Cuando los electrones pasan a través del campo magnético producido por la bobina de deflexión montada en el cuello del tubo, sufren una desviación en función del valor del campo magnético. Cuando los electrones alcanzan la superficie interna del tubo, cubierta de una capa de material fosforescente, se ilumina el punto de incidencia.

La pantalla mantiene la imagen refrescándola periódicamente a una frecuencia suficiente para la persistencia de la

retina. La técnica de barrido utilizada por la mayoría de los monitores es análoga a la utilizada por los aparatos de televisión. Las señales que actúan sobre la bobina de deflexión son generadas por dos osciladores, uno actuando sobre la componente horizontal y el otro sobre la vertical. Los osciladores son sincronizados por señales externas, HSYNC para la sincronización horizontal, y VSYNC para la vertical, después se amplifican antes de entrar en la bobina. La señal de VIDEO controla la intensidad del haz de electrones, y por tanto la iluminación de los puntos de la imagen sobre la pantalla.

Page 242: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

19

V

H

VIDEO

VSYNC

HSYNCOSCILADOR

HORIZONTAL

OSCILADORVERTICAL

AMPLIFICADORHORIZONTAL

AMPLIFICADORVERTICAL

AMPLIFICADORDE VIDEO CRT

Cañón de electrones

Bobina de deflexión Capa de fósforo

Los monitores de color tienen una organización similar pero utilizan un cañón de electrones para cada uno de los tres colores básicos. Cada punto de la pantalla, píxel, está compuesto por tres pequeñas áreas que se iluminan de rojo, verde y azul cuando incide el correspondiente haz de electrones. La relación entre las tres intensidades de electrones produce la correspondiente intensidad de los tres colores básicos para formar el color real de la imagen.

rojo

verde

azul

En la siguiente figura hemos representado la forma en que se realiza el barrido de una pantalla monocromo. El haz de electrones comienza en la esquina superior izquierda y se mueve horizontalmente de izquierda a derecha. Cuando completa la primera línea horizontal vuelve al flanco izquierdo para realizar el barrido de la segunda línea, al tiempo que el haz sufre una pequeña deflexión vertical, en sentido descendente. de esta forma se genera un conjunto de líneas horizontales paralelas hasta alcanzar la esquina inferior derecha. En este punto se dice que se ha completado un barrido vertical o un marco. Después el haz de electrones vuelve a la esquina superior izquierda para repetir el proceso y así refrescar la pantalla. El refresco se hace necesario para que la imagen aparezca persistente en la retina del usuario.

Page 243: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

20

1

2

3

4

5

6

7

Para producir el barrido descrito los osciladores horizontal y vertical deberán generar unas señales en forma de

diente de sierra, tal como las que se presentan en la figura siguiente:

tiempo1 2 3 4 5 6 7

H

V

VIDEO

tiempo

tiempo

La señal de VIDEO controla la intensidad de iluminación del punto de barrido en cada instante, haciendo que se dibuje la imagen sobre la pantalla, la letra A mayúscula en la figura. En este caso la intensidad la hemos considerado binaria, presencia o ausencia de luz (blanco o negro). En realidad será un valor entero para graduar la escala de grises.

Si el refresco de la pantalla se realiza a razón de 60 marcos/segundo, corresponde a un intervalo de tiempo de

16.67 ms, de los cuales sólo 15,42 ms se consumen estrictamente en el barrido vertical, los restantes 1,25 ms se emplean en el retorno vertical.

ms

16,6715,42

retorno verticalbarrido vertical

V

Lo mismo le ocurre al barrido horizontal. Unos valores típicos para el barrido y el retorno son los que se muestran

en la siguiente figura:

Page 244: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

21

µs

1053,5

retorno horizontalbarrido horizontal

H

Con los valores anteriores, el número total de líneas de un marco será: 1.542 µs / 63,5 ≈ 242 líneas.

Sincronismo Las señales de barrido horizontal y vertical tienen evidentemente que sincronizarse entre sí y con la señal de

VIDEO, que por simplicidad seguiremos considerando que es binaria. La sincronización del barrido horizontal y los pulsos de video se muestra en la siguiente figura:

HSYNC

H

pulso de sincronismo horizontal

borrado horizontal pulsos de vídeo

Algo equivalente ocurre para el sincronismo vertical:

V

intervalo de boorrado vertical

VSYNC

pulsos de VIDEO y HSYNChor

Page 245: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

22

1.4.2. Generación de caracteres

Para entender el funcionamiento de la lógica de temporización y control de la pantalla en el proceso de visualización, consideraremos en primer lugar el caso aislado de generación de un carácter, la Z, que constituye el primer carácter de una línea almacenada entre las direcciones dir_ini y dir_fin en la RAM de refresco.

La codificación en mapa de bits de todos los caracteres visualizables se halla en una memoria

ROM, denominada Generador de Caracteres. En dir_ini se encuentra en realidad la codificación ASCII de la Z, que se utilizará como puntero (dirección) al inicio de la zona de la ROM donde comienza la codificación en mapa de bits de la Z.

dir_fin

dir_ini

LOGICA DE TEMPORIZACION Y CONTROL

línea 0línea 1línea 2línea 3línea 4línea 5línea 6

dir_refresco dir_línea Reloj desplaz. carga

(RAM)

MEMORIA DE

REFRESCO

HSYNC

VSYNC

VIDEO

(ROM)

GENERADOR DE

CARACTERES

0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 Código ASCII

utilizado como puntero

Registro de desplazamiento

Z (en ASCII)

Para visualizar la Z tendremos que ir extrayendo de la ROM el valor binario de sus pixels, línea a

línea, llevando cada línea al Registro de Desplazamiento que controla la señal de VIDEO, es decir, la presencia (1) o ausencia (0) de luz en la pantalla.

Hemos supuesto que la resolución de cada carácter, incluyendo los puntos de separación es de 8 x 7

= 56 pixels. El proceso completo de refresco de la línea contenida entre las direcciones dir_ini y dir_fin de la

memoria de refresco lo hemos representado en el siguiente diagrama:

Page 246: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

23

si

no

REGISTRO DESPLAZAMIENTO ROM[RAM[dir_refresco] + dir_línea]

Despla. Derecha REGISTRO DESPLAZAMIENTO 8 posiciones

dir_línea dir_línea + 1

dir._refresco >

dir_fin

dir_línea > 6

dir_refresco dir_refresco + 1 no si

dir_ línea 0

dir_refresco dir_ini

1.4.2. Controlador

La estructura del controlador completo de la pantalla de tubo de rayos catódicos la componen un conjunto de contadores que actúan sobre la RAM de refresco, la ROM de generación de caracteres, el Registro de Desplazamiento que controla la señal de VIDEO y la Lógica de Temporización.

Supondremos que la resolución de la pantalla es de 16 filas con 32 caracteres cada una, y cada carácter está definido por una matriz de 7 x 10 puntos, tal como se muestra en la siguiente figura:

caracter 2 caracter 3caracter 1

línea 1

línea 10

columna 1 columna 7

ESTA ES UNA LINEA...

caracter 1 caracter 32

fila 1

fila 16

32 X 16

El controlador actúa en sicronización con un Reloj que genera un pulso por cada píxel a visualizar. El Reloj actúa

sobre el Registro de Desplazamiento para marcar los instantes en que tiene que renovarse el punto de la línea en fase de visualización.. También actúa de forma directa sobre el Contador de Puntos de cada línea de un carácter. En realidad este contador opera como divisor de la frecuencia del Reloj para cargar el Registro de Desplazamiento con las sucesivas líneas de todos los caracteres que se visualizan en la misma fila de la pantalla.

La salida del Contador de Puntos actúa sobre el Contador de Caracteres, que a su vez actúa sobre el Contador de Línea de Puntos, que finalmente actúa sobre el Contado de Fila de Caracteres. Este funcionamiento en cascada de los 4

Page 247: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

24

contadores va dividiendo la frecuencia del Reloj en los valores adecuados al recorrido de cada contador, que se corresponden con la resolución de la pantalla:

Contador de Puntos Puntos de cada fila de cada carácter (7) Contador de Caracteres Número de caracteres de una fila de la pantalla (32) Contador de Línea de Puntos Número de líneas de puntos de cada carácter (10) Contador de Fila de Caracteres Número de filas de caracteres de la pantalla (16)

5

4

HSYNC

VSYNC

VIDEO

ESTA ES UNA LINEA...

carga

desplazamiento

Contador defila de

caracteres(÷16)

Contador delínea

de puntos(÷10)

Contador decaracteres

(÷32)

Contador depuntos

(÷7)

(RAM)

(ROM)

Retardo Registro de desplazamiento

Reloj

Lógica de temporizaciónHSYNC, VSYNC, VIDEO

caracter 1 caracter 32

fila 1

fila 16

32 X 16

7

4

7

1.5 Pantallas de cristal líquido El cristal líquido de tipo twisted nematic, inventado por Schald y Helfrich y mostrado por Fergason en 1971, representa la primera aplicación con éxito de los cristales líquidos. Se basa en la regulación del paso de luz polarizada mediante cristal líquido sometido a una tensión eléctrica. Cuando la luz no polarizada pasa a través de un filtro polarizador, sólo se transmite un plano de polarización. Si se utilizan dos filtros polarizadores juntos, la transmisión de la luz dependerá de su orientación relativa. Por ejemplo, cuando los polarizadores se disponen de forma que sus planos de polarización son perpendiculares entre sí, la luz se bloquea. Pero cuando el segundo filtro, llamado analizador, es paralelo al primero, la luz que pasa por el primer filtro pasa también a través del segundo.

Page 248: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

25

analizador

polarizador

luz bloqueada

luz no polarizada

luz polarizada

analizador

polarizador

Luz polarizada

luz no polarizada

luz polarizada

Una celda de cristal líquido twisted nematic está compuesta por:

• Dos superficies de vidrio transparente cubiertas de un material conductor también transparente (oxido de estaño) que actúa como electrodo

• Un regulador de precisión del gap entre las dos superficies de la celda. • Dos polarizadores cruzados: el polarizador y el analizador • Material de cristal liquido nematic

Las superficies de los electrodos transparentes en contacto con el cristal líquido se recubren de una fina capa de polímero que ha sido frotado en una dirección. Las moléculas de cristal líquido tienden a orientarse con sus ejes longitudinales paralelos a esta dirección. Las superficies de vidrio se disponen de manera que las moléculas adyacentes al electrodo superior se orienten formando un ángulo recto con el inferior. Cada polarizador está orientado con su plano de polarización paralelo a la dirección de frotación del electrodo adyacente (de esta forma el polarizador y el analizador están cruzados). En ausencia de un campo eléctrico el eje director del cristal líquido sufre un giro suave de 90º dentro de la celda. La luz no polarizada entra al primer filtro polarizador y sale polarizada en el mismo plano que la orientación local de las moléculas de cristal líquido. La disposición girada (twisted) de las moléculas de cristal líquido dentro de la celda actúan como guía de las ondas luminosas y rotan el plano de polarización en un cuarto de giro (90º) de manera que la luz que alcanza el segundo polarizador (analizador) puede atravesarlo. En este estado la celda de cristal líquido es transparente. Cuando se aplica un voltaje a los electrodos, las moléculas de cristal líquido tienden a alinearse con el campo eléctrico resultante E, y de esta forma se pierden su propiedad de guía de las ondas luminosas, bloqueándose el paso de la luz polarizada. Cuando se desconecta el campo eléctrico, las moléculas tienden a adoptar de nuevo el estado girado (twisteado) y la celda se convierte de nuevo en transparente.

Page 249: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

26

analizador

polarizador

luz no polarizada

luz polarizada

luz polarizada

analizador

polarizador

luz no polarizada

luz polarizada

luz polarizada

1.5 Impresoras 1.5.1 Impresora de martillo

La impresora de martillos se ha utilizado mucho en aplicaciones que operan en ambientes industriales, ya que su sencillez la hace muy robusta. Consta de un cilindro con el mismo carácter repetido a lo largo de toda una generatriz, y tantas generatrices como caracteres imprimibles. También dispone de una batería de martillos que se accionan eléctricamente, tantos como veces se repite el carácter en una generatriz. Entre los martillos y el cilindro se desliza una cinta entintada y el papel. Cada generatriz lleva asociada un pequeño imán en su extremo que genera un pulso cada vez que pasa debajo de una pequeña bobina. También existe un imán asociado a todo el cilindro que genera un pulso al inicio de una revolución. Con la información de los dos trenes de pulsos, el Control conoce en todo momento el carácter que se halla debajo de la batería de martillos. Sólo tiene que accionar los martillos correspondientes a las posiciones de la línea de escritura donde deba aparecer el carácter bajo los martillos. En general la escritura de una línea requerirá una vuelta completa del cilindro.

Page 250: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

27

bobina

imanes

papel

cinta entintada

inicio de revolución

fila de caracteres

martillos

A A A A A A A A

C C C C C C C CB B B B B B B B

Amp

Control

1.5.2 Impresora de chorro de tinta La impresora de chorro de tinta utiliza un principio de funcionamiento análogo a las pantallas

caligráficas de rayos catódicos. Controla la desviación eléctrica que experimenta un chorro de tinta ionizada para dibujar sobre el papel la forma deseada. En este caso la información de la forma a dibujar se traduce en una diferente ionización del chorro de tinta para que se desvíe de la forma adecuada cuando pasa por unos electrodos a potencial fijo en su camino hacia el papel. La ionización de la tinta se produce en un electrodo de carga que se controla con la señal del carácter a imprimir.

La impresora dispone de un dispositivo para recoger la tinta no utilizada y devolverla al circuito de alimentación de la cabeza que emite el chorro.

Las impresoras de inyección de tinta pueden producir texto e imágenes de alta calidad en blanco y negro o color.

tinta noutilizada

0 - 200 V

electrodode carga

bomba

3 kV

deflexiónvertical

papel

Control

FiltroTinta

señalforma

carácter

Page 251: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

28

1.5.3 Impresora láser El principio de funcionamiento de la impresora láser se asemeja al de la pantalla de barrido de rayos catódicos. La imagen eléctrica a imprimir la forma un rayo láser sobre un cilindro recubierto de un material fotoconductor giratorio cuya superficie se corresponde con la de la página impresa. El láser opera generatriz tras generatriz. Cada generatriz del cilindro se corresponde con una línea de puntos de la página. La imagen eléctrica se transforma en imagen real por la aplicación de un polvo de carbón denominado toner. El cilindro impregnado de toner se transfiere a la página de papel con la ayuda del calor y la presión.

Espejo octogonal rotatorio

Toner

Emisor de Laser

Rayo Laser

Rodillo de arrastre

Cilindro giratorio

Modulador

Ratón

fotodetector

Contador X

Contador Y

fotodetector

Page 252: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

29

2. Buses de comunicación

Un bus es un medio compartido de comunicación constituido por un conjunto de líneas (conductores) que conecta las diferentes unidades de un computador. La principal función de un bus será, pues, servir de soporte para la realización de transferencias de información entre dichas unidades. La unidad que inicia y controla la transferencia se conoce como master del bus para dicha transferencia, y la unidad sobre la que se realiza la transferencia se conoce como slave. Los papeles de master y slave son dinámicos, de manera que una misma unidad puede realizar ambas funciones en transferencias diferentes. Por ejemplo, una unidad de DMA hace de slave en la inicialización que realiza el master, la CPU, para una operación de E/S. Sin embargo, cuando comienza la operación, la unidad de DMA juega el papel de master frente a la memoria, que en esta ocasión hace de slave.

Para garantizar el acceso ordenado al bus, existe un sistema de arbitraje, centralizado o distribuido, que establece las prioridades cuando dos o más unidades pretenden acceder al mismo tiempo al bus, es decir, garantiza que en cada momento sólo exista un master.

Para establecer el tiempo de duración de las transferencias y que sea conocido tanto por el master como por el slave, un bus debe disponer de los medios necesarios para la sincronización master-slave.

2.1 Estructura de un bus Las líneas de un bus podemos clasificarlas en grupos, atendiendo al papel que cumplen en las transferencias:

1. Líneas de información básica: las utiliza el master para definir los dos elementos principales de una transferencia, el slave y los datos. Se dividen , pues, en dos grupos:

• Líneas de Direcciones: determinan la unidad que hace de slave en la transferencia

• Líneas de Datos: transportan los datos de la transferencia.

Existen buses con líneas independientes para cada uno de los anteriores tipos de información. En cambio en otros se utilizan las mismas líneas multiplexadas en el tiempo.

2. Líneas de control: transmiten las órdenes que determinan la operación de transferencia a realizar por las líneas de datos y direcciones, y marcan el ordenamiento temporal de las señales que circulan por el bus. Las primeras son las líneas de control propiamente dichas, de las que las más importantes son:

• Escritura en memoria • Lectura de memoria • Operación de salida • Operación de entrada Las segundas son las líneas de sincronismo, entre las que cabe citar las siguientes:

• Reconocimiento de transferencia • Reloj • Reset

3. Líneas de arbitraje: establecen la prioridad entre diferentes peticiones de acceso al bus. Por ejemplo:

• Petición del bus • Cesión del bus • Ocupación del bus

Page 253: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

30

arbitraje

direcciones, datos

control

CPU Memoria E/S

Las líneas de un bus podemos también clasificarlas en función de su direccionalidad:

Líneas unidireccionales • Emisor simple

control tri-state

• Emisor múltiple

colector abierto

Líneas bidireccionales

Page 254: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

31

control tri-state

Desde el punto de vista físico un bus es un conjunto de conductores eléctricos paralelos dispuestos sobre una

tarjeta de circuito impreso. Los dispositivos del sistema se conectan a través de conectores (slots) dispuestas a intervalos regulares a lo largo del bus.

T a r j e t a

C o n e c t o r

B u s

La disposición anterior corresponde generalmente a los buses del sistema. Los denominados buses de

entrada/salida conectan las unidades a través de cables. Los principales parámetros que caracterizan un bus son:

• Ancho de banda: velocidad de transferencia medida en Mb/s • Anchura del bus: número de líneas que lo componen • Ancho de datos: número de líneas de datos • Capacidad de conexión: número de unidades conectadas al bus

2.2 Protocolos de transferencia

2.2.1 Síncronos En los buses síncronos existe un reloj que gobierna todas las actividades del bus, las cuales tienen lugar en un número

entero de ciclos de reloj. La transferencia propiamente dicha coincide con uno de los flancos del reloj (el de bajada en el ejemplo de la figura).

Page 255: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

32

R/W

ciclo-2 ciclo-3ciclo-1

Escritura Lectura Escritura

tiempo de mantenimientoDirección

Datos

Relojtiempo de establecimiento

En este caso hemos supuesto que el tiempo de acceso al slave es menor de un ciclo, es decir, en cada ciclo tiene lugar

una operación con memoria. Los buses síncronos son rápidos pero no tienen capacidad para conectar unidades con velocidad de transferencia baja. o no conocida a priori.

2.2.2 Asíncronos Los buses asíncronos utiliza un protocolo tipo handshaking para comunicarse el master con el slave. En el siguiente diagrama se presenta el diálogo de señales que tiene lugar durante una transacción de lectura de

memoria por parte de la CPU utilizando un protocolo asíncrono (handshaking) sobre un bus que multiplexa las direcciones y los datos sobre las mismas líneas (datos/dirección).

1) La CPU activa la señal de lectura al tiempo que coloca la dirección de la posición a leer en las líneas datos/dirección.

2) La Memoria detecta la activación de lectura, lee la dirección que hay en datos/dirección y activa la señal de reconocimiento para indicar que ha detectado la orden de lectura.

3) la CPU detecta la activación de reconocimiento y en respuesta desactiva la señal de lectura y libera las líneas de datos/dirección.

4) La memoria detecta que se ha desactivado la señal de lectura y desactiva la señal de reconocimiento para dar por terminado el reconocimiento de la orden de lectura.

5) Cuando la memoria ha accedido al dato y lo tiene preparado lo pone en datos/dirección y activa la señal de dato disponible.

6) La CPU detecta que dato disponible está activa y procede a leer los datos del bus y activar la línea de reconocimiento para indicar que ya dispone del dato.

7) La memoria detecta la señal de reconocimiento, desactiva dato disponible y libera las líneas de datos/dirección.

8) Finalmente, la CPU al detectar que se desactiva dato disponible, desactiva, a su vez, la señal de reconocimiento, indicando que la transmisión ha finalizado.

A partir de este momento se puede iniciar una nueva transacción.

Page 256: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

33

Tiempo de acceso a memoria

datodirección

dato disponible

datos/direcciones

lectura

reconocimiento

Un bus asíncrono trabaja igual que un par de máquinas de estados finitos que se comunican de tal forma que uno

de los autómatas no avanza hasta que sabe que el otro autómata ha alcanzado un determinado estado, es decir, los dos autómatas están coordinados.

Los buses asíncronos se escalan mejor con los cambios de tecnología y pueden admitir una mayor variedad de velocidades de respuesta en los dispositivos.

reconocimiento = 0

reconocimiento = 1

lectura = 0lectura = 1

reconocimiento = 1

lectura = 1 lectura = 0reconocimiento = 0

dirección --> datos/direcciónActivar petición lectura

dato disponible = 1dato disponible = 0

dato disponible = 0dato disponible = 1

Liberar datos/direcciónDesactivar lectura

Memoria <-- datos/direcciónActivar reconocimiento

Desactivar reconocimiento

dirección <-- datos/direcciónActivar reconocimiento

Desactivar reconocimientoMemoria --> datos/direcciónActivar dato disponible

Liberar datos/direcciónDesactivar dato disponible

CPU Memoria

2.2.3 Semisíncronos En los protocolos semisíncronos existe, como en los síncronos, un reloj que gobierna las transferencias en el bus. Sin

embargo, en este caso existe, además, una señal de espera (wait) que es activada por el slave cuando la transferencia va a durar más de un ciclo de reloj. De esta forma, los dispositivos rápidos operarán como en bus síncrono, mientras que los lentos alargarán la operación el número de ciclos que les sea necesario.

Page 257: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

34

Escriturasíncrona

Lecturasíncrona

Dirección

Datos

Reloj

Escrituraasíncrona

Lecturaasíncrona

Espera

2.2.4 Ciclo partido En los buses de ciclo partido la operación de lectura se divide en dos transacciones no continuas de acceso al bus. La

primera transacción es la de petición de lectura que realiza el master sobre el slave. Una vez realizada la petición el master abandona el bus. Cuando el slave dispone del dato leído, inicia un ciclo de bus actuando como master para enviar el dato al antiguo master, que ahora actúa como slave.

dato Slave Master

Dirección MasterDirección Slave

Slave SYNC

Master SYNC

dirección Master Slave

Dirección

Datos

3. Protocolos de arbitraje La demanda para utilizar el bus en un computador puede provenir de diferentes unidades, no sólo de la CPU. Por

ejemplo, si el computador tiene E/S por DMA, éste demandará el uso del bus cuando tenga el control de la operación con la memoria. Los procesadores de E/S necesitan acceder al bus no sólo para realizar las transferencias de datos por DMA, sino también para leer su programa de canal. Por supuesto, si el sistema es multiprocesador (más de una CPU con memoria compartida) los candidatos al uso del bus aumentan.

Para garantizar que en todo momento sólo una unidad acceda al bus, se utilizan los protocolos de arbitraje. Los protocolos de arbitraje organizan el uso compartido del bus, estableciendo prioridades cuando más de una unidad solicita su utilización y garantizando, sobretodo, que el acceso al bus es realizado por un solo master.

Existen dos grupos de protocolos de arbitraje, los centralizados y los distribuidos. En los primeros existe una unidad de arbitraje, el árbitro del bus, encargado de gestionar de forma centralizada el uso del bus. El árbitro puede ser una unidad físicamente independiente o estar integrado en otra unidad, por ejemplo, la CPU. Por el contrario, en los protocolos distribuidos no existe ninguna unidad especial para la gestión del bus. Esta se realiza de forma distribuida entre las unidades de acceso.

Examinaremos en los siguientes apartados diferentes protocolos de arbitraje, tanto centralizados como distribuidos.

3.1 Protocolo de encadenamiento (daisy chaining) de dos señales Es el protocolo centralizado más sencillo ya que utiliza sólo dos señales encadenadas, una de petición del bus y otra de concesión.

Page 258: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

35

El master que quiere acceder al bus activa la señal de petición (out) y los demás masters la propagan hasta el

árbitro. El árbitro activa la señal de concesión que es propagada por los masters que no solicitaron el acceso al bus. El master que recibe la señal de concesión y tiene una petición pendiente toma el control del bus. Si un master recibe una señal de petición mientras está accediendo al bus, bloquea su propagación al árbitro hasta que finalice la utilización del bus.

La prioridad viene determinada por la proximidad al árbitro.

ARBITRO

in outM1

out in

concesión

petición

BUS

in outM2

out in

in outMn

out in

3.2 Protocolo de encadenamiento (daisy chaining) de tres señales Utiliza una línea más que el protocolo anterior, la línea de ocupación. Además, la línea de petición no es encadenada sino compartida por todos los masters a través de una entrada al árbitro con capacidad de O-cableada. Cuando un master toma el control del bus activa la línea de ocupación. El árbitro sólo activa la línea de concesión cuando recibe una petición y la línea de ocupación está desactivada. Como en el caso anterior, si un master recibe la concesión y no ha solicitado el bus, transmite la señal al siguiente master. Un master toma el control del bus si tiene una petición local pendiente, la línea de ocupación está desactivada y recibe el flanco de subida de la señal de concesión.

ARBITRO

M1 M2 Mnconcesión

petición

ocupación

BUS

3.3 Protocolo de encadenamiento (daisy chaining) de cuatro señales Este protocolo permite simultanear el uso del bus por un master con el proceso de arbitraje para la selección del master siguiente. De esta forma, cuando el primer master abandona el bus, no se pierde tiempo en el arbitraje para el siguiente porque ya se ha hecho, pasando directamente el master seleccionado a realizar su transacción, al tiempo que se

Page 259: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

36

realiza la selección del siguiente master. Para ello se añade una cuarta línea al esquema anterior, la línea de reconocimiento.

ARBITRO

M1 M2 Mn concesión

petición

ocupación

reconocimiento

BUS

La línea de reconocimiento la activa un master que solicitó el bus (activó petición) y recibió la concesión pero la

línea de ocupación estaba activa (bus ocupado). Cuando el árbitro recibe la activación de reconocimiento inhibe su actuación, es decir, deja de atender la señal de petición y generar la de concesión. El master queda en espera para ocupar el bus tan pronto lo abandone su actual usuario, que lo hará desactivando la señal de ocupación. Cuando esto ocurre, el master ocupa el bus y desactiva la señal de reconocimiento, con lo que el arbitro recupera su actuación, procediendo a un nuevo arbitraje entre los master solicitantes, simultáneamente con la operación de transacción en el bus. En la siguiente figura hemos representado el diálogo de señales correspondiente a una ocupación del bus por el master M1, seguido por el arbitraje a favor de M2 mientras M1 realiza su transacción, y terminando con la ocupación del bus por M2 cuando M1 finaliza:

M2

M1 M2

M1 M2

reconocimiento

M1 M2

concesión

petición

ocupación

3.4 Protocolo con concesión por encuesta (polling) Este protocolo sustituye la línea encadenada de concesión del bus por un conjunto de líneas que permiten acceder de forma selectiva a la dirección asignada cada master sobre estas líneas.

ARBITROconcesión

petición

ocupación

BUS

M1 M2 Mnlog2n

Page 260: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

37

3.5 Protocolo con señales independientes También denominado en estrella, utiliza una línea de concesión específica para cada línea de petición independiente. Esta alternativa tienen la ventaja que el árbitro puede aplicar distintos algoritmos de decisión en caso de peticiones simultaneas (FIFO, prioridad fija, prioridad variable). Además, los retardos de propagación de las señales son pequeños en comparación con las anteriores alternativas. Tiene la desventaja del número elevado de líneas de arbitraje (una por posible master). El número de master queda limitado al número de líneas existentes.

ARBITRO

concesión-1

petición-1 concesión-2

petición-2 concesión-n

petición-n

BUS

M1

M2

Mn

3.6 Protocolo distribuido En estos protocolos la responsabilidad del arbitraje no reside una unidad independiente sino que se distribuye por los diferentes masters conectados al bus.

Bucle de prioridad

ocupación

P1 G1 P2 G2 P3 Rn Pn

R1 G1 R2 G2 R3 G3 Rn Gn

M1

M2

M3

Mn

Arbitro 1

Arbitro 2

Arbitro 3

Arbitro n

Arbitro-i concede el bus al master Mi activando Gi si:

• Mi ha activado su línea de petición de bus Ri, • La línea de ocupación está desactivada. • La línea de entrada de prioridad Pi-1 está activada

Si el master Mi no ha activado su línea de petición de bus Ri, el Arbitro-i activa la línea de salida de prioridad Pi. 4 Jerarquía de un bus

Los ordenadores antiguos utilizaban una topología de bus único, denominado bus del sistema o backplane, para conectar procesador, memoria y los módulos de E/S, tal como la que se muestra en la siguiente figura:

Page 261: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

38

Bus del sistema (único)Procesador Memoria

Red Vídeo

Sin embargo, cuando el número de dispositivos conectados a un bus aumenta disminuye su rendimiento. Esto es

debido a dos motivos fundamentales. El primero el aumento del retardo de propagación de las señales debido al aumento de longitud de los conductores que dan soporte al bus. Esto afecta especialmente a la propagación encadenada de la señal de concesión del bus. El segundo el incremento de demanda de acceso que se produce al aumentar el número de dispositivos conectados. Este exceso de dispositivos puede crear un cuello de botella que haga que el rendimiento del sistema se degrade por la espera inútil que se origina cuando tienen que realizar transferencias.

Por otra parte, las diferencias en la velocidad de operación de los dispositivos conectados también repercute negativamente en el rendimiento de un bus. En efecto, los dispositivos lentos pueden ocasionar retrasos importantes a los rápidos. Por ejemplo, supongamos que un procesador que opera a 200 MHz (Tc = 5 ns, 100 MIPS) y con un CPI = 2. se conecta a un único bus compartido por la cache, la memoria y los dispositivos de E/S, entre ellos un disco con 10 ms de tiempo de acceso y 15 MB/seg de velocidad de transferencia. Durante la transferencia de disco a memoria de un archivo de 512 KB se emplearán 10 ms + 512 KB/ 15.000 KB/s = 44,1 ms. En este tiempo la CPU podría haber ejecutado 0,0441 * 100 * 106 = 4,41 millones de instrucciones.

Para evitar la caída de rendimiento, el sistema de buses se jerarquiza, apareciendo dos buses más: el bus local, y el bus de E/S.

bus del sistema

Procesador Memoria

Bus de E/S o bus de expansión

Adaptadorde bus

Cachebus local

ImpresoraRedVídeo Monitor

El bus local es de longitud pequeña, de alta velocidad, y adaptado a la arquitectura particular del sistema para maximizar el ancho de banda entre el procesador y la caché, por eso suele ser un bus propietario. Este bus aísla el tráfico procesador-caché del resto de transferencias del sistema.

El bus de E/S o de expansión reduce el tráfico en el bus del sistema, de manera que el procesador puede acceder a memoria en un fallo de caché mientras realiza una operación de entrada/salida.

Page 262: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

39

Los buses de expansión son buses estándar o abiertos (ISA, EISA, PCI, etc.) es decir, independientes del computador y con unas características bien definidas en el correspondiente documento de normalización. La existencia de estos buses permite diseñar una amplia gama de controladores de periféricos compatibles. Para conectar los buses del sistema y de expansión se requiere un Adaptador de Bus, dispositivo que permite adaptar las distintas propiedades de ambos buses: velocidad, carácter síncrono o asíncrono, multiplexación, etc. El proceso de jerarquización se puede complicar más con otras topologías que den cabida a dispositivos de distinta velocidad. De esta forma se equilibra mejor el tráfico de información en sistemas que operan con muchos dispositivos conectados. En la figura siguiente se muestra una topología jerárquica en la que se contempla un bus de alta velocidad del que cuelgan dos buses, uno de expansión para dispositivos rápidos y otro de E/S para dispositivos lentos.

bus del sistema

Procesador Memoria

Bus de alta velocidad

Adaptadorde bus

Cachebus local

RedVídeo Monitor Adaptadorde bus

Adaptadorde bus

RedRedRed

Bus de expansiónBus de E/S

5. Buses normalizados

Las especificaciones de un bus estándar están perfectamente definidas en un documento de estandarización respaldado por alguna sociedad de prestigio en el área (IEEE, etc.). En las especificaciones se distinguen varios niveles:

• Nivel mecánico, en el que se recoge la forma y tamaño de los conectores, el número de contactos por conector y el número de dispositivos que soporta el bus.

Page 263: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

40

• Nivel eléctrico, en el que se especifican los valores de tensión de las diferentes señales, polarización, etc.

• Nivel lógico, especifica la función de cada señal del bus: direcciones, datos, control, etc.

• Nivel de temporización o sincronismo, que especifica el protocolo de transferencia empleado

• Nivel de arbitraje, especifica el protocolo de arbitraje que utiliza el bus.

5.1 Bus PCI (Peripheral Component Interconnect)

El bus PCI es un bus de ancho de banda elevado e independiente del procesador. El estándar actual permite el uso de

hasta 64 líneas de datos a 66 MHz, para una velocidad de transferencia de 528 MBytes/s, o 4,224 Gbps. El PCI está diseñado para permitir una cierta variedad de configuraciones basadas en microprocesadores, incluyendo sistemas con uno o varios procesadores. Utiliza temporízación síncrona y un esquema de arbitraje centralizado.

5.1.1 Estructura El bus PCI puede configurarse como un bus de 32 o 64 bits. La siguiente tabla define las líneas más importantes

obligatorias en el PCI: CLK (reloj) Señal de reloj que es muestreada en el flanco de subida. RST# (reset) Hace que todos los registros y señales específicas del PCI pasen al estado inicial. Señales de direcciones y datos AD[31:0] Incluye 32 líneas para datos y direcciones multiplexadas en el tiempo. C/BE[3:0]# Se utilizan para interpretar y validar las líneas de datos y direcciones. Señales de control de interfaz FRAME# Activada por el master para indicar el comienzo y la duración de una transferencia. Las activa al

comienzo y la desactiva al final de la fase de datos. IRDY# Señal de master preparado (Initiator Ready). La proporciona el master actual del bus (el iniciador de

la transacción). Durante una lectura, indica que el master está preparado para aceptar datos; durante una escritura indica que el dato válido está en AD.

TRDY# Señal de slave preparado (Target Ready). La activa el slave al principio de la transferencia, y la

desactiva cuando no puede completar la transferencia en un solo ciclo de reloj DEVSEL# Señal de slave (dispositivo) seleccionado (Device Select). Activada por el slave cuando ha reconocido

su dirección. Señales de arbitraje REO# Indica al árbitro que el dispositivo correspondiente solicita utilizar el bus. Es una línea punto-a-punto

específica para cada dispositivo. GNT# Indica al dispositivo que el árbitro le ha cedido el acceso al bus. Es una línea punto-a-punto específica

para cada dispositivo.

5.1.2 Ordenes

Page 264: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

41

La actividad del bus consiste en transferencias entre dos elementos, denominándose maestro al que inicia la transacción. Cuando un maestro del bus adquiere el control del mismo, determina el tipo de transferencia que se producirá a continuación. Los tipos, entre otros son los siguientes:

• Reconocimiento de interrupción • Lectura de E/S • Escritura en E/S • Lectura de memoria • Escritura en memoria

5.1.3 Transferencia de datos Toda transferencia de datos en el bus PCI es una transacción única, que consta de una fase de direccionamiento y una

o más fases de datos. La siguiente figura muestra la temporización de una operación de lectura. Todos los eventos se sincronizan en las transiciones de bajada del reloj, cosa que sucede a la mitad de cada ciclo de reloj.

fase dedatos

fase dedatos

fase dedirección

i

h

g

f

e

d

c

b

a

DEVSEL

TRDY

IRDY

C/BE

AD

FRAME

CLK

1 2 3 4 5 6 7 8

direccion dato-1 dato-2 dato-3

lectura byte activo byte activo byte activo

fase dedatos

Los dispositivos interpretan las señales del bus en los flancos de subida, al comienzo del ciclo. A continuación, se

describen los eventos significativos señalados en el diagrama: a) Una vez que el master ha obtenido el control del bus, inicia la transacción:

• activando FRAME, que permanece activa hasta la última fase de datos • situando la dirección de inicio en el bus de direcciones • situando la orden de lectura en las líneas C/BE.

b) El slave reconoce su dirección en las líneas AD al comienzo del ciclo de reloj 2. c) El master deja libre las líneas AD del bus y cambia la información de las líneas C/BE para indicar qué líneas AD

se utilizan para transportar datos (de 1 a 4 bytes). También activa IRDY para indicar que está preparado para recibir el primer dato (*).

Page 265: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

42

d) El slave activa DEVSEL para indicar que ha reconocido su dirección. Después sitúa el dato solicitado en las líneas

AD y activa TRDY para indicar que hay un dato válido en el bus. e) El master lee el dato al comienzo del ciclo de reloj 4 y cambia las líneas C/BE según se necesite para la próxima

lectura. f) En este ejemplo el slave necesita algún tiempo para preparar el segundo bloque de datos para la transmisión. Por

tanto desactiva TRDY para señalar al master que no proporcionará un nuevo dato en el próximo ciclo. En consecuencia el master no lee las líneas de datos al comienzo del quinto ciclo de reloj y no cambia la señal C/BE durante ese ciclo. El bloque de datos es leído al comienzo del ciclo de reloj 6.

g) Durante el ciclo 6 el slave sitúa el tercer dato en el bus. No obstante, en este ejemplo, el master todavía no está

preparado para leer el dato. Para indicarlo, desactiva IRDY. Esto hará que el slave mantenga el tercer dato en el bus durante un ciclo de reloj extra.

h) El master sabe que el tercer dato es el último, y por eso desactiva FRAME para indicárselo al slave. Además

activa IRDY para indicar que está listo para completar esa transferencia. i) El master desactiva IRDY, haciendo que el bus vuelva a estar libre, y el slave desactiva TRDY y DEVSEL. (*) Nota: En todas las líneas que pueden ser activadas por más de un dispositivo se necesita un ciclo de cambio (indicado por las dos flechas circulares) para que pueda ser utilizado por el dispositivo de lectura.

5.1.4 Arbitraje El bus PCI utiliza un esquema de arbitraje centralizado síncrono, en el que cada maestro tiene una señal propia de

petición (REQ) y cesión (GNT) del bus. Estas líneas se conectan a un árbitro central. La especificación PCI no indica un algoritmo particular de arbitraje. El árbitro puede utilizar un procedimiento de primero en llegar primero en servirse, un procedimiento de cesión cíclica (round-robin), o cualquier clase de esquema de prioridad. El maestro del PCI establece, para cada transferencia que desee hacer, si tras la fase de dirección sigue una o más fases de datos consecutivas.

La siguiente figura es un ejemplo en el que se arbitra a cuál de los dispositivos A y B se cede el bus. Se produce la siguiente secuencia:

Page 266: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

43

f g

REQ#-B

REQ#-A

e

c

a

acceso A

b

GNT#-A

CLK

1 2 3 4 5 6 7

GNT#-B

FRAME

d

IRDY#

TRDY#

Dirección Dato Dirección Dato

acceso B

AD

a) En algún momento anterior al comienzo del ciclo de reloj 1, A ha activado su señal REQ. El árbitro muestrea esa señal al comienzo del ciclo de reloj 1.

b) Durante el ciclo de reloj 1, B solicita el uso del bus activando su señal REQ. c) Al mismo tiempo, el árbitro activa GNT-A para ceder el acceso al bus a A. d) El maestro del bus A muestrea GNT-A al comienzo del cielo de reloj 2 y conoce que se le ha cedido el acceso al

bus. Además, encuentra IRDY y TRDY desactivados, indicando que el bus está libre. En consecuencia, activa FRAME y coloca la información de dirección en el bus de direcciones, y la orden correspondiente en las líneas C/BE. Además mantiene activa REQ-A, puesto que tiene que realizar otra transferencia después de la actual.

e) El árbitro del bus muestrea todas las líneas GNT al comienzo del ciclo 3, y toma la decisión de ceder el bus a B

para la siguiente transacción. Entonces activa GNT-B y desactiva GNT-A. B no podrá utilizar el bus hasta que éste no vuelva a estar libre.

f) A desactiva FRAME para indicar que la última transferencia de datos está en marcha. Pone los datos en el bus de

datos y se lo indica al dispositivo destino con IRDY. El dispositivo lee el dato al comienzo del siguiente ciclo de reloj.

g) Al comienzo del ciclo 5, B encuentra IRDY y FRAME desactivados y, por consiguiente, puede tomar el control del

bus activando FRAME. Además, desactiva su línea REQ, puesto que sólo deseaba realizar una transferencia.

Hay que resaltar que el arbitraje se produce al mismo tiempo que el maestro actual del bus está realizando su transferencia de datos. Por consiguiente, no se pierden ciclos de bus en realizar el arbitraje. Esto se conoce como arbitraje oculto o solapado (hidden arbitration). 5.2 Bus USB (Universal Serial Bus)

Page 267: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

44

El bus USB (Universal Serial Bus) es un bus normalizado para la conexión de periféricos, desarrollado por empresas de informática y telecomunicaciones (7 compañías: Compaq, DEC, IBM, Intel, Microsoft, NEC y Northern Telecom). Permite conectar de forma sencilla dispositivos periféricos al computador, sin necesidad de reiniciarlo ni de configurar el sistema. Se pueden conectar hasta 127 dispositivos, con una longitud máxima de cable de 5 metros para cada uno, con lo que una conexión en cadena permitiría que el último dispositivo estuviese a 635 metros del ordenador.

Trabaja en dos modos, a baja velocidad, 1,5 Mbps, para dispositivos lentos como teclados y ratones, y a alta velocidad, 12 Mbps, para dispositivos rápidos, como CD-ROM , módems, etc. Utiliza un cable de cuatro hilos, dos para datos y dos para alimentación. El bus USB está organizado en una estructura de árbol descendente, con unos elementos especiales, llamados hubs que encaminan las señales desde un dispositivo al host o viceversa. En la raíz está el host, que es el interfaz entre el bus USB y el bus del ordenador. De él cuelgan los dispositivos USB y los hubs, que también son dispositivos USB. A un hub se puede conectar uno o más dispositivos, que a su vez pueden ser otros hubs.

Teclado

TeléfonoScanerMicTecladoRatón Hub

Monitor Host(CPU)

Cuando se conecta un dispositivo, se detecta la diferencia de tensión en la red USB y procede a determinar las características del dispositivo (vendedor, funcionalidad, ancho de banda requerido, etc.). El host le asigna una dirección única ID para diferenciarlo del resto de los dispositivos de la red USB. Después el SO carga los drivers del dispositivo, solicitándolos al usuario si es necesario. Cuando se desconecta el dispositivo, el host lo detecta y descarga los drivers. El host USB tiene, entre otras, las siguientes funciones:

Detectar la conexión de nuevos dispositivos al sistema . Detectar la desconexión de dispositivos previamente conectados, Enumerar y configurar los dispositivos conectados al sistema. Administrar y controlar el flujo de datos entre el host y los dispositivos USB. Administrar y controlar las transferencias síncronas y asíncronas de información. Recoger y resumir estadísticas de actividad y estado de los elementos del sistema. Proporcionar energía eléctrica a algunos dispositivos del computador (teclado, ratón, etc.).

Un puerto serie es capaz de transmitir hasta 112,5 KB/s y un puerto paralelo entre 600KB/s y 15MB/s, sin embargo la

velocidad de transferencia de un puerto USB está entre 1,5MB/s y 12MB/s. El FIREWIRE (IEEE 1394), maneja transferencias entre 100MB/s y 400MB/s, que permite conectar hasta 63 dispositivos y un cable de 4.5 metros por dispositivo, permitiendo al igual que el USB la conexión en operación.

Uno de los problemas del puerto USB es que suministra solamente 500 miliamperios de corriente para los dispositivos

conectados, que aunque es suficiente para la mayoría de los dispositivos que se conectan a este puerto, resulta pequeña cuando conectamos varios dispositivos sin fuente de alimentación propia.

Otra de las funciones importantes de los hubs es la de aislar a los puertos de baja velocidad de las transferencias de alta velocidad, proceso sin el cual todos los dispositivos de baja velocidad conectados al bus entrarían en colapso.

La protección de los dispositivos lentos de los rápidos ha sido siempre un problema importante en el diseño redes

mixtas, como es USB. El hub está compuesto por dos unidades principales: el Controlador y el Repetidor. El Repetidor tiene la función de analizar, corregir y retransmitir la información que llega al hub hacia los puertos del

mismo. Contiene una memoria de varios registros para sus funciones.

Page 268: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

45

El Controlador es una pequeña CPU de supervisión de las múltiples funciones realiza un hub.

Todos los dispositivos conectados acceden al canal o medio para transmitir sus datos siguiendo un protocolo administración del host análogo al de token ring, que consecutivamente va dando la posibilidad de transmisión a cada periférico.

5.2.1 Arquitectura En la siguiente figura aparece un diagrama de bloques de un microcontrolador USB:

CP U

DPO DMO

Tran sce ive r

SIE(Ser ia l Bu s

In ter face Engine)

FIU(Funct ion

In ter face Unit )

FIFOs

BusTransmitReceive

BusDatos

Transceiver El cable USB dispone de solo cuatro hilos: Vbus, D+, D- y GND. La información y los datos van por los hilos D+ y D-, con dos velocidades: 12Mbps o 1.5Mbps. El Transceiver, incorporado dentro del chip controlador, constituye la interfaz de un dispositivo externo con el resto del sistema.

SIE (Serial Interface Engine) Tiene la función de serializar y paralelizar las transmisiones, además maneja los

protocolos de comunicación, las secuencias de paquetes, el control CRC y la codificación NRZI.

FIU (Function Interface Unit) Administra los datos que son transmitidos y recibidos por el cable USB. Se basa y apoya en el contenido y estado de las memorias FIFOs. Controla los estados de las transacciones, los buffer FIFO, y solicita atención para diversas acciones a través de interrupciones.

FIFOs Los controladores típicos disponen de un total de 8 buffer tipo FIFO, cuatro destinadas a la transmisión y

cuatro a la recepción de datos. Tanto para la transmisión como para la recepción, los buffer soportan cuatro tareas o funciones, numeradas de 0 a 3.

5.2.2 Protocolo Toda transferencia de datos o transacción que emplee el bus, involucra al menos tres paquetes de datos. Cada

transacción se da cuando el host decide qué dispositivo hará uso del bus. Para ello envía un paquete al dispositivo específico. Cada dispositivo tiene un número de identificación, asignado por el Controlador de host cuando arranca el computador o cuando un se conecta un dispositivo nuevo al sistema. De esta forma, cada periférico puede determinar si es el receptor de un paquete de datos. Técnicamente un paquete de datos se denomina Token Packet.

Page 269: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

46

Este protocolo tiene un sistema muy eficiente de recuperación de errores, empleando uno de los modelos más seguros como es el CRC (Código de Redundancia Cíclica). Y puede estar implementado al nivel de software y/o hardware de manera configurable.

5.2.3 Modos de transmisión

Asíncrona

Síncrona

Bulk

La transmisión Bulk, es una comunicación no periódica, utilizada por transferencias que requieren todo el ancho de banda disponible o en su defecto son retrasadas hasta que el ancho de banda completo esté disponible. Aparecen en el movimientos de imágenes o vídeo, donde se requiere una gran capacidad de transferencia en poco tiempo. USB permite dos tipos más de transferencias de datos:

Control Es un tipo de comunicación exclusivamente entre el host y el dispositivo que permite configurar este último. Sus

paquetes de datos son de 8, 16, 32 o 64 bytes, dependiendo de la velocidad del dispositivo que se pretende controlar.

Interrupción Este tipo de comunicación está disponible para aquellos dispositivos que demandan mover muy poca información

y con poca frecuencia. Su paquete de datos tiene las mismas dimensiones que el de las transmisiones de control. 5.3 Bus SCSI (Small Computer System Iterface)

El bus SCSI se utiliza en ordenadores personales y en muchas estaciones de trabajo. Se trata de una interfaz paralela, con 8, 16 o 32 líneas de datos. Cada dispositivo SCSI tiene dos conectores, uno de entrada y otro de salida, conectándose en cadena (daisy chain). Todos los dispositivos funcionan independientemente, y pueden intercambiar datos entre ellos, igual que con el computador. Por ejemplo, un disco duro puede guardar su contenido en una cinta sin que tenga que intervenir el procesador. Los datos se transfieren mediante paquetes, que componen un mensaje.

Versiones La especificación original SCSI, la SCSI-1, se desarrolló en los años 80. SCSI-1 utiliza 8 líneas de datos y opera a una frecuencia de reloj de 5 MHz, o a una velocidad de datos de 5 MBytes/s. SCSI-1 permite conectar al computador hasta siete dispositivos. En 1991 se introdujo SCSI-2. Los cambios más notables fueron la expansión opcional a 16 o 32 líneas de datos y el aumento de la frecuencia de reloj a 10 MHz. Como resultado se tiene una velocidad de datos máxima de 20 o 40 Mbytes/s.

Fases Todos los intercambios en el bus SCSI se producen entre un dispositivo iniciador y un dispositivo seleccionado. Normalmente, el computador es el iniciador y un controlador periférico el dispositivo seleccionado, pero algunos dispositivos pueden asumir los dos papeles. En cualquier caso, toda la actividad del bus se produce en una secuencia de fases:

• Bus Libre: ningún dispositivo está utilizando el bus, está disponible. • Arbitraje: determina el dispositivo que toma control del bus, de manera que pueda iniciar o reanudar una operación

de E/S. • Selección: de un dispositivo para realizar una operación, por ejemplo, una orden de lectura o escritura. • Reselección: permite que el dispositivo seleccionado se vuelva a conectar al iniciador para reanudar una operación

iniciada previamente, pero suspendida por el dispositivo.

Page 270: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

47

• Orden: el dispositivo solicita una orden de información al iniciador. • Datos: el dispositivo solicita la transferencia de un dato hacia el iniciador (entrada de datos, Data In) o viceversa

(salida de datos, Data Out). • Estado: el dispositivo solicita la información de estado desde al iniciador. • Mensaje: el dispositivo solicita la transferencia de uno o más mensajes desde el iniciador (entrada de mensaje,

Message In) o viceversa (salida de mensaje, Message Out). La siguiente figura ilustra el orden en que se producen las fases del bus SCSI:

Condición deencendido o

inicio

Fase de bus libre

Fase de arbitraje

Fase deselección oreselección

Fase deorden, datos,

estado y mensaje

Después de conectarse el sistema, o después de un reinicio, el bus pasa a la fase de bus libre. A ésta le sigue la fase de arbitraje, que da lugar a que un dispositivo tome el control. Si el arbitraje falla, el bus vuelve a la fase de bus libre. Cuando el arbitraje termina con éxito, el bus pasa a una fase de selección o reselección, en la que se designa un iniciador y un dispositivo seleccionado para realizar la transferencia. Después de determinados los dos dispositivos, se producirá una o más fases de transferencia de información entre ambos (fases de orden, datos, estado y mensaje). La fase final de transferencia de información es normalmente la fase de entrada de mensaje, en la que un mensaje de desconexión o de orden completa se transfiere al iniciador, seguida de una fase de bus libre. Una característica importante del bus SCSI es la capacidad de reselección. Si una orden enviada necesita algún tiempo para completarse, el dispositivo seleccionado puede liberar el bus y volverse a conectar al iniciador más tarde. Por ejemplo, el computador puede enviar una orden a un dispositivo de disco para que dé formato al disco, y el dispositivo realiza la operación sin necesidad de acceder al bus. Líneas de señal BSY: Bus ocupado, activada por el iniciador o dispositivo seleccionado SEL: Selección de un dispositivo por el iniciador o del iniciador por un dispositivo C/D: Indicación por el dispositivo si el bus de datos lleva información de control (orden, estado o mensaje) o datos I/O: Control por el dispositivo de la dirección del movimiento de datos en el bus de datos. REQ: Petición por el dispositivo de una transferencia de información o datos. ACK: Reconocimiento por el iniciador de la señal de REQ del dispositivo. DB(7-0): Bus de datos Operación (temporización)

Para aclarar el papel de cada señal en las distintas fases (estados) del bus, analizaremos una operación de lectura que transfiere datos desde un dispositivo periférico al iniciador (computador). Esta sigue las siguientes fases:

Page 271: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

48

Arbitraje Selección Orden Transferencia de datos Estado Mensaje

El arbitraje se realiza con la señal BSY y las 8 señales de datos, la 7 asignada al computador, y las otras 7 asignadas a otros tantos dispositivos (7 es el número máximo de dispositivos que se pueden conectar al SCSI-1). El dispositivo que quiere acceder al bus activa BSY y su señal de datos asociada. Entre las señales de datos existe una prioridad, siendo la 7 la más prioritaria y la 0 la menos prioritaria. Cada dispositivo conoce si puede acceder al bus leyendo las líneas de datos. Si no hay otra activa con mayor prioridad accederá al bus. En nuestro caso es la CPU quien accede (máxima prioridad) para realizar la lectura.

El dispositivo que ha ganado el arbitraje se convierte en el iniciador y comienza la fase de selección del dispositivo con el que quiere realizar la transacción. Para eso activa la señal SEL y las dos líneas de datos: la suya propia y la del dispositivo con el que quiere conectar. El dispositivo reconoce su identificación activando la señal BSY que ha desactivado previamente el iniciador después de su uso en el arbitraje.

Después se pasa a la fase de orden en la que el iniciador transmite al dispositivo en forma asíncrona el conjunto de bytes que componen la orden a ejecutar (lectura en nuestro caso). El sincronismo se realiza con la ayuda de las señales conocidas REQ (controlada por el dispositivo y leída por el iniciador) y ACK (controlada por el iniciador y leída por el dispositivo).

Una vez que el dispositivo conoce que es una orden de lectura se pasa a la fase de transmisión de datos que de nuevo se realiza byte a byte de forma asíncrona con la ayuda de REQ y ACK..

Finalizada la transmisión el dispositivo pasa el bus a la fase de estado en la que transmite un byte en el que se codifica que la transmisión se ha realizado con éxito.

Finalmente el dispositivo hace pasar al bus a la fase de mensaje en la que se transmite un byte con el mensaje de orden completa.

El diagrama de tiempos para la orden de lectura con las principales señales implicadas sería el siguiente:

byte orden byte orden gyte datos byte datos byte estado orden completa Arbitraje Selección Orden Datos (entrada) Estado Mensaje

BSY SEL

C/D I/O REQ

ACK DB(7-0)

Mensajes • Orden completa • Desconexión

Page 272: Introducción a la estructura de computadores

Estructura de Computadores, Facultad de Informática, UCM, Curso 04-05

49

• Error detectado en el iniciador • Abortar • Transferencia síncrona de datos