Está en la página 1de 647

William Stallings

Organización y Arquitectura
de Computadores

Capítulo 1
Introducción
Arquitectura y organización 1

 La arquitectura son los atributos de un sistema que


son visibles para un programador.
Conjunto de instrucciones, número de bits usados
para represrentar datos, mecanismos de E/S,
técnicas para direccionamiento de memoria.
Ejemplo: ¿Hay una instrucción de multiplicar?
 La organización se refiere a cómo se implementan
las características.
Señales de control, interfaces, tecnología de
memoria.
Ejemplo: ¿Hay una unidad de multiplicar o se hace
por sumas repetidas?
Arquitectura y organización 2

Toda la familia Intel x86 comparte la misma


arquitectura básica.
La familia de IBM Sistema/370 comparte la
misma arquitectura básica.

Esto proporciona una compatibilidad de códigos.


Al menos al revés.
La organización varía en las diferentes versiones.
Estructura y funcionamiento

La estructura es el modo en que los


componentes están interrelacionados.
El funcionamiento es la operación de cada
componente individual como parte de la
estructura.
Funcionamiento

Las funciones del computador son:


Procesamiento de datos
Almacenamiento de datos
Transferencia de datos
Control
Visión funcional

Visión funcional de un computador


Recurso de
almacena-
miento de
datos

Sistema de
transferen- Mecanismo
cia de de control
datos

Recurso de
procesa-
miento de
datos
Operaciones (1)

Transferencia de datos
Ejemplo: del teclado a la pantalla
Recurso de
almacena-
miento de
datos

Sistema de
transferen- Mecanismo
cia de de control
datos

Recurso de
procesa-
miento de
datos
Operaciones (2)

Almacenamiento
Ejemplo: descarga de Internet al disco
Recurso de
almacena-
miento de
datos

Sistema de
transferen- Mecanismo
cia de de control
datos

Recurso de
procesa-
miento de
datos
Operación (3)
Procesamiento desde/al almacén
Ejemplo: actualización de la declaración de un banco

Recurso de
almacena-
miento de
datos

Sistema de
transferen- Mecanismo
cia de de control
datos

Recurso de
procesa-
miento de
datos
Operación (4)

 Procesamiento desde/al almacén a la E/S


Ejemplo: Impresión de la declaración de un banco
Recurso de
almacena-
miento de
datos

Sistema de
transferen- Mecanismo
cia de de control
datos

Recurso de
procesa-
miento de
datos
Estructura del nivel superior

Secundarios Computador

Unidad
central de Memoria
procesa- principal
miento
Computador
Sistemas de
interconexión

Entrada/
salida
Líneas de
comunicación
Estructura de la CPU

CPU

Computador Unidad
Registros aritmético-
E/S lógica
Bus del
CPU
sistema
Interconexión
Memoria interna de la
CPU

Unidad de
control
Estructura de la unidad de
control

Unidad de control

CPU
Lógica
ALU secuencial
Unidad
Bus de
interno control
Registros y
Registros decodificadores de
la unidad de control

Memoria
de control
Esquema del libro (1)

Evolución y prestaciones del computador


Estructuras de interconexión del computador
Memoria interna
Memoria externa
Entrada/Salida
Apoyo al sistema operativo
Aritmética de computadores
Repertorios de instrucciones
Esquema del libro (2)

Estructura y funcionamiento de la CPU


Computadores de repertorio reducido de
instrucciones
Procesadores superscalares
Funcionamiento de la unidad de control
Control microprogramado
Multiprocesadores y procesamiento de vectores
Lógica digital (Apéndice)
Internet y recursos web
de este libro

http://williamstallings.com/COA5e.html
Enlaces con sitios de interés.
Enlaces con sitios que realizan cursos con este libro.
Lista de erratas del libro.
Information sobre otros libros de W. Stallings.
Internet y recursos web
para buscar

 Página principal de WWW Computer Arquitecture


CPU Info Center
ACM Special Interest Group on Computer
Arquitecture
IEEE Technical Committee on Computer
Arquitecture
Intel Technology Journal
Sitios de los fabricantes
Intel, IBM, etc.
Grupos de noticias USENET

comp.arch
comp.arch.arithmetic
comp.arch.storage
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 2
Evolución y prestaciones de los
computadores
ENIAC: los orígenes

Electronic Numerical Integrator And Computer


Eckert y Mauchly
Universidad de Pennsylvania
Tablas de tiro para armas
Empezó en 1943
Terminó en 1946
Demasiado tarde para la guerra
Se usó hasta 1955
ENIAC: detalles

Máquina decimal (no binaria)


20 acumuladores de 10 dígitos
Programada manualmente mediante
acumuladores
18.000 tubos de vacío
30 toneladas
1.500 pies cuadrados
140 kilowatios de potencia
5.000 sumas por segundo
Von Neumann/Turing

 Concepto del programa-almacenando


 Memoria principal que almacena datos y programas
 ALU que opera con datos binarios
 Unidad de control que interpreta las instrucciones
en memoria y las ejecuta
 Equipo de entrada-salida dirigido por la unidad de
control
 Instituto para Estudios Avanzados del IAS
 Completado en 1952
Estructura de la máquina de
von Nuemann

Unidad aritético-lógica

Equipos de E/S
Memoria
principal

Unidad de control
de programa
IAS: detalles
 1.000 palabras de 40 bits
Números binarios
2 instrucciones de 20 bits
 Conjunto de registros (almacenamiento en la
CPU)
Registro temporal de memoria
Registro de dirección de memoria
Registro de instrucción
Registro temporal de instrucción
Contador de programa
Acumulador
Multiplicador cociente
Estructura de IAS: detalle
Unidad central de procesamiento
Unidad aritmético-lógica

Acumulador MQ

Circuitos aritmético-lógicos

Equipo de MBR
E/S Instrucciones
y datos Memoria
principal

IBR PC
MAR
IR Circuitos
de control

Direcciones
Unidad de control de programa
Computadores comerciales

1947: Eckert-Mauchly Computer Corporation


UNIVAC I (Universal Automatic Computer)
Cálculos de la oficina del censo de EE.UU. en
1950
Formó parte de la Sperry-Rand Corporation
Finales de los 50: UNIVAC II
Más rápido
Más memoria
IBM

Equipos de procesamiento con tarjetas


perforadas
1953: el 701
Primer computador con programas almacenados de
IBM
Aplicaciones científicas
1955: el 702
Aplicaciones de gestión
Primeros de una serie de computadores
700/7000
Transistores

Sustituyen a los tubos de vacío


Más pequeños
Más baratos
Disipan menos el calor
Dispositivos de estado sólido
Hechos con silicio
Inventados en 1947 en los Laboratorios Bell
William Shockley y colaboradores
Computadores basados en
transistores

Máquinas de segunda generación


NCR y RCA produjeron pequeñas máquinas de
transistores
IBM 7000
DEC: 1957
Fabricó el PDP-1
Microelectrónica

Literalmente significa: “pequeña electrónica”


Un computador está formado por puertas,
celdas de memoria e interconexiones.
Se pueden fabricar a partir de un semiconductor
Ejemplo: oblea de silicio
Generaciones de computadores

 Tubo de vacío: 1946-1957


 Transistor: 1958-1964
 Integración a pequeña escala: de 1965 en adelante
Más de 100 componentes en un chip
 Integración a media escala: de 1971 en adelante
100-3.000 componentes por chip
 Integración a gran escala: 1971-1977
3.000 - 100.000 componentes por chip
 Integración a muy gran escala: de 1978 hasta la fecha
100.000 - 100 millones de componentes por chip
 Integración a ultra gran escala
Unos 100 millones de componentes por chip
La ley de Moore
 Se incrementa la densidad de los componenetes del chip.
 Gordon Moore: cofundador de Intel.
 El número de transistores de un chip se duplica cada año.
 Desde los años 70 el desarrollo se ralentiza un poco.
El número de transistores se duplica cada 18 meses.
 El precio del chip permanece casi invariable.
 Una alta densidad de encapsulado conlleva una menor
interconexión eléctrica, lo que supone un mayor rendimiento.
 La reducción del tamaño incrementa la flexibilidad.
 Reducción de las necesidades de potencia y de refrigeración.
 La reducción de las interconexiones incrementa la
confiabilidad.
Evolución del número de
transistores en los procesadores
Series de IBM 360

 1964
 Sustituidos por la serie 7000 (y no compatibles con
ella)
 Primera “familia” planeada de computadores
Conjunto de instrucciones similar o idéntico
E/S similares o idénticas
Velocidad creciente
Número creciente de puertos de E/S (Ejemplo: más
terminales)
Tamaño de memoria creciente
Coste creciente
 Estrucutra de conmutadores multiplexados
DEC PDP-8

 1964
 Primer minicomputador (¡en honor a la minifalda!)
 No necesita una habitación con aire acondicionado
 Lo bastante pequeño para colocarlo en una mesa
de laboratorio
 16.000 dólares
100k dólares+ para IBM 360
 Aplicaciones incrustadas y OEM
 ESTRUCURA DE BUS
Estructura de bus PDP-8

Controlador Memoria Módulo Módulo


CPU
de consola principal de E/S de E/S

OMNIBUS
Memoria semiconductora

1970
Fairchild
Tamaño de un núcleo de ferrita
Ejemplo: 1 bit de almacenamietno de núcleo
magnético
Tiene 256 bits
Lectura no destructiva
Mucho más rápida que el núcleo
La capacidad se duplica aproximadamente cada
año
Intel

1971: 4004
Primer microprocesador
Todos los componentes de la CPU en un solo chip
4 bits
En 1972 evoluciona al 8008
8 bits
Ambos diseñados para aplicaciones específicas
1974: 8080
Primer microprocesador de Intel de uso genérico
Aceleración

Canalización
Cache integrado en la tarjeta
Cache L1 y L2 integrados en la tarjeta
Predicción de ramificación
Análisis de flujo de datos
Ejecución especulativa
Diseño para conseguir mejores
prestaciones

Incremento de la velocidad del procesador


Incremento de la capacidad de la memoria
La velocidad del procesador supera la velocidad
de la memoria
Características de DRAM y del
procesador

Densidad de RAM dinámica

Velocidad del procesador

Velocidad de RAM dinámica


Tendencias en el uso de DRAM
Supercomputadores

Servidores

Estaciones
Número de DRAMS

de trabajo

PCs grandes

PCs pequeños

DRAM
tamaño

Organizaciones
predominantes
Soluciones

Incrementar el número de bits recuperados de


una vez
Hacer DRAM “más ancho” en vez de “más profundo”
Cambiar la interfaz DRAM
Cache
Reducir la frecuencia del acceso a la memoria
Cache más compleja y cache en chip
Incrementar el ancho de la banda
Buses de alta velociadad
Jerarquía de los buses
Recursos en Internet

http://www.intel.com/
Buscar Intel Museum
http://www.ibm.com
http://www.dec.com
Instituto Charles Babbage
PowerPC
Intel Developer Home
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 3
Buses del sistema
Concepto del programa

Los sistemas cableados no son flexibles.


El harware de uso general puede realizar
distintas funciones, según las señales de
control aplicadas.
En lugar de configurar el hardware, se
proporciona un nuevo conjunto de señales de
control.
¿Qué es un programa?

Una secuencia de pasos.


Para cada paso, se realiza una operación
aritmética o lógica.
Para cada operación, se necesita un nuevo
conjunto de señales de control.
Funcionamiento de la unidad de
control

Se proporciona un único código para cada


operación.
Ejemplo: ADD, MOVE
Un segmento del hardware acepta el código y
lanza las señales de control.

Y ya tenemos un computador.
Componentes

La unidad de control y la unidad aritmética y


lógica constituyen la unidad central de
procesamiento (CPU).
Los datos y las instrucciones deben introducirse
en el sistema y se proporcionan los resultados
mediante:
Los componentes de entrada/salida
Se necesita un sitio para almacenar
temporalmente las instrucciones y los datos:
Memoria principal
Componentes del computador:
esquema de dos niveles
CPU
Memoria
PC MAR
Instrucción
IR MBR Instrucción
Instrucción
E/S AR

E/S BR Datos
Datos
Datos
Módulo de E/S
Datos

PC = Contador de programa
IR = Registro de instrucción
MAR = Registro de dirección de memoria
MBR = Registro de buffer de memoria
E/S AR = Registro de dirección de E / S
Registros
E/S BR = Registro buffer de E / S
Ciclo de instrucción básico

Dos pasos:
Captación
Ejecución

Ciclo de captación Ciclo de ejecución

Captar la
siguiente Ejecutar la
INICIO instrucción PARADA
instrucción
Ciclo de captación
El contador de programa (PC) contiene la
dirección de la instrucción que se debe captar a
continuación.
El procesador capta la instrucción que indica el
PC desde la memoria.
El registro PC se incrementa,
a no ser que se indique lo contrario.
Esta instrucción se carga en el registro de
instrucción (IR).
El procesador interpreta la instrucción y lleva a
cabo la acción requerida.
Ciclo de ejecución
 Procesador- memoria
Transferencia de datos desde la CPU a la memoria.
 Procesador-E/S
Transferencias de datos entre la CPU y un módulo
de E/S.
 Procesamiento de datos
Realización de alguna operación aritmética o lógica
con los datos.
 Control
Alteración de la secuencia de ejecución.
Ejemplo: la instrucción de salto
 Combinación de estas acciones
Ejemplo de ejecución de
programa
Memoria Registros de la CPU Memoria Registros de la CPU
300 1940 300 PC 300 1940 300 PC

301 5941 AC 301 5941 0003 AC

302 2941 1940 IR 302 2941 1940 IR

940 0003 940 0003


941 0002 941 0002
Paso 1 Paso 2

Memoria Registros de la CPU


Memoria Registros de la CPU
300 1940 301 PC
300 1940 300 PC
301 5941 0005 AC
301 5941 0003 AC
302 2941 5941 IR
302 2941 5941 IR

940 0003
940 0003 316 + 216 = 516
941 0002
941 0002 Paso 4
Paso 3

Memoria Registros de la CPU


Memoria Registros de la CPU
300 1940 302 PC
300 1940 302 PC
301 5941 AC
301 5941 AC 0005
0005
302 2941 2941 IR
302 2941 2941 IR

940 0003
940 0003
941 0002
941 Paso 6
Paso 5 0002
Diagrama de estados del ciclo
de instrucción

Almacena-
Captación de Captación
miento del
de
instrucción operando
operando

Varios Varios
operandos resultados

Decodifica-
Cálculo de la Cálculo de la Operación Cálculo de la
ción de la
dirección de dirección de dirección de
operación de la con datos
instrucción operando operando
instrucción

Instrucción completada, Cadena o vector


captar siguiente instrucción de datos
Interrupciones
Mecanismo mediante el que otros módulos
(Ejemplo: E/S) pueden interrumpir el
procesamiento normal de la CPU.
Programa
Ejemplo: desbordamiento aritmético (“overflow”), división por
cero
Temporización
Generadas por un temporizador interno al procesador.
Permite realizar ciertas funciones de manera regular.
E/S
Generadas por un controlador E/S.
Fallo de hardware
Flujo de control de un programa
Programa Programa Programa Programa Programa Programa
de usuario de E/S de usuario de E/S de usuario de E/S

Orden de Orden de Orden de


E/S E/S E/S

Gestor de Gestor de
interrupción interrupción

(a) Sin interrupción (b) Interrupción, espera de E/S corta ( c) Interrupción, espera de E/S larga
Ciclo de interrupción
 Añadido al ciclo de instrucción.
 El procesador comprueba si se ha generado alguna
interrupción,
indicada por la presencia de una señal de interrupción.
 Si no hay señales de interrupción, capta la siguiente
instrucción.
 Si hay alguna interrupción pendiente:
Se suspende la ejecución del programa en curso
Guarda su contexto
Carga el PC con la dirección de comienzo de una rutina de gestión de
interrupción
Proceso interrumpido
Volver a almacenar el contexto y continuar con el programa interrupido
Diagrama de estados de un ciclo de
instrucción, con interrupciones

Captación
Captación Almacena-
de instrucción de miento del
operando operando

Operandos Resultados
múltiples múltiples

Cálculo de la Decodifica- Cálculo de Cálculo de


Operación Comproba-
dirección de ción de la la dirección la dirección
con los ción de Interrupción
instrucción operación de del del
la instrucción datos interrupción
operando operando

Cadena
Instrucción No
siguiente o vector interrupción
Interrupciones múltiples
Interrupciones inhabilitadas
El procesador puede y debe ignorar la señal de petición de
interrupción si se produce una interrupción en ese
momento.
La interrupción se mantiene pendiente y se examinará una
vez se haya activado la primera interrupción.
Las interrupciones se manejan en un orden secuencial
estricto.
Definir prioridades
Una interrupción de prioridad más alta puede interrumpir
a un gestor de interrupción de prioridad menor.
Cuando se ha generado la interrupción de prioridad más
alta, el procesador vuelve a la interrupción previa.
Procesamiento de una
secuencia de interrupciones
Gestor de
Programa de usuario interrupción X

Gestor de
interrupción Y
Procesamiento de
interrupciones anidadas
Gestor de
Programa de usuario interrupción X

Gestor de
interrupción Y
Estructuras de interconexión

Todas las unidades han de estar


interconectadas.
Existen distintos tipos de interconexiones para
los distintos tipos de unidades:
Memoria
Módulo de E/S
Procesador
Interconexión de la memoria

Recibe y envía datos.


Recibe direcciones (sobre la situación).
Recibe señales de control:
Leer
Escribir
Temporizar
Interconexión del módulo E/S (1)

Desde un punto de vista interno (al


computador), la E/S es funcionalmente similar a
la memoria.
Salida
Recibe datos del computador
Envía datos al periférico
Entrada
Recibe datos del periférico
Envía datos al computador
Interconexión del módulo E/S (2)

Recibe señales de control del computador.


Envía las señales de control a los periféricos.
Ejemplo: disco
Recibe direcciones del computador.
Ejemplo: el número del puerto para identificar el
periférico
Envía señales de interrupción (de control).
Interconexión del procesador

Lee instruciones y datos.


Escribe datos (una vez los ha procesado).
Envía señales de control a otras unidades.
Recibe (y utiliza) señales de interrupción.
Buses

Existe una serie de sistemas de interconexión.


Las estructuras sencillas y múltiples son las más
comunes.
Ejemplo: control/dirección/bus de datos (PC)
Ejemplo: unibus (DEC-PDP)
¿Qué es un bus?

Es un camino de comunicación entre dos o más


dispositivos.
Normalmente, medio de transmisión.
Suele constituirse en grupos:
Un bus está constituido por varios caminos de
comunicación, o líneas.
Ejemplo: un dato de 8 bits puede transmitirse
mediante ocho líneas del bus
Puede que las líneas no sean visibles.
Bus de datos

Transmite datos.
Recuerde que a este nivel no existe diferencia alguna
entre “datos” y “instrucciones”.
La anchura del bus es un factor clave a la hora
de determinar las prestaciones.
8, 16, 32, 64 bits.
Bus de dirección

Designa la fuente o destino del dato.


Ejemplo: cuando el procesador desea leer una
palabra (datos) de una determinada parte en la
memoria.
La anchura del bus determina la máxima
capacidad de memoria posible en el sistema.
Ejemplo: 8080 tiene un bus de dirección de 16 bits,
lo que supone 64k de espacio para direcciones
Bus de control

Información sobre señales de control y sobre


temporización:
Señal de escritura/lectura en memoria.
Petición de interrupción.
Señales de reloj.
Esquema de interconexión
mediante un bus

Memoria Memoria E/S E/S


CPU

Líneas de control

Líneas de dirección Bus


Líneas de datos
¿Rojos y con ruedas?

¿Cómo son los buses?


Es un conjunto de conductores eléctricos paralelos.
Líneas de metal
Estos conectores se graban en la placa madre.
Ejemplo: PCI
Varias tarjetas.
Problemas encontrados en el bus

Si se conecta un gran número de dispositivos al


bus se producen:
Retardos de propagación
Si el control del bus pasa de un dispositivo a otro,
puede afectar sensiblemente a las prestaciones.

La mayoría de los sistemas utilizan varios buses


para solucionar estos problemas.
Arquitectura de bus tradicional
Bus local
Procesador Cache

Controlador
local de E/S

Memoria
principal

Bus del sistema

Red Interfaz con el Serie


bus de
SCSI Modem
expansión

Bus de expansión
Arquitectura de altas prestaciones

Memoria
principal

Bus local
Cache/adaptador
Procesador Bus del sistema

SCSI FireWire Gráficos Vídeo LAN

Bus de alta velocidad

FAX Interfaz con el Serie


bus de Modem
expansión

Bus de expansión
Tipos de buses

Dedicados
Uso de líneas separadas para direcciones y para
datos.
Multipleados
Uso de las mismas líneas.
Línea de control de dirección válida o de datos
válida.
Ventaja: uso de menos líneas.
Desventajas:
Se necesita una circuitería más compleja.
Posible reducción de las prestaciones.
Arbitraje del bus

El control del bus puede necesitar más de un


módulo.
Ejemplo: La CPU y el controlador DMA
Sólo una unidad puede transmitir a través del
bus, en un instantes dado.
Los métodos de arbitraje se pueden clasificar
como centralizados o distribuidos.
Arbitraje centralizado

Un único dispositivo hardware es responsable


de asignar tiempos en el bus:
Controlador del bus
Árbitro
Puede estar en un módulo separado o ser parte
del procesador.
Arbitraje distribuido

Cada módulo puede controlar el acceso al bus.


Cada módulo dispone de lógica para controlar el
acceso.
Temporización

Forma de coordinar los eventos en el bus.


Temporización síncrona
La presencia de un evento está determinada por un
reloj.
El bus incluye una línea de reloj.
Un único intervalo a uno seguido de otro a cero se
conoce como ciclo de bus.
Todos los dispositivos del bus pueden leer la línea de
reloj.
Suele sincronizar en el flanco de subida.
La mayoría de los eventos se prolongan durante un
único ciclo de reloj.
Temporización síncrona

Reloj

Inicio

Lectura

Líneas de
dirección

Líneas de
datos

Reconocimiento
Temporización asíncrona

MSYN

SSYN

Lectura

Líneas de
dirección

Líneas
de datos
Bus PCI

Interconexión de componente periférico.


Intel cedió sus patentes al dominio público.
32 o 64 bits.
50 líneas.
Líneas de señal PCI obligatorias

Líneas del sistema


Incluyen reloj y registro.
Terminales de direcciones y datos
32 líneas multiplexadas para direcciones y datos.
Líneas de interrupciones y líneas válidas.
Terminales de control de la interfaz
Terminales de arbitraje
Líneas no compartidas.
Conexión directa al árbitro del bus PCI.
Terminales para señales de error
Líneas de señal PCI opcionales

Líneas de interrupción
línea no compartida.
Soporte de cache
Extensión a bus de 64 bits
32 líneas adicionales.
Líneas multiplexadas.
2 líneas para que los módulos puedan usar una
transferencia de 64 bits.
Líneas de test (JTAG/Boundary Scan)
Para la definición de procedimientos de test.
Órdenes del PCI

Transacción entre un iniciador (maestro) y un


objetivo.
El maestro adquiere el control del bus.
Determina el tipo de transacción.
Ejemplo: lectura y escritura en E/S
Fase de direccionamiento.
Una o más fases de datos.
Operación de lectura PCI

Dirección Dato 1 Dato 2 Dato 3

Byte activo Byte activo Byte activo

Fasedededirección
Fase dirección Fase de dato Fase de dato Fase de dato

Estado de espera Estado de espera Estado de espera


Transacción del bus
Arbitraje del bus PCI entre dos
maestros

Dirección Dato Dirección Dato

Acceso A Acceso B
Lecturas recomendadas

Stallings, Capítulo 3.
www.pcguide.com/ref/mbsys/buses/

De hecho, visite y lea la página web entera


www.pcguide.com/
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 4
Memoria interna
Características

Ubicación
Capacidad
Unidad de transferencia
Método de acceso
Prestaciones
Dispositivo físico
Características físicas
Organización
Ubicación

CPU
Interna
Externa
Capacidad

Tamaño de la palabra
La unidad natural de organización.
Número de palabras
O bytes.
Unidad de transferencia
Interna
Normalmente controlado por los datos en la anchura
del bus.
Externa
Normalmente consiste en un bloque mucho más
grande que una palabra.
Unidad direccionable
Ubicación mínima que sólo puede ser direccionable.
Palabras internas.
Unidad de asignación en los discos de M$.
Métodos de acceso (1)
Secuencial
Secuencia lineal: tras iniciarse, lee detenidamente y en
orden.
El tiempo de acceso depende de la ubicación actual de los
datos y de la distribución previa.
Ejemplo:una cinta.
Directo
Los bloques individuales tienen una dirección única.
Acceso a través de una vecindad, seguida de una
búsqueda secuencial.
El tiempo de acceso depende de la ubicación y de la
distribución previa.
Ejemplo: disco.
Métodos de acceso (2)
Aleatorio
Las direcciones individuales identifican sus posiciones
exactas.
El tiempo de acceso es independiente de la posición
o del acceso previo.
Ejemplo: RAM.
Asociativa
Los datos se recuperan, basándose en una porción
de los contenidos que están almacenados.
El tiempo de acceso es independiente de la posición
o del acceso previo.
Ejemplo: cache.
Jerarquía de memoria

Registros:
En la CPU.
Memoria interna o principal:
Puede incluir uno o más niveles de cache.
“RAM”.
Memoria externa:
Almacenamiento trasero.
Prestaciones
Tiempo de acceso
Tiempo que transcurre desde el instante en el que se
presenta una dirección hasta que se obtienen datos
válidos.
Tiempo de ciclo de memoria
El tiempo que se requiere para “recuperar” la
memoria antes del próximo acceso.
El tiempo de ciclo consiste en el tiempo de acceso +
recuperación.
Velocidad de transferencia
Velocidad a la que se pueden transferir datos.
Dispositivos físicos

Memorias semiconductoras
RAM
Memorias de superficie magnética
Discos y cintas
Memorias ópticas
CD y DVD
Otros
Memoria de burbujas
Hologramas
Características físicas

La información se va perdiendo.


Volatilidad.
Borrables.
Fuente de alimentación.
Organización

Disposición o estructura física en bits para


formar palabras.
No siempre se utiliza la estructura más obvia.
Ejemplo: memoria intercalada.
Características del diseño de
la memoria

¿Cuánta capacidad?
¿Cómo de rápida?
EL tiempo es dinero.
¿De qué coste?
Jerarquía de memoria

Registros
Cache nivel 1
Cache nivel 2
Memoria principal
Cache de disco
Disco
Memoria óptica
Cintas
¿Quiere velocidad?

Es posible construir un computador que utilice


sólo una RAM estática (se verá más adelante).
Sería muy rápido.
No necesitaría cache.
¿Cómo se podría esconder la cache?
Sería muy caro.
Localidad de las referencias

En el curso de la ejecución de un programa, las


referencias a memoria tienden a estar
agrupadas.
Ejemplo: bucles.
Memoria semiconductora

RAM (memoria de acceso aleatorio)


Mal uso del término, ya que como todas las
memorias semiconductoras, es de acceso aleatorio.
Memoria de lectura/escritura.
Volátil.
Almacenamiento temporal.
Variantes estáticas o dinámicas.
RAM dinámica

 Almacena bits como cargas en condensadores.


 Tiende a descargar.
 Necesita refrescos periódicos, incluso cuando está
funcionando.
 Construcción más simple.
 Más pequeña por bit.
 Más económica.
 Necesita circuitería de refresco.
 Más lenta.
 Memoria principal.
RAM estática

Almacena bits como interruptores en on y off.


Tiende a no descargar.
No necesita refrescos, mientras funciona.
Construcción más compleja.
Más amplia por bit.
Más cara.
No necesita circuitería de refresco.
Más rápida.
Cache.
Memoria de sólo lectura (ROM)

Almacenamiento permanente.
Microprogramación (se verá más adelante).
Subrutinas de biblioteca.
Programas del sistema (BIOS).
Tablas de funciones.
Tipos de ROM
Inserción de datos, mientras se fabrica.
Muy costoso para las pocas prestaciones que tiene.
Programable (sólo una vez).
PROM.
Necesita un equipo especial para programar.
Lectura “casi completa”.
Programable y borrable (EPROM)
Borrada mediante rayos ultravioleta.
Borrable eléctricamente (EEPROM)
Lleva mucho más tiempo escribir que leer.
Memoria flash
Borra toda la memoria eléctricamente.
Organización detallada

 Un chip de 16Mbits podría estar estructurado en 1


Mpalabras de 16 bits.
 Un sistema de “un bit por chip” tiene 16 lotes de un chip
de 1 Mbits, por lo que por cada chip corresponde 1bit de
cada palabra y así, sucesivamente.
 Un chip de 16 Mbits puede estar estructurado en cuatro
matrices cuadradas de 2048 x 2048 elementos.
Reduce el número de terminales de dirección.
Direccionamiento de filas y de columna multiplexado.
11 terminales de dirección (211=2.048).
Una terminal más duplica el rango de los valores, así que la
capacidad se multiplica por cuatro.
Refresco

Circuitería de refresco incluida en el chip.


Se inhabilita el chip.
El contador recorre todas las filas.
Lee y escribe de nuevo.
Lleva tiempo.
Reduce las prestaciones aparentes.
DRAM típica de 16 Mb (4M x 4)

Temporización y control

Contador
de
refresco

Deco-
Buffer de difica-
dor Matriz
direcciones
de de memoria
de filas
filas (2048 x 2048 x 4)

Buffer
Buffer de de entrada
direcciones Amplificadores de datos
de columnas de lectura
y puerto de E/S Buffer
de salida
Descodificador de datos
de columnas
Chip encapsulado de memoria

Dip de 32
terminales

0,6’’

Vista
superior

EPROM de 8 Mbits. DRAM de 16 Mbits.


Organización Registro
de dirección

1 entre 512
Decodifica
de memoria

en módulos
Chip # 1
(MAR) 512 palabras
por 512 bits

Decodifica 1 entre
512 y detección Registro
de bits buffer
de memoria
(MBR)

Decodifica 1 entre
512 y detección
de bits

Chip # 8
512 palabras
por 512 bits

Decodifica 1 entre
512 y detección
de bits
Organización en módulos (2)
Registro
de dirección
de memoria
(MAR)

Registro
buffer
de
memoria
(MBR)

Todos los chips


de 512 palabras por 512 bits.
Celdas de dos terminales

Grupo
Habili-
tación
de grupo
de chips

Selecciona
1 de entre 4
grupos
Corrección de errores

Fallo permanente
Defecto permanente.
Error transitorio
Aleatorio, no destructivo.
No dañan a la memoria de forma permanente.
Se detectan por medio del código de Hamming,
es decir, un código corrector de errores.
Código corrector de errores
Señal de error

Salida de datos

Entrada de datos

Compara-
Memoria ción
Cache

Cantidad pequeña de memoria rápida.


Está entre la memoria principal normal y la CPU.
Puede localizarse en el chip o módulo de la CPU.

Transferencia de bloques

Transferencia de palabras

Memoria
principal
Operación de la cache:
resumen

La CPU solicita contenidos de la localización de


memoria.
Comprueba la cache para estos datos.
Si está, la obtiene de la cache (rápidamente).
Si no está, lee el bloque requerido a partir de la
memoria principal hasta la cache.
Después, de la cache los entrega a la CPU.
La cache incluye etiquetas para identificar qué
bloque de la memoria principal está en cada
ranura de la cache.
Diseño de la cache

Tamaño
Función de correspondencia
Algoritmo de sustitución
Política de escritura
Tamaño del bloque
Número de caches
El tamaño importa

Coste
Un cache grande es costoso.
Velocidad
Cuanto más cache, más rapidez (hasta cierto punto).
Comprobar la cache para acceder a los datos, lleva
tiempo.
Organización típica de cache

Direcciones

Buffer
de direcciones

Procesador

Buffer
de datos

Datos
Función de correspondencia

Cache de 64 kbytes.
Los datos se transfieren en la cache en bloques
de 4 bytes.
Ejemplo: la cache es de 16k (214) líneas de 4 bytes.
Memoria principal de 16Mbytes.
Dirección de 24 bits:
(224=16M).
Correspondencia directa
 Cada bloque de memoria principal se corresponde a
sólo una línea de cache.
 Ejemplo: si un bloque se encuentra en la cache,
debería estar en un lugar específico.
 La dirección está en dos partes.
 Los w bits menos significativos identifican una sóla
palabra.
 La mayoría de los s bits significativos especifican un
bloque de la memoria.
 Los s bits significativos se distribuyen en un campo de
línea r en la cache y en una etiqueta de s - r (los más
significativos).
Correspondencia directa:
Estructura de la dirección
Etiqueta s-r Línea o ranura r Palabra w
8 14 2

 Dirección de 24 bits.
 Identificador de palabra de 2 bits (bloques de 4 bytes).
 Identificador de bloque de 22 bits.
Etiqueta de 8 bits (=22-14).
Ranura o línea de 14 bits.
 Ninguno de los dos bloques en la misma línea tiene el
mismo campo de etiqueta.
 Compruebe los contenidos de la cache mediante la
búsqueda de la línea y la comprobación de la etiqueta.
Correspondencia directa:
Tabla de la línea de cache

Línea de cache Bloques de memoria


principal asignados
0 0, m, 2m, 3m, …, 2s-m
1 1, m+1, 2m+1, …, 2s-m+1

m-1 m-1, 2m-1, 3m-1, …, 2s-1


Correspondencia directa:
Organización de cache

Memoria
Cache principal
Etiqueta Datos
Dirección de memoria
Etiqueta Línea Palabra

Comparación

(Acierto de cache)

(Fallo de cache)
Ejemplo de correspondencia
directa
Línea +
Etiqueta Palabra Datos

Número
Etiqueta Datos de línea

Cache de 16K palabras

Memoria principal de 16 Mbytes


Correspondencia directa:
ventajas y desventajas

Simple.
Poco costosa.
Hay una posición concreta para cada bloque
dado:
Si un programa accede a dos bloques que se
corresponden a la misma línea de forma repetida, las
pérdidas de cache son muy grandes.
Correspondencia asociativa

Un bloque de memoria principal pueda cargarse


en cualquier línea de la cache.
La dirección de memoria se interpreta como una
etiqueta y una palabra.
La etiqueta identifica unívocamente un bloque
de memoria.
Todas las etiquetas de líneas se examinan para
buscar una coincidencia.
La búsqueda de cache es costosa.
Organización de cache
totalmente asociativa

Memoria principal
Etiqueta Datos
Dirección de memoria

Etiqueta Palabra

Comparación

(Acierto de cache)

(Fallo de cache)
Ejemplo de correspondencia
asociativa
Dirección Datos

Número
Etiqueta Datos de línea

Cache de 16K palabras

Memoria principal de 16 MBytes


Correspondencia asociativa:
Estructura de la dirección
Palabra
Etiqueta 22 bits 2 bits
 La etiqueta de 22 bits está almacenada con cada bloque
de datos de 32 bits.
 Compare el campo de etiqueta con la entrada de etiqueta
en la cache para comprobar si ha tenido éxito.
 La dirección de 2 bits menos significativa identifica qué
palabra de 16 bits se necesita en un bloque de datos de
32 bits.
 Ejemplo:
Dirección Etiqueta Datos Línea de cache
FFFFFC FFFFFC 24682468 3FFF
Correspondencia asociativa por
conjuntos

La cache se divide en un número de conjuntos.


Cada conjunto contiene un número de líneas.
Un bloque determinado se hace corresponder a
cualquier línea en un conjunto determinado.
Ejemplo: El bloque B puede asignarse en cualquiera
de las líneas del conjunto i.
Ejemplo: 2 líneas por conjunto.
Correspondencia asociativa de 2 vías.
Un bloque determinado puede asignarse en una de
las dos líneas en un único conjunto.
Correspondencia asociativa por
conjuntos

Número de conjunto de 13 bits.


El número del bloque de memoria principal es
módulo 213.
000000, 00A000, 00B000, 00C000 … se hacen
corresponder al mismo conjunto.
Estructura de cache asociativa
por conjuntos

Memoria principal
Etiqueta Datos
Dirección de memoria
Etiqueta Conjunto Palabra

Conjunto 0

Comparación
Conjunto 1

(Acierto de cache)

(Fallo de cache)
Correspondencia asociativa por
conjuntos: Estructura de la
dirección

Etiqueta Palabra
de 9 bits Conjunto de 13 bits de 2 bits

 Utilice los campos de conjunto a la hora de determinar el


conjunto de cache que necesita para poder verlo.
 Compare los campos de etiqueta para ver si tenemos
éxito:
 Ejemplo:
Dirección Etiqueta Datos Número de conjuntos
1FF 7FFC 1FF 12345678 1FFF
001 7FFC 001 11223344 1FFF
Correspondencia asociativa por
conjuntos de dos vías
Conj. +palabra Datos
Etiqueta

N.º de
Etiqueta Datos Etiqueta Datos
conjunto

Cache de 16K palabras

Memoria principal de 16Mbytes


Algoritmos de sustitución (1):
Correspondencia directa

No hay elección posible.


Sólo hay una posible línea para cada bloque.
Se necesita una sustitución de esa línea.
Algoritmos de sustitución (2):
Correspondencias asociativas y
asociativas por conjuntos
 Los algoritmos deben implementarse en hardware (para
conseguir velocidad).
 “Utilizado menos recientemente” (LRU).
 Ejemplo: en correspondencias asociativas por conjuntos de
2 vías.
¿Cúal de los 2 bloques es LRU?
 “Primero en entrar-primero en salir” (FIFO).
Se sustituye aquel bloque que ha estado más tiempo
en la cache.
 “Utilizado menos frecuentemente” (LFU).
Se sustituye aquel bloque que ha experimentado
menos referencias.
 Aleatoria (coger una línea al azar).
Política de escritura

No se debe escribir sobre un bloque de cache, a


no ser que la memoria principal esté
actualizada.
Las CPU múltiples pueden tener caches
individuales.
Un módulo E/S puede tener acceso directo a la
memoria principal.
Escritura inmediata

Todas las operaciones de escritura se hacen,


tanto en memoria principal como en cache.
Las CPU pueden monitorizar el tráfico a
memoria principal para mantener actualizada la
cache local (CPU).
Genera mucho tráfico.
Retrasa la escritura.
Recuerde los caches de falsa escritura
inmediata.
Post-escritura

 Las actualizaciones se hacen sólo en la cache.


 Cuando tiene lugar la actualización, se activa un bit
actualizar en la ranura de cache.
 Cuando un bloque es sustituido, es escrito en
memoria principal, si el bit actualizar está activo.
 Las otras caches no son síncronas.
 Los módulos de E/S sólo pueden acceder a la
memoria principal a través de la cache.
 El porcentaje de referencias a memoria para
escritura es del orden del 15%.
La cache en el Pentium

lectura recomendada.
Infórmese sobre los detalles de la organización
de la cache en el Pentium II.
No sólo por este libro.
Tecnología avanzada de memorias RAM (1)

La DRAM básica sigue siendo la misma desde


que aparecieron los primeros chips de RAM.
DRAM mejorada
Incluye también una pequeña cache SRAM.
SRAM almacena la última línea leída (en comparación
con la cache).
DRAM cache
Incluye una cache SRAM más grande.
Se puede utilizar como cache o como buffer para
proporcionar accesos serie.
Tecnología avanzada de memorias RAM (2)

DRAM síncrona (SDRAM)


Actualmente en los DIMM.
Acceso sincronizado con una señal de reloj externa.
Presentación de direcciones a la RAM
La Ram encuentra datos (la CPU espera en la DRAM
convencional).
Como la SDRAM mueve los datos sincronizada con el reloj
del sistema, la CPU sabe cuándo estarán los datos listos.
La CPU no tiene que esperar, puede realizar otra
operación.
El modo de ráfagas permite a la SDRAM establecer una
corriente de datos y eliminarlos en bloque.
SDRAM
Buffer de
Buffer de
salida
entrada
de datos
de datos

Lógica de control
y máquina de
estados finitos

Banco B
DRAM
(2M x 8)

Amplificadores de
Registro lectura y puertos de
E/S
de modo

Lacht de
direcciones Contador Codificador
de columnas de ráfaga de columnas

Lacht de
direcciones
de filas
Amplificadores de
Multiplexor lectura y puertos de
de filas E/S
Contador de
refresco
Banco B
DRAM
(2M x 8)
Tecnología avanzada de memorias RAM (3)

Lectura recomendada.
Compruebe cualquier otra RAM que pueda
encontrar.
Sitio web recomendado:
The RAM Guide (La guía de RAM).
William Stallings
Organización y Arquitectura
de Computadores
Capítulo 5
Memoria externa
Tipos de memoria externa

Disco magnético
RAID
Extraíble
Óptico
CD-ROM
CD-de escritura (WORM)
CD-RW
DVD
Cinta magnética
Discos magnéticos

Disco de metal o plástico, cubierto por un


material magnetizable (óxido de hierro).
Gama de almacenamiento:
Disquetes
Disco duro Winchester
Disco duro extraíble
Organización y formato de los
datos

Anillos concéntricos o pistas:


Bandas vacías entre las pistas.
Reducción de las bandas vacías para aumentar la
capacidad.
Mismo número de bits por pista (densidad de
almacenamiento variable).
Velocidad angular constante.
Pistas divididas en sectores.
El tamaño mínimo de un bloque es de un sector.
Puede haber más de un sector por bloque.
Diseño de un disco de datos
Pistas
Bandas de separación
 de pistas
S6
 SN
S6
A SN
Sectores
S5 S5

S1 S1

S4 S4

S3 S2

S3 S2
Interbloques

Figura 5.1. Organización de los datos en el disco


Discos de cabeza fija/móvil

Disco de cabeza fija


Hay una cabeza de lectura/escritura por pista.
Las cabezas se montan en un brazo rígido.
Disco de cabeza móvil
Una cabeza de lectura/escritura por cara.
Las cabezas se montan en un brazo móvil.
Discos con cabeza fija y móvil
Pistas

Cabeza fija Cabeza móvil


Extraíble o no

Disco extraíble
Se puede quitar de la unidad y sustituir por otro
disco.
Proporciona una capacidad ilimitada de
almacenamiento.
Fácil transferencia de datos entre sistemas.
Disco no extraíble
Se monta permanentemente en la unidad.
Disquetes

8”, 5,25”, 3,5”.


Poca capacidad:
Más de 1,44Mbyte (2,88M no muy usados).
Lentos.
Universales.
Baratos.
Discos Winchester (1)

Diseñados por IBM en Winchester (EE.UU.).


Unidad montada.
Uno o más platos (discos).
La presión del aire generada por el giro del
disco hace que las cabezas suban la hoja
encima de la superficie.
Cabezas demasiado pequeñas para las bandas
vacías del disco.
Se están mejorando.
Discos Winchester (2)

Universales.
Baratos.
Almacenamiento externo más rápido.
Aumentando cada vez más:
Ahora es normal que tenga varios gigabytes.
Discos extraíbles
ZIP
Barato.
Muy conocido.
Sólo 100M.
JAZ
Caro.
1G.
L-120 (unidad a:)
También lee los discos de 3,5”.
¿Se ha vuelto más conocido?
Búsqueda de sectores

Debe ser capaz de identificar el inicio de las


pistas y sectores.
Formato del disco:
Información adicional no disponible para el usuario.
Marca pistas y sectores.
Formato ST506

Gap1 ID Gap2 Datos Gap3 Gap1 ID Gap2 Datos Gap3

Byte de Byte de
sincro. Pista Cabeza Sector
CRC Datos CRC
sincro.

Lectura en primer grado


Buscar otros
Características

Cabeza fija (pocas veces) o móvil.


Extraíbles o no extraíbles.
De una sola superficie o de doble superficie
(normalmente).
De uno o varios platos.
Mecanismo de la cabeza:
Contacto (disquete)
Separación fija
Separación aerodinámica (Winchester)
Platos múltiples

Una cabeza por cada superficie.


Las cabezas están unidas y alineadas.
Pistas alineadas en cada plato en forma de
cilindros.
Datos rayados por un cilindro:
Reduce el movimiento de la cabeza
Incrementa la velocidad (velocidad de transferencia)
Velocidad

Tiempo de búsqueda
Cuando se desplaza la cabeza hasta la pista
requerida.
Estado latente (y rotacional):
Esperar a que los datos roten bajo la cabeza.
Tiempo de acceso = búsqueda + estado latente.
Velocidad de transferencia.
RAID

Conjunto redundante de discos independientes.


Conjunto redundante de discos asequibles.
6 niveles de uso común.
No jerarquizado.
Conjunto de unidades físicas de disco vistas por
el sistema operativo como una única unidad
lógica.
Datos distribuidos a través de unidades físicas.
La capacidad redundante se usa para almacenar
información de paridad.
RAID 0

Sin redundancia.
Datos organizados en tiras a través de todos los
discos.
Estructura en tiras organizada cíclicamente.
Incremento de velocidad:
La petición de datos múltiples probablemente no esté
en el mismo disco.
Búsqueda de discos en paralelo.
Es probable que un conjunto de datos esté
estructurado en tiras a través de los discos múltiples.
RAID 1
Discos con una estructura en espejo.
Datos estructuados en tiras a través de todos
los discos.
2 copias de cada tira en discos separados.
Lectura desde cualquiera de los discos.
Escritura en los dos.
Recuperación sencilla:
Sustituir el disco defectuoso y volver a estructurarlo
en espejo.
Sin tiempo de espera en la recuperación.
Caro.
RAID 2
Los discos están sincronizados.
Tiras muy pequeñas:
A menudo como un único byte o palabra.
La corrección de errores se calcula a partir de
los bits de cada disco.
Los distintos discos de paridad almacenan
códigos Hamming, los cuales permiten corregir
errores, en las correspondientes posiciones.
Gran capacidad de redundancia.
Caro.
No se utiliza.
RAID 3

Similar al RAID 2.
Un solo disco redundante, no importa lo grande
que sea el conjunto de discos.
Sencillos bits de paridad para todos los
conjuntos de bits correspondientes.
En caso de fallo en la unidad, se accede a la
misma y se reconstruyen los datos desde el
resto de los dispositivos.
Velocidad de transferencia muy alta.
RAID 4

Cada disco opera independientemente.


Para aplicaciones que requieren velocidades de
petición de E/S altas.
Tiras grandes.
Una tira de paridad se calcula bit a bit, a partir
de las correspondientes tiras de cada disco.
Bits de paridad almacenados en el disco de
paridad.
RAID 5

 Como el RAID 4.
 Tiras de paridad distribuidas a lo largo de todos
los discos.
 Distribución cíclica para las tiras de paridad.
 El disco de paridad evita el cuello de botella
encontrado en RAID 4.
 Utilizado normalmente en los servidores de la red.
Almacenamiento óptico del CD-ROM

Originalmente para audio.


650Mbytes que almacenan alrededor de 70
minutos de audio.
Formado a partir de policarbonato cubierto con
una superficie altamente reflectante,
normalmente con aluminio.
Datos grabados como una serie de hoyos.
Lectura por medio de un láser reflectante.
Densidad de almacenamiento constante.
Velocidad lineal constante.
Velocidad de la unidad de
CD-ROM

Una sola velocidad de audio:


Velocidad lineal constante.
1,2 ms-1.
La pista (espiral) tiene 5,27km de longitud.
Proporciona 4.391 segundos = 73,2 minutos.
Otras velocidades se consideran múltiples:
Ejemplo:: 24x
Formato de un CD-ROM

SECTOR
MODO
ECC
SEG
FF
MIN
00 x 10 00 Datos de la
estructura

12 Bytes 4 Bytes 2.048 Bytes 288 Bytes


Sincr. ID
2.352 Bytes
 Modo 0= campo de datos en blanco
 Modo 1= datos de 2.048 Bytes + corrector de
errores
 Modo 2= datos de 2.336 bytes
Acceso aleatorio al CD-ROM

Difícil.
Mover la cabeza a una posición más difícil.
Ajustar la velocidad correcta.
Leer la dirección.
Realizar ajustes a la localizacion requerida.
Ventajas y desventajas del
CD-ROM

Capacidad mayor (?).


Facilidad para producir en grandes cantidades.
Extraíble.
Robusto.

Caro para las pocas prestaciones.


Lento.
Es sólo de lectura.
Otros almacenamientos ópticos

CD de escritura:
WORM.
Ahora disponible.
Compatible con las unidades de CD-ROM.
CD-RW:
Borrable.
Cada vez más barato.
Compatible con la mayoría de las unidades de CD-
ROM.
DVD, ¿qué encierra una palabra?

Digital Video Disk (disco vídeo digital)


Para designar un reproductor de películas.
Sólo reproduce discos de vídeo.
Digital Versatile Disk (disco digital versátil)
Para designar la unidad de un computador.
Leerá discos de computador y reproduce discos de vídeo.
Tecnología DVD

Muchas capas.
Alta capacidad (4,7G por capa).
Una pelícua entera en un solo disco:
Usa compresión MPEG.
Por fin normalizado.
Las películas tienen un código regional.
Los reproductores sólo reproducen las películas
con el código de la región correspondiente.
Se puede “fijar”.
DVD de escritura

Muchos problemas con la normalización.


La primera generación de unidades de DVD no
podían leer la primera generación de discos de
DVD-W (de escritura).
La primera generación de unidades de DVD no
podía leer los discos CD-RW (de lectura/escritura).
Antes de comprarlo, espere a que se implante.
Lectura en primer plano

Compruebe las opciones de almacenamiento del


disco óptico.
Compruebe el Mini Disk.
Cinta magnética

Acceso en serie.
Lento.
Muy barato.
Copia de seguridad y archivo.
Cinta de audio digital (DAT)

Utiliza cabezas rotatorias (como el vídeo).


Alta capacidad en una cinta pequeña:
4Gbyte no comprimidos.
8Gbyte comprimidos.
Copia de seguridad del PC/ servidores de red.
William Stallings
Organización y Arquitectura
de computadores

Capítulo 6
Entrada/Salida
Problemas de Entrada/Salida

Gran cantidad de periféricos


Trasmisión de diferentes cantidades de datos.
A diferentes velocidades.
En diferentes formatos.
Todos más lentos que la CPU y la RAM
Necesidad de módulos de E/S
Módulo de E/S

Realiza la interfaz entre el procesador y la


memoria.
Realiza la interfaz entre uno o más periféricos.
Ver Figura 6.1: Modelo genérico de un módulo
de E/S.
Dispositivos externos

De interacción con humanos


Pantalla, impresora, teclado
De interacción con máquinas
Control y supervisación
De comunicación
Módem
Tarjeta de la interfaz de red (NIC)
Funciones de un módulo de E/S

Control y temporización
Comunicación con la CPU
Comunicación con los dispositivos
Almacenamiento temporal de datos
Detección de errores
Pasos de la E/S

 La CPU comprueba el estado del dispositivo


preguntando al módulo de E/S.
 E/S devuelve el estado del dispositivo.
 Si el dispositivo está preparado, la CPU solicita la
trasferencia de datos.
 E/S obtiene el dato del dispositivo externo.
 E/S transfiere los datos a la CPU.
 Variaciones de salida, DMA, etc.
Diagrama de un módulo de E/S
Interfaz al bus del sistema Interfaz a dispositivo externo

Lógica del Datos


Líneas Registro de datos interfaz a
de datos dispositivo Estado
Registro de estado/control externo
Control

Líneas de
dirección Lógica del Datos
Lógica
interfaz a
Líneas de de E/S dispositivo Estado
control externo
Control
Decisiones de un módulo de E/S

Ocultar o mostrar las propiedades del dispositivo


a la CPU.
Ocuparse de uno o varios dispositivos.
Controlar las funciones del dispositivo o
dejárselo a la CPU.
También decisiones sobre sistemas operativos.
Ej: Unix considera como archivos todo lo que puede.
Técnicas de E/S

Programada
Mediante interrupciones
Acesso directo a memoria (DMA)
E/S programada

La CPU tiene control directo sobre la E/S


Comprobación del estado del dispositivo
Órdenes de lectura/escritura
Transferencia de datos
La CPU espera a que el módulo E/S acabe la
operación
Hace perder tiempo a la CPU
Detalles de la E/S programada

 La CPU solicita la operación de E/S.


 El módulo E/S realiza la operación.
 El módulo E/S activa los bits de estado.
 La CPU comprueba periódicamente el estado de
los bits.
 El módulo E/S no informa a la CPU directamente.
 El módulo E/S no interrumpe a la CPU.
 La CPU puede esperar o volver más tarde.
Órdenes de E/S

La CPU proporciona una dirección


Especifica el módulo (y el dispositivo si >1 por módulo)
La CPU da una orden
Control: indica al módulo qué hacer
Ejemplo: rebobinar una cinta magnética.
Test: comprueba el estado
Ejemplo: ¿está conectado? ¿ha habido algún error?
Lectura/Escritura
Transfiere datos desde y hacia el dispositivo a través del bus
de datos.
Órdenes a dispositivos de E/S
 La transferencia de datos con E/S programada es muy
parecida al acesso de memoria (desde el punto de vista
de la CPU).
 Cada dispositivo tiene un único identificador.
 Las órdenes de la CPU contienen identificadores
(direcciones).
Instrucciones de E/S

 E/S asignada en memoria


Dispositivos y memoria comparten un único espacio de
direcciones.
E/S se parece a la memoria de lectura/escritura.
No hay órdenes específicas para E/S.
Gran variedad de órdenes de acceso a memoria.
 E/S aislada
Espacios de direcciones separados.
Necesidad de líneas especiales de E/S o de memoria.
Órdenes específicas para E/S.
Conjunto limitado de instrucciones.
E/S mediante interrupciones

La CPU no tiene que esperar.


No se repite la comprobación del sistema.
El módulo E/S envía una interrupción cuando
está listo.
E/S mediante interrupciones:
operaciones básicas

La CPU envía una orden READ de lectura.


El módulo E/S obtiene los datos del periférico
mientras que la CPU realiza otro trabajo.
El módulo E/S interrumpe a la CPU.
La CPU solicita los datos.
El módulo E/S transfiere los datos.
Punto de vista de la CPU

Genera una orden READ.


Pasa a realizar otro trabajo.
Comprueba las interrupciones al final de cada
ciclo de instrucción.
Si es interrumpida:
Guarda el contexto (registros).
Interrumpe el proceso.
Búsqueda y almacenamiento de instrucciones
Considera los sistemas operativos.
Cuestiones de diseño

¿Cómo saber qué dispositivo ha provocado la


interrupción?
¿Cómo elegir la interrupción que se debe
atender?
Ej. una rutina de interrupción que es interrumpida.
Identificación del módulo que
interrumpe (1)
Diferentes líneas para cada módulo
PC
Limita el número de dispositivos
Consulta software
La CPU consulta a cada módulo
Resulta lenta
Identificación del módulo que
interrumpe (2)

Conexión en cadena o consulta hardware


La línea de reconocimiento de interrupción se
conecta encadenando los módulos.
El módulo que responde coloca un vector en el bus.
La CPU emplea el vector para identificar la rutina de
servicio.
Arbitraje de bus
El módulo debe disponer del control del bus antes de
lograr la interrupción.
Ej: bus PCI y puerto SCSI
Interrupciones múltiples

Todas las líneas de interrupción tienen un orden


de prioridad.
Las líneas con más prioridad pueden interrumpir
a las líneas con menos.
Si existe un maestro del bus, sólo el maestro
puede interrumpir.
Ejemplo: bus de PC

El 80386 tiene sólo una línea de petición de


interrupción.
Los sistemas basados en el 80386 emplean un
árbitro de interrupciones 82C59A.
El 82C59A tiene 8 líneas de interrupción.
Secuencia de acontecimientos

El 8259A acepta la interrupción.


El 8259A determina la prioridad.
El 8259A activa la señal 8086 (sitúa la señal
INTR en la línea adecuada).
El procesador reconoce la señal.
El 8259A coloca el vector apropiado en el bus de
datos.
El procesador procesa la interrupción.
Diseño de interrupción del PC

8259A 8086

IRQ0
IRQ1
IRQ2
IRQ3 INTR
IRQ4
IRQ5
IRQ6
IRQ7
Sistema de interrupción
del bus ISA

El bus ISA sirve de enlace entre dos 8259A.


El enlace se realiza con la señal de interrupción
2.
Proporciona 15 línes.
16 líneas menos una para el enlace.
IRQ 9 sirve para redirigir lo que intente utilizar
el IRQ 2.
Compatibilidad hacia atrás.
Incorporado en el chip.
Diseño de interrupción ISA

(IRQ 2) 8259A 8259A 80x86

IRQ0 (8) IRQ0


IRQ1 (9) IRQ1
IRQ2 (10) IRQ2
IRQ3 (11) IRQ3 INTR
IRQ4 (12) IRQ4
IRQ5 (13) IRQ5
IRQ6 (14) IRQ6
IRQ7 (15) IRQ7
Lecturas básicas

 http://www.pcguide.com/ref/mbsys/res/irq/func.htm

Visite también la página


http://www.pcguide.com/
Acceso directo a memoria

La E/S programada y con interupciones necesita


la intervención directa de la CPU.
La velocidad de transferencia es limitada.
La CPU permanece ocupada mucho tiempo.
El DMA es la solución.
Funcionamiento del DMA

Requiere un módulo adicional (hardware) en el


bus.
El módulo del DMA obtiene el control de la CPU
para transferir datos.
Mecanismo del DMA

La CPU envia una orden al módulo de DMA:


Lectura/Escritura
Dirección del dispositivo
Dirección inicial de memoria para datos
Cantidad de datos que hay que transferir
La CPU continua con otro trabajo.
El módulo del DMA realiza la transferencia.
El módulo del DMA envía una señal de
interrupción cuando ha acabado.
Transferencia del DMA
Robo de ciclo

El módulo de DMA roba el bus durante un ciclo.


Transfiere una palabra.
No es una interrupción.
El procesador no guarda el contexto.
El procesador se detiene justo antes de acceder
al bus.
Ejemplo: Antes de un operando o una carga de
datos.
La CPU es más lenta pero no tanto como si
relizara la transferencia.
Además...

¿Qué efecto tiene esa ocupación de memoria en


el DMA?
Pista: ¿En qué medida están disponibles los
buses?
Configuraciones del DMA (1)

Módulo de
CPU DMA E/S E/S Memoria

Bus único, DMA independiente.


Cada transferencia utiliza dos veces el bus.
E/S va a DMA y el DMA a la memoria.
La CPU se interrumpe dos veces.
Configuraciones del DMA (2)

Módulo de Módulo de
CPU Memoria
DMA DMA

E/S
E/S E/S
Bus único, DMA integrado.
El módulo puede controlar más de un dispositivo.
Cada transferencia usa el bus una vez.
Del DMA a la memoria.
La CPU se interrumpe solo una vez.
Configuraciones del DMA (3)

CPU Módulo
Memoria
de DMA

E/S E/S E/S E/S


Bus de E/S separado.
El bus se encarga de todos los dispositivos.
activados del DMA.
Cada transferencia usa el bus una vez.
Del DMA a la memoria.
La CPU se interrumpe solo una vez.
Canales de E/S

Los dispositivos de E/S cada vez son más


sofisticados.
Por ejemplo, las tarjetas gráficas 3D.
La CPU ordena al módulo E/S realizar la
transferencia.
El módulo E/S realiza toda la transferencia.
Aumenta la velocidad.
Libera de carga a la CPU
El procesador especializado es más rápido
Tipos de interfaces

Conecta los dispositivos entre sí.


¿Hay un procesador, memoria o buses
especializados?
Ejemplos: SCSI, FireWire.
Interfaz SCSI (Small
Computer Systems Interface)

Interfaz paralela.
8, 16 o 32 líneas de datos.
Dispositivos encadenados (daisy chained).
Los dispositivos son independientes.
Los dispositivos pueden comunicarse entre sí y
también con el anfitrión (host).
SCSI - 1

A principios de los 80
8 líneas de datos
5MHz
Velocidad de datos de 5MBytes/s
Siete dispositivos
Ocho si incluimos el interfaz del anfitrión
SCSI - 2

1991
16 y 32 líneas de datos
10MHz
Velocidad de datos de 20 o 40 Mbytes/s

(Se está investigando el Ultra/Wide SCSI)


Señal del SCSI (1)
Entre el dispositivo iniciador y el seleccionado
Normalmente anfitrión y dispositivo
¿Bus libre? (frente a Ethernet)
Arbitraje: un dispositivo toma el control del bus
(frente a PCI)
Selección de objetivo
Reselección
Permite la reconexión después de la suspensión
Por ejemplo, si una orden tarda en ejecutarse, el bus
puede quear liberado
Señal del SCSI (2)

Orden: solicitar un objetivo al iniciador


Solicitud de datos
Solicitud de información de estado
Solicitud de mensaje (dos sentidos)
Fases del bus SCSI
Encendido

Orden,
Bus datos,
libre Arbitraje (Re)Selección
estado,
mensaje
Diagrama de tiempo SCSI
Retardo de
estabilización Retardo de bus libre
del bus Retardo de establecimiento del bus (Bus Set Delay)
Retardo de borrado del bus (Bus Clear Delay)
Retardo de arbitraje
Retardo de borrado del bus más retardo de estabilización del bus
El iniciador
activa El dispositivo seleccionado activa BSY
el BSY
Los sistemas sin arbitraje empiezan aquí

IDs Primer byte Último byte Byte de Byte de Byte de Orden completa
(Bus de datos)
Arb. IDs de la orden de la orden datos datos estado
Bus libre Arbitraje Inicio y Entrada de
Destino Orden Entrada de datos Estado mensaje
Bus libre
Selección
Configuración de SCSI

El bus debe haber finalizado en cada extremo.


Normalmente un extremo corresponde al adaptador
del host.
Conexión a un terminador o conmutador(es).
Debe establecerse la ID de SCSI.
Jumpers o conmutadores.
Único en cadena.
0 (cero) para el dispositivo de arranque.
El número mayor goza de prioridad en el arbitraje.
IEEE 1394 FireWire

Bus en serie de alta rendimiento.


Rápido.
Costes reducidos.
Fácil de implementar.
También se emplea en cámaras digitales, VCR y
TV.
Configuración del FireWire

Dispositivos encadenados (daisy chain).


Más de 63 dispositivos en un solo puerto.
En realidad 64, de los cuales uno es la interfaz.
Pueden conectarse más de 1.022 buses con
adaptadores.
Configuración automática.
No hay terminadores de bus.
Puede tener estructura de árbol.
Comparación entre
FireWire y SCSI

Disco magnético Escáner CD ROM CPU

ID= 6 ID= 2 ID= 3 ID= 7

Terminador

(a) Ejemplo de configuración SCSI (puede ser interno)


Terminado
r

Interfaz
CPU Disco magnético
estéreo

CD-ROM Cámara digital Escáner Impresora

(b) Ejemplo de configuración FireWire


Las tres capas de FireWire

Física
Medio de trasmisión, características eléctricas y de
señalización.
Enlace
Transmisión de datos en paquetes.
Transacción
Protocolo de pregunta-respuesta
FireWire: Capa física

Velocidad de datos entre 25 y 400Mb/s.


Dos formas de arbitraje.
Basado en la estructura de árbol.
Las raíces actúan como árbitro.
El primero en llegar tiene preferencia.
La prioridad natural controla las demandas
simultáneas.
Por ejempo, el que esté más cerca de la raíz.
Arbitraje justo.
Arbitraje urgente.
FireWire: Capa de enlace

Dos tipos de transmisión


Asíncrona
Se transfiere como paquete una cantidad variable de datos
y varios bytes de transacción de datos.
A una dirección explícita.
Se devuelve información de reconocimiento.
Isócrona
Cantidad variable de datos en secuencias de paquetes de
tamaño fijo a intervalos regulares.
Direccionamiento simplificado.
No utiliza reconocimiento.
Subacciones FireWire
Subacción 1: petición Subacción 2: respuesta
Intervalo de Intervalo de
Intervalo de
subacción subacción
subacción

Arb Recono- Arb Recono-


Paquete cimiento Paquete cimiento
Intervalo de Intervalo de
reconocimiento reconocimiento
(a) Ejemplo de subacción asíncrona
Subacción 1: petición Subacción 2: respuesta
Intervalo de
Intervalo de
subacción
subacción

Arb Recono- Recono-


Paquete cimiento Paquete cimiento
Intervalo de Intervalo de
reconocimiento reconocimiento

(b) Subacción asíncronas concatenadas

Primer canal
Segundo canal Tercer canal
Intervalo Intervalo
Intervalo isoc. isoc. Intervalo
isoc. isoc.

Arb Paquete Arb Paquete Arb Paquete

(c) Ejemplo de subacciones isócronas


Lecturas básicas

Busque más información sobre el Universal


Serial Bus (USB).
Compare con otros modelos de comunicación
habituales, como Ethernet.
William Stallings
Organización y arquitectura
de computadores

Capítulo 7
El soporte del sistema operativo
Objetivos y funciones del
sistema operativo

Comodidad
Hace que un computador sea más fácil de usar.
Eficiencia
Permite que los recursos del computador se
aprovechen mejor.
Capas y puntos de vista de un
computador

Usuario final

Programador
Programas de aplicación

Utilidades
Diseñador del
sistema operativo
Sistema operativo

Hardware del computador


Servicios del sistema operativo

Creación de programas
Ejecución de programas
Acceso a los dispositivos de E/S
Acceso controlado a los ficheros
Acceso al sistema
Detección de errores y respuesta
Contabilidad
El sistema operativo como
gestor de recursos
COMPUTADOR

Controles de
DISPOSITIVOS DE E/S
Memoria E/S
Software
del sistema
operativo
Programas
y datos

Almacenamiento
Procesador Procesador
S.O.
Programas
Datos
Tipos de sistemas operativos

Interactivos
Sistemas de colas
Un solo programa (monoprogramados)
Multiprogramados (multiárea)
Los primeros sistemas

De finales de los 40 a mediados de los 50.


No eran sistemas operativos.
El programador interactuaba directamente con
el hardware.
Dos problemas fundamentales:
Planificación
Tiempo de preparación
Sistemas de colas simples

Programa monitor residente.


El ususario envía los trabajos a un operador.
El operador pone los trabajos en cola.
El monitor controla la secuencia de eventos para
procesar la cola.
Cuando el trabajo termina, se devuelve el
control al monitor, que inmediatamente lee el
siguiente trabajo.
El monitor se encarga de la planificación.
Lenguaje de control de trabajos

Se utiliza para dar instrucciones al monitor.


Las instrucciones de control de trabajo
normalmente empiezan con $.
Por ejemplo:
$JOB
$FTN
... Instrucciones Fortran
$LOAD
$RUN
... Datos
$END
Funciones necesarias del
hardware

Protección de memoria
Para proteger el monitor.
Temporización
Para evitar que un único trabajo monopolice el
sistema.
Instrucciones privilegiadas
Sólo pueden ser ejecutadas por el monitor.
Ejemplo: instrucciones de E/S.
Interrupciones
Permite al procesador ceder y recuperar el control.
Sistemas de colas
multiprogramados

Los dispositivos de E/S son muy lentos.


Mientras que un programa está esperando una
instrucción de E/S, otro puede utilizar la CPU.
Monoprogramación

Ejecución Ejecución
Espera Espera

Tiempo
Multiprogramación de dos
programas

Ejecución Ejecución
Programa A Espera Espera

Ejecución Ejecución
Programa B Espera Espera Espera

Ejecución Ejecución

A B A B
Combinado Espera Espera

Tiempo
Multiprogramación de tres
programas

Ejecución Ejecución
Programa A Espera Espera

Ejecución Ejecución
Programa B Espera Espera Espera

Programa C Espera Ejecución Espera Ejecución Espera

Ejecución Ejecución

Combinado A B C A B C

Tiempo
Sistemas de tiempo compartido

Permiten al usuario interactuar directamente


con el computador.
Ejemplo: en trabajos interactivos
La multiprogramación permite a un determinado
número de usuarios interactuar con el
computador.
Planificación

Es la clave de la multiprogramación


Planificación a largo plazo
Planificación a medio plazo
Planificación a corto plazo
Planificación de E/S
Planificación a largo plazo

Determina qué programas se admiten para ser


procesados.
De este modo, controla el grado de
multiprogramación.
Una vez admitido, un trabajo pasa a ser un
proceso y se añade a una cola asociada al
planificador a corto plazo.
En algunos sistemas, se produce una función de
intercambio y el trabajo se añade a la cola del
planificador a medio plazo.
Planificación a medio plazo

Es parte de la función de intercambio (descrita


en la Sección 7.3.).
Normalmente se basa en la necesidad de
gestionar la multiprogramación.
Si el sistema no utiliza memoria virtual, este
planificador también se encargará de la gestión
de la memoria.
Planificación a corto plazo

También llamado distribuidor.


Toma la decisión más específica: qué trabajo se
ejecuta a continuación.
Es decir, qué trabajo utilizará el procesador
durante el próximo tiempo de espera.
Estados de los procesos

Asignar
procesador
Iniciar Salida
Nuevo Preparado En ejecución Salida
Suspender

Se produce
el evento
Esperar evento

En espera
Bloque de control de procesos

Identificador
Estado
Prioridad
Contador de programa
Punteros a memoria
Datos de contexto
Información del estado de las E/S
Información estadística
Elementos clave de un sistema
operativo

Sistema operativo

Llamadas a Gestor de Cola a Cola a


servicios desde llamadas a largo corto
procesos servicios plazo plazo

Interrupciones Colas de
desde procesos Gestor de E/S
interrupción Planificador
Interrupciones a corto
desde E/S plazo

Cede el control
Planificación del procesador

Solicitud FINAL
Cola a Cola a CPU
de proceso largo plazo corto plazo

E/S Cola de E/S

E/S Cola de E/S

E/S Cola de E/S


Gestión de la memoria

Monoprogramación
La memoria se divide en dos partes.
Una para el sistema operativo (el monitor residente).
Otra para el programa que se está ejecutando.
Multiprogramación
La parte de “usuario” se subdivide y se comparte
entre los distintos procesos activos.
Intercambio (swapping)

Problema:
las actividades de E/S son tan lentas en
comparación con el procesador que, incluso en
los sistemas multiprogramados, puede
permanecer inactivo la mayor parte del tiempo.
Soluciones:
Se puede ampliar la memoria principal.
Es caro.
Origina procesos mayores.
Otra solución es el intercambio.
¿Qué es el intercambio?

 Tenemos una cola a largo plazo de solicitudes de proceso


almacenadas en disco.
 Los procesos “se intercambian” a medida que queda espacio
disponible.
 Cuando un proceso ha concluido, se saca de la memoria principal.
 Si ninguno de los procesos en la memoria está en el estado
preparado (por ejemplo, si todos están esperando una operación de
E/S):
 El procesador intercambia uno de los procesos bloqueados, situándolo
en una cola intermedia.
 A continuación, acepta una nueva petición de proceso.
 Pero... el intercambio es una operación de E/S.
Definición de particiones

La memoria se divide en secciones a las que se


asignan los procesos (incluido el sistema
operativo).
Particiones de tamaño fijo:
Pueden tener distinto tamaño.
El proceso que se introduce en memoria se sitúa en
la partición más pequeña que puede incluirlo.
Se desperdicia algo de memoria.
Consecuencia:particiones de tamaño variable.
Particiones Sistema operativo Sistema operativo

fijas
8M 8M
2M
8M 4M

6M
8M

8M
8M

8M
8M

12 M
8M

8M
16 M
8M

(a) Particiones de igual tamaño (b) Particiones de distinto tamaño


Particiones de
tamaño variable (1)

 Se asigna al proceso exactamente la memoria que


necesita.
 Esto deja un hueco al final de la memoria, demasiado
pequeño para poderse utilizar.
Tan sólo queda un hueco pequeño (se desperdicia menos
meoria).
 Cuando todos los procesos están bloqueados, se saca
uno de la memoria y se carga otro nuevo.
 Puede que el proceso nuevo ocupe menos espacio que
el que se ha retirado.
 Entonces queda otro hueco.
Particiones de tamaño variable
(2)

Al final quedan muchos huecos pequeños


(fragmentación).
Soluciones:
Fusión: los huecos contiguos se unen en un hueco
más grande.
Compactación: de vez en cuando, el sistema
operativo desplaza los procesos en memoria para
juntar toda la memoria libre en un bloque (frente a la
defragmentación de disco).
Efecto de la partición dinámica

Sistema Sistema Sistema Sistema


operativo 128K operativo opeativo opeativo

Proceso 1 320K Proceso 1 320K


Proceso 1 320K
224K Proceso 2
Proceso 2 224K
896K Proceso 3
288K
576K 352K
64K

Sistema Sistema Sistema Sistema


operativo operativo operativo operativo
320K Proceso 2 224K
320K
Proceso 1 Proceso 1
320K
96K
Proceso 4 128K Proceso 4 128K Proceso 4 128K
224K
96K 96K
96K
288K Proceso 3 288K Proceso 3 288K
Proceso 3
Proceso 3 288K
64K 64K 64K
64K
Reposicionamiento

 No es seguro que el proceso se cargueen la misma


posición de la memori.
 Las instrucciones contienen direcciones:
Direcciones de datos
Direcciones de instrucciones (de salto)
 Dirección lógica: indica una posición relativa al comienzo
del programa.
 Dirección física: indica la posición actual en la memoria
principal.
 Conversión automática utilizando la dirección base.
Paginación

 La memoria se divide en partes iguales y relativamente


pequeñas (marcos de página).
 Los programas (procesos) también se dividen en partes
iguales y relativamente pequeñas (páginas).
 Se asigna el número de marcos de página que un
proceso necesita.
 El sistema operativo mantiene una lista de tres marcos.
 Un proceso no necesita marcos de página contiguos.
 El procesador utiliza una tabla de páginas para cada
proceso.
Dirección lógica y física:
paginación
Memoria
principal

Página 0
de A

Número Dirección relativa Número Dirección relativa Página 1


de página dentro de la página de página dentro del marco de A

Dirección Dirección Página 2


lógica física de A

Página 3
de A

Tabla de páginas
del proceso A
Memoria virtual

Paginación por demanda


No es necesario que todas las páginas de un proceso se
encuentren en la memoria.
Cada página se introduce en la memoria sólo cuando se
necesita.
Fallo de página
La página deseada no se encuentra en la memoria.
El sistema operativo debe cargar la página deseada.
Es posible que el sistema necesite sacar una página para dejar
un hueco libre.
Se selecciona la página que se va a sacar en función de su
historia reciente.
Hiperpaginación

 Una memoria pequeña almacena demasiados procesos.


 El sistema operativo pasa la mayor parte del tiempo
intercambiando páginas.
 Apenas se realizan trabajos efectivos.
 La luz del disco permanece encendida todo el tiempo.
 Soluciones:
Un buen algoritmo que determine la página que se ha de remplazar.
Reducir la cantidad de procesos en curso.
Aumentar la memoria.
Ventajas

No es necesario que la memoria almacene todos


los procesos que se van a ejecutar.
Podemos intercambiar las páginas que
necesitemos.
Por lo tanto, podemos ejecutar procesos
mayores que toda la memoria.
La memoria principal recibe el nombre de
memoria real.
El programador o usuario percibe una memoria
mucho mayor (memoria virtual).
Estructura de la tabla de
páginas
Dirección virtual

Página # Desplazamiento

Tabla de páginas

Página # Elemento Cadena

(Dispersión)

Marco #

Marco # Desplazamiento

Tabla de dispersión Tabla de páginas invertida Dirección real


Segmentación

Normalmente la paginación es invisible para el


programador.
La segmentación, en cambio, es visible.
Normalmente el programador asignará
segmentos distintos a programas y datos.
Puede haber distintos segmentos de programas
y de datos.
Ventajas de la segmentación

Simplifica la gestión de estructuras crecientes de


datos.
Permite modificar los programas y recopilarlos
independientemente, sin que sea necesario
volver a enlazar y cargarlos todos.
Permite que varios procesos compartan
segmentos.
Se facilita la protección.
Algunos sistemas combinan la segmentación y
la paginación.
Lecturas recomendadas

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 7.
 Operating Systems, Internals and Design
Principles, W. Stallings, Prentice Hall, 1998
Páginas web sobre sistemas operativos.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 8
Aritmética del computador
La unidad aritmético-lógica (ALU)

 Realiza las operaciones aritméticas y lógicas.


 El resto de elementos están para suministrar datos a
esta unidad.
 Representación de enteros.
 Puede expresar cantidades en coma flotante (reales).
 Puede poner una unidad separada en las operaciones
con la unidad de coma flotante (coprocesador
matemático).
 En las operaciones de la unidad de coma flotante
puede incluir un chip en una unidad separada
(microprocesador 486DX +).
Entradas y salidas de la ALU

Unidad
de Indicadores
control

Registros Registros
Representación de enteros

 Para representar los números, sólo pueden


utilizarse los dígitos 1 y 0.
 Los números positivos se almacenan en el sistema
binario.
Ejemplo: 41= 00101001.
 No dispone de signo menos.
 No dispone de coma.
 Representación en signo-magnitud.
 Representación en complemento a dos.
Representación en signo-magnitud
El bit más a la izquierda de la palabra es un bit
de signo.
0 significa número positivo.
1 significa número negativo.
+18 = 00010010
 -18 = 10010010
Problemas:
Se necesita tener en cuenta, tanto los signos de los
números como sus magnitudes, si se emplea la
aritmética en coma flotante.
Hay dos representaciones del número 0 (+0 y -0).
Representación en
complemento a dos

+3 = 00000011
+2 = 00000010
+1 = 00000001
+0 = 00000000
 -1 = 11111111
 -2 = 11111110
 -3 = 11111101
Beneficios

Una representación de 0.
Facilita las operaciones aritméticas (véase a
continuación).
Facilita bastante las operaciones con números
negativos.
3 = 00000011
El complemento booleano tiene como resultado:
11111100.
Sumar 1 al patrón de bits resultante: 11111101.
Ilustración geométrica de los números
enteros en complemento a dos
Sustracción Adición de Sustracción de Adición de
de números números números números
positivos positivos positivos positivos

(a) Números de 4 bits (b) Números de n bits


Caso especial de negación 1

0= 00000000
Bit a bit sin signo 11111111
Sumarle 1 al bit menos significativo
(LSB) situado a la derecha +1
Resultado 1 00000000
Se ignora el desbordamiento, por lo tanto:
- 0 = 0
Caso especial de negación 2

-128 = 10000000
Bit a bit sin signo 01111111
Sumarle 1 al LSB +1
Resultado 10000000
De este modo:
-(-128) = -128 X
Controlar al bit más significativo o MSB (también
llamado bit de signo).
Debería cambiar durante la negación.
El rango de números

8 bits en complemento a dos


+127 = 01111111 = 27 -1
 -128 = 10000000 = -27
16 bits en complemento a dos
+32767 = 011111111 11111111 = 215 - 1
 -32768 = 100000000 00000000 = -215
Conversión entre longitudes de
bits diferentes

Para los números positivos rellenar con ceros


+18 = 00010010
+18 = 00000000 00010010
Para los números negativos rellenar con unos
-18 = 10010010
-18 = 11111111 10010010
Es decir, añadir los MSB (o bit de signo).
Suma y resta

Suma binaria normal.


Observar el bit de signo para detectar el
desbordamiento.

Se obtiene el complemento a dos del


substraendo y se le suma al minuendo:
es decir, a - b = a + (-b)

Por lo tanto, sólo se necesita la suma y los


complementadores.
Hardware para la suma y la resta

Registro B Registro A

Complementador

SW

OF = Bit de desbordamiento OF Sumador

SW = Conmutador (selecciona
suma o resta)
Multiplicación

Es una operación compleja.


Generar productos parciales para cada dígito.
Tener cuidado con la posición de los valores (en
forma de columna).
Sumar los productos parciales.
Ejemplo de multiplicación

 1011 Multiplicando (11).


 x 1101 Multiplicador (13).
 1011 Productos parciales.
 0000 Nota: Si el bit del multiplicador es 1, el producto parcial es el
 1011 multiplicando (colocar el valor hacia la izquierda).
 1011 De lo contrario es 0.
 10001111 Producto (143).
 Nota: Es necesario que el resultado sea de longitud
doble.
Multiplicación de binarios sin
signo
Multiplicando
M n-1 M0

Sumar Lógica de control de


Sumador de n-bits
desplazamientos y sumas

Desplazar a derecha

C An-1 A0 Q n-1 Q0

Multiplicador
Ejemplo de cálculo

Valores iniciales

Suma
Desplazamiento Primer ciclo

Suma Segundo ciclo

Suma
Suma Tercer ciclo
Desplazamiento

Suma
Cuarto ciclo
Desplazamiento
Diagrama de flujo para la
multiplicación de binarios sin signo
INICIO

C, A 0
M Multiplicando
Q Multiplicador
Cuenta n

No Sí
¿Q0 = 1?

C, A A+M
Desplazar C, A, Q
Cuenta cuenta - 1

No Sí
¿Cuenta = 0? FIN Producto en A, Q
Multiplicación de números
negativos

No puede realizarse.


Solución 1:
Convertirlos en números positivos, si es necesario.
Multiplicar como se ha explicado anteriormente.
Si los signos son distintos, poner el signo menos al
resultado.
Solución 2:
Algoritmo de Booth.
Algoritmo de Booth
INICIO

A 0 Q-1 0
M Multiplicando
Q Multiplicador
Cuenta n

= 10 = 01
Q0 , Q -1

A A-M = 00 = 11 A A+M
Desplazamiento
aritmético a derecha:
A, Q, Q -1
Cuenta Cuenta - 1

No Sí
¿Cuenta = 0? INICIO
FIN
Ejemplo de algoritmo de Booth

Valores iniciales

A A-M Primer ciclo


Desplazamiento

Desplazamiento Segundo ciclo

AA AA++M M Tercer
Tercerciclo
Desplazamiento
Desplazamiento ciclo

Desplazamiento Cuarto ciclo


División

Es algo más compleja que la multiplicación.


El proceso de división de números negativos es
aún más complicado.
Está basada en el proceso de división larga.
División de enteros binarios sin
signo

00001101 Quotient
Cociente

Divisor
Divisor 1011 10010011 Dividend
Dividendo
1011
001110
Partial
Restos 1011
Parciales
Remainders
001111
1011
Resto
Remainder
100
Números reales

Fracciones.
Podría realizarse mediante el proceso binario:
1001.1010 = 24 + 20 +2-1 + 2-3 =9,625
¿Dónde está la coma binaria?
¿Es fija?
Pocas veces.
¿Se mueve?
¿Cómo se sabe dónde está?
Coma flotante
Bit de signo

Exponente Parte significativa o mantisa


sesgado

+/- ,mantisa x 2exponente


Es un nombre inapropiado.
En realidad, la coma se sitúa entre el bit de
signo y la mantisa.
El exponente indica la colocación del valor (es
decir, la posición de la coma).
Ejemplos de coma flotante
Signo de la
mantisa 8 bits 32 bits

Exponente sesgado Mantisa

a) Formato

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 1 -10100 = 1 01101011 10100010000000000000000

b) Ejemplos
Signos en coma flotante

La mantisa se almacena en complemento a dos.


El exponente está en la representación sesgada.
Ejemplo: Un sesgo de 128 comprende:
Un campo de 8 bits.
Los valores verdaderos que van desde 0 a 255.
La resta de 128 para obtener el resultado correcto.
El rango de -128 a +127.
Normalización

Los números en coma flotante se suelen


normalizar.
Es decir, el exponente se ajusta para que el bit
más significativo (MSB) de la mantisa sea 1.
Debido a que siempre es 1, no hay necesidad de
almacenarlo.
(En cambio, en la notación científica los
números están normalizados de tal forma que
hay un dígito antes de la coma).
Ejemplo: 3,123 x 103.
Los rangos en coma flotante

Para un número de 32 bits:


Exponente de 8 bits.
+/- 2256 1,5 x 1077
Precisión:
Como consecuencia de haber cambiado la posición
del bit menos significativo (LSB) en la mantisa.
Mantisa de 23 bits: 2-23 1,2 x 10-7 .
La coma estará situada en la sexta posición.
Números representables

Enteros representables

Recta Real

(a) Enteros en complemento a dos

Desbordamiento Desbordamiento a
a cero negativo cero positivo
Desbordamiento Números negativos Números positivos Desbordamiento
negativo representables representables positivo
Cero

Recta
0,5 X 0,5 X Real

(b) Números en coma flotante


Formato IEEE 754

Estándar para el almacenamiento en coma flotante.


Define los formatos tanto de 32 como de 64 bits.
Con exponentes de 8 y de 11 bits,
respectivamente.
Los formatos ampliados incluyen bits adicionales en
el exponente y en la mantisa para los resultados
intermedios.
Aritmética en coma flotante:
Suma y resta

Comprobar valores cero.


Ajuste de mantisas (ajuste de exponentes).
Sumar o restar las mantisas.
Normalizar el resultado.
Aritmética en coma flotante:
Multiplicación y división

Comprobar valores cero.


Sumar y restar exponentes.
Multiplicar y dividir mantisas (teniendo en
cuenta el signo).
Normalizar.
Redondear.
Todos los resultados intermedios deben doblar
su longitud al ser almacenados.
Multiplicación MULTIPLICAR

en coma ¿X = 0?
No
¿Y = 0?
No Sumar
exponentes

flotante Sí
Z 0

Restar
sesgo

RETORNAR
¿Desborda- Sí Indicar
miento en desborda-
exponente?
miento
No
Sí Indicar
¿Desbordamiento desborda-
a cero en
exponente? miento a
cero
No

Multiplicar
mantisas

Normalizar

Redondear RETORNAR
División en DIVIDIR

coma ¿X = 0?
No
¿Y = 0? No Restar
exponentes

flotante Sí
Z 0

Z Sumar
sesgo

RETORNAR
¿Desborda- Sí Indicar
miento en
exponente? desborda-
miento
No
Indicar
¿Desborda- Sí desborda-
miento a cero
en exponente?
miento a
cero
No

Dividir
mantisas

Normalizar

Redondear RETORNAR
Lecturas y sitios web
recomendados

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 8.
El formato IEEE 754 en la página web de IEEE.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 9
Repertorios de instrucciones:
características y funciones
¿Qué es un repertorio de
instrucciones?

El conjunto completo de instrucciones que se


realizan en la CPU.
Código máquina.
Binario.
Generalmente representado por un conjunto de
códigos de ensamblaje.
Elementos de una instrucción

Código de operación (“Codop”)

Referencia a operandos fuente

Referencia al operando resultado

Referencia a la siguiente instrucción


¿Dónde se almacenan los
operandos?

Memoria principal (o memoria virtual, o bien


cache)

Registro de la CPU

Dispositivo de E/S
Representación de las
instrucciones

En el código máquina, cada instrucción tiene


una única secuencia de bits.
Las representaciones simbólicas que se utilizan
son:
Ejemplo: ADD (sumar), SUB (restar), LOAD (cargar
datos de memoria).
Los operandos también pueden representarse
de la siguiente forma:
ADD A, B.
Tipos de instrucciones

Procesamiento de datos
Almacenamiento de datos (memoria principal)
Transferencia de datos (E/S)
Control del flujo del programa
Número de direcciones

Instrucciones de tres direcciones:


Operando 1, operando 2, resultado
a = b + c
Puede que haya otra instrucción más adelante
(generalmente implícita).
No es común.
Necesita palabras de gran longitud para albergar
todo:
Número de direcciones

Instrucciones de 2 direcciones:
Una dirección es, a su vez, operando y resultado.
a = a + b
Reduce la longitud de la instrucción.
Requiere trabajo adicional:
Almacenamiento temporal para albergar más resultados.
Número de direcciones

Instrucciones de una dirección:


La segunda dirección está implícita.
Generalmente con un registro (acumulador).
Normalmente en las primeras máquinas.
Número de direcciones

Instrucciones de 0 (cero) direcciones:


Todas las direcciones están implícitas.
Utiliza una pila (stack).
Ejemplo: push a
 push b
 add
 pop c

c = a + b
Cuántas direcciones

Más direcciones por instrucción:


Instrucciones más complejas.
Más registros:
Las operaciones entre los registros son más rápidas.
Menos instrucciones por programa.
Menos direcciones por instrucción:
Instrucciones menos complejas.
Más instrucciones por programa.
La captación / ejecución de las instrucciones es más
rápida.
Decisiones en el diseño

Repertorio de operaciones:
¿Cuántas operaciones hay que considerar?
¿Qué pueden hacer?
¿Son complejas?
Tipos de datos.
Formatos de instrucciones:
Longitud del campo del código de operaciones.
Número de direcciones.
Decisiones de diseño

Registros:
Número de registros de la CPU disponibles.
¿En qué tipo de registros se pueden ejecutar qué
tipo de operaciones?
Modos de direccionamiento.
RISC (Computador de conjunto reducido de
instrucciones), en contraposición a CISC
(Computador de conjunto complejo de
instrucciones).
Tipos de operandos

Direcciones.
Números:
Enteros o en coma flotante.
Caracteres:
ASCII (Código Estándar Americano para Intercambio
de Información), etc.
Datos lógicos:
Bits o flags (indicadores)
 (Por otro lado: ¿Qué diferencia existe entre números y caracteres?)
Tipos de datos en Pentium

Byte (8 bits).
Palabra (16 bits).
Palabra doble (32 bits).
Palabra cuádruple (64 bits).
El direccionamiento se realizan mediante una
unidad de 8 bits.
Las palabras dobles de 32 bits se lee en
direcciones divisibles por 4.
Tipos de datos específicos
 General: con contenido binario arbitrario.
 Entero : un valor binario.
 Ordinal : entero sin signo
 BCD (decimal codificado en binario) desempaquetado:
un dígito en cada byte.
 BCD empaquetado : 2 dígitos BCD en un byte.
 Puntero de proximidad (puntero cercano) :
desplazamiento de 32 bits dentro dentro de un
segmento.
 Campo de bits.
 Cadena de bytes.
 Coma flotante.
Tipos de datos de coma
flotante en el Pentium II

Consulte la página 322 del libro de Organización


y Arquitectura de Computadores de William
Stallings.
Tipos de operaciones

Transferencias de datos.
Aritméticas.
Lógicas.
Conversión.
Entrada/Salida.
Control del sistema.
Control de flujo.
Transferencia de datos

Especificar:
Fuente.
Destino.
Cantidad de datos.
Diferentes instrucciones para diferentes
movimientos:
Ejemplo: IBM 370.
O una instrucción y diferentes direcciones
Ejemplo: VAX.
Aritméticas

Add (sumar), Substract (restar), Multiply


(multiplicar), Divide (dividir).
Números enteros con signo.
¿Números en coma flotante?
Puede incluir:
Increment: incrementa en 1 el operando (a++).
Decrement: decrementa en 1 el operando (a--).
Negate: cambia el signo del operador (-a).
Lógicas

Operaciones bit a bit.


AND, OR, NOT.
Conversión

Ejemplo: conversión de binario a decimal.


Entrada/Salida

Pueden ser instrucciones específicas.


Se pueden realizar utilizando instrucciones de
movimiento de datos (asignadas en memoria).
Se pueden realizadar a través de un controlador
aparte (DMA).
Control de sistemas

Instrucciones en zonas privilegiadas.


La CPU necesita estar en un estado concreto:
Anillo 0 en 80386+
Modo núcleo
Para la utilización del sistema operativo.
Control de flujo

Bifurcación:
Ejemplo: saltar a la posición x, si el resultado es 0.
Salto implícito:
Ejemplo: incrementar y saltar, si es cero:
ISZ Registro 1
Saltar xxxx
ADD A
Llamada a procedimiento.
Frente a la llamada a interrupción.
Lecturas recomendadas

Tipos de operaciones en el Pentium II y el


PowerPC.

Consulte a partir de la página 326 del libro de


Stallings.
Orden de los bytes

¿En qué orden se leen aquellos números que


ocupan más de un byte?
Ejemplo:(un valor hexadecimal para que su
lectura sea más fácil).
12345678 se puede almacenar en posiciones de
4x8 bits de la siguiente manera:
Ejemplos del orden de los bytes

Dirección Valor (1) Valor (2)


184 12 78
185 34 56
186 56 34
186 78 12

Entonces, ¿debe leerse en sentido descendente


o ascendente?
Nombres del orden de los bytes

El problema se conoce como “Endian”.


El sistema de la izquierda almacena el byte más
significativo en la dirección con valor numérico
más bajo.
Este modo se denomina “big-endian”.
El sistema de la derecha almacena el byte
menos significativo en la dirección con valor
numérico más bajo.
Este modo se denomina “little-endian”.
Estándar, ¿qué tipo de
estándar?

Pentium (80x86), VAX son “little-endian”.


IBM 370, Moterola 680x0 (Mac), y la mayoría de
los RISC son “big-endian”.
Internet es “big-endian”.
En el PC, hace que los programas de escritura de
Internet sean más lentos.
WinSock facilita la conversión de las funciones htoi e
itoh (Host a Internet e Internet a Host).
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 10
Repertorios de instrucciones:
modos de direccionamiento y
formatos
Modos de direccionamiento

Inmediato
Directo
Indirecto
Registro
Indirecto con registro
Con Desplazamiento (indexado)
Pila
Direccionamiento inmediato

El operando es parte de la instrucción.


Operando = campo de dirección (A).
Ejemplo: ADD 5
Añadir 5 a los contenidos del acumulador.
5 es el operando.
No hace falta una referencia a memoria para
captar los datos.
Es rápido.
La magnitud del operando está limitada.
Esquema de direccionamiento
inmediato

Instrucción
Codop Operando
Direccionamiento directo
 El campo de dirección contiene la dirección real del
operando.
 Dirección real (EA) = campo de dirección (A)
 Ejemplo: ADD A
Añadir contenidos de la celda A al acumulador.
Buscar la dirección A en la memoria para el operando.
 Tan sólo requiere una referencia a memoria para acceder a
los datos.
 No necesita ningún cálculo especial para acceder a la
dirección real.
 Proporciona un espacio de direcciones restringido.
Esquema de direccionamiento
directo

Instrucción
Codop Dirección A
Memoria

Operando
Direccionamiento indirecto

La celda de la memoria referenciada por el


campo de direcciones contiene la dirección
completa del operando.
EA = (A)
Mirar en A, encontrar la dirección (A) y, allí, buscar
el operando.
 Ejemplo: ADD (A)
Añadir los contenidos de la celda referenciada por los
contenidos de A al acumulador.
Direccionamiento indirecto

Amplio espacio de direcciones.


2n, siendo n la longitud de palabra.
El direccionamiento puede ser anidado,
multinivel o en cascada.
Ejemplo: EA = (((A)))
Pueden requerirse varios accesos a memoria
para encontrar el operando.
Por lo tanto, es más lento.
Esquema de direccionamiento
indirecto

Instrucción
Codop Dirección A
Memoria

Indicador del operando

Operando
Direccionamiento
de registros

El operando se encuentra en el registro


nombrado en el campo de direcciones.
EA = R
El número de registros está limitado.
Se necesita un campo de direcciones muy
pequeño.
Instrucciones más cortas.
Captación de instrucciones más rápida.
Direccionamiento
de registros

No hay acceso a la memoria.


Ejecución muy rápida.
Espacio de direcciones está muy limitado.
Se mejoran las prestaciones con varios
registros.
Necesita un buen programador en lenguaje
ensamblador o un compilador de escritura.
Ejemplo: programación en C.
Direccionamiento indirecto con registro.
Se opone al direccionamiento directo.
Esquema de direccionamiento
de registros

Instrucción
Codop Dirección de registro R
Registros

Operando
Direccionamiento indirecto con
registro

Se opone al direccionamiento indirecto.


EA = (R)
El operando se encuentra en la celda de la
memoria referenciada por el contenido del
registro R.
Amplio espacio de direcciones (2n).
Cuenta con un acceso a memoria menor que en
el direccionamiento indirecto.
Esquema de direccionamiento
indirecto con registro

Instrucción
Codop Dirección de registro R
Memoria

Registros

Indicador del operando Operando


Direccionamiento con
desplazamiento

EA = A + (R)
El campo de direcciones contiene dos valores:
A = valor básico.
R = registro que contiene el desplazamiento.
O viceversa.
Esquema de direccionamiento con
desplazamiento

Instrucción
Codop Registro R Dirección A
Memoria

Registros

Indicador del operando + Operando


Direccionamiento relativo

Es una variedad de direccionamiento con


desplazamiento.
R = contador de programa (PC)
EA = A + (PC)
Es decir, el operando se extrae de las celdas A,
que a su vez se extraen de la posición actual
referenciada por el PC.
Se opone a la posición de las referencias y a la
utilización de la cache.
Direccionamiento con
registro-base

A contiene un desplazamiento.
R contiene el indicador de la dirección base.
R puede estar explícito o implícito.
Por ejemplo, los segmentos se registran en
80x86.
Direccionamiento indexado

A = base
R = desplazamiento
EA = A + R
Esta técnica se utiliza para acceder a la matriz:
EA = A + R
R++
Combinaciones

Post-indexado
EA = (A) + (R)

Pre-indexado
EA = (A+(R))
Direccionamiento de pila

El operando está (de forma implícita) en la


cabecera de la pila.
Ejemplo:
ADD Se extraen dos objetos de la pila y se
añaden.
Formatos de instrucciones

Definen la descripción en bits de una


instrucción.
Incluyen un código de operación (codop).
Incluyen (de forma implícita o explícita) ninguno
o algunos operandos.
Normalmente, en los repertorios de
instrucciones se emplea más de un formato de
instrucción.
Longitud de instrucción

Esta decisión afecta, y se ve afectada por:


El tamaño de la memoria.
La organización de la memoria.
La estructura del bus.
La complejidad de la CPU.
La velocidad de la CPU.
Se debe encontrar un equilibrio entre el deseo
de disponer de un repertorio de instrucciones
potente y la necesidad de ahorrar espacio.
Asignación de los bits

Número de modos de direccionamiento.


Número de operandos.
Registros frente a memoria.
Número de conjuntos de registros.
Rango de direcciones.
Granularidad de las direcciones.
Lecturas recomendadas

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 10.
Páginas web sobre Intel y PowerPC.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 11
Estructura y función de la CPU
Estructura de la CPU

La CPU debe:


Captar instrucción
Interpretar instrucción
Captar datos
Procesar datos
Escribir datos
Registros

La CPU debe tener espacio para trabajar


(almacenamiento temporal).
Se conocen con el nombre de registros.
El número y la función varía de un diseño a otro
de procesador.
Son una de las principales decisiones de diseño.
Nivel más alto de la jerarquía.
Registros visibles para el
usuario

Uso general
Datos
Direcciones
Códigos de condición
Registros de uso general (1)

Pueden ser de uso general real.


Pueden ser de uso restringido.
Pueden utilizarse para datos o direcciones.
Acumulador
Direcciones
Segmento
Registros de uso general (2)

Hacerlos de uso completamente general


Aumenta la flexibilidad y las opciones del
programador
Aumenta la complejidad y el tamaño de la instrucción
Especializar su uso
Intrucciones de menor tamaño (más rápidas)
Menor flexibilidad
¿Cuántos registros
de uso general?

Entre 8 y 32.
Menor cantidad = más referencias a memoria.
Más registros no reducen las referencias a
memoria y ocupan el estado real de procesador.
Tener en cuenta los sistemas RISC.
¿Cuál es su longitud?

Lo suficientemente grandes como para albergar


la dirección completa.
Lo suficientemente grandes como para albergar
la palabra más grande.
A menudo es posible combinar dos registros de
datos:
Programación C
double int a;
long int a;
Registros de código de
condición

Conjunto de bits individuales


Ejemplo: El resultado de la última operación fue cero
Pueden ser leídos (implicitamente) por los
programas
Ejemplo : Saltar si el resultado es cero
Los programas (generalmente) no pueden
fijarlos.
Registros de control y de
estado

Contador de programa
Registro de instrucción
Registro de dirección de memoria
Registro intermedio de memoria

Revisión: ¿qué hace cada uno de ellos?


Palabra de estado del programa
Un conjunto de bits
Incluye códigos de condición
Signo del último resultado
Cero
Acarreo
Igual
Desbordamiento
Interrupciones habilitadas/inhabilitadas
Supervisor
Modo supervisor o usuario

Nivle de privilegio cero de Intel.


Modo Kernel.
Permite ejecutar ciertas instrucciones
privilegiadas.
Utilizado por el sistema operativo.
No está disponible para los programas de
usuarios.
Otros registros

Puede que haya registros que indiquen:


Bloques de control del proceso (ver Sistemas
Operativos)
Vectores de interrupción (ver Sistemas Operativos)

Ejemplo: el diseño de la CPU y el diseño del


sistema operativo están muy relacionados.
Ejemplos de organizaciones de registros
Registros de datos Registros generales Registros generales
Acumulador
Base
Contador
Datos

Punteros e índices
Puntero de pila
Puntero base
Índice fuente
Registros de direcciones Índice destino
Estado del programa
Segmento Acumulador
Código Acumulador
Datos
Pila
Extra

Estado del programa


Ptr. instr.
Indicadores
Estado del programa
Contador de programa
Registro de estado
Lectura básica

Capítulo 11 del libro de Stallings.


Páginas web y specs (Standard Performance
Evaluation Corporations) de los fabricantes.
El ciclo de instrucción

Revisión.
Capítulo 3 del libro de Stallings.
El ciclo indirecto

Puede necesitar acceso a memoria para captar


operandos.
El direccionarmiento indirecto necesita accesos
a memoria adicionales.
Se puede considerar como un subciclo de
instrucción más.
Ciclo de instrucción indirecto

Captación

Interrupción Indirecto

Ejecución
Diagrama de estados del ciclo
de instrucción
Indirección Indirección

Almacena-
Captación de Captación de
miento de
instrucción operando
operando

Más de un Más de un
operando resultado

Cálculo de Decodificación Cálculo de Operación Cálculo de


la dirección de de operación la dirección con los la dirección Interrupción Interrupción
de la instrucción del operando datos del operando
la instrucción

No
Instrucción finalizada, interrupción
Volver a por otro dato de
captar la instrucción siguiente
una cadena o un vector
Flujo de datos (Captación de la
instrucción)

Depende del diseño de la CPU.


Captación:
El PC contiene la dirección de la siguiente
instrucción.
Esta dirección es llevada a MAR.
Se coloca en el bus de direcciones.
La unidad de control solicita una lectura de memoria.
El resultado se pone en el bus de datos, se copia en
MBR y después se lleva a IR.
Mientras tanto, PC se incrementa en 1.
Flujo de datos (Captación de
datos)

Se examina IR.


Si hay direccionamiento indirecto, se lleva a
cabo un ciclo indirecto.
Los N bits más a la derecha de MBR se transfieren a
MAR.
La unidad de control solicita una lectura de memoria.
El resultado (la dirección del operando) se lleva a
MBR.
Flujos de datos (Ciclo de
captación)
CPU

MAR
PC
Memoria

Unidad de
control

IR MBR

Bus de Bus de Bus de


direcciones datos control
MBR = Registro intermedio de memoria
MAR = Registro de dirección de memoria
IR = Registro de instrucción
PC = Contador de programa
Flujos de datos (Ciclo indirecto)
CPU

MAR

Memoria

Unidad de
control

MBR

Bus de Bus de Bus de


direcciones datos control
Flujo de datos (Ejecución)

Adopta muchas formas.


Depende de la instrucción que se esté
ejecutando.
Puede incluir:
Lectura o escritura de memoria
Entrada/Salida
Transferencias entre registros
Operaciones de la ALU
Flujo de datos (Interrupción)

 Simple.
 Predeci.ble
 El contenido actual de PC tiene que ser salvado para
poder reanudar la actividad tras la interrupción.
 El contenido de PC se transfiere a MBR.
 La posición de memoria especial (ej: puntero de pila) se
carga en MAR.
 MBR se escribe en la memoria.
 PC se carga con la dirección de la rutina de interrupción.
 Se podrá captar la siguiente instrucción (primer
manejador de instrucciones).
Flujo de datos (Ciclo de
interrupción)
CPU

PC MAR

Memoria

Unidad
de
control

MBR

Bus de Bus de Bus de


direcciones datos control
Precaptar

Captación a partir de la memoria principal


Generalmente la ejecución no accede a la
memoria principal.
Puede captar la siguiente instrucción durante la
ejecución de la instrucción actual.
Se denomina precaptación de la instrucción.
La prestación se mejora

Pero no se duplica:
El tiempo de captación es, por lo general, más corto
que el de ejecución.
¿Precaptar más de una instrucción?
Si se produce un salto o una bifurcación, significa
que las instrucciones precaptadas no son las
requeridas.
Anadir más etapas para mejorar la prestación.
Segmentación de cauce
(Pipelining)

Captar instrucción (Fetch instruction, FI)


Decodificar instrucción (Decode instruction, DI)
Calcular operandos (Calculate operands, CO)
Captar operandos (Fetch operands, FO)
Ejecutar instrucciones (Execute instructions, EI)
Escribir operando (Write result, WO)

Solapamiento de estas operaciones.


Diagrama de tiempos de la
segmentación de cauce (Pipeline)
Tiempo

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Instrucción 5

Instrucción 6

Instrucción 7

Instrucción 8

Instrucción 9
Salto en la segmentación de
cauce (Pipeline)
Tiempo Penalización debida al salto

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Instrucción 5

Instrucción 6

Instrucción 7

Instrucción 15

Instrucción 16
Tratamiento de saltos

Flujos múltiples
Precaptar el destino del salto
Buffer de bucles
Predicción de saltos
Salto retardado
Flujos múltiples

Tienen dos cauces.


Precaptan cada salto en diferentes cauces.
Hay que utilizar el cauce correcto.

Provoca retardos en el acceso al bus y a los


registros.
Si hay múltiples saltos, se necesita un mayor
número de cauces.
Precaptar el destino del salto

Se precapta la instrucción destino del salto,


además de las instrucciones siguientes a la
bifurcación.
La instrucción se guarda hasta que se ejecute la
instrucción de bifurcación.
El IBM 360/91 usa este método.
Buffer de bucles

Memoria muy rápida.


Gestionada por la etapa de captación de
instrucción del cauce.
Comprueba el buffer antes de hacer la captación
de memoria.
Muy eficaz para pequeños bucles y saltos.
Comparar con el cache.
CRAY-1 lo utiliza.
Predicción de saltos (1)

Predecir que nunca se salta:


Asume que el salto no se producirá.
Siempre capta la siguiente instrucción.
68020 y VAX 11/780.
VAX no precaptará la instrucción que viene detrás si
se produce un fallo de página (Sistema operativo
frenta al diseño de la CPU).
Predecir que siempre se salta:
Asume que el salto se producirá.
Siempre capta la instrucción destino del salto.
Predicción de saltos (2)

Predecir según el código de operación:


Hay instrucciones que tienen más probabilidades de
saltar que otras.
La tasa de acierto puede llegar a alcanzar un 75%.
Conmutador saltar/no saltar:
Basado en la historia de las instrucciones.
Eficaz para los bucles.
Predicción de saltos (3)

Salto retardado:
No hacer el salto hasta que sea necesario.
Reordenar las instrucciones.
Diagrama de estados de la
predicción de saltos
No se salta
Predicción: Predicción:
Se salta saltar saltar
Se salta

Se salta No se
salta

No se salta
Predicción: Predicción: No se salta
no saltar no saltar
Se salta
Lectura básica

Ejemplos de procesadores.
 Organización y Arquitectura de Computadores,
W. Stallings, Capítulo 11.
Páginas web, etc.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 11
Estructura y función de la CPU
Estructura de la CPU

La CPU debe:


Captar instrucción
Interpretar instrucción
Captar datos
Procesar datos
Escribir datos
Registros

La CPU debe tener espacio para trabajar


(almacenamiento temporal).
Se conocen con el nombre de registros.
El número y la función varía de un diseño a otro
de procesador.
Son una de las principales decisiones de diseño.
Nivel más alto de la jerarquía.
Registros visibles para el
usuario

Uso general
Datos
Direcciones
Códigos de condición
Registros de uso general (1)

Pueden ser de uso general real.


Pueden ser de uso restringido.
Pueden utilizarse para datos o direcciones.
Acumulador
Direcciones
Segmento
Registros de uso general (2)

Hacerlos de uso completamente general


Aumenta la flexibilidad y las opciones del
programador
Aumenta la complejidad y el tamaño de la instrucción
Especializar su uso
Intrucciones de menor tamaño (más rápidas)
Menor flexibilidad
¿Cuántos registros
de uso general?

Entre 8 y 32.
Menor cantidad = más referencias a memoria.
Más registros no reducen las referencias a
memoria y ocupan el estado real de procesador.
Tener en cuenta los sistemas RISC.
¿Cuál es su longitud?

Lo suficientemente grandes como para albergar


la dirección completa.
Lo suficientemente grandes como para albergar
la palabra más grande.
A menudo es posible combinar dos registros de
datos:
Programación C
double int a;
long int a;
Registros de código de
condición

Conjunto de bits individuales


Ejemplo: El resultado de la última operación fue cero
Pueden ser leídos (implicitamente) por los
programas
Ejemplo : Saltar si el resultado es cero
Los programas (generalmente) no pueden
fijarlos.
Registros de control y de
estado

Contador de programa
Registro de instrucción
Registro de dirección de memoria
Registro intermedio de memoria

Revisión: ¿qué hace cada uno de ellos?


Palabra de estado del programa
Un conjunto de bits
Incluye códigos de condición
Signo del último resultado
Cero
Acarreo
Igual
Desbordamiento
Interrupciones habilitadas/inhabilitadas
Supervisor
Modo supervisor o usuario

Nivle de privilegio cero de Intel.


Modo Kernel.
Permite ejecutar ciertas instrucciones
privilegiadas.
Utilizado por el sistema operativo.
No está disponible para los programas de
usuarios.
Otros registros

Puede que haya registros que indiquen:


Bloques de control del proceso (ver Sistemas
Operativos)
Vectores de interrupción (ver Sistemas Operativos)

Ejemplo: el diseño de la CPU y el diseño del


sistema operativo están muy relacionados.
Ejemplos de organizaciones de registros
Registros de datos Registros generales Registros generales
Acumulador
Base
Contador
Datos

Punteros e índices
Puntero de pila
Puntero base
Índice fuente
Registros de direcciones Índice destino
Estado del programa
Segmento Acumulador
Código Acumulador
Datos
Pila
Extra

Estado del programa


Ptr. instr.
Indicadores
Estado del programa
Contador de programa
Registro de estado
Lectura básica

Capítulo 11 del libro de Stallings.


Páginas web y specs (Standard Performance
Evaluation Corporations) de los fabricantes.
El ciclo de instrucción

Revisión.
Capítulo 3 del libro de Stallings.
El ciclo indirecto

Puede necesitar acceso a memoria para captar


operandos.
El direccionarmiento indirecto necesita accesos
a memoria adicionales.
Se puede considerar como un subciclo de
instrucción más.
Ciclo de instrucción indirecto

Captación

Interrupción Indirecto

Ejecución
Diagrama de estados del ciclo
de instrucción
Indirección Indirección

Almacena-
Captación de Captación de
miento de
instrucción operando
operando

Más de un Más de un
operando resultado

Cálculo de Decodificación Cálculo de Operación Cálculo de


la dirección de de operación la dirección con los la dirección Interrupción Interrupción
de la instrucción del operando datos del operando
la instrucción

No
Instrucción finalizada, interrupción
Volver a por otro dato de
captar la instrucción siguiente
una cadena o un vector
Flujo de datos (Captación de la
instrucción)

Depende del diseño de la CPU.


Captación:
El PC contiene la dirección de la siguiente
instrucción.
Esta dirección es llevada a MAR.
Se coloca en el bus de direcciones.
La unidad de control solicita una lectura de memoria.
El resultado se pone en el bus de datos, se copia en
MBR y después se lleva a IR.
Mientras tanto, PC se incrementa en 1.
Flujo de datos (Captación de
datos)

Se examina IR.


Si hay direccionamiento indirecto, se lleva a
cabo un ciclo indirecto.
Los N bits más a la derecha de MBR se transfieren a
MAR.
La unidad de control solicita una lectura de memoria.
El resultado (la dirección del operando) se lleva a
MBR.
Flujos de datos (Ciclo de
captación)
CPU

MAR
PC
Memoria

Unidad de
control

IR MBR

Bus de Bus de Bus de


direcciones datos control
MBR = Registro intermedio de memoria
MAR = Registro de dirección de memoria
IR = Registro de instrucción
PC = Contador de programa
Flujos de datos (Ciclo indirecto)
CPU

MAR

Memoria

Unidad de
control

MBR

Bus de Bus de Bus de


direcciones datos control
Flujo de datos (Ejecución)

Adopta muchas formas.


Depende de la instrucción que se esté
ejecutando.
Puede incluir:
Lectura o escritura de memoria
Entrada/Salida
Transferencias entre registros
Operaciones de la ALU
Flujo de datos (Interrupción)

 Simple.
 Predeci.ble
 El contenido actual de PC tiene que ser salvado para
poder reanudar la actividad tras la interrupción.
 El contenido de PC se transfiere a MBR.
 La posición de memoria especial (ej: puntero de pila) se
carga en MAR.
 MBR se escribe en la memoria.
 PC se carga con la dirección de la rutina de interrupción.
 Se podrá captar la siguiente instrucción (primer
manejador de instrucciones).
Flujo de datos (Ciclo de
interrupción)
CPU

PC MAR

Memoria

Unidad
de
control

MBR

Bus de Bus de Bus de


direcciones datos control
Precaptar

Captación a partir de la memoria principal


Generalmente la ejecución no accede a la
memoria principal.
Puede captar la siguiente instrucción durante la
ejecución de la instrucción actual.
Se denomina precaptación de la instrucción.
La prestación se mejora

Pero no se duplica:
El tiempo de captación es, por lo general, más corto
que el de ejecución.
¿Precaptar más de una instrucción?
Si se produce un salto o una bifurcación, significa
que las instrucciones precaptadas no son las
requeridas.
Anadir más etapas para mejorar la prestación.
Segmentación de cauce
(Pipelining)

Captar instrucción (Fetch instruction, FI)


Decodificar instrucción (Decode instruction, DI)
Calcular operandos (Calculate operands, CO)
Captar operandos (Fetch operands, FO)
Ejecutar instrucciones (Execute instructions, EI)
Escribir operando (Write result, WO)

Solapamiento de estas operaciones.


Diagrama de tiempos de la
segmentación de cauce (Pipeline)
Tiempo

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Instrucción 5

Instrucción 6

Instrucción 7

Instrucción 8

Instrucción 9
Salto en la segmentación de
cauce (Pipeline)
Tiempo Penalización debida al salto

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Instrucción 5

Instrucción 6

Instrucción 7

Instrucción 15

Instrucción 16
Tratamiento de saltos

Flujos múltiples
Precaptar el destino del salto
Buffer de bucles
Predicción de saltos
Salto retardado
Flujos múltiples

Tienen dos cauces.


Precaptan cada salto en diferentes cauces.
Hay que utilizar el cauce correcto.

Provoca retardos en el acceso al bus y a los


registros.
Si hay múltiples saltos, se necesita un mayor
número de cauces.
Precaptar el destino del salto

Se precapta la instrucción destino del salto,


además de las instrucciones siguientes a la
bifurcación.
La instrucción se guarda hasta que se ejecute la
instrucción de bifurcación.
El IBM 360/91 usa este método.
Buffer de bucles

Memoria muy rápida.


Gestionada por la etapa de captación de
instrucción del cauce.
Comprueba el buffer antes de hacer la captación
de memoria.
Muy eficaz para pequeños bucles y saltos.
Comparar con el cache.
CRAY-1 lo utiliza.
Predicción de saltos (1)

Predecir que nunca se salta:


Asume que el salto no se producirá.
Siempre capta la siguiente instrucción.
68020 y VAX 11/780.
VAX no precaptará la instrucción que viene detrás si
se produce un fallo de página (Sistema operativo
frenta al diseño de la CPU).
Predecir que siempre se salta:
Asume que el salto se producirá.
Siempre capta la instrucción destino del salto.
Predicción de saltos (2)

Predecir según el código de operación:


Hay instrucciones que tienen más probabilidades de
saltar que otras.
La tasa de acierto puede llegar a alcanzar un 75%.
Conmutador saltar/no saltar:
Basado en la historia de las instrucciones.
Eficaz para los bucles.
Predicción de saltos (3)

Salto retardado:
No hacer el salto hasta que sea necesario.
Reordenar las instrucciones.
Diagrama de estados de la
predicción de saltos
No se salta
Predicción: Predicción:
Se salta saltar saltar
Se salta

Se salta No se
salta

No se salta
Predicción: Predicción: No se salta
no saltar no saltar
Se salta
Lectura básica

Ejemplos de procesadores.
 Organización y Arquitectura de Computadores,
W. Stallings, Capítulo 11.
Páginas web, etc.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 12
Computadores
de repertorio reducido
de instrucciones
Principales avances en los
computadores (1)

El concepto de familia:


Introducido por IBM en su System/360 en 1964.
DEC PDP-8.
Separa la arquitectura de la implementación.
Unidad de control microprogramada:
Idea propuesta por Wilkes en 1951.
Introducida por IBM en la línea S/360 en 1964.
Memoria cache:
En 1968 en el IBM S/360 Modelo 85.
Principales avanzes en los
computadores (2)

RAM de estado sólido:


(Ver Manual de Recursos)
Microprocesadores:
Intel 4004 en 1971.
Segmentación de cauce:
Introduce el paralelismo en el ciclo de ejecución de
búsqueda.
Procesadores múltiples.
El paso siguiente - RISC

Computadores de repertorio reducido de


instrucciones.

Características principales:
Gran número de registros de uso genera, o el uso de
tecnología de compiladores para optimizar el uso de
los registros.
Repertorio de instrucciones limitado y sencillo.
Énfasis en la optimización de la segmentación de
instrucciones.
Comparación de procesadores
 CISC RISC Superscalar
 IBM DEC VAX Intel Motorola MIPS IBM Intel
 370/168 11/780 486 88000 R4000 RS/6000 80960
 1973 1978 1989 1988 1991 1990 1989

 Número de instrucciones
 208 303 235 51 94 184 62

 Tamaño de instrucción (bytes)


 2-6 2-57 1-11 4 32 4 4-8

 Modos de direccionamiento
 4 22 11 3 1 2 11

 Registros de uso general


 16 16 8 32 32 32 23-256

 Memoria de control (kbits)


 420 480 246 0 0 0 0
Inconvenientes del CISC

El software resultaba mucho más caro que el


hardware.
El nivel del lenguaje era cada vez más
complicado.
Salto semántico.
Todo esto conduce a:
Repertorios de instrucciones grandes.
Más modos de direccionamiento.
Varias sentencias de HLL implementadas en el Hardware.
Por ejemplo, el CASE del VAX.
Finalidad del CISC

Facilitar el trabajo del escritor de compiladores.


Mejorar la eficiencia de la ejecución:
Secuencias complejas de operaciones en
microcódigo.
Dar soporte a HLL más complejos.
Características de la ejecución

Operaciones realizadas.
Operandos usados.
Secuenciamiento de la ejecución.
Se han realizado estudios sobre programas
escritos en HLL.
Los estudios dinámicos se miden durante la
ejecución del programa.
Operaciones

Asignaciones:
Movimiento de datos.
Estamentos condicionales (IF, LOOP):
Control secuencial.
El procedimiento llamada/retorno consume
mucho tiempo.
Algunas instrucciones HLL conducen a muchas
operaciones de código máquina.
Frecuencia dinámica relativa

Aparición Instruc. máquina Referencias a memoria


dinámica (Ponderadas) (Ponderadas)
Pascal C Pascal C Pascal C
Assign 45 38 13 13 14 15
Loop 5 3 42 32 33 26
Call 15 12 31 33 44 45
If 29 43 11 21 7 13
GoTo - 3 - - - -
Otras 6 1 3 1 2 1
Operandos

Principalmente variables escalares locales.


La optimización debe concentrarse en el acceso
a la variables locales.

Pascal C Promedio
Constantes enteras 16 23 20
Variables escalares 58 53 55
Matrices/estructuras 26 24 25
Llamadas a procedimientos

Se consume mucho tiempo.


Depende del número de parámetros tratados.
Depende del nivel de anidamiento.
La mayoría de los programas no tienen una
larga secuencia de llamadas seguida por la
correspondiente secuencia de retornos.
La mayoría de las variables son locales.
Las referencias a operandos están muy
localizadas.
Consecuencias

Se puede ofrecer mejor soporte optimizando las


prestaciones de las características más usadas y
que más tiempo consumen.
Usar un gran número de registros:
Optimizar las referencias a operandos.
Prestar cuidadosa atención al diseño de los
cauces de instrucciones:
Predicción de bifurcaciones, etc.
Es recomendable un repertorio de intrucciones
simplificado (reducido).
Amplio banco de registros

Aproximación por software:


El compilador es necesario para asignar registros.
Asignación de registros a las variables que se usen
más en un período de tiempo dado.
Requiere el uso de sofisticados algoritmos de análisis
de programas.
Aproximación por Hardware:
Utilización de más registros.
De esta manera, más variables pueden mantenerse
en registros durante periodos de tiempo más largos.
Registros para variables locales

Almacenar las variables escalares locales en


registros.
Reduce el acceso a memoria.
Cada llamada de procedimiento (función)
cambia la localidad.
Los parámetros deben ser pasados.
Los resultados tienen que ser devueltos.
Las variables de los programas de llamada
tienen que ser restauradas.
Ventanas de registro

Contienen unas pocas activaciones de


procedimientos.
Limitación de la profundidad de llamada.
Utilización de múltiples conjuntos pequeños de
registros.
La llamada cambia según los diferentes
conjuntos de registro.
Los retornos vuelven a cambiar al anterior
conjunto de registros utilizado.
Ventanas de registro

Tres áreas dentro de un conjunto de registro:


Registros de parámetros.
Registros de datos locales.
Registros temporales.
Los registros temporales de un conjunto se solapan
con los registros de parámetros del nivel más bajo
adyacente.
Esto posibilita que los parámetros se pasen sin que
exista transferencia de datos.
Ventanas de registro solapadas

Registros de Registros de Registros


parámetros datos locales temporales
Nivel J

Llamada/Retorno

Registros de Registros de Registros


Nivel J + 1
parámetros datos locales temporales
Diagrama de buffer circular
Restauración Salvaguarda

Puntero de
ventana
salvada

Puntero de
ventana en
curso

Llamada

Retorno
Operación del buffer circular

Cuando se realiza una llamada, el puntero de


ventana actual se mueve para mostrar la
ventana de registro activo en curso.
Si todas las ventanas están en uso, tiene lugar
una interrupción y la ventana más vieja (la más
antigua de las llamadas) se guarda en la
memoria.
Un puntero de ventana salvada indica dónde ha
de restablecerse la siguiente ventana salvada.
Variables globales

El compilador asigna posiciones de memoria a


las variables:
Ineficiente para variables locales a las que se accede
frecuentemente.
Incorporar al procesador un conjunto de
registros para variables globales.
Un amplio banco de registros
frente a una cache

 Banco de registros amplio Cache

 Todos los datos escalares locales Datos escalares locales


recientemente usados
 Variables individuales Bloques de memoria
 Variables globales asignadas por Variables locales usadas
el compilador recientemente
 Salvaguarda/restauración basadas Salvaguarda/restauración basadas
en la profundidad de anidamiento en el algoritmo de reemplazo
 Direccionamiento de registro Direccionamiento de memoria
Referencia a un dato escalar -
Banco de registros basado en
ventanas
Instrucción

Registros

Datos
Decodi-
ficador
Referencia a un dato escalar -
Cache
Instrucción

Etique-
tas Datos

Comparación Selección

Datos
Optimización de registros
basada en el compilador
 Supongamos un pequeño número de registros (por ejemplo
16-32).
 El uso optimizado es responsabilidad del compilador.
 Los programas HLL no tienen referencias explícitas a los
registros.
 Normalmente - pensando en C - registro int.
 Cada cantidad del programa candidata se asigna a un registro
simbólico o virual.
 Asignar el número ilimitado de registros simbólicos a un
número fijo de registros reales.
 Registros simbólicos que no se solapan pueden compartir el
registro real.
 Si se agotan los registros reales, algunas de las variables se
asignan a posiciones de memoria.
Coloreado de grafos

 Dado un grafo que consta de nodos y arcos.


 Asignar colores a cada nodo.
 Los nodos adyacentes tienen colores diferentes.
 Minimizar el número de colores distintos.
 Los nodos del grafo son los registros simbólicos.
 Dos registros que estén “vivos” durante el mismo
fragmento de programa se unen por un arco.
 Se intenta colorear el grafo con n colores, donde n es el
número de registros.
 Los nodos que no se pueden colorear se colocan en
memoria.
Técnica de coloreado de grafos

(a) Secuencia temporal de uso activo de registros simbólicos (b) Grafo de interferencias entre registros
¿Por qué CISC?

¿Simplicación del compilador?


Esta primera razón parece obvia
Instrucciones máquina complejas son difíciles de
aprovechar.
La optimización es más dificil.
¿Programas más pequeños?
El programa ocupa menos memoria, pero la memoria hoy
día es muy barata.
Él número de bits de memoria que ocupa no tiene por qué
ser más pequeño, simplemente puede ser más corto.
Más instrucciones necesitan códigos de operacion más largos.
Las referencias a registros necesitan menos bits.
¿Por qué CISC?

¿Programas más rápidos?


Propensión a usar las instrucciones más sencillas.
Unidad de control más compleja.
Memoria de control del microprograma más grande.
Aumenta el tiempo de ejecución de las instrucciones
simples.

No está nada claro que la tendencia hacia CISC


sea apropiada.
Características del RISC

Una instrucción por ciclo.


Operaciones registro a registro.
Modos de direccionamiento sencillos.
Formatos de instrucción sencillos.
Diseño cableado (sin microcódigo).
Formato de instrucción fijo.
Mayor tiempo/esfuerzo de compilación.
Características RISC frente a
CISC

No existe una clara barrera diferenciadora.


Muchos diseños incluyen características de
ambos diseños.
Por ejemplo, PowerPC y Pentium II
Segmentación de cauce en
RISC
La mayoría de instrucciones son registro a
registro.
 Dos fases de ejecución:
I: Captación de instrucción.
E: Ejecución.
Operación de la ALU con registros como entrada y salida.

 Operaciones de carga y almacenamiento:


I: Captación de instrucción.
E: Ejecución.
Calcula una dirección de memoria.
D: Memoria.
Operación registro a memoria o memoria a registro.
Efectos de la segmentación

(a) Ejecución secuencial


(b) Temporización con un cauce de dos vías

(c) Temporización con un cauce de tres vías


(d) Temporización con un cauce de cuatro vías
Optimización de la
segmentación

Salto retardado:
No tiene efecto hasta después de la ejecución de la
siguiente instrucción.
Dicha siguiente instrucción es el salto retardado.
Salto normal y retardado

Dirección Salto normal Salto retardado Salto retardado


optimizado
100 LOAD X,A LOAD X,A LOAD X,A
101 ADD 1,A ADD 1,A JUMP 105
102 JUMP 105 JUMP 105 ADD 1,A
103 ADD A,B NOOP ADD A,B
104 SUB C,B ADD A,B SUB C,B
105 STORE A,Z SUB C,B STORE A,Z
106 STORE A,Z
Uso del salto retardado

(b) Inversión del orden


(a) Inserción de NOOP de las instrucciones
Controversia entre RISC y CISC
 Cuantitativa:
Comparación del tamaño de los programas y su velocidad de
ejecución.
 Cualitativa:
Revisión de soporte de lenguajes de alto nivel y uso óptimo de
los recursos VLSI.
 Problemas de las comparaciones:
No existe una pareja de máquinas RISC y CISC directamente
comparables.
No hay un conjunto de programas de prueba definitivo.
Dificultad para separar los efectos del hardware de los del
compilador.
Mayoría de comparaciones con máquinas de “juguete”, no con
productos comerciales.
La mayoría de las máquinas son una mezcla de ambas.
Lecturas recomendadas

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 12.
Páginas web de los fabricantes.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 13
Paralelismo a nivel de
instrucciones, y procesadores
superescalares
¿Qué es una implementación
superescalar?

Las instrucciones comunes(aritméticas,


cargas/almacenamientos y bifurcaciones
condicionales) pueden iniciar su ejecución
simultáneamente y de manera independiente.
Puede utilizarse tanto en una arquitectura RISC
como en una CISC.
En la práctica, normalmente se utiliza en RISC.
Sentido del enfoque
superescalar

La mayoría de las operaciones se realizan con


cantidades escalares (véanse los apuntes sobre
RISC).
Una mejora en estas operaciones, supone una
mejora en general.
Organización superescalar
usual

Banco de registros de enteros Banco de registros de coma flotante

Unidades
funcionales
segmentadas

Memoria
Supersegmentado

Muchas etapas del cauce requieren menos de la


mitad de un ciclo de reloj.
La velocidad de reloj interna se dobla, lo que
permite la realización de dos tareas en un ciclo
de reloj externo.
La implementación superescalar permite una
ejecución en paralelo de varias instrucciones.
Clave Ejecución

Superescalar Captación
de
instrucción
Decodifi
cación
Escritu
ra

frente a
supersegmentado Máquina base

Instrucciones consecutivas
Supersegmentada

Superescalar

Tiempo en ciclos base


Limitaciones
Paralelismo a nivel de instrucciones.
Optimizaciones realizadas por el compilador.
Técnicas hardware.
Limitaciones:
Dependencia de datos verdadera.
Dependencia relativa al procedimiento.
Conflictos en los recursos.
Dependencia de salida.
Antidependencia.
Dependencia de datos
verdadera

ADD r1, r2 (r1 := r1+r2;).


MOVE r3, r1 (r3 := r1;).
La segunda instrucción se puede captar y
decodificar en paralelo con la primera.
La segunda instrucción NO se puede ejecutar
hasta que finalice la ejecución de la primera
instrucción.
Dependencia relativa al
procedimiento

Las instrucciones que siguen a una bifurcación


no pueden ejecutarse en paralelo con las
instrucciones anteriores a la misma.
Si las instrucciones son de longitud variable,
éstas tienen que decodificarse para averiguar
cuántas captaciones son necesarias.
Esto imposibilita la captación simultánea.
Conflictos en los recursos

Un conflicto en los recursos es una pugna de


dos o más instrucciones por el mismo recurso al
mismo tiempo.
Ejemplo: dos instrucciones aritméticas.
Los recursos pueden duplicarse.
Ejemplo: tener dos unidades aritméticas.
Clave Ejecución
Captación
Decodifi_
de Escritura
cación
instrucción

Dependencias Sin dependencia

Dependencia de datos
(i1 usa un dato calculado por i0)

Dependencia relativa
i1/bifurcación al procedimiento

Conflicto en un recurso
(i0 e i1 usan la misma
unidad funcional)

Tiempo en ciclos base


Cuestiones relacionadas con el
diseño

Paralelismo a nivel de instrucciones:


Las instrucciones de una secuencia son
independientes.
Pueden ejecutarse en paralelo solapándose.
Depende de la frecuencia de dependencias de datos
y dependencias relativas al procedimiento.
Paralelismo de la máquina:
Medida de la capacidad del procesador para sacar
partido al paralelismo a nivel de instrucciones.
Depende del número de cauces paralelos.
Políticas de emisión de
instrucciones

Orden en que se captan las instrucciones.


Orden en que se ejecutan las instrucciones.
Orden en que las instrucciones actualizan los
contenidos de los registros y de las posiciones
de memoria.
Emisión en orden y finalización
en orden

Emite instrucciones en el orden exacto en que


se producen.
No es muy eficaz.
Puede captar más de una instrucción.
Las instrucciones deben detenerse en caso de
que sea necesario.
Esquema de emisión en orden y
finalización en orden
Decodificación Ejecución Escritura Ciclo
Emisión en orden y finalización
desordenada

Dependencia de salida:
R3:= R3 + R5; (I1)
R4:= R3 + 1; (I2)
R3:= R5 + 1; (I3)
Ejemplo de dependencia de datos: I2 depende del
resultado de I1.
Dependencia de salida o escritura-escritura: si I3
finaliza antes que I1, el resultado de I1 será
incorrecto.
Esquema de emisión en orden y
finalización desordenada

Decodificación Ejecución Escritura Ciclo


Emisión desordenada y
finalización desordenada

Es necesario desacoplar las etapas del cauce de


decodificación y ejecución.
Mientras el buffer no se llene, el procesador
puede continuar captando y decodificando.
Cuando una unidad funcional queda disponible,
se puede ejecutar una instrucción.
Como las instrucciones ya han sido
decodificadas, el procesador tiene capacidad de
anticipación.
Esquema de emisión desordenada y
finalización desordenada

Decodificación Ventana Ejecución Escritura Ciclo


Antidependencia

Dependencia lectura-escritura:
I1: R3 R3 op R5
I2: R4 R3 + 1
I3: R3 R5 + 1
I4: R7 R3 op R4
I3 no puede finalizar antes de que I2 comience, ya
que I2 necesita un valor en R3 e I3 modifica R3.
Renombramiento de registros

Las dependencias de salida y las


antidependencias surgen porque los valores de
los registros no pueden reflejar ya la secuencia
de valores dictada por el flujo del programa.
Esto puede detener alguna etapa del cauce.
Los registros se asignan dinámicamente:
Es decir, los registros no se nombran de forma
específica.
Ejemplo de renombramiento de
registros
I1: R3b R3a op R5a
I2: R4b R3b + 1
I3: R3c R5a + 1
I4: R7b R3c op R4b
Sin el subíndice, alude a una referencia a un
registro lógico encontrado en la instrucción.
Con el subíndice, alude a un registro hardware
asignado.
Fíjese en R3a R3b R3c.
Paralelismo de la máquina

Duplicación de recursos.
Emisión desordenada.
Renombramiento.
No merece la pena duplicar unidades
funcionales sin renombramiento de registros.
Se necesita una ventana de instrucciones lo
suficientemente amplia (mayor de 8
instrucciones).
Predicción de saltos

El Intel 80486 capta, tanto la siguiente


instrucción secuencial a la de bifurcación, como
la instrucción destino del salto.
Esta estrategia incurre en un retardo de dos
ciclos cuando se produce el salto.
Las máquinas RISC y el salto
retardado

 El procesador calcula el resultado de las instrucciones de


bifurcación antes de que se precapte cualquier instrucción
inservible.
 El procesador siempre ejecuta la instrucción que sigue
inmediatamente a la de bifurcación.
 Esto mantiene lleno el cauce mientras el procesador capta un nuevo
flujo de instrucciones.
 Esta estrategia ha perdido interés con el desarrollo de las máquinas
superescalares:
 Ejecutar múltiples instrucciones en el ciclo de retardo.
 Problemas con las dependencias entre instrucciones.
 Por eso, las máquinas superescalares han regresado a las técnicas
de predicción de saltos anteriores.
Ejecución superescalar
Envío de Emisión de
instrucciones instrucciones
Captación de
instrucciones y Ejecución de Reordenación
Programa predicción de saltos instrucciones y entrega de
estático instrucciones

Ventana de
ejecución
Implementación superescalar

 Estrategias de captación de instrucciones que capten


simultáneamente múltiples instrucciones.
 Lógica para determinar dependencias verdaderas entre
valores de registros.
 Mecanismos para comunicar esos valores.
 Mecanismos para iniciar múltiples instrucciones en
paralelo.
 Recursos para la ejecución en paralelo de múltiples
instrucciones.
 Mecanismos para entregar el estado del procesador en
un orden correcto.
Lecturas recomendadas

Stallings, Capítulo 13.


Páginas web de los fabricantes.
Página web IMPACT:
Investigación sobre ejecución con predicados.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 14
Funcionamiento de la unidad de
control
Microoperaciones

Un computador ejecuta un programa.


Ciclo de captación/ejecución.
Cada ciclo consta de una serie de pasos:
Véase segmentación.
Estos pasos son microoperaciones.
Cada paso es muy sencillo y hace muy poco.
Son las operaciones atómicas de un
computador.
Elementos que constituyen la
ejecución de un programa
Ejecución de un programa

Ciclo de instrucción Ciclo de instrucción Ciclo de instrucción

Captación Indirecto Ejecución Interrupción

OP OP OP OP OP
Ciclo de captación: cuatro
registros
 Registro de dirección de memoria (MAR):
Está conectado a las líneas de dirección del bus del
sistema.
Especifica la dirección de memoria de una operación de
lectura o escritura.
 Registro intermedio de memoria (MBR):
Está conectado a las líneas de datos del bus del sistema.
Contiene el valor a almacenar en memoria o el último
valor leído de memoria.
 Contador de programa (PC):
Contiene la dirección de la siguiente instrucción a captar.
 Registro de instrucción (IR):
Ciclo de captación
 La dirección de la siguiente instrucción a ejecutar está
en el contador de programa (PC).
 La dirección (MAR) se coloca en el bus de direcciones.
 La unidad de control emite una orden READ.
 El resultado aparece en el bus de datos.
 El resultado se copia en el registro intermedio de
memoria (MBR).
 Es necesario incrementar PC en I en paralelo con la
captación de la memoria.
 Transferir el contenido de MBR a IR.
 Esto libera MBR para su uso durante un posible ciclo
indirecto.
Ciclo de captación simbólico
 t1: MAR (PC)
 t2: MBR (memoria)
 PC (PC) + I
 t3: IR (MBR)
 tx = unidad de tiempo/ciclo de reloj.
 o también:
 t1: MAR (PC)
 t2: MBR (memoria)
 t3: PC (PC) + I
 IR (MBR)
Reglas de agrupamientos de
microoperaciones

Debe seguirse la secuencia correcta de eventos:


MAR (PC) debe preceder a (MBR memoria).
Deben evitarse los conflictos:
No se debe intentar leer y escribir en el mismo
registro en una unidad de tiempo.
(MBR memoria) e (IR MBR) no deberían tener
lugar en la misma unidad de tiempo.
También: PC (PC) +I incluye una suma:
Usar la ALU.
Puede implicar microoperaciones adicionales.
El ciclo indirecto

MAR (IRdirección) - campo de dirección de IR


MBR (memoria)
IRdirección (MBRdirección)

MBR contiene una dirección.


IR tiene el mismo estado que si no se hubiera
usado direccionamiento indirecto.
¿Qué información nos aporta acerca del tamaño
de IR?)
El ciclo de interrupción

t1: MBR (PC)


t2: MAR Dirección de salvaguarda
 PC Dirección de la rutina
t3: Memoria (MBR)
Esta es una secuencia muy simple de eventos:
Pueden ser microoperaciones adicionales para
obtener direcciones.
Obsérvese que el almacenado se realiza a través de
una rutina de interrupción, no a través de
microoperaciones.
El ciclo de ejecución (ADD)

Es distinto para cada instrucción.


Ejemplo: ADD R1, X que suma el contenido de
la posición X al registro R1.
t1: MAR (IRdirección)
t2: MBR memoria
t3: R1 R1 + (MBR)
Observe que no se produce el solapamiento de
las microoperaciones.
El ciclo de ejecución (ISZ)

Incrementar y saltar si cero (ISZ X):


t1: MAR (IRdirección)
t2: MBR (memoria)
t3: MBR (MBR) + 1
t4: memoria (MBR)
 si (MBR) == 0 entonces PC (PC) + I
Notas:
Si se trata de una microoperación.
Las microoperaciones se ejecutan durante la misma
unidad de tiempo (t4).
El ciclo de ejecución (BSA)

Saltar y guardar la dirección (BSA X):


La dirección de la instrucción que viene a
continuación de la instrucción BSA, se guarda en la
posición X.
La ejecución continúa en la posición X+I.
t1: MAR (IRdirección)
 MBR (PC)
t2: PC (IRdirección)
 memoria (MBR)
t3: PC (PC) + I
Requisitos funcionales

Definir los elementos básicos del procesador.


Describir las microoperaciones que ejecuta el
procesador.
Determinar las funciones que debe realizar la
unidad de control para hacer que se ejecuten
las microoperaciones.
Elementos funcionales básicos
del procesador

ALU
Registros
Caminos de datos internos
Caminos de datos externos
Unidad de control
Tipos de microoperaciones

Transferir datos de un registro a otro.


Transferir datos de un registro a una interfaz
externa.
Transferir datos de una interfaz externa a un
registro.
Realizar una operación aritmética o lógica.
Tareas de la unidad de control

Secuenciamiento:
La unidad de control hace que el porcesador avance
a través de una serie de microoperaciones en la
secuencia oportuna.
Ejecución:
La unidad de control hace que se ejecute cada
microoperación.
Se realiza mediante señales de control.
Señales de control
Reloj:
Una microinstrucción (o un conjunto de
microoperaciones simultáneas) en cada pulso de
reloj.
Registro de instrucción:
Código de operación de la instrucción en curso.
Determinar qué microoperaciones hay que realizar
durante el ciclo de ejecución.
Señales de control

Indicadores:
Determinar el estado del procesador.
Determinar el resultado de anteriores operaciones.
Señales de control del bus de control:
De interrupción.
De reconocimiento.
Señales de control: salidas

Señales de control internas al procesador:


Hacen que los datos se transfieran de un registro a
otro.
Activan funciones específicas.
Señales de control hacia el bus de control:
De la memoria.
De los módulos de E/S.
Un ejemplo de señales de
control: captación

MAR (PC)
La unidad de control activa las señales para abrir las
puertas entre PC y MAR.
MBR (memoria)
Abre las puertas entre MAR y el bus de dirección.
La memoria lee la señal de control.
Abre las puertas entre el bus de datos y MBR.
Organización interna del
procesador

Normalmente hay un único bus interno.


Las puertas controlan la transferencia de datos
interna y externa.
Las señales de control controlan la transferencia
de datos hacia, y desde, el bus (externo) del
sistema.
Registros temporales para el correcto.
funcionamiento de la ALU.
Implementación cableada

Entradas de la unidad de control.


Indicadores y señales de control del bus:
Cada bit individual tiene un significado.
Registro de instrucción:
El código de operación realiza señales de control
diferentes para cada instrucción.
Una entrada lógica única para cada código de
operación.
El decodificador toma una entrada codificada y
produce una salida única:
n entradas binarias y 2n salidas binarias.
Implementación cableada

Reloj:
Emite una secuencia repetitiva de pulsos.
Es útil para delimitar la duración de las
microoperaciones.
Ha de ser suficientemente largo para emitir la
propagación de las señales.
Emite señales de control diferentes en unidades de
tiempo diferentes, dentro de un único ciclo de
instrucción.
Necesita un contador con señales de control
diferentes para t1, t2 etc.
Problemas con los diseños de
implementación cabelada

Lógica de microoperaciones y secuencias


complejas.
Difícil de diseñar y de probar.
Diseño rígido.
Dificultad para añadir nuevas instrucciones.
Lectura básica

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 14.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 15
Control microprogramado
Unidad de control
microprogramado

Utiliza las secuencias de instrucciones (ver notas


preliminares) para controlar las operaciones
complejas.
Una secuencia de microinstrucciones se conoce
como microprograma, o firmware.
Implementación
 Todo lo que la unidad de control puede hacer es
generar un conjunto de señales de control.
 Cada línea de control está activa o inactiva.
 Cada línea de control puede representarse con un dígito
binario.
 Podríamos construir una palabra de control para cada
microoperación.
 Tenga una secuencia de palabras de control para cada
instrucción de código de máquina.
 Añada un campo de dirección indicando la siguiente
microinstrucción, dependiendo de las condiciones.
Implementación
El mayor microprocesador de nuestros días:
Muchas instrucciones y hardwares de nivel de
registro asociado.
Muchos puntos de control para manipular.
En la memoria de control, esto se traduce en:
La contención de un gran número de palabras:
que corresponden al número de instrucciones que se
ejecutarán.
Una gran expansión mundial:
Debido al gran número de puntos de control que se
manipularán.
Formato de la microinstrucción o
palabra de control

Basado en 3 factores:
Activación del máximo número de microoperaciones
simultáneas.
La manera en que se representa o codifica la
información de control.
La manera en que se especifica la próxima dirección
de microinstrucción.
Tipos de microinstrucción

Microinstrucción vertical:
Cada microinstrucción especifica una sola
microoperación (o unas pocas) para que se realicen.
Microinstrucción horizontal:
Cada microinstrucción especifica muchas
microoperaciones diferentes para que se realicen en
paralelo.
Microprogramación vertical

La anchura es estrecha.


N controla señales codificadas en log2 n bits.
Habilidad limitada para expresar paralelismo.
La codificación considerable de la información
de control requiere un decodificador de palabra
de memoria externa para identificar la línea de
control exacta que se está manipulando.
Diagrama de microprogramación
vertical

Dirección de microinstrución
Códigos de
función
Condición
de salto
Microprogramación horizontal

Gran longitud de palabras de memoria.


Alto grado de posibles operaciones en paralelo.
Escasa codificación de información de control.
Diagrama de microprogramación
horizontal

Señales de control internas a la CPU Micro-instruction Address


Dirección de microinstrucción

Señales de control Condición de salto


del bus del sistema
Alternativa

Dividir las señales de control en grupos


inconexos.
Implementarcada grupo como un campo
separado en la palabra de memoria.
Mantener niveles razonables de paralelismo sin
demasiada complejidad.
Organización de la memoria de
control
.
Salto a indirecto o ejecución
Rutina del ciclo de captación
.
Salto a ejecución Rutina del ciclo indirecto
. Rutina del ciclo de intrerrupción
Salto a captación
Salto a una rutina según el cód. de operación Comienzo del ciclo de ejecución
.
Rutina de la instrucción AND
Salto a captación o interrupción
.
Rutina de la instrucción ADD
Salto a captación o interrupción
Funcionamiento de una unidad
de control microprogramada
Registro de instrucción

Unidad de control
Decodificador

Indicadores
de la ALU Lógica de secuen-
Registro de dirección de control
Reloj ciamiento

Lectura Memoria de
control

Registro intermedio de control

Dirección de
control siguiente
Decodificador

Señales de control Señales de control


hacia dentro de la CPU hacia el bus del sistema
Funcionamiento de la unidad de
control

 La unidad lógica de secuenciamiento emite una orden


de lectura a la memoria de control.
 La palabra especificada en el registro de dirección de
control se lee en el registro intermedio de control.
 Los contenidos del registro intermedio de control
generan señales de control y la información de dirección
siguiente.
 La unidad lógica de secuenciamiento carga una nueva
dirección en el registro de dirección de control, basada
en la información de dirección siguiente del registro
intermedio de control y en los indicadores de la ALU.
Ventajas e inconvenientes

Simplifica el diseño de la unidad de control:


Implementación más barata.
Menos propensa a errores.
Más lenta que una unidad cableada de
tecnología comparable.
Tareas realizadas por una
unidad de control
microprogramada
Secuenciamiento de microinstrucciones.
Ejecución de microinstrucciones.
Las dos taresas deben considerarse a la vez.
Consideraciones respecto al
diseño

Tamaño de la microinstrucción.
Tiempo de generación de la dirección:
Viene determinada por el registro de instrucción:
Una vez por ciclo, justo tras la captación de la instrucción.
Es la siguiente dirección secuencial:
La situación más común en la mayoría de los diseños.
Es el destino de un salto:
Tanto condicionales como incondicionales.
Técnicas de secuenciamiento

A partir de la microinstrucción en curso, de los


indicadores de condición y del contenido del
registro de instrucción, hay que generar una
dirección de la memoria de control.
Categorías basadas en el formato de la
información de dirección de la microinstrucción:
Dos campos de dirección.
Un único campo de dirección.
Formato variable.
Generación de direcciones

Explícitas Implícitas

Dos campos Traducción


Salto incondicional Adición
Salto condicional Control residual
Ejecución de
microinstrucciones

El ciclo es el evento básico.


Cada ciclo se compone de dos partes:
Captación:
Depende de la generación de una dirección de
microinstrucción.
Ejecución.
Ejecución

El resultado es la generación de señales de


control.
Algunas de estas señales controlan puntos
internos del procesador.
Las demás señales van al bus de control externo
o a otras interfaces externas.
Organización de la unidad de
control
Registro de
instrucción

Indicadores
Lógica de
de la ALU
secuencia- Registro de dirección de control
Reloj miento

Memoria
de control

Registro intermedio de control

Lógica de
control

Señales de control internas Señales de control externas


Lecturas recomendadas

 Organización y Arquitectura de Computadores,


W. Stallings, Capítulo 15.
William Stallings
Organización y Arquitectura
de Computadores

Capítulo 16
Procesamiento paralelo
Organizaciones Con Varios
Procesadores

SISD: una secuencia de instrucciones y una


secuencia de datos.
SIMD: una secuencia de instrucciones y
múltiples secuencias de datos.
MISD: múltiples secuencias de instrucciones y
una secuencia de datos.
MIMD: múltiples secuencias de instrucciones y
múltiples secuencias de datos.
Una secuencia de instrucciones y
una secuencia de datos (SISD)

Un único procesador interpreta una única


secuencia de instrucciones.
Datos almacenados en una única memoria.
Computadores monoprocesador.
Una secuencia de instrucciones y
múltiples secuencias de datos (SIMD)

Una única instrucción máquina controla paso a


paso la ejecución simultánea de un cierto
número de elementos de proceso.
Cada elemento de proceso tiene una memoria
asociada.
Cada instrucción es ejecutada por cada
procesador, con un conjunto de datos
diferentes.
Procesadores vectoriales y matriciales.
Múltiples secuencias de
instrucciones y una secuencia
de datos (MISD)
Se transmite una secuencia de datos a un
conjunto de procesadores.
Cada procesador ejecuta una secuencia de
instrucciones diferente.
Esta estructura nunca ha sido implementada.
Múltiples secuencias de
instrucciones y múltiples
secuencias de datos (MIMD)
Un conjunto de procesadores ejecuta
simultáneamente secuencias de instrucciones
diferentes.
Conjuntos de datos diferentes.
Los SMP, los “clusters”, y los sistemas NUMA
son ejemplos de esta categoría.
Taxonomía de las arquitecturas
paralelas
Organizaciones de computadores

Una secuencia de Múltiples secuencias


Una secuencia de Múltiples secuencias
instrucción, de instrucción,
instrucción, una de instrucción, una
múltiples secuencias múltiples secuencias
secuencia de datos secuencia de datos
de datos (SIMD) de datos (MIMD)
(SISD) (MISD)

Monoprocesadores

Procesadores Procesadores Memoria compartida Memoria distribuida


vectoriales matriciales (fuertemente acoplada) (débilmente acoplada)

Clusters

Multiprocesador Acceso no
simétrico (SMP) uniforme a
memoria
(NUMA)
Organización MIMD

Son procesadores de uso general.


Cada uno es capaz de procesar todas las
instrucciones necesarias para realizar las
transfromaciones apropiadas de los datos.
Se pueden subdividir, además, según la forma
que tienen los procesadores para comunicarse.
SMP (fuertemente acoplado)

Varios procesadores comparten una única


memoria.
Los procesadores se comunican unos con otros
a través de esa memoria compartida.
Características del multiprocesador simétrico
(SMP):
Comparten la memoria principal.
Comparten un bus para acceder a la memoria.
El tiempo de acceso a memoria es aproximadamente
el mismo para todos los procesadores.
NUMA (fuertemente acoplado)

Acceso no uniforme a memoria.


El tiempo de acceso a zonas de memoria
diferentes puede diferir en un computador
NUMA.
Clusters (memoria débilmente
acoplada)

Un conjunto de computadores monoprocesador


independientes, o de SMP, pueden
interconectarse para formar un “cluster”.
La comunicación entre los computadores se
realiza mediante conexiones fijas o mediante
algún tipo de red.
Organizaciones paralelas
(SISD)

SI SD
UC UP UM
Organizaciones paralelas
(SIMD)

SD
EP1 ML1

SD
EP2 ML2
SI
UC

SD
EPn MLn
Organizaciones paralelas
(MIMD de memoria compartida)
SI SD
UC1 EP1

SI SD

compartida
EP2

Memoria
UC2

SI SD
UCn EPn
Organizaciones paralelas
(MIMD de memoria distribuida)

SI SD
UC1 EP1 ML1

SD

interconexión
SI
UC2 EP2 ML2

Red de
SI SD
UCn EPn MLn
Multiprocesadores simétricos
 Un SMP es un computador autónomo con las siguientes
características:
 Hay dos o más procesadores similares de capacidades comparables.
 Estos procesadores comparten la memoria principal y las E/S.
 Están interconectados mediante un bus u otro tipo de sistema de
interconexión.
 El tiempo de acceso a memoria es aproximadamente el mismo para
todos los procesadores.
 Todos los procesadores comparten los dispositivos de E/S, bien a
través de los mismos canales, o bien mediante canales distintos que
proporcionan caminos de acceso al mismo dispositivo.
 Todos los procesadores pueden desempeñar las mismas funciones (de
ahí el término simétrico).
 El sistema está controlado por un sistema operativo integrado, que
proporciona la interacción entre los procesadores y sus programas en
los niveles de trabajo, tarea, fichero y datos.
Ventajas de un SMP
 Prestaciones:
Cuando el trabajo a realizar por un computador puede
organizarse en paralelo.
 Disponibilidad:
Debido a que todos los procesadores pueden realizar las mismas
funciones, un fallo en un procesador no hará que el computador
se detenga.
 Crecimiento incremental:
Se pueden aumentar las prestaciones del sistema, añadiendo
más procesadores.
 Escalado:
Los fabricantes pueden ofrecer una gama de productos con
precios y prestaciones diferentes, en función del número de
procesadores que configuran el sistema.
Diagrama de bloques genérico de
un multiprocesador fuertemente
acoplado
Procesador Procesador Procesador

E/S

Red de
E/S
interconexión

E/S

Memoria principal
Organización de los
multiprocesadores simétricos

Bus de tiempo compartido o común.


Memoria multipuerto.
Unidad de control central.
Bus de tiempo compartido
 Es el mecanismo más simple.
 La estructura y las interfaces son básicamente las
mismas que las de un sistema de un único procesador.
 Se proporcionan los siguientes elementos para el:
Direccionamiento: distinción de los módulos del bus.
Arbitraje: cualquier módulo puede funcionar temporalmente
como maestro.
Tiempo compartido: cuando un módulo está controlando el bus,
los otros módulos tienen que esperar y, si es necesario,
suspender su operación.
 Existen varios procesadores, además de varios módulos
de E/S.
Ventajas del bus de tiempo
compartido

Simplicidad.
Flexibilidad.
Fiabilidad.
Desventajas del bus de tiempo
compartido

La prestación está limitada por el tiempo de


ciclo del bus.
Cada procesador debería estar equipado con
una memoria cache para mejorar las
prestaciones:
Se reduciría el número de accesos.
Se pueden producir problemas de coherencia de
cache:
Este problema es resuelto por el hardware (ver
diapositiva 29).
Memoria multipuerto

Permite el acceso directo e independiente a los


módulos de memoria desde cada uno de los
procesadores.
Se necesita una cierta lógica para resolver los
conflictos.
Se necesitan pocas o ninguna modificación en
los procesadores o en los módulos.
Ventajas y desventajas de la
memoria multipuerto

Más compleja:
Se precisa añadir al sistema de memoria una buena
cantidad de lógica.
Se consiguen mejores prestaciones.
Cada procesador tiene un camino dedicado a cada
módulo de memoria.
Permite configurar partes de la memoria como
privadas para uno o más procesadores:
Incremento de la seguridad.
Se debe utilizar una estrategia de escritura
directa para controlar la cache.
Unidad de control central
Encauza las distintas secuencias de datos entre
los distintos módulos independientes.
Puede almacenar temporalmente peticiones.
Puede realizar las funciones de arbitraje y
temporización.
Puede transmitir mensajes de estado y control
entre los procesadores.
Puede alertar sobre los cambios en las caches.
Las interfaces de E/S, memoria y procesador no
sufren cambios esenciales.
Ejemplo: S/370 de IBM.
Puntos clave de diseño de un
sistema operativo

Procesos concurrentes simultáneos.


Planificación.
Sincronización.
Gestión de memoria.
Fiabilidad y tolerancia ante los fallos.
Organización del SMP S/390 de
IBM

Módulo de Módulo de Módulo de Módulo de


memoria 0 memoria 1 memoria 2 memoria 3
Componentes clave del SMP
S/390
 Procesador (PU):
Microprocesador CISC.
Las instrucciones más frecuentemente ejecutadas se
encuentran cableadas.
Cada PU incluye una cache L1 unificada de 64kbytes con un
tiempo de acceso de un sólo ciclo.
Cache L2.
384kbytes.
 Adaptador bus-red de interconexión (BSN):
Incluye 2 Mbytes de nivel 3 (L3).
 Módulos de memoria:
8 Gbytes por módulo.
Coherencia de cache y
protocolo MESI
Problema: pueden existir varias copias del
mismo dato simultáneamente en caches
diferentes.
Puede producirse una visión inconsistente de la
memoria.
La política de post-escritura puede ocasionar
inconsistencia.
La política de escritura directa también puede
producir problemas, a no ser que las otras
caches comprueben los accesos a la memoria
principal.
Soluciones software

 El compilador y el sistema operativo se encargan del


problema de la necesidad de circuitería y lógica
hardware adicional.
 La sobrecarga se transfiere para compilar el tiempo.
 La complejidad del diseño se transfiere desde el
hardware al software.
 Por otra parte, el software tiende a tomar ciertas
decisiones conservadoras:
Utilización ineficiente de la cache.
 Analizan el código para determinar periodos seguros
para las variables compartidas.
Soluciones hardware
Generalmente se denominan “protocolos de
coherencia de cache”.
Permiten reconocer dinámicamente, en el
momento de la ejecución, problemas
potenciales.
Permiten un uso más efectivo de las caches.
Aproximaciones transparentes para el
programador.
Protocolos de directorio.
Protocolos de sondeo.
Protocolos de directorio
Recogen y mantienen la información acerca de
las copias de las líneas en la cache.
El directorio se almacena en la memoria
principal.
Las peticiones se comprueban comparándose
con el directorio.
Se ejecutan las transferencias apropiadas.
Los esquemas de directorio tienen un cuello de
botella central.
Son efectivos en sistemas a gran escala que
poseen esquemas complejos de interconexión.
Protocolos de sondeo

Distribuyen la responsabilidad de mantener la


coherencia de cache entre todos los
controladores de cache.
Una cache reconoce cuándo una línea está
compartida con otras caches.
Las actualizaciones se anunucian a otras caches.
Se adaptan bien a multiprocesadores basados
en un bus.
Incremento en el tráfico del bus.
Invalidar-si-escritura

 Múltiples procesadores que leen, pero uno sólo que


escribe.
 Cuando se quiere hacer una escritura, se invalidan las
otras caches de la línea.
 El procesador que escribe tiene acceso exclusivo hasta
que la línea sea requerida por otro procesador.
 Se utiliza en los sistemas Pentium II y Power PC.
 El estado de cada línea se marca como modificado,
exclusivo, compartido, o no válido.
 El prtocolo de invalidar-si-escritura se llama MESI.
Actualizar-si-escritura

Varios procesadores que escriben y leen.


La palabra actualizada se distribuye a todos los
procesadores.
Algunos sistemas implementan un sistema
adaptativo con caracteísticas de ambas
soluciones.
Diagrama de transición de
estados MESI

No Compar- No Compar-
válido tido válido tido

Modifi- Exclu- Modifi- Exclu-


cado sivo cado sivo

(a) Línea en el procesador que inicia la transferencia (a) Línea en una cache sondeando el bus

Acierto de lectura Escribir en memoria la línea de cache


Fallo de lectura, compartida modificada
Fallo de lectura, exclusiva Invalidar transacción
Acierto de escritura
Fallo de escritura
Lectura-para-modificación (RWITM)
Acierto de sondeo en lectura
Acierto de sondeo en escritura o
lectura-para-modificación Cargar línea de cache
“Clusters”

Son la alternativa a los SMP.


Prestaciones y disponibilidad elevadas.
Aplicaciones propias de un servidor.
Un grupo de computadores completos
interconectados que trabajan conjuntamente
como un único recurso de cómputo, creándose
la ilusión de que se trata de una sóla máquina.
Cada computador se denomina “nodo”.
Beneficios del “cluster”

Escalabilidad absoluta.
Escalabilidad incremental.
Alta disponibilidad.
Mejor relación precio/prestaciones.
Configuraciones de “clusters”:
servidor sin disco compartido

E/S E/S Enlace de alta velocidad para mensajes


E/S E/S
Configuraciones de “clusters”:
disco compartido

Enlace de alta velocidad para mensajes


E/S E/S

E/S E/S E/S E/S


William Stallings
Organización y Arquitectura
de Computadores

Capítulo 16
Procesamiento paralelo
Organizaciones Con Varios
Procesadores

SISD: una secuencia de instrucciones y una


secuencia de datos.
SIMD: una secuencia de instrucciones y
múltiples secuencias de datos.
MISD: múltiples secuencias de instrucciones y
una secuencia de datos.
MIMD: múltiples secuencias de instrucciones y
múltiples secuencias de datos.
Una secuencia de instrucciones y
una secuencia de datos (SISD)

Un único procesador interpreta una única


secuencia de instrucciones.
Datos almacenados en una única memoria.
Computadores monoprocesador.
Una secuencia de instrucciones y
múltiples secuencias de datos (SIMD)

Una única instrucción máquina controla paso a


paso la ejecución simultánea de un cierto
número de elementos de proceso.
Cada elemento de proceso tiene una memoria
asociada.
Cada instrucción es ejecutada por cada
procesador, con un conjunto de datos
diferentes.
Procesadores vectoriales y matriciales.
Múltiples secuencias de
instrucciones y una secuencia
de datos (MISD)
Se transmite una secuencia de datos a un
conjunto de procesadores.
Cada procesador ejecuta una secuencia de
instrucciones diferente.
Esta estructura nunca ha sido implementada.
Múltiples secuencias de
instrucciones y múltiples
secuencias de datos (MIMD)
Un conjunto de procesadores ejecuta
simultáneamente secuencias de instrucciones
diferentes.
Conjuntos de datos diferentes.
Los SMP, los “clusters”, y los sistemas NUMA
son ejemplos de esta categoría.
Taxonomía de las arquitecturas
paralelas
Organizaciones de computadores

Una secuencia de Múltiples secuencias


Una secuencia de Múltiples secuencias
instrucción, de instrucción,
instrucción, una de instrucción, una
múltiples secuencias múltiples secuencias
secuencia de datos secuencia de datos
de datos (SIMD) de datos (MIMD)
(SISD) (MISD)

Monoprocesadores

Procesadores Procesadores Memoria compartida Memoria distribuida


vectoriales matriciales (fuertemente acoplada) (débilmente acoplada)

Clusters

Multiprocesador Acceso no
simétrico (SMP) uniforme a
memoria
(NUMA)
Organización MIMD

Son procesadores de uso general.


Cada uno es capaz de procesar todas las
instrucciones necesarias para realizar las
transfromaciones apropiadas de los datos.
Se pueden subdividir, además, según la forma
que tienen los procesadores para comunicarse.
SMP (fuertemente acoplado)

Varios procesadores comparten una única


memoria.
Los procesadores se comunican unos con otros
a través de esa memoria compartida.
Características del multiprocesador simétrico
(SMP):
Comparten la memoria principal.
Comparten un bus para acceder a la memoria.
El tiempo de acceso a memoria es aproximadamente
el mismo para todos los procesadores.
NUMA (fuertemente acoplado)

Acceso no uniforme a memoria.


El tiempo de acceso a zonas de memoria
diferentes puede diferir en un computador
NUMA.
Clusters (memoria débilmente
acoplada)

Un conjunto de computadores monoprocesador


independientes, o de SMP, pueden
interconectarse para formar un “cluster”.
La comunicación entre los computadores se
realiza mediante conexiones fijas o mediante
algún tipo de red.
Organizaciones paralelas
(SISD)

SI SD
UC UP UM
Organizaciones paralelas
(SIMD)

SD
EP1 ML1

SD
EP2 ML2
SI
UC

SD
EPn MLn
Organizaciones paralelas
(MIMD de memoria compartida)
SI SD
UC1 EP1

SI SD

compartida
EP2

Memoria
UC2

SI SD
UCn EPn
Organizaciones paralelas
(MIMD de memoria distribuida)

SI SD
UC1 EP1 ML1

SD

interconexión
SI
UC2 EP2 ML2

Red de
SI SD
UCn EPn MLn
Multiprocesadores simétricos
 Un SMP es un computador autónomo con las siguientes
características:
 Hay dos o más procesadores similares de capacidades comparables.
 Estos procesadores comparten la memoria principal y las E/S.
 Están interconectados mediante un bus u otro tipo de sistema de
interconexión.
 El tiempo de acceso a memoria es aproximadamente el mismo para
todos los procesadores.
 Todos los procesadores comparten los dispositivos de E/S, bien a
través de los mismos canales, o bien mediante canales distintos que
proporcionan caminos de acceso al mismo dispositivo.
 Todos los procesadores pueden desempeñar las mismas funciones (de
ahí el término simétrico).
 El sistema está controlado por un sistema operativo integrado, que
proporciona la interacción entre los procesadores y sus programas en
los niveles de trabajo, tarea, fichero y datos.
Ventajas de un SMP
 Prestaciones:
Cuando el trabajo a realizar por un computador puede
organizarse en paralelo.
 Disponibilidad:
Debido a que todos los procesadores pueden realizar las mismas
funciones, un fallo en un procesador no hará que el computador
se detenga.
 Crecimiento incremental:
Se pueden aumentar las prestaciones del sistema, añadiendo
más procesadores.
 Escalado:
Los fabricantes pueden ofrecer una gama de productos con
precios y prestaciones diferentes, en función del número de
procesadores que configuran el sistema.
Diagrama de bloques genérico de
un multiprocesador fuertemente
acoplado
Procesador Procesador Procesador

E/S

Red de
E/S
interconexión

E/S

Memoria principal
Organización de los
multiprocesadores simétricos

Bus de tiempo compartido o común.


Memoria multipuerto.
Unidad de control central.
Bus de tiempo compartido
 Es el mecanismo más simple.
 La estructura y las interfaces son básicamente las
mismas que las de un sistema de un único procesador.
 Se proporcionan los siguientes elementos para el:
Direccionamiento: distinción de los módulos del bus.
Arbitraje: cualquier módulo puede funcionar temporalmente
como maestro.
Tiempo compartido: cuando un módulo está controlando el bus,
los otros módulos tienen que esperar y, si es necesario,
suspender su operación.
 Existen varios procesadores, además de varios módulos
de E/S.
Ventajas del bus de tiempo
compartido

Simplicidad.
Flexibilidad.
Fiabilidad.
Desventajas del bus de tiempo
compartido

La prestación está limitada por el tiempo de


ciclo del bus.
Cada procesador debería estar equipado con
una memoria cache para mejorar las
prestaciones:
Se reduciría el número de accesos.
Se pueden producir problemas de coherencia de
cache:
Este problema es resuelto por el hardware (ver
diapositiva 29).
Memoria multipuerto

Permite el acceso directo e independiente a los


módulos de memoria desde cada uno de los
procesadores.
Se necesita una cierta lógica para resolver los
conflictos.
Se necesitan pocas o ninguna modificación en
los procesadores o en los módulos.
Ventajas y desventajas de la
memoria multipuerto

Más compleja:
Se precisa añadir al sistema de memoria una buena
cantidad de lógica.
Se consiguen mejores prestaciones.
Cada procesador tiene un camino dedicado a cada
módulo de memoria.
Permite configurar partes de la memoria como
privadas para uno o más procesadores:
Incremento de la seguridad.
Se debe utilizar una estrategia de escritura
directa para controlar la cache.
Unidad de control central
Encauza las distintas secuencias de datos entre
los distintos módulos independientes.
Puede almacenar temporalmente peticiones.
Puede realizar las funciones de arbitraje y
temporización.
Puede transmitir mensajes de estado y control
entre los procesadores.
Puede alertar sobre los cambios en las caches.
Las interfaces de E/S, memoria y procesador no
sufren cambios esenciales.
Ejemplo: S/370 de IBM.
Puntos clave de diseño de un
sistema operativo

Procesos concurrentes simultáneos.


Planificación.
Sincronización.
Gestión de memoria.
Fiabilidad y tolerancia ante los fallos.
Organización del SMP S/390 de
IBM

Módulo de Módulo de Módulo de Módulo de


memoria 0 memoria 1 memoria 2 memoria 3
Componentes clave del SMP
S/390
 Procesador (PU):
Microprocesador CISC.
Las instrucciones más frecuentemente ejecutadas se
encuentran cableadas.
Cada PU incluye una cache L1 unificada de 64kbytes con un
tiempo de acceso de un sólo ciclo.
Cache L2.
384kbytes.
 Adaptador bus-red de interconexión (BSN):
Incluye 2 Mbytes de nivel 3 (L3).
 Módulos de memoria:
8 Gbytes por módulo.
Coherencia de cache y
protocolo MESI
Problema: pueden existir varias copias del
mismo dato simultáneamente en caches
diferentes.
Puede producirse una visión inconsistente de la
memoria.
La política de post-escritura puede ocasionar
inconsistencia.
La política de escritura directa también puede
producir problemas, a no ser que las otras
caches comprueben los accesos a la memoria
principal.
Soluciones software

 El compilador y el sistema operativo se encargan del


problema de la necesidad de circuitería y lógica
hardware adicional.
 La sobrecarga se transfiere para compilar el tiempo.
 La complejidad del diseño se transfiere desde el
hardware al software.
 Por otra parte, el software tiende a tomar ciertas
decisiones conservadoras:
Utilización ineficiente de la cache.
 Analizan el código para determinar periodos seguros
para las variables compartidas.
Soluciones hardware
Generalmente se denominan “protocolos de
coherencia de cache”.
Permiten reconocer dinámicamente, en el
momento de la ejecución, problemas
potenciales.
Permiten un uso más efectivo de las caches.
Aproximaciones transparentes para el
programador.
Protocolos de directorio.
Protocolos de sondeo.
Protocolos de directorio
Recogen y mantienen la información acerca de
las copias de las líneas en la cache.
El directorio se almacena en la memoria
principal.
Las peticiones se comprueban comparándose
con el directorio.
Se ejecutan las transferencias apropiadas.
Los esquemas de directorio tienen un cuello de
botella central.
Son efectivos en sistemas a gran escala que
poseen esquemas complejos de interconexión.
Protocolos de sondeo

Distribuyen la responsabilidad de mantener la


coherencia de cache entre todos los
controladores de cache.
Una cache reconoce cuándo una línea está
compartida con otras caches.
Las actualizaciones se anunucian a otras caches.
Se adaptan bien a multiprocesadores basados
en un bus.
Incremento en el tráfico del bus.
Invalidar-si-escritura

 Múltiples procesadores que leen, pero uno sólo que


escribe.
 Cuando se quiere hacer una escritura, se invalidan las
otras caches de la línea.
 El procesador que escribe tiene acceso exclusivo hasta
que la línea sea requerida por otro procesador.
 Se utiliza en los sistemas Pentium II y Power PC.
 El estado de cada línea se marca como modificado,
exclusivo, compartido, o no válido.
 El prtocolo de invalidar-si-escritura se llama MESI.
Actualizar-si-escritura

Varios procesadores que escriben y leen.


La palabra actualizada se distribuye a todos los
procesadores.
Algunos sistemas implementan un sistema
adaptativo con caracteísticas de ambas
soluciones.
Diagrama de transición de
estados MESI

No Compar- No Compar-
válido tido válido tido

Modifi- Exclu- Modifi- Exclu-


cado sivo cado sivo

(a) Línea en el procesador que inicia la transferencia (a) Línea en una cache sondeando el bus

Acierto de lectura Escribir en memoria la línea de cache


Fallo de lectura, compartida modificada
Fallo de lectura, exclusiva Invalidar transacción
Acierto de escritura
Fallo de escritura
Lectura-para-modificación (RWITM)
Acierto de sondeo en lectura
Acierto de sondeo en escritura o
lectura-para-modificación Cargar línea de cache
“Clusters”

Son la alternativa a los SMP.


Prestaciones y disponibilidad elevadas.
Aplicaciones propias de un servidor.
Un grupo de computadores completos
interconectados que trabajan conjuntamente
como un único recurso de cómputo, creándose
la ilusión de que se trata de una sóla máquina.
Cada computador se denomina “nodo”.
Beneficios del “cluster”

Escalabilidad absoluta.
Escalabilidad incremental.
Alta disponibilidad.
Mejor relación precio/prestaciones.
Configuraciones de “clusters”:
servidor sin disco compartido

E/S E/S Enlace de alta velocidad para mensajes


E/S E/S
Configuraciones de “clusters”:
disco compartido

Enlace de alta velocidad para mensajes


E/S E/S

E/S E/S E/S E/S

También podría gustarte