You are on page 1of 570

Por otro lado, una vez explicada y estudiada la teora, el libro es adems una herramienta de autoevaluacin.

En este sentido, desde nuestra experiencia, recomendamos al lector que no mire las soluciones, sino que previamente se enfrente al
problema e intente resolverlo por cuenta propia, acudiendo como ltimo recurso
al breve apunte terico que hay al comienzo de cada captulo. El libro recopila
ms de 250 problemas resueltos y otros tantos solamente enunciados. La mayor
parte de ellos han sido propuestos en exmenes de Diplomatura y Licenciatura en
Informtica a lo largo de los 10 ltimos aos.
Los temas que abarca se pueden agrupar en las siguientes materias:
Representacin de la informacin
Diseo Combinacional
Diseo Secuencial
Diseo Algortmico
Ensamblador
Modos de direccionamiento
Formato de instrucciones
Ruta de datos y Unidad de Control
Memoria
Buses
Entrada/Salida
Segmentacin
Rendimiento

Problemas de fundamentos
y estructura de computadores

Este libro pretende ser un complemento prctico a la extensa bibliografa terica


en el rea de Diseo Lgico, Estructura y Arquitectura de Computadores. En
estas asignaturas el alumno se enfrenta a un gran nmero de mtodos y conceptos, que naturalmente debe aprender, pero cuya finalidad es ser aplicados en
problemas reales. Por ello creemos que disponer de una coleccin de casos prcticos, presentados en forma de ejercicios, puede aclarar los conceptos que se estn
estudiando en estas asignaturas.

Problemas de fundamentos
y estructura de computadores

Cuesta
Hidalgo
Lanchares
Risco
ISBN 978-84-8322-591-2

9 788483 225912

www.pearsoneducacion.com

Problemas de fundamentos.indd 1

Alfredo Cuesta Infante


Jos Ignacio Hidalgo Prez
Juan Lanchares Dvila
Jos Luis Risco Martn
20/7/11 13:25:07

Problemas de fundamentos
y estructura de computadores

Problemas de fundamentos
y estructura de computadores
Alfredo Cuesta infante
Profesor Contratado
Centro de Estudios Superiores Felipe II
Universidad Complutense de Madrid

Jos Ignacio Hidalgo Prez


Profesor Titular de Universidad
Facultad de Informtica
Universidad Complutense de Madrid

Juan Lanchares Dvila


Profesor Titular de Universidad
Facultad de Informtica
Universidad Complutense de Madrid

Jos Luis Risco Martn


Profesor Contratado Doctor
Facultad de Informtica
Universidad Complutense de Madrid

Madrid Mxico Santaf de Bogot Buenos Aires Caracas Lima Montevideo


San Juan San Jos Santiago Sao Paulo Reading, Massachusetts Harlow, England

Datos de catalogacin bibliogrfica

PROBLEMAS DE FUNDAMENTOS Y ESTRUCTURA


DE COMPUTADORES
Alfredo C. Infante, Jos I. Hidalgo Prez, Juan Lanchares Dvila,
Jos L. Risco Martn
PEARSON EDUCACIN, S.A., 2009
ISBN: 978-84-8322-591-2
Materia: 004, Computadores
Formato 195#250 mm.

Pginas: 568

Todos los derechos reservados.


Cualquier forma de reproduccin, distribucin, comunicacin pblica o transformacin
de esta obra slo puede ser realizada con la autorizacin de sus titulares, salvo
excepcin prevista por la ley. La infraccin de los derechos mencionados puede
ser constitutiva de delito contra la propiedad intelectual (arts. 270 y sgts. Cdigo penal).
Dirjase a CEDRO (Centro Espaol de Derechos Reprogrficos: www.cedro.org), si necesita
fotocopiar o escanear algn fragmento de esta obra.
5 PEARSON EDUCACIN, S.A., 2009
Ribera del Loira, 28
28042 Madrid (Espaa)
www.pearsoneducacion.com
ISBN: 978-84-8322-591-2
Depsito legal:
Equipo editorial:
Editor: Miguel Martn-Romo
Tcnico editorial: Esther Martn
Equipo de produccin:
Director: Jos Antonio Clares
Tcnico: Isabel Muoz
Diseo de cubierta: Equipo de diseo de Pearson Educacin, S.A.
Composicin COPIBOOK, S.L.
Impreso por:
Nota sobre enlaces a pginas web ajenas: Este libro puede incluir enlaces a sitios web gestionados por terceros y
ajenos a PEARSON EDUCACIN, S.A. que se incluyen slo con finalidad informativa. PEARSON EDUCACIN, S.A.
no asume ningn tipo de responsabilidad por los daos y perjuicios derivados del uso de los datos personales que pueda
hacer un tercero encargado del mantenimiento de las pginas web ajenas a PEARSON EDUCACIN, S.A. y del
funcionamiento, accesibilidad o mantenimiento de los sitios web no gestionados por PEARSON EDUCACIN, S.A.
Las referencias se proporcionan en el estado en que se encuentran en el momento de publicacin sin garantas, expresas
o implcitas, sobre la informacin que se proporcione en ellas.
Impreso en Espaa - Printed in Spain
Este libro ha sido impreso con papel y tintas ecolgicos

A mis padres.
A. Cuesta

A Esther, Elena y Julia que dan alegra y sentido a mi vida.


J. I. Hidalgo

A Paloma y Juan: empezar todos los das riendo es lo mejor que te puede ocurrir,
y gracias a ellos yo lo consigo.
J. Lanchares

A mi hijo Jaime. Y, naturalmente, a mi mujer Esther, porque les quiero y son lo ms


importante para m.
J. L. Risco

Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

xi

Captulo 1 Representacin de la informacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1 Sistema de numeracin binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.2 Cambios de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
2

1.2.1 Sustitucin en serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.2.2 Multiplicacin y divisin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Cuando una base es potencia de la otra (R % Sx o S % Rx) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2
2
3

1.3 Representacin de nmeros enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1
1.3.2
1.3.3
1.3.4

Magnitud y Signo (MyS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Complemento a 2 (C2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Complemento a 1 (C1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cdigo BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
4
4
5

1.4 Representacin de nmeros en coma flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


1.5 Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
7
22

Captulo 2 Sistemas combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12

Especificacin mediante Funciones de Conmutacin (F.C.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Especificacin mediante Expresiones de Conmutacin (E.C.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simplificacin mediante mapas de Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Implementacin de sumas de productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anlisis de sistemas combinacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conjuntos universales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplexores o selectores (MUX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ROMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otros mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25
25
27
27
28
29
30
30
32
33
33
71

viii

Introduccin

Captulo 3 Sistemas secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

3.1 Definicin de sistema secuencial y concepto de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

3.1.1 Sistema secuencial (Definicin formal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.1.2 Concepto de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77
77

3.2 Clasificacin de sistemas secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.2.1 Sistemas sncronos y asncronos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78
78

3.3 Especificacin binaria. Obtencin de diagramas de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

3.3.1 Reconocedores de secuencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.3.2 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78
80

3.4 Implementacin no cannica de reconocedores con biestables D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


3.5 Implementacin cannica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Mdulos secuenciales estndar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Registros de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.3 Banco de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.4 Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7 Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80
81
81
81
82
82
83
84
115

Captulo 4 Introduccin al diseo algortmico de sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

119

4.1
4.2
4.3
4.4

Esquema general de un sistema diseado algortmicamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Proceso de diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

119
121
121
175

Captulo 5 Estructura de un computador sencillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

179

5.1
5.2
5.3
5.4
5.5
5.6

Diseo de la unidad de proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Diseo de la ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Formato de las instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo de la unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

179
181
182
183
185
224

Captulo 6 Introduccin a la programacin en lenguaje ensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

229

6.1
6.2
6.3
6.4
6.5
6.6
6.7

Instrucciones aritmtico-lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de acceso a memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de salto (BCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Directivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diagramas de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

230
230
230
231
231
232
264

Captulo 7 Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

267

7.1 Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Medidas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

267
268

Introduccin

7.3
7.4
7.5
7.6
7.7

ix

MIPS: Millones de instrucciones por segundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


MFLOPS: Millones de instrucciones en coma flotante por segundo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ley de AMDAHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

268
269
269
270
289

Captulo 8 Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

293

8.1
8.2
8.3
8.4
8.5
8.6

Direccionamiento inmediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Direccionamiento directo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Direccionamiento relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Direccionamiento indirecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

293
294
295
298
299
312

Captulo 9 Teora del formato de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

317

9.1
9.2
9.3
9.4

Campos de la instruccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Caractersticas del conjunto de formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

318
319
320
348

Captulo 10 Diseo del camino de datos y la unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

353

10.1 Partes bsicas de un procesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


10.1.1 Los registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.2 La memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.3 Unidad aritmtico-lgica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.4 Estudio y diseo del camino de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.5 La unidad de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

353
353
355
355
356
357
358
386

Captulo 11 Procesadores segmentados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

389

11.1
11.2
11.3
11.4
11.5

Segmentacin bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas y soluciones: tcnicas bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pipeline multifuncional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

390
391
394
396
425

Captulo 12 Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

431

12.1
12.2
12.3
12.4
12.5

Propiedades de la jerarqua de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


La memoria cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

432
433
436
438
478

Captulo 13 Entrada/salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

483

13.1 Bus de direcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

484

Introduccin

13.2 Mdulos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


13.3 Gestin de la comunicacin CPU-perifricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.1 Seleccin del perifrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.2 Gestin de las seales de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.3 Sincronizacin con la CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.4 E/S programada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.5 E/S mediante interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.5.1 Peticin de interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.5.2 Reconocimiento de interrupcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.5.3 Identificacin del dispositivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.5.4 Prioridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.6 E/S DMA (Direct Memory Access) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.7 Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.8 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

484
484
485
485
485
485
486
486
486
487
487
487
488
515

Captulo 14 Buses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

519

14.1
14.2
14.3
14.4

Estructura del bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Uso bsico del bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clases de buses y jerarquas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diseo del bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.4.1 Temporizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.4.2 Tipos de transferencia de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.4.3 Esquemas de arbitraje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.4.4 Decisiones de diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.5 Problemas resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.6 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

520
520
521
522
522
524
524
525
525
546

Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

551

Aunque existen bastantes textos tericos sobre Fundamentos y Estructura de Computadores,


es difcil encontrar una recopilacin de problemas resueltos sobre esta materia. Con la llegada
de los nuevos ttulos de grado y la implantacin del Espacio Europeo de Educacin Superior,
el trabajo prctico en clase y su extensin a las horas de estudio se hace cada vez ms importante. Para que el alumno pueda afianzar sus conocimientos, sin duda, la mejor metodologa
es la realizacin de supuestos prcticos y para realizarlos se hacen necesarias herramientas
como el libro que aqu presentamos. Problemas de Fundamentos y Estructura de Computadores pretende ofrecer al lector una amplia variedad de problemas resueltos que cubran los aspectos ms importantes de las asignaturas de Fundamentos y Estructura de Computadores,
desde el diseo secuencial y combinacional hasta los procesadores segmentados.
El libro est dividido en dos partes claramente diferenciadas y que responden a su propio
ttulo. Los primeros 6 captulos se dedican a lo que generalmente se conoce como Fundamentos de Computadores y en la segunda parte, captulos 8 a 14, se avanza en temas algo ms
complejos relacionados con la Estructura de Computadores, de tal forma que el texto profundiza en complejidad de forma gradual.
Los captulos estn organizados en tres partes. En primer lugar se realiza una breve introduccin terica que recuerda los conceptos ms importantes. A continuacin se exponen un
conjunto de problemas resueltos (en torno a 20 por captulo) y se concluye con una serie de
problemas propuestos.
En el Captulo 1 se trata el tema de representacin de la informacin. Este libro cubre una
gran parte los conceptos estudiados en las asignaturas dedicadas al diseo, anlisis e implementacin de sistemas de computacin. Entenderemos por sistema un dispositivo que recibe,
procesa y genera informacin en un tiempo finito. Conocer el modo en el que se representa la
informacin es por tanto un pilar esencial pues en esa codificacin arranca el resto de procedimientos que se estudiarn. La informacin, una vez codificada, se transformar en un nmero
binario. Es por tanto natural comenzar por decidir el modo en el que se representarn los nmeros enteros y reales utilizando un sistema de numeracin binaria. En el libro se resuelven y
proponen ejercicios de cambios de base, notacin Magnitud y Signo (MyS), C1 y C2, as como
de representacin en coma flotante y el standard IEEE 754.

xii

Introduccin

Los primeros sistemas de cmputo que se deben estudiar son los que se tratan en el Captulo 2 y son los denominados combinacionales. Los motivos son varios. En primer lugar este
tipo de sistemas no necesita ningn elemento de memoria complejo y la salida depende exclusivamente de los ltimos valores recibidos en la entrada. El lector comenzar a trabajar con la
operacin aritmtica ms bsica como sumar, o las operaciones lgicas AND, OR y NOT que
son esenciales en aritmtica binaria. En segundo lugar, son precisamente los sistemas que implementan estas operaciones lgicas los que, agrupados en mdulos que gradualmente van
creciendo en tamao, dan lugar a sistemas ms complejos. Los problemas de este captulo
tratan conceptos como el de conjunto universal, el uso de mdulos e incide especialmente en
la correcta codificacin de un problema con enunciados contextualizados, es decir, tal y como
se podran plantear en la vida real.
Una vez vistos los conceptos iniciales de diseo lgico de sistemas combinacionales, en el
Captulo 3 se tratan los sistemas secuenciales, que son aquellos que incorporan elementos de
memoria o de almacenamiento de la informacin. De este modo, la salida en un instante dado
depende, no slo de la entrada del sistema en el momento de proporcionar la salida, sino tambin de los valores recibidos hasta ese momento. Puesto que es imposible almacenar toda la
informacin recibida desde el comienzo, es imprescindible comprender el concepto de Estado
y de Mquina de estados. Por otro lado, es necesario tambin estudiar los diferentes mdulos
secuenciales que, junto con las mquinas de estados y los mdulos combinacionales, sentarn
las bases del diseo de sistemas complejos capaces de resolver algoritmos y finalmente de
implementar computadores.
En el Captulo 4 se aborda el diseo algortmico de sistemas digitales. Una vez que el
lector se ha afianzado en el manejo de los sistemas combinacionales y secuenciales es el momento de pasar a disear sistemas procesadores sencillos. Cualquier sistema se puede ver como un pequeo procesador compuesto por una Unidad de Proceso y una Unidad de Control.
El diseo algortmico nos permite obtener la implementacin de un sistema atendiendo a este
esquema.
El Captulo 5 ampla los conceptos de Unidad de Control y Unidad de Proceso para estudiar las caractersticas de un sistema computador sencillo pero completo y sus modificaciones: Partiendo de unas especificaciones estndar, la mquina rudimentaria, se resuelven problemas sobre cambios en el formato de instrucciones, la ruta de datos y la unidad de control.
Con este captulo el lector obtiene una primera aproximacin a la estructura de un computador. La mquina Rudimentaria se describe y explica en profundidad en (Hermida et al. 2000).
El lenguaje ensamblador permite programar directamente las mquinas que se han diseado en los dos captulos anteriores. En este momento el lector ya tiene una idea clara de cmo
la mquina procesa las instrucciones codificadas en binario que incluyen informacin de control y los operandos del procesador. Para evitar que el programador tenga que utilizar ese
lenguaje tedioso de 0s y 1s, se utiliza un lenguaje nemotcnico conocido como lenguaje
ensablador y que utiliza expresiones similares al lenguaje natural para especificar las instrucciones. El Captulo 6 presenta una serie de problemas relativos a la programacin en ensamblador. El objetivo principal no es que el alumno realice programas muy complejos, sino que
obtenga una visin clara de la forma en que se deben manejar los registros y la informacin
una vez que ha diseado y modificado mquinas de procesamiento bsicas. El simulador de la
Mquina Rudimentaria est disponible en ftp://ftp.ac.upc.es/.

Introduccin

xiii

En el Captulo 7 se tratan los aspectos de cmo medir el coste y rendimiento de un computador. Al disear un computador o al mejorar un subsistema de alguno existente, el arquitecto
de computadores debe tener en cuenta los objetivos de la mquina a modificar teniendo presentes estos dos importantes parmetros.
El Captulo 8 recoge una serie de problemas de modos de direccionamiento y pretende
que el lector conozca la flexibilidad que los modos de direccionamiento dan al programador a
la hora de acceder a los datos almacenados en la memoria. Este captulo tiene continuidad en
el Captulo 9, dedicado a los formatos de las instrucciones, y 10, sobre diseo de camino de
datos. En el de formatos porque en l se ve cmo el nmero y modos de direccionamientos
afecta al formato final de instrucciones, sobre todo en lo que a tamaos de memoria y tamaos de palabra se refiere. Por otro lado, en el Captulo 10, se estudia en profundidad cmo
implementar las unidades secuenciadoras, es decir las unidades que implementan los modos
de direccionamiento. Adems, al estudiar cmo se implementa cada modo de direccionamiento, el alumno entiende las implicaciones que la eleccin de los mismos tiene en los tiempos de
ejecucin de una instruccin.
En formatos de instrucciones se abordan algunos aspectos ya tratados en el Captulo 5.
Como se ha explicado, la misin de las instrucciones y sus formatos es recoger y codificar
toda la informacin necesaria para que las instrucciones del repertorio de instrucciones se ejecuten correctamente. En este captulo se pretende que los estudiantes aprendan a implementar
formatos teniendo en cuenta que deben interrelacionar formatos de diferentes tipos de instrucciones con el objetivo de conseguir un diseo ptimo. Este captulo est muy relacionado con
el Captulo 10 ya que las decisiones de formato pueden afectar a la complejidad de la unidad
de control y por lo tanto al rendimiento final del procesador.
Por lo que se refiere al Camino de datos y unidad de control, el diseo de procesadores
multiciclo permite al alumno comprender las diferentes etapas de ejecucin de una instruccin. Se pretende que el alumno se acostumbre a pensar en la descomposicin del sistema
global en etapas, con los subcaminos necesarios y las seales de control. La ejecucin secuencial le permite centrarse en la implementacin instruccin a instruccin sin tener que dispersarse estudiando las implicaciones de tener varias instrucciones ejecutndose en paralelo en el
procesador. Los problemas se han propuesto de manera que paso a paso se vaya implementando un procesador que hemos llamado TIFN. A lo largo del captulo se van dando diferentes
tipos de instrucciones para que se estudie el formato, el camino de datos y el control necesarios para implementarlos. A continuacin se van integrando estos caminos en uno nico. De
esta manera los alumnos pueden observar no slo cmo se realiza esta integracin sino las
diferentes opciones de diseo que surgen en este proceso y cmo pueden afectar las decisiones al rendimiento final del procesador.
El objetivo del Captulo 11 son los procesadores segmentados. En este captulo no se profundiza en implementaciones hardware propiamente dichas, es decir, no se explica cmo implementar las detecciones de riesgos, las paradas o los cortocircuitos, ni se explican tcnicas
avanzadas como puede ser la planificacin dinmica, la prediccin de saltos, la especulacin
o el multilanzamiento. La idea es trabajar sobre los conceptos de segmentacin de manera que
el lector sea capaz de comprender los riesgos que aparecen para unas determinadas caractersticas de segmentacin, cmo funcionan las tcnicas bsicas para evitar prdidas de rendimiento, y cmo afectan estos riesgos y su tratamiento en el rendimiento final del procesador.

xiv

Introduccin

El Captulo 12 trata de la jerarqua de memoria y de sus principios de localidad espacial y


temporal. Desde el inicio de las ciencias de la computacin, el programador ha deseado disponer de una memoria ilimitada y extremadamente rpida. El diseo de un espacio de direcciones virtuales y la jerarqua de memoria permiten acercarnos a este hecho.
Disponer de un procesador, una jerarqua de memoria y un repertorio de instrucciones tiene poco valor si no existe comunicacin o interaccin con el mundo exterior, o bien, si al
computador inicial no se le pueden acoplar mdulos que incorporen nueva funcionalidad al
sistema original. Estos mdulos son los dispositivos de entrada/salida y se tratan en el Captulo 13, donde se hace tambin especial nfasis en los mtodos de entrada/salida (programada,
por interrupciones o con DMA).
El Captulo 14 complementa al anterior captulo tratando las interconexiones o buses del
computador, ya sea entre sus componentes internos (procesador, memoria) como con los dispositivos de entrada/salida. En este caso no nos hemos centrado tanto en los dispositivos especficos (CD-ROM, ratn, teclado, etc.) como en la arquitectura propia de la entrada/salida y
su rendimiento en trminos de: qu cantidad de datos se puede mover por el computador por
unidad de tiempo?, y cuntas operaciones de entrada/salida se pueden realizar por unidad de
tiempo?

1.1 Sistema de numeracin binario


Un sistema de numeracin consta de: Un conjunto ordenado de cifras y un conjunto de operaciones.
Llamaremos Base al nmero de cifras que hay en dicho conjunto.
De este modo, el sistema de numeracin binario consta de: el conjunto {0, 1}, cuya base es 2.
Las operaciones ms sencillas son:
La suma.
La multiplicacin.
La multiplicacin por potencias de la base.
Para realizar las dos primeras acudiremos a las tablas de sumar y multiplicar.
!

0*

* % Genera arrastre

La multiplicacin por potencias de la base se realiza del siguiente modo.


Sea un nmero binario n al que vamos a multiplicar por 2m.
Si m es positivo moveremos la coma decimal de n m posiciones a la derecha; o tambin
aadiremos m ceros al final.
Si m es negativo moveremos la coma decimal de n m posiciones a la izquierda; o tambin quitaremos m ceros empezando por el final.

Problemas de fundamentos y estructura de computadores

Ejemplo 1:

Sea n % 11011 y m % 3; entonces:

n . 2m % 11011000
n . 2.m % 11.011

Ejemplo 2:

Sea n % 101.01 y m % 2; entonces:

n . 2m % 10101
n . 2.m % 1.0101

Multiplicar por potencias de la base un nmero significa multiplicar dicho nmero por:
M%0

M%1

M%2

M%3

M%4

M%5

M%6

M%7

M%8

M%9

M % 10

16

32

64

128

256

512

1024

1.2 Cambios de base


1.2.1 Sustitucin en serie
Se usa cuando S % 10; es decir, cuando queremos pasar a decimal.
(N)10 % ; ai . Ri % an.1 . Rn.1 ! ! a0 . R0 ! a.1 . R.1 ! ! a.m . R.m
i

Es decir, escribimos el nmero en notacin polinomial y luego calculamos en decimal.


Ejemplo 1:

(1A4.C)16 % 1 . 162 ! 10 . 161 ! 4 . 160 ! 12 . 16.1 % 420.75

1.2.2 Multiplicacin y divisin


Se usa cuando R % 10; es decir, cuando queremos pasar de decimal a otra.
Parte entera:
Dividir (N)10 por S.
El resto ser el dgito menos significativo de (N)S.
Repetir el proceso tomando como dividendo el cociente de la divisin anterior.
El resto ser el siguiente dgito menos significativo.
El proceso concluye cuando el cociente es 0.
Parte fraccionaria:
Multiplicar por S la parte fraccionaria.
La parte entera del resultado ser el dgito ms significativo de la parte fraccionaria
de (N)S.
Repetir el proceso (puede que no se acabe nunca).

Captulo 1 Representacin de la informacin

Ejemplo:

Pasar (826.17)10 a base 5

1.2.3 Cuando una base es potencia de la otra (R % S x o S % R x)


Se usa para pasar de binario a octal y hexadecimal y viceversa:
Si R % Sx: Reescribir las cifras de (N)R, en la nueva base S, en grupos de x % Expandir.
Ejemplo:

(736.2)8 % (111 011 110 . 010)2

Ejemplo:

(1A4.C)16 % (0001 1010 0100 . 1100)2

Si S % Rx: Juntar las cifras de (N)R en grupos de x pasar dichos grupos a la base
S % Comprimir.
Ejemplo:

(101 001 011 . 110)2 % (513.6)8

Ejemplo:

(0101 1110 1101 . 0011)2 % (5ED.3)16

Regla Mnemotcnica:
Si dan el n.o en binario hay que comprimir. Si lo dan en octal o hexadecimal hay que
expandir.

1.3 Representacin de nmeros enteros


1.3.1 Magnitud y Signo (MyS)
Bit ms significativo % signo
Si el n.o es positivo
Si el n.o es negativo

r 0
r 1

Resto de los bits % Magnitud.


Rango representable: [.(2n.1 . 1), 2n.1 . 1].
El cero tiene doble representacin (0 000.0)MyS y (1 000.0)MyS
Clculo del opuesto: Cambiar el signo.

Problemas de fundamentos y estructura de computadores

Clculo del valor absoluto (en decimal): Puesto que la magnitud se representa en binario,
ya sea el nmero positivo o negativo, simplemente hay que calcular su equivalente en decimal
(se recomienda el mtodo de sustitucin en serie).

1.3.2 Complemento a 2 (C2)


Mismo convenio para el signo.
Resto de los bits % Magnitud.
Rango representable: [.(2n.1), 2n.1 . 1]
donde el .(2n.1) se representar como (1 000...(n.1)...00)C2.
El cero tiene una nica representacin: (0 000...0)C2.
Clculo del opuesto: Tomar el n.o dado (ya sea positivo o negativo) y calcular su C2. Para
ello usaremos el siguiente mtodo:
1.o

Copiar los bits uno a uno, empezando por la derecha, hasta que aparezca el primer 1
(inclusive).

2.o

Negar los bits restantes, es decir cambiar los 0s por 1s y los 1s por 0s.

Clculo del valor absoluto (en decimal):


Si el n.o es positivo r la mag. est en binario r Aplicar el mtodo de sust. en serie.
Si el n.o es negativo r la mag. est en C2 r Calcular su opuesto (i.e. su C2) r
r Aplicar el mtodo de sustitucin en serie.

1.3.3 Complemento a 1 (C1)


Mismo convenio para el signo.
Resto de los bits % Magnitud.
Rango representable: [.(2n.1 . 1), 2n.1 . 1].
El cero tiene dos representaciones: (0 000 0)C1 y (1 111 1)C1.
Clculo del opuesto: Tomar el n.o dado (ya sea positivo o negativo) y calcular su C1. Para
ello usaremos el siguiente mtodo: Copiar los bits uno a uno, empezando por la derecha, cambiando los 0s por 1s y los 1s por 0s (es decir, negarlo).
Clculo del valor absoluto (en decimal):
Si el n.o es positivo r la mag. est en binario r Aplicar el mtodo de sust. en serie.
Si el n.o es negativo r la mag. est en C1 r Calcular su opuesto (i.e. su C1) r
r Aplicar el mtodo de sustitucin en serie.
Utilidad del C1: Podemos calcular un n.o en notacin C2 sumndole 1 a la notacin C1 que
tiene un mtodo ms rpido (desde el punto de vista del PC).

Captulo 1 Representacin de la informacin

1.3.4 Cdigo BCD


Cada dgito del nmero dado se codifica con su equivalente en binario, usando 4 bits:
0 % 0000

1 % 0001

2 % 0010

3 % 0011

4 % 0100

5 % 0101

6 % 0110

Ejemplo:

7 % 0111

8 % 1000

9 % 1001

(0010 0110 1000)BCD % 268

1.4 Representacin de nmeros en coma flotante


La representacin en coma flotante est basada en la notacin cientfica.
La coma decimal no se halla en una posicin fija dentro de la secuencia de bits, sino que
su posicin se indica como una potencia de la base:
signo
YZ[

exponente
YZ[

signo
YZ[

! 6.02 . 10.23
VWX
mantisa

exponente
YZ[

! 1.01110 . 2.1101

VWX
base

VWX
mantisa

VWX
base

En todo nmero en coma flotante se distinguen tres componentes:

Signo: indica el signo del nmero (0 % positivo, 1 % negativo).


Mantisa: contiene la magnitud del nmero (en binario puro).
Exponente: contiene el valor de la potencia de la base (sesgado).
La base queda implcita y es comn a todos los nmeros, la ms usada es 2.

El valor de la secuencia de bits (s, ep.1, ..., e0, mq.1, ..., m0) es:
(.1)s . V(m) . 2V(e)
Dado que un mismo nmero puede tener varias representaciones
(0.110 . 25 % 110 . 22 % 0.0110 . 26)
los nmeros suelen estar normalizados:
un nmero est normalizado si tiene la forma 1.xx... . 2xx... (o 0.1xx ... . 2xx...)
dado que los nmeros normalizados en base 2 tienen siempre un 1 a la izquierda, ste
suele quedar implcito (pero debe ser tenido en cuenta al calcular el valor de la secuencia).
Sea el siguiente formato de coma flotante de 32 bits (base 2, normalizado)

Problemas de fundamentos y estructura de computadores

El rango de valores representable por cada uno de los campos es:


Exponente (8 bits con sesgo de 128): .128 ... !127.
Mantisa (23 bits normalizados): los valores binarios representables oscilan entre 1.00...
y 1.11..., es decir entre 1 y 2-2.23 (2-ulp) (1.11...1 % 10.00...0 . 0.0...1).

Obsrvese que la cantidad de nmeros representables es 232 (igual que en coma fija). Lo
que permite la representacin en coma flotante es ampliar el rango representable a costa de
aumentar el espacio entre nmeros representable (un espacio que no es uniforme).

IEEE 754
2 formatos con signo explcito, representacin sesgada del exponente (sesgo igual a
(2n.1 . 1 % 127), mantisa normalizada con un 1 implcito (1.M) y base 2.
precisin simple (32 bits): 1 bit de signo, 8 de exponente, 23 de mantisa
1.0 . 2.126 ... (2 . 2.23) . 2127 % 1.2 . 10.38 .. 3.4 . 1038
precisin doble (64 bits): 1 bit de signo, 11 de exponente, 52 de mantisa
1.0 . 2.1022 ... (2 . 2.52) . 21023 % 2.2 . 10.308 .. 1,8 . 10308
2 formatos ampliados para clculos intermedios (43 y 79 bits).
Codificaciones con significado especial
Infinito (e % 255, m % 0): representan cualquier valor de la regin de overflow.
NaN (Not-a-Number) (e % 255, m b 0): se obtienen como resultado de operaciones invlidas.
Nmero denormalizado (e % 0, m b 0): es un nmero sin normalizar cuyo bit implcito
se supone que es 0. Al ser el exponente 0, permiten representar nmeros en las regiones
de underflow. El valor del exponente es el del exponente ms pequeo de los nmeros
no denormalizados: .126 en precisin simple y .1022 en doble.
Cero (e % 0, m % 0): nmero no normalizado que representa al cero (en lugar de al 1).

Captulo 1 Representacin de la informacin

Excepciones:
Operacin invlida: u , 0#, 0 $ 0, $, x mod 0, x cuando x a 0,
x % .
Inexacto: el resultado redondeado no coincide con el real.
Overflow y underflow.
Divisin por cero.
El estndar exige que el resultado de las operaciones sea el mismo que se obtendra si se
realizasen con precisin absoluta y despus se redondease.
Hacer la operacin con precisin absoluta no tiene sentido pues se podran necesitar operandos de mucha anchura.
Existen 4 modos de redondeo:
Redondeo al ms cercano (al par en caso de empate).
Redondeo a ms infinito (por exceso).
Redondeo a menos infinito (por defecto).
Redondeo a cero (truncamiento).
Al realizar una operacin, cuntos bits adicionales se necesitan para tener la precisin
requerida?
Un bit r para el redondeo.
Un bit s (sticky) para determinar, cuando r%1, si el nmero est por encima de 0,5.
Tabla de operaciones de redondeo
Tipo de redondeo

Signo del resultado n 0

Signo del resultado a 0


!1 si (r or s)

.
!1 si (r or s)

!
0
Ms prximo

!1 si (r and p0) or (r and s)

!1 si (r and p0) or (r and s)

1.5 Problemas resueltos


PROBLEMA 1
Sea la siguiente secuencia de ceros y unos: A % 00101100 y B % 10010111.
Indicar qu valor representan en decimal si son nmeros:
a) Binarios

b) En notacin C1

d) En cdigo BCD

e) En cdigo Exceso-3

c)

En notacin C2

Problemas de fundamentos y estructura de computadores

Solucin:
a) Para pasar de binario a decimal hay que sumar los pesos de los unos.
En A tenemos unos en las posiciones 2, 3 y 5 (recordar que el bit menos significativo
ocupa la posicin 0).
En B tenemos unos en las posiciones 0, 1, 2, 4 y 6.
En definitiva: (A)10 % 22 ! 23 ! 25 % 44; (B)10 % 20 ! 21 ! 22 ! 24 ! 27 % 151.
b) Para pasar de notacin C1 a decimal los nmeros cuyo signo es positivo, o sea el bit ms
significativo es 0, se procede exactamente igual que si estuvieran en binario puro.
(A)10 % ! (22 ! 23 ! 25) % 44
Si el nmero es negativo, el bit ms significativo es 1, primero hay que pasar a binario puro su magnitud. Esto se logra complementando todos los bits. Despus ya se procede igual que en los casos anteriores.
(B)10 % . (01101000)2 % . (23 ! 25 ! 26) % .104
c)

Para pasar de notacin C2 a decimal los nmeros cuyo signo es positivo, o sea el bit ms
significativo es 0, se procede exactamente igual que si estuvieran en binario puro o en C1
(A)10 % ! (22 ! 23 ! 25) % 44
Si el nmero es negativo, el bit ms significativo es 1, primero hay que pasar a binario
puro su magnitud. Esto se logra copiando los bits del nmero, comenzando por el menos
significativo, hasta que aparece el primer uno inclusive. A partir de l se complementan
todos los dems. Despus ya se procede igual que en los casos anteriores.
(B)10 % . (01101001)2 % . (20 ! 23 ! 25 ! 26) % .105

d) A no puede ser BCD porque el 1101 no pertenece al cdigo; (B)10 % 97.


e)

A no puede ser Ex3 porque el 0010 no pertenece al cdigo; (B)10 % 64.

PROBLEMA 2
Marca con un crculo la nica afirmacin cierta:
a) (1000)2 % ...
b) (37)8 % ...
c) (1000)BCD % ...
d) (0101)C2 ! (1010)C2 % ...
a)

(.8)10

b)

(8)10

c)

Overflow si ancho % 4

d) Ninguna

a)

(011111)2

b)

(0307)16

c)

(00110111)BCD

d) Ninguna

a)

(1000)2

b)

(.8)10

c)

El 1000 no es BCD

d) Ninguna

a)

(15)10

b)

(.1)10

c)

Overflow si ancho % 4

d) Ninguna

Captulo 1 Representacin de la informacin

Solucin:
a) (1000)2 % b) (8)10 porque al ser un nmero en binario puro calculamos su equivalente
en decimal sumando los pesos de los unos que aparecen. El nico uno est en la posicin
3 y por tanto su peso es 23 % 8.
b) (37)8 % a) (011111)2 porque para pasar de base 8(% 23) a base 2 debemos rescribir cada cifra del nmero en base 8 con 3 bits; de este modo 3 % 011 y 7 % 111.
c) (1000)BCD % a)

(1000)2 porque el dato dado es la codificacin del 8 en base 10.

d) (0101)C2 ! (1010)C2 % b) (.1)10 porque el primer operando es el (5)10 y el segundo es


el (.6)10.
PROBLEMA 3
Completar la tabla
a) (128)10 % (...................................)16
b) (12)10 % (...................................)BCD
c)

(10000)C2 ! (01010)C2 % (...................................)C2

d) (1101)MyS % (...................................)C1
Solucin:
a) (128)10%27%(10000000)2%(80)16.
b) Rescribiendo 1 % 0001 y 2 % 0010 queda (12)10%(00010010)BCD.
c)

La suma de dos nmeros en notacin C2 se realiza bit a bit y el ltimo acarreo se pierde,
por tanto:
(10000)C2 ! (01010)C2 % (11010)C2

d) El (1101)MyS % .(5)10 porque el bit ms significativo representa el signo y el resto su


valor absoluto en binario puro. Para representar el .(5)10 en la notacin C1 con 4 bits
simplemente hay que escribir el !(5)10 en binario puro con 4 bits y despues complementar todos los bits. As tendramos primero 0101 y tras complementar todos los bits queda
(1010)C1.
PROBLEMA 4
Responde Verdadero o Falso con una V o una F dentro de la casilla de la izquierda de cada
frase.
a) (.1)10 % (11111111)C2
b) (1000)C2 ! (0001)C2 desborda con 4 bits
c) (10011001)BCD % (99)16
d) (1100)C2 . (0011)C2 % (1001)C2

10

Problemas de fundamentos y estructura de computadores

Solucin:
a) V. (11111111)C2 % .(00000001)2 % .(1)10
b) F. (1000)C2 ! (0001)C2 % (1001)C2 % .(0111)2 % .(7)10 que est dentro del rango con
4 bits.
c)

F. (10011001)BCD % (99)10 (99)16

d) V. (1100)C2 . (0011)C2 % .(0100)2 . (0011)2 % .(4)10 . (3)10 % .(7)10 % (1001)C2


PROBLEMA 5
Completar la tabla
a) (11001)C2 ! (11011)C2 % (.............)C2 usando 5 bits. Se produce algn error?
b) (F)16 % (.............)8
c)

(16)10%(.............)BCD

Solucin:
a) Usando 5 bits (11001)C2 ! (11011)C2 % (10100)C2. No se produce ningn error porque la
operacin, en decimal, es (.7) ! (.5) % (.12); precisamente el resultado obtenido.
b) (F)16 % (001111)2 % (17)8
c)

(16)10 % (00010110)BCD

PROBLEMA 6
Responde Verdadero o Falso con una V o una F dentro de la casilla de la izquierda de cada
frase.
a) (AB)16 no se puede representar en C2
b) (468)8 % (0100 0110 1000)2
c) (1111)BCD % .(1)10
d) (1010)C2 ! (0101)C2 desborda con ancho de 4 bits
Solucin:
a) F. (AB)16 se corresponde con un nmero entero positivo, que con los suficientes bits,
siempre se podr representar en el convenio C2, en (010101011)C2.
b) F. Es imposible que el 468 sea un nmero en base 8, la representacin utiliza los dgitos
de 0 a 7.
c)

F. 1111 no pertenece al cdigo BCD.

d) F. (1010)C2 ! (0101)C2 % (1111)C2. No se produce desbordamiento.

Captulo 1 Representacin de la informacin

11

PROBLEMA 7
Escribir el siguiente sistema de ecuaciones, representado en decimal, en base 5:
6x . 5y % 11
3x . 14y % 9
Solucin:
Debemos rescribir cada una de las cifras del sistema de ecuaciones en base 5.
(6)10 % (11)5, (5)10 % (10)5, (11)10 % (21)5, (3)10 % (3)5, (14)10 % (24)5, (9)10 % (14)5
luego el sistema es
11x . 10y % 21
3x . 24y % 14
PROBLEMA 8
Indicar, razonando la respuesta, en qu casos hay desbordamiento si queremos:
a) Representar (16)2 con 4 bits.
b) Representar (.4)C1 con 3 bits.
c)

Representar (.8)C2 con 4 bits.

d) Representar (5)MyS con 3 bits.


Solucin:
Habr desbordamiento cuando el nmero que queremos representar no pertenece al rango segn el nmero de bits disponibles.
a) Con 4 bits el rango en binario es [0, 15] por tanto hay desbordamiento.
b) Con 3 bits el rango en C1 es [.3, !3] por tanto hay desbordamiento.
c)

Con 4 bits el rango en C2 es [.8, !7] por tanto no hay desbordamiento.

d) Con 3 bits el rango en MyS es [.3, !3] por tanto hay desbordamiento.
PROBLEMA 9
Sea la secuencia 0110 1000 0011 1010.
a) Suponiendo que se trata de un n.o binario, calcular su equivalente en octal y en hexadecimal e indicar su equivalente en decimal.
b) Suponiendo que se trata de un n.o en BCD calcular su equivalente decimal.

12

Problemas de fundamentos y estructura de computadores

Solucin:
a) (64072)8 % (683A)16 % (21 ! 23 ! 24 ! 25 ! 23 ! 211 ! 213 ! 214)10
b) Es imposible que sea BCD puesto que el 1010 no pertenece a dicho cdigo.
PROBLEMA 10
Responde a las siguientes preguntas.
a) Cul es el equivalente, en decimal, del (1000)C2?
b) Cul es el equivalente, en notacin C2, del (1011)BCD?
c)

Cul es el equivalente, en binario, del (257)8?

d) Cul es el equivalente, en notacin C1, del (1100)C2?


Solucin:
a) Con 4 bits el rango representable en C2 es [.8, !7] siendo .8 precisamente un 1 seguido de tres ceros. Luego la respuesta es .(8)10.
b) El 1011 no pertenece al BCD por lo tanto no puede tener equivalente en C2.
c)

Como el nmero dado est en base 8 % 23 debemos rescribir cada cifra con 3 bits. As
2 % 010, 5 % 101, 7 % 111 y el resultado final es (010 101 111)2.

d) El (1100)C2 es el .(0100)2. Complementando los bits obtenemos la representacin en


notacin C1: (1011)C1.
PROBLEMA 11
Responde a las siguientes preguntas.
a) Cunto hay que sumar a (111)C2 para obtener (100)C2?
b) Cunto hay que restar a (111)C1 para obtener (100)C1?
c)

Cunto hay que sumar a (111)MyS para obtener (100)MyS?

Solucin:
a) (111)C2 ! (X)C2 % (100)C2, luego (X)C2 % (100)C2 . (111)C2
(100)C2 .(111)C2 %(100)C2 !(001)C2 % (101)C2; Recordar que el ltimo carry se pierde.
b) (111)C1 . (X)C1 % (100)C1, luego (X)C1 % (100)C1 . (111)C1
(111)C1 . (100)C1 % (111)C1 ! (011)C1 % (011)C1; Recordar que el ltimo carry se vuelve
a sumar.
c)

.(3)10 ! X % 0, luego X % (3)10 % (011)MyS

Captulo 1 Representacin de la informacin

13

PROBLEMA 12
Cambiar a decimal los siguientes nmeros. En caso de que no se pueda indicar qu tipo de
error es.
a) (10101)C2 %
b) (1111)mys %
c)

(10000)C1 %

d) (0111)C2 %
e)

(0011 1100)ex3 %

f)

(1010)BCD %

Solucin:
a) Es negativo y est en notacin C2 de modo que tenemos que obtener su magnitud copiando hasta el primer uno inclusive y complementando el resto de bits. Queda
.(01011)2 % .11.
b) Es negativo y est en Magnitud y Signo por tanto su bit ms significativo es el signo y el
resto la magnitud en binario puro. Queda entonces .(0111)2 % .7.
c) Es negativo y est en notacin C1 de modo que tenemos que obtener su magnitud complementando todos los bits. Queda .(01111)2 % .15.
d) Es positivo y por tanto su equivalente decimal se calcula como si se tratase de un nmero
binario puro de 4 bits. En este caso se trata del 7.
e) En el cdigo exceso 3 cada cifra del sistema decimal se representa con 4 bits de modo
que el 0 se corresponde con el 0011, el 1 con el 0100, el 2 con el 0101... es decir cada
cifra se codifica con su equivalente binario de ancho 4 al que se le ha sumado 3. En este
caso 0011 % 0 y 1100 % 9; por tanto el resultado es 9.
f) El cdigo 1010 no pertenece al BCD.
PROBLEMA 13
Contesta las siguientes preguntas
a) (1110 1000)C1 % (?)C2
b) (0101 1011)MyS % (?)C2
c)

(F5)16 % (?)8

d) (1111 1000)C2 % (?)10


Solucin:
a) Puesto que es un nmero negativo en notacin C1, para calcular su representacin en C2
basta con sumarle 1. El motivo es que la operacin C1(X) % (2n . X) . 1 % C2(X) . 1,
siendo n el ancho utilizado. Despejando queda C2(X) % C1(X) ! 1. En definitiva el resultado es (1110 1001)C2
b) Como se trata de un nmero positivo tendr la misma representacin en Magnitud y Signo, en notacin C1 y en notacin C2, o sea (0101 1011)C2.

14

Problemas de fundamentos y estructura de computadores

c) El modo ms fcil es cambiar primero a base 2 y luego a base 8. Puesto que 16 % 24


debemos rescribir cada cifra del nmero dado con 4 bits. As tendramos (1111 0101)2.
Para cambiar ahora a base 8 % 23 agrupamos de 3 en 3, comenzanzo por el bit menos
significativo, quedando (011 110 101)2 % (365)8.
d) El procedimiento es el ya comentado en ejercicios anteriores para nmeros negativos en
notacin C2. As obtendramos primero .(0000 1000)2 % .(8)10.
PROBLEMA 14
Realizar las siguientes operaciones indicando si hay error de desbordamiento:
a) (1011)C2 . (0111)C2, con 4 bits.
b) (1000)BCD ! (0101)BCD, en BCD, usando tantos bits como necesites.
c)

Completar (001010111000101)2 % (?)8.

Solucin:
a) La notacin C2 se introduce precisamente para evitar hacer restas. En su lugar se realizar
la suma del primer operando ms el opuesto del segundo.
El segundo operando es !(7)10 por tanto su opuesto es .(7)10 que en notacin C2 es
(1001)C2. Por ltimo recordar que cuando se suman dos nmeros en notacin C2 el ltimo
acarreo se pierde, sin que ello signifique necesariamente que se ha producido un error de
desbordamiento. El resultado es:
(1011)C2 ! (1001)C2 % (0100)C2
En este caso, sin embargo, s se produce desbordamiento porque la operacin en decimal
es .5 . 7 % .12 que no se puede representar en C2 con slo 4 bits.
b) Pasando a decimal cada uno de los operandos tenemos 8 ! 5 % 13 % (0001 0011)BCD.
c)

Agrupando de 3 en 3 como se explic en el apunte terico y en ejercicios anteriores queda (12705)8.

PROBLEMA 15
Completar la tabla:
a) (38)10 % (...............)8
b) (10000111)BCD%(...............)10
c)

(10000)C2 % (...............)C2 . (01010)C2

d) (0101)C1 % (...............)MyS
Solucin:
a)

% 32 ! 6 % (100000)2 ! (00110)2 % (100110)2 % (46)8.

b) Agrupando de 4 en 4, comenzando por el menos significativo tenemos 1000 % 8 y


0111 % 7.
En definitiva (87)10.

Captulo 1 Representacin de la informacin

c)

15

(10000)C2 % (X)C2 . (01010)C2. Despejando (10000)C2 ! (01010)C2 % (X)C2. Finalmente


la suma en C2 se realiza directamente (10000)C2 ! (01010)C2 % (11010)C2.

d) Es un nmero positivo y por tanto tiene la misma representacin % (0101)MyS.


PROBLEMA 16
Completar la tabla:
a) (128)10 % (...................)16
b) (12)10 % (...................)BCD
c) (10000)C2 ! (01010)C2 % (...................)C2
d) (1101)MyS % (...................)C1
Solucin:
a) % 27 % (1000 0000)2 % (80)16
b) (0001 0010)BCD
c)

(10000)C2 ! (01010)C2 % (11010)C2

d) % .(0101)2 % (1010)C1
PROBLEMA 17
Calcular:
a) (11001)C2 ! (11011)C2 % (................)C2 usando 5 bits.
b) Se produce algn error en el clculo anterior?
c)

(F)16 % (................)8

d) (16)10 % (................)BCD
Solucin:
a) (11001)C2 ! (11011)C2 % (10100)C2
b) La operacin en decimal es .7 ! .5 % .12, que con 5 bits en C2 se representa
(10100). Por tanto no hay ningn error.
c)

% (1111)2 % (001 111)2(17)8

d) (0001 0110)BCD
PROBLEMA 18
Encuentre el nmero decimal cuya representacin en formato IEEE 754 en coma flotante
de 32 bits, compactada en hexadecimal es C19E0000.

16

Problemas de fundamentos y estructura de computadores

Solucin:
Paso 1.o Obtencin de la informacin almacenada en el registro a partir de la expresin
compactada en hexadecimal.
C
1

1
0

9
0

E
0

0
1

0
0

0
0

0
0

Paso 2.o Obtencin de la informacin almacenada en el registro a partir de la expresin


compactada en hexadecimal.
C
1

SGN

1
0

9
0

E
0

0
1

EXPONENTE

Paso 3.o

0
0

0
0

0
0

MANTISA

Clculo de los diferentes componentes de la representacin en punto flotante:

Bit de signo % 1

El nmero es negativo

Mantisa % %1.001111
Exponente autntico % Exponente representado . Exceso
.
Paso 4.o

%10000011
%1111111
00000100 % 4

Cambio de representacin del nmero desde punto flotante a punto fijo


Nmero % .(%1.001111) . (24) % .1.234375 . 16 % .19.75

PROBLEMA 19
Calcule el error, en valor absoluto, que se comete al representar el nmero decimal
291.072 con el nmero 4391 en formato IEEE754 (de 16 bits).
Solucin:
Debido a la limitacin de la longitud del registro donde se almacena el nmero IEEE754 (en
este caso es de 16 bits, pero siempre existir algn lmite), puede suceder que al convertir de
decimal a IEEE754 haya que truncar la mantisa del nmero decimal.
1

PARTE FRACCIONARIA QUE CABE EN EL REGISTRO PARTE FRACCIONARIA TRUNCADA

Por este motivo, existe la posibilidad de que diferentes nmeros decimales tengan la misma representacin IEEE754.
D1

IGUAL

DIFERENTE 1

D2

IGUAL

DIFERENTE 2

Captulo 1 Representacin de la informacin

17

En este caso, el nmero en IEEE754 se corresponde exctamente slo con aquel decimal
cuya parte truncada es nula.
DEXACTO

IGUAL

000...

Cuando se quiere conocer el error (en valor absoluto) cometido al representar un decimal
di con el nmero F en IEEE754, por definicin se calcula el valor absoluto de su resta: Error
absoluto % |d i . F| (en esencia, toda comparacin consiste en una substraccin). Por suspuesto, las comparaciones slo se pueden hacer entre entidades homogneas, por ello ambos nmeros deben estar en el mismo formato. Como las operaciones artimticas se realizan de forma ms directa en decimal que en IEEE754, convertimos el IEEE754 a decimal; y luego
calculamos el valor absoluto de la resta. Obsrvese que al hacer esto estamos comparando el
nmero di con el nmero dexacto.
Conversin del IEEE754 a decimal
Paso 1.o Obtencin de la informacin almacenada en el registro a partir de la expresin
compactada en hexadecimal.
Paso 2.o
o

Paso 3.

Identificacin de los diferentes campos presentes en el registro.


Clculo de los diferentes componentes de la representacin en punto flotante.

Bit de signo % 0 El nmero es positivo.


Mantisa % %1.0010001
Exponente autntico % Exponente representado . Exceso.
.
Paso 4.o

%10000111
%1111111
00001000 % 8

Cambio de representacin del nmero desde punto flotante a punto fijo.


Nmero % (%1.0010001) . (28) % %100100010 % &200

Comparacin
Error absoluto % |d i . dexacto| % |291.072-290| % 1.072
PROBLEMA 20
Se tiene un sumador/restador en coma flotante que opera con nmeros de 16 bits representados con el siguiente formato:
Exponente: 8 bits en exceso 28-1.
Mantisa: 8 bits en complemento a 2, normalizada y fraccionaria.
a) Realizar la suma de los nmeros A y B, tal como lo hara dicho sumador. Suponiendo
que A: 1000 0011 | 0110 0011 y B: 1000
0110 | 1001 1100 (exponente | mantisa)
b) Existe alguna diferencia entre el resultado obtenido por este sumador y el resultado
real? Por qu?

18

Problemas de fundamentos y estructura de computadores

Solucin:
a) 1.

Primero separamos mantisa y exponentes:


A
1000 0011
0110 0011

Exponente
Mantisa
2.

B
1000 0110
1001 1100

Comparamos los exponentes


Exponente A % 3
Exponente B % 6

3.

Alineamos las mantisas y realizamos la suma.


Para alinear desplazamos hacia la derecha la mantisa afectada del menor exponente. Se desplaza 3 veces (exponente B . exponente A) y realizamos la suma:
1001 1100
0000 1100 011 ! (los bits tachados se pierden al desplazar)
1010 1000

4.

Normalizar el resultado.
El valor del resultado se encuentra normalizado ya que la mantisa est expresada
en C2.
Por tanto el resultado es
Exponente
Mantisa

b) 1.

Valor de A
Exponente
Mantisa
Valor

2.

1000 0011
1001 1100
.(2.2 ! 2.3 ! 2.8) . 26 % .25

Calculamos el valor del resultado anterior


Exponente
Mantisa
Valor

4.

1000 0011
0110 0011
(2.2 ! 2.3 ! 2.7 ! 2.8) . 23 % 3,09375

Valor de B
Exponente
Mantisa
Valor

3.

Resultado
1000 0110
1010 1000

1000 0110
1010 1000
.(2.2 ! 2.4 ! 2.5) . 26 % .22

Realizando la suma de ambos valores


A ! B % .25 ! 3,09375 % .21,09625.
El resultado tiene un error con respecto al obtenido debido a que al desplazar a la
derecha la mantisa se pierden bits con informacin significativa.

Captulo 1 Representacin de la informacin

19

PROBLEMA 21
Se tiene un sumador de coma flotante que opera con nmeros de 16 bits representados en
el formato siguiente:
Exponente Mantisa
Exponente: 8 bits, representado en exceso 2n . 1.
Mantisa: 8 bits, representada en complemento a 2, fraccionaria, normalizada y no
emplea bit implcito.
El sumador opera con un bit de guarda y un bit retenedor y se emplea como tcnica de
redondeo la de redondeo al ms prximo.
Sean los nmeros A y B siguientes
A
1000 1010 0100 0011
Se pide:

B
1000 0101 0111 0000

a) Realizar la suma de A y B tal y como lo hara el sumador.


b) Calcular el valor en decimal del resultado.
c)

Calcular el valor real de la suma, tambin en decimal si se hubiese realizado a mano.

d) Si existe diferencia entre los apartados b) y c) explicar a qu es debido.


e)

Cambiara el resultado si en lugar de redondeo al ms prximo emplesemos la tcnica de forzar el bit menos significativo a uno?

Solucin:
a) 1.

Separar mantisas y exponentes.


Exponente
Mantisa

2.

A
1000 1010
0100 0011

B
1000 0101
0111 0000

Comparar los exponentes


Exponente A % 10
Exponente B % 5
Por tanto el exponente para el resultado, salvo que haya que normalizar, ser el
exponente de A.

3.

Alineamos las mantisas y realizamos la suma.


Para alinear desplazamos hacia la derecha la mantisa afectada del menor exponente. Se debe desplazar 5 veces (exponente A . exponente B) y realizar la suma.
0100 0011 00
0000 1100 10 ! (los bits en cursiva son el bit de guarda y el retenedor
0100 0110 10
respectivamente)

4.

Normalizar el resultado.
El valor del resultado se encuentra normalizado ya que la mantisa est expresada
en C2.

20

Problemas de fundamentos y estructura de computadores

5.

Redondear el resultado.
Al ser redondeo al ms prximo y contar con los bits de guarda y retenedor con
el valor 10, se deber comprobar si el bit menos significativo del resultado es cero o
uno, para sumar cero o uno respectivamente al mismo.
Al ser 0 (0100 0110) se le sumara cero y por lo tanto el resultado es:
Exponente
Mantisa

Resultado
1000 1010
0100 0110

b) Calculamos el valor del resultado anterior


Exponente
Mantisa
Valor
c)

1000 0110
1010 1000
(2.2 ! 2.6 ! 2.7) . 210 % 280,0

Calculamos el valor de A
Exponente
Mantisa
Valor

1000 1010
0100 0011
(2.2 ! 2.7 ! 2.8) . 210 % 268,0

Calculamos el valor de B
Exponente
Mantisa
Valor

1000 0101
0111 0000
(2.2 ! 2.3 ! 2.4) . 25 % 14,0

Por lo tanto tendramos 268,0 ! 14,0 % 282,0


d) Es debido a los desplazamientos para alinear las mantisas y a la prdida de precisin que
sufren los nmeros fraccionarios al pasarlos a coma flotante.
e)

Al forzar el bit menos significativo a uno, el resultado sera el siguiente:


Exponente
Mantisa
Valor

1000 1010
0100 0111
(2.2 ! 2.6 ! 2.7 ! 2.8) . 210 % 284,0

PROBLEMA 22
Dados los siguientes nmeros representados en decimal:
a) 35
b) 12,5
Representar dichos nmeros en coma flotante segn el estndar IEEE 754 de precisin
simple.
Solucin:
a) 35 % 17,5 * 21 % 8,75 * 22 % 4,375 * 23 % 2,1875 * 24 % 1,09375 * 25
Mantisa: 0,09375

00011000000000000000000

Exponente: 5 ! 127 % 132

10000100

Captulo 1 Representacin de la informacin

21

b) 12,5 % 6,25 * 21 % 3,125 * 22 % 1,5625 * 23


Mantisa: 0,5625

10010000000000000000000

Exponente: 3 ! 127 % 130

10000010

PROBLEMA 23
Considrese un computador que representa los nmeros en coma flotante segn un supuesto estndar IEEE754 de precisin reducida con 16 bits (1 bit para el signo, 5 bits para el
exponente sesgado y 10 bits para la mantisa).
Se pide:
a) Cul es el valor del sesgo para el exponente?
b) Cul es el valor del menor nmero representable en valor absoluto?
c)

Cul es el valor del menor nmero representable?

d) Representar los nmeros decimales 8,5 y 3,75 en el estndar definido.


e) Sumar los nmeros anteriores siguiendo el algoritmo de suma del estndar IEEE754
aplicado al formato de 16 bits.
Solucin:
a) El sesgo ser 2k.1 . 1, siendo k el nmero de bits utilizados en el campo exponente.
Como k % 5, el sesgo ser 25.1 . 1 % 15.
b) Como el exponente tiene 5 bits, tendr valores comprendidos entre 0 y 31, pero el 0 y el
31 se utilizan como excepciones, por lo que el menor valor del exponente ser 1.
La menor mantisa ser 0000000000.
Por tanto el menor nmero representable en valor absoluto ser:
2E.15 # 1.M % 21.15 # 1.0000000000 % 2.14
c)

El menor nmero representable ser el nmero negativo con mayor valor absoluto.
Signo negativo % 1
Mayor exponente % 30 (ya que el 31 se usa como excepcin).
Mayor mantisa % 1111111111
Por tanto el menor nmero representable ser:
(.1)S 2E.15 # 1.M % .230.15 # 1.1111111111 % .215 # (2 . 2.10)
ya que:
2
% 10.0000000000
2.10
% 0.0000000001
2 . 2.10 % 1.1111111111

22

Problemas de fundamentos y estructura de computadores

d)

8,5 % 1000,1(2 % 1,0001 # 23

10010 (3 ! 15) 0001000000

10000 (1 ! 15) 1110000000

3,75 % 11,11(2 % 1,111 # 2


e)

N1 % 8,5 % 0

10010

N2 % 3,75 % 0

10000

0001000000
1110000000

Se restan los exponentes: E1 . E2 % 10010 . 10000 % 00010 % 2(10.


Se desplaza la mantisa del nmero de menor exponente dos lugares a la izquierda,
incluyendo el bit no visible. 1.M2 % 1.1110000000 0.0111100000
Se suman las mantisas 1.M1 y 1.M2 desplazada:
1.0001000000 ! 0.0111100000 % 1.1000100000
Como es de la forma 1.M, no es necesario normalizar el resultado.
El resultado final es:
0

10010

1000100000%!218.15#(20!2.1!2.5)%8#(1!0,5!0.03125)%12,25

1.6 Problemas propuestos


PROBLEMA 1
Cul de las afirmaciones es cierta? (Slo hay una en cada caso)
(1001)C2 %

(9)10

(.9)10

(7)10

(.7)10

(0101)2 %

(0101)BCD

(1010)C1

(1011)C2

Ninguna

(10100101)2 %

(105)BCD

(505)8

(A5)16

Ninguna

(101)C2 . (111)C2 %

(110)C2

(100)C2

(000)C2

Ninguna

PROBLEMA 2
Marca con un crculo la nica afirmacin es cierta:
(100)C2 % ...
a) (.4)10

b) (4)10

c)

Overflow

d) Ninguna de las anteriores

c)

(00100101)BCD

d) Ninguna de las anteriores

c)

(1010)C1

d) Ninguna de las anteriores

c)

Overflow

d) Ninguna de las anteriores

(25)16 % ...
a) (00100101)2 b) (0205)8
(1111)BCD % ...
a) (15)10

b) (0101)2

(0111)C2 . (1110)C2 % ...


a) (1111)C2

b) (1001)C2

Captulo 1 Representacin de la informacin

23

PROBLEMA 3
Marca la casilla que contenga la nica respuesta correcta:
a) (0101)BCD ! (0111)BCD %

..(1100)BCD,

..(0011)BCD,

..(0010)BCD,

..Ninguna de las
anteriores

b) (01101)C2 ! (00110)C2, utilizando un mximo de 5 bits, es igual a:

..(01101)C2,

..(10000)C2,

..Desbordamiento,

..Ninguna de las
anteriores

c)

(A42)16 %

..(1042)10,

..(5102)8,

..(1010 0100 0010)BCD,

..Ninguna de las
anteriores

d) El rango representable con 5 bits en la notacin Complemento a 2 es:

..[.31, 31],

..[.32, 32],

..[.31, 32],

..Ninguna de las
anteriores

PROBLEMA 4
Sean A % (10101)C2 y B % (00100)C2; entonces (A . B)C2, con ancho n % 5,...

..es igual a (11000)C2

..es igual a (.15)10

..desborda

..Ninguna de las anteriores

PROBLEMA 5
Sea A % (0010 1110)2; entonces.

..(A)8 % (216)8

..(A)16 % (2E)16

..(A)BCD no se puede representar

..Ninguna de las anteriores

PROBLEMA 6
Con ancho n % 3, el rango representable en notacin C2 es...

..[.4, !4]

..[.3, !3]

..[.4, !3]

..Ninguna de las anteriores

PROBLEMA 7
Utilizando ancho n % 5. Qu nmero hay que sumar a (10000)C1 para obtener (10101)C1?

..(00101)C1

..(11010)C1

..El nmero necesario no cabe en 5 bits

..Ninguna de las anteriores

24

Problemas de fundamentos y estructura de computadores

PROBLEMA 8
En qu base est la siguiente ec: 3x . y ! z % 11 si tiene como soluciones {x % 5, y % 4,
z % 2}
..14
..15

..16

..Ninguna de las anteriores

PROBLEMA 9
Obtenga la representacin del nmero 1540 en formato normalizado IEEE 754 para coma flotante de 32 bits.
PROBLEMA 10
Considerar un sumador/restador que opera con datos representados en coma flotante, con
mantisa normalizada y fraccionaria expresada en Ca1 y exponente representado en exceso 24-1,
adems dicha unidad opera con dos dgitos de guarda y un bit retenedor. Emplea el redondeo
al ms prximo.
Calcular la suma de A ! B, siendo
A: 1101 | 10110

B: 1101 | 01011 (exponente | mantisa)

PROBLEMA 11
Sabiendo que A: 110011 y B: 010001 estn ambos representados en binario puro calcular el
producto de A # B utilizando el algoritmo de suma-desplazamiento. Realizar paso a paso dicho producto, sabiendo que el resultado se almacenar en un registro P de 12 bits, formado
por dos registros concatenados P1 y P0 de 6 bits.
PROBLEMA 12
Calcular el producto de A # B, sabiendo que A: 111110 y B: 1111111 estn representados
en C2.
PROBLEMA 13
Sea un computador que trabaja con el siguiente sistema de representacin de la informacin
para coma flotante:
Exponente expresado en exceso 2n . 1 con 8 bits.
Mantisa expresada en complemento a 1, normalizada y sin bit implcito con 8 bits.

2.1 Especificacin mediante Funciones de Conmutacin


(F.C.)
Una tabla de verdad expresa la salida del sistema para cada una de las posibles combinaciones
de los bits de entrada. Para construirla escribimos todos los posibles valores que pueden tomar
las entradas y su correspondiente salida. Si el sistema tiene n bits para codificar la entrada
habr 2n posibilidades (filas). Las columnas de la derecha son las FC de cada una de las m
salidas del sistema.
Las FC se obtendrn a partir de la descripcin de alto nivel que hagamos del sistema y de
la codificacin que elijamos. Slo en el caso de que la entrada no est permitida podremos
dejar la salida sin especificar o dont care, y en este libro se representar por X.

2.2 Especificacin mediante Expresiones de Conmutacin


(E.C.)
Otra forma de describir el comportamiento de un sistema es mediante el lgebra de Boole y
ecuaciones que relacionen las salidas con las entradas. A grosso modo podemos decir que
estas ecuaciones se construyen con los operadores bsicos del lgebra de Boole
NOT, AND y OR (., ! , . )

26

Problemas de fundamentos y estructura de computadores

Ejemplo:

x2 x1 ! (x3 ! x1)x2

A partir de una E.C., y mediante el lgebra de Boole, podemos encontrar otras E.C. equivalentes, es decir, que modelan el mismo sistema combinacional.
E.C. r F.C.
Para encontrar la F.C. correspondiente a una E.C. dada simplemente tenemos que calcular qu
resultado da la E.C. cuando la evaluamos sobre todas y cada una de las posibles entradas
que puedan ocurrir.
Ejemplo:

Sea un sistema modelado por la siguiente E.C. z % x1 ! x0; del que queremos calcular sus F.C.s. Es decir, queremos calcular su Tabla de Verdad. Lo primero ser escribir la
T.V. que siempre es igual a todo sistema de dos entradas y 1 salida:

F.C. r E.C.
Definicin de minitrmino: Es un trmino producto donde todas las variables aparecen una y
slo una vez, ya sea complementadas o sin complementar. Los minitrminos se representan
por mi, donde i es el equivalente en decimal del nmero binario que se obtiene al sustituir las
variables negadas por 0 y las no negadas por 1.
Ejemplo:

x3 x2 x1 x0 % 1010 % 10

m10

De esta manera puedo ver la tabla de verdad como una tabla que me indica qu minitrminos dan salida 0, qu minitrminos dan salida 1 y cules dan salida indeterminada.

A partir de la F.C. podemos calcular la E.C. como la suma de todos los minitrminos que
dan salida % 1; es decir, la salida Z % 1 si se cumple alguna de las entradas correspondientes.
A dicha suma la llamamos Suma de Productos Cannica.

Captulo 2 Sistemas combinacionales

27

En el ejemplo tendramos:
Z % ; m(0, 1, 4) % x2 x1 x0 ! x2 x1 x0 ! x2 x1 x0

2.3 Simplificacin mediante mapas de Karnaugh


Los mapas de K. son otra forma de escribir las F.C.; en vez de hacerlo en columnas se hace en
forma matricial. Cada casilla de la matriz representa un minitrmino. Adems se cumple que
los minitrminos correspondientes a dos casillas juntas o adyacentes se diferencian en un nico literal (o bit).
Los mapas sirven para simplificar Sumas de Productos cannicas (i.e. Sumas de minitrminos), obteniendo Sumas de Productos tal que haya el mnimo nmero de trminos producto. El procedimiento es el siguiente:
1.

Introducir en las casillas los valores de la F.C.

2.

Cubrir todas las casillas con el menor n.o de rectngulos, cada uno de ellos lo ms
grande posible.

3.

Cada rectngulo es % producto de los literales idnticos de los minitrminos que lo


forman.

4.

Las casillas que den salida indeterminada se usarn como comodn, de modo que podr formar rectngulos con ellas slo si me conviene.

5.

La E.C. % Suma de los cuadrados.

6.

Para averiguar qu literales son comunes a los minitrminos que forman un rectngulo veremos en qu franjas est sumergido.

En las figuras se muestran los mapas de 3 y 4 variables tal y como se utilizarn a lo largo
de este libro. La numeracin se corresponde con el minitrmino asociado a la casilla.

2.4 Implementacin de sumas de productos


Con puertas NOT, AND y OR

28

Problemas de fundamentos y estructura de computadores

1.

Una puerta OR con n entradas (tantas como trminos producto haya).

2.

Tantas puertas AND como trminos producto haya (en general sern n).

3.

La salida de cada puerta AND se conecta con una de las entradas de la puerta OR.

4.

Para implementar los literales (negados y sin negar) uso puertas negadoras.

Ejemplo:

f (x, y, z) % xy ! xz ! y, y su implementacin es la Figura 1.

Con puertas NAND


1.

Implementar la ecuacin con puertas AND y OR.

2.

Cambiar todas las puertas AND por puertas NAND.

3.

Cambiar la puerta OR por una puerta OR con las entradas negadas.

4.

Si alguna de las entradas de la puerta OR vena de un literal en vez de a una


AND r negar dicho literal (podemos usar una NOT o, mejor an, construir una a partir de puertas NAND).

5.

Sustituir la OR con entradas negadas por su equivalente, i.e.: la NAND.

Ejemplo:

f (x, y, z) % xy ! xz ! y, y su implementacin es la Figura 2.

2.5 Anlisis de sistemas combinacionales


El anlisis es el proceso mediante el cual se obtiene la especificacin de un sistema a partir de
una implementacin dada.
Mtodo general
1.

Colocar puntos a la salida de cada puerta o mdulo del sistema.

2.

Resolver la red; i.e.: ir despejando cada punto, que la mayor parte de las veces depende del valor de otros puntos anteriores, hasta que obtengamos la ecuacin de la salida.

Red NAND / NOR


1.

Identificar los niveles a los que pertenecen las puertas.

2.

Cambiar las puertas de los niveles impares por su puerta equivalente (de entradas negadas) de forma que las negaciones a la salida de los niveles pares se anulen con las
entradas negadas de los niveles impares.

3.

De este modo nos queda una red de puertas AND-OR mucho ms sencilla de analizar.

Captulo 2 Sistemas combinacionales

29

2.6 Conjuntos universales


Un conjunto de puertas o mdulos combinacionales se llama conjunto universal si con l
puedo implementar cualquier funcin de conmutacin.
Puesto que toda F.C. se puede expresar como la suma de los minitrminos que dan salida % 1, entonces necesitaremos siempre una puerta OR y un cierto nmero de puertas AND y
NOT. Por lo tanto el conjunto {NOT, AND, OR} es universal.
Adems se demuestra que si nos falta la puerta AND o la puerta OR la podemos construir
con las dems haciendo uso de las leyes de De Morgan:
Para construir la puerta OR con NOTs
y ANDs

Para construir la puerta OR con NOTs


y ANDs

a! b%ab

ab % a ! b

Pero yo quiero a ! b por lo que, negando


ambos trminos de la ecuacin:
a ! b % a ! b % ab

Pero yo quiero ab por lo que, negando


ambos trminos de la ecuacin:
ab % ab % a ! b

Por lo tanto podemos decir que los conjuntos {NOT, AND} y {NOT, OR} son tambin
conjuntos universales porque con ellos puedo implementar el conjunto {NOT, AND, OR} que
es universal, es decir, que puedo implementar cualquier F.C.
Podemos ver que la puerta OR se implementa con una puerta AND negada a la salida % NAND.
Del mismo modo la puerta AND se implementa con una puerta OR negada a la salida % NOR.
Por otro lado podemos construir una puerta NOT forzando la misma entrada en las dos
bocas de una puerta NAND o NOR.

Si colocamos un negador, construido por m a partir de puertas NAND, detrs de una


NAND % AND.
De este modo con una NAND puedo construir puertas NOT y AND r tambin puedo
construir OR. Con las puertas NOR seguira el mismo razonamiento.

30

Problemas de fundamentos y estructura de computadores

Por lo tanto podemos decir que los conjuntos {NAND} y {NOR} son tambin conjuntos
universales, ya que a partir de ellos puedo construir el conjunto {NOT, AND, OR} y por lo
tanto implementar cualquier sistema combinacional.

2.7 Descodificadores
Utilidad:
Descodificar un nmero en binario a decimal.
Implementar los 2n minitrminos posibles de una funcin de n variables.
Funcionamiento:

2.8 Multiplexores o selectores (MUX)


Utilidad:
Seleccionar, de entre varias entradas, la que queremos que aparezca en la salida.

Captulo 2 Sistemas combinacionales

31

Funcionamiento:

Aplicacin en la Implementacin de Sistemas Combinacionales:

Implementacin con MUX:


Si queremos implementar una FC de n variables con un MUX. de m variables de control,
siendo n b m:
1.

Pintar el MUX indicando los nmeros de las puertas.

2.

Elegir m de las n variables. Estas m variables sern las variables de control. Situarlas
en el MUX.

3.

Las m variables escogidas dividen el mapa de Karnaugh en zonas. Habr 2m zonas,


tantas como posibles combinaciones se pueden hacer con las m variables, negadas o
sin negar.

4.

Para numerar cada zona sustituimos las variables negadas que la definen por ceros y
las no negadas por unos. Despus pasamos el nmero binario obtenido a decimal.

5.

Hacer rectngulos dentro de las zonas. Los rectngulos nunca podrn coger casillas de
otra zona.

32

Problemas de fundamentos y estructura de computadores

6.

A la hora de resolverlos aplicaremos las mismas reglas que para formar y simplificar
rectngulos, pero eliminaremos de cada trmino producto aquellas variables que hemos decidido sean las de control.

Ejemplo:

Implementar la siguiente F.C. con un MUX de 4 a 1.

2.9 ROMS
Utilidad:
Implementar k funciones de conmutacin de n variables.

Grabar 2n datos de ancho igual a k bits.


Funcionamiento:
Haciendo que las variables de las FC sean las lneas de direccin y grabando las FC en columnas implementamos hasta k FC distintas.
Tambin podemos grabar en filas hasta 2n datos de ancho k, que se direccionarn con las n
lneas de direccin.

Captulo 2 Sistemas combinacionales

33

2.10 Otros mdulos


Codificadores
Los codificadores realizan la operacin inversa de los descodificadores: Toman un valor decimal y lo convierten en binario puro (sin signo). Para indicar el valor decimal situamos un 1 en
la lnea cuyo nmero sea el que queremos codificar. Un codificador tendr, por tanto: 2n entradas y n salidas.
Adems habr que aadir una entrada de Encendido y una salida de Activado, que se pondr a 1 cuando alguna de las lneas de entrada tenga un 1.
Los codificadores normales no permiten tener ms de una lnea de entrada levantada. Para
evitar este problema podemos usar los codificadores con prioridad. En estos obtendremos el
nmero binario equivalente al de la lnea de entrada levantada ms prioritaria. (La lnea con
el nmero ms alto ser la ms prioritaria.)
Los codificadores con prioridad son unos codificadores normales con un mdulo a la entrada que resuelve las prioridades.
PAL (Programable Array Logic)
La PAL es una red de k puertas OR, m puertas AND y n puertas NOT.
Las OR agrupan las puertas AND de un modo fijo.
Nosotros conectamos las entradas de las puertas AND con los literales formando trminos
producto. De este modo lo que al final conseguimos implementar es k F.C. expresadas como
suma de trminos producto, de n variables cada una. Hay que tener en cuenta que tal vez no se
puedan formar debido a que las conexiones de la matriz OR son fijas.

2.11 Problemas resueltos


PROBLEMA 1
Cul de las afirmaciones es cierta? (Slo hay una en cada caso.)
a) x ! y %

x ! y,

x . y,

x . y,

x.y

x ! y,

0,

1,

x . z,

x!y!z

y . z!x . y!z . x,

xy!yz!xz

b) x ! y ! x %

y,
c)

z ! y ! x ! xz %

0,
d)

f (x, y, z) % Gm(0, 2, 3, 6, 7) %
y ! (z . x),
z ! (y . x),

Solucin:
a) La solucin es la tercera opcin. Una de las leyes de DeMorgan es la equivalencia
x ! y % x . y.

34

Problemas de fundamentos y estructura de computadores

b) Aplicando las leyes de De Morgan primero y la propiedad distributiva de la suma despus obtenemos la segunda opcin:
x ! y ! x % x ! (y . x) % (x ! y) . (x . x) % (x ! y) . 1 % x ! y
c)

Operando obtenemos la tercera opcin.


z ! y ! x ! xz % z ! y ! x . xz % (z ! y ! x)(xz) % (z ! y . x)(xz) %
%x.z. z!x . z. y. x%x . z!0%x. z

d) Resolviendo el mapa de Karnaugh se obtiene la primera opcin.

PROBLEMA 2
Simplificar lo mximo posible la funcin
f (x, y, z, w) % (z . (y ! w . x ! w . x)) . (x ! (z . w ! y))
Solucin:
f (x, y, z, w) % (z . (y ! w . x ! w . x)) . (x ! (z . w ! y)) %
% z . (y ! w . x ! w . x) ! x (z . w ! y) % (z y ! zwx ! z w x) ! x(z . w ! y) %
% z y ! zwx ! z w x ! xzw ! xy
Llegados a este punto puede simplificar muy rpidamente si recurrimos a un mapa de Karnaugh. Introduciendo cada uno de los trminos producto como rectngulos del mapa. De este
modo tenemos:

Captulo 2 Sistemas combinacionales

35

Y la funcin simplificada es finalmente


f (x, y, z, w) % xy ! zw ! yz
PROBLEMA 3
Sea un sistema cuya entrada es un nmero en C2, codificado con 3 bits, y cuya salida es
dicho nmero !3, tambin en C2 codificado con 3 bits. Adems genera otra seal de error
que da 1 cuando el resultado de la operacin NO es representable con 3 bits.
Se pide: Especificar dicho sistema mediante tablas de verdad e Implementar LA SEAL DE ERROR SOLO con puertas NAND.
AYUDA: No hace falta usar mapas de Karnaugh.

Solucin:
Con 3 bits en C2 se puede codificar el intervalo de nmeros enteros [.4, !3].
Por tanto el comportamiento del sistema viene descrito por la siguiente tabla:
Alto Nivel

Binario

X2

X1

X0

Z2

Z1

Z0

0
1
2
3
.4
.3
.2
.1

3
4
5
6
.1
0
1
2

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
x
x
x
1
0
0
0

1
x
x
x
1
0
0
1

1
x
x
x
1
0
1
0

0
1
1
1
0
0
0
0

donde se ha marcado con x aquellas salidas que se dejan indeterminadas ya que producen un
error.
La EC de la seal de error E es E % Gm(1, 2, 3). Por tanto su diseo con una red de
puertas NAND es la mostrada en la figura.

36

Problemas de fundamentos y estructura de computadores

PROBLEMA 4
Simplificar lo ms posible la E.C.
w .x .y!w .x. y!w. z.x!z. y
e implementar la ecuacin simplificada usando NICAMENTE puertas NAND.
Solucin:
Puesto que la EC es una suma de productos, cada trmino producto ser un rectngulo del
mapa de Karnaugh de 4 variables. As, resolviendo el mapa de Karnaugh podemos encontrar
la suma de productos ms simplificada posible.

Resolviendo el mapa tenemos: f (x, y, z, w) % x . y ! x . y . z ! x . y . w ! x . z . w, que implementado con puertas NAND sera:

Captulo 2 Sistemas combinacionales

37

PROBLEMA 5
Sea la F.C: f % Gm(0, 2, 7, 8, 12, 13) ! Gd(3, 10, 11, 14). Encontrar su expresin ms
simplificada e implementarla usando nicamente puertas NAND.
Solucin:

Resolviendo el mapa, tenemos:


f (x3, x2, x1, x0) % x2 x1 x0 ! x3 x2 x1 ! x2 x1 ! x3 x1 x0
cuya implementacin con puertas NAND es:

38

Problemas de fundamentos y estructura de computadores

PROBLEMA 6
Dada la siguiente tabla de verdad se pide:
a)
b)
c)
d)
e)

Representar la EC de cada salida como Suma de Productos Cannica.


Implementar todo el sistema con 1 descodificador y puertas.
Implementar la salida U con el menor nmero de puertas NAND.
Implementar la salida V con un nico MUX.
Implementar la salida W con MUXs de 4 a 1.
A

Captulo 2 Sistemas combinacionales

Solucin:
a) U(A, B, C, D) % Gm(0, 1, 3, 5, 11, 13, 14) ! Gd(7, 8, 15)
V(A, B, C, D) % Gm(1, 3, 4, 6, 11, 12, 14) ! Gd(7, 8, 9, 15)
W(A, B, C, D) % Gm(1, 4, 6, 12, 15) ! Gd(5, 9, 14)
b) Necesitaremos un descodificador de 4 a 16 y 3 puertas OR, una por cada FC.

c)

Resolviendo el mapa de Karnaugh para U tenemos:

39

40

Problemas de fundamentos y estructura de computadores

X(A, B, C, C) % A . B . C ! A . B . C ! B . D ! C . D

d) Usando un MUX de 16 a 1 la implementacin es inmediata. Los minitrminos que estn


sin especificar se han tomado como cero.

e)

Para implementar W con un MUX de 4 a 1 es necesario seleccionar dos variables de


control. Eligiendo A y B obtenemos una implementacin mnima,

Captulo 2 Sistemas combinacionales

PROBLEMA 7
Dado el siguiente sistema combinacional, se pide averiguar si es un conjunto universal.
NOTA: Todos los multiplexores estn capacitados.

41

42

Problemas de fundamentos y estructura de computadores

Solucin:
Dado que el sistema tiene slo dos entradas el modo ms rpido de abordar este problema es
completar la tabla de verdad. Llamando T1 a la salida del Mux de arriba y T0 a la salida del
MUX de abajo, tenemos:
X1

X0

T1

T0

0
0
1
1

0
1
0
1

0
0
1
1

0
1
0
1

1
0
1
0

El sistema no es conjunto universal porque Z es, en definitiva, la entrada X0 negada. Por


tanto es imposible construir una puerta AND o una puerta OR.
PROBLEMA 8
Sea una puerta combinacional con la Tabla de verdad de la derecha. Para qu valores de a
y b podemos decir que la puerta es un conjunto universal? Por qu?
X

Salida

0
0
1
1

0
1
0
1

0
a
b
1

Solucin:
Hay 4 posibilidades que dan lugar a los 4 sistemas diferentes mostrados en la tabla:
X

S0

S1

S2

S3

0
0
1
1

0
1
0
1

0
0
0
1

0
0
1
1

0
1
0
1

0
1
1
1

El sistema S0 es una puerta OR, por tanto no es conjunto universal.


El sistema S1 es X, por lo que tampoco puede ser conjunto universal.
El sistema S2 es Y, por tanto, al igual que con S1, no puede ser conjunto universal.
El sistema S3 es una puerta AND, de modo que tampoco es conjunto universal.
En definitiva ninguno de los 4 es conjunto universal.

Captulo 2 Sistemas combinacionales

43

PROBLEMA 9
Analizar el sistema y razonar si es conjunto universal.

Solucin:
Lo primero es analizar el circuito. Para simplificar esta tarea es recomendable sustituir la
puerta NAND del nivel 1 por una puerta OR con las entradas negadas, que es la implementacin equivalente tal y como dictan las leyes de DeMorgan. Una vez hecho esto dos negadores
enfrentados en el mismo cable se anulan tal y como muestra la figura. Finalmente se procede
a calcular la EC de F.

T1 % X . Y
T2 % X . Y
T3 % T1 ! T2 % X . Y ! X . Y % (X ! X)Y % (1)Y % Y
T4 % X . Z
F % T3 ! T4 % Y ! X . Z
El sistema es equivalente a bloque combinacional que tuviera 3 entradas (X, Y, Z) y una
salida F con la ecuacin obtenida.
Podemos construir un conjunto universal si forzamos la entrada Y % 0. De este modo tendramos F % X . Z % X ! Z, es decir un bloque equivalente a una puerta NOR. Puesto que la
puerta NOR es conjunto universal y sta se puede construir con el circuito dado, ste tambin
es conjunto universal.

44

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Dado el sistema de la figura, construir una puerta AND a partir de l. Es conjunto universal?Por qu?

Solucin:
La ecuacin de un MUX 2 a 1 es sencillamente Z % D0S ! D1S, donde D0 y D1 son las entradas de datos conectadas a la entrada 0 y 1 respectivamente y S es el bit de seleccin.
Por tanto sustituyendo tenemos:
D0 % X . Y ! Y % X ! Y ! Y % X ! 1 % 1
D1 % Y
S%X
Z % (1)X ! (Y)X % X ! YX
Z an se puede simplificar ms. Usando el mapa de Karnaugh se obtiene finalmente que
Z%X!Y%X .Y
1
X

1
Y

Por tanto el circuito es equivalente a una puerta NAND, que es conjunto universal. Por
tanto el circuito dado tambin lo es.
Si forzamos la entrada Y % 1 entonces Z % X ! 1 % X ! 0 % X; es decir habremos construido una puerta NOT.
Para construir la puerta AND basta con conectar la puerta NOT que acabamos de construir
a la salida del circuito dado tal y como muestra la figura.

Captulo 2 Sistemas combinacionales

45

PROBLEMA 11
Analiza el circuito y da su expresin de conmutacin:
a) Como suma de productos cannica.
b) Como suma de productos lo ms simplificada posible.
c)

Es conjunto universal? Justifica la respuesta.

Solucin:
a) Para analizar este sistema conviene transformarlo primero en el equivalente que se muestra a continuacin.

b) T1 % AC
T2 % CB
T3 % AC
T4 % T1 ! T2 ! T3 % AC ! CB ! AC % A(C ! C) ! CB % A ! CB
T5 % T3 ! B % AC ! B
f % T4A ! T5A % (AC ! B)A ! (AC ! B)A % A B ! AC ! AB % AC ! B
c)

El sistema es un conjunto universal porque podemos construir una puerta NAND de


dos entradas si hacemos que la entrada A tome el valor 1. De este modo
f % AC ! B % C ! B % C . B, donde se ha aplicado la Ley de DeMoore. Puesto que la
puerta NAND es conjunto universal, una vez construida podramos implementar cualquier sistema combinacional y por tanto tambin es conjunto universal.

46

Problemas de fundamentos y estructura de computadores

Para encontrar la suma de productos cannica podemos introducir la suma de productos obtenida en un mapa de Karnaugh de 4 variables y observar aquellas casillas que
toman valor 1.
Por tanto la suma de productos cannica es:
f (A, B, C) % Gm(0, 1, 4, 5, 6)
F1

1
B

PROBLEMA 12
Sea el sistema de la figura, donde el mdulo M da salida 1 cuando en la entrada hay dos
ceros o dos unos adyacentes, leyendo las entradas de arriba abajo (o sea A-B-C).
Calcular la suma de productos ms simplificada de F1 y F2.

Solucin:
Para resolverlo es necesario encontrar primero la FC del mdulo M.
Puesto que slo tiene 3 entradas, el modo ms rpido y directo es hacer la tabla de verdad.
A

F1

F2

0
0
0
0

0
0
1
1

0
1
0
1

1
1
0
1

1
1
0
1

1
1
0
0

1
1
1
1

0
0
1
1

0
1
0
1

1
0
1
1

0
0
0
0

1
0
0
0

Para calcular la suma de productos ms simplificada posible de F1 y F2 hay que resolver


los siguientes mapas de Karnaugh:

Captulo 2 Sistemas combinacionales

47

Las expresiones son:


F1(A, B, C) % A . B ! A . C

F2(A, B, C) % A . B ! B . C

PROBLEMA 13
Sea un sistema P con la tabla de verdad dada. Para qu valores de a y b dicho sistema es
conjunto universal? Razona las respuestas.
X

Solucin:
Hay 4 posibilidades que dan lugar a los 4 sistemas diferentes mostrados en la tabla:
X

P0

P1

P2

P3

0
0
1
1

0
1
0
1

0
0
1
0

0
1
1
0

1
0
1
0

1
1
1
0

El sistema P1 es una puerta XOR, con la que nunca podremos construir puertas OR ni
AND, por lo tanto no es conjunto universal.
El sistema P2 es la negacin de Y, por tanto, al igual que P1, no puede ser conjunto universal.
El sistema P3 es una puerta NAND, de la cual sabemos que s es conjunto universal.
El sistema P0 tiene la siguiente EC.
P0(X, Y) % XY
Forzando X % 1 podemos construir un negador.

48

Problemas de fundamentos y estructura de computadores

Una vez tenemos el negador podemos construir la puerta AND de dos entradas A y B del
siguiente modo:

En definitiva, podemos construir tanto puertas AND como puertas NOT utilizando slo el
sistema P0. Puesto que con el conjunto {AND, NOT} se puede implementar cualquier sistema
combinacional, el sistema P0 es conjunto universal.
PROBLEMA 14
Una avioneta tiene 2 luces de seguridad: {Peligro, Emergencia}.
La luz de Peligro se encender si ocurre alguno de estos casos:
Altura menor de 1000 pies, sin sistema de navegacin y sin visibilidad.
Altura mayor de 1000 pies y fallo del motor.
Altura mayor de 1000 pies y no hay visibilidad.
La luz de Emergencia se encender si ocurre alguno de estos otros casos:
Altura menor de 1000 pies y fallo del motor.
Altura mayor de 1000 pies, sin sistema de navegacin y sin visibilidad.
Altura mayor de 1000 pies, sin sistema de navegacin y fallo del motor.
Dar una descripcin de alto nivel y especificar claramente cmo se codifican los datos
del problema.
Disear el sistema que gobierna la luz de Peligro usando SOLO MUX de 4 a 1.
Disear el sistema que gobierna la luz de Emergencia usando descodificadores y puertas.
En qu casos se encendern ambas luces?
Solucin:
En primer lugar se codifica el problema con variables binarias. Una posibilidad (no la nica)
es la siguiente:
Variable

Significado

Codificacin

Descodificacin

M
N
V
A

Fallo de motor
Fallo del sistema de navegacin
Visibilidad
Altura superior a 1.000 pies

0/1
0/1
0/1
0/1

No/S hay fallo


No/S hay fallo
No/S hay
No/S

Captulo 2 Sistemas combinacionales

49

Entonces las condiciones para encender la luz de peligro (P) y emergencia (E) son:
P%A . N.V!A . M!A . V
E%A . M!A .N .V!A . N.M
Para expresar P y E como suma de productos cannica introducimos los trminos producto en mapas de Karnaugh y de este modo aparecern los minitrminos que dan salida 1.
El orden en el que se coloquen las variables en el mapa de Karnaugh no importa, pero una
vez elegido se debe mantener hasta el final del ejercicio.

E % Gm(1, 3, 5, 7, 9, 11, 12, 13)


P % Gm(4, 5, 8, 9, 11, 12, 13, 15)
Para implementar con MUX de 4 a 1 la luz P se toman como variables de control S1 % A y
S0 % V de modo que:

50

Problemas de fundamentos y estructura de computadores

La ecuacin para encender ambas luces es (P)AND(E) % Gm(5, 9, 11, 12, 13), que simplificando resulta:

(P)AND(E) % A . N . V ! A . M . N ! N . M . V, es decir si la altura es mayor de 1000 pies,


falla la navegacin y no hay visibilidad o si la altura es mayor de 1000 pies, falla el motor y
no falla la navegacin y si no hay visibilidad, falla la navegacin y falla el motor.
PROBLEMA 15
El ngulo de inclinacin de la cola de un caza se clasifica segn el grfico, donde los nmeros son las decenas de grado.
Queremos disear un sistema que activar el traje anti-G y encender la alarma del
caza segn el ngulo de inclinacin. La alarma se encender cuando haya inclinacin de
vulnerabilidad y de bajada; y se apagar en los dems casos. El traje anti-G sol se activar
cuando la inclinacin sea de prdida o de mximo esfuerzo.
El sistema debe recibir las decenas de grado, con su correspondiente signo, codificadas
en C2.

Captulo 2 Sistemas combinacionales

51

a) Dar la tabla de verdad del sistema.


b) Implementar la seal Alarma usando slo MUXs de 4 a 1.
c)

Implementar la seal Anti-G usando slo las puertas NAND imprescindibles.

Solucin:
Codificacin:
El ngulo de inclinacin vara desde .7 hasta !7. Usando notacin C2 necesitaramos 4
bits para codificar la informacin. Dependiendo de dicho ngulo se activa o desactiva la seal
de alarma y el traje anti-G. Son por tanto dos salidas binarias A y G sobre las que se toma el
siguiente convenio:
A % 1: Encender alarma,

A % 0: Apagar alarma

G % 1: Activar antiG,

G % 0: Desactivar antiG

Se obtendra entonces la siguiente tabla:


ngulo

Cdigo

.7 o menor

1001

.6

1010

.5

1011

.4

1100

.3

Rgimen
de inclinacin

1101

.2

1110

.1

1111

0000

0001

0010

0011

0100

0101

0110

Mximo
esfuerzo

Subida

Vulnerabilidad

Bajada

Prdida
7 o mayor

0111

Para trabajar es ms conveniente escribir la tabla de verdad en el orden habitual, comenzando por el minitrmino 0 y acabando en el 15.

52

Problemas de fundamentos y estructura de computadores

ngulo

Cdigo

0
1
2
3

0000
0001
0010
0011

1
1
1
1

0
0
0
0

4
5
6
7

0100
0101
0110
0111

1
1
0
0

0
0
1
1

.7
.6
.5

1000
1001
1010
1011

*
0
0
0

*
1
1
0

.4
.3
.2
.1

1100
1101
1110
1111

0
0
1
1

0
0
0
0

Esto ha facilitado detectar un caso que no haba sido contemplado. El (1000)C2 se corresponde con el .8. Segn la codificacin inicial, en la que el (1001)C2 codifica ngulos menores o iguales a .70o este caso no se dara nunca y por tanto la mejor opcin sera dejar dicho
minitrmino sin especificar (*).
Para implementar la seal A con un MUX de 4 a 1 es necesario resolver un mapa de Karnaugh. Por la disposicin de los minitrminos que dan salida 1, la eleccin de X3 y X2 (los dos
bits ms significativos de la entrada) logra una de las implementaciones ms sencillas.

Puesto que se exige utilizar slo MUX de 4 a 1, para implementar la FC es necesario


construir un negador con un MUX de 4 a 1.

Captulo 2 Sistemas combinacionales

53

Para implementar la seal Anti-G con puertas NAND de nuevo es necesario resolver un
mapa de Karnaugh. La suma de trminos producto ms simplificada es entonces:
G(X2, X2, X1, X0) % X3 X2 X1 ! X3 X2 X1 ! X3 X2 X0

PROBLEMA 16
Se quiere disear un sistema de limitacin de velocidad de un buque gobernado por los
parmetros de Estado de la mar y Sentido de la marcha. El sistema da tres posibles lmites:
20 nudos: cuando el buque se mueve hacia atrs o cuando la mar est encrespada.
30 nudos: cuando el buque se mueve hacia delante y el estado de la mar sea agitada.
40 nudos: del resto de los casos, cuando la mar est en calma.
a) Dar una descripcin del nmero de entradas y salidas del sistema y una codificacin.
b) Implementar las salidas usando nicamente puertas NAND.
Aadimos ahora un sistema que toma la velocidad real del buque (20, 30 o 40
nudos), la compara con la permitida y emite una seal de peligro cuando la velocidad
real es superior.
c)

Implementar este ltimo sistema usando un nico MUX de 8 a 1 y negadores.

(Hay varias posibilidades para codificar el problema.)

54

Problemas de fundamentos y estructura de computadores

Solucin:
Codificacin:
El sistema de limitacin ser un sistema combinacional con 2 salidas binarias con las que se
codifican los tres posibles lmites de velocidad:
L1L0 % 00: 20 nudos ; L1L0 % 01: 30 nudos ;

L1L0 % 10: 40 nudos

Las entradas del sistema son: Estado de la mar (E) y Sentido de la marcha (S) sobre las
que se toma el siguiente convenio:
E1E0 % 00: Calma ; E1E0 % 01: Agitada
E1E0 % 10: Encrespada ; S % 0/1: Atras/Adelante
En definitiva el sistema tiene 3 entradas y 2 salidas y por tanto un modo fcil de abordar el
problema es utilizar la tabla de verdad, cuya cabecera sera:
E1

E0

L1

L0

El procedimiento es completar el lado derecho con todas las posibilidades y codificar cada
uno de los casos con el lmite de velocidad correspondiente segn las especificaciones.
E1

E0

L1

L0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
0
0

0
0
0
1

1
1
1
1

0
0
1
1

0
1
0
1

0
0
X
X

0
0
X
X

Los casos 110 y 111 han quedado sin especificar porque no existe ningn estado de la mar
con cdigo 11 y por tanto nunca ocurrirn.
Para implementar L1 y L0 no hace falta resolver ningn mapa de Karnaugh puesto que slo
hay un minitrmino que da salida 1 para cada caso. Es decir:
L1 % Gm(1)

L0 % Gm(3)

Con puertas NAND tendramos el siguiente diseo:

Captulo 2 Sistemas combinacionales

55

El sistema de seguridad que avisa cuando la velocidad real es superior a la permitida tiene
por un lado la entrada del lmite de velocidad en cada caso (L1L0) y por otro la velocidad real
del buque. Codificando con 2 bits la velocidad real del siguiente modo:
V1V0 % 00: 20 nudos

; V1V0 % 01: 30 nudos ;

V1V0 % 10: 40 nudos

entonces la seal de Peligro se activar (P % 1) segn la siguiente tabla de verdad:


L1

L0

V1

V0

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

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

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

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

0
1
1
X
0
0
1
X
0
0
0
X
X
X
X
X

Para implementar la salida P con un nico MUX de 8 a 1 es necesario elegir 3 variables de


control. Tomando L1, L0 y V1 conseguimos una implementacin mnima y ni siquiera es necesario utilizar negadores.

56

Problemas de fundamentos y estructura de computadores

PROBLEMA 17
Disear un sistema, S, que abre 2 vlvulas, V1 y V0, mezclando dos medicinas, A y B. La
vlvula V1 se abrir siempre que el paciente tenga menos de 40 pulsaciones y fallo renal o
entre 40 y 90 pulsaciones y fallo respiratorio o si tiene ms de 90 pulsaciones. La vlvula
V0 se abrir cuando el paciente tenga menos de 40 pulsaciones o cuando tenga ms de 90
pulsaciones y fallo respiratorio y renal. Se pide:
a) Hacer una codificacin y dar la tabla de verdad del sistema y la E.C. ms simplificada
de V1 y V0.
b) Disear el sistema usando un descodificador y puertas.
c)

Implementar la F.C. de V1 con MUXs de 8 a 1 y la F.C. de V0 con MUXs de 4 a 1.


(Las nicas puertas que se pueden usar en este apartado son las NOT.)

d) Se aade un sensor a cada botella que se activa cuando sta se encuentra vaca.
Disear un sistema, al que se conectan 5 botellas, que detecte cundo hay ms
botellas vacas que llenas.

Solucin:
En primer lugar se codifica el problema con variables binarias. Una posibilidad (no la nica)
es la siguiente:
Variable

Significado

Codificacin

Descodificacin

P1, P0
R
T

Pulsaciones
Fallo renal
Fallo respiratorio

00/01/10
0/1
0/1

Menos de 40/Entre 40 y 90/Ms de 90


No/S hay fallo
No/S hay fallo

Las expresiones de conmutacin para las vlvulas V1 y V0, segn las especificaciones dadas, son:
V1 % P1P0 R ! P1P0 T ! P1P0

V 0 % P 1P 0 ! P 1P 0 R

Para implementar el sistema S con un descodificador y puertas es necesario conocer la


Suma de Productos Cannica (SPC). Puesto que tenemos las EC de las vlvulas como suma
de productos, podemos trasladar cada trmino producto a un mapa de Karnaugh.

Captulo 2 Sistemas combinacionales

57

Por tanto las SPC de las vlvulas son:


V1(P1, P0, R, T) % Gm(2, 3, 5, 7, 8, 9, 10, 11)

V0(P1, P0, R, T) % Gm(0, 1, 2, 3, 10, 11)

El diseo con descodificadores es ahora inmediato:

Para implementar V1 con un MUX de 8 a 1 se elige P1, P0 y R como variables de seleccin


del MUX. Otra eleccin diferente no simplificara el diseo. De este modo el mapa de
Karnaugh se divide en 8 zonas con las siguientes EC:
F0 % 0, F1 % 1, F2 % T, F3 % T, F4 % 1, F5 % 1, F6 % 1, F7 % 0

58

Problemas de fundamentos y estructura de computadores

Para implementar V0 con un MUX de 4 a 1 se eligen P1 y P0 como variables de seleccin.


Ahora el mapa de Karnaugh se divide en 4 zonas con las siguientes EC:
F0 % 1,

F1 % 0,

F2 % R

F3 % 0

Por ltimo, para disear el sistema que detecta cundo hay ms botellas vacas que llenas,
dado que se conecta a 5 sensores se podra recurrir a una tabla de verdad de 32 filas e implementarla posteriormente con alguno de los mtodos que se conocen. Este procedimiento ya no
es eficaz si hubiera ms sensores pues por cada sensor que se aadiera la tabla duplicara su
tamao. Esta solucin queda propuesta.
Una alternativa, que es vlida para cualquier nmero de sensores, es averiguar cuntos
hay activos sumndolos y comparando despus el nmero obtenido con la mitad de los sensores conectados. Para ello es importante darse cuenta de que un sumador se puede ver como un
sistema que devuelve (en binario) el nmero de unos a la entrada. Es decir, si recibe dos entradas binarias A y B, el nmero N formado por el carry Cout y la salida S indica si hay 0, 1 o 2
unos entre A y B.

Captulo 2 Sistemas combinacionales

59

Dispongamos entonces los 5 sensores: A, B, C, D y E en parejas que se conectan a sumadores. Puesto que tenemos un nmero impar, el sensor E se empareja con un cero.

NAB, NCD y NE son 3 nmeros binarios de dos bits.


El siguiente paso es aadir una nueva capa de sumadores, ahora de 2 bits, para sumar NAB
con NCD y NE con 0. Finalmente una nueva capa con un sumador de 3 bits obtendramos 4 bits
que forman el nmero binario N % (N3N2N1N0)2 que se corresponde con el total de unos que
hay en las entradas. Este dispositivo sera capaz de contar desde 0 hasta 8 unos en caso de que
se utilizaran sus 8 entradas.

Cuando N sea mayor o igual que 3 se debe activar el detector de ms botellas vacas que
llenas. Teniendo en cuenta que el nmero N nunca ser mayor que 5 se plantea el siguiente
mapa de Karnaugh que da lugar a la EC del detector: Detector % N2 ! N1N0.

60

Problemas de fundamentos y estructura de computadores

Con todo el circuito detector es el siguiente:

PROBLEMA 18
Para transmitir informacin numrica en estaciones de esqu se colocan 5 luces en un disco
elevado 3 metros por un poste y se establece el cdigo de la figura, donde el crculo oscuro
significa que est encendido.
Disear un sistema que conste de un teclado, el poste de luces y un subsistema que
transforma la informacin del teclado en luces encendidas y apagadas en el poste.
a) Explica claramente los mdulos que se utilizan y la codificacin elegida.
b) Utiliza descodificadores y puertas OR para implementar las luces A, B y C.
c)

Utiliza el menor nmero posible de MUXs de 4 a 1 para implementar las luces D y E.

Captulo 2 Sistemas combinacionales

61

Solucin:
La tabla de verdad del sistema que enciende y apaga las luces es:
N3

N2

N1

N0

0
0
0
0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
1
1

1
0
0
1

0
0
1
1

0
0
0
0

1
0
0
0

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

1
1
1
0

1
1
1
1

1
1
0
1

1
1
0
0

0
1
0
0

1
1
1
1

0
0
0
0

0
0
1
1

0
1
0
1

0
0
X
X

0
0
X
X

1
0
X
X

1
1
X
X

0
1
X
X

1
1
1
1

1
1
1
1

0
0
1
1

0
1
0
1

X
X
X
X

X
X
X
X

X
X
X
X

X
X
X
X

X
X
X
X

La implementacin con descodificadores y puertas OR es inmediata.

Para implementar D y E con MUX de 4 a 1 es necesario elegir 2 variables de control y


resolver el mapa de Karnaugh. Eligiendo N3 y N2 tenemos una implementacin mnima para
D y para E.

62

Problemas de fundamentos y estructura de computadores

El resultado es el siguiente:

Es interesante resaltar que puesto que no se permite utilizar otro elemento combinacional,
las expresiones de conmutacin F0 y F1 del MUX que implementa E se deben implementar a
su vez con otro MUX de 4 a 1. Esto no es difcil ya que ambas son FC de dos variables (N1 y
N0) y por tanto basta con colocar sus funciones de conmutacin en la entrada de datos. Igualmente para la expresin de conmutacin F1 del MUX que implementa D es necesario construir un negador con un MUX de 4 a 1. En definitiva:

Captulo 2 Sistemas combinacionales

63

PROBLEMA 19
Dar las ecuaciones y los circuitos, con los elementos combinacionales que prefieras, de
una red iterativa que reciba y genere n bits y funcione del siguiente modo:
zi %

1 si (xi % 1) p (xi.1 % 0) p (xi.2 % 1)


0 en otro caso

Es decir, una celda da salida % 1 cada vez que detecta una ventana con el 101.
El siguiente grfico representa una red de 8 celdas como la que se desea disear, donde
se puede apreciar un ejemplo de funcionamiento para una cierta entrada. Los recuadros son
las celdas y el nmero inscrito es su ndice.

Solucin:
La red iterativa se compone de n celdas, cada una de las cuales recibe un bit Xi y genera un bit
Zi. Para que la red funcione, adems es necesario que cada celda transmita a la siguiente (la
que se encuentra a su izquierda) la informacin que resume todo lo que ha ocurrido en las
celdas anteriores (las de la derecha) ms la informacin que recibe la propia celda.

64

Problemas de fundamentos y estructura de computadores

Esta informacin se codifica con 2 bits del siguiente modo:


Significado

Ninguno de los siguientes


Xi % 1
Xi % 0 p Xi.1 % 1

0
0
1

0
1
0

La red iterativa tendr entonces el siguiente aspecto:

Y, segn la codificacin dada, la celda genrica i tendr el siguiente esquema y tabla de


verdad.
Xi

Ai

Bi

Zi

Ai!1

Bi!1

0
0
0
0

0
0
1
1

0
1
0
1

0
0
0
X

0
1
0
X

0
0
0
X

1
1
1
1

0
0
1
1

0
1
0
1

0
0
1
X

0
0
0
X

1
1
0
X

Para la implementacin simplificamos las FC de Zi, Ai!1 y Bi!1.

Captulo 2 Sistemas combinacionales

65

Por ltimo, para que la red funcione correctamente, es necesario que A0 % 0 y B0 % 0.


PROBLEMA 20
Disea un multiplexor de 4 a 1 usando un descodificador de 2 a 4 y puertas.
Solucin:
Para resolverlo basta recordar que un multiplexor es un sistema que contiene todos los minitrminos que se pueden formar con las entradas de seleccin multiplicados a su vez por su
entrada de datos correspondiente; y que un descodificador es un sistema que contiene todos
los minitrminos que se pueden formar con las entradas de datos. Por tanto habr que multiplicar cada una de las salidas del descodificador por la entrada correspondiente de datos. Finalmente todas las salidas se deben sumar.
Llamando {S1, S0} a las entradas de seleccin E a la capacitacin y {X3, X2, X1, X0} a las
entradas de datos, el MUX de 4 a 1 se construira como muestra la figura.

66

Problemas de fundamentos y estructura de computadores

PROBLEMA 21
Se ha diseado un sistema de visin artificial capaz de distinguir accesos en una pared.
Para probarlo se integra en un robot motorizado y se construye un laberinto de habitaciones triangulares tal que cada una de las paredes puede tener o no un acceso.
Cuando el sistema de visin identifica un acceso lo etiqueta segn est en la pared de la
izquierda (a) o de la derecha (b).
Disear el sistema que gobierna los movimientos del robot en funcin de los accesos
que ve en una habitacin al entrar; teniendo en cuenta que se quiere construir con el
menor nmero de circuitos 7400, que contienen 4 puertas NAND de 2 entradas. El robot
recorrer el laberinto del siguiente modo:
Si llega a una habitacin y no ve accesos, debe retroceder.
Si llega a una habitacin y ve 1 acceso debe avanzar (hacia la izquierda o la derecha)
para salir por el que no entr.
Si llega a una habitacin y ve 2 accesos debe avanzar para salir siempre por la derecha.
En la figura se muestra una habitacin con 3 accesos (a y b ms el acceso por el que ha
entrado), tal como la vera el robot.

Solucin:
El robot tiene 3 posibles movimientos:
{retroceder, ir a la izquierda, ir a la derecha}
El movimiento se decide en funcin del nmero de accesos que ve y tiene 4 posiblidades:
{ninguno, uno a la derecha (b), uno a la izquierda (a), uno a cada lado (a y b)}
Por tanto habr que codificar con 2 bits (A y B) la entrada (accesos vistos) y con 2 bits (M1
y M0) la salida (movimientos). Se propone la siguiente codificacin:
Accesos vistos

Movimiento

M1

M0

Ninguno
Uno a la derecha
Uno a la izquierda
Uno a cada lado

0
0
1
1

0
1
0
1

Retroceder
Derecha
Izquierda

0
0
1

0
1
0

Captulo 2 Sistemas combinacionales

67

La tabla de verdad del sistema ser sencillamente:


A

M1

M0

0
0
1
1

0
1
0
1

0
0
1
0

0
1
0
1

Las EC de M1 y M0 son M1 % AB y M0 % B.

PROBLEMA 22
Se quiere construir un sistema de control de movimiento de una plataforma en la que se
monta una cmara. La plataforma se maneja a distancia por radio a travs de un mando
(ver figura) y que funciona del siguiente modo:
La rueda con 3 posiciones excluyentes {I, N, D} maneja el giro de la cmara del siguiente modo:
En en el sentido de las agujas del reloj si la rueda se lleva a D.
En el sentido contrario a las agujas del reloj si la rueda se lleva a I.
No gira si la rueda se lleva a N.
La rueda con 3 posiciones excluyentes {R, N, A} maneja el giro del brazo que sujeta la
cmara del siguiente modo:
Hacia delante si la rueda se lleva a A.
Hacia detrs si la rueda se lleva a R.
Se detiene si la rueda se lleva a N.
En la plataforma tanto el brazo como la cmara tienen, cada uno, un pequeo motor
con 8 posibles funcionalidades diferentes. A nosotros slo nos interesan las siguientes:
Detener movimiento % cdigo 110.
Girar en sentido de las agujas del reloj % cdigo 001.
Girar en sentido contrario a las agujas del reloj % cdigo 011.
El mando enva la informacin acerca de la posicin de las ruedas y adems aade un
bit de paridad tal que el nmero de ceros que se transmitan sea siempre IMPAR.
El robot recibe la informacin y genera los bits necesarios para que se muevan los motores del brazo y de la cmara.

68

Problemas de fundamentos y estructura de computadores

a) Hacer una codificacin completa, tanto del mando como de la plataforma, y dar las
tablas de verdad de ambos.
b) Implementar el bit de paridad con un descodificador y puertas.
c)

Implementar el movimiento del motor del brazo slo con MUXs de 2 a 1.

d) Implementar el movimiento del motor de la plataforma slo con MUXs a elegir.


NOTA: El mando tiene varios canales por lo que emite todos los bits al mismo tiempo y la
plataforma los recibe al mismo tiempo.

Solucin:
El mando tiene 2 ruedas con 3 posiciones por lo que cada rueda se debe codificar con 2 bits
Cmara

C1

C0

Brazo

B1

B0

N
D
I

0
0
1

0
1
0

N
A
R

0
0
1

0
1
0

La rueda Cmara gobierna el motor MC en la plataforma que sostiene la cmara y que


sirve para girar en el eje vertical, mientras que la rueda Brazo gobierna el motor MB de
dicha plataforma, que sirve para girar en el eje horizontal.
Tenemos que decidir cmo colocar los motores MC y MB para que al girar funcionen
como se pide. Se propone lo siguiente:
Sentido de giro

MC

MB

Cdigo

Horario
Antihorario
Detener

D
I
N

A
R
N

001
011
110

De este modo se obtendran las siguientes tablas de verdad:


Cdigo MC
C1

C0

MC2

MC1

0
0
1
1

0
1
0
1

1
0
0
X

1
0
1
X

Cdigo MB

MC0

B1

B0

MB2

MB1

MB0

0
1
1
X

0
0
1
1

0
1
0
1

1
0
0
X

1
0
1
X

0
1
1
X

Captulo 2 Sistemas combinacionales

69

Gracias a la adecuada eleccin de la posicin de los motores ambas tablas de verdad son
idnticas, lo que falicita la tarea.
El bit de paridad P se genera con la posicin de ambas ruedas segn la siguiente tabla de
verdad y su implementacin se muestra en la figura.
C1

C0

B1

B0

0
0
0
0

0
0
0
0

0
0
1
1

0
1
0
1

1
0
0
1

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

0
1
1
0

1
1
1
1

0
0
0
0

0
0
1
1

0
1
0
1

0
1
1
0

1
1
1
1

1
1
1
1

0
0
1
1

0
1
0
1

1
0
0
1

70

Problemas de fundamentos y estructura de computadores

Para implementar el movimiento del brazo necesito generar los bits del cdigo correspondiente a partir de las entradas B1 y B0. Adems se pide hacerlo con MUX de 2 a 1 por lo que
se deben calcular las funciones de conmutacin con los mapas de Karnaugh.

Para implementar el movimiento de la cmara se eligen MUXs de 4 a 1 pues as no es


necesario realizar ningn clculo. Los valores indeterminados se tomaron como 0. El resultado es:

Captulo 2 Sistemas combinacionales

71

2.12 Problemas propuestos


PROBLEMA 1
Implementar las siguientes funciones de conmutacin con el menor nmero de puertas NAND:
F1(x3, x2, x1, x0) % Gm(0, 2, 4, 8, 9, 10, 11, 12, 14, 15)
F0(x3, x2, x1, x0) % x3 x0 ! x3 x2 x0 ! x3 . x2 . x0 ! x3 . x1
PROBLEMA 2
Se quiere construir un sitema de control de movimiento de un robot en el que se monta un
sistema de visin artificial. El robot se maneja por radiofrecuencia con un mando de 1 palanca
con 4 posiciones excluyentes {Neutro, Adelante (A), Izquierda (I) y Derecha (D)} y un botn
Reverse (R).
Cuando R no esta apretado el robot se mueve del siguiente modo:
En lnea recta mientras se lleva la palanca hacia A.
Hacia la izquierda mientras se lleva la palanca hacia I.
Hacia la derecha mientras se lleva la palanca hacia D.
Cuando R est apretado el robot se mueve hacia detrs, del mismo modo que lo haca
hacia delante.
Las ruedas de delante del robot puden estar detenidas, moverse hacia delante o moverse
hacia detras.
Para avanzar recto (tanto hacia delante como hacia detrs) se deben mover ambas en
el mismo sentido.
Para avanzar a la derecha se debe mover (adelante o atrs) la rueda izquierda y detener
la derecha.
Para avanzar a la izquierda se debe mover (adelante o atrs) la rueda derecha y detener
la izquierda.
El mando enva la informacin acerca de la posicin de la palanca y el botn R y adems
aade un bit de paridad tal que el nmero de unos que se transmitan sea siempre PAR.
El robot recibe la informacin y genera el movimiento que tiene que realizar la rueda izquierda y derecha.
a) Hacer una codificacin completa, tanto del mando como del robot, y dar las tablas de
verdad.
b) Implementar el bit de paridad con un nico MUX.
c)

Implementar el movimiento de las ruedas con un descodificador y puertas OR.

d) Implementar de nuevo el movimiento de las ruedas slo con MUX de 4 a 1 y NOT.


NOTA: El mando tiene varios canales por lo que emite todos los bits al mismo tiempo y la
plataforma los recibe al mismo tiempo.

72

Problemas de fundamentos y estructura de computadores

PROBLEMA 3
Una pequea tienda de msica quiere un aparato que le avise de cundo hay que llamar al
proveedor. El aparato tiene 4 botones con los que codifica la siguiente informacin:
Se ha vendido al menos el 20% de las existencias de Springsteen.
Se ha vendido al menos el 30% de las existencias de Elton John.
Se ha vendido al menos el 40% de las existencias de Garth Brooks.
Se ha vendido al menos el 50% de las existencias de la tienda.
Queremos avisar al proveedor cuando ocurra alguno de estos casos:
Se ha vendido el 20% de S. , menos del 30% de E. y el 50% de la tienda.
Se ha vendido ms del 30% de E. y ms del 50% de la tienda.
Se ha vendido al menos el 40% de G. y ms del 50% de la tienda.
Se ha vendido menos del 20% de S.
Dar la tabla de verdad del sistema y disearlo usando MUX de 4 a 1 y puertas.
PROBLEMA 4
Sea un sistema digital con dos entradas y dos salidas.
Las entradas son:
X % nmero, en convenio C1 o C2, codificado con 3 bits.
C % {0, 1}
Y las salidas son:
Z1 % 1 si ((X)C2 ! C)10 es PAR; y 0 en caso contrario.
Z0 % 1 si ((X)C1 ! C)10 es IMPAR; y 0 en caso contrario.
Se pide:
a) Dar una especificacin de alto nivel.
b) Hacer la tabla de verdad de Z1(C, x2, x1, x0) y Z0(C, x2, x1, x0).
c)

Implementar Z1 usando MUX de 8 a 1.

Captulo 2 Sistemas combinacionales

73

PROBLEMA 5
Obtener las E.C. ms simplificadas para F1 y F2.

PROBLEMA 6
Una empresa est probando un sistema de frenado y otro de servodireccin en un prototipo.
Dicho prototipo lleva un sensor de frenazo y otro de derrape.
El sistema de frenado se activa en los siguientes casos:
El coche va a 1/3 de su potencia mxima y hay frenazo y derrape.
El coche va a 2/3 de su potencia mxima y hay frenazo.
El coche va a la mxima potencia y hay frenazo o derrape.
El sistema de servodireccin se desactiva en los siguientes casos:
El coche est parado.
El coche va a 1/3 de su potencia mxima y no derrapa.
El coche va a 2/3 de su potencia mxima y no frena.
a) Dar las S.P.C. del sistema que activa los sistemas de frenado y servodireccin.
b) Implementar el sistema de frenado utilizando el menor nmero de puertas NAND.
c)

Implementar el sistema de servodireccin utilizando nicamente MUX de 4 a 1.

d) Implementar ambos sistemas utilizando un descodificador adecuado y puertas.


PROBLEMA 7
Analiza la red de la figura y da la suma de productos ms simplificada posible.
Es conjunto universal? Razona la respuesta.

74

Problemas de fundamentos y estructura de computadores

PROBLEMA 8
Dado el sistema de la figura se pide:
a) Suma de productos cannica de Z3 y Z2.
b) Suma de productos simplificada de Z3 y Z2.
c)

Reimplementa Z3 y Z2 utilizando el menor nmero de puertas NAND.

PROBLEMA 9
Disear detalladamente un descodificador de 3 a 8 utilizando nicamente descodificadores de
menor tamao.
Es el descodificador un conjunto universal? Razona la respuesta.
PROBLEMA 10
Sea la F.C.: f (x3, x2, x1, x0) % Gm(0, 1, 2, 7, 8, 15) ! Gd(5, 11, 12). Escribe la suma de
productos ms simplificada posible.
PROBLEMA 11
Sea el sistema de la figura donde el mdulo M da salida 1 slo si tiene un nmero par o cero
de unos en la entrada. Escribe las ecuaciones del mdulo M, de la salida F1 y de la salida F2.

Captulo 2 Sistemas combinacionales

75

PROBLEMA 12
Disear un sistema que transforme un nmero recibido a travs de un teclado (del 0 al 9) en su
equivalente braille levantando o bajando los 6 puntos de una pantalla tctil.

Disea modularmente el sistema completo.


Escribe la tabla de verdad del mdulo traductor de decimal a braille.
Implementa dicho mdulo utilizando un descodificador y las puertas necesarias.
PROBLEMA 13
Se pretende disear un termostato que encienda o apague la climatizacin de una sala. Dicho
sistema tiene un regulador con 4 posiciones: {Apagado, 1/3, 2/3, Mximo}. Adems tiene un
sensor para la humedad que se activa si est por encima del 50% y otro sensor que se activa
cuando la energa consumida supera los 4200 kWh.
El sistema de climatizacin funciona cuando se cumple alguno de estos casos:
En posicin de apagado, en el caso de que la humedad supere el 50%.
Si la energa consumida supera el lmite pero se pone al mximo.
Si pone a 2/3 y no se supera el lmite de energa.
Si se pone a 1/3.
Si la humedad supera el 50% y no se supera el lmite de energa.
Si se pone al mximo y sin superar el lmite de energa y la humedad no llega al 50%.
Se pide:
a) Hacer una codificacin adecuada.
b) Implementar el termostato utilizando multiplexores de 4 a 1 y puertas NOT si son necesarias. Escribe todos los clculos necesarios.
c)

Reimplementar utilizando ahora nicamente puertas NAND.

PROBLEMA 14
Disear una red iterativa que reciba n bits y funcione del siguiente modo:
zi %

xi
xi

si (xi.1 % 1) p (xi.2 % 0)
en otro caso

Es decir: un bit de entrada se copiar si su bit de la derecha es 1 y el de la derecha de


este ltimo es 0 y se negar en cualquier otro caso.
En otro caso el bit se cambia.

76

Problemas de fundamentos y estructura de computadores

PROBLEMA 15
Dada la funcin de conmutacin f (x2, x1, x0) % x2 x1 ! x2 x1 x0 ! x2 x1 x0 ! x2 x0 ! x2 x1, expresarla como suma de productos cannica y como suma de productos lo ms simplificada
posible.
Implementar la funcin utilizando:
a) nicamente puertas NAND, utilizando el mnor nmero posible de ellas.
b) Un MUX de 8 a 1.
c)

Un descodificador y puertas.

d) nicamente MUX de 4 a 1.
PROBLEMA 16
Analizar la siguiente red de puertas NAND y expresar la funcin F(x, y) como suma de minitrminos y como suma de productos lo ms simplificada posible.
Es conjunto universal? Razonar la respuesta.

PROBLEMA 17
Dado un elemento combinacional con la siguiente tabla de verdad.
A

0 0

1 1

0 1

0 1

Existe algn valor de X para el cual dicho elemento sea conjunto universal? Justifica la
respuesta.
PROBLEMA 18
Analiza la red de puertas y da la expresin de conmutacin de la salida tanto en su forma
cannica como en suma de productos lo ms simplificada posible.

3.1 Definicin de sistema secuencial y concepto de estado


3.1.1 Sistema secuencial (Definicin formal)
Un sistema secuencial es aquel en el que la salida z en un instante dado ti es funcin F de la
entrada x y el estado del sistema s en ese instante. Es necesario por tanto definir tambin el
concepto de estado. Sin embargo no se define el estado actual, en el instante ti, el estado transcurrido un cierto tiempo desde el instante dado s(ti ! B), como una funcin G de la entrada x
y el estado del sistema s en el instante ti.

z(ti) % F(x(ti), s(ti))


s(ti ! B) % G(x(ti), s(ti))
s(ti % 0) % DATO

3.1.2. Concepto de estado


Los estados engloban los diferentes comportamientos que presenta el sistema de modo que se
contemplen todos los posibles casos.
Siempre definiremos el estado prximo al actual de modo que el estado inicial debe ser un
DATO.
Al ir entrando valores al sistema secuencial, ste ir modificando su estado, de modo que
el estado en un instante determinado depende de todos los valores que han entrado hasta ese
momento. Por esa razn, conociendo el estado actual (que es casi como conocer todos los
valores posteriores) y la entrada actual podemos determinar la salida y tambin el comportamiento del sistema en el futuro inmediato, esto es el estado siguiente.

78

Problemas de fundamentos y estructura de computadores

3.2 Clasificacin de sistemas secuenciales


3.2.1 Sistemas sncronos y asncronos
Son sistemas sncronos aquellos en los que el estado cambia cada cierto tiempo constante llamado Periodo. Para marcar estos periodos de tiempo los sistemas sncronos estn gobernados
por una sear de reloj (CK) y en vez de escribir S(ti ! B) diriamos: S(ti ! 1).
En los sistemas asncronos no tenemos seal de reloj y por lo tanto los cambios de estado
se producirn con los cambios de la entrada.
Mquina de Mealy

z(ti) % F(x(ti), s(ti))


s(ti ! B) % G(x(ti), s(ti))
s(ti % 0) % DATO

Escribiremos las salidas


en las aristas del diagrama de estados

Mquina de Moore

La salida SOLO depende

z(ti) % F(s(ti)) del estado, no de la entrada


s(ti ! B) % G(x(ti), s(ti))
s(ti % 0) % DATO

Escribiremos las salidas


en los estados del diagrama

3.3 Especificacin binaria. Obtencin de diagramas


de estado
3.3.1 Reconocedores de secuencias
Supongamos una secuencia de N estados.
Estado inicial (Estado cero): An no hemos reconocido nada.
Primer estado: Hemos reconocido el bit ms antiguo de la secuencia.

Maq. Mealy

Segundo estado: Hemos reconocido los dos bits ms antiguos; i.e: puesto que
ya habamos reconocido el ms antiguo lo que hemos hecho ahora es reconocer
el siguiente ms antiguo.
Tercer estado: Hemos reconocido los tres bits ms antiguos.
......
Estado N-1: Hemos reconocido todos los bits de la secuencia excepto el ltimo.
Estado inicial (Estado cero): An no hemos reconocido nada.
Primer estado: Hemos reconocido el bit ms antiguo de la secuencia.

Maq. Moore

......
Estado N-1: Hemos reconocido todos los bits de la secuencia excepto el ltimo.
Estado N: Hemos reconocido TODOS los bits de la secuencia SALIDA % 1

Captulo 3 Sistemas secuenciales

Ejemplo:

79

Sea el siguiente Sist. Sec.

z % 1 si x(t . 2) % a p x(t . 1) % b p x(t) % b


z % 0 en otro caso

Lo que nos pide es, en definitiva, reconocer la secuencia a-b-b, donde la ltima b es el
ltimo bit que debe entrar.
Los estados del sistema seran (hacindolo como Mealy):

El siguiente paso es unir los estados con aristas marcadas con las entradas adecuadas para
pasar del estado del que parten al que llegan; esto es:
La arista que une dos estados est marcada con el nuevo bit que reconoce.
Si la mquina es de Mealy: en la arista tambin marcaremos la salida, que ser 1 slo en
el caso de que partamos del estado N . 1 puesto que ya habremos reconocido todos los
bits anteriores y es justo en este momento cuando reconocemos el que quedaba.
Si la mquina es de Moore entonces la salida ser 0 en todos los estados menos en el
ltimo (estado N) en el que daremos salida 1 puesto que YA hemos reconocido la secuencia.

El ltimo paso es completar el diagrama de estados con las aristas que faltan. De cada
estado deben partir tantas aristas como posibles valores tiene el sistema para la entrada. La
dificultad de los reconocedores est en dibujar correctamente las aristas. Si estn mal la mquina realizar unas transiciones de estados incorrectas y por lo tanto dar salida 1 cuando
debera dar salida 0!!!
Versin Mealy:

80

Problemas de fundamentos y estructura de computadores

Versin Moore:

3.3.2 Contadores
Son mquinas de Moore que recorren los estados de manera correlativa. Su diagrama es:
Obviamente este es el diagrama de estados de un contador ascendente, desde 0 hasta
p . 1 (i.e., mdulo p). Si fuera descendente las flechas iran en sentido contrario. Tambin
podemos convertirlo en un contador ascendente/descendente.

3.4 Implementacin no cannica de reconocedores


con biestables D
Los biestables D sncronos tienen la caracterstica de retrasar la marcha de la informacin un
ciclo de reloj. De este modo, uniendo en cascada varios biestables podemos tener en un mismo instante la entrada actual (en ti) y el valor de la entrada en tantos instantes anteriores como
biestables pongamos:

Captulo 3 Sistemas secuenciales

81

3.5 Implementacin cannica


Para la implementacin de sistemas secuenciales a partir de su diagrama de estados necesitamos, como norma general, dos bloques combinacionales: uno para implementar la salida y
otro para implementar el prximo estado.
Si la mquina es de Moore la salida no depender de la entrada, mientras que las de
Mealy s.
s(ti ! 1) % F(x(ti), s(ti))
G(s(ti)) Moore
z(ti) %
G(x(ti), s(ti)) Mealy
s(ti % 0) % DATO

El Prximo Estado (P.E.) est siempre a la ENTRADA del reg. de estado.


El Estado Actual (E.A.) est siempre a la SALIDA del reg. de estado.
Es imprescindible que el reg. de estado (los biestables que lo forman) se puedan inicializar de una manera ASINCRONA; para ello disponemos de la seal CLEAR.

3.6 Mdulos secuenciales estndar


3.6.1 Registros
Agrupacin de biestables D que permiten cargar n bits en paralelo.
Slo carga si Clear % 0 y Load % 1.

82

Problemas de fundamentos y estructura de computadores

3.6.2 Registros de desplazamiento


Adems de la carga en paralelo, permite desplazar el contenido del registro hacia la izquierda
o derecha un bit con cada golpe de reloj. Podemos aprovechar esto para realizar multiplicaciones y divisiones por la base.

C0

C0

Accin

Z(t ! 1)

0
0
1
0

0
1
0
1

Nada
@
A
Carga

Z(t)
Zn.2(t), ..., Z0(t), D
I, Zn.2(t), ..., Z0(t)
Zn.1(t), ..., Z0(t)

3.6.3 Banco de registros


Un banco de registros es una agrupacin de 2m registros, todos ellos de ancho n, sobre los que
puedo leer o escribir. Tanto la lectura como la escritura se hace en paralelo, es decir lee/escribe los n bits en un nico golpe de reloj.
Para leer tenemos que dar:
De qu registro vamos a leer?
Seal de Lectura.
Para escribir tenemos que dar:
En qu registro vamos a escribir?
Qu vamos a escribir en ese registro?
Seal de Escritura.
El dato que queramos escribir se coloca en las lneas de entrada.
El dato que hayamos ledo lo tendremos en las lneas de salida.
Indicamos un registro poniendo su nmero, en binario, en las lneas de direccin.

Captulo 3 Sistemas secuenciales

83

3.6.4 Contadores
Clear % 0: Q(t ! Bt) % 0 r Resetear (asncronamente)
Clear % 1
Load % 1: Q(t ! 1) % X(t) r Cargar
Load % 0
Contar % 1: Q(t ! 1) % Q(t) ! 1 r Incrementar
Contar % 0: Q(t ! 1) % Q(t) r No hace nada
Implementacin alternativa de sistemas secuenciales usando contadores
Dado que el contador se puede comportar como un registro siempre podremos implementar
un sistema secuencial usndolo para almacenar el estado siguiente; sin embargo para eso ya
tenemos la implementacin cannica.
Si la mayora de las transiciones entre estados es en el orden en que se modifica un contador, es decir: S0-S1-S2-S3-etc., o con muy pocas modificaciones en dicho orden tiene ms sentido usar un contador que hacer la implementacin cannica, puesto que los contadores implementan precisamente este tipo de diagramas de estado.
Mtodo:
1. Escribir la tabla de transicin de estados.
2. Aadir a la derecha dos nuevas F.C.: LOAD y CONTAR.
3. Ir lnea por lnea de la tabla haciendo el siguiente clculo:
Si P.E. % E.A. ! 1 entonces: LOAD % 0 y CONTAR % 1
Si P.E. % E.A. entonces: LOAD % 0 y CONTAR % 0
En cualquier otro caso LOAD % 1 y CONTAR % - 4. Habr que generar la seal LOAD y la seal CONTAR.
Para ello sabemos que ambas son seales combinacionales que dependen del E.A.
(Q) y de las entradas del sistema secuencial.
5. Habr que definir los valores de entrada para las ocasiones en que utilizamos la seal
de LOAD para cambiar la transicin natural del contador.
Esto tambin lo haremos con un mdulo combinacional que tiene por entradas el
E.A. (Q) y las entradas del sistema secuencial.
La implementacin de la salida se hace igual que en la cannica y ser diferente para
mquinas de Mealy o de Moore.

84

Problemas de fundamentos y estructura de computadores

3.7 Problemas resueltos


PROBLEMA 1
Dar una especificacin mediante diagrama de estados de un restador binario puro.
AYUDA: Al restador le entran dos nmeros representados en binario, empezando por el
menos significativo y de modo que en cada instante de tiempo slo entra un solo bit de
cada uno de ellos.
Solucin:
Denotando cada arco del diagrama de estados ab/c , donde a es el bit del primer operando, b
el del segundo y c la salida del sistema, el diagrama final queda:

PROBLEMA 2
Obtener el diagrama y la tabla de transicin de estados de un sistema secuencial con un bit
de entrada y un bit de salida. La salida ser igual a la entrada hasta que aparezca el segundo cero. A partir de ese instante la salida ser la entrada negada.
Ejemplo:

Entrada:
Salida:

1 1 0
1 1 0

1
1

1
1

0
0

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

Solucin:
El diagrama consta de 3 estados que codifican la siguiente informacin:
S0: An no ha aparecido ningn cero.
S1: Ha aparecido el primer uno
S2: Ha aparecido el segundo uno, que segn el enunciado no tiene por qu ser consecutivo.

Captulo 3 Sistemas secuenciales

85

Se trata de una mquina de Mealy, es decir, tanto el prximo estado como la salida en un
instante dado dependen de la entrada en dicho instante. Por lo tanto la tabla de transicin de
estados y la tabla de salidas se pueden representar en una nica tabla que, segn el diagrama
de estados, es:
Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

Z0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
1
X

1
0
0
X

0
0
1
X

1
1
1
1

0
0
1
1

0
1
0
1

0
0
1
X

0
1
0
X

1
1
0
X

PROBLEMA 3
Obtener el diagrama y la tabla de transicin de estados de un sistema secuencial que cumpla la siguiente funcin de salida para una entrada x(t):

Ejemplo:

Entrada:
Salida:

si

x(t . 2) % 1 p x(t . 1) % 0 p x(t) % 0

si

x(t . 2) % 1 p x(t . 1) % 1 p x(t) % 1

si se da cualquier otro caso

1
0

0
0

0
2

1
0

1
0

1
1

1
1

1
1

0
0

0
2

1
0

...
...

Solucin:
El diagrama consta de 4 estados que codifican la siguiente informacin:
S0: x(t . 2) % 0 (Estado inicial)
S1: x(t . 2) % 1
S2: x(t . 2) % 1 p x(t . 1) % 1
S3: x(t . 2) % 1 p x(t . 1) % 0

86

Problemas de fundamentos y estructura de computadores

Al igual que en el problema anterior, la tabla de transicin de estados y la tabla de salidas


se pueden representar en una nica tabla que, segn el diagrama de estados, es:
Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

Z1

Z0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
0
1

0
0
0
0

0
0
1
0

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

0
1
0
1

1
1
1
1

0
0
0
0

1
0
0
1

PROBLEMA 4
Especificar mediante un diagrama de estados un sistema secuencial cuya salida z toma valor 1 slo cuando x(t) % 1 p x(t . 1) % 0 p x(t . 2) % 1 p x(t . 3) % 1.
Realizar una implementacin cannica con puertas AND, OR y NOT.
Solucin:
Siguiendo los pasos sugeridos en el apunte terico el diagrama constara de 4 estados que
codifican la siguiente informacin:
S0: x(t . 3) % 0 (Estado inicial)
S1: x(t . 3) % 1
S2: x(t . 3) % 1 p x(t . 2) % 1
S3: x(t . 3) % 1 p x(t . 2) % 1 p x(t . 1) % 0

Captulo 3 Sistemas secuenciales

Simplificando obtenermos las EC del prximo estado (P.E.):


D1 % Q1Q0 ! XQ1Q0
D0 % XQ1Q0 ! XQ1Q0 ! XQ1 . Q0
Y para la salida:
Z % XQ1Q0
Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

Z0

87

88

Problemas de fundamentos y estructura de computadores

PROBLEMA 5
Sea un sistema secuencial que da salida Z % 1 cuando se cumple que:
X(t) % 0

X(t . 1) % 1

; X(t . 2) % 0

; X(t . 3) % 1

(es decir, reconoce la secuencia 1010, empezando por la izquierda).


Se pide dibujar su diagrama de estados y hacer una implementacin cannica con puertas AND, OR y NOT.
Solucin:
El diagrama consta de 4 estados que codifican la siguiente informacin:
S0: x(t . 3) % 0 (Estado inicial)
S1: x(t . 3) % 1
S2: x(t . 3) % 1 p x(t . 2) % 0
S3: x(t . 3) % 1 p x(t . 2) % 0 p x(t . 1) % 1

Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

Z0

Captulo 3 Sistemas secuenciales

89

Simplificando tenemos:
D1 % XQ1 ! XQ0

D0 % XQ1 ! XQ0

Z % Q1Q0

PROBLEMA 6
Sea un sistema secuencial que da salida % 1 si ha recibido un nmero par de unos y la
entrada actual y la anterior son ambas igual a cero.
a) Se puede disear como mquina de Mealy, de Moore, o ambas? Justifica la respuesta.
b) Dibuja el diagrama de estados.
NOTA: No haber recibido ningn uno se considerar distinto a haber recibido un nmero
par de unos.
c)

Disear un sistema combinacional de n entradas que da salida % 1 slo cuando recibe


un nmero impar de unos por ellas y las dos ltimas (xn.1 y xn.2) son iguales a cero.
Dar las tablas de verdad que consideres necesarias e implementar con los mdulos o
puertas que prefieras.

Solucin:
a) Puesto que segn el enunciado la salida depende de la entrada actual entonces es necesario disearlo como mquina de Mealy.
b) El diagrama consta de 4 estados que codifican la siguiente informacin:
S0: Estado inicial. No se ha recibido ningun uno.
S1: Se ha recibido un nmero impar de unos, no tiene por qu ser consecutivos.
S2: Se ha recibido un nmero par de unos, no tiene por qu ser consecutivos.

90

Problemas de fundamentos y estructura de computadores

S3: Se ha recibido un nmero par de unos y el ltimo bit recibido es un cero.

c)

Para resolverlo hay que construir una red iterativa. El bit que se transmite de una celda a
otra codifica si en las celdas de ndice menor se ha recibido un nmero impar de unos en
total.
C

Significado

Ninguno o nmero par de unos

Nmero impar de unos

Las penltima celda (con ndice n . 1) adems debe transmitir a la ltima un bit
P % X(n . 1) para que la ltima celda (con ndice n) decida si la salida es cero o uno.

La celda genrica tendr la siguiente tabla de verdad:


X(K)

C(K)

C(K ! 1)

C(k ! 1) es un puerta XOR.


Para dar salida 1 se debe cumplir: (X(n) % 0) p (P % 0) p (C(n) % 1). Esta condicin se puede implementar con una puerta AND con dos entradas negadas.

Captulo 3 Sistemas secuenciales

91

Aunque este ltimo apartado pertenece a circuitos combinacionales ha sido incluido


en este ejercicio para mostrar cmo un autmata finito y una red iterativa sencilla guardan muchos puntos en comn. La informacin que una celda transmite a su izquierda
resume la informacin recibida por el sistema en las celdas de su derecha. Esta es precisamente la definicin de estado, con la diferencia fundamental de que el estado resume la
informacin recibida anteriormente, es decir en el tiempo, no en el espacio.
PROBLEMA 7
Sea un sistema secuencial S1 que da salida Z1 % 1 si los cuatro ltimos bits que ha recibido
son 1001.
Sea un sistema secuencial S2 que da salida Z2 % 0 si los tres ltimos bits que ha recibido son 010.
Sea un sistema secuencial S3 que genera la secuencia 1 0 0 mientras su entrada valga 1.
a) Dibujar el diagrama de estados de cada uno de los sistemas.
b) Dar la tabla de transicin de estados y de salida de S2.
c)

Disear el sistema S1 y S2 usando biestables D y puertas lgicas.

NOTA: No es necesario hacer una implementacin cannica.


Solucin:
a) Siguiendo las indicaciones del apunte terico se puede obtener fcilmente el diagrama de
estados de los sistemas S1 y S2.
Para el sistema S1 se tienen 4 estados que codificaran la siguiente informacin:

S0: x(t . 3) % 0 (Estado inicial)


S1: x(t . 3) % 1
S2: x(t . 3) % 1 p x(t . 2) % 0
S3: x(t . 3) % 1 p x(t . 2) % 0 p x(t . 1) % 0

Para el sistema S2 se tendra los siguientes 3 estados:


S0: x(t . 2) % 1 (Estado inicial)
S1: x(t . 2) % 0
S2: x(t . 2) % 0 p x(t . 1) % 1

92

Problemas de fundamentos y estructura de computadores

Para el sistema S3 es un generador. Su diagrama de estados es el de un contador, en


este caso mdulo 3.

b) Las tablas de transicin y salida de S2 se pueden juntar en una nica tabla, pues S2 es una
mquina de Mealy por lo que tanto el prximo estado como la salida en un instante dado
dependen del estado actual y de la entrada en dicho instante. La tabla ser entonces:
Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

Z0

0
0
0
0

0
0
1
1

0
1
0
1

0
0
0
X

1
1
1
X

1
0
0
X

1
1
1
1

0
0
1
1

0
1
0
1

0
1
0
X

0
0
0
X

1
1
1
X

Captulo 3 Sistemas secuenciales

c)

93

Utilizando biestables D se pueden implementar los sistemas S1 y S2 sin conocer el diagrama de estados, simplemente almacenando las 3 ltimas entradas para el caso de S1 y las
dos ltimas para S2. El resultado es:

PROBLEMA 8
Sea un reconocedor de dgitos codificados en BCD tal que los bits llegan en serie (es decir,
uno tras otro) comenzando por el menos significativo.
a) Especificarlo mediante un diagrama de estados, diciendo si se hace como mquina de
Moore o de Mealy.
b) Disear el sistema, usando biestables D y puertas de un nico tipo sin recurrir al diagrama de estado.
Solucin:
El BCD es un cdigo de 4 bits. Por tanto, hasta que no se reciben 4 bits seguidos no se considera un nuevo nmero.
Puesto que los bits llegan al sistema comenzando por el menos significativo se pueden dar
dos casos distintos:
Si el primer bit que llega es un 0 o un 1 y despus un 0:
Entonces para que la salida sea 1 debe llegar a continuacin:
o bien un 0 y luego un 0 o 1
o bien 1 y luego 0.
Si el primer bit que llega es un 0 o un 1 y despus un 1.
Entonces para que la salida sea 1 debe llegar a continuacin un 0 o un 1 y luego
un 0.

94

Problemas de fundamentos y estructura de computadores

En resumen, el diagrama de estados resultante es:

Respecto a la implementacin, dado que los biestables D aaden un retardo de un ciclo, se


puede disear un sistema que reconozca cundo los 4 ltimos bits recibidos por el sistema
pertenecen al cdigo BCD, teniendo en cuenta las siguientes consideraciones:
Puesto que la secuencia comienza por el menos significativo el nmero en BCD N formado por la sucesin de 4 bits es (X(t)X(t . 1)X(t . 2)X(t . 3))BCD.
La Suma de Productos Cannica que determina si N es BCD es:
f (X(t), X(t . 1), X(t . 2), X(t . 3)) % Gm(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

La Suma de Productos ms simplificada es


f (X(t), X(t . 1), X(t . 2), X(t . 3)) % X(t) ! X(t . 2)X(t . 1)
Puesto que la salida depende slo de los ltimos bits almacenados, se puede implementar
con una serie de biestables D del siguiente modo:

Captulo 3 Sistemas secuenciales

95

Como se indic al comienzo del problema, hasta que no se reciben 4 bits seguidos no se
considera un nuevo nmero. Sin embargo, la salida del diseo propuesto tomara valor 1 tras
una secuencia de 4 ceros, en el momento en el que recibiera el siguiente bit, tanto si es cero
como si es uno. O sea que la salida toma valor 1 pero el nuevo nmero an no se ha formado,
de hecho slo ha recibido el bit menos significativo.
Para evitar esto debemos aadir al sistema generado un contador mdulo 4 de modo que
cuando llegue al final de la cuenta capacite la salida.
Llamando S al sistema diseado arriba, el sistema completo sera:

Como ltima nota, la segunda puerta NAND es necesaria para construir un negador que
anule el efecto de la primera NAND, ya que segn el enunciado slo permite el uso de un tipo
de puertas y S est implementado con NANDs.
PROBLEMA 9
Dado el siguiente diagrama de estados:
Dibujar de forma esquemtica su implementacin cannica.
Implementar dicho sistema usando un contador y los mdulos combinacionales necesarios.
Implementar dicho sistema usando biestables D y multiplexores 4 a 1.

96

Problemas de fundamentos y estructura de computadores

Solucin:
Las tablas de transicin de estados y de salida se pueden agrupar en una sola pues es una
mquina de Mealy. Por tanto el esquema de su implementacin cannica es:

Para implementar con un contador con carga en paralelo hay que analizar el diagrama de
estados; i.e., obtener su especificacin en forma de tabla de transicin de estados y de salidas.
En la tabla se aade una columna L para indicar en qu transiciones se debe cargar la entrada
del contador. Se supone adems que C % 1 de modo que cuando L % 0 el contador se incrementa.
Entrada

E.A.

P.E.

Salida

Contador

Q1

Q0

D1

D0

E1

E0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
1
0

1
0
1
0

1
1
0
0

0
0
0
0

X
X
X
X

X
X
X
X

1
1
1
1

0
0
1
1

0
1
0
1

1
1
1
1

0
0
0
0

0
1
0
1

1
X
1
1

1
1
1
1

0
0
0
0

Captulo 3 Sistemas secuenciales

La implementacin basada en contador es:

La implementacin cannica con MUX de 4 a 1 es:

97

98

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Sea un reconocedor de secuencias que da salida % 1 en alguno de estos dos casos:
x(t . 2) % 1 p x(t . 1) % 0 p x(t) % 0
x(t . 2) % 0 p x(t . 1) % 1 p x(t) % 1
a) Dibujar el diagrama de estados.
b) Realizar su implementacin cannica.
Solucin:
a) Este problema, que en apariencia es similar a otros reconocedores de dos secuencias, y
que a priori no parece entraar una excesiva dificultad, resulta complejo porque las secuencias que se desea reconocer se pueden solapar. Es decir, si el bit que recibe el sistema en el instante actual es un 0 puede darse el caso de que dicho cero, pasados dos flancos de reloj, sirva para reconocer la segunda secuencia del enunciado.
De este modo son necesarios 5 estados que codifican la siguiente informacin:
S0: Estado inicial de la mquina, an no ha recibido ningn bit.
S1: x(t . 2) % 0
S2: x(t . 2) % 0 p x(t . 1) % 1
S3: x(t . 2) % 1
S4: x(t . 2) % 1 p x(t . 1) % 0
El diagrama de estados y las tablas de transicin de estados y de salida a la que da
lugar son:

Captulo 3 Sistemas secuenciales

Entrada

Est. actual

Prximo est.

99

Salida

Q2

Q1

Q0

D2

D1

D0

0
0
0
0

0
0
0
0

0
0
1
1

0
1
0
1

0
0
1
1

0
0
0
0

1
1
0
0

0
0
0
0

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

1
X
X
X

0
X
X
X

1
X
X
X

1
X
X
X

1
1
1
1

0
0
0
0

0
0
1
1

0
1
0
1

0
0
0
0

1
1
1
1

1
0
1
1

0
0
1
0

1
1
1
1

1
1
1
1

0
0
1
1

0
1
0
1

0
X
X
X

1
X
X
X

0
X
X
X

0
X
X
X

b) Para la implementacin cannica utilizamos un decodificador de 4 a 16 y puertas OR.

100

Problemas de fundamentos y estructura de computadores

PROBLEMA 11
Sea un reconocedor de secuencias cuya salida % 1 cuando la entrada actual es 1, antes de
ella, en algn momento, ha habido un nmero cualquiera de ceros (incluso ninguno) y antes de dicha secuencia hubo un uno. Por ejemplo:
Entrada:

1...

Salida:

1...

a) Dibujar el diagrama de estados.


b) Realizar su implementacin cannica.
Solucin:
a) El diagrama de estados ms sencillo es el siguiente:
S0: Ha habido un nmero cualquiera de ceros o ninguno (estado inicial).
S1: Ha aparecido el primer uno.

b) La tabla de transicin de estados y de salidas es por tanto:


X

0
0
0
0

0
1
0
1

0
1
1
1

0
0
0
1

Es fcil ver que la EC del prximo estado D % X ! Q y que la EC de la salida


Z % X . Q luego la implementacin cannica es:

Captulo 3 Sistemas secuenciales

101

PROBLEMA 12
Implementar el siguiente diagrama de estados en el que la salida % estado actual.
a) Mediante una implementacin cannica usando un descodificador y puertas.
b) Utilizando un contador mdulo 8 con carga en paralelo y puertas NAND.

Solucin:
La siguiente tabla representa la entrada (X), el estado actual (Q2, Q1, Q0) y el prximo estado
(D2, D1, D0). La salida, segn el enunciado es igual al estado actual. Adems para resolver el
apartado b) se ampla con las entradas del contador: L % Load, C % Incrementar cuenta,
E2E1E0 % Entradas en paralelo.
Entrada

Est. actual

Prximo est.

Contador

Q2

Q1

Q0

D2

D1

D0

E2

E1

E0

0
0
0
0

0
0
0
0

0
0
1
1

0
1
0
1

0
0
0
1

0
1
1
0

1
0
1
0

0
0
0
0

1
1
1
1

X
X
X
X

X
X
X
X

X
X
X
X

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

0
X
X
X

0
X
X
X

0
X
X
X

1
X
X
X

X
X
X
X

0
X
X
X

0
X
X
X

0
X
X
X

1
1
1
1

0
0
0
0

0
0
1
1

0
1
0
1

0
0
0
0

1
1
1
0

0
1
0
1

1
1
0
1

X
X
0
X

0
0
X
0

1
1
X
0

0
1
X
1

1
1
1
1

1
1
1
1

0
0
1
1

0
1
0
1

1
X
X
X

0
X
X
X

0
X
X
X

0
X
X
X

0
X
X
X

X
X
X
X

X
X
X
X

X
X
X
X

102

Problemas de fundamentos y estructura de computadores

a) La implementacin cannica es la siguiente:

b) Es necesario calcular la suma de productos simplificada para las seales L, C, E2, E1


y E0.

Captulo 3 Sistemas secuenciales

103

PROBLEMA 13
Dado el sistema secuencial implementado en la figura, se pide responder razonadamente a
las siguientes cuestiones:
a) Dar el diagrama de estados.
b) Dar la E.C. ms simplificada posible de la seal LOAD y CONTAR que usaramos si
quisisemos hacer una implementacin con contador. Sera conveniente usar un contador para implementar el sistema?

104

Problemas de fundamentos y estructura de computadores

c)

Suponer que hay un biestable ms (D3), a cuya entrada conectamos X y cuya salida se
une con la lnea de direccin E2 de la ROM. Cuntos estados tendr el sistema?, es
una mquina de Mealy o de Moore?

Solucin:
La tabla de verdad es:
Entrada

E.A.

P.E.

Salida

Contador

D1

D0

Q1

Q0

0
0
0
0

0
0
1
1

0
1
0
1

0
1
1
0

1
0
0
0

0
0
1
1

0
0
0
0

1
1
0
1

1
1
1
1

0
0
1
1

0
1
0
1

0
1
1
1

0
0
1
1

0
1
1
0

0
0
0
0

0
1
1
0

Captulo 3 Sistemas secuenciales

105

Aunque la EC de la seal Contar (C) es algo compleja, L % 0 por lo que no hay que generar las seales de entrada la contador. En conclusin la alternativa de una implementacin con
es aceptable.

Si se aade el biestable D3 como indica el enunciado entonces habra 3 bits para codificar
el estado y por tanto 8 estados. El bit ms significativo del PE % X. Ahora Z(t) no depende de
X(t), slo del Estado Actual EA(t) y por tanto se convertira en una mquina de Moore.
PROBLEMA 14
Obtener la tabla de transicin de estados y de salida del siguiente sistema secuencial y
realizar una implementacin cannica usando slo multiplexores de 4 a 1, negadores y
biestables.

Solucin:
Lo ms importante a la hora de analizar un sistema secuencial es escribir correctamente la
cabecera de la tabla de verdad de transicin de estados y de salidas. Mirando la red de puertas
NOR parece, salvo posteriores simplificaciones, que Z(t) depende de X(t). Por tanto se tratara
de una mquina de Mealy y podemos juntar ambas tablas en una sola. Por ltimo, puesto que
hay dos biestables el estado se codifica con dos bits.

106

Problemas de fundamentos y estructura de computadores

En definitiva, la cabecera sera:


Entrada
X

Estado Actual
Q1

Prximo Estado

Q0

D1

D0

Salida
Z

Para analizar el sistema combinacional que da lugar a la salida y al prximo estado conviene en primer lugar trabajar sobre el circuito equivalente de la figura, donde se han transformado las puertas NOR de los niveles impares por sus equivalentes AND con entradas negadas. Adems se han eliminado los biestables para mayor claridad.
Aplicando la ley de Moore para la suma, x ! y % x . y, se puede sustituir algunas puertas
NOR por su equivalente AND con entradas negadas de modo que en un mismo cable se enfrenten dos negadores y por tanto se anulen. De este modo la red resultante queda:

Calculando los puntos Ti obtenemos:


T1 % X . Q1
T2 % Q1 . Q0
T3 % X ! T1 % X ! X . Q1 % X ! Q1
T4 % T1 ! T2 % X . Q1 ! Q1 . Q0
T5 % Q0 ! X
Z % T3 . T4 % (X ! Q1)X . Q1 % X . Q1
D1 % X . T4 % X(X . Q1 ! Q1 . Q0) % X . Q1(1 ! Q0) % X . Q1
D0 % T4 . T5 % (X . Q1 ! Q1 . Q0)(Q0 ! X) % X . Q1 . Q0 ! X . Q1 . Q0

Captulo 3 Sistemas secuenciales

107

La tabla de verdad queda:


Entrada

E.A.

P.E.

Salida

Q1

Q0

D1

D0

0
0
0
0

0
0
1
1

0
1
0
1

1
1
0
0

0
1
0
0

1
1
0
0

1
1
1
1

0
0
1
1

0
1
0
1

0
0
0
0

1
0
0
0

0
0
0
0

Para la implementacin con MUX de 4 a 1 se eligen las variables de control X y Q1.

PROBLEMA 15
Disear una pila de 4 bits, sncrona y con seal de Clear. La pila se controla con una seal
como se puede apreciar en la figura.
En una pila el primer bit que se recibe es el ltimo que se genera, el segundo bit que se
recibe es el penltimo que se genera y as sucesivamente hasta el ltimo bit que se recibe,
que es el primero en generarse.

Solucin:
Se trata de modificar el diseo de un registro de desplazamiento para que se ajuste a la especificacin.

108

Problemas de fundamentos y estructura de computadores

Suponemos que cuando la pila est vaca contiene 4 ceros.


Por ltimo, el diseo no incluye la seal de CLEAR para resultar ms claro. Todos los
biestables deben recibir dicha seal, que generalmente es asncrona y se activa en baja.
La seal de reloj (CK), como es habitual, se conecta en la marca triangular de los biestables. Todos deben funcionar con la misma CK.
El diseo finalmente es:

PROBLEMA 16
Disear un registro de 4 bits con entrada y salida en paralelo y las siguientes funciones:
C1

C0

Q(t ! 1)

0
0
1
1

0
1
0
1

Q(t)
2 # Q(t)
4 # Q(t)
E(t)

AYUDA: Para multiplicar por dos un nmero binario desplazamos hacia la izquierda todos
los elementos una posicin, introduciendo un cero por la derecha.
Para multiplicar por cuatro hay que desplazar dos posiciones e introducir dos ceros.

Captulo 3 Sistemas secuenciales

109

Solucin:

PROBLEMA 17
Disear el control de un brazo robot que ponga tapones a presin en botellas.
Las botellas se desplazan sobre una cinta, en cajas 3 # 3.
El robot realiza el siguiente trayecto sobre una caja:

n % El brazo se mueve una posicin hacia abajo


p % El brazo se mueve una posicin a la izquierda
m % El brazo se mueve una posicin hacia arriba
% El brazo se mueve dos posiciones a la derecha y la cinta avanza hasta la prxima caja
de botellas.
Para ello utilizaremos un contador ms las puertas y/o mdulos combinacionales que
creamos convenientes.
AYUDA: Considerar los cuatro movimientos como la salida del sistema secuencial que
implementamos con el contador y que sern entradas del sistema del brazo y la cinta (y de
los cuales NO nos piden nada).

110

Problemas de fundamentos y estructura de computadores

Solucin:
Necesitamos un contador de 1 a 9. Para construirlo utilizaremos un contador mdulo 16 modificndolo para que comience en 1 y acabe en 9.
Por otro lado mi sistema produce 4 salidas diferentes {m, n, p, }, por lo que necesitamos 2 bits para codificarlas y un sistema combinacional que las implemente.
Salida

Estado en el que
se produce

m
n
p

4, 5
1, 2, 7, 8
3, 6
9

Codificacin
0
0
1
1

0
1
0
1

Utilizando una puerta AND para truncar la cuenta y un descodificador 4 a 16 y puertas OR


para generar la salida Z % [Z1, Z0], que codifica la informacin que recibe tanto el brazo como
la cinta, el diseo quedara como muestra la figura.

PROBLEMA 18
Disear un sistema secuencial que recibe bits en serie con cada flanco de reloj y da salida % 1 cuando el nmero binario formado por los 4 ltimos bits que han entrado, siendo
x(t) el bit ms significativo, es mltiplo del 3, del 5 o del 7. El sistema tiene 2 entradas
adicionales (S1 y S0) para seleccionar de cul debe ser mltiplo.
Usar un descodificador de 4 entradas y un MUX de 4 a 1, puertas y los biestables D
que consideres necesarios.
AYUDA: No es necesario hacer ningn diagrama de estados.

Captulo 3 Sistemas secuenciales

111

Solucin:
El sistema se compone de los siguientes mdulos. Un registro con carga en serie y salida en
paralelo de 4 bits y un subsistema combinacional que recibe los 4 ltimos bits recibidos y una
entrada de dos bits que codifica el divisor que queremos probar del siguiente modo:
Mltiplo:

0 0

0 1

1 0

Divisor:

Para el registro se utilizan biestables D y para el subsistema combinacional se utiliza el


descodificador y el MUX de 4 a 1. El descodificador recibe los 4 ltimos bits que forman un
nmero binario entre 0 y 15. Una puerta OR agrupa todas las lneas de salida del descodificador mltiplo de 3. Igualmente otras dos puertas OR agrupan las lneas mltiplo de 5 y de 7.
Finalmente cada una de estas puertas OR se conecta al MUX de 4 a 1, en la entrada de datos
adecuada segn la codificacin de los divisores. El resultado es:

112

Problemas de fundamentos y estructura de computadores

PROBLEMA 19
Disear un generador de secuencias con el siguiente funcionamiento:
Mientras la entrada G sea igual a 1 se genera cclicamente la secuencia de 4 bits definida por el usuario, {u3, u2, u1, u0}; si G es igual a 0 la secuencia genera continuamente el bit
en el que se qued.
Dar una descripcin modular del generador y especificar mediante un diagrama de estados los elementos secuenciales que aparezcan.

Solucin:
El sistema se compone de un contador mdulo 4 que se avanza cuando la seal G % 1 y se
detiene en un estado cuando G % 0. La salida del contador coincide con el estado en el que se
encuentra. Dicho estado acta como seales de seleccin sobre un multiplexor al que se conectan las entradas de usuario. Se ha supuesto que el primer bit en generarse es u3.
El resultado es:

Captulo 3 Sistemas secuenciales

113

PROBLEMA 20
La torre de control de un aeropuerto rastrea una circunferencia de radio 60 millas cada
segundo. Cuando detecta un avin por debajo de los 4000 pies le enva un cdigo por radio
indicndole el sector en el que se encuentra (todos los bits se envan al mismo tiempo, no
uno tras otro).

El sistema de aterrizaje del avin dispone de un dispositivo que detecta cundo se pasa
de un sector a otro y genera mensajes, segn sea la transicin, siguiendo la tabla.
Mensaje

Transicin de sectores

Acercamiento

Del 0 al 1 y del 1 al 2

Alejamiento

Del 3 al 1 y al 2, del 2 al 1 y del 1 al 0

Aproximacin final

Del 2 al 3

Aproximacin de emergencia

Del 1 al 3

Aproximacin negada

Del 0 al 3

Salir de va area

Del 3 al 2

Disear el sistema que genera la seal de cambio de sector y los mensajes en funcin
de los cdigos que va recibiendo de la torre de control usando biestables D y elementos
combinacionales. El mensaje debe permanecer hasta que se produzca uno nuevo. Explica
claramente la codificacin realizada.
NOTA: No es necesario hacer diagrama de estados.

114

Problemas de fundamentos y estructura de computadores

Solucin:
En primer lugar se codifican los diferentes mensajes en binario. Necesitamos 3 bits. Una posible codificacin es:
000 %

Acercamiento

001 %

Alejamiento

010 %

Aprox. final

011 %

Aprox. de emergencia

100 %

Aprox. negada

101 %

Salir de la va area

Respecto a los sectores, al haber 4 seran necesarios dos bits. La codificacin es directamente en binario.
El sistema debe almacenar continuamente el penltimo mensaje recibido para compararlo
con el ltimo y detectar un cambio (Seal C) as como el mensaje que se debe generar en
dicho caso. Para almacenar el sector en el que se encuentra se deben utilizar dos biestables D.
Finalmente, para que el ltimo mensaje est activo hasta que se genere uno nuevo, es decir,
hasta que haya una nueva seal C, se debe almacenar tambin. Puesto que consta de 3 bits
necesitaremos 3 biestables. Un descodificador activa una de las 6 luces del cuadro de controles del avin segn el cdigo que recibe.
El diseo final es el siguiente:

Captulo 3 Sistemas secuenciales

115

El sistema combinacional utilizado viene especificado por la siguiente tabla de verdad:


Sector antes
C1(T . 1) C0(T . 1)

Sector ahora

Mensaje

Cambio

C1(T)

C0(T)

M2

M1

M0

0
0
0
0

0
0
0
0

0
0
1
1

0
1
0
1

X
0
X
1

X
0
X
0

X
0
X
0

0
1
X
1

0
0
0
0

1
1
1
1

0
0
1
1

0
1
0
1

0
X
0
0

0
X
0
1

1
X
0
1

1
0
1
1

1
1
1
1

0
0
0
0

0
0
1
1

0
1
0
1

X
0
X
0

X
0
X
1

X
1
X
0

X
1
0
1

1
1
1
1

1
1
1
1

0
0
1
1

0
1
0
1

0
0
1
X

0
0
0
X

1
1
1
X

1
1
1
0

3.8 Problemas propuestos


PROBLEMA 1
Queremos disear un juego de azar compuesto por 2 botones (J1 y J0) y una pantalla que se
ilumina cuando el jugador gana.
Tiene el aspecto externo de la figura y funciona del siguiente modo:
Apretando J1 ponemos en marcha un contador que genera la secuencia {2, 3, 6, 7} de
forma cclica y tiene una frecuencia de reloj de 100 Hz.
Apretando J0 ponemos en marcha otro contador. Este genera la secuencia {1, 3, 7, 2, 5, 6},
tambin de forma cclica, y su frecuencia es de 250 Hz.

Si al soltar los dos botones coinciden los nmeros de sendos contadores se iluminar la
pantalla y el jugador habr ganado.
Hacer un diseo modular del aparato.
Dibujar el diagrama de estados de ambos contadores razonando si se trata de mquinas de
Mealy o de Moore.

116

Problemas de fundamentos y estructura de computadores

Implementar el Sistema Combinacional que provoca la salida.


No se recomienda hacer una tabla de verdad!!
PROBLEMA 2
Dado el siguiente sistema secuencial:

Si X(t . 2) % b X(t . 1) % b X(t) % b, salida % 1,


Si X(t . 2) % b X(t . 1) % b X(t) % a, salida % 2,
Si X(t . 2) % b X(t . 1) % a X(t) % a, salida % 3,
En cualquier otro caso, salida % 0.

Se pide:
Dibujar el diagrama de estados de la mquina.
Escribir la tabla de transicin de estados y la tabla de verdad.
Realizar una implementacin cannica usando descodificadores y puertas.
PROBLEMA 3
Disear un sistema secuencial cuya salida sea:
Igual a la entrada bit a bit hasta el instante en que hayan entrado dos unos consecutivos.
A partir de ese momento la salida ser el negado de la entrada hasta que el sistema
reciba dos ceros consecutivos.
Desde ese momento la salida volver a ser igual a la entrada.
Ejemplo:

Entrada:

1...

Salida:

0...

Se pide:
a) Dibujar el diagrama de estados y la tabla de transicin del sistema.
b) Realizar una implementacin cannica usando biestables D, descodificadores y puertas R.
c)

Dar la E.C. ms simplificada posible de la seal LOAD que usaramos si quisisemos


hacer una implementacin con contador. Merece la pena usar un contador para implementar el sistema? (Razona la respuesta.)

NOTA: Se valorar ms un diagrama de estados minimizado.


PROBLEMA 4
Disear un registro de 3 bits con capacidad de desplazamiento a la izquierda, y carga en paralelo usando multiplexores y biestables. El registro tendr una entrada de control de 1 bit que
indicar la funcin a realizar. Adems tendr entrada para la carga en serie y paralelo.
PROBLEMA 5
Sea un sistema secuencial S1 que da salida Z1 % 1 si los cuatro ltimos bits que han entrado
son 1001.

Captulo 3 Sistemas secuenciales

117

Sea un sistema secuencial S2 que da salida Z2 % 0 si los tres ltimos bits que han entrado
son 010.
Sea un sistema secuencial S3 que genera la secuencia 1 0 0 mientras su entrada est a 1.
a) Dibujar el diagrama de estados de cada uno de los sistemas secuenciales
b) Dar la tabla de transicin de estados y de salida de S2.
c)

Disear el sistema S1 y S2 usando biestables D y las puertas lgicas que necesites.

PROBLEMA 6
Implementar el diagrama de estados dado utilizando un contador y los mdulos combinacionales que sean necesarios. La salida es igual al estado actual.

PROBLEMA 7
Disear un reconocedor de secuencias tal que la salida es:
Z1 % 1 si [x(t . 3), x(t . 2), x(t . 1), x(t)] es un nmero en notacin C2 con valor absoluto mayor o igual que 3.
Z0 % 1 si [x(t . 3), x(t . 2), x(t . 1), x(t)] es un nmero que representa un cdigo
BCD.
Z1 % Z0 % 0 en cualquier otro caso.
PROBLEMA 8
Disear un sistema secuencial que admita bits en serie y da salida % 1 slo cuando el nmero
binario formado por los cuatro ltimos bits recibidos, {x(t), x(t . 1), x(t . 2), x(t . 3)}, siendo x(t) el bit ms significativo, sea igual a 0, 4, 8, 10, 13 o 15. Utilizar nicamente biestables
D, puertas NOT (si son necesarias) y MUXs de 4 a 1.
PROBLEMA 9
Especificar mediante un diagrama de estados un sistema secuencial que admita de salida
Z % 1 slo cuando x(t) % 1 p x(t . 1) % 0 p x(t . 2) % 1 p x(t . 3) % 1.

118

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Disear un banco de 32 registros de 8 bits tal que se pueda escribir en uno de ellos y leer de
dos distintos en el mismo ciclo de reloj.
Seales:

SE: Seleccin de escritura.


SL1: Seleccin de Lectura del primer registro.
SL2: Seleccin de Lectura del segundo registro.
D in: Datos de entrada.
Dout 1: Dato de salida del primer registro.
Dout 2: Dato de salida del segundo registro.
E: Enable (capacitacin).
Escribir: Seal de escritura.

Una vez que se han estudiado y comprendido los distintos mdulos digitales y secuenciales, el
lector ya debe tener asimilados los conceptos fundamentales de sistemas digitales y su diseo
a travs de una relacin entre las entradas y las salidas del sistema. Concibiendo el diseo de
un procesador, o incluso un computador completo, como un conjunto de sistemas digitales
conectados entre s, el paso previo al diseo de un computador sencillo es el diseo algortmico de sistemas digitales.

4.1 Esquema general de un sistema diseado


algortmicamente
A la hora de realizar el diseo algortmico de un sistema digital debemos introducir dos conceptos:
Ruta de datos.
Unidad de control.
La ruta de datos o procesador del sistema se encarga de procesar la informacin de entrada y proporcionar la informacin de salida. Para generar esta informacin de salida debe seguir los pasos que la unidad de control le indique. Para ello la unidad de control generar las
seales necesarias para que los datos se procesen correctamente y se las enviar a la ruta de
datos. El diseo algortmico de un sistema consiste en, partiendo de una especificacin del
sistema en forma de algoritmo o pseudocdigo, obtener la ruta de datos y la unidad de control
que realizan la funcionalidad descrita por el algoritmo.
El esquema general de un sistema diseado algortmicamente aparece en la figura de la
pgina siguiente.

120

Problemas de fundamentos y estructura de computadores

La ruta de datos estar compuesta por un conjunto de mdulos digitales combinacionales


y secuenciales que procesan la informacin. Estos mdulos sern los utilizados y diseados en
los captulos anteriores:

Multiplexores y demultiplexores.
Codificadores y decodificadores.
Puertas lgicas y sistemas combinacionales.
Comparadores.
Registros de carga y/o desplazamiento.
Contadores.
Sumadores.
Etctera.
Asociados a todos ellos existen generalmente un conjunto de seales que los controlan.
Estas seales las genera la unidad de control en cada uno de los pasos que debe seguir la ruta
de datos. El sistema seguir una serie de pasos para cumplir el algoritmo que sern marcados
por esta unidad de control, que ser por tanto un sistema secuencial en el que cada estado
corresponde con uno de los pasos necesarios para que se resuelva el algoritmo y en el que el
proceso de diseo ser el tpico asociado a un sistema secuencial. De igual forma la unidad de
control proporcionar a la ruta de datos las seales de carga, desplazamiento, seleccin, etc.,
que correspondan en cada estado.

Captulo 4 Introduccin al diseo algortmico de sistemas

4.2 Proceso de diseo

4.3 Problemas resueltos


PROBLEMA 1
Dados el siguiente algoritmo y la siguiente ruta de datos (U.P.) que lo implementa:
A p dato 1
B p dato 2
If (A % B) then
A p (2*A) ! (B/2)
Else
A%A

121

122

Problemas de fundamentos y estructura de computadores

Se pide dibujar el diagrama de estados de la U.C. y dar la tabla de verdad con los valores
que toman las seales de control en cada estado.
La U.C. genera, adems de las seales indicadas, una seal de FIN.
AYUDA: Funcionamiento de los registros.
C1
0
0
1
1

C0
0
1
0
1

Funcin
Cargar
A
@
Nada

Solucin:
A la hora de saber cuntos estados tiene la unidad de control, lo primero que tenemos que
identificar son los registros de datos ya que son ellos los que van a marcar el nmero de ciclos
del proceso. Cada vez que un dato llega a un registro se produce un almacenamiento con la
llegada del reloj, o lo que es lo mismo hasta que no haya un ciclo nuevo no puede atravesar el
registro.
Hay que decidir cmo se implementa la unidad de control, lo habitual es hacerlo como
una mquina de Moore en el que cada estado tenga sus correspondientes valores de salida y
en ocasiones se pueden establecer estados en los que realmente slo se hagan clculos combinacionales y obtencin de condiciones.
Debemos por tanto establecer el nmero de estados y para ello construimos primero el
diagrama de flujo el algoritmo. De l prcticamente obtenemos el diagrama de estados. En
todos los problemas supondremos que existe una seal de inicio que llevara al sistema al
estado inicial, aunque no la representemos en todos los diagramas de estado para obtener diagramas ms claros y didcticos.

Captulo 4 Introduccin al diseo algortmico de sistemas

123

Tambin es conveniente identificar los estados y dar una breve explicacin de la actuacin
de la ruta de datos. En este caso los estados son 4 segn la siguiente tabla.
Estado 0 (S0)

Carga de datos

Estado 1 (S1)

Comparacin

Estado 2 (S2)

Clculo de la operacin

Estado 3 (S3)

Fin

El esquema de conexin entre la ruta de datos y la unidad de control ser:

124

Problemas de fundamentos y estructura de computadores

Y el diagrama de estados con la seal de inicio explcita:

Cada vez que se quiera comenzar se debe pasar la seal de borrado (Clear) de los registros
a 0 y luego a 1 para regresar al estado 0. La correspondencia de los estados con las salidas
ser:
Estado

MUX

C1A

C0A

C1B

COB

Fin

Una opcin interesante sera hacer la que la seal de Clear coincida con la de Inicio, de
esta forma podramos reducir el tamao de las tablas de transicin de estados ya que, al ser
asncrona no aparecera explcitamente en el diagrama.
PROBLEMA 2
Dado el siguiente algoritmo:
Cont p 8;
A p dato;
Repeat
B p Cont * 2;
Decrementar Cont;
Until B n A

Captulo 4 Introduccin al diseo algortmico de sistemas

125

Se pide:
Disear la unidad de proceso usando un sumador/restador y multiplexores como nicos
elementos combinacionales (ver grfico). Suponer nmeros de 8 bits en complemento a 2.
Dibujar el diagrama de estados de la unidad de control y explicar qu seales de control se
activaran en cada estado.
Solucin:
La principal dificultad radica en el diseo de la ruta de datos con la restriccin impuesta por el
enunciado. Los elementos hardware que compondrn la misma son:
3 Registros para Almacenar A, B y Cont (es un registro normal de 8 bits).
1 sumador/restador para hacer las operaciones de Cont*2 (Cont ! Cont), Decrementar Cont (Cont . 1) y la generacin de la seal de comparacin. Para esta seal se
realiza la operacin B . A y si el resultado empieza por 0 (R7 % 0) significar que la
resta es positiva y que por tanto B n A que es la condicin que el algoritmo debe
evaluar.

126

Problemas de fundamentos y estructura de computadores

Traduciendo el algoritmo al diagrama de flujo obtendremos fcilmente el diagrama de estados:

Captulo 4 Introduccin al diseo algortmico de sistemas

127

Y la tabla de salidas ser:


Estado

CB

CA

CC

M3

M2

M1

M0

Sumar/Restar

Fin

S0

S1

S2

S3

S4

0
1

PROBLEMA 3
La unidad de proceso dada implementa, entre otros, el siguiente algoritmo:
while B a 0 do
begin
B p A ! 1;
A p 2 . A;
B p B/2;
A p A S B;
end;

Los registros A y B estn inicializados a un valor dado antes de empezar a ejecutarse el


algoritmo.
C2

C1 C0

0
0
0

0
0
1

0
1
0

Op.

C2

C1

C0

Op.

A!1
A!B
A@

0
1
1

1
0
0

0
0
1

BA
C2(A)
A SB

Se pide:
a) Disear detalladamente la A.L.U.
b) Disear la unidad de control (i.e.: dar un diagrama de flujo y una tabla de salidas).

128

Problemas de fundamentos y estructura de computadores

Solucin:
a) La unidad aritmtico-lgica debe seguir la tabla del enunciado. La parte ms importante
es la utilizacin del sumador. En el diseo de la figura se utiliza el sumador para realizar
3 operaciones:
A ! 1.
A ! B.
C2(A): Para obtener el complemento a 2 invertimos bit a bit y sumamos 1.

Para obtener la seales de control de los multiplexores de entrada al sumador, slo


debemos simplificarlos de acuerdo a la tabla:
C2 C1

C0 MA MB

0
0
0
0
1
1
1
1

0
1
0
1
0
1
0
1

0
0
1
1
0
0
1
1

0
0
X
1
X
X
X
X

1
0
X
1
X
X
X
X

Captulo 4 Introduccin al diseo algortmico de sistemas

b) Comencemos por el diagrama de flujo, traduciendo el algoritmo:

Las seales de control se pueden representar de la siguiente forma:

129

130

Problemas de fundamentos y estructura de computadores

Y la tabla de salidas ser:


Estado

LB

LA

C2

C1

C0

Fin

S0

S1

S2

S3

S4

S5

S6

PROBLEMA 4
Disear una U.C. adecuada para que la U.P. de la figura ejecute el siguiente algoritmo:
RegA: % A;
RegB: % B;
Repeat
A % 2*A;
B: % B/2;
if A % B then B: % A ! B;
Until B b A
a) Realiza el diagrama de estados detallando las entradas y salidas.
b) Realiza una tabla de salidas de la U.C.
AYUDA: True es una seal de condicin, resultado de las operaciones % y b y toma
el valor 1 cuando A % B y A b B respectivamente.

Captulo 4 Introduccin al diseo algortmico de sistemas

131

Solucin:
De la ruta de datos especificada en el enunciado podemos obtener el diagrama de conexin
entre la ruta de datos y la unidad de control.

132

Problemas de fundamentos y estructura de computadores

Estado

SEL A

CA1

CA0

SEL B

CB1

CB0

ALU1

ALU0

Fin

S0

S1

S2

S3

S4

S5

PROBLEMA 5
Disear una U.P. y las conexiones a la U.C. para ejecutar el algoritmo con datos de 8 bits.
Dibuja tambin el diagrama de estados de la unidad de control indicando qu valores
toman las entradas y salidas.
si (B n A) entonces
C p 4*A
sino
C p (A ! B)/4

Captulo 4 Introduccin al diseo algortmico de sistemas

133

Solucin:
Partiendo del algoritmo necesitamos saber en primer lugar qu mdulos hardware necesitamos:
3 registros para almacenar A, B y C. Adems C debe permitir hacer desplazamientos
para poder realizar las operaciones de multiplicacin y divisin por 4 respectivamente.
Recordemos que desplazar a la derecha (0 A) es equivalente a multiplicar por 2 y que
desplazar hacia la izquierda (@ 0) da como resultado multiplicar por 2 el dato almacenado en el registro.
Un comparador para saber si B n A.
Un sumador para realizar la operacin A ! B.
A continuacin debemos conectar estos elementos.

Las seales de control y de condicin son por lo tanto:


CB: Seal de carga del registro B.
CA: Seal de carga del registro A.
CC1: Seal de control 1 del registro C.
CC0: Seal de control 0 del registro C.
GE: Seal que indica que B % A.
M: Seleccin del multiplexor.
A partir del diagrama algortmico podemos obtener casi de inmediato el diagrama de
estados.

134

Problemas de fundamentos y estructura de computadores

Captulo 4 Introduccin al diseo algortmico de sistemas

135

Y la tabla de salidas ser:


Estado

CB

CA

CC1

CC0

Fin

S0

S1

S2

S3

S4

S5

S6

S7

S8

PROBLEMA 6
Sea la U.P. de la figura. Disear la unidad de control necesaria para ejecutar el siguiente
algoritmo. Para ello realizar el diagrama de estados indicando claramente las entradas y
una tabla con las salidas en cada uno de ellos.
A: % dato1;

B: % dato2;

While A % B
B: % B . A;
If B % 0 then
A: % A/2;
End

136

Problemas de fundamentos y estructura de computadores

Solucin:

Cd.

Op. ALU

0
0
1
1

A!B
B.A
AA
Evalua B

0
1
0
1

Captulo 4 Introduccin al diseo algortmico de sistemas

137

138

Problemas de fundamentos y estructura de computadores

Estado

MA

RA

MB

RB

OP

Fin

S0

XX

S1

01

S2

01

S3

11

S4

10

S5

XX

PROBLEMA 7
Disear algortmicamente un sistema que realice operaciones sobre dos datos de 16 bits. El
sistema tendr como entrada, adems de los operandos, un cdigo que especifique cul de
las 4 operaciones fundamentales (suma, resta, multiplicacin o divisin) debe realizar. El
resultado se almacenar en un registro de resultado y el diseador dispone de mdulos de
suma/resta y multiplicacin/divisin ya implementados.
Solucin:
La especificacin del sistema en forma de bloques es la siguiente:

A partir de l podemos obtener fcilmente el algoritmo que debe manejarlo pero previamente debemos codificar las operaciones, dado que son 4 operaciones con 2 bits de cdigo de
operacin ser suficiente y podemos por ejemplo definirlo segn la tabla siguiente:
Cdigo

Operacin

00

Suma

01

Resta

10

Multiplicacin

11

Divisin

Captulo 4 Introduccin al diseo algortmico de sistemas

139

El algoritmo es inmediato:
A: % Dato 1
B: % Dato 2
OP % Cdigo de Operacin
If OP % OO then
C % A ! B;
else if OP % 01
C % A . B;
else if OP % 10
C % A*B;
else
C % A/B
end if

Con ello la ruta de datos debe tener los siguientes elementos:


2 registros de 16 bits para los operandos fuente A y B.
Un registro de 32 bits para almacenar el resultado de las operaciones. El registro debe
ser mayor ya que la operacin de multiplicacin puede generar datos mayores de 16
bits.
Un Unidad Aritmtico Lgica (ALU) que contenga al menos un sumador/restador y una
unidad de multiplicacin/divisin.
Un registro de cdigo de operacin.

140

Problemas de fundamentos y estructura de computadores

Si utilizamos el cdigo almacenado en el registro OP, podemos disear una unidad de


control ms sencilla reduciendo el nmero de estados. Las seales de control sern:
CA: seal de carga del registro RA que contiene uno de los operandos.
CB: seal de carga del registro RB que almacenar el otro operando.
CC: seal de carga del registro de resultado, en la figura RC.
COP: seal de carga del registro OP que almacena el cdigo de operacin.
En este caso el diagrama de estados es inmediato:

El estado S0 es el estado inicial y en l se cargan los datos en los registros, en el S1 se


realiza el clculo aritmtico y se almacena el resultado y S2 es un estado final en el que el
sistema permanecer estable, almacenando el resultado, mientras no se reciba una seal de
inicio para realizar otra operacin. La tabla de salidas ser por lo tanto la representada en la
tabla siguiente:
Estado

CA

CB

CC

COP

Fin

S0

S1

S2

Un aspecto interesante de este ejercicio es observar cmo un computador es al fin y al


cabo un sistema algortmico complejo. En este ejemplo se trata de un computador muy sencillo con 4 operaciones nicamente, pero que se codifican con un cdigo de operacin y unos
operandos almacenados en registros. En los temas sucesivos se ampliarn estos conceptos para disear computadores y rutas de datos ms complejas que constituyan lo que conocemos
como mquinas sencillas.

Captulo 4 Introduccin al diseo algortmico de sistemas

141

PROBLEMA 8
Un cierto algoritmo se ejecuta en la UP dada siguiendo el diagrama de flujo mostrado.
Programa la tabla de seales de control y construye el circuito secuencial que implementa
el estado actual de la UC utilizando un contador y los elementos combinacionales que
quieras. Indica el funcionamiento del registro R con una tabla.

Solucin:

142

Problemas de fundamentos y estructura de computadores

Estado

Q2Q1Q0

MAMB

LALB

R1R0

Fin

S0

000

11

11

00

S1

001

XX

00

00

S2

010

XX

00

11

S3

011

XX

00

01

S4

100

00

11

00

S5

101

XX

00

00

110

111

Captulo 4 Introduccin al diseo algortmico de sistemas

B0

Q2Q1Q0

E2E1E0

000

XXX

001

101

010

XXX

011

XXX

100

001

101

101

110

XXX

111

XXX

000

XXX

001

XXX

010

XXX

011

XXX

100

001

101

101

110

XXX

111

XXX

R1R0

Accin

00

Nada

01

10

11

Carga del dato

143

144

Problemas de fundamentos y estructura de computadores

PROBLEMA 9
En la U.P. de la figura se desea ejecutar el siguiente algoritmo.
a) Identificar y nombrar las seales de control y de condicin sobre el dibujo de la U.P.
b) Dibujar un diagrama de estados de la U.C. necesaria para ejecutar el algoritmo.
c)

Programar la tabla de salidas de la U.C.


RA p datoA;
RB p datoB;
while RA % RB
RC p RB;
RA p RC;
RC p RA ! RB;
end

Solucin:
a) Observando el algoritmo y la ruta de datos podemos deducir claramente las seales de
carga de los registros y de los multiplexores. La parte ms compleja es delimitar las seales que controlan la Unidad Aritmtico Lgica (ALU). Para establecerlas veamos qu
operaciones tiene que realizar dicha ALU:
A . B para calcular si A % B, esto activar el bit Z (nica seal de condicin) que valdr 1 cuando el resultado de la resta sea cero, es decir cuando A y B tengan el mismo
valor.

Captulo 4 Introduccin al diseo algortmico de sistemas

145

A ! B para realizar la operacin RC p RA ! RB.


Dejar pasar RB para cargarlo en RC.
Aunque no es necesario y dado que tenemos dos seales de control y estn disponibles
4 opciones codificaremos tambin una combinacin de las seales de control de ALU
para dejar pasar el valor del registro RA.
Las seales de control sern por lo tanto M1 para el multiplexor de paso a RA, M2 para el
multiplexor de paso a RB, LA seal de carga del registro RA, LB seal de carga del registro RB, LC seal de carga del registro RC, y OP1OP0 para controlar la ALU de acuerdo a
la siguiente tabla:
OP1OP2

Accin de la ALU

00

Pasa A

01

A!B

10

A.B

11

Pasa B

La figura muestra dnde van conectadas las seales de control en la ruta de datos.

146

Problemas de fundamentos y estructura de computadores

Y el esquema general de conexin entre la ruta de datos y la unidad de control ser


por lo tanto:

b) Como en el resto de problemas obtenemos en primer lugar el diagrama de flujo del algoritmo a partir del cual obtendremos el diagrama de estados, casi de inmediato.

Captulo 4 Introduccin al diseo algortmico de sistemas

c)

147

La tabla de salida para este diagrama de estados incluyendo la seal de FIN de operacin
ser la siguiente. Se incluye tambin en la tabla la codificacin escogida para los estados
(q2 q1 q0).
Estado

Q2Q1Q0

M1

M2

LA

LB

LC

OP1OP0

Fin

S0

000

XX

S1

001

10

S2

010

11

S3

011

XX

S4

100

01

S5

101

XX

110

111

148

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Disear la unidad de proceso y su correspondiente unidad de control para ejecutar el siguiente algoritmo:
Algoritmo:
A: % dato1;

B: % dato2;

C % dato3

if A % B
if C % 2
B: % B*2;
else
B % B/2
endif
else
A: % A/2;
endif
Para ello realizar el diagrama de estados indicando claramente las entradas y una tabla
con las salidas en cada uno de ellos. Realizar la implementacin completa del sistema.
Solucin:
Lo primero que hay que identificar son los elementos hardware que necesitamos. En este caso
necesitaremos tres registros para almacenar los datos, un comparador de A y B, un comparador de C con 2. Si los registros A y B son de desplazamiento, pueden realizar las operaciones
de multiplicacin y divisin por lo que no hara falta ningn mdulo hardware adicional. El
organigrama del algoritmo es

Captulo 4 Introduccin al diseo algortmico de sistemas

149

Si no tenemos ninguna restriccin podemos cargar los datos despus de compararlos aunque esto no es lo ms seguro, como regla general intentaremos tener almacenados los datos
para poder partir de un estado inicial de borrado. En este organigrama los estados se identificaran con los rectngulos ya que son almacenamiento de valores en registro.

Estado

S1

S0

C0A

C1A

C0B

C1B

C0C

C1C

Fin

S0

S1

S2

S3

C0A % S0 S S1
C1A % S0 ! S1
C0B % S1
C1B % S0
C0C % C1C % C1A % Fin

150

Problemas de fundamentos y estructura de computadores

Inicio

IG1

IG2

S1

S0

S1(T ! 1)

S0(T ! 1)

Esta tabla se podra simplificar aadiendo un estado.

Captulo 4 Introduccin al diseo algortmico de sistemas

151

Ahora debemos simplificar las seales de cambio de estado.


Mediante mapas de Karnaugh podemos llegar a las expresiones siguientes:
S1(t ! 1) % Inicio . (S1 ! S0 . IG2 ! S0 . IG1)
S0(t ! 1) % Inicio . (S0 ! S1 . IG2 ! S1 . IG1)
PROBLEMA 11
Disear el sistema de cambio de una mquina automtica que reciba monedas de 2 euros, 1
euro, 50 cntimos, y 20 cntimos. El sistema dispone de monedas de 1 euro y 50, 20 y 10
cntimos. Para la ruta de datos se utilizarn 4 contadores y un registro que almacenen el
importe de entrada y el cambio.
Solucin:
Lo primero que debemos hacer es obtener el algoritmo, para ello establecemos que el valor de
la moneda de entrada se almacena en una variable M. Tambin debemos establecer una estrategia de cambio, es decir cuntas monedas de cada tipo vamos a proporcionar. Nuestra decisin se encuentra recogida en la tabla siguiente en la que la variable U expresa el nmero de
monedas de 1 euro, C el nmero de monedas de 50 cntimos, V el nmero de monedas de 20
cntimos y D el nmero de monedas de 10 cntimos que se van a devolver:
Moneda

2e

00

1e

01

0,50 e

10

0,20 e

11

El algoritmo ser por tanto:


M % Data in
if M % 0 then U % 2;
else if M % 1 then C % 2;
else if M % 2 then V % 2; D % 1;
else D % 2;
end if
Cada uno de los registros contadores se activar con una seal y al final del proceso deber contener un valor igual a la cantidad de monedas que debe devolver el sistema. La ruta de
datos en este caso es muy sencilla:

152

Problemas de fundamentos y estructura de computadores

En la ruta de datos M1M0 codifican en binario el tipo de moneda recibido atendiendo a la


tabla anterior (columna M). En un sistema real esto se implementara utilizando un sistema
mecnico que recibiera las monedas en funcin de su peso. Traduciendo el algoritmo a un
diagrama nos queda definido igualmente el diagrama de estados.

Captulo 4 Introduccin al diseo algortmico de sistemas

153

Y la tabla de salidas para cada estado ser:


Estado Cargar M Contar U Borrar U Contar C Borrar C Contar V Borrar V Contar D Borrar D

Fin

S0

S1

S2

S3

S4

S5

S6

S7

S8

S9

S10

PROBLEMA 12
Dada la siguiente UC y la tabla de seales de estado, obtener una ruta de datos que sea
factible con ellas. Se permite incorporar seales de control de multiplexores si fueran necesarios.

OP1OP0

Operacin ALU

00

A.C

01

A.B

10

A!B

11

A!C

154

Problemas de fundamentos y estructura de computadores

Estado

Q2Q1Q0

OP1OP0

LALBLC

Fin

S0

000

XX

111

S1

001

01

000

S2

010

10

100

S3

011

00

000

S4

100

11

010

S5

101

10

001

S6

110

XX

000

111

Solucin:
Como resulta evidente del planteamiento del problema existen mltiples soluciones a este
problema, pero lo interesante es analizar las seales y comprender su significado. Iremos analizando la tabla y sacando conclusiones para poder obtener una ruta de datos que sea coherente con el enunciado.
En primer lugar, parece claro que existen 3 registros A, B y C que se corresponden con las
seales de carga LA, LB y LC. Parece tambin claro que existe una unidad aritmtico lgica
(ALU) que realiza las operaciones de suma y resta de estos registros. Por lo tanto en cada
estado se realizar en la ALU la operacin que indiquen los valores de operacin OP1 y OP0,
y el resultado de esta operacin se almacenar en el registro cuya seal de carga L, est a 1.
Por ejemplo:
Estado

Q2Q1Q0

OP1OP0

LALBLC

Fin

S2

010

10

100

Los valores de las seales de control mostrados en esta fila nos indican que:
El estado S2 se codifica como 010.
Que segn la tabla del enunciado OP1OP0 corresponde con la operacin A ! B en la
ALU.
Y que el registro A se cargar un valor (LA % 1), previsiblemente el resultado de la operacin realizada en la ALU y as lo supondremos.
Observando el diagrama de estados tambin podemos deducir que el estado 1 y 3 son estados donde se evalan condiciones. Esto concuerda tambin con la tabla de salidas, ya que
para estos estados todas las seales de carga estn a cero. Del enunciado podemos saber que
se evalan las condiciones A % B? y A % C? respectivamente. La ALU en estos casos realiza una operacin de resta segn los cdigos OP1OP0 asignados para la ALU. Por lo tanto debe
existir una seal de condicin (Z) que indique si el resultado de la operacin ha sido cero.
Siguiendo el convenio habitual si la operacin ha sido cero Z % 1 y Z % 0 en caso contrario.
Siguiendo con este razonamiento podemos deducir qu sucede en todos los estados y podemos as establecer el algoritmo. Una posible solucin sera:

Captulo 4 Introduccin al diseo algortmico de sistemas

Y la ruta de datos que realice el algoritmo podra ser la siguiente:

155

156

Problemas de fundamentos y estructura de computadores

PROBLEMA 13
Se desea disear un computador sencillo que codifique las instrucciones en dos registros.
Por un lado un registro de 24 bits almacenar en 3 campos los valores de tres operandos A,
B y C. Y por otro lado un registro de 5 bits especificar en 2 campos la operacin a realizar
(suma, resta, multiplicacin y divisin) y qu registro es el operando destino. Para esto
ltimo utilizar un cdigo de 3 bits (uno para A, otro para B y otro para C) en el que un
valor de 1 indicar que se trata de un operando fuente y un valor de 0 que acta como
operando destino. Se pide:
a) Disear los dos registros implicados.
b) Definir el algoritmo.
c) Disear un diagrama de la ruta de datos.
Solucin:
a) Los registros que hay que disear son el equivalente a los registros de instrucciones de un
computador sencillo. El primer registro deber tener la siguiente definicin de campos:
Operando A (8 bits)

Operando B (8 bits)

Operando C (8 bits)

El segundo registro tendr la siguiente forma:


OP1OP0

D2D1D0

Este registro debe llevar asociado un detector de cdigos errneos. Segn el enunciado si debemos tener 2 operandos fuente y uno destino tendremos 5 combinaciones de
cdigo que no representan configuraciones vlidas. Por ejemplo, un cdigo 001 indicara
que el operando B y el A son operandos fuentes, lo cual no es compatible con las operaciones definidas en la especificacin funcional. La tabla de deteccin de errores ser:
D2D1D0

Error

Operando destino

000

001

010

011

100

101

110

111

La seal de error ser por lo tanto:


Error % D1D0 ! D2D1 ! D2D0 ! D2D1D0

Captulo 4 Introduccin al diseo algortmico de sistemas

157

b) Para definir el algoritmo utilizamos como valores de entrada los de los registros diseados en el apartado anterior.
A: % Dato 1
B: % Dato 2
OP % Cdigo de Operacin
If Error % 1 then Fin
else
if OP % 00
C % A ! B;
else if OP % 01
C % A . B;
else if OP % 10
C % A*B;
else
C % A/B
end if
end if

c)

La ruta de datos ser:

158

Problemas de fundamentos y estructura de computadores

Las seales de control que debe suministrar la unidad de control son:


LROP: Cargar datos en el registro de operandos.
LC: Cargar datos en el registro de cdigos de operacin y fuentes-destino.
M1 a M7: Seleccin de operandos y destinos.
Y por otro lado la unidad de control debe recibir D2D1D0 para generar la seal de
error definida en el apartado a).
PROBLEMA 14
Disear un sistema algortmico que realice la suma de 4 valores de 8 bits, utilizando nicamente un registro denominado RR (Registro de Resultados), un sumador y un multiplexor
de 8 bits para la ruta de datos. Disear la unidad de control de tal forma que slo se permita
reiniciar el sistema si se ha llegado al final del proceso de suma de los 4 valores. Utilizar
un contador mdulo 8 para implementar la unidad de control. El registro RR se borra de
forma sncrona.
Solucin:
Dado que slo tenemos un registro los 4 datos tendrn que estar disponibles durante todo el
proceso y la nica forma de ir incorporndolos es multiplexndolos. El algoritmo a seguir
deber ir haciendo sumas parciales y almacenndolas en el nico registro disponible RR.

El primer paso en realidad se podra eliminar ya que podra cargarse directamente el valor
de Dato 1 en el registro y con eso quedara eliminado el valor anterior. Sin embargo, dado que
los datos de entrada no van a estar almacenados en un registro conviene hacer un borrrado del
registro al mismo tiempo que se comienza la ejecucin del algoritmo.

Captulo 4 Introduccin al diseo algortmico de sistemas

159

Las seales de control sern en este caso las habituales de carga (LR) y borrado del registro (BR) y las seales del control de multiplexor M1M0. El diagrama de estados debe tener en
cuenta que slo se puede reiniciar el proceso si se ha llegado hasta el final, en ese caso quedara de la siguiente forma:

La implementacin de la unidad de control con el contador es directa, slo tenemos que


conectar la seal de cuenta (C) y de carga (L). Los valores que se obtienen son:
C%1
L % q2q1q0
e2 % e0 % Inicio . q2q1q0
e1 % 0
FIN % q2q1q0
Por otro lado, la tabla de valores de las seales de control para cada estado ser:
Estado

q2q1q0

M1M0

LR

BR

Fin

S0

000

XX

S1

001

00

S2

010

01

0
contina

160

Problemas de fundamentos y estructura de computadores

continuacin
S3

011

10

S4

100

11

S5

101

XX

110

111

Podemos igualmente obtener las ecuaciones que relacionen las seales de control con el
estado de la unidad de control sin ms que simplificar las expresiones por mapas de Karnaugh
de la tabla anterior.
LR % q1 ! (q2 S q0)
CR % q2 ! q1 ! q0
M1 % q2 ! q1q0
M0 % q0
En este caso resulta fcil disear el sistema completo, conectando completamente la unidad de control y la ruta de datos:

Captulo 4 Introduccin al diseo algortmico de sistemas

161

PROBLEMA 15
Disear un sistema que permita calcular potencias de 2. El sistema debe disponer de una
entrada que permita especificar la potencia que se pretende calcular entre 20 y 215 y el
resultado quedar almacenado en un registro.
Solucin:
La especificacin algortmica es prcticamente equivalente al diagrama de flujo que tendr la
forma siguiente:

Para implementar la ruta de datos necesitaremos:


Un registro de 15 bits para almacenar el resultado (RR).
Un registro contador de 4 bits para especificar el exponente (Cont).

162

Problemas de fundamentos y estructura de computadores

Las seales de control enviadas desde la unidad de control sern:


LR: Cargar dato en el registro.
DR: Desplazamiento hacia la izquierda.
BC: Borrar el contador.
C: Cont % Cont-1.
Y la seal de condicin (Z) indicar cundo el contador ha llegado a cero. Slo nos queda
disear la unidad de control, que ser una mquina de Moore con 5 estados siguiendo el esquema del diagrama de flujo. Incorporamos en este caso una seald de Inicio.

PROBLEMA 16
Disee la ruta de datos de un sistema secuencial que implemente el siguiente al algoritmo:
if A n B then
C: % 2B . A/4;
else
C: % ((A ! B)*4);
Los datos de entrada y de salida son de 8 bits. Especifique las seales de control necesarias para gobernar el procesador.
Solucin:
En este caso debemos traducir el algoritmo a un diagrama de flujo y a partir de ah obtener la
ruta de datos y las seales de control que se enviarn a la unidad de control.

Captulo 4 Introduccin al diseo algortmico de sistemas

163

Si dibujamos la ruta de datos obtendremos que las seales de control son las que aparecen
en la figura:
LA: seal de carga del registro RA que contiene uno de los operandos.
LB: seal de carga del registro RB que almacenar el otro operando.
LC: seal de carga del registro de resultado, en la figura RC.
DA: seal de carga del registro RA que contiene uno de los operandos.
DB: seal de carga del registro RB que almacenar el otro operando.
DC: seal de carga del registro de resultado, en la figura RC.
!/.: Seal de suma y resta del sumador para realizar A ! B o A . B.

164

Problemas de fundamentos y estructura de computadores

PROBLEMA 17
Un sistema secuencial recibe dos datos de entrada X e Y expresados en complemento a 2 y
con un tamao de 8 bits, proporcionando el resultado de la operacin:
Z % X*(X . 1)*(X . 2) si X b Y
Z % Y*(Y . 1)*(Y . 2) si X m Y
Disear el algoritmo que realice la operacin y hacer una implementacin de la ruta de
datos. Definir la funcin de salida y cambio de estado de la unidad de control teniendo en
cuenta que se disear como una mquina de Mealy.
Solucin:
El diagrama de flujo del algoritmo debemos pensarlo teniendo en mente utilizar el menor nmero de mdulos hardware posible. Al ser la unidad de control diseada como mquina de
Mealy, podemos tener varias opciones dentro de cada estado, ya que lo que cambiar sern las
seales de salida en las transiciones. Con esto el algoritmo propuesto queda de la siguiente
forma:

Captulo 4 Introduccin al diseo algortmico de sistemas

165

Y la ruta de datos necesitar los siguientes elementos:


2 registros de 9 bits que almacenen X y Y (RX y RY). Aunque los nmeros son de 8 bits
tenemos que tener en cuenta que al tener almacenada una informacin en complemento
a 2 al restar uno al valor ms pequeo podemos necesitar un bit ms para representarlo.
Un registro de 16 bits para almacenar el resultado de la multiplicacin (RC).
Un sumador/restador para realizar la operacin X % X . 1.
Un multiplicador de nmeros de 8 bits.
Multiplexores para seleccionar la informacin.

166

Problemas de fundamentos y estructura de computadores

A este diseo de la ruta de datos cabra hacerle una salvedad relativa al almacenamiento
del resultado de la comparacin X b Y?. Dado que este valor lo proporciona un mdulo combinacional y que ste se modifica cada vez que lo hacen sus entradas, habra que tener prevista la inclusin de un registro que slo cargara el valor en el estado S1. Sin embargo, es posible
eliminar ese registro, y por lo tanto un estado, si lo tenemos en cuenta a la hora de disear la
unidad de control. En este caso habra que hacer que la transicin entre los estados S1, S2 y S3
se realizara conforme al valor inicial que lee la unidad de control y no chequeando en cada
transicin. Por lo tanto la unidad de control debera guardar ese valor en un registro interno o

167

Captulo 4 Introduccin al diseo algortmico de sistemas

registro de estado correspondiente, lo que en la prctica es equivalente a realizar el diseo


como una mquina de Moore.
Para esta unidad de control lo interesante es definir las funciones de salidas asociadas a
cada transicin, ya que es la principal diferencia con respecto a los ejercicios que se han resuelto en este captulo que utilizan como diseo una mquina de Moore.
La funcin de salida incluir las seales de control que aparecen en la figura anterior y
una seal de Fin de clculo. Para mejorar la compresin se omite cualquier posible seal de
Inicio o borrado de registros, pero, como ya se ha comentado, el lector debe tener en cuenta
que estas seales deben implementarse para poder reiniciar el sistema:
XbY

Q2

Q1

Q0

MX

LX

MY

LY

MC

LC

MR

Fin Q2(t ! 1) Q1(t ! 1) Q0(t ! 1)

168

Problemas de fundamentos y estructura de computadores

PROBLEMA 18
Disear algortmicamente un multiplicador de nmeros de 16 bits. El algoritmo viene determinado por el siguiente diagrama. En l, RMP representa el registro multiplicador,
RMD es el registro multiplicando y RP es el registro producto. Explique cmo se podra
mejorar este diseo.

Captulo 4 Introduccin al diseo algortmico de sistemas

169

Solucin:
En este caso no necesitamos obtener la descripcin algortmica, ya que viene especificada
por el esquema que nos proporciona el enunciado. En cualquier caso conviene familiarizarse con el funcionamiento del proceso, para ello veamos en una tabla cmo se realiza la
multiplicacin de dos nmeros de 4 bits: 0110 # 0011 % 0110 en binario (6 # 3 % 18) en
decimal.
I

RMP

RMD

RP

RMP % 0?

I % 4?

(0110)2 % (6)10

(0011)2 % (3)10

(00000000)2 % (0)10

SI

NO

(0011)2 % (3)10

(00110)2 % (6)10

(00000000)2 % (0)10

NO

NO

(0001)2 % (1)10

(001100)2 % (12)10

(00000110)2 % (6)10

NO

NO

(0000)2 % (0)10

(0011000)2 % (24)10

(00010010)2 % (18)10

SI

NO

(0000)2 % (6)10

(00110000)2 % (48)10

(00010010)2 % (18)10

XX

SI

De nuevo es importante tener en cuenta la forma de definir la unidad de control. Si


lo hacemos como mquina de Mealy en el momento en que i sea igual a 4 pasar al estado
final y se debe implementar una seal de Fin. Comencemos con el diseo propiamente
dicho.
Seleccin y conexin de los mdulos de la ruta de datos
Observando el diagrama necesitaremos los siguientes elementos:
Dos registros de 16 bits para almacenar el multiplicador y el multiplicando y que denominaremos RMP y RMD respectivamente para seguir la nomenclatura del enunciado.
Los registros debern permitir realizar desplazamiento para realizar las operaciones
(RMD @ 0) y (0 A RMP).
Un registro de 32 bits para almacenar el resultado, RP.
Un registro contador de 5 bits para almacenar e incrementar el valor de i.
Un comparador para saber si se ha llegado a la ltima iteracin.
Un sumador de 32 bits para realizar la operacin RP % RMD ! RP.
Un extensor de signo (EXT) para operar con datos de 32 bits.

170

Problemas de fundamentos y estructura de computadores

La forma de conectarlos ser la siguiente:

Seleccin de las seales de control y de condicin


Las seales de control sern las necesarias para controlar los elementos anteriores. Siguiendo
el mismo orden:
LRMP: Carga del Registro Multiplicador, RMP.
DRMP: Desplazamiento del Registro Multiplicador, RMP.
LRMD: Carga del Registro Multiplicador, RMD.
DRMD: Desplazamiento del Registro Multiplicando, RMD.
LRR: Carga del Registro de Resultado, RR.
CONTAR: Avance del contador i.
BORRADO: Inicializacin del contador.
FIN: Salida de control que indica el final del proceso.
Y las seales de condicin sern:
RMP0
PROCESAR

Captulo 4 Introduccin al diseo algortmico de sistemas

171

Definicin de los distintos estados del procesador


La implementacin se va a realizar siguiendo la organizacin del diagrama de flujo y considerando la unidad de control como una mquina de Moore.

Especificacin de las salidas para cada estado


Estado

q2q1q0

LRMP

DRMP

LRMD

DRMD

LRP

Contar

Borrado

Fin

S0

000

S1

001

S2

010

S3

011

S4

100

S5

101

S6

110

S7

111

172

Problemas de fundamentos y estructura de computadores

Implementacin de la unidad de control como sistema secuencial


La implementacin de la unidad de control con el contador es directa, slo tenemos que conectar la seal de cuenta (C) y de carga (L). Los valores que se obtienen son:
C%1
L % PROCESAR . S2 . S1 ! S2 . S1 . S0 ! RMP . S2 . S1 . S0
e2 % S1 . S0
e1 % q1
e0 % 1
FIN % q2 . q1 . q0
Para completar el diseo slo debemos realizar la implementacin de estas ecuaciones de
la misma forma que se hace en el problema 14.
Mejora del diseo
Para mejorar el diseo deberamos reagrupar los estados S4, S5 y S6, ya que se realizan en
recursos hardware independientes y no es necesario hacerlos en ciclos separados.
PROBLEMA 19
Disear un sistema algortmico que realice la operacin 2A ! 2B utilizando un nico registro.
Solucin:
Una posible solucin sera reutilizar el diseo del problema 14 y cambiar las entradas. Para
reutilizar tambin la unidad de control deberamos dejar el diseo como sigue.

Captulo 4 Introduccin al diseo algortmico de sistemas

173

PROBLEMA 20
Disear un sistema algortmico que realice la operacin 2A ! 8B utilizando dos registros y
elementos combinacionales.
Solucin:
En este caso podemos obtener en primer lugar el algoritmo adaptado al uso de registros de
desplazamiento para realizar las operaciones ser:
A % Dato 1;
B % Dato 2;
A % 2*A;
B % 2*B;
B % 2*B;
B % 2*B;
A % A ! B;

174

Problemas de fundamentos y estructura de computadores

Utilizando los elementos que nos indica el enunciado debemos conectarlos de la siguiente
forma para que realicen el algoritmo indicado en el diagrama de flujo.

Y la unidad de control enviar las seales de control indicadas en el siguiente esquema.

El diagrama de estados ser simple y sin bifucarciones ya que no existen decisiones a


tomar ni seales de control de las que dependa el flujo de datos. Identificando cada bloque del
diagrama de datos con un estado de la unidad de control obtenemos el siguiente diagrama de
transicin de estados en el que est incluida la seal de Inicio del proceso que slo se puede
activar en el estado final.

Captulo 4 Introduccin al diseo algortmico de sistemas

175

Y la tabla de salidas de control ser:


Estado

Q2Q1Q0

LA

DA

LB

DB

Fin

S0

000

S1

001

S2

010

S3

011

S4

100

101

110

111

4.4 Problemas propuestos


PROBLEMA 1
Disear un sistema algortmico que realice la operacin (nA ! mB) utilizando dos registros y
elementos combinacionales, para valores de n y m potencias de 2 (entre 20 y 27).
PROBLEMA 2
Disear un sistema secuencial que calcule el factorial de un nmero positivo de 16 bits.
PROBLEMA 3
Disear la unidad de control y definir la tabla de salidas del problema resuelto n.o 13. Definir
tambin el diagrama de conexiones entre la unidad de control y la unidad de proceso, especificando adems las seales de entrada, seales de salida, entradas y salidas de control.
PROBLEMA 4
Un sistema secuencial recibe dos datos de entrada X e Y expresados en complemento a 2 y con
un tamao de 8 bits, proporcionando el resultado de la operacin:
X ! (X . 1) ! (X . 2) ! (Y . 1) ! (Y . 2)

176

Problemas de fundamentos y estructura de computadores

Disear algortmicamente el sistema. Para ello deber definir la ruta de datos y el diagrama de estados con su tabla de salidas. La unidad de control se disear como una mquina de
Moore.
PROBLEMA 5
Disear algortmicamente un sistema que realice la operacin 2A ! 2B utilizando todos los
elemento que estime oportuno.
PROBLEMA 6
Disear un sistema que implemente el siguiente algoritmo
IF (A % B % C) THEN
C % C/2;
ELSE IF (A % B) THEN
B % B ! C;
ELSE IF (A % C) THEN
A % A ! B;
ELSE
A % A ! C ! B;
ENDIF
PROBLEMA 7
Redisear la unidad de control del problema resuelto n.o 18 para que el multiplicador tarde
menos ciclos en proporcionar el resultado.
PROBLEMA 8
Disear un sistema que permita calcular potencias de 3. El sistema debe disponer de una entrada que permita especificar la potencia que se pretende calcular entre 30 y 315 y el resultado
quedar almacenado en un registro. Utilice un multiplicador como el diseado en el problema
18. Cuntos ciclos tardara el sistema en devolver el valor de 37?
PROBLEMA 9
Dada la U.P., disear la unidad de control (diagrama de estados y tabla de salidas) para ejecutar el siguiente algoritmo:
B p mem;
while z % 1
A p B ! mem
end

Captulo 4 Introduccin al diseo algortmico de sistemas

177

PROBLEMA 10
Disear un contador gobernado por dos seales A y B que indiquen si la cuenta se realiza de
uno en uno o de dos en dos.

Aunque en captulos sucesivos se van a estudiar en mayor profundidad los conceptos de estructura de computadores, es conveniente que, una vez desarrollados todos los conceptos de
sistemas combinacionales y secuenciales, se realice una primera aproximacin a un computador sencillo. Este computador est basado en la arquitectura de Von Neumman. En la mayora
de textos de Fundamentos de Computadores se suele utilizar el modelo estndar de la Mquina Rudimentaria (MR), que sirve como base para los ejercicios de este captulo. La mquina
rudimentaria ha sido desarrollada por la Universidad Politcnica de Catalua y se encuentra
desarrollada en profundidad en el texto de Hermida, Corral, Pastor y Snchez (2000).
Como se ha visto en el captulo anterior, un procesador, ya sea simple o ms complejo, se
compone de dos elementos fundamentales: una Unidad de Proceso y una Unidad de Control
(UC). Por ello, definiremos a continuacin las caractersticas del computador sencillo que vamos a utilizar, especificando y detallando las caractersticas de su UP y su UC.

5.1 Diseo de la unidad de proceso


La memoria es de 28 palabras de 16 bits, por lo tanto tendr un bus de direcciones de 8 bits, un
bus de entrada de datos de 16 bits, un bus de salida de datos tambin de 16 bits y una seal de
lectura/escritura. Los datos ledos estarn disponibles en el bus de salida y el almacenamiento
de los datos en la memoria se har a travs del bus de entrada.
El Registro de Instrucciones (IR) almacena la instruccin que se est ejecutando. Puesto
que las instrucciones se guardan en la memoria, sta saldr por el bus de salida de la memoria
para llegar al IR. El tamao del IR ser de 16 bits.
Para leer una instruccin (o un dato) es necesario indicar la direccin de memoria en que
se encuentra. En el caso de las instrucciones la direccin estar, generalmente, en el registro
contador de programa (PC). Si la instruccin no est en ese registro estar en el registro auxiliar de direcciones (R@). Por lo tanto el PC tendr un ancho de 8 bits para poder acceder a las
28 palabras de la memoria y su salida estar conectada al bus de direcciones de la memoria.
Como se trata de una mquina en la que la siguiente instruccin en memoria ser la prxima

180

Problemas de fundamentos y estructura de computadores

Estructura general de la Mquina Rudimentaria.

Captulo 5 Estructura de un computador sencillo

181

instruccin a ejecutar (salvo para instrucciones de salto), el PC debe tener capacidad de


autoincremento.
El banco de registros es de 8 posiciones de 16 bits. Tiene bus de datos de entrada, de
salida, una seal de escritura, y dos buses de direcciones, uno para seleccionar el registro
de lectura y otro para seleccionar el de escritura. Dado que tenemos 8 registros, estos buses de
direcciones son de 3 bits.
La Unidad Aritmtico Lgica (ALU) realiza las operaciones aritmtico-lgicas y modifica
los registros de estado N y Z. El registro N valdr 1 cuando el resultado de la ltima operacin
haya sido negativo y 0 en caso contrario. Por su parte, el registro Z valdr 1 cuando el resultado de la ltima operacin haya sido cero y tomar el valor de 0 si el resultado ha sido distinto
de cero.
Existen dos tipos de operaciones aritmtico-lgicas: las que operan con dos valores almacenados en registros del banco y las que operan con un valor de un registro y un operando
inmediato. El operando inmediato estar grabado en la instruccin, y como hemos indicado,
sta se encuentra almacenada en IR. Por lo tanto, el operando tendr que ir desde el IR a una
entrada de la ALU, extendiendo previamente el signo para llegar a los 16 bits con los que
opera la ALU (ya que en la instruccin slo ocupa 5 bits). El otro operando estar guardado
en un registro y por lo tanto el dato saldr del banco de registros e ir a la otra entrada de
datos de la ALU.
Debido al formato de instruccin que hemos elegido tenemos 3 posibilidades de lectura
del banco de registros. Podemos querer leer del RF1 (Registro Fuente 1, que coincide con los
bits del RI de las instrucciones de LOAD), del RF2 (Registro Fuente 1), o del RF cuando se
trata de la instruccin Store. Estas tres posibilidades se traducen en 3 lneas, de 3 bits cada
una, que son las entradas del multiplexor de la entrada de seleccin de lectura (SL) en el
banco de registros.

5.2 Diseo de la ALU


La Unidad Aritmtico Lgica (ALU) acta en las instrucciones Aritmtico-Lgicas y en
Load. En esta ltima el dato viene de memoria por el bus y llega a la ALU por la entrada de la
derecha (atravesando el multiplexor correspondiente). En la ALU se realizan todas las operaciones al mismo tiempo y luego se selecciona la solicitada por la instruccin mediante un
Multiplexor de salida. Aunque esta solucin no es la ms eficiente en trminos de energa, s
que resulta la ms apropiada para una primera aproximacin al diseo de unidades funcionales y aritmtico-lgicas.
El esquema de la Unidad Aritmtico-Lgica incluida en la Mquina Rudimentaria es el
siguiente:

182

Problemas de fundamentos y estructura de computadores

5.3 Formato de las instrucciones


El formato de las instrucciones que vamos a considerar es el siguiente:
Tipo de
instruccin

Formato de instruccin de 16 bits

ALU entre
registros

Cdigo
IR15-14

RD
IR13-11

RF1
IR10-8

RF2
IR7-5

XX
IR4-3

ALU entre
registro
e inmediato

Cdigo
IR15-14

RD
IR13-11

RF1
IR10-8

Salto

Cdigo
IR15-14

COND
IR13-11

000
IR10-8

Direccin
IR7-0

STORE

Cdigo
IR15-14

RD
IR13-11

RI
IR10-8

Direccin
IR7-0

LOAD

Cdigo
IR15-14

RF
IR13-11

RI
IR10-8

Direccin
IR7-0

NUM
IR7-3

OP
IR2-0
OP
IR2-0

Captulo 5 Estructura de un computador sencillo

Tipo de instruccin

Cdigo IR15-14

LOAD

00

STORE

01

Salto

10

ALU entre registro e inmediato

11

ALU entre registros

11

Instruccin en
lenguaje ensamblador

CC

Condicin
a evaluar

Tipo de salto

BR direccin

000

Incondicional

BEQ direccin

001

Salto SI resultado % 0

BL direccin

010

Salto SI resultado a 0

BLE direccin

011

N(OR)Z

Salto SI resultado m 0

BNE direccin

101

NOT(Z)

Salto SI resultado 0

BGE direccin

110

NOT(N)

Salto SI resultado n 0

BG direccin

111

NOT(N (OR) Z)

Salto SI resultado b 0

Instruccin

Tipo (IR15IR14)

OP % IR2IR1IR0

ADDI

11

000

SUBI

11

001

ADD

11

100

ADDI

11

101

ASR

11

110

AND

11

111

183

5.4 Diseo de la unidad de control


La unidad de control utilizada ser la de la mquina rudimentaria simplificada cuyo diagrama
de transicin de estados tiene por seales de control de la transicin EVAL y el tipo de operacin, es decir IR15IR14. El diagrama de transicin de estados es:

184

Problemas de fundamentos y estructura de computadores

Las instrucciones realizan las siguientes fases:


Instruccin

Estados

ADDI

FETCH* ! DECO ! ARIT

SUBI

FETCH* ! DECO ! ARIT

ADD

FETCH* ! DECO ! ARIT

ADDI

FETCH* ! DECO ! ARIT

ASR

FETCH* ! DECO ! ARIT

AND

FETCH* ! DECO ! ARIT

LOAD

FETCH* ! DECO ! LOAD

STORE

FETCH* ! DECO ! STORE

BR

FETCH* ! DECO ! SALTO

BEQ

FETCH* ! DECO ! SALTO

BL

FETCH* ! DECO ! SALTO

BLE

FETCH* ! DECO ! SALTO

BNE

FETCH* ! DECO ! SALTO

BGE

FETCH* ! DECO ! ALTO

BG

FETCH* ! DECO ! SALTO

* La fase de FETCH no se realiza si la instruccin anterior fue ARIT o SALTO ya


que en esas fases ya se realiza la carga del registro de instrucciones y la actualizacin del contador de programa.

La fase de SALTO se realiza slo en caso de que la seal EVAL sea igual a 1
como muestra el diagrama de transicin de estados.

185

Captulo 5 Estructura de un computador sencillo

Las seales de control sern las que realicen las siguientes operaciones en cada fase o
estado:
Estado de la UC

Operaciones que se realizan

FETCH

Carga de la instruccin en el IR
Actualizacin del PC

DECO

Lectura del primer operando


Clculo de la direccin efectiva
Evaluacin de la condicin de salto

LOAD

Escritura desde la memoria en el RD


Seleccin de la direccin
Escritura en memoria desde el RF

STORE

Lectura del segundo operando y ejecucin en la ALU


Carga de la instruccin en el IR
Actualizacin del PC

ARIT

Carga de la instruccin destino del salto en el IR


Actualizacin del PC

SALTO

Estado de la UC

LPC CRF

LR@ C@ R/W

LN

LZ

LAUX ALU LIR

FETCH

DECO

LOAD

STORE

ARIT

SALTO

NOTA ACLARATORIA
En otros textos que utilizan como referencia la mquina rudimentaria, el estado SALTO se
denomina BRANCH.

5.5 Problemas resueltos


PROBLEMA 1
Sea un computador bsico con las siguientes caractersticas:
Banco de 4 registros, todos ellos con capacidad de lectura y escritura.
Memoria de 29 palabras de 16 bits.
Bits de condicin N y Z.

186

Problemas de fundamentos y estructura de computadores

Y el siguiente repertorio de instrucciones:


Instruccin

Operandos

Operaciones que realiza

Acciones sobre N y Z

ADDI

RF1,NUM,RD

RD p RF1 ! NUM

Modifica N y Z

SUBI

RF1,NUM,RD

RD p RF1-NUM

Modifica N y Z

NOT

RF,RD

RD p NOT(RF)

Modifica N y Z

ASL

RF,RD

RD p (RF)X2

Modifica N y Z

OR

RF1,RF2,RD

RD p (RF1)OR(RF2)

Modifica N y Z

LOAD

A(RI),RD

RD p MEM(A ! RI)

Modifica N y Z

STORE

RF,A(RI)

MEM(A ! RI) p RF

BEQ

DIR

SI Z%1 p PROX.INST%MEM(DIR)

BLT

DIR

SI N%1 p PROX.INST %MEM(DIR)

BRA

DIR

PROX.INST%MEM(DIR)

BSR

DIR

PROX.INST %MEM(DIR);
MEM(R0) p PC

a) Decidir el formato de las instrucciones y, basndose en l, disear detalladamente la


unidad de proceso.
b) Disear la unidad aritmtico-lgica.
Solucin:
a) Las instrucciones deben incluir el cdigo de operacin y los operandos necesarios. Para
decidir cuntos bits del formato se utilizan para cada campo analizamos el repertorio de
instrucciones. Consideramos que existen 4 tipos de instrucciones:
Aritmtico-Lgicas: ADDI, SUBI, NOT, ASL y OR
LOAD
STORE
Bifurcacin: BEQ, BLT, BRA y BSR
Por lo tanto, para diferenciarlas necesitaremos 2 bits en la instruccin que nos indiquen el tipo de instruccin. Por analoga con la mquina rudimentaria establecemos:
Tipo de instruccin

Cdigo

LOAD

00

STORE

01

Bifurcacin

10

Aritmtico-lgicas

11

Captulo 5 Estructura de un computador sencillo

187

A continuacin la instruccin debe proporcionar los operandos necesarios y en el caso


de las instrucciones aritmtico-lgicas y de bifurcacin adems tienen que incluir unos
bits que diferencien las distintas operaciones o condiciones que se evalan.
Otra caracterstica que nos proporciona el repertorio de instrucciones es que hay que
definir seis formatos diferentes de las instrucciones en funcin de los operandos que estn
implicados en cada una de las instrucciones. As habr que especificar un formato para
ADDI y SUBI, otro para NOT y ASL, otro para la instruccin OR, uno para LOAD, uno
para STORE y finalmente uno para las instrucciones de bifurcacin.
De las caractersticas de la mquina sabemos tambin que:
Necesitaremos 2 bits para diferenciar los 4 registros del banco.
9 bits para especificar una direccin de memoria.
3 bits (OP) para especificar la operacin de la ALU (tenemos 5 operaciones aritmticolgicas; ADDI, SUBI, NOT, ASL y OR).
2 bits (CC) para especificar la condicin a evaluar (hay que diferenciar entre BEQ,
BLT, BRA y BSR).
Dado que no nos indican el tamao del operando inmediato (NUM) podremos definirlo con tantos bits como queden libres en las instrucciones correspondientes.
Con ello, el formato de las instrucciones quedar de la siguiente forma:
Aritmtico-lgicas: ADDI y SUBI
Cdigo (2 bits)

2 bits

2 bits

7 bits

3 bits

11

RD

RF1

NUM

OP

Aritmtico-lgicas: NOT y ASL


Cdigo (2 bits)

2 bits

2 bits

2 bits

5 bits

3 bits

11

RD

XX

RF

XXXXX

OP

Cdigo (2 bits)

2 bits

2 bits

2 bits

5 bits

3 bits

11

RD

RF1

RF2

XXXXX

OP

Aritmtico-lgicas: OR

LOAD
Cdigo (2 bits)

2 bits

2 bits

1 bits

9 bits

00

RD

RI

Direccin

188

Problemas de fundamentos y estructura de computadores

STORE
Cdigo (2 bits)

2 bits

2 bits

1 bits

9 bits

01

RF

RI

Direccin

Bifurcacin: BEQ, BLT, BRA y BSR


Cdigo (2 bits)

2 bits

2 bits

1 bits

9 bits

10

CC

00

Direccin

En el caso de las instrucciones de bifurcacin y salto es necesario fijar dos bits a cero
para poder reutilizar correctamente los elementos de la mquina rudimentaria en la que
para el clculo de la direccin efectiva se hace una suma con el registro R0 cuyo contenido es siempre cero.
b) EL diseo de la unidad aritmtico-lgica debe incluir los distintos mdulos que pueden
intervenir:

PROBLEMA 2
Sea un computador bsico que tiene las siguientes caractersticas:
Un banco de 4 registros.
Memoria de 28 palabras # 16 bits.
Bits de condicin N y Z.

Captulo 5 Estructura de un computador sencillo

189

Y el siguiente repertorio de instrucciones:


Instruccin

Operandos

Operaciones que realiza

Acciones sobre N y Z

ADD

RF1,DIR,RD

RD p RF1 ! MEM(DIR)

Modifica N y Z

SUB

RF1,DIR,RD

RD p RF1 . MEM(DIR)

Modifica N y Z

ADDI

RF1,NUM,RD

RD p RF1 ! NUM

Modifica N y Z

SUBI

RF1,NUM,RD

RD p RF1 . NUM

Modifica N y Z

LOAD

A(RI),RD

RD p MEM(A ! RI)

Modifica N y Z

STORE

RF,A(RI)

MEM(A ! RI) p RF

BCC

DIR

Si se cumple la condicin CC
p Ejecuto el salto

a) Decidir el formato de las instrucciones.


b) Responder razonadamente:
Puedo ampliar el nmero de instrucciones aritmtico-lgicas?
Cuntas instrucciones de salto puedo codificar?
Cul es el rango representable por el nmero inmediato num?
(Todo ello sin modificar en absoluto ninguno de los componentes.)
Solucin:
a) Decidir el formato de las instrucciones.
Siguiendo un procedimiento similar al llevado a cabo en el problema 1 podemos establecer que:
Necesitaremos 2 bits para diferenciar los 4 registros del banco.
8 bits para especificar una direccin de memoria.
2 bits (OP) para especificar la operacin de la ALU (tenemos 4 operaciones aritmticolgicas: ADDI, SUBI, ADD y SUB).
2 bits (CC) para especificar la condicin a evaluar (hay que evaluar N y Z ya que no
especifica nada el enunciado).
Dado que no nos indican el tamao del operando inmediato (NUM) podremos definirlo con tantos bits como queden libres en las instrucciones correspondientes. Como el
tamao de la instruccin es 16 se puede obtener que podrn destinarse 8 bits a tal efecto (ver formato de ADDI y SUBI).
Con ello el formato de las instrucciones quedar de la siguiente forma:
Aritmtico-lgicas: ADDI y SUBI
Cdigo (2 bits)

2 bits

2 bits

8 bits

2 bits

11

RD

RF

NUM

OP

190

Problemas de fundamentos y estructura de computadores

Aritmtico-lgicas: ADD y SUB


Cdigo (2 bits)

2 bits

2 bits

8 bits

2 bits

11

RD

RF

Direccin

OP

Cdigo (2 bits)

2 bits

2 bits

8 bits

2 bits

00

RD

RI

Direccin

XX

Cdigo (2 bits)

2 bits

2 bits

8 bits

2 bits

01

RF

RI

Direccin

XX

Cdigo (2 bits)

2 bits

2 bits

8 bits

2 bits

10

CC

00

Direccin

XX

LOAD

STORE

Bifurcacin: BCC

De nuevo en las instrucciones de salto es necesario fijar dos bits a cero para poder
reutilizar correctamente los elementos de la mquina rudimentaria.
b) Responder razonadamente:
Puedo ampliar el nmero de instrucciones aritmtico-lgicas?
No. No es posible sin modificar el formato de las instrucciones, ya que tanto los bits
destinados a especificar el cdigo como los de OP estn en uso por las instrucciones especificadas.
Cuntas instrucciones de salto puedo codificar?
Podramos especificar 16 instrucciones diferentes. Aunque hemos destinado 2 bits
para los cdigos (CC), sera posible utilizar tambin los 2 bits iniciales de ese formato
IR1IR0. Por lo tanto podramos codificar 22!2 % 16 instrucciones con el cdigo de la instruccin de salto (10).
Cul es el rango representable por el nmero inmediato num?
Disponemos de 8 bits y dado que suponemos nmeros representados en complemento
a 2, el rango ser [.27, 27 . 1], o lo que es lo mismo [.128, 127].
PROBLEMA 3
Dibujar la unidad de proceso y la ALU de un computador bsico con el repertorio de instrucciones de la mquina rudimentaria expuesta, al que le hemos aadido dos instrucciones
aritmtico-lgicas:
NORI

RF,NUM,RD

RD p RF(NOR)NUM

Realiza la NOR

INC

REG;

REG p REG ! 1

(Reg. acta como fuente y destino)

Captulo 5 Estructura de un computador sencillo

191

Solucin:
La unidad de proceso ser la de la mquina rudimentaria en el que cambien la unidad aritmtico-lgica para incluir las dos operaciones indicadas. La figura incluye la nueva ALU en la
estructura general de la MR.

192

Problemas de fundamentos y estructura de computadores

PROBLEMA 4
Sea un computador bsico con una memoria de 214 palabras de 24 bits, un banco de 16
registros, un registro acumulador (AC) y el repertorio de instrucciones dado:
a) Dar un formato de instruccin vlido.
ADD

RF

AC p RF ! AC

ADDI

RF,NUM

AC p RF ! NUM

CD

RF

AC p C2(RF)

CDI

NUM

AC p C2(NUM)

LOAD

A(RI),RD

RD p MEM(EA)

STORE

A(RI)

MEM(EA) p AC

BCC

Direccin

Salta SI cierto

b) Cul es el tamao del contador de programa? Justifica la respuesta.


c) Cuntas instrucciones aritmticas se pueden aadir? Justifica la respuesta.
Solucin:
a) Dar un formato de instruccin vlido.
Por analoga con la MR vamos a utilizar 2 bits para diferenciar el tipo de operacin
aunque hay varias soluciones posibles al disponer de 24 bits para codificar la instrucciones, ya que ese es el tamao de palabra que almacena la memoria y por lo tanto el tamao
mximo que puede tomar el IR.
Aritmtico-lgicas: ADDI, CDI
2 bits

4 bits

16 bits

2 bits

Cd

RF

NUM

OP

Aritmtico-lgicas: ADD, CD
2 bits

4 bits

16 bits

2 bits

Cd

RF

XXXX XXXX XXXX XXXX

OP

LOAD
2 bits

4 bits

4 bits

14 bits

Cd

RF

RI

Direccin

2 bits

4 bits

16 bits

2 bits

Cd

RD

RI

Direccin

2 bits

4 bits

16 bits

2 bits

Cd

COND

0000

Direccin

STORE

BCC

Captulo 5 Estructura de un computador sencillo

193

b) Cul es el tamao del contador de programa?


El tamao del contador de programa viene determinado por la memoria y por lo tanto
ser de 14 bits para poder acceder a todas las posiciones de la misma.
c) Cuntas instrucciones aritmticas se pueden aadir?
Con el diseo que se ha propuesto del formato de las instrucciones no se podran aadir instrucciones aritmtico-lgicas, ahora bien se podra modificar el formato de las instrucciones aritmtico-lgicas incrementando el tamao del campo OP todo lo que nos
permita el tamao del operando inmediato. Suponiendo un tamao de 5 bits para el campo inmediato podramos definir de nuevo los formatos como:
Aritmtico-lgicas con inmediato:
2 bits

4 bits

16 bits

2 bits

Cd

RF

NUM

OP

Aritmtico-lgicas sin operando inmediato:


2 bits

4 bits

16 bits

2 bits

Cd

RF

XXXXX

OP

Este nuevo diseo permitira definir hasta 213 instrucciones aritmtico-lgicas.


PROBLEMA 5
Sea un computador bsico con una memoria de 26 palabras de 16 bits, un banco de 16
registros, un registro acumulador (AC) y el repertorio de instrucciones dado:
a) Dar un formato de instruccin vlido.
ADD

RF

AC p RF ! AC

ADDI

RF,NUM

AC p RF ! NUM

CD

RF

AC p C2(RF)

CDI

NUM

AC p C2(NUM)

LOAD

A(RI),RD

RD p MEM(EA)

STORE

A(RI)

MEM(EA) p AC

BCC

Direccin

Salta SI cierto

b) Disea la unidad de proceso de dicho computador indicando el tamao de los buses y


las seales de control.
Load no modifica los bits de condicin!!
c) En cuntas fases se ejecutara la instruccin LOAD de este computador? Qu seales de control deberan activarse en cada fase? La respuesta debe ser coherente con el
diseo del apartado anterior.

194

Problemas de fundamentos y estructura de computadores

Solucin:
a) Dar un formato de instruccin vlido.
El repertorio de instrucciones es el mismo que el del problema 4, por lo tanto slo
debemos adaptar el formato a los tamaos de memoria, palabra y banco de registro indicados:
Aritmtico-lgicas: ADDI, CDI
2 bits
IR15-14

4 bits
IR13-10

8 bits
IR9-2

2 bits
IR1-10

Cd

RF

NUM

OP

Aritmtico-lgicas: ADD, CD
2 bits
IR15-14

4 bits
IR13-10

8 bits
IR9-2

2 bits
IR1-10

Cd

RF

XXXX XXXX

OP

LOAD
2 bits
IR15-14

4 bits
IR13-10

4 bits
IR9-6

6 bits
IR5-0

Cd

RF

RI

Direccin

2 bits
IR15-14

4 bits
IR13-10

4 bits
IR9-6

6 bits
IR5-0

Cd

RD

RI

Direccin

2 bits
IR15-14

4 bits
IR13-10

4 bits
IR9-6

6 bits
IR5-0

Cd

COND

0000

Dieccin

STORE

BCC

b) Disea la unidad de proceso de dicho computador indicando el tamao de los buses y las
seales de control.
La modificacin principal se debe realizar cerca de la ALU, debemos sustituir (o reutilizar) el registro auxiliar por un registro acumulador y aadir un multiplexor para seleccionar los operandos tambin en la entrada del operando A.
En cuanto al tamao de los buses, se vern modificados todos aquellos que tenga que
ver con las direcciones que pasarn de 8 a 6 bits. Los bits de seleccin de los registros
tambin cambiarn de 3 a 4 bits para poder acceder a los 16 registros, que es el nuevo
tamao del banco de registros.

Captulo 5 Estructura de un computador sencillo

195

Por otra parte, dado que ahora slo tenemos dos opciones de acceso al banco de registros para lectura, el multiplexor de seleccin de lectura slo tendr dos entradas activas.
Podramos sustituirlo de igual forma por un multiplexor de 2 a 1, pero de esta forma no
deberemos modificar el diseo inicial.
Las seales de control de la unidad aritmtico-lgica tambin podran modificarse o
simplemente reutilizar las conexiones y cambiar las seales de control para cada estado.

196

Problemas de fundamentos y estructura de computadores

c)

En cuntas fases se ejecutara la instruccin LOAD de este computador? Qu seales


de control deberan activarse en cada fase? La respuesta debe ser coherente con el diseo
del apartado anterior.
La instruccin LOAD debe realizar los siguientes pasos:
1.

FETCH: Carga de la instruccin en el registro IR y PC p PC ! 1.

2.

DECO: Decodificacin de la instruccin.

3.

ADDR: Calcular la direccin efectiva.

4.

LOAD: Acceder a la posicin de memoria calculada en el paso anterior y almacenar


su contenido en el registro destino.
Las seales de control necesarias son:
CRF: Control del multiplexor de seleccin del registro fuente.
LPC: Seal de carga del PC.
LIR: Seal de carga del IR.
LR@: Seal de carga del R@.
R/W: Seal de lectura/escritura de la memoria.
E: Seal de escritura en el banco de registros.
LN: Carga del registro de estado N.
LZ: Carga del registro de estado Z.
ALU: Operacin de la ALU.
CMUX: Control del multiplexor de entrada a la ALU.
CMAC: Control del multiplexor al que se conecta el registro acumulador.
C@: Control del multiplexor de seleccin de direcciones.
LAC: Carga del registro acumulador (AC).

Fase

CRF LPC

LIR LR@ R/W

LN

LZ

ALU CMUX CMAC C@ LAC

FETCH

DECO

ADDR

LOAD

PROBLEMA 6
a) Explicar breve pero detalladamente la funcin de los siguientes elementos de la unidad de proceso de la mquina rudimentaria.
El registro de instrucciones (IR).
La unidad aritmtico-lgica (ALU).

Captulo 5 Estructura de un computador sencillo

197

b) Completar el siguiente grfico correspondiente a la lgica necesaria para realizar el


clculo de direcciones; explicando por qu se aaden los nuevos elementos.

Solucin:
a) Explicar breve pero detalladamente la funcin de los siguientes elementos de la unidad
de proceso de la mquina rudimentaria.
El registro de instrucciones (IR).
El registro de instrucciones almacena la instruccin que se est ejecutando en el procesador. El dato procede de la memoria y por lo tanto tendr el mismo ancho que la palabra de memoria. El registro de instrucciones se carga durante la fase de FETCH y no
debe modificarse durante ninguna de las fases que pertenecen a la misma instruccin, ya
que en el cdigo de instruccin se incluyen seales de seleccin que afectarn a la ejecucin de la instruccin en esas fases.
La unidad aritmtico-lgica (ALU).
La unidad aritmtico-lgica se encarga de realizar las operaciones aritmtico-lgicas
y modifica los bits N y Z que sirven para tomar las decisiones en las instrucciones de
bifurcacin.
b) Completar el siguiente grfico correspondiente a la lgica necesaria para realizar el
clculo de direcciones de 12 bits; explicando por qu se aaden los nuevos elementos.
La lgica necesaria para el clculo de direcciones es la siguiente:

198

Problemas de fundamentos y estructura de computadores

Al esquema del enunciado se han aadido varios elementos. En primer lugar, se ha


incorporado el sumador !1 que se encarga de hacer el autoincremento de la direccin.
Recordemos que la mquina con la que estamos trabajando supone secuenciamiento implcito que significa que la siguiente instruccin a ejecutar es la siguiente instruccin en
memoria, salvo que una condicin de salto indique lo contrario.
Para calcular la direccin efectiva utilizamos un sumador que la obtiene sumando el
contenido del registro ndice con la direccin base contenida en la instruccin.
PROBLEMA 7
Queremos aadir dos nuevas instrucciones aritmtico-lgicas:
ANDI
Rf,num,Rd
ORI Rf,num,Rd
a) Dar un formato a dichas instrucciones.
b) Redisear la ALU y, si aparecen nuevas seales, disear los sistemas que las crean.
Solucin:
a) Dar un formato a dichas instrucciones.
Para codificar las instrucciones debemos aprovechar los dos cdigos que quedaron
libres en el diseo del repertorio de la mquina rudimentaria. Adems como los dos cdigos de los que disponemos se corresponden con operaciones de inmediato en la ALU
podremos codificarlos sin problemas de la siguiente forma:
ANDI:
Cdigo (2 bits)
IR15-14

3 bits
IR13-11

3 bits
IR10-8

5 bits
IR7-3

3 bits
IR2-0

11

RD

RF1

NUM

OP
010

Cdigo (2 bits)
IR15-14

3 bits
IR13-11

3 bits
IR10-8

5 bits
IR7-3

3 bits
IR2-0

11

RD

RF1

NUM

OP
011

ORI:

Captulo 5 Estructura de un computador sencillo

199

b) Redisear la ALU y, si aparecen nuevas seales, disear los sistemas que las crean.

Reutilizando las seales del cdigo de operacin (OP) no es necesario definir nuevas seales. La seal ALU valdr 0 para las instrucciones de LOAD y 1 para las instrucciones aritmtico-lgicas.
PROBLEMA 8
Sea un computador bsico con un banco de 32 registros, un bus de datos de 16 bits y el
repertorio de instrucciones dado a continuacin:
ADD

RF,RD

RD p RF ! RD

SUB

RF, RD

RD p RF . RD

ADDI

NUM, RD

RD p RD ! NUM

SUBI

NUM, RD

RD p RD-NUM

LOAD

A(RI),RD

RD p MEM(A ! RI)

STORE

A(RI)

MEM(A ! RI) p RF

BCC

Direccin

Salta SI cierto

200

Problemas de fundamentos y estructura de computadores

Contesta las siguientes preguntas:


a) Dar un formato de instruccin vlido.
b) Cul es el rango del nmero inmediato (num) si este se codifica en notacin C2?
c)

Cul es el tamao del contador de programa? Justifica la respuesta

d) Cuntas instrucciones de salto se podran llegar a codificar?


e)

Cuntas instrucciones aritmticas con operandos en registro se pueden aadir? Justifica la respuesta.

f)

Disear la unidad de proceso indicando el tamao de las lneas y las seales de control
necesarias sabiendo que slo las instrucciones aritmticas modifican N y Z.

g) Indicar el valor que deben tomar las seales de control, descritas en el apartado anterior, en la fase Lectura del primer operando.
Solucin:
a) Dar un formato de instruccin vlido.
De las caractersticas de la mquina sabemos tambin que:
Necesitaremos 5 bits para diferenciar los 32 registros del banco.
No nos ndican el tamao de la memoria por lo que habr que asignarles tantos bits
como podamos en las instrucciones de LOAD y STORE.
2 bits (OP) para especificar la operacin de la ALU (tenemos 4 operaciones aritmticolgicas; ADDI, SUBI, ADD y SUB).
3 bits (CC) para especificar la condicin a evaluar (si no nos indican lo contrario utilizamos la configuracin base de la MR).
Dado que no nos indican el tamao del operando inmediato (NUM) podremos definirlo con tantos bits como queden libres en las instrucciones correspondientes.
Con ello el formato de las instrucciones quedar de la siguiente forma:
ADDI
Cdigo
IR15-14

5 bits
IR13-9

7 bits
IR8-2

2 bits
IR1-0

11

RD

NUM

OP % 00

Cdigo
IR15-14

5 bits
IR13-9

7 bits
IR8-2

2 bits
IR1-0

11

RD

NUM

OP % 10

SUBI

Captulo 5 Estructura de un computador sencillo

201

ADD
Cdigo
IR15-14

5 bits
IR13-9

5 bits
IR8-4

2 bits
IR3-2

2 bits
IR1-0

11

RD

RF

XX

OP % 01

Cdigo
IR15-14

5 bits
IR13-9

5 bits
IR8-4

2 bits
IR3-2

2 bits
IR1-0

11

RD

RF

XX

OP % 11

SUB

LOAD
Cdigo
IR15-14

5 bits
IR13-9

5 bits
IR8-4

4 bits
IR3-0

01

RF

RI

Direccin

Cdigo
IR15-14

5 bits
IR13-9

5 bits
IR8-4

4 bits
IR3-0

11

RF

RI

Direccin

Cdigo
IR15-14

5 bits
IR13-9

5 bits
IR8-4

4 bits
IR3-0

11

CC

00000

Direccin

STORE

Bifurcacin:

b) Cul es el rango del nmero inmediato (num) si ste se codifica en notacin C2?
Dado que disponemos de 7 bits, el rango ser [.26, 26 . 1] % [.64, 63].
c)

Cul es el tamao del contador de programa?


Este es uno de los grandes inconvenientes que presentara este computador, ya que la
memoria que podemos direccionar se ha quedado reducida a 24 posiciones, ya que esos
son los bits disponibles en el formato de las instrucciones LOAD y STORE. Como resulta evidente, este diseo sera conveniente modificarlo y conseguir tener acceso a ms
posiciones de memoria, ya que de lo contrario no podramos codificar prcticamente ningn programa. El PC tiene un tamao de 4 bits.

202

Problemas de fundamentos y estructura de computadores

d) Cuntas instrucciones de salto se podran llegar a codificar?


Dado que en la instruccin de salto se han destinado 5 bits para el cdigo de condicin, podramos tener 25 instrucciones diferentes.
e)

Cuntas instrucciones aritmticas con operandos en registro se pueden aadir? Justifica


la respuesta.
Al asignar los cdigos de operacin hemos utilizado IR0 para indicar si la operacin
utiliza un inmediato (IR0 % 0) o un registro (IR0 % 1). El segundo bit IR1 especifica el
tipo de operacin. Para las operaciones con registro disponemos de dos bits libres (IR3-2),
por lo que los cdigos disponibles para nuevas instrucciones seran los 6 recogidos en la
tabla siguiente en la que ya se han ocupado los cdigos de operacin asignados anteriormente a la suma y a la resta entre registros:

f)

Instruccin

IR3-1

IR0

ADD

000

SUB

001

Nueva

010

Nueva

011

Nueva

100

Nueva

101

Nueva

110

Nueva

111

Disear la unidad de proceso indicando el tamao de las lneas y las seales de control
necesarias sabiendo que slo las instrucciones aritmticas modifican N y Z. Las principales modificaciones son las siguientes:
El multiplexor de seleccin de lectura ser de dos entradas para discernir entre RD y
RI/RF.
La instruccin de LOAD no pasa por la ALU, puesto que no modifica los bits N y Z
puede ir directamente a la entrada del banco de registros, donde se utiliza la seal ALU
para cargar el dato de la memoria (ALU % 0) o almacenar el resultado de la ALU
(ALU % 1).
La entrada del segundo operando a la unidad aritmtico-lgica se selecciona ahora con
un solo bit indicado por IR0, que como se ha explicado nos indica si el operando es
inmediato o procede de un registro.
La unidad aritmtico-lgica slo necesita un bit de control para indicar si es una operacin de suma o de resta (IR1).
El tamao de los buses de direcciones se ha reducido a 4 bits.
El tamao de los buses de seleccin de registros se ha aumentado a 5 bits, tanto para
lectura como para escritura.

Captulo 5 Estructura de un computador sencillo

203

g) Indicar el valor que deben tomar las seales de control, descritas en el apartado anterior,
en la fase Lectura del primer operando.
Para hacer la lectura del primer operando debemos cargarlo en el registro auxiliar,
por lo tanto la seal de carga de ese registro debe estar activa LRAUX % 1; CRF debe ser
0 para seleccionar el registro RD, ya que es el que hemos considerado como primer ope-

204

Problemas de fundamentos y estructura de computadores

rando en el diseo (al poner el inmediato en la otra entrada). El resto de seales de carga
las dejaremos a cero para evitar escritura de datos errneos, al igual que las seales de
escritura de memoria y del banco de registros. El resto de seales de seleccin de los
multiplexores no son transcendentes en esta fase y por tanto no es necesario asignarles un
valor concreto.
PROBLEMA 9
Disear detalladamente la ALU de una mquina similar a la MR con el siguiente repertorio
de instrucciones aritmtico-lgicas:
{ADD, SUB, AND, XOR, NOT, ASR, ASL, ADDI, SUBI, ANDI}
Todas ellas, junto con LOAD, modifican N y Z. Dar adems un cdigo de operacin
para cada una.
Cuntas instrucciones aritmtico-lgicas ms se podran aadir?Por qu?
Solucin:
La forma ms sencilla es seguir el esquema de conexin de otros ejercicios:

Para que funcione correctamente debemos definir los cdigos (COD), que controlan el
multiplexor de 8 a 1, de la siguiente forma:

Captulo 5 Estructura de un computador sencillo

Instruccin

ALU

COD

ADD

000

SUB

001

AND

010

XOR

011

NOT

100

ASR

101

ASL

110

ADDI

000

SUBI

001

ANDI

010

205

La eleccin entre el operando que proporciona el registro y el operando inmediato se har


fuera de la unidad aritmtico-lgica y se controlar mediante un bit adicional (ALU) en el
formato de las instrucciones. El nmero total de instrucciones que se pueden codificar son 16
y para ello utilizaramos las posiciones que han quedado libres en la tabla anterior. Es decir:
Instruccin

ALU

COD

Libre

111

Libre

011

Libre

100

Libre

101

Libre

110

Libre

111

PROBLEMA 10
Dibujar detalladamente slo los elementos de la unidad de proceso involucrados en la fase
STORE (la ltima de la instruccin STORE) de una mquina similar a la MR pero con una
memoria de 1K % 210 palabras y un banco de 16 registros. Adems responder razonadamente a las siguientes preguntas:
Cul ser el tamao de IR? Por qu?
Cul ser el tamao de PC? Por qu?

206

Problemas de fundamentos y estructura de computadores

Solucin:
Lo primero que hay que estudiar es el formato de las instrucciones que se debe utilizar y en su
caso comprobar qu anchos de los buses y tamao de los registros se deben modificar. Para
ello hay que tener en cuenta que para direccionar una memoria de 1 K palabras necesitamos
10 bits en los buses de direccin y para acceder a los 16 registros necesitamos 4 bits en los
buses de seleccin de lectura y de escritura, por lo que estos valores deben modificarse en el
formato de las instrucciones original:
LOAD
Cdigo (2 bits)

4 bits

4 bits

10 bits

00

RD

RI

Direccin

Cdigo (2 bits)

4 bits

4 bits

10 bits

01

RF

RI

Direccin

Cdigo (2 bits)

4 bits

4 bits

10 bits

10

CC

0000

Direccin

STORE

Bifurcacin: BCC

Aritmtico-lgicas: ADDI y SUBI


Cdigo (2 bits)

4 bits

4 bits

7 bits

3 bits

11

RD

RF1

NUM

OP

Aritmtico-lgicas: ADD y SUB


Cdigo (2 bits)

4 bits

4 bits

4 bits

3 bits

3 bits

11

RD

RF1

RF2

XXX

OP

El proceso de diseo del formato debe comenzar por la instruccin que ms bits necesite
para su codificacin, en este caso son las instrucciones de LOAD y STORE. Eso nos fijar el
tamao de palabra y nos permitir determinar el tamao mximo del operando inmediato en
las instrucciones que lo utilicen. Para codificar las instrucciones de LOAD y STORE son necesarios 20 bits, por lo que el inmediato NUM podr utilizar hasta 7 bits. Con estos datos ya
podemos contestar a las dos cuestiones planteadas. El registro de instrucciones IR debe tener
el mismo tamao que la palabra para poder obtener la instruccin completa en las fases definidas por la unidad de control, por lo tanto 20 bits. Para poder acceder a toda la memoria
necesitamos 10 bits y dado que las instrucciones se pueden encontrar en cualquier direccin
de la misma el registro contador de programa (PC) debe tener un tamao de 10 bits.

Captulo 5 Estructura de un computador sencillo

207

Vayamos ahora con el diseo. Bastar con modificar los elementos que nos solicitan, teniendo en cuenta los tamaos de los buses y registros y modificando los valores de seleccin
que provienen del IR. As, las nuevas entradas de seleccin del multiplexor selector de registro de lectura sern ahora IR17-14, IR13-10 e IR9-6. Aunque no afecta a la fase solicitada en el
problema, tambin cambiara la seal de seleccin de escritura en el registro SE, ahora debe
leer los bits IR17-14 del registro de instrucciones, tal y como se indica en la figura.

PROBLEMA 11
Para el formato de instrucciones obtenido en el problema 9, indicar qu significado tienen
para la mquina los siguientes datos almacenados como instrucciones en la memoria:
148A8h;

4A001h;

CA441h;

CC4C5h

Solucin:
Dado que la mquina interpreta el cdigo segn el formato de bits obtenido, lo que tenemos
que hacer es traducir los nmeros en hexadecimal a binario, comprobar los dos primeros bits
que nos indicarn el tipo de instruccin y a partir de ah deducir el significado de cada cdigo:
El primer dato es 148A8h % (0001 0100 1000 1010 1000)2. Como vemos los dos bits ms
significativos son 00, por lo que se trata de una instruccin de tipo LOAD, si escribimos esto

208

Problemas de fundamentos y estructura de computadores

bits en el formato obtenido para la instruccin en el problema anterior obtendremos cmo lo


interpretar nuestra mquina:
LOAD
Cdigo (2 bits)

4 bits

4 bits

10 bits

00

RD

RI

Direccin

00

0101

0010

(0010101000)2 % (168)10

La instruccin es por tanto: LOAD DIRECCIN(RI), RD % LOAD 168(R2),R5.


Siguiendo el mismo procedimiento para el resto de datos obtenemos las instrucciones solicitadas:
4A001h % (0100 1010 0000 0000 0001)2 r STORE RF, DIRECCION(RI)
Cdigo (2 bits)

4 bits

4 bits

10 bits

01

RF

RI

Direccin

01

0010

1000

(0000000001)2 % (1)10

La instruccin es por tanto: STORE R2,1(R8).


CA441h % (1100 1010 0100 0100 0001)2 r ADDI RF1,NUM,RD
Cdigo (2 bits)

4 bits

4 bits

7 bits

3 bits

11

RD

RF1

NUM

OP

11

0010

1001

0001000

001

La instruccin es por tanto: ADDI R9, , R2.


CC4C5h % (1100 1100 0100 1100 0101)2 r SUB RF1,RF2,RD
Cdigo (2 bits)

4 bits

4 bits

4 bits

3 bits

3 bits

11

RD

RF1

RF2

XXX

OP

11

0011

0001

0011

000

101

La instruccin es por tanto: SUB R1, R3, R3.


Obsrvese que para las instrucciones aritmtico-lgicas (ADDI y SUB), adems de los dos
bits ms significativos, debemos chequear el cdigo de operacin para saber cul es la instruccin que est codificada. Estos bits se encuentran en las posiciones menos significativas
de la instruccin IR2-0.

Captulo 5 Estructura de un computador sencillo

209

PROBLEMA 12
Para el formato de instrucciones obtenido en el problema 9, escribir la codificacin en hexadecimal equivalente de las siguientes instrucciones:
a) BG AA
b) SUB R1,R3,R5
c)

STORE R2,EE(R1)

Solucin:
a) BG AA
El proceso para obtener las codificaciones es el inverso al anterior. Bastar con codificar las instrucciones siguiendo el formato obtenido en el problema 9:
Bifurcacin: BCC
Cdigo (2 bits)

4 bits

4 bits

10 bits

10

CC

0000

Direccin

En este caso desconocemos cul es el cdigo de condicin (CC). Dado que el enunciado original nos indicaba que partamos de la mquina descrita en la introduccin terica, supondremos los mismos valores pero teniendo en cuenta que los CC ahora tienen 4
bits para adecuarse al formato definido:
Instruccin en lenguaje
ensamblador

CC

Condicin
a evaluar

Tipo de salto

BR direccin

0000

Incondicional

BEQ direccin

0001

Salto SI resultado % 0

BL direccin

0010

Salto SI resultado a 0

BLE direccin

0011

N(OR)Z

Salto SI resultado m 0

BNE direccin

0101

NOT(Z)

Salto SI resultado 0

BGE direccin

0110

NOT(N)

Salto SI resultado n 0

BG direccin

0111

NOT(N (OR) Z)

Salto SI resultado b 0

La instruccin BG AA se codificar por lo tanto como (1001 1100 0000 1010


1010)2 % 9C0AAh
Cdigo (2 bits)

4 bits

4 bits

10 bits

10

CC

0000

Direccin

10

0111

0000

(0010101010)2 % AAh

210

Problemas de fundamentos y estructura de computadores

b) SUB R1,R3,R5
Cdigo (2 bits)

4 bits

4 bits

4 bits

3 bits

3 bits

11

RD

RF1

RF2

XXX

OP

11

R5

R1

R3

000

001

11

0101

0001

0011

000

001

SUB R1,R3,R5 se codificar como (1101 0100 0100 1100 0101)2 % D44C5h
c) STORE R2,EE(R1)
Cdigo (2 bits)

4 bits

4 bits

10 bits

01
01
01

RF
R2
0010

RI
R1
0001

Direccin
EE
0011101110

STORE R2,EE(R1) se codificar como (0100 1000 0100 1110 1110)2 % 484EEh
PROBLEMA 13
Se aaden dos instrucciones aritmetico-lgicas a la MR estudiada en el curso:
XORI

Rf,num,Rd

XOR

Rf1,Rf2 ,Rd

a) Dar una codificacin para las nuevas instrucciones.


b) Cul es ahora el rango de nmeros representables en las instrucciones aritmticas con
operando inmediato? Razona la respuesta.
c)

Cul es ahora el tamao del banco de registros? Razona la respuesta.

d) Cul es ahora el tamao del registro de direcciones R@? Razona la respuesta.


Propuestos
e) Cunto tiempo tardara en ejecutarse la fase fetch? Justifica la respuesta utilizando
los siguientes tiempos de respuesta:
Multiplexor 10 ns ALU 80 ns
Sumador 40 ns Leer / escribir en banco 40 ns
Evaluador de condicin 30 ns Leer / escribir en memoria 100 ns
f)

Disea detalladamente la UP de dicha mquina teniendo en cuenta las nuevas instrucciones.

Solucin:
a) Dar una codificacin para las nuevas instrucciones.
Para codificar las dos nuevas instrucciones debemos utilizar los cdigos OP que quedaron disponibles en el diseo original, que eran 010 y 011. Una posible solucin es:

Captulo 5 Estructura de un computador sencillo

211

XORI RF, NUM, RD


Cdigo (2 bits)

3 bits

3 bits

5 bits

3 bits

11

RD

RF

NUM

010

XOR RF1,RF2,RD
Cdigo (2 bits)

3 bits

3 bits

3 bits

2 bits

3 bits

11

RD

RF1

RF2

XXX

011

Hay que tener en cuenta que esta modificacin aade complejidad al diseo de la
unidad de proceso, puesto que anteriormente los cdigos OP que comenzaban por cero
indicaban que se trataba de una operacin con un operando inmediato (000 para ADDI y
001 para SUBI9, mientras que los que comenzaban por uno (000 a 111) se utilizaban para
operaciones cuyos dos operandos eran registros. Esto ya no es as porque la instruccin
XOR tiene asignado OP % 011 y utiliza dos operandos almacenados en el banco de registro. La solucin es sencilla, nicamente hay que modificar la seal de control de acceso
del multiplexor de entrada de la ALU, haciendo que se seleccionen correctamente los
operandos necesarios para cada instruccin. Las entradas correspondientes a la ALU quedarn ahora como indica la figura.

212

Problemas de fundamentos y estructura de computadores

La seales SEL1SEL0 deben implementar la siguiente lgica:


Instruccin

Tipo (IR15IR14)

OP % IR2IR1IR0

SEL1SEL0

Operando 2

ADDI

11

000

00

Inmediato

SUBI

11

001

00

Inmediato

XORI

11

010

00

Inmediato

XOR

11

011

10

Registro

ADD

11

100

10

Registro

ADDI

11

101

10

Registro

ASR

11

110

10

Registro

AND

11

111

10

Registro

LOAD

00

XXX

01

Memoria

STORE

01

XXX

10

Memoria

Y los valores de las seales ALU2ALU1ALU0 deben seleccionar la operacin correcta tras el rediseo de la ALU para incluir la operacin XOR.
b) Cul es ahora el rango de nmeros representables en las instrucciones aritmticas con
operando inmediato? Razona la respuesta.
No se modifica el tamao del operando inmediato, por lo que seguimos teniendo 5
bits para representar y el rango es [.16, 15].
c)

Cul es ahora el tamao del banco de registros?


8 registros, no se modifica.

d) Cul es ahora el tamao del registro de direcciones R@?


No se modifica el tamao de las direcciones ni de la memoria, por lo que seguir
siendo de 8 bits.
PROBLEMA 14
Para un procesador como el definido en la parte terica y suponiendo los siguientes tiempos de respuesta:
Multiplexor 10 ns
ALU 80 ns
Sumador 40 ns
Leer/escribir en banco de registros 40 ns
Evaluador de condicin 30 ns
Leer / escribir en memoria 100 ns
Cunto tiempo tardara en ejecutarse la fase fetch? Justifica la respuesta utilizando los
siguientes tiempos de respuesta:

Captulo 5 Estructura de un computador sencillo

213

Solucin:
Durante la fase de fetch debemos realizar las siguientes operaciones:
PC p PC ! 1 y cargar la instruccin en el registro IR. Estas dos operaciones se realizan
simultneamente, por lo que para calcular el retardo t de esta etapa debemos calcular cunto
tarda cada una de ellas y ver cul es la operacin con mayor retardo:
tPCpPC!1 % tMULTIPLEXOR ! tSUMADOR % 50 ns

tIRpMEM[PC] % tMULTIPLEXOR ! tMEMORIA % 110 ns

Por lo tanto el retardo de esta estapa viene marcado por la carga del registro de instrucciones y ser 110 ns.

214

Problemas de fundamentos y estructura de computadores

PROBLEMA 15
Sea una mquina similar a la MR con las siguientes modificaciones:
Un banco de 16 registros de 32 bits.
Dos instrucciones lgicas nuevas:
ANDI Rf,num,Rd
ORI Rf,num,Rd
a) Propn un formato de instruccin que optimice los bits.
b) Cul es ahora el rango de nmeros representables en las instrucciones aritmticas con
operando inmediato? Razona la respuesta.
c)

Cul es ahora el tamao mximo que puede tener la memoria? Razona la respuesta.

d) Cul es ahora el tamao del contador de programa? Razona la respuesta.


Solucin:
a) Propn un formato de instruccin que optimice los bits.
Para codificar las nuevas instrucciones debemos aprovechar los dos cdigos que quedaron libres en el diseo del repertorio de la mquina rudimentaria. Adems, como los
dos cdigos de los que disponemos se corresponden con operaciones de inmediato en la
ALU, podremos codificarlos sin problemas de la siguiente forma:
ANDI:
Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

19 bits
IR21-3

3 bits
IR2-0

11

RD

RF1

NUM

OP
010

Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

19 bits
IR21-3

3 bits
IR2-0

11

RD

RF1

NUM

OP
011

ORI:

El resto de instrucciones quedar


Aritmtico-lgicas: ADDI y SUBI
Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

19 bits
IR21-3

3 bits
IR2-0

11

RD

RF1

NUM

OP

Captulo 5 Estructura de un computador sencillo

215

Aritmtico-lgicas: ADD, SUB, AND y ASL


Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

4 bits
IR21-18

15 bits
IR17-3

3 bits
IR2-0

11

RD

RF1

RF2

XXXXX

OP

Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

14 bits
IR21-8

8 bits
IR7-0

00

RD

RI

XXXXXXXXXXXXXX

Direccin

Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

14 bits
IR21-8

8 bits
IR7-0

00

RF

RI

XXXXXXXXXXXXXX

Direccin

LOAD

STORE

Bifurcacin: BEQ, BLT, BRA y BSR


Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

14 bits
IR21-8

8 bits
IR7-0

00

CC

0000

XXXXXXXXXXXXXX

Direccin

b) Cul es ahora el rango de nmeros representables en las instrucciones aritmticas con


operando inmediato?
El rango de nmeros ser el que nos indica el tamao del operando inmediato en el
formato propuesto (19 bits). Suponiendo igualmente representacin en complemento a 2:
[.218, 218 . 1].
c)

Cul es ahora el tamao mximo que puede tener la memoria?


En el formato propuesto, la memoria slo puede tener 256 posiciones que son las que
se pueden acceder con los 8 bits asignados a la direccin. Ahora bien en todos los formatos de las instrucciones que implican una direccin, hay otros 14 bits que no estn en uso
y que podran transformar ese campo en un campo de 22 bits, para permitir un acceso a
una memoria de 4 M % 222 palabras quedando entonces el formato:
LOAD
Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

22 bits
IR21-0

00

RD

RI

Direccin

216

Problemas de fundamentos y estructura de computadores

STORE
Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

22 bits
IR21-0

00

RF

RI

Direccin

Bifurcacin: BEQ, BLT, BRA y BSR


Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

22 bits
IR21-0

00

CC

0000

Direccin

d) Cul es ahora el tamao del contador de programa?


Si ampliamos la memoria como se ha expuesto en el apartado c), el tamao del contador de programa debe ser de 22 bits.
PROBLEMA 16
Dada una mquina que posea el mismo juego de instrucciones que la mquina rudimentaria y donde se desean realizar las siguientes modificaciones:
Trabaje con nmeros en complemento a 2 de 32 bits.
Tenga 16 registros de propsito general (del tamao ms conveniente).
Tenga una memoria de 64 Kpalabras en vez de 256 palabras.
a) Qu modificaciones habra que hacer en la ALU y los buses internos?
b) Y en el registro de instrucciones (IR) y anchura de la memoria?
c)

Cul deber ser la anchura (tamao de palabra) del banco de registros y registros
internos de la UP?

d) Se vern afectadas las unidades funcionales para el clculo de las direcciones de salto de la UP?
e)

Considerando la nueva arquitectura, cmo se puede aumentar el nmero de instrucciones aritmticas hasta 32?

f)

Tendra alguna repercusin en las instrucciones de salto de la mquina rudimentaria?

g) Suponiendo que el banco de registros de la UP permitiera leer dos registros del banco
de registros simultneamente, qu estados del diagrama de Moore de la unidad de
control simplificada habra que modificar y/o eliminar?
Solucin:
a) Qu modificaciones habra que hacer en la ALU y los buses internos?
La ALU debe ser modificada para que todos sus circuitos internos trabajen con nmeros de 32 bits en vez de 16, los buses internos deben ser de las siguientes anchuras:
Banco registros Memoria de 32 bits.
Memoria Registro de instrucciones (IR) de 32 bits.

Captulo 5 Estructura de un computador sencillo

217

Memoria ALU de 32 bits.


Salida multiplexor SELDIR M@ de 16 bits.
b) Y en el registro de instrucciones (IR) y anchura de la memoria?
El registro de instrucciones (IR) debe ser de 32 bits, al igual que la memoria, para
poder almacenar nmeros en complemento a 2 de 32 bits.
c)

Cul deber ser la anchura (tamao de palabra) del banco de registros y registros internos de la UP?
El banco de registros debe tener 16 posiciones de 32 bits cada una. Los registros deben ser de los siguientes tamaos en bits:
Contador de programa (PC) de 16 bits.
R@ de 16 bits.
RA de 32 bits.

d) Se vern afectadas las unidades funcionales para el clculo de las direcciones de salto de
la UP?
La lgica para el clculo de direcciones slo es el sumador que existe entre el banco
de registros e IR y el registro R@, que debe ser de 16 bits en vez de 8 como en la mquina rudimentaria inicial.
e)

Considerando la nueva arquitectura, cmo se puede aumentar el nmero de instrucciones aritmticas hasta 32?
Para poder tener 32 operaciones aritmticas haran falta 5 bits en vez de 3 bits para el
campo de operacin (CO), en las posiciones IR2IR1IR0. Es decir, el formato de instrucciones para las operaciones aritmticas quedara en 32 bits, para la nueva mquina rudimentaria propuesta en este ejercicio, de la forma:
Aritmtico-lgicas entre registros
Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

4 bits
IR21-18

13 bits
IR17-5

5 bits
IR4-0

11

RD

RF1

RF2

XXXXX

OP

Aritmtico-Lgicas registro-inmediato

f)

Cdigo
IR31-30

4 bits
IR29-26

4 bits
IR25-22

17 bits
IR21-5

5 bits
IR4-0

11

RD

RF1

NUM

OP

Tendra alguna repercusin en las instrucciones de salto de la mquina rudimentaria?


Esta modificacin no tendra ninguna repercusin en el formato de las instrucciones
de salto de la mquina rudimentaria.

g) Suponiendo que el banco de registros de la UP permitiera leer dos registros del banco de
registros simultneamente, qu estados del diagrama de Moore de la unidad de control
simplificada habra que modificar y/o eliminar?

218

Problemas de fundamentos y estructura de computadores

Se podra eliminar el estado DECO del diagrama de Moore ya que la activacin de la


seal LRAUX no sera necesaria (dicho registro desaparecera de la unidad de proceso al
poder leerse los dos registros fuente en el mismo ciclo) y la otra seal de control generada en dicho estado (LR@) es compatible con los estados que aparecen a continuacin en
el diagrama simplificado, por lo que se activara en dichos estados directamente. Como
resultado, todas las operaciones reduciran en uno el nmero total de ciclos que tardan en
ejecutarse. Por ejemplo, las operaciones aritmtico-lgicas pasaran a tardar 2 ciclos
(FETCH ! ARIT) en vez de 3, de manera anloga a como sucedera con el resto de tipos
de instrucciones.
PROBLEMA 17
Se desea aadir a la mquina rudimentaria bsica dos nuevas instrucciones:
XOR Rf1, Rf2, Rd: Calcula la O-exclusiva bit a bit de dos operandos almacenados
en registros y deposita el resultado en un registro destino.
NOT Rf, Rd: Realiza la negacin de todos los bits de un operando y deposita el resultado en un registro destino.
a) Define un formato vlido para las instrucciones aritmtico-lgicas de la nueva mquina, especificando todos los campos de las instrucciones y su significado, sin modificar
la longitud total de las instrucciones, ni la longitud de los operandos inmediatos.
b) Disea la nueva ALU teniendo en cuenta las decisiones del apartado anterior. Adems, si la unidad de control se viera afectada por el diseo realizado se deben indicar
los cambios que son necesarios en sus diagramas de estados.
Solucin:
a) Define un formato vlido para las instrucciones aritmtico-lgicas de la nueva mquina,
especificando todos los campos de las instrucciones y su significado, sin modificar la longitud total de las instrucciones, ni la longitud de los operandos inmediatos.
Existen varias posibilidades para la codificacin, con objeto de no modificar la lgica
de seleccin en el multiplexor de entrada a la ALU, proponemos el siguiente formato, en
el que se utilizan los bits IR4-3, para asignar los nuevos cdigos. De esta forma, todas las
operaciones que utilizan dos operandos en registro tienen asignado un cdigo de OP con
IR2 % 1.
Instruccin

Cdigo
IR15-14

4 bits
IR13-116

4 bits
IR10-8

4 bits
IR7-5

2 bits
IR4-3

3 bits
IR2-0

ADD

11

RD

RF1

RF2

00

100

SUB

11

RD

RF1

RF2

00

101

ASR

11

RD

RF2

00

110

AND

11

RD

RF1

RF2

00

111

XOR

11

RD

RF1

RF2

01

100

NOT

11

RD

RF2

01

101

Captulo 5 Estructura de un computador sencillo

219

b) Disea la nueva ALU teniendo en cuente las decisiones del apartado anterior.
Para la identificacin de las nuevas operaciones en los bits de control de la ALU utilizaremos la funcin: F % IR3IR2. Funcin a realizar por el multiplexor de seleccin de la
ALU (que pasa a ser de 8 a 1 en vez de 4 a 1):
F

IR1

IR0

Instruccin

ADD

SUB

ASR

AND

XOR

NOT

Y la propuesta de nueva arquitectura interna de la ALU es:

220

Problemas de fundamentos y estructura de computadores

PROBLEMA 18
La tabla representa un programa en lenguaje mquina de la MR.
Dir

HEX

00

F818

01

FF09

02

9005

03

7F06

04

8001

05

C004

Cdigo
mquina

a) Traduce a ensamblador las instrucciones.


b) Si el programa se detiene tras ejecutar la instruccin de la direccin 05, qu habr
almacenado en la direccin de memoria 06?
c)

Cuntas veces se ejecuta la instruccin de la direccin 01?

Solucin:
a) Traduce a ensamblador las instrucciones.
Cdigo
mquina

Dir

HEX

IR15 IR14 IR13 IR12 IR11 IR10 IR9 IR8 IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0

00

F818

1111 1000
0001 1000

01

FF09

1111 1111
0000 1001

02

9005

1001 0000
0000 0101

03

7F06

0111 1111
0000 0110

04

8001

1000 0000
0000 0001

05

C004

1100 0100
0000 0000

Interpretando los bits IR15IR14 podemos ver qu tipo de instruccin estamos codificando y en el caso de las instrucciones ALU, adems IR2 para saber si es una operacin
con inmediato o entre registros:

Captulo 5 Estructura de un computador sencillo

Dir

HEX

Cdigo mquina

IR15IR14

IR2

Tipo

00

F818

1111 1000 0001 1000

11

ALU con inmediato

01

FF09

1111 1111 0000 1001

11

ALU con inmediato

02

9005

1001 0000 0000 0101

10

Salto

03

7F06

0111 1111 0000 0110

01

STORE

04

8001

1000 0000 0000 0001

10

Salto

05

C004

1100 0000 0000 0100

11

ALU entre registros

221

Aplicando el siguiente formato de instrucciones obtendremos los operandos, condiciones


y cdigos OP de las instrucciones correspondientes.
ALU entre
registros

Cdigo
IR15-14

RD
IR13-11

RF1
IR10-8

RF2
IR7-5

XX
IR4-3

Salto

Cdigo
IR15-14

COND
IR13-11

000
IR10-8

Direccin
IR7-0

STORE

Cdigo
IR15-14

RD
IR13-11

RI
IR10-8

Direccin
IR7-0

LOAD

Cdigo
IR15-14

RF
IR13-11

RI
IR10-8

Direccin
IR7-0

Instruccin ensamblador

OP
IR2-0

Dir

HEX

00

F818

ALU con
inmediato

Cdigo
IR15-14
11

RD
RF1
IR13-11 IR10-8
111
000

Inmediato
IR7-2
00011

OP
IR2-0
000

ADDI R0,3,R7

01

FF09

ALU con
inmediato

Cdigo
IR15-14
11

RD
RF1
IR13-11 IR10-8
111
111

Inmediato
IR7-2
00001

OP
IR2-0
001

SUBI R7,1,R7

02

9005

Salto

Cdigo
IR15-14
10

COND 000
IR13-11 IR10-8
010
000

Direccin
IR7-0
0000 0101

BL 05h

03

7F06

STORE

Cdigo
IR15-14
01

RF
RI
IR13-11 IR10-8
111
111

Direccin
IR7-0
0000 0110

STORE R7, 06(R7)

04

8001

Salto

Cdigo
IR15-14
10

COND 000
IR13-11 IR10-8
000
000

Direccin
IR7-0
0000 0001

BR 01h

05

C004

ALU entre
registros

Cdigo
IR15-14
11

RD
RF1
IR13-11 IR10-8
000
000

RF2
IR7-5
000

Instruccin

XX
IR4-3
00

OP
IR2-0
100

ADD R0,R0,R0

222

Problemas de fundamentos y estructura de computadores

b) Si el programa se detiene tras ejecutar la instruccin de la direccin 05, qu habr almacenado en la direccin de memoria 06?
La ejecucin completa del programa ser:
ADDI R0,#3,R7;
SUBI R7,#
# 1,R7
BL 05h;
STORE R7, 06(R7);
BR 01h;
SUBI R7,#
# 1,R7
BL 05h;
STORE R7, 06(R7);
BR 01h;
SUBI R7,#
# 1,R7
BL 05h;
STORE R7, 06(R7);
BR 01h;
SUBI R7,#
# 1,R7
BL 05h;
ADD R0,R0,R0;
END

c)

R7=3
R7=R7-1=2
NO SALTA
MEM[8]=R7=2
SALTA A LA POSICIN 1
R7=R7-1=1
NO SALTA
MEM[7]=R7=1
SALTA A LA POSICIN 1
R7=R7-1=0
NO SALTA
MEM[6]=R7=0
SALTA A LA POSICIN 1
R7=R7-1=-1
SALTA A O5h PORQUE LA OPERACIN ANTERIOR FUE<0
nop

El contenido de la posicin 6 ser por lo tanto MEM[06h] %0000h.


Cuntas veces se ejecuta la instruccin de la direccin 01?
Cuatro.

PROBLEMA 19
Considere que el tiempo de respuesta de los diferentes elementos de la ruta de datos de la
mquina rudimentaria es el siguiente:
45 ns para los multiplexores
10 ns para el incrementador del PC
25 ns para el sumador de direcciones
40 ns para el extensor de signo
20 ns para la evaluacin de la condicin de salto
70 ns para leer un registro del banco de registros
120 ns el tiempo de respuesta de la ALU con operaciones aritmtico-lgicas
25 ns el tiempo de respuesta de la ALU cuando la informacin pasa sin operar.
80 ns para una lectura de memoria y 120 ns para una escritura.
Cul sera el perodo mnimo de la seal de reloj para poder ejecutar correctamente
una instruccin en la MR siguiendo el diagrama simplificado?
Solucin:
Para averiguar el perodo mnimo debemos calcular el retardo de todas las fases de ejecucin,
y para esto debemos analizar qu operaciones realiza la unidad de proceso. Suponiendo el
diagrama de estados simplificado de la mquina rudimentaria, tenemos:

Captulo 5 Estructura de un computador sencillo

223

ESTADO FETCH:
tPCpPC!1 % tMULTIPLEXOR ! tINCREMENTADOR % 55 ns
tIRpMEM[PC] % tMULTIPLEXOR ! tLECTURAMEMORIA % 125 ns
ESTADO DECO:
tLECTURADELPRIMEROPERANDO % tMULTIPLEXOR ! tLECTURABANCOREGISTROS % 115 ns
tCLCULODIRECCIN %tMULTIPLEXOR !tLECTURABANCO !tSUMADORDIRECCIONES %140 ns
tEVALUACINDECONDICIN % 20 ns
ESTADO LOAD:
tESCRITURAENBANCODESDEMEMORIA % tMULTIPLEXOR ! tLECTURADEMEMORIA !
! tMULTIPLEXOR ! tALU % 195 ns
ESTADO STORE:
tSELECCINDELADIRECCIN % tMULTIPLEXOR % 45 ns
tESCRITURAENMEMORIADESDEBANCO % tMULTIPLEXOR ! tLECTURABANCOREGISTROS !
! tESCRITURAENMEMORIA % 235 ns
ESTADO ARIT:
tSEGUNDOOPERANDOYALU % tMULTIPLEXOR ! tLECTURABANCOREGISTROS !
! tMULTIPLEXOR ! tALU % 280 ns
tIRpMEM[PC] % tMULTIPLEXOR ! tLECTURAMEMORIA % 125 ns
tPCpPC!1 % tMULTIPLEXOR ! tINCREMENTADOR % 55 ns
ESTADO BRANCH:
tIRpMEM[R@] % tMULTIPLEXOR ! tLECTURAMEMORIA % 125 ns
tPCpR@!1 % tMULTIPLEXOR ! tINCREMENTADOR % 55 ns
El estado que ms tiempo necesita para ejecutarse ser el de ARIT, que tiene un tiempo de
lectura del segundo operando y realizacin de la operacin aritmtico-lgica de 280 ns, por lo
tanto ste ser el tiempo ciclo mnimo que debemos asignar al procesador para que funcione
correctamente con todas las instrucciones.
PROBLEMA 20
Considere el siguiente programa, escrito en cdigo ensamblador de la MR:
03h
04h
05h
06h
07h
08h
09h

LOAD 0(R0),R1
SUBI R1,#6,R1
BLE 7
BR 9
LOAD 1(R0),R2
STORE R1,2(R0)
ADD R1,R2,R3

224

Problemas de fundamentos y estructura de computadores

a) Indique el orden de ejecucin del cdigo.


b) Cunto tiempo tardara en ejecutarse en la mquina del apartado a) si sta sigue el
diagrama simplificado de la MR y tiene un tiempo de ciclo de 50 ns?
c)

Calcule el tamao del cdigo (n.o de bits) del programa.

Solucin:
a) Indique el orden de ejecucin del cdigo.
Suponiendo que se empieza a ejecutar por la primera instruccin (direccin 03h) y
que las otras posiciones estn vacas:
03h
04h
05h
07h
08h
09h

LOAD 0(R0),R1;
SUBI R1,#6,R1;
BLE 7;
LOAD 1(R0),R2;
STORE R1,2(R0);
ADD R1,R2,R3;

R1=MEM[0]=0000h
R1=R1-6=-6
SALTA A 07h
R2=MEM[1]=0000h
MEM[2]=-6
R3=R1+R2=-6

b) Cunto tiempo tardara en ejecutarse en la mquina del apartado a) si sta sigue el diagrama simplificado de la MR y tiene un tiempo de ciclo de 50 ns?
Para calcular el tiempo que tarda en ejecutarse debemos ver por qu fases pasa cada
instruccin, contar el total de fases que se ejecutan segn el apartado a) y multiplicar por
el tiempo de ciclo:
03h
04h
05h
07h
08h
09h

LOAD 0(R0),R1;
SUBI R1,#6,R1;
BLE 7;
LOAD 1(R0),R2;
STORE R1,2(R0);
ADD R1,R2,R3;

FETCH+DECO+LOAD
FETCH+DECO+ARIT
DECO+BRANCH
DECO+LOAD
FETCH+DECO+STORE
FETCH+DECO+ARIT

En total son 16 ciclos y por lo tanto el tiempo de ejecucin total del programa ser
16*50 ns % 800 ns.
c)

Calcule el tamao del cdigo (n.o de bits) del programa.


Si la palabra de memoria son 16 bits, el tamao del programa Sprograma ser:
Sprograma % 16 bits * 7 instrucciones % 112 bits

5.6 Problemas propuestos


PROBLEMA 1
El diagrama siguiente representa una posible codificacin de la unidad de control de la mquina rudimentaria. Implemente la unidad de control mediante un contador mdulo 8 (con
seal de Load prioritaria sobre la de Contar y Reset asncrono). La mquina secuencial slo
debe representar las transiciones de estados (no es necesario implementar las salidas de la UC
en cada estado) en funcin de las seales Cond, OP15 y OP14.

Captulo 5 Estructura de un computador sencillo

225

PROBLEMA 2
Partiendo del diagrama de estados de la MR simplificado, indica cuntos ciclos tardar en
ejecutarse el siguiente programa:
SUB R1, R2, R5
ADDI R3, 1, R1
LOAD 3(R5), R1
STORE R4, 1(R4)
ASR R2, R7
PROBLEMA 3
a) Suponiendo que el tiempo de respuesta de los diferentes elementos de la UP de MR es el
siguiente, indique la frecuencia mxima de reloj a la que puede trabajar la mquina rudimentaria teniendo en cuenta que los multiplexores no retardan las seales y que el estado
ms lento es el de LOAD:
10 ns para el multiplexor SELDIR.
20 ns para los multiplexores SELREG y SELDAT.
15 ns para el incrementador del PC y para el sumador de direcciones.
80 ns para el extensor de signo.
20 ns para la evaluacin de la condicin de salto.
40 ns para leer un registro del banco de registros.
120 ns el tiempo de respuesta de la ALU.
40 ns para una lectura de memoria y 100 ns para una escritura.

226

Problemas de fundamentos y estructura de computadores

b) Cul sera el perodo mnimo de la seal de reloj para poder ejecutar correctamente una
instruccin de STORE en la MR modificada? (considere cada etapa que puede atravesar
una instruccin de STORE).
c)

Imagine ahora que una escritura en memoria tarda 180 ns, pero no queremos modificar el
perodo de reloj determinado anteriormente. Funcionar la MR correctamente?

PROBLEMA 4
a) Cul es la instruccin de la MR que se codifica en hexadecimal 1234?
b) Cul es la codificacin de SUBI R1,2,R3 en hexadecimal?
PROBLEMA 5
Sea un computador de caractersticas similares a la mquina rudimentaria pero con las siguientes modificaciones:
Una memoria ampliada a 32 K palabras.
Un repertorio de 128 instrucciones aritmtico-lgicas, adems de las otras.
a) Dar un posible formato para las instrucciones que aproveche el mximo nmero de bits.
b) Ha cambiado el registro R@? Por qu?
c)

Ha cambiado el rango del nmero inmediato? Por qu?

d) Por qu motivo se puede realizar en una sola fase la descodificacin de la instruccin, la


evaluacin de la condicin, el clculo de la direccin efectiva y la bsqueda del primer
operando?
e)

Suponer que los multiplexores tienen un retardo de 5 ns, los sumadores de 35 ns, leer en
el banco de registros y evaluar la condicin de salto de 40 ns y la ALU y la memoria de
110 ns, cunto tardar en ejecutarse la fase descrita en el apartado anterior? Razona la
respuesta.

PROBLEMA 6
Considere el siguiente programa escrito en cdigo ensamblador de la MR:
.ORG
DATOS:
RES:
.BEGIN
INICIO:

SIGUE:
FIN:

100
.DW 5,0
.RW 1
INICIO
LOAD 100(R0),R1
SUBI R1,#6,R1
BLE SIGUE
BRA FIN
LOAD 101(R0),R2
STORE R1,RES(R0)
ADD R1,R2,R3
.END

a) Indique el orden de ejecucin del cdigo.


b) Cuntos ciclos tarda en ejecutarse usando el diagrama simplificado de la MR?

Captulo 5 Estructura de un computador sencillo

c)

227

En qu direccin est almacenada la instruccin LOAD 101(R0),R2 ?

d) Especifique el contenido de los registros PC y R@ durante las fases DECO y BRANCH


de la instruccin BRA fin.
e)

Indique el contenido de los registros RZ y RN tras la ejecucin de la instruccin LOAD


101(R0),R2 . Y tras ejecutar la instruccin STORE R1,res(R0) ?

f)

Calcule el tamao del cdigo del programa. Cul sera el tamao de este mismo cdigo
si la mquina rudimentaria dispusiera de 32 registros de propsito general en lugar de
solamente 8?

PROBLEMA 7
Considere que el tiempo de respuesta de los diferentes elementos de la ruta de datos de la
mquina rudimentaria es el siguiente:
15 ns para el multiplexor SELDIR.
25 ns para los multiplexores SELREG y SELDAT.
25 ns para el incrementador del PC.
30 ns para el sumador de direcciones.
5 ns para el extensor de signo.
20 ns para la evaluacin de la condicin de salto.
50 ns para leer un registro del banco de registros.
125 ns el tiempo de respuesta de la ALU con operaciones aritmtico-lgicas.
35 ns el tiempo de respuesta de la ALU cuando la informacin pasa sin operar.
50 ns para una lectura de memoria y 90 ns para una escritura.
Sabiendo que la fase de instruccin que ms tarda en ejecutarse es la fase de ARIT, cul
sera la frecuencia mxima de trabajo?
PROBLEMA 9
Indique cmo afectara a los elementos de la ruta de datos y al formato de instrucciones de la
MR las siguientes modificaciones por separado y de forma acumulativa para cada apartado:
a) Cambiar la memoria de 256 palabras por una de 2 K.
b) Un banco de registros de 64 posiciones.
c)

En las operaciones aritmtico-lgicas el segundo operando indica tanto el registro fuente


2 como el registro de destino.

d) Implementar 32 operaciones aritmtico-lgicas.


PROBLEMA 10
Para hacer ms rpidos los movimientos de datos vamos a cambiar la instruccin LOAD, de
modo que ahora ya no modifica los bits N y Z.
a) Dibujar detalladamente la unidad de proceso con este cambio.
b) Habra algun cambio en la ALU?

Una vez que se ha estudiado en el captulo anterior el formato de instrucciones y el significado de las mismas para el procesador, vamos a estudiar diversos ejemplos de programacin en
ensamblador. El lenguaje ensamblador permite al programador realizar programas en un lenguaje mnemnico que facilite la tarea de especificar al procesador las operaciones que debe
realizar. Una vez ensamblado el programa se obtiene un cdigo mquina o binario (instrucciones codificadas en binario) que es lo que comprende en realidad la mquina ya que, como
se ha explicado en el captulo anterior, de estas instrucciones el procesador puede obtener
toda la informacin importante para implementar el programa solicitado.
Un programa en ensamblador se compone bsicamente de instrucciones y directivas. Las
directivas son partes del programa que se encargan de controlar las acciones auxiliares necesarias para el proceso de ensamblado, definir variables y constantes, reservar posiciones de
memoria, identificar partes de comienzo, fin y etiquetas para implementar los bucles, especificar posiciones de memoria donde se almacenan los datos o definir bloques autocontenidos
(macros). Las instrucciones son las que implementan el programa como tal.
En este captulo se ha utilizado el lenguaje ensamblador de la mquina rudimentaria explicado anteriormente, aunque los conceptos son extensibles a otras arquitecturas. Para implementar un programa en ensamblador seguiremos el proceso siguiente. Primero obtenemos el
pseudocdigo, a partir de l el diagrama de flujo y despus se traduce a cdigo en ensamblador. El repertorio de instrucciones que vamos a seguir es el siguiente.

230

Problemas de fundamentos y estructura de computadores

6.1 Instrucciones aritmtico-lgicas


Instruccin

Descripcin

Notacin

ADD RF1,RF2,RD

Suma el contenido de dos registros (RF1 y RF2)


y lo almacena en otro registro (RD)

RDpRF1!RF2

SUB RF1,RF2,RD

Resta el contenido de dos registros (RF1 y RF2)


y lo almacena en otro registro (RD)

RDpRF1-RF2

ASR RF,RD

Desplazamiento a la derecha de RF y almacena el


resultado en RD. Mantiene signo

RDpARF

AND RF1,RF2,RD

Multiplicacin lgica (AND) del contenido de dos


registros (RF1, RF2) y almacena el resultado en otro RDpRF1(AND)RF2
registro (RD)

ADDI RF1,NUM,RD

Suma el contenido de un reg. (RF1) con un nmero


inmediato (NUM) y almacena el resultado en otro
registro (RD)

RDpRF1!NUM

SUBI RF1,NUM,RD

Resta el contenido de un reg. (RF1) con un nmero


inmediato (NUM) y almacena el resultado en otro
registro (RD)

RDpRF1-NUM

Todas ellas actualizan los bits de condicin Z y N.

6.2 Instrucciones de acceso a memoria


Instruccin

Descripcin

Notacin

LOAD A(RI),RD

Carga el contenido de la direccin efectiva (E.A).


en el registro RD
E.A. % RI ! A

RDpMEM[RI!A]

STORE RF, A(RI)

Almacena el contenido del registro RF en la posicin


de memoria (E.A).
E.A. % RI ! A

RDpMEM[RI!A]

Slo LOAD actualiza los bits de condicin Z y N.

6.3 Instrucciones de salto (BCC)


Las instrucciones de salto evalan una condicin con respecto a la anterior instruccin. Para
evaluar si se cumple o no la instruccin se comprueba el valor de los registros de estado N y
Z, que habrn sido modificados por la instruccin anterior.

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

Instruccin

Descripcin

BL DIR

Salta a DIR si menor (si N % 1)

BG DIR

Salta a DIR si mayor (si N % 0 y Z % 0)

BEQ DIR

Salta a DIR si igual (si Z % 1)

BNE DIR

Salta a DIR si distinto (si Z % 0)

BLE DIR

Salta a DIR si menor o igual (si N % 1 o Z % 1)

BGE DIR

Salta a DIR si mayor o igual (si N % 0 o Z % 1)

BR DIR

Salto incondicional % Salta siempre a DIR

231

Ninguna modifica los bits de estado.

6.4 Directivas
Directiva

Operacin

.DW VALOR1, VALOR2, ... VALORN

Define N posiciones de memoria consecutivos con


valores iniciales VALOR1, VALOR2, ... VALORN

.RW N

Reserva N posiciones de memoria consecutivas sin valor


inicial

IDENTIFICADOR % VALOR

Define un identificador con el valor asociado al valor,


por ejemplo una constante

.BEGIN ETIQUETA

Indica la instruccin de comienzo de ejecucin. Para


identificarla en el programa aparecer la instruccin
precedida de:
ETIQUETA:

.END

Indica el final de la ejecucin del programa

.ORG VALOR

Indica que la instruccin escrita a continuacin se


almacenar en la posicin de memoria dada por VALOR

.DEF NOMBRE MACRO

PARAMETROS

Indica el inicio de una macro (similar a una subrutina)

.ENDDEF

Indica el final de una macro

6.5 Diagramas de flujo


Para realizar el diagrama de flujo, identificaremos los bloques ms habituales a partir de los
cuales desarrollaremos el cdigo. Un ejemplo de este proceso se recoge en el problema 1 y en
el resto de problemas resueltos el lector puede encontrar ejemplos de cmo se traducen los
bloques recogidos en las figuras siguientes.

232

Problemas de fundamentos y estructura de computadores

Nota aclaratoria:
En todos los problemas resueltos en este captulo tanto las instrucciones como las directivas
las escribiremos en maysculas.

6.6 Problemas resueltos


PROBLEMA 1
El siguiente algoritmo cambia el signo de todos los nmeros negativos de un vector v de
N elementos. Traducir el siguiente pseudocdigo a ensamblador de la mquina rudimentaria:
for i:%0 to N-1
if v[i]a0 then
v[i]:%0-v[i];
end
end

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

233

Solucin:
En este primer ejercicio y con objeto de simplificar vamos a obviar la forma en cmo han
llegado los datos a la memoria. El vector V se encuentra almacenado de modo que cada
elemento ocupa 1 palabra. Para localizar el vector en memoria basta con conocer la direccin
del primer elemento. Supongamos que esta direccin tiene asignada la etiqueta V. Del mismo modo hemos asignado otra a etiqueta N el nmero de elementos que tiene el vector.
Lo primero que vamos a hacer es realizar el diagrama de flujo que se corresponde con el
algoritmo solicitado. Comenzaremos dibujando el diagrama del FOR-TO, particularizando el
contador con i. A continuacin, nos ocuparemos del cuerpo del for, que en este caso incluye
un bloque IF-THEN. Una vez dibujado el esquema del bloque, nos ocupamos del cuerpo del
THEN, que se trata de una simple asignacin y que, en principio, ya no se puede descomponer
ms. El diagrama mostrado en la figura, as construido, supone una buena aproximacin.

Sin embargo, la mquina rudimentaria an no sera capaz de ejecutarlo. El motivo es que


las asignaciones presentes no hacen referencia a los componentes de la mquina. Es decir, es
necesario particularizar el diagrama de flujo a los registros e instrucciones de nuestra mquina.
Una forma sencilla de realizar este proceso es hacer una pasada ms detallada sobre el
diagrama de flujo general:
i p 0: La variable i es el contador del FOR. Por lo tanto conviene utilizar uno de
los 8 registros del banco. El registro elegido har las veces de i a lo largo del diagrama. Por ejemplo R1.
v[i] , 0: La comparacin es en definitiva una resta y por tanto una operacin aritmtica. Por ello es necesario que al menos su primer operando tenga direccionamiento directo (el segundo puede ser directo o inmediato como es el caso). La solucin es descomponer este rombo en dos: Primero volcar el contenido de v[i] en un registro libre
(R2, por ejemplo) y despus comparar el contenido de dicho registro con 0.
v[i] p 0 . v[i]: Esta instruccin tambin es demasiado compleja para la mquina rudimentaria. De nuevo se trata de una resta y por tanto el primer operando debe encontrarse

234

Problemas de fundamentos y estructura de computadores

en el banco de registros. La solucin es elegir el registro R0, que siempre vale 0. El


segundo operando es v[i]; pero este dato est almacenado en R2. Por ltimo el resultado
de una operacin aritmtica se debe volcar siempre en un registro. Elegimos por ejemplo R3. Con todo, la instruccin debera ser: R3 p R0 . R2. Pero es necesario una caja
ms para volcar el contenido de R3 en la palabra v[i]. Teniendo en cuenta esto se redibuja el diagrama de flujo con ms detalle:

Recorriendo el diagrama en vertical, comenzando por arriba, y traduciendo cada caja al


lenguaje mquina de la mquina rudimentaria finalmente se obtiene:
.BEGIN INICIO
V:
.DW -1,-2,-3,-4,-5,-6
N:
.DW 6
INICIO: ADDI R0,#0,R1
FOR:
SUBI R1,#N,R0
BGE FIN
LOAD V(R1),R2
SUBI R2,#0,R0
BGE INC
SUB R0,R2,R3
STORE R3,V(R1)
INC:
ADDI R1,#1,R1
BR FOR
FIN:
.END

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

235

PROBLEMA 2
Traducir el siguiente pseudocdigo a ensamblador:
Vsize: 10; {VSIZE ES UNA CONSTANTE, NO UNA ETIQUETA}
V: [2,-3,5,1,-6,0,0,3,5,4];
W: vector vacio de vsize elementos;
For i:%0 to Vsize-1
W[i]:%V[Vsize-1-i];
Solucin:
En este ejemplo podemos reutilizar el bloque for del problema anterior. Reservamos las variables y definimos las constantes:
.BEGIN INICIO
VSIZE=10
V:
.DW 2,-3,5,1,-6,0,0,3,5,4
W:
.RW 10
INICIO: ADDI R0,#0,R1; R1=I
ADDI R0,#VSIZE,R2; R2=N
SUBI R2,#1,R2; R2=N-1
FOR:
SUBI R1,#VSIZE,R0
BGE FIN
SUB R2,R1,R3; R3=N-1-I
LOAD V(R3),R4
STORE R4,W(R1)
ADDI R1,#1,R1
BR FOR
FIN:
.END

PROBLEMA 3
Traducir el siguiente pseudocodigo a ensamblador:
(Dibujar tambin el diagrama de flujo)
Vsize=7
v : [4,9,6,0,8,3,7]
k :% 6;
x:%0;
repeat
if (v[k]b5) AND (x=0) then
w[k]:= v[k]!2
else
x:=v[k];
w[k]:=0
endif
k:=k!1;
until ka0

236

Problemas de fundamentos y estructura de computadores

Solucin:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

.BEGIN

237

INICIO

VSIZE=7
V:

.DW 4,9,6,0,8,3,7

W:

.DW -1,-1,-1,-1,-1,-1,-1

K:

.DW 6

X:

.DW 0

INICIO: LOAD K(R0),R1; R1:=K


REPEAT: LOAD V(R1),R3; R3:=V(K)
SUBI R3,#5,R0; R3b5?
BLE ELSE
LOAD X(R0),R2; R2:=X
SUBI R2,#0,R0; R2=0?
BNE ELSE
ADDI R3,#2,R4; W(k):=V(K)!2
STORE R4,W(R1)
BR FINIF
ELSE:

STORE R3,X(R0); X:=V(K)


STORE R0,W(R1); W(K):=0

FINIF:

SUBI R1,#1,R1
BGE REPEAT ;EL RESULTADO DEBE SER W=[0,B,8,0,0,0,9]

.END

PROBLEMA 4
Codificar el siguiente algoritmo en el lenguaje mquina de la MR. Dibujar tambin un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo
posible.
v % [2 0 8 1];
X % 1; Y % 2;
Vsize%4;
{--Algoritmo--}
for k%0 to vsize.1
while (Xa3)and(YaX)
X:%v(k);
v(k):%Y;
x:%x!y;
y:%y.1;
end

238

Problemas de fundamentos y estructura de computadores

Solucin:

.BEGIN INICIO
V:
.DW 2,0,8,1
X:
.DW 1
Y:
.DW 2
INICIO:
LOAD X(R0),R1; R1<-X
LOAD Y(R0),R2; R2<-Y
ADD R0,R0,R7; R7<-0
FOR:SUBI R7,#4,R0; vsize=4

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

BGE FIN
WHILE:
SUBI R1,#4,R0; X<3?
BGE INC
SUB R2,R1,R0; Y<X?
BGE INC
LOAD V(R7),R1; R1<-V(I)
STORE R2,V(R7); V(I)<-Y
BR WHILE
INC:ADDI R7,#1,R7; I++
ADD R1,R2,R1; X:=X+Y
SUBI R2,#1,R2; Y=Y-1
BR FOR
FIN:STORE R1,X(R0)
STORE R2,Y(R0)
.END

El resultado debe ser:


Posicin

Contenido

Variable

00

0002

V(0)

01

0001

V(1)

02

0000

V(2)

03

0001

V(3)

04

0007

05

FFFE

PROBLEMA 5
Codificar en el lenguaje de la mquina rudimentaria el siguiente algoritmo:
VSIZE=7;
V=[0,2,4,1,5,3,7];
W=ARRAY[0..VSIZE-1];
X=0;
FOR K=0 TO VSIZE-1
IF (V[K]<=3 AND (X=0) THEN
W[K]:=X-V[K];
ELSE
X:=X+1;
W[K]:=0;
END
END

239

240

Problemas de fundamentos y estructura de computadores

Solucin:

.BEGIN

INICIO

VSIZE=7;
V

.DW 0,2,4,1,5,3,7

.RW VSIZE

.DW 0

INICIO:

ADD R0,R0,R1

FOR:

SUBI R1, #VSIZE,R0


BGE FIN
LOAD V(R1),R2
LOAD X(R0),R3

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

241

SUBI R2,#3,R0
BG ELSE
SUBI R3,#0,R0
BNE ELSE
THEN:

SUB R3,R2,R4
STORE R4, W(R1)
BR FINIF

ELSE:

ADDI R3,#1,R3
STORE R0, W(R1)

FINIF:

ADDI R1,#1,R1
BR FOR

FIN:

STORE R3,X(R0)
.END

PROBLEMA 6
Reescribe el siguiente algoritmo en el lenguaje de la mquina rudimentaria.
Dibuja tambin el diagrama de flujo.
vsize % 8
V: vector vaci de vsize elementos
W: [-3, -2, -1, 0, 2, 4, 6, 8]
cont :% 1;
While (cont m 7)
If W(cont-1) n W(cont!1) then
V(cont)%W(cont)/2;
Else
V(cont)%15;
cont :% cont ! 1;
endWHILE
Solucin:
Vamos a utilizar R1 para llevar el contador (cont), R2 para ir cargando los componentes del
vector W y R4 para cargar los componentes del vector V. Utilizaremos adems dos registros
auxiliares R3 y R4 para almacenar las posiciones de los vectores con ndice (i ! 1) e (i . 1).
En realidad este paso no sera necesario, ya que se podra hacer con un direccionamiento en la
instruccin de LOAD directamente, pero pretendemos ilustrar cmo se hara en caso de que
no fuera posible realizar esta carga directamente.

242

Problemas de fundamentos y estructura de computadores

El diagrama de flujo ser:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

.BEGIN
VSIZE=8
V:
W:
INICIO:
WHILE:

ELSE:
ENDWHILE:

FIN:

243

INICIO
.RW 8
.DW -3,-2,-1,0,2,4,6,8
ADDI R0,#1,R1; CONT=R1=1
LOAD W(R1),R2; R2<-W(CONT)
SUBI R1,#7,R0; CONT<=7?
BG FIN
ADDI R1,#1,R3; R3=CONT+1
SUBI R1,#1,R4; R4=CONT-1
LOAD W(R4),R5;
R5=W(R1-1)
LOAD W(R3),R6;
R6=W(R1!1)
SUB R5,R6
BL ELSE
ASR R2,R7
BR ENDWHILE
ADDI R0,#15,R7
STORE R7,V(R1)
ADDI R1,#1,R1
BR WHILE
.END

PROBLEMA 7
Codificar el siguiente algoritmo en el lenguaje mquina de la MR. Dibujar tambin un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo
posible.
v % [2 0 8 1];
X % 1; Y % 2;
{--Algoritmo--}
for k%0 to vsize-1
if (Xa3)or(YaX)
Y:%v(k);
v(k):%X;
X!!;
end

244

Problemas de fundamentos y estructura de computadores

Solucin:

.BEGIN
V:
X:
Y:
VSIZE%4
INICIO:
FOR:

INICIO
.DW 2,0,8,1
.DW 1
.DW 2
ADDI R0,#0,R1
SUBI R1,#VSIZE,R0
BGE FIN
LOAD X(R0),R2
LOAD Y(R0),R3
SUBI R2,#3,R0
BL THEN
SUB R3,R2,R0

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

THEN:

INC:
FIN:

245

BGE INC
LOAD V(R1),R3
STORE R2,V(R1)
STORE R3,Y(R0)
ADDI R2,#1,R2
STORE R2,X(R0)
ADDI R1,#1,R1
BR FOR; EL RESULTADO FINAL ES V=[1,2,1,0]
.END

PROBLEMA 8
Dado el siguiente cdigo:
inicio SUBI R0,1,R0
BEQ fin
ADD R1,R0,R2
fin STORE R2,X(R0)
a) Cuntas veces se ejecuta la instruccin ADD?
b) Qu valor debe tener R1 al comienzo del programa para que al terminar la ejecucin
X valga 5?
Solucin:
Para responder al apartado a) debemos seguir el funcionamiento del programa. La primera
instruccin es:
inicio SUBI R0,#1,R0

En esta instruccin realizamos la operacin 0 . 1 % .1, con lo que despus de esta operacin no se realiza escritura en los registros, pero el bit Z valdr 0 y el bit N ser 1, ya que el
resultado de la operacin es negativa:
BEQ fin

Esta instruccin no bifurca por lo explicado para la primera instruccin


ADD R1,R0,R2

Esta instruccin realice la operacin: R2 p R1 ! R0 % R1


fin

STORE

R2,X(R0)

Almacenamos el valor de r2 en la posicin de la variable x.


Por la tanto, no hay paradas en la ejecucin y slo se ejecuta una vez.
b) Es evidente que R1 debe valer 5 al principio del programa para que al terminar la ejecucin X valga 5.
PROBLEMA 9
Codificar el siguiente algoritmo en el lenguaje mquina de la MR(1.25). Dibujar tambin
un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo posible.

246

Problemas de fundamentos y estructura de computadores

v % [2 .4 6 .8];
X % 0; Y % .1;
{--Algoritmo--}
while (Xavsize)and(YaX)
begin
if v(X)b0 then
v(x):%y;
X:%X!1;
end
Solucin:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

247

.BEGIN
INICIO
;Reservamos las variables y definimos las constantes:
V:
.DW 2,-4,6,-8
X:
.DW 0
Y:
.DW -1
VSIZE=4
INICIO: LOAD X(R0),R1; R1=X
LOAD Y(R0),R2; R2=Y
WHILE:
SUBI R1,#VSIZE,R0
BGE FIN
SUB R2, R1,R0
BGE FIN
LOAD V(R1),R3; RE%V(K)
SUBI R3,#0,R0
BLE FINIF
STORE R2, V(R1)
FINIF:
ADDI R1,#1,R1
BR WHILE
FIN:
STORE R1,X(R0)
;
;
EL CONTENIDO FINAL DE LAS 4
;
PRIMERAS POSICIONES DE MEMORIA DEBE SER:
;
00 FFFF
;
01 FFFC
;
02 FFFF
;
03 FFF8
.END

PROBLEMA 10
Codificar el siguiente algoritmo en el lenguaje mquina de la MR(1.25). Dibujar tambin
un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo posible.
N%8
v % [-4 -3 -2 -1 0 1 2 3];
w % vector de N elementos;
{--Algoritmo--}
k:%0; x:%0;
while (kaN)and(x%0)
begin
if v(X)b0 then
x:%x!1;
w(k):%v(k)!4;
k:%k!1;
end

248

Problemas de fundamentos y estructura de computadores

Solucin:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

.BEGIN
N=8
V:
W:
INICIO:
WHILE:

FINIF:

FIN:

249

INICIO
.DW -4,-3,-2,-1,0,1,2,3
.RW 8
ADDI R0,#0,R1; K=0
ADDI R0,#0,R2; X%0
SUBI R1,#N,R0; K<N?
BGE FIN
SUBI R2,#0,R0; X=0?
BNE FIN
LOAD V(R1),R3;
SUBI R3,#0,R0
BLE FINIF
ADDI R2,#1,R2
ADDI R3,#4,R3
STORE R3, W(R1)
ADDI R1,#1,R1
BR WHILE
.END

PROBLEMA 11
Codificar el siguiente algoritmo en el lenguaje mquina de la MR(1.25). Dibujar tambin
un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo posible (1.25).
N%4
v % [-2, 4, -6, 8]
w % vector de N elementos
x%1
y%0
Begin
for k :% 0 to N-1
begin
w(k)%0
if v(k)ay AND x%N then
x:%x!2
else
w(k):%v(k)!1
end
end
End.

250

Problemas de fundamentos y estructura de computadores

Solucin:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

251

.BEGIN
INICIO
N=4
V:
.DW -2, 4,-6,8
W:
.RW 4
X:
.DW 1
Y:
.DW 0
INICIO:
LOAD X(R0),R3
LOAD Y(R0),R2
ADD R0,R0,R7; R7=K
IF:
SUBI R7,#N,R0
BGE FIN
LOAD V(R7),R1
STORE R0, W(R7)
SUB R1,R2,R0
BGE ELSE
SUBI R3,#N,R0
BG ELSE
THEN:
ADDI R3,#2,R3
BR INCK
ELSE:
ADDI R1,#1,R4
STORE R4,W(R7)
INCK:
ADDI R7,#1,R7
BR IF
FIN:
STORE R3,X(R0)
STORE R2, Y(R0); W=[0,5,0,9]
.END

PROBLEMA 12
Codificar el siguiente algoritmo en el lenguaje mquina de la MR. Dibujar tambin un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo
posible (1.25).
N%6
v % [-1, -2, 3, 4, -5, 5]
w % vector de N elementos
Begin
for k :% 0 to N-1
begin
w(k):%v(k)!1;
if w(k)b0 AND kmN-2 then
w(k):%w(k)!v(k!1);
end
end
End.

252

Problemas de fundamentos y estructura de computadores

Solucin:

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

.BEGIN

INICIO

N%6
V:

.DW -1,-2,3,4,-5,5

W:

.RW 6

INICIO:

ADDI R0,#0,R1; R1=K

FOR: SUBI R1,#N,R0;


BGE FIN
LOAD V(R1),R2; R2<-V(K)
ADDI R2,#1,R3; W(K)=V(K)!1
STORE R3,W(R1)
SUBI R3,#0,R0; R3>0?
BLE INC
SUBI R1,#4,R0
BL THEN
SUBI R3,#0,R0
BLE INC
ADDI R2,#1,R2
STORE R2,V(R2)
THEN:

ADD R2,R3,R3
STORE R3, W(R1)

INC: ADDI R1,#1,R1


BR FOR
FIN: .END

PROBLEMA 13
Traducir el siguiente pseudocdigo a ensamblador:
Vsize%10
v : [0,1,2,3,4,5,6,7,8,9]
w : vector vacio de Vsize elementos
For i :% 0 to Vsize-1
If (v[i]b%3) Then w[i]:%0
Else w[i]:%v[i!1]

253

254

Problemas de fundamentos y estructura de computadores

Solucin:

.BEGIN

INICIO

V:

.DW 0,1,2,3,4,5,6,7,8,9

W:

.RW 10

VSIZE=10
INICIO: ADDI R0,#0,R1;

R1:=i

FOR:

SUBI R1,#VSIZE,R0;

Comparar (i, VSIZE)

BGE FIN;

Salta si i>=VSIZE

LOAD V(R1),R2;

R2:=V[i]

IF:
THEN:

SUBI R2,#3,R0;

Comparar (V[i],3)

BL ELSE;

Salta si V[i]a3

STORE R0,W(R1);
BR INCI

ELSE:

INCI:

ADDI R1,#1,R2;
LOAD V(R2),R2;

R2:=V[i+1]

STORE R2, W(R1);

ELSE W[i]:=V[I+1]

ADDI R1,#1,R1;

i++

BR FOR
FIN:

R2:=i+1

.END

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

255

PROBLEMA 14
Dadas las siguientes instrucciones y el contenido de los registros especificado y sabiendo
que el contenido inicial de la posicin de memoria 0003h es 0101h, indicar el contenido de
los registros despus de la ejecucin de las 4 instrucciones de manera consecutiva:
SUB R1, R3,R2
ADDI R3,7,R2
LOAD 1(R4), R5
ADDI R5,3,R5

R1= F454 h
R2= 0010 h
R3= 6100h
R4= 0002 h
R5= 57BAh

Solucin:
Suponemos que el programa est almacenado en memoria a partir de la primera posicin de
memoria:
00h

SUB R1, R3,R2

01h

ADDI R3, 7,R2

02h

LOAD 1(R4), R5

03h

ADDI R5,3,R5

A continuacin escribimos las operaciones que realizan las instrucciones y el resultado de


la misma:
00h

SUB R1, R3,R2

R2pR1-R3

F454h . 6100h % 9354h

01h

ADDI R3, 7,R2

R2pR3!7

6100h ! 0007h % 6107h

02h

LOAD 1(R4), R5

R5pM[0003h]

****

03h

ADDI R5,3,R5

R5pR5!3

ED18h ! 0003h % ED1B

**** Exactamente lo que carga es el contenido de la posicin de memoria nmero 3 que corresponde
con el cdigo mquina de la instruccin: ADDI R5,3,R5.

Los registros quedarn por tanto:


R1 % F454h
R2 % 6107h
R3 % 6100h
R4 % 0002h
R5 % ED1Bh
PROBLEMA 15
Indica cul es el resultado de ejecutar las siguientes instrucciones, dando el contenido final
de los registros y posiciones de memoria que se modifican y el valor de los indicadores de
condicin. Se supone para cada caso que el contenido inicial de los registros y posiciones
de memoria es el siguiente:

256

Problemas de fundamentos y estructura de computadores

R0

0000h

Direccin

Contenido

R1

3201h

00h

1228h

R2

6352h

R3

0001h

01h

36FAh

R4

0002h

02h

AB01h

R5

0003h

03h

1234h

R6

FFFFh

04h

7865h

R7

0000h

05h

45ABh

ADD R1, R4, R5


ADDI R4, 8, R6
ASR R1,R5
LOAD 3(R4), R7
STORE R7, 0(R4)
ADD R1,R2,R3

Solucin:
Analizamos las operaciones que se realizan en cada una de las instrucciones y a continuacin
actualizamos el contenido de los registros y memoria:
ADD R1, R4, R5
Esta instruccin realiza la operacin R1!R4 y almacena el resultado en R5:
R5 p 3201h ! 0002h % 3203h
Por lo tanto el contenido de los registros quedar:
R0

0000h

R1

3201h

R2

6352h

R3

0001h

R4

0002h

R5

3203h

R6

FFFFh

R7

0000h

ADDI R4, 8, R6
Esta instruccin realiza la operacin R4!8 y almacena el resultado en R6:
R6 p 0002h ! 0008h % 000Ah
Por lo tanto el contenido de los registros quedar:
R0

0000h

R1

3201h

R2

6352h

R3

0001h

R4

0002h

R5

3203h

R6

000Ah

R7

0000h

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

257

ASR R1,R5
Esta es una instruccin de desplazamiento. Desplaza el contenido de R1 una posicin a la
izquierda y almacena el resultado en R5:
R5 p A 2454h % 122Ah
Y ahora el contenido del registro cambia:
R0

0000h

R1

3201h

R2

6352h

R3

0001h

R4

000Ah

R5

122Ah

R6

FFFFh

R7

0000h

LOAD 2(R7), R7
Estamos ahora ante una instruccin de carga que realiza la operacin de almacenar en el
registro R7 el contenido de la posicin de memoria indicado por la suma R7!2. La posicin
de memoria que contiene el dato ser por lo tanto 0002h cuyo contenido segn el enunciado
es: AB01h. El nuevo estado de los registros ser:
R0

0000h

R1

3201h

R2

6352h

R3

0001h

R4

000Ah

R5

122Ah

R6

FFFFh

R7

AB01h

STORE R7, 0(R3)


La operacin de STORE almacena el contenido de un registro en la posicin de memoria
indicada por el segundo operando, calculando dicha posicin de manera anloga a como se
calcula en la instruccin LOAD. Por lo tanto debemos escribir el contenido del registro R7 en
la posicin 0000h ! R3 % 0001h. Con esto el contenido de la memoria despus de ejecutar la
instruccin ser:

258

Problemas de fundamentos y estructura de computadores

Direccin

Contenido

00h

1228h

01h

AB01h

02h

AB01h

03h

1234h

04h

7865h

05h

45ABh

ADD R1,R2,R3
La ltima instruccin es una suma de registros y escribir en R3 el resultado de la operacin R1!R2:
R3 p 3201h ! 6352h % 9553h
Con lo que el contenido final de los registros quedar:
R0

0000h

R1

3201h

R2

6352h

R3

9553h

R4

000Ah

R5

122Ah

R6

FFFFh

R7

AB01h

PROBLEMA 16
Escribir un programa en lenguaje ensamblador que ordene por el mtodo de la burbuja el
siguiente vector de 8 elementos:
V % [0,3,7,6,2,5,1,4]
Solucin:
El algoritmo de la burbuja es un algoritmo clsico de iniciacin a la programacin y se puede
expresar en pseudocdigo de la siguiente forma:
for i%0 to tamaovector-1
for j%0 to tamaovector-2
if vector(j) b vector (j!1)
temp% v(j);
v(j)%v(j!1);
v(j!1)%temp;
end if
end for
endfor

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

259

El diagrama de flujo resulta sencillo a partir de este pseudocdigo partiendo por ejemplo
del problema 17:

260

Problemas de fundamentos y estructura de computadores

.BEGIN

INICIO

V:

.DW 0,3,7,6,2,5,1,4

VSIZE=8
INICIO: ADDI R0,#0,R1;

R1:=i

FORI:

SUBI R1,#VSIZE,R0;

Comparar (i, VSIZE)

BGE FIN;

Salta si i>=VSIZE

ADDI R0,#0,R2;
FORJ:

SUBI R2,#VSIZE,R0;

Comparar (i, VSIZE)

BGE ENDFORI;

Salta si i>=VSIZE

LOAD V(R2),R3;

R3:=V[j]

ADDI R2,#1,R4;

R4:=j+1

LOAD V(R4),R5;

R5:=V[j+1]

SUB R5,R3,R0
BL ENDFORJ
STORE R5,V(R2);
STORE R3,V(R4);
ENDFORJ:ADDI R2,#1,R2;

j++

BR FORJ
ENDFORI:ADDI R1,#1,R1
BR FORI
FIN:

.END

PROBLEMA 17
Escribir un programa en lenguaje ensamblador que intercambie los siguientes dos vectores
almacenados en memoria:
V % [1,1,1,2]

W % [0,0,0,3]

Solucin:
El algoritmo de intercambio de vectores en pseudocdigo se reduce a un bucle for:
for i%0 to tamaovector
temp% v(i);
v(i)%w(i);
w(i)%temp;
endfor

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

y el diagrama de flujo quedar, identificando tamaovector con VSIZE:

Que se traduce en el siguiente cdigo:


.BEGIN

INICIO

V:

.DW 1,1,1,2

W:

.DW 0,0,0,3

VSIZE=4
INICIO:ADDI R0,#0,R1;

R1:=i

FOR:

SUBI R1,#VSIZE,R0;

Comparar (i, VSIZE)

BGE FIN;

Salta si i>=VSIZE

LOAD V(R1),R2;

R2:=V[i]

LOAD W(R1),R3;

R2:=V[i+1]

STORE R2, W(R1);


STORE R3, V(R1);
ADDI R1,#1,R1;
BR FOR
FIN:

.END

i!!

261

262

Problemas de fundamentos y estructura de computadores

PROBLEMA 18
Escribe en lenguaje ensamblador de la MR un programa que realice la divisin por 2n de
un nmero NUM. El exponente n es un nmero positivo menor de 16.
Solucin:
A: dato
N
for i%0 to N
A:%A/2
end for
.BEGIN
A:

INICIO
.DW 256

N%6
INICIO:ADDI R0,#0,R1;

R1:=i

LOAD A(R0),R2;

R2:=A

SUBI R1,#N,R0;

Comparar (i, VSIZE)

BGE FIN;

Salta si i>=VSIZE

ASR R2,R2;

DIVIDE POR 2

ADDI R1,#1,R1;

i++

FOR:

INC:

BR FOR
FIN:

STORE R2,A(R0);
.END

PROBLEMA 19
Traducir el siguiente pseudocdigo a ensamblador de la MR, suponiendo que los vectores
se almacenan a partir de la direccin de memoria 00h y el programa se almacena a partir
de la direccin 60h.
B % [2,1,2,2,3,9,8,8,7,5].
C % [0,9,8,6,7,6,6,7,8,2]
N%10;
For i%0 to N-1
If B[i]>C[i]
A[i]:=B[i]+C[i]
else
A[i]:=C[i]-B[i]
end if
end for

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

263

Solucin:
.BEGIN
B:
C:
A:
N%10

INICIO
.DW 2,1,2,2,3,9,8,8,7,5
.DW 0,9,8,6,7,6,6,7,8,2
.RW 10

INICIO: ADDI R0,#0,R1;


FOR:
SUBI R1,#N,R0;
BGE FIN;
LOAD B(R1),R2;
LOAD C(R1),R3;
SUB R2,R3,R0
BLE ELSE
ADD R2,R3,R4
BR INC
ELSE:
SUB R3,R2,R4
INC:
STORE R4,A(R1);
ADDI R1,#1,R1
BR FOR
FIN:
.END

R1:=i
Comparar (i, VSIZE)
Salta si i>=VSIZE
R2:=B[i]
R3:=C[i]

PROBLEMA 20
Realizar una macro que realice la operacin A/2n y escribir un programa ejemplo que utilice esa macro para n % 6.
Solucin:
La macro la definimos de la siguiente forma:
.DEF POT $1,$2
;$1% REGISTRO FUENTE
;$2% EXPONENTE
ADDI R0,#0,R3;
FOR:
SUB $2,R3,R0;
BLE FIN
ASR $1,$1;
ADDI R3,#1,R3;
BR FOR
FIN:
.ENDDEF

Y el programa ser:
.BEGIN INICIO
VALOR: .
.DW 256
EXP:
.DW 6

264

Problemas de fundamentos y estructura de computadores

RESULT:
INICIO:

.RW 1
LOAD VALOR(R0),R1
LOAD EXP(R0),R2
POT R1,R2
STORE R2,RESULT(R0)

.END

Que se traducira a un programa conjunto como:


.BEGIN inicio
valor:
.DW 256
exp:
.DW 6
result:
.RW 1
inicio:
load valor(R0),R1
load exp(R0),R2
pot R1,R2

$010101:

addi R0,#0,R3
sub R2,R3,R0
ble $010102
asr R1,R1
addi R3,#1,R3
br $010101

$010102:
end pot R1,R2
store R2,result(R0)
.END

6.7 Problemas propuestos


PROBLEMA 1
Codificar en el lenguaje de la mquina rudimentaria el siguiente algoritmo:
vsize%6;
V%[0,1,2,3,4,5];
W%vector vacio de vsize elementos;
cont%0;
repeat
If (cont % 1) or (cont b% 3) then
W(cont)%V(cont-1);
Else
W(cont) % vsize;
Until (cont % 6)

Captulo 6 Introduccin a la programacin en lenguaje ensamblador

265

PROBLEMA 2
Indica cul es el resultado de ejecutar las siguientes instrucciones, dando el contenido final de
los registros y posiciones de memoria que se modifican y el valor de los indicadores de condicin. Se supone para cada caso que el contenido inicial de los registros y posiciones de memoria es el siguiente:
R0

0000h

Direccin

Contenido

SUB R1, R4, R5

R1

3201h

00h

1228h

ADDI R4, 8, R6

R2

6352h

01h

36FAh

R3

0001h

02h

AB01h

STORE R7, 0(R4)

R4

0002h

03h

1234h

ADD R1,R2,R3

R5

0003h

04h

7865h

R6

FFFFh

05h

45ABh

R7

0000h

ASR R1,R5
LOAD 3(R4), R7

PROBLEMA 3
Codificar en lenguaje ensamblador de la mquina rudimentaria el siguiente programa:
IF A b B b C b D THEN F % A ! B ! C !D
ELSE A % B; B % C; C % D; D % E; E % A; F % 0
PROBLEMA 4
Disear un programa en lenguaje ensamblador que calcule el mximo comn divisor de 93,
75, 24 y 13.
PROBLEMA 5
Disear un programa en lenguaje ensamblador que calcule el mnimo comn mltiplo de 93,
75, 24.
PROBLEMA 6
Disear una macro en lenguaje ensamblador de la mquina rudimentaria que realice el producto de 3 nmeros.
PROBLEMA 7
Disear un programa en lenguaje ensamblador de la mquina rudimentaria que almacene en
una variable el producto de 4 valores utilizando la macro diseada en el problema propuesto 6.

266

Problemas de fundamentos y estructura de computadores

PROBLEMA 8
Disear un programa en lenguaje ensamblador que realice el producto de dos matrices de
3 # 3 valores. Defina claramente cmo se almacenarn los valores en memoria.
PROBLEMA 9
Codificar el siguiente algoritmo en el lenguaje mquina de la MR. Dibujar tambin un diagrama de flujo que sirva para la codificacin en lenguaje mquina y sea lo ms completo posible
v % [2 0 8 3 4 6 7 9 1];
w % [1 2 2 2 3 0 8 8 6]
{--Algoritmo--}
for k%1 to vsize
if v(k) a w(k)
w(k)%v(K)
endif
endfor
PROBLEMA 10
Implementar el lenguaje ensamblador una macro que realice la operacin A*B/8 y escriba un
programa que la utilice.

Al disear un computador o al mejorar un subsistema de alguno existente, el arquitecto de


computadores debe tener presentes los objetivos de la mquina a modificar teniendo en cuenta
dos parmetros importantes: el coste y el rendimiento. Dependiendo del equilibrio que se haga de ellos se crear desde un ordenador personal (barato y rendimiento medio) hasta un supercomputador (caro y con un rendimiento muy alto). En este captulo se tratan los aspectos
relacionados con el rendimiento y el coste de un computador. Antes de exponer las principales mtricas utilizadas para evaluar el rendimiento de un computador, proporcionamos algunas definiciones tiles.

7.1 Definiciones
Todos los computadores utilizan una seal peridica que determina el momento en que tienen
lugar los eventos hardware: dicha seal se llama reloj.
Tiempo de ciclo: Es el tiempo en segundos que transcurre entre dos tics de reloj.
Frecuencia de reloj: Es la inversa del tiempo de ciclo (medido en Hz % s.1)
Ciclos de reloj por programa:
Instrucciones por programa
Ciclos promedio por instruccin
Los Ciclos Promedio por Instruccin (CPI) se calculan como una suma ponderada del
nmero de ciclos que tarda por separado cada tipo de instruccin. Ejemplo de ejecucin de un
programa:
Operacin

Frecuencia

Ciclos

CPI

% tiempo

Aritmticas

50%

0,5

23%

Carga

20%

1,0

45%

Almacenamiento

10%

0,3

14%

Salto

20%

0,4

18%

CPI % 2,2

268

Problemas de fundamentos y estructura de computadores

7.2 Medidas de rendimiento


Las medidas de rendimiento permiten comparar objetivamente las prestaciones de computadores distintos. Permiten determinar cul ofrece mayor potencia de clculo o mayor velocidad
de procesamiento, es decir, cul tarda menos tiempo en ejecutar nuestras aplicaciones. Las
principales mtricas son las siguientes:
Tiempo de ejecucin (medido en segundos/programa): Incluye, junto con el tiempo de ejecucin de un programa, los tiempos de E/S, tiempos de acceso a memoria, tiempo de sistema
operativo, etc. Es til, pero depende de demasiados factores para poder ser usado eficientemente.
Tiempo de CPU: Slo cuenta la fraccin de tiempo de ejecucin en la que la CPU est ocupada. Puede ser descompuesto en dos trminos:
Tiempo de usuario: tiempo empleado por la CPU para ejecutar un programa.
Tiempo de sistema: tiempo empleado por la CPU para ejecutar tareas del sistema operativo en beneficio del programa.
De los anteriores, consideraremos como mtrica principal del rendimiento de un procesador para un programa el tiempo de usuario de CPU. Se define como:
(Instrucciones por programa) # CPI # (Tiempo de ciclo)
Donde las instrucciones por programa dependen directamente de los programadores, los
compiladores y la arquitectura del repertorio de instrucciones. El tiempo de ciclo depende de
la tecnologa y la organizacin interna del computador, y los ciclos promedio por instruccin
dependen de la organizacin interna del computador y de la arquitectura del repertorio de
instrucciones.
El rendimiento se evala ejecutando programas reales, programas de prueba (benchmarks)
que ejecutan un amplio abanico de operaciones de forma intensiva (operaciones multimedia,
en coma flotante, desplazamiento, etc.).
Existen adems otras mtricas muy utilizadas para evaluar el rendimiento. A continuacin
enumeramos dos de ellas.

7.3 MIPS: Millones de instrucciones por segundo


Dado un programa, esta mtrica se calcula usando una de las siguientes ecuaciones:
MIPS %

Instrucciones por programa


Tiempo ejecucin # 106

MIPS %

Frecuencia de reloj
CPI # 106

MIPS presenta algunas deficiencias:


Depende del repertorio de instrucciones: El tiempo que tarda en ejecutarse una misma instruccin y el nmero de instrucciones mquina que genera el compilador puede
variar de un repertorio a otro. Dos programas distintos pueden tener comportamientos
opuestos.

Captulo 7 Rendimiento

269

La medida de MIPS puede variar mucho de un programa a otro: Existen instrucciones que tardan ms tiempo en ejecutarse que otras. Los programas en los que abundan instrucciones rpidas tardan menos en ejecutarse Los programas en los que abundan instrucciones lentas tardan ms en ejecutarse.
Los fabricantes pueden dar medidas de MIPS muy optimistas: Utilizando programas donde predominan instrucciones que tardan poco en ejecutarse.

7.4 MFLOPS: Millones de instrucciones en coma flotante


por segundo
Esta mtrica evala las instrucciones en coma flotante porque son las que ms tardan en ejecutarse. Es una medida algo ms fiable del rendimiento real del computador, se define como:
MFLOPS %

Instrucciones de coma flotante por programa


Tiempo ejecucin # 106

Al igual que MIPS, MFLOPS presenta algunas deficiencias:


Depende del repertorio de instrucciones en coma flotante: No todos los computadores ofrecen las mismas operaciones en coma flotante. Dos programas distintos pueden
tener comportamientos opuestos.
Es intil para muchos programas: Los programas enteros (sin operaciones en coma
flotante) no pueden medirse en MFLOPS.
Existen instrucciones en coma flotante de distinto tiempo de ejecucin: Por ejemplo, las operaciones aritmticas como la suma o la resta son rpidas. En cambio algunas
operaciones trigonomtricas o logartmicas son lentas.
Los fabricantes pueden dar tambin medidas de MFLOPS optimistas: Al igual que
en MILP, utilizando programas donde predominan instrucciones que tardan poco en
ejecutarse.

7.5 Ley de AMDAHL


La Ley de Amdahl establece que la mejora obtenida en el rendimiento de un sistema debido
a la alteracin de uno de sus componentes est limitada por la fraccin de tiempo que se utiliza dicho componente. Matemticamente se puede describir mediante la siguiente ecuacin:
A%

Tiempo sin mejora


%
Tiempo con mejora

1
(1 . Fm) !

Fm
Am

donde:
A: es la aceleracin o ganancia en velocidad conseguida en el sistema completo debido a
la mejora de uno de sus subsistemas.
Am: Factor de mejora que ha introducido el subsistema alterado.
Fm: Fraccin de tiempo que el sistema emplea el subsistema alterado.

270

Problemas de fundamentos y estructura de computadores

7.6 Problemas resueltos


PROBLEMA 1
Si la mquina A corre un programa en 10 segundos y la mquina B corre el mismo programa en 15 segundos, cuntas veces es ms rpida A que B?
Solucin:
El rendimiento es la inversa del tiempo de ejecucin:
R%

1
T

Por lo tanto la relacin de rendimiento es:


RA TB
% % 1,5
RB TA
Y A es por tanto 1,5 veces ms rpida que B.
PROBLEMA 2
Se desea comparar el rendimiento de dos mquinas diferentes: M1 y M2. Se han tomado
las siguientes medidas:
Programa

Tiempo en M1

Tiempo en M2

4,0 segundos

3,0 segundos

10,0 segundos

20,0 segundos

Qu mquina es ms rpida para cada programa y en qu medida?


Solucin:
Programa A:
Tiempo en M1: 4,0 segundos
Tiempo en M2: 3,0 segundos
El computador M2 es ms rpido para el programa A, de hecho es 4,0/3,0 % 1,33 veces
ms rpido.
Programa B:
Tiempo en M1: 10,0 segundos
Tiempo en M2: 20,0 segundos
Claramente, M1 es ms rpido que M2 para el programa B, 20,0/10,0 % 2 veces ms
rpido.

Captulo 7 Rendimiento

271

PROBLEMA 3
Considere los dos computadores del problema anterior. Se realizan las siguientes medidas
adicionales:
Programa

Instrucciones en M1

Instrucciones en M2

5 # 109

6 # 109

Determinar el nmero de instrucciones por segundo para cada computador cuando stos ejecutan el programa A.
Solucin:
Total de instrucciones ejecutadas en M1:
Tiempo de M1:
Instrucciones por segundo:

5 # 109 instrucciones.
4,0 segundos
5 # 109/4 % 1,25 # 109 instrucciones/segundo.

Total de instrucciones ejecutadas en M2:


Tiempo de M2:
Instrucciones por segundo:

6 # 109 instrucciones.
3,0 segundos
6 # 109/3 % 2 # 109 instrucciones/segundo.

PROBLEMA 4
Una empresa est decidiendo comprar un lote de una de las dos mquinas del problema
anterior. Supongamos que la mquina M1 cuesta 400 e y que M2 cuesta 700 e. Si el
programa A debe ejecutarse un mayor nmero de veces, qu computador compraras en
grandes cantidades? Por qu?
Solucin:
Coste de M1:
Coste de M2:

400 e
700 e

Tiempo del programa A en M1: 4 segundos


Tiempo del programa A en M2: 3 segundos
En este caso deseamos maximizar el ratio de tiempo de cmputo a la vez que minimizamos el coste requerido para hacerlo, es decir, calculamos el coste por unidad de rendimiento:
Coste
% Coste # Tiempo de ejecucin
1 ejecucin programa A
Tiempo de ejecucin
Por lo tanto:
Para M1:

400 e # 4 s % 1.600 e s

Para M2:

700 e # 3 s % 2.100 e s

De donde se deduce que M2 sale menos rentable que M1, por lo que M1 es el que debe ser
elegido para adquirir el lote.

272

Problemas de fundamentos y estructura de computadores

PROBLEMA 5
Un ingeniero est preocupado por el rendimiento de dos computadores, que ejecutando dos
programas ofrecen los siguientes resultados.
Programa

Tiempo en M1

Tiempo en M2

2,0 segundos

1,5 segundos

5,0 segundos

10,0 segundos

Si M1 cuesta 500 e y M2 cuesta 800 e. Si los programas 1 y 2 se ejecutan con una


frecuencia similar,
a) Qu computador ofrece un mejor rendimiento global? En qu medida?
b) Qu computador es ms efectivo en trminos de rentabilidad?
Solucin:
a) Como la carga de ambos programas es similar, podemos trabajar con la suma de tiempos
de ambos programas:
Tiempo total para M1:

2,0 s ! 5,0 s % 7,0 s

Tiempo total para M2:

1,5 s ! 10,0 s % 11,5 s

Por lo tanto M1 es 11,5 s/7,0 s % 1,64 veces ms rpido que M2.


b) M1 es claramente ms rentable, puesto que es el ms barato adems del ms rpido.
PROBLEMA 6
Se quiere ejecutar un programa de 7,5 # 109 instrucciones en una mquina de 5 GHz con
un CPI de 0,8.
a) Cul es el tiempo de CPU?
b) Cuando se ejecuta el programa, este tarda 3 segundos en acabar, cul es el tiempo (en
porcentaje) tomado por la CPU para ejecutar el programa?
Solucin:
Nmero de instrucciones:

7,5 # 109

Frecuencia:

5 GHz

CPI:

0,8

a) El tiempo de CPU viene dado por la siguiente ecuacin:


t%

Instrucciones # CPI
% 7,5 # 109 # 0,8 # 0,2 # 109 % 1,2 segundos
Frecuencia

Captulo 7 Rendimiento

273

b) Si el tiempo real de ejecucin es de tres segundos, el tiempo invertido en el programa por


la CPU ser:
% tiempo tomado por CPU %

1,2
# 100 % 40%
3

El resto del tiempo (60%) se habr dedicado a entrada/salida, sistema operativo, etc.
PROBLEMA 7
Se dispone de los siguientes datos respecto a dos potentes procesadores y una determinada
tarea de aplicacin:
Power PC a 1,8 GHz de frecuencia y 700 MIPS de potencia.
Pentium 4: 1,6 GHz de frecuencia y 850 MIPS.
Calcular el CPI de cada procesador.
Solucin:
El nmero de Ciclos Promedio por Instruccin (CPI) se puede calcular sencillamente usando
la expresin:
MIPS %

Frecuencia de reloj
CPI # 106

CPI %

Frecuencia de reloj
MIPS # 106

Por lo tanto, en el Power PC:


CPI %

Ciclos
1,8 # 109 Ciclos
% 2,57
6
700 # 10 Instruccin
Instruccin

Mientras que el Pentium 4:


CPI %

Ciclos
1,6 # 109 Ciclos
% 1,88
6
850 # 10 Instruccin
Instruccin

PROBLEMA 8
Se dispone de un computador dotado del procesador Power PC a 1,8 GHz y otro con el
Pentium 4 a 1,6 GHz. Se sabe que el CPI del primero es de 5,5 y el del segundo de 7 para
un determinado programa escrito en lenguaje de alto nivel. El programa que traduce dicho
programa a instrucciones mquina del Power PC lo convierte en nueve millones de dichas
instrucciones, mientras el que realiza la misma traduccin a instrucciones mquina del
Pentium lo convierte en 7,2 # 105 instrucciones. Cul de los computadores ejecutar ms
rpidamente la tarea?
Solucin:
El tiempo de ejecucin del programa se puede calcular usando:
T % NI # CPI # t

274

Problemas de fundamentos y estructura de computadores

Donde NI es el nmero de instrucciones y t es el tiempo de ciclo. Por lo tanto podemos


calcular el tiempo de ejecucin para ambos computadores. Para el Power PC tenemos:
T % NI # CPI # t % 9 # 106 # 5,50 #

1
s % 27,50 ms
1,80 # 109

Mientras que para el Pentium 4 resulta:


T % NI # CPI # t % 7,20 # 106 # 7 #

1
s % 31,50 ms
1,60 # 109

PROBLEMA 9
Sea una arquitectura cuyo repertorio de instrucciones est formado por cuatro tipos de instrucciones cuyas medidas de CPI se muestran en la siguiente tabla:
Tipo

CPI

Tipo 1

Tipo 2

Tipo 3

Tipo 4

Se nos pide que evaluemos dos compiladores diferentes con vista a adquirir uno de
ellos para nuestro departamento de desarrollo.
Compilando un mismo programa en cada compilador se obtienen los siguientes valores
(en miles de millones para cada tipo de instruccin), tal y como se refleja en la tabla siguiente:
Compilador

Total de instrucciones por tipo (miles de millones)


Tipo 1

Tipo 2

Tipo 3

Tipo 4

Compilador 1

Compilador 2

10

Si la frecuencia de reloj de los computadores que tenemos en nuestro departamento de


desarrollo es de 1,2 GHz, se pide:
a) Ejecutable ms rpido en cuanto a tiempo de ejecucin.
b) Ejecutable ms rpido tomando como medida los MIPS.
Solucin:
a) Para averiguar cul es el ejecutable ms rpido basta con calcular el tiempo de ejecucin
de cada uno de los programas utilizando la frmula (t % tiempo de ciclo):
T % NI # CPI # t

Captulo 7 Rendimiento

275

Y como:
CPI %

Ciclos de reloj
NI

La ecuacin anterior se reduce a:


T % Ciclos de reloj # t
Podemos calcular directamente el tiempo de ejecucin para el programa resultante de
cada compilador:
T1 % (5 # 109 # 1 ! 1 # 109 # 2 ! 1 # 109 # 3 ! 2 # 109 # 4)t % 18 # 109t
T2 % (10 # 109 # 1 ! 1 # 109 # 2 ! 1 # 109 # 3 ! 4 # 109 # 4)t % 31 # 109t
Y por lo tanto, el compilador 1 genera un programa que es 1,72 veces ms rpido que
el generado por el compilador 2.
b) Podemos calcular los MIPS utilizando la frmula:
MIPS %

Instrucciones por programa


Tiempo ejecucin # 106

Por lo tanto, para cada compilador tenemos:


MIPS1 %

9 # 109
# 1,2 # 109 % 600
18 # 109 # 106

MIPS2 %

16 # 109
# 1,2 # 109 % 619,4
31 # 109 # 106

Aunque el compilador 1 genera un programa ms rpido, el compilador 2 ejecuta ms


instrucciones por segundo.
PROBLEMA 10
Nuestro programa favorito se ejecuta en 10 s. en un computador A que tiene un reloj de
100 MHz. Estamos tratando de ayudar a un diseador que construye una mquina B, que
ejecutar este programa en 6 s. El diseador ha determinado que es posible un incremento
sustancial en la frecuencia de reloj, pero este incremento afectar al resto del diseo de la
CPU, haciendo que la mquina B necesite 1,2 veces el nmero de ciclos de reloj que la
mquina A para este programa. Qu frecuencia de reloj debera utilizar el diseador?
Solucin:
Primero calculamos el nmero de ciclos de reloj para el programa en A. El tiempo de usuario
de CPU es el cociente entre el nmero de ciclos de un programa y la frecuencia de reloj:
TA %

CA
FA

276

Problemas de fundamentos y estructura de computadores

por lo tanto
CA

10 s %

100 . 106

ciclos
s

de donde
CA % 1.000 # 106 ciclos
El tiempo para B se puede hallar mediante la ecuacin anterior, teniendo en cuenta que
CB % 1,2 # CA:
TB %

1,2 # CA

FB

6 s%

1,2 # 1.000 # 106 ciclos


FB

de donde finalmente se puede obtener la frecuencia para B:


FB %

ciclos
1,2 # 1.000 # 106 ciclos
% 200 # 106
% 200 MHz
6s
s

PROBLEMA 11
Supongamos que tenemos dos implementaciones de la misma arquitectura del repertorio
de instrucciones. La mquina A tiene una duracin de ciclo de 10 ns y un CPI de 2,0 para
un programa. La mquina B tiene una duracin de ciclo de 20 ns y un CPI de 1,2 para el
mismo programa. Qu mquina es ms rpida para este programa, y cunto?
Solucin:
Como tienen el mismo repertorio, sabemos que las dos ejecutan el mismo nmero de instrucciones para el programa, sea Ni. Los ciclos de reloj para cada mquina son:
CA % Ni # 2,0
CB % Ni # 1,2
Ahora podemos calcular el tiempo de CPU para cada mquina (t % tiempo de ciclo):
TA % CA # tA % Ni # 2,0 # 10 ns % 20 # Ni ns
TB % CB # tB % Ni # 1,2 # 20 ns % 24 # Ni ns
Claramente, A es ms rpida que B. La proporcin es:
RA TB 24 # Ni ns
% %
% 1,2
RB TA 20 # Ni ns
PROBLEMA 12
Se ha diseado un procesador multiciclo basado en MIPS con la siguiente clasificacin de
instrucciones y sus respectivos ciclos de ejecucin:

Captulo 7 Rendimiento

Instruccin

277

Ciclos

Carga

Almacenamiento

Aritmtico-lgicas

Salto condicional, realizando el salto

Salto condicional, no realizando el salto

Salto incondicional

Inicialmente se determin que la ruta crtica que fija la longitud del ciclo de reloj se
corresponde con las operaciones en las unidades aritmticas, y no con los accesos memoria como realmente ocurre. Esto ha llevado a replantear la implementacin para que la
frecuencia de reloj sea de 500 MHz en vez de 750 MHz inicialmente propuesta. Sin embargo, uno de los ingenieros ha propuesto como solucin de compromiso que los ciclos
de acceso a memoria se subdividan en dos para, de este modo, admitir la frecuencia de
reloj inicial (750 MHz). Usando las proporciones de instrucciones que se muestran a continuacin, determina la ganancia de velocidad que se obtiene empleando la mquina de 2
ciclos de acceso a memoria con reloj de 750 MHz, frente a la mquina con 1 ciclo de
acceso a memoria y reloj de 500 MHz.
Frecuencia de uso de las diferentes instrucciones para un caso tpico:
Carga: 22%.
Almacenamiento: 11%.
Aritmtico-lgicas: 49%.
Salto condicional, realizando el salto: 4%.
Salto condicional, no realizando el salto: 12%.
Salto incondicional: 2%.
Solucin:
Aadir un ciclo ms a la etapa de acceso a memoria implica que las instrucciones de almacenamiento y carga tardarn 5 y 6 ciclos respectivamente en lugar de los 4 y 5 ciclos que tenan
destinadas originalmente.
En este caso debemos calcular el tiempo de ejecucin para cada arquitectura. El tiempo de
ejecucin viene dado por la siguiente ecuacin:
T % (instrucciones por programa) # CPI # (tiempo de ciclo)
Por lo tanto, en la mquina de 500 MHz
T500 MHz % Ni # CPI500 MHz # t500 MHz % Ni # CPI500 MHz #

1
s
500 # 106

278

Problemas de fundamentos y estructura de computadores

Mientras que en la mquina de 750 MHz


T750 MHz % Ni # CPI750 MHz # t750 MHz % Ni # CPI750 MHz #

1
s
750 # 106

Para calcular los ciclos promedio por instruccin, basta calcular la suma ponderada con
los datos del problema. De esta forma, para la mquina a 500 MHz:
CPI500 MHz % 0,22 # 5 ! 0,11 # 4 ! 0,49 # 4 ! 0,04 # 4 ! 0,12 # 3 ! 0,02 # 3 % 4,08
Mientras que la mquina de 750 MHz tenemos:
CPI750 MHz % 0,22 # 6 ! 0,11 # 5 ! 0,49 # 4 ! 0,04 # 4 ! 0,12 # 3 ! 0,02 # 3 % 4,41
De donde el tiempo de ejecucin en ambas mquinas es:
1
s % Ni # 8,16 s
500 # 106
1
s % Ni # 5,87 s
T750 MHz % Ni # 4,41 #
750 # 106

T500 MHz % Ni # 4,08 #

Segn las ecuaciones anteriores podemos concluir que la mquina original a 750 MHz,
incrementando en un ciclo las instrucciones de acceso a memoria, es 1,39 veces ms rpida
que una mquina con el repertorio original de instrucciones y con el reloj modificado
a 500 MHz.
PROBLEMA 13
Sea el siguiente juego de instrucciones para un computador, junto a los porcentajes de uso
para un determinado programa:
Instruccin

Ciclos

Frecuencia

Carga

22%

Almacenamiento

11%

Aritmtico-lgicas

49%

Salto condicional, realizando el salto

4%

Salto condicional, no realizando el salto

12%

Salto incondicional

2%

a) Determinar cul de las tres mquinas siguientes es la ms rpida y con qu relacin:


M1: ruta multiciclo con los ciclos definidos en la tabla y reloj de 500 MHz.
M2: ruta multiciclo en donde las instrucciones de carga y aritmtico-lgicas tardan un
ciclo menos que en M1. Esto rebaja la frecuencia de reloj a 400 MHz al aumentar la
longitud del camino crtico.

Captulo 7 Rendimiento

279

M3: ruta multiciclo como la de M2 donde adems las instrucciones de carga y almacenamiento tardan un ciclo menos que en M2. Esto rebaja la frecuencia de reloj a 250
MHz, al alargar la longitud del ciclo para el camino crtico.
b) Hay proporciones de instrucciones que hiciesen que fuese otra la mquina ms rpida? Si es as, qu proporciones son esas?
Solucin:
a) Sabemos que el tiempo de ejecucin viene dado por la siguiente frmula:
T % Ni # CPI # t
Por otro lado, los ciclos por instruccin en cada mquina se resumen en la siguiente
tabla:
Instruccin

Ciclos M1

Ciclos M2

Ciclos M3

Carga

Almacenamiento

Aritmtico-lgica

Salto-condicional (SI)

Salto-condicional (NO)

Salto-incondicional

Junto con los porcentajes dados en los enunciados, podemos obtener el CPI en cada
mquina:
CPIM1 % 0,22 # 5 ! 0,11 # 4 ! 0,49 # 4 ! 0,04 # 4 ! 0,12 # 3 ! 0,02 # 3 % 4,08
CPIM2 % 0,22 # 4 ! 0,11 # 4 ! 0,49 # 3 ! 0,04 # 4 ! 0,12 # 3 ! 0,02 # 3 % 3,37
CPIM3 % 0,22 # 3 ! 0,11 # 3 ! 0,49 # 3 ! 0,04 # 4 ! 0,12 # 3 ! 0,02 # 3 % 3,04
De donde, el tiempo de ejecucin ser:
TM1 % Ni # 4,08 #

1
s % Ni # 8,16 ns
500 # 106

TM2 % Ni # 3,37 #

1
s % Ni # 8,42 ns
400 # 106

TM3 % Ni # 3,04 #

1
s % Ni # 12,12 ns
250 # 106

Por lo tanto la mquina M1 es 1,03 veces ms rpida que M2 y 1,49 veces ms rpida
que M3.

280

Problemas de fundamentos y estructura de computadores

b) Por ejemplo, si el 100% de las instrucciones fuesen aritmticas, el CPI de M1 sera 4 y el


de las otras dos mquinas sera 3. En este caso, el tiempo de ejecucin es:
TM1 % Ni # 4 #

1
s % Ni # 8 ns
500 # 106

TM2 % Ni # 3 #

1
s % Ni # 7,5 ns
400 # 106

TM3 % Ni # 3 #

1
s % Ni # 12 ns
250 # 106

En cuyo caso la mquina M2 sera la ms rpida.


PROBLEMA 14
Se tiene un programa en un computador X que tarda 35 segundos en ejecutarse mientras
que en el computador Y emplea 21 segundos. Se sabe que el programa est formado por
522 millones de instrucciones. Cunto es ms rpido el computador Y que el X? Qu
cantidad de instrucciones por segundo (MIPS) ejecuta cada computador?
Solucin:
Se sabe que una mquina Y es n veces ms rpida que otra X si:
RY TX
% %n
RX TY
Con lo que:
TX
% 1,67
TY
De donde se desprende que el computador Y es 1,67 veces ms rpido que el X.
Para la segunda cuestin podemos utilizar la frmula:
MIPS %

Instrucciones por programa


Tiempo ejecucin # 106

De donde, para la mquina X tenemos:


MIPSX %

522 # 106 instrucciones


% 14,91
35 s # 106

Mientras que para la mquina Y:


MIPSY %

522 # 106 instrucciones


% 24,86
21 s # 106

Captulo 7 Rendimiento

281

PROBLEMA 15
En un concurso de algoritmos en ensamblador que realizan la misma tarea, el algoritmo
que menor tiempo emplee ser el ganador. Se supone que el cdigo estar formado por tres
tipos de instrucciones nicamente, recogindose en la tabla siguiente el nmero de ciclos
por instruccin para cada uno de los tipos
Tipo 1

Tipo 2

Tipo 3

Tras un cuidadoso estudio del cdigo de los participantes, el jurado se ha quedado con
dos programas cuyas caractersticas se muestran en la tabla siguiente:
Programa

Total de instrucciones por tipo


Tipo 1

Tipo 2

Tipo 3

Programa 1

Programa 2

Se nos pide determinar el programa ganador.


Solucin:
Para averiguar cul es el programa ganador basta con calcular el tiempo de ejecucin de cada
uno de los programas utilizando la frmula (t % tiempo de ciclo):
T % Ni # CPI # t
Y como:
CPI %

Ciclos de reloj
Ni

La ecuacin anterior se reduce a:


T % Ciclos de reloj # t
Podemos calcular directamente el tiempo de ejecucin para cada programa:
T1 % (2 # 1 ! 1 # 2 ! 2 # 3)t % 10t
T2 % (4 # 1 ! 1 # 2 ! 1 # 3)t % 9t
Y por lo tanto, el programa 2 es el ganador, pues es un 10% ms rpido que el programa 1.

282

Problemas de fundamentos y estructura de computadores

PROBLEMA 16
Un programa consta de 140 instrucciones de las cuales 70 tardan en ejecutarse cuatro
ciclos, 35 tardan cinco ciclos, 20 tardan tres ciclos y las 15 restantes tardan siete ciclos.
Calcular el CPI promedio para dicho programa. Si el procesador funciona a una frecuencia
de 2,0 GHz, averiguar el tiempo que se tarda en ejecutar el programa.
Solucin:
Para calcular el nmero de Ciclos Promedio por Instruccin (CPI) realizaremos la suma ponderada de cada tipo de instruccin del programa. En primer lugar debe calcularse la frecuencia relativa de cada tipo, usando la expresin:
fi %

ni
N

Donde ni es el nmero de instrucciones del i-simo tipo y N es el nmero total de instrucciones del programa.
Finalmente el CPI del programa es la suma ponderada del nmero de ciclos de cada tipo
de instruccin (CPIi):
CPI % ; fi # CPIi
Teniendo en cuenta las expresiones anteriores puede completarse fcilmente la siguiente
tabla:
ni

CPIi

fi

fi # CPIi

70

0,50

35

0,25

1,25

20

0,14

0,42

15

0,11

0,77
CPI % 4,44

El tiempo de ejecucion del programa puede obtenerse usando el CPI calculado previamente:
T % Ni # CPI # t
De donde
T % 140 # 4,44 #

1
s % 3,108 # 10.7 s ] 0,321 ]s
2,0 # 109

PROBLEMA 17
Se desea mejorar el rendimiento de un computador introduciendo una tarjeta grfica de
ltima generacin que realice las operaciones en la mitad de tiempo.
a) Calcular la ganancia en velocidad del sistema para la ejecucin de un programa si el
87% del mismo se dedica a operaciones grficas.

Captulo 7 Rendimiento

283

b) Si el programa tarda 32 segundos en ejecutarse sin la mejora, cunto tardara con la


mejora?
Solucin:
a) La ley de Amdahl se resume en la ecuacin:
A%

Tiempo sin mejora


%
Tiempo con mejora

1
(1 . Fm) !

Fm
Am

donde:
A: es la aceleracin o ganancia en velocidad conseguida en el sistema completo debido a la mejora de uno de sus subsistemas.
Am: Factor de mejora que ha introducido el subsistema alterado.
Fm: Fraccin de tiempo que el sistema emplea el subsistema alterado.
Para resolver el ejercicio debemos aplicar esta ley de Amdahl. De los datos del enunciado se ve que Am % 2 y que Fm % 0,87
1

A%

(1 . 0,87) !

0,87
2

% 1,7699

De donde vemos que el nuevo sistema ser un 76,99% mas rpido.


b)
A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,7699 %

32
Tiempo ejecucin con mejora

De donde el programa, con la mejora tardar 18,08 s en ejecutarse.


PROBLEMA 18
Se desea mejorar el repertorio de instrucciones de un computador, y para ello se barajan las
alternativas siguientes, todas ellas del mismo coste:
Mejorar las instrucciones de suma.
Mejorar las instrucciones de salto condicional.
Mejorar las instrucciones de carga-almacenamiento.
Mejorar el resto de las instrucciones.
En la tabla siguiente se recoge el porcentaje de veces que se emplean las instrucciones
una vez pasadas las SPECint2006 y el factor de mejora que se puede introducir para cada
una de ellas

284

Problemas de fundamentos y estructura de computadores

Tipo de instruccin

Porcentaje de uso

Factor de mejora

Suma

30%

10

Salto condicional

55%

Carga-almacenamiento

12%

Resto de instrucciones

3%

10

Se pide:
a) Indicar cul de las mejoras anteriores es la que recomendaramos.
b) Si un programa tardaba antes de la mejora 37,02 s en ejecutarse, calcule cunto tardar con la mejora que hemos elegido en a).
Solucin:
a) Aplicando la ley de Amdahl para cada uno de los casos se obtiene:
Tipo de instruccin

Fm

Am

Suma

30%

10

1,37

Salto condicional

55%

1,38

Carga-almacenamiento

12%

1,12

3%

10

1,03

Otras

Por lo que la mayor ganancia se da en las instrucciones de salto condicional.


b) De la ley de Amdahl sabemos que:
A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,38 %

37,02
Tiempo ejecucin con mejora

Por lo que el tiempo modificando las instrucciones de salto condicional ser de 26,83 s.
PROBLEMA 19
Se desea mejorar el repertorio de instrucciones de un computador, y para ello se barajan las
alternativas siguientes, todas ellas del mismo coste:
Mejorar las instrucciones de suma.
Mejorar las instrucciones de salto condicional.
Mejorar las instrucciones de carga-almacenamiento.
Mejorar el resto de las instrucciones.

Captulo 7 Rendimiento

285

En la tabla siguiente se recoge el porcentaje de veces que se emplean las instrucciones


una vez pasadas las SPECint2006 y el factor de mejora que se puede introducir para cada
una de ellas.
Tipo de instruccin

Porcentaje de uso

Factor de mejora

Suma

30%

Salto condicional

34%

Carga-almacenamiento

32%

Resto de instrucciones

4%

Se pide:
a) Indicar cul de las mejoras anteriores es la que recomendaramos.
b) Si un programa tardaba antes de la mejora 28,3 s en ejecutarse, calcule cunto tardar
con la mejora que hemos elegido en el apartado anterior.
Solucin:
a) Aplicando la ley de Amdahl para cada uno de los casos se obtiene:
Tipo de instruccin

Fm

Am

Suma

30%

1,31

Salto condicional

34%

1,34

Carga-almacenamiento

32%

1,19

4%

1,03

Otras

Por lo que la mayor ganancia se da en las instrucciones de salto condicional.


b) De la ley de Amdahl sabemos que:
A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,34 %

28,3
Tiempo ejecucin con mejora

Por lo que el tiempo modificando las instrucciones de salto condicional ser de 22,12 s.
PROBLEMA 20
Un computador tiene un rendimiento de 3 MFLOPS normalizados a operaciones sencillas
en coma flotante. Si la operacin de multiplicacin equivale a cuatro operaciones en coma
flotante sencillas y la de exponenciacin se equipara con 8:
a) Calcular el tiempo que se tarda en realizar la tarea sabiendo que consta de las siguientes operaciones en coma flotante: 4.000 sumas, 1.500 multiplicaciones y 2.200 operaciones de de exponenciacin.

286

Problemas de fundamentos y estructura de computadores

Para el computador anterior se ofrecen tres alternativas de diseo de igual coste:


1.
2.
3.

Introducir una nueva ALU que realiza la operacin de exponenciacin en 5 ciclos.


Introducir una nueva ALU que realiza la operacin de multiplicacin en 1 ciclo.
Introducir algunas mejoras estructurales que permitan aumentar la frecuencia de
reloj del procesador de forma que su rendimiento sea 3,5 MFLOPS.

b) Analizar la rentabilidad de estas alternativas.


Solucin:
a) En primer lugar transformamos las operaciones del enunciado a operaciones en coma flotante sencillas. Esto nos dar el nmero total de instrucciones:
Ni % 4.000 ! 4 # 1.500 ! 8 # 2.200 % 27.600
De la frmula de clculo de MFLOPS:
MFLOPS %

Instrucciones de punto flotante por programa


Tiempo ejecucin # 106

Se desprende que:
Tiempo ejecucin %

27.600
Ni
s % 9,2 ms
6%
MFLOPS # 10
3 # 106

b) La rentabilidad de estas alternativas se puede evaluar mediante la ley de Amdahl:


A%

Tiempo sin mejora


%
Tiempo con mejora

1
(1 . Fm) !

Fm
Am

donde:
A: es la aceleracin o ganancia en velocidad conseguida en el sistema completo debido a la mejora de uno de sus subsistemas.
Am: Factor de mejora que ha introducido el subsistema alterado.
Fm: Fraccin de tiempo que el sistema emplea el subsistema alterado.
Caso b.1)
En este caso mejoramos las operaciones de exponenciacin, reducindolas a 5 ciclos.
8
El factor de mejora es Am % % 1,60.
5
El tiempo que el sistema original utiliza estas operaciones se puede deducir con una
regla de tres:
4.000 ! 4 # 1.500 ! 8 # 2.200 r 100%
8 # 2.200 r Fm
De donde Fm % 63,77%.

Captulo 7 Rendimiento

287

Y por lo tanto
A%

1
0,64
(1 . 0,64) !
1,60

% 1,32

Finalmente, podemos calcular el tiempo tras la mejora:


A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,32 %

9,2 ms
Tiempo ejecucin con mejora

Por lo que el tiempo modificando las instrucciones de exponenciacin ser de 7 ms


aproximadamente.
Caso b.2)
En este caso mejoramos las operaciones de multiplicacin, reducindolas a 1 ciclo.
4
El factor de mejora es Am % % 4.
1
El tiempo que el sistema original utiliza estas operaciones se puede deducir con una
regla de tres:
4.000 ! 4 # 1.500 ! 8 # 2.200 r 100%
4 # 1.500 r Fm
De donde Fm % 21,74%.
Y por lo tanto
A%

1
0,22
(1 . 0,22) !
4

% 1,20

Finalmente, podemos calcular el tiempo tras la mejora:


A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,20 %

9,2 ms
Tiempo ejecucin con mejora

Por lo que el tiempo modificando las instrucciones de multiplicacin ser de 7,7 ms


aproximadamente.
Caso b.3)
En este caso mejoramos todo el sistema, haciendo que ste trabaje a 3,5 MFLOPS.
El factor de mejora es Am %

3,5
% 1,17.
3

El tiempo utilizado por el subsistema es en este caso del 100%, de donde Fm % 100%.

288

Problemas de fundamentos y estructura de computadores

Y por lo tanto
1

A%

(1 . 1) !

1
1,17

% 1,17

Finalmente, podemos calcular el tiempo tras la mejora:


A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,17 %

9,2 ms
Tiempo ejecucin con mejora

Por lo que el tiempo modificando la frecuencia de reloj ser de 7,9 ms aproximadamente.


Evidentemente, la mejora en las operaciones de exponenciacin (b.1) ser la ms rentable (sin tener en cuenta factores de coste de implementacin.)
PROBLEMA 21
Se desea mejorar el rendimiento de un computador introduciendo un coprocesador matemtico que realice las operaciones en la mitad de tiempo.
a) Calcular la ganancia en velocidad del sistema para la ejecucin de un programa si el
96% del mismo se dedica a operaciones aritmticas.
b) Si el programa tarda 15 segundos en ejecutarse sin la mejora, cunto tardar con la
mejora?
Solucin:
a) La ley de Amdahl se resume en la ecuacin:
A%

Tiempo sin mejora


%
Tiempo con mejora

1
(1 . Fm) !

Fm
Am

donde:
A: es la aceleracin o ganancia en velocidad conseguida en el sistema completo debido a la mejora de uno de sus subsistemas.
Am: Factor de mejora que ha introducido el subsistema alterado.
Fm: Fraccin de tiempo que el sistema emplea el subsistema alterado.
Para resolver el ejercicio debemos aplicar esta ley de Amdahl. De los datos del enunciado se ve que Am % 2 y que Fm % 0,96
A%

1
(1 . 0,96) %

0,96
2

% 1,9231

De donde vemos que el nuevo sistema ser un 92,31% ms rpido.

Captulo 7 Rendimiento

289

b)
A%

Tiempo ejecucin sin mejora


Tiempo ejecucin con mejora

1,9231 %

15
Tiempo ejecucin con mejora

De donde el programa con la mejora tardar 7,8 s en ejecutarse.

7.7 Problemas propuestos


PROBLEMA 1
Sean dos mquinas que arrojan los siguientes datos cuando se ejecutan dos programas en
ellas:
Programa

Tiempo en M1

Tiempo en M2

P1

2,0 segundos

1,5 segundos

P2

5,0 segundos

10,0 segundos

P1 debe ejecutarse 1.600 veces cada hora. El tiempo restante se emplea en ejecutar P2. Si
cada mquina tiene suficiente capacidad como para ejecutar P1 el nmero de veces requerido,
esto significa que el rendimiento viene dado por el nmero de veces que puede ejecutarse P2.
Qu mquina es ms rpida dada esta carga de trabajo? Cul de ellas es ms rentable?
PROBLEMA 2
Consideremos dos implementaciones diferentes de un programa: P1 y P2, bajo el mismo repertorio de instrucciones que contiene cinco clases de instrucciones (A, B, C, D y E).
P1 trabaja en un computador a una frecuencia de 4 GHz, P2 en uno de 6 GHz. Los ciclos
promedio por instruccin para P1 y P2 se dan en la siguiente tabla:
Clase

CPI en P1

CPI en P2

a) El pico de rendimiento se alcanza cuando el programa est compuesto slo por las instrucciones ms rpidas. Cul es el pico de rendimiento para P1 y P2?
b) Si el nmero de instrucciones ejecutadas en un programa dado se divide equitativamente
entre las instrucciones dadas excepto por las de tipo A, que aparecen el doble de veces,
cunto ms rpido es P2?

290

Problemas de fundamentos y estructura de computadores

PROBLEMA 3
Sean dos implementaciones distintas de un programa P1 y P2, desarrollados en computadores
diferentes pero con el mismo repertorio de instrucciones. Existen tres clases de instrucciones
(A, B y C). P1 se ejecuta en un computador a 6 GHz, y P2 en un computador a 3 GHz. Los
ciclos promedio para cada clase de instruccin en P1 y P2 vienen dados en la siguiente tabla,
as como la proporcin de instrucciones generadas por tres compiladores diferentes:
Clase

CPI en P1

CPI en P2 Uso de C1 Uso de C2 Uso de C3

40%

40%

50%

40%

20%

25%

20%

40%

25%

Suponga que cada compilador genera el mismo nmero de instrucciones para ambos programas.
a) Usando C1 para compilar P1 y P2, qu programa se ejecuta ms rpido y en qu medida?
b) Repita el apartado anterior, pero usando C2.
c)

Si el programa que usa es P1, qu compilador utilizara?

d) Repite el apartado anterior para P2


e)

Qu programa y compilador utilizara suponiendo que el coste es el mismo? Recuerde


que P1 slo se puede ejecutar en el computador de 6 GHz y P2 en el de 3 GHz.

PROBLEMA 4
Sea un programa, que se ejecuta en 10 s en un computador a 1 GHz. Se crea una nueva versin del programa, reemplazando todas las multiplicaciones por 4 (x % 4*x) con dos instrucciones que suma la variable a s misma (x % x ! x; x % x ! x). El CPI de la multiplicacin
por 4 es 4, mientras que el CPI de la suma es 1. Despus de compilar la nueva versin, el
programa se ejecuta en 9 s. Cuntas multiplicaciones por 4 se han sustituido por sumas?
PROBLEMA 5
Una compaa quiere mejorar un programa Java aadiendo soporte hardware para el recolector de basura. La recoleccin de basura toma el 20% de los ciclos totales de un programa.
Existen dos alternativas para mejorar el computador. La primera solucin consiste en recolectar la basura completamente va hardware. Esto produce un incremento del tiempo de ciclo en
un factor de 1,2. La segunda alternativa consiste en proporcionar nuevas y mejores instrucciones para recolectar los punteros no referenciados, lo que reduce a la mitad el tiempo que necesita el recolector original pero incrementa el tiempo de ciclo en un factor de 1,1. Cul de
estas opciones deberamos tomar?
PROBLEMA 6
Supongamos que mejoramos un computador para hacer que todas las operaciones en coma
flotante se ejecuten 5 veces ms rpido. Si el tiempo de ejecucin de un benchmark antes de

Captulo 7 Rendimiento

291

la mejora del hardware es de 10 s., cul es la mejora si la mitad del tiempo se emplea en
ejecutar operaciones en coma flotante?
PROBLEMA 7
Queremos implementar una nueva unidad en coma flotante para un procesador, y queremos
que el benchmark elegido para realizar las pruebas mejore el rendimiento en un factor de 3,0.
Utilizando nuestra vieja unidad de operaciones en coma flotante el benchmark se ejecuta en
100 s. Cunto mejorara el tiempo de ejecucin del benchmark nuestra nueva unidad funcional?
PROBLEMA 8
Queremos mejorar un computador, y tenemos dos posibles alternativas. La primera es hacer
que las instrucciones de multiplicacin se ejecuten cuatro veces ms rpido. La segunda es
que las instrucciones de acceso a memoria se ejecuten dos veces ms rpido. Ejecutamos repetidas veces un programa que tarda 100 s en ejecutarse. De este tiempo, el 20% se invierte en
multiplicacin, el 50% en instrucciones de acceso a memoria y el 30% para otras instrucciones.
a) Cul ser la ganancia si slo mejoramos la multiplicacin?
b) Cul ser la ganancia si slo mejoramos los accesos a memoria?
c) Cul ser la ganancia si mejoramos las dos opciones?
PROBLEMA 9
Se desea mejorar el rendimiento de un computador introduciendo un coprocesador matemtico que realice las operaciones en coma flotante en la mitad de tiempo.
a) Calcular la ganancia en velocidad del sistema para la ejecucin de un programa si el 36%
del mismo se dedica a operaciones en coma flotante.
b) Si el programa tarda 15 segundos en ejecutarse sin la mejora, cunto tardar con la mejora?
PROBLEMA 10
En el dominio de los sistemas empotrados, donde el coste es crucial, a menudo los procesadores implementan sus operaciones en coma flotante va software. Estamos interesados en dos
diseos de un computador, uno con hardware para operaciones en coma flotante y otro sin l.
Consideremos un programa con el siguiente juego de instrucciones en coma flotante:
Multiplicacin en CF:

10%

Suma en CF:

15%

Divisin en CF:
Instrucciones enteras:

5%
70%

El computador CCF (computador con coma flotante) tiene hardware para realizar operaciones en coma flotante. Los ciclos requeridos para cada tipo de instrucciones son los siguientes:

292

Problemas de fundamentos y estructura de computadores

Multiplicacin en CF:

Suma en CF:

Divisin en CF:
Instrucciones enteras:

20
2

El computador CSCF (sin coma flotante) debe emular las operaciones en coma flotante
usando instrucciones de tipo entero. Una instruccin de tipo entero consume dos ciclos de
reloj. Los nmeros de instrucciones enteras requeridos para emular las operaciones en coma
flotante son las siguientes:
Multiplicacin en CF:

60

Suma en CF:

20

Divisin en CF:

50

Calcular la mtrica MIPS para ambos computadores.

Los modos de direccionamiento son procedimientos que permiten determinar la direccin de


un objeto, siendo un objeto cualquier elemento direccionable, es decir, una instruccin, un
operando o un resultado. Se define direccin efectiva como la direccin en la que se encuentra
el objeto. Los objetos pueden residir en la propia instruccin, en un registro o en la memoria
principal.
Los modos de direccionamiento sirven para ahorrar espacio de memoria. Por ejemplo, si
un bus de direcciones tiene 64 bits, para direccionar un objeto necesitamos 64 bits, si la instruccin utiliza 2 operandos fuente y un operando destino, necesitar tener un tamao de ms
de 192 bits puesto que una instruccin debe incluir mas informacin aparte de la direccin de
los operandos. Si implementamos un modo de direccionamiento que slo utilice 32 bits se
consiguen instrucciones de menor tamao. Cuanto menor sea el tamao de las instrucciones,
menor es la memoria.
Por otro lado, su uso simplifica el manejo de las estructuras de datos complejas, dan flexibilidad a los programadores de lenguaje mquina y facilitan el diseo de compiladores. De las
diferentes clasificaciones que existen vamos a usar la siguiente:
Inmediato.
Directo.
Relativo o con desplazamiento.
Indirecto.

8.1 Direccionamiento inmediato


En este modo de direccionamiento el operando se incluye en la propia instruccin. Este modo
se utiliza para definir constantes. Para representar el inmediato se utilizan un nmero de bits

294

Problemas de fundamentos y estructura de computadores

menor que el del bus de datos, por eso cuando se carga en un registro del procesador hay que
realizar una operacin de extensin de signo. Esta operacin consiste en aadir al nmero
inmediato tantos bits como necesite para que alcance el mismo tamao que el registro destino
conservando el mismo valor numrico que representaba antes de la operacin. Su principal
ventaja es que no se tiene que acceder a memoria para obtener el dato, luego es muy rpido.
Su principal desventaja es que la magnitud del dato est restringida por el tamao del campo
inmediato.

8.2 Direccionamiento directo


Es aquel modo en el que la instruccin contiene la direccin efectiva del objeto. Se clasifican en:
Directo de registro.
Directo de memoria.
De pgina base.
Directo de registro. La instruccin contiene la direccin de un registro del banco de registros.

De memoria. La instruccin contiene una direccin completa de memoria. Su inconveniente


es que el tamao de la memoria est limitado por el nmero de bits asignado al campo direccin. Como ventaja tiene su facilidad de implementacin. En ocasiones tambin se le llama
absoluto.

Captulo 8 Modos de direccionamiento

295

De pgina base. La informacin contenida es una direccin limitada, que permite acceder
slo a una parte del mapa de memoria. Es decir, tiene menos bits de los necesarios para direccionar toda la memoria. La principal ventaja que tiene es que se reduce el tamao de la instruccin, luego consume menos bits de memoria. Su principal desventaja es que no puede
acceder a todas las posiciones de la memoria. Por ltimo sus tiempos de acceso son similares
a los anteriores.

8.3 Direccionamiento relativo


En este modo de direccionamiento la instruccin no contiene la direccin del objeto, sino
un desplazamiento que se suma al contenido de un registro base para obtener la direccin
efectiva. Su ventaja es que el desplazamiento necesita menos bits para realizar el direccionamiento que el directo a memoria. Una caracterstica importante de la implementacin es
que la suma no debe producir demasiado retardo en el clculo de la direccin efectiva. Una
desventaja es que necesita ms hardware para implementarse y es ms lento que el directo,
puesto que previamente hay que acceder al registro base y realizar la suma. Es muy interesante para tratar cdigos reubicables y para recorrer de forma eficaz estructuras de datos. Se pueden encontrar los siguientes casos:
Relativo a contador de programa (PC).
Relativo a registro base.
Relativo a ndice.
Relativo a pila.
Direccionamiento relativo a contador de programa. En este modo de direccionamiento el registro base empleado es el contador de programa PC. Explota el concepto de localidad y por
lo tanto es indicado para alcanzar instrucciones prximas a la que se est ejecutando. Se suele
utilizar en instrucciones de bifurcacin. Tiene la ventaja, frente otros direccionamientos relativos, de no necesitar incluir la direccin del contador de programa en la instruccin puesto
que slo hay uno. La direccin efectiva se consigue sumando el contenido del PC y el campo
desplazamiento del registro de instrucciones. Como probablemente no tengan el mismo tamao, habr que utilizar un mdulo extensin de signo para implementarlo.

296

Problemas de fundamentos y estructura de computadores

Direccionamiento relativo a registro base. Se caracteriza porque la instruccin contiene dos


informaciones: la direccin del registro base y un desplazamiento que suele tener un tamao
inferior al de una direccin de memoria. El registro base contiene una direccin de memoria.
Se utiliza cuando la direccin base no es conocida en tiempo de compilacin (la informacin
que se conoce en tiempo de compilacin es la informacin que conoce el programador mientras escribe el programa) pero el desplazamiento relativo s que lo es.

Direccionamiento relativo a ndice. Tambin llamado indexado. Es una modificacin del anterior y por lo tanto la instruccin debe contener dos informaciones: la direccin del registro
ndice que contiene el desplazamiento (atencin, darse cuenta que es lo contrario de lo que
ocurra en el indexado a registro base) y la direccin base de la memoria que debe estar referenciada con todos los bits. Es decir se consume muchos bits, puesto que la direccin de memoria es grande. Esta es la principal diferencia con el relativo a registro base. Si el n.o bits de
desplazamiento del modo relativo a registro base y los de memoria del modo relativo a registro ndice coinciden, estos modos son indistinguibles.
En ocasiones los direccionamientos relativos se implementan con incrementos y decrementos automticos del contenido del registro para facilitar el manejo de las estructuras de
datos. Esto complica el hardware, pero acorta los programas. Los ms habituales son:
Preautoincremento.
Preautodecremento.

Captulo 8 Modos de direccionamiento

297

Postautoincremento.
Postautodecremento.
Se suele utilizar cuando se puede conocer la posicin de un vector en tiempo de compilacin, pero el elemento exacto al que queremos acceder no se conoce nada ms que en tiempo
de ejecucin.
Direccionamiento directo relativo a pila. Llamado tambin direccionamiento a pila. Recordar
que una pila es una cola del tipo primero en entrar ltimo en salir. La mquina debe disponer
de un registro SP (puntero a pila). Los accesos a pila deben tener un tratamiento especial.
Para insertar un elemento en la pila, el direccionamiento relativo a SP debe generar un preautoincremento, y para sacar un elemento de la pila el direccionamiento relativo a SP debe
realizar un post-autodecremento. Permite instrucciones muy compactas y si slo se dispone de
un SP la instruccin no necesita informacin de direccin.

A continuacin se ve una posible implementacin del HW necesario para modificar el


puntero:

298

Problemas de fundamentos y estructura de computadores

8.4 Direccionamiento indirecto


La direccin contenida en la instruccin NO es la del objeto, sino la de la direccin del objeto.
Existen dos tipos: indirecta de memoria e indirecta de registros

En ambos casos es necesario un acceso adicional para obtener el objeto. En el indirecto


a memoria se accede dos veces a la memoria, la primera vez para obtener la direccin efectiva del objeto y la segunda para obtener el objeto. No se suele utilizar la indireccin multinivel porque retardara en exceso la ejecucin de los programas.
El indirecto a registro se utiliza muy a menudo por ser casi el doble de rpido que el indirecto a memoria, puesto que el acceso a registro es mucho ms rpido que el acceso a memoria. Es til cuando la direccin de una estructura de datos slo se conoce en tiempo de ejecucin. Se puede encontrar con autoincremento y autodecrementos.
Nota: El pseudo-ensablador para los modos de direccionamiento que se va a usar en los problemas es el siguiente.

Captulo 8 Modos de direccionamiento

Modo de direccionamiento

Pseudo-ensamblador

Inmediato

299

Clculo de @efectiva

Numero

Directo a registro

Ri

Directo a memoria

@M

@M

Directo a pila SP

SP

aSPb

Indirecto a registro

(Ri)

aRib

Indirecto a memoria

(@M)

a@Mb

Relativo a contador de programa

desp(PC)

aPCb ! desp

Relativo a registro base

despl(RB)

aRBb ! desp % @M ! desp

Relativo a registro ndice

@M(RI)

@M ! aRib % @M ! desp

Los direccionamientos directo a pila, relativo a registro base, relativo a registro ndice e
indirecto a registro e indirecto a memoria pueden usar adems post-incremento (RB)!, postdecremento (RB)., pre-decremento .(RB) y pre-incremento !(RB).

8.5 Problemas resueltos


PROBLEMA 1
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 60; aR4b % 5;
aR5b % 765; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 65, a@201b % 424, a@202b % 87, a@203b % 53,
a@204b % 765, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) ADD R3,R5,R4
b) SUB R3,R5,R4
Sabiendo que el primer operando de las operaciones es el destino.
Nota: aRib es el contenido del registro Ri y a@ib es el contenido de la posicin i de
memoria.

300

Problemas de fundamentos y estructura de computadores

Solucin:
a) ADD R3,R5,R4 usa para los tres operandos direccionamiento directo a registro:
R5 r operando1 % 765
R4 r operando2 % 5
R3 r resultado % aR3b % 765 ! 5 % 770
b) SUB R3,R5,R4 usa para los tres operandos direccionamiento directo:
R5 r operando1 % 765
R4 r operando2 % 5
R3 r resultado % aR3b % 765 . 5 % 760
PROBLEMA 2
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b%0; aR1b%100; aR2b%89; aR3b%60; aR4b%5; aR5b%765;
aR6b%676; aR7b%837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 65, a@201b % 424, a@202b % 87, a@203b % 53,
a@204b % 765, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguiente instruccin:
SUB R3,R4,45
Sabiendo que el primer operando de las operaciones es el destino
Nota: aRib es el contenido del registro Ri y a@ib es el contenido de la posicin i de
memoria.
Solucin:
SUB R3,R4,45 usa para los dos operandos direccionamiento directo a registro y un operando inmediato.
R4 r operando1 % 5
45 r operando2 % 45
R3 r resultado % aR3b % 5 . 45 % .40
PROBLEMA 3
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 60; aR4b % 5; aR5b % 765,
aR6b % 676; aR7b % 837

Captulo 8 Modos de direccionamiento

301

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 65, a@201b % 424, a@202b % 87, a@203b % 53,
a@204b % 765, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) SUB R7,@200,R3
b) MUL @202,@203,@204
Sabiendo que el primer operando de las operaciones es el destino.
Solucin:
a) SUB R7,@200,R3. Esta instruccin usa dos modos de direccionamiento: directo a registro para el destino y segundo operando, y directo a memoria para el segundo operando:
@200 r @efectiva % @200 r operando1 % a@200b % 65
R3 r operando2 % aR3b % 60
R7 r resultado % aR7b % 65 . 60 % 5
b) MUL @202,@203,@204. Usa el modo de direccionamiento directo a memoria para referenciar sus tres operandos.
@203 r @efectiva % @203 r operando1%a@203b % 53
@204 r @efectiva % @204 r operando2 % a@204b % 765
@202 r @efectiva resultado % @2002 r resultado % a@202b % 53X765 %
% 40545
PROBLEMA 4
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 203
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53

302

Problemas de fundamentos y estructura de computadores

Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:


a) ADD R3,R5,(R4)
b) SUB R3,(R4),(R5)
Sabiendo que el primer operando de las operaciones es el destino.
Solucin:
a) ADD R3,R5,(R4). Esta instruccin usa dos modos de direccionamiento el directo a registro y el indirecto a registro.
R5 r operando1 % aR5b % 27
(R4) r @efectiva % aR4b % @25 r operando2 % a@25b % 87
R3 r resultado % aR3b % 27 ! 87 % 114
b) SUB R3,(R4),(R5). Esta instruccin usa dos modos de direccionamiento: directo a registro e indirecto a registro:
(R4) r @efectiva % aR4b % @25 r operando1 % a@25b % 87
(R5) r @efectiva % aR5b % @27 r operando 2 % a@27b % 75
R3 r resultado % aR3b % 87 . 75 % 12
PROBLEMA 5
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 203
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) SUB R7,(@200),(R3)
b) MUL (@202),(@203),(@204)
Solucin:
a) SUB R7,(@200),(R3). Usa tres modos de direccionamiento: directo a registro, indirecto a
memoria e indirecto a registro.
(@200) r @efectiva % a@200b % @29 r operando1 % a@29b % 63
(R3) r @efectiva % aR3b % @29 r operando2 % a@29b % 63
R7 r resultado % aR7b % 0

Captulo 8 Modos de direccionamiento

303

b) MUL (@202),(@203),(@204). Esta instruccin usa tres modos de direccionamiento indirecto a memoria.
(@203) r @efectiva % a@203b % @30 r operando1 % a@30b % 203
(@204) r @efectiva % a@204b % @27 r operando2 % a@27b % 75
(@202) r @efectiva resultado % a@202b % @28 r resultado % a@28b %
% 75 # 203 % 15225
PROBLEMA 6
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) ADD R3,R5,(R4)!
b) SUB R3,(R4),(R5)
Sabiendo que el primer operando de las operaciones es el destino.
Solucin:
a) ADD R3,R5,(R4)!.
Esta instruccin utiliza dos modos de direccionamiento: directo a registro para el primer operando y el destino, e indirecto a registro con post incremento para el segundo
operando.
R5 r operando1 % aR5b % 27
(R4) ! r @efectiva % aR4b % @25 r operando2 a@25b % 87. Valor final de
R4 es aR4b % @26
R3 p resultado % aR3b % 27 ! 87 % 114
b) SUB R3,(R4),(R5).
Usa dos modos de direccionamiento: directo a registro para el destino e indirecto a
registro para los operandos:
(R4) r @efectiva % aR4b % @25 r operando 1 % a@25b % 87
(R5) r @efectiva % aR5b % @27 r operando 2 % a@27b % 75
R3 r resultado % aR3b % 87 ! 75 % 162

304

Problemas de fundamentos y estructura de computadores

PROBLEMA 7
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de la siguiente instruccin:
SUB R7,(@200),(R3)
Sabiendo que el primer operando de las operaciones es el destino.
Solucin:
SUB R7,(@200),(R3)
Usa tres modos de direccionamiento diferentes: directo a registro para el destino, indirecto
a memoria para el primer operando e indirecto a registro para el segundo operando:
(@200) r @efectiva % a@200b % @29 r operando 1 % a@29b % 63
(R3) r @efectiva % aR3b % @29 r operando 2 r a@29b % 63
R7 r resultado % aR7b % 63 . 63 % 0
PROBLEMA 8
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de la siguiente instruccin:
MUL -(@202),(@203),(@204)
Sabiendo que el primer operando de las operaciones es el destino.

Captulo 8 Modos de direccionamiento

305

Solucin:
MUL -(@202),(@203),(@204) Usa dos modos de direccionamiento diferentes: indirecto a
memoria con pre decremento para el destino e indirecto a memoria para los dos operandos:
(@203) r @efectiva % a@203b % @30 r operando1 % a@30b % 654
(@204) r @efectiva % a@204b%@27 r operando2 % a@27b % 75
-(@202) r @efectiva resultado % a@202b-1%@28-1 r Resultado % a@27b%
% 49050. El valor final @202 es a@202b%@27
PROBLEMA 9
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@57b % 65
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) ADD !20(R3),30(R5),45
b) ADD 20(R3)-,30(R5)!,45
Solucin:
a) ADD !20(R3),30(R5),45
Tiene tres modos de direccionamiento: relativo a registro base con pre-incremento
para el destino, relativo a registro base para el primer operando e inmediato para el segundo operando.
30(R5) r @efectiva%aR5b!30%27!30%57 r operando1 % a@57b%65
45 r operando2 % 45
!20(R3) r @efectiva resultado % aR3b ! 20 ! 1 % 29 ! 20 ! 1 % 50 r
r resultado % a@50b % 65 ! 45 % 110. El valor final de R3 es aR3b % 30
b) ADD 20(R3)-, 30(R5)!, 45
Tres modos de direccionamiento relativo a registro base con post decremento para el
destino, relativo a registro base con post incremento para el primer operando e inmediato
para el segundo operando.
30(R5)!r @efectiva%aR5b!30%27!30%@57 r operando1%a@57b %
% 65. Valor final de R5 es aR5b % 28
45 r operando2 % 45
20(R3)- r @efectiva del resultado % aR3b ! 29 % 29 ! 20 %
% @49 r resultado % a@49b%65!45%100. Valor final de R3 es aR3b % 28.

306

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20
a@201b % 424, a@202b % 28, a@203b % 30, a@204b % 27,
a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) SUB @25(R3),!(R4),(R5)!
b) SUB !@25(R3),(R4)-,-(R5)
Solucin:
a) SUB @25(R3),!(R4),(R5)!
Tiene 3 modos de direccionamiento: relativo a registro ndice para el destino, indirecto a registro con pre incremento para el primer operando, indirecto a registro con post
incremento para el segundo operando.
!(R4) r @efectiva % aR4b ! 1%25 ! 1%@26 r operando1 % a@26b%986.
El valor final del registro R4 es aR4b % 26
(R5) ! r @efectiva % aR5b % 27 r operando2 % a@27b % 75. El valor final
del R5 es aR5b % 28
@25(R3) r @efectiva del resultado % aR3b ! 25 % 29 ! 25 %
% @54 r resultado % a@54b % 20
b) SUB !@25(R3),(R4)-,-(R5)
Tres modos de direccionamiento: relativo a registro ndice con pre incremento para el
destino, relativo a registro base con post decremento para el primer operando y relativo a
registro base con pre decremento para el segundo operando
(R4) . r @efectiva % aR4b % @25 r operando1 % a@25b % 87. El valor final de R4 es 23
-(R5) r @efectiva % aR5b . 1 % 27 . 1 % @26 r operando2 % a@26b%986.
El valor final del registro R5 es 26
!@25(R3) r @efectiva del resultado % aR3b ! 25 ! 1 % 25 ! 29 ! 1%@55 r
r resultado%a@55b%87 . 986 % .899. El contenido final del registro R3 es 30.
PROBLEMA 11
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837; aPCb % 100

Captulo 8 Modos de direccionamiento

307

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20
a@201b % 424, a@202b % 28, a@203b % 30, a@204b % 27,
a@205b % 53
Cul es la direccin a la que saltan las instrucciones:
a) BIF INCONDICIONAL @25
b) BIF INCONDICIONAL (@25)
c)

BIF INCONDICIONAL (R7)

Solucin:
a) BIF INCONDICIONAL @25
@25 r @efectiva salto % @25
b) BIF INCONDICIONAL (@25)
(@25) r @efectiva salto % a@25b % @87
c)

BIF INCONDICIONAL (R7)


(R7) r @efectiva de salto % aR7b % @837

PROBLEMA 12
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 202; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837; aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 204, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20
a@201b % 424, a@202b % 75, a@203b % 30, a@204b % 75,
a@205b % 7
Indicar para la secuencia de instrucciones propuestas, si salta o no salta la instruccin y
cul es @efectiva de salto.
SUB R5, (@27)!,0(R1)
BIF SI CERO R5,50(PC)

308

Problemas de fundamentos y estructura de computadores

Solucin:
SUB R5, (@27)!, 0(R1)
(@27) ! r @efectiva % a@27b % @204 r operando1 % a@204b % 75. El valor final de @27 es 205.
0(R1) r @efectiva % aR1b ! 0 % @202 r operando2 % a@202b % 75
R5 r resultado % aR5b % 75 . 75 % 0
BIF SI CERO R5,50(PC)
Como aR5b % 0 la instruccin salta.
50(PC) r @efectiva de salto % aPCb ! 50 % 100 ! 50 % @150
PROBLEMA 13
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 202; aR2b % 89; aR3b % 29; aR4b % 25;
aR5b % 27; aR6b % 676; aR7b % 837; aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 204, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20
a@201b % 424, a@202b % 75, a@203b % 30, a@204b % 75,
a@205b % 7
Indicar para la secuencia de instrucciones propuestas, si salta o no salta la instruccin y
cul es @efectiva de salto.
SUB R5 !(@27),0(R1)
BIF SI CERO R5,50(PC)
BIF SI NO CERO, R5, !(@203)
Solucin:
SUB R5 !(@27),0(R1)
!(@27)r@efectiva%a@27b!1%204!1%@205roperando1%a@205b%7.
Valor final de @27 es 205.
0(R1) r @efectiva % aR1b ! 0 % 202 ! 0 % @202 r operando2 %
% a@202b % 75
R5 r resultado % aR5b % 7 . 75
BIF SI CERO R5,50(PC)
Como R5 no es cero la instruccin no salta.
50(PC) r @efectiva de salto % aPCb ! 50 % 102 ! 50 % @152. El PC inicial es
100. Suponemos que en @100 est almacenada la primera instruccin. El PC se actualiza al principio de la ejecucin de la instruccin. La segunda instruccin est en la posi-

Captulo 8 Modos de direccionamiento

309

cin 101, pero cuando se calcula la direccin de salto el PC ya ha sido actualizado, por
eso su valor es 102.
BIF SI NO CERO, R5, !(@203)
Como R5 no es cero la instruccin salta.
!(@203) r @efectiva de salto % a@203b ! 1 % 30 ! 1 % @31. El contenido final de @203 es 31.
PROBLEMA 14
Sabiendo que
a@10b % 100; a@99b % 50, a@100b % 25; aR4b % 50
Indicar el contenido de los registros y de la memoria cuando se ejecutan estas 3 instrucciones.
a) LOAD R6 ,-(@10)
b) ADD R7,R6, 50(R4)c)

STORE R7 !(@10)

Solucin:
a)

Load R6 ,-(@10)
-(@10) r @efectiva fuente % a@10b . 1 % 100 . 1 % @99 r contenido de la
posicin de memoria fuente % a@99b % 50. El contenido final de @10 es 99
R6 r contenido final del destino % aR6b % 50

b) ADD R7,R6,50(R4)R6 r operando 1 % aR6b % 50


50(R4)- r @efectiva%aR4b!50%50!50 %
% @100 r operando2%a@100b % 25. El valor final de R4 es 49
R7 r resultado % aR7b % 25 ! 50 % 75.
c)

STORE R7 !(@10) usa


R7 r contenido del registro fuente aR7b % 75
!(@10) r @efectiva destino % a@10b ! 1 % 99 ! 1 % @100 r contenido final del destino % a@100b % 75. El contenido final de a@10bes 100

Contenidos finales de memoria y registros


a@10b%100, a@99b%50, a@100b%75, aR4b%49, aR6b%50, aR7b%75
PROBLEMA 15
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0, aR1b % 26, aR2b % 29; aR3b % 4; aR4b % 25; aR5b % 27;
aR6b % 676; aR7b % 200, aPCb % 100

310

Problemas de fundamentos y estructura de computadores

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1,
a@300b % 29 a@301b % 2 a@302b % 1 a@303b % 2
Sabiendo que la instruccin de LOAD se almacena en la posicin @400 indicar el contenido de los registros y de las posiciones de memoria cuando acaba de ejecutarse el bucle
LOAD R5,(R1)
ADD R4, ,R5, (R2).
STORE R4,(R1)!
SUB R3,R3,1
BNEZ R3,200(R7)
Solucin:
Lo primero de todo es ver que este segmento de cdigo es un bucle controlado por las
instrucciones. SUB R3,R3,1 y BNEZ R3,200(R7). El contenido inicial del registro indica
las veces que se va a repetir el bucle, es decir 4 veces. La direccin de salto utiliza un modo
de direccionamiento relativo a registro base. La @efectiva de salto % 200 ! aR7b %
% 200 ! 200 % @400. Por lo tanto, salta a la instruccin de LOAD. Como el bucle se repite
4 veces esto quiere decir que el contenido final de R3 es 0.
LOAD R5,(R1), usa como modo de direccionamiento un indirecto a registro, luego la primera direccin de memoria a la que accede es aR1b % @26. El registro R1 ve modificado
su contenido por STORE R4,(R1)!, que usa un direccionamiento indirecto a registro con
post incremento, luego cada vez que se ejecuta esta instruccin se incrementa en el valor contenido en R1, luego las direcciones sucesivas a las que acceden LOAD @26, @27, @28, @29
que contienen los datos 4,3,2,1.
ADD R4,R5,(R2)- utiliza un modo de direccionamiento indirecto a registro con post decremento. La primera @efectiva a la que accede es @29 y cuando acaba de ejecutarse la instruccin se decrementa el contenido de R2, por lo tanto las direcciones que recorre en el bucle
son @29, @28, @27, @26 que contienen los datos 1, 2, 3, 4.
Por lo tanto, el resultado de sumar estos datos con los obtenidos con la instruccin de
LOAD es 5, 5, 5,5 que mediante la instruccin de STORE se almacenan en las direcciones
@26, @27, @28, @29.
Visto lo anterior los contenidos de registros y posiciones de memoria al acabar el bucle
son las siguientes:
a@26b % 5, a@27b % 5, a@28b % 5, a@29b % 5, aR1b % 29, aR2b % 26,
aR3b % 0, aR4b % 5,aR5b % 1, aR7b % 200
PROBLEMA 16
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 27; aR2b % 29; aR3b % 6; aR4b % 25; aR5b % 27;
aR6b % 76; aR7b % 100, aPCb % 100

Captulo 8 Modos de direccionamiento

311

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1, a@30b % 14,
a@300b % 29 a@301b % 2 a@302b % 1 a@303b % 2
Sabiendo que la instruccin de LOAD se almacena en la posicin @130 indicar el contenido de los registros y de las posiciones de memoria cuando acaba de ejecutarse el bucle
LOAD R5,3(R1)
ADD R4, R5, !(R2)
STORE R4,6(R1)!
SUB R6,R6,2
BEZ R6,30(R7)
Solucin:
Este segmento de programa es un bucle controlado por las instrucciones SUB R6,R6,2 y
BEQ R6,30(R7). El bucle se repite mientras el contenido de R6 sea cero, como inicialmente
aR6b % 76, el resultado de las resta es 74, luego este bucle slo se ejecuta una vez. Al final
aR6b % 74
LOAD R5,3(R1):
3(R1) r @efectiva fuente % aR1b ! 3 % 27 ! 3 % @30 r operando
fuente %a@30b % 14
R5 r contenido del destino % aR5b % 14
ADD R4,R5, !(R2):
R5 r operando1 aR5b % 14
!(R2) r @efectiva % aR2b ! 1 % 29 ! 1 % @30 r operando2 % a@30b % 14. El
contenido final del R2 es 30
R4 r resultado % aR4b % 14 ! 14 % 28.
STORE R4,6(R1)!
R4 r fuente % aR4b % 28
6(R1) ! r @efectiva destino % aR1b ! 6 % 27 ! 6 % @30 r a@30b % 28. El
valor final de R1 es aR1b % 28
PROBLEMA 17
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 202; aR2b % 89; aR3b % 29; aR4b% 25; aR5b % 27;
aR6b % 676; aR7b % 202; aPCb % 100

312

Problemas de fundamentos y estructura de computadores

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@25b % 87, a@26b % 986, a@27b % 202, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20
a@201b % 424, a@202b % 75, a@203b % 30, a@204b % 75,
a@205b % 7
Indicar 5 formas diferentes de direccionar al dato almacenado en la posicin @202.
Solucin:
Directo a memoria @202
Indirecto a registro (R7)
Relativo a registro base 175(R5)
Relativo a contador de programa 102(PC)
Indirecto a memoria (@27)

8.6 Problemas propuestos


PROBLEMA 1
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25; aR5b % 27,
aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 203
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena, cul es el resultado de las siguientes instrucciones y contenido
final de los registros R4 y R5:
a) ADD R3,R5,!(R4)
b) SUB R3,-(R4),(R5)!
Sabiendo que el primer operando de las operaciones es el destino.
PROBLEMA 2
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25; aR5b % 27;
aR6b % 676; aR7b % 837

Captulo 8 Modos de direccionamiento

313

Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:


a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@30b % 654
a@200b % 29, a@201b % 424, a@202b % 28, a@203b % 30,
a@204b % 27, a@205b % 53
Indicar dnde se almacena, cul es el resultado de las siguientes instrucciones y el contenido final de R3 y @202,@203 y @204:
a) SUB R7,(@200)!,1(R3)b) MUL -(@202),(@203),(@204)!
Sabiendo que el primer operando de las operaciones es el destino.
PROBLEMA 3
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 100; aR2b % 89; aR3b % 29; aR4b % 25; aR5b % 27;
aR6b % 676; aR7b % 837
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 87, a@26b % 986, a@27b % 75, a@28b % 876, a@29b % 63,
a@57b % 65, a@54b % 20,
a@201b % 424, a@202b % 28, a@203b % 30, a@204b % 27, a@205b % 53
Indicar dnde se almacena y cul es el resultado de las siguientes instrucciones:
a) SUB @25(R3), (R4)!,!(R5)
b) SUB @25(R3)-,(R4)!,!(R5)
PROBLEMA 4
Sabiendo que
a@10b % 100; a@99b % 50, a@100b % 25; aR4b % 50
Indicar el contenido de los registro y de la memoria cuando se ejecutan estas 3 instrucciones
LOAD R6 ,(@10)ADD R7,R6, -50(R4)
STORE R7 (@10)

314

Problemas de fundamentos y estructura de computadores

PROBLEMA 5
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 26; aR2b % 29; aR3b % 10; aR4b % 25; aR5b % 27;
aR6b % 80; aR7b % 100, aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1, a@30b % 14,
a@31b % 5, a@32b % 76
a@300b % 29, a@301b % 2, a@302b % 1, a@303b % 2
Sabiendo que la instruccin de LOAD se almacena en la posicin @47 indicar el contenido de los registros y de las posiciones de memoria cuando acaba de ejecutarse el bucle
LOAD R5,3(R1)
ADD R4, R5, !(R2)
MUL R7, (R4)-,45
STORE R4,28(R0)
SUB R6,R6,2
BEZ R6,37(R3)
PROBLEMA 6
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0, aR1b % 26, aR2b % 29; aR3b % 4; aR4b % 25; aR5b % 27;
aR6b % 676; aR7b % 200, aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@25b % 6, a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1,
a@30b % 302, a@31b % 303
a@300b % 29, a@301b % 2, a@302b % 1, a@303b % 2
Sabiendo que la segunda instruccin de LOAD se almacena en la posicin @400 indicar
el contenido de los registros y de las posiciones de memoria cuando acaba de ejecutarse el
bucle
LOAD R3, (@25)
LOAD R5,!(@30)
ADD R4, ,R5, (@31)STORE R4,(R1)!
SUB R3,R3,1
BNEZ R3,200(R7)

Captulo 8 Modos de direccionamiento

315

PROBLEMA 7
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 26; aR2b % 29; aR3b % 10; aR4b % 25; aR5b % 27;
aR6b % 60; aR7b % 100, aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1, a@30b % 14,
a@31b % 300, a@32b % 301, a@33b % 303, a@34b % 303
a@300b % 29, a@301b % 2, a@302b % 1, a@303b % 2, a@304b % 7
Sabiendo que la segunda instruccin de LOAD se almacena en la posicin de memoria
@47, indicar el contenido de los registros y de las posiciones de memoria cuando acaba de
ejecutarse el bucle
LOAD R6, @28
LOAD R5,!4(R1)
LOAD R7,!3(R1)
ADD R4, 0(R5)!, (R7)!
MUL R4, R4,45
STORE R4,28(R0)
SUB R6,R6,10
BEZ R6,37(R3)

PROBLEMA 8
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 26; aR2b % 29; aR3b % 10; aR4b % 25; aR5b % 27;
aR6b % 60; aR7b % 100, aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1, a@30b % 14,
a@31b % 300, a@32b % 301, a@33b % 303, a@34b % 303,
a@300b % 29, a@301b % 2, a@302b % 1, a@303b % 2, a@304b % 7
Proponer 5 modos de direccionamiento diferentes para acceder al dato que se encuentra
en @303.

316

Problemas de fundamentos y estructura de computadores

PROBLEMA 9
Sabiendo que el banco de registros contiene los siguientes datos:
aR0b % 0; aR1b % 26; aR2b % 29; aR3b % 10; aR4b % 25; aR5b % 27;
aR6b % 60; aR7b % 100, aPCb % 100
Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuacin:
a@26b % 4, a@27b % 3, a@28b % 2, a@29b % 1, a@30b % 14,
a@31b % 300, a@32b % 301, a@33b % 303, a@34b % 303,
a@300b % 29, a@301b % 2, a@302b % 1, a@303b % 2, a@304b % 7
Proponer 5 modos de direccionamiento diferentes para acceder al dato que se encuentra
en @303.

El formato de las instrucciones es la forma en que se especifica el significado de cada bit de la


instruccin. El formato debe contener toda la informacin necesaria para que se ejecute la
instruccin. Esta informacin se agrupa en campos. Algunos de los campos ms habituales son:
Operacin que realiza la instruccin (OPCODE).
Modo de direccionamiento (CMD).
Direccin de los operandos (DIRF).
Direccin resultado (DIRD).
En las instrucciones de bifurcacin direccin de la instruccin a la que salta (DIRS).
Tipos de representacin de operandos (RN).
Por ejemplo, una instruccin del tipo A % B OP C podra tener un formato como el siguiente:
a:b

c:d

f:g

h:i

j:k

l:0

OPCODE

CMD

DIRA

DIRB

DIRC

RN

La primera fila de la tabla indica los bits dedicados a cada campo de la instruccin, la
segunda fila indica el nombre de cada campo. Generalmente al representar el formato de una
instruccin se da el significado y los bits que ocupa cada campo en el formato. Si suponemos
la instruccin A % B ! C almacenada en el registro de instrucciones (RI) entonces se puede
decir que
RIaa:bb % OPCODE
RIac:db % CMD
RIaf:gb % DIRA y as sucesivamente

318

Problemas de fundamentos y estructura de computadores

La longitud total de la instruccin viene dada por el nmero total de bits que necesita el
formato para contener toda la informacin necesaria. En el caso del ejemplo en nmero de
bits de la instruccin sera a ! 1.
No todos los formatos necesitan los mismos campos ni el mismo nmero de campos. La
longitud total de la instruccin es la longitud del formato mayor. Por ejemplo, sea la instruccin de bifurcacin condicional BIF RZ,@M que consulta un registro Z, y si se cumple la
condicin salta a la direccin de memoria @M, su formato podra ser
m:n

o:p

q:0

OPCODE

DIRZ

@M

Si a b m, esto quiere decir que el tamao de la instruccin tiene que ser a!1, por lo tanto
la instruccin de bifurcacin debe tener tambin un tamao a!1. El nuevo formato quedara
a:b

c:d

f:x

y:0

OPCODE

DIRA

@M

NSU

Siendo los bits RIay:0b % NSU un conjunto de bits que no se usan en este formato.
La decisin del tamao que debe tener una instruccin es crtica en el diseo del computador
ya que determina la riqueza y flexibilidad de la mquina. El programador desea que su repertorio de instrucciones tenga ms cdigos de operacin, ms modos de direccionamiento, ms
operandos y mayor rango de direcciones, porque todo ello facilita la tarea de escribir programas. Todas estas caractersticas necesitan mayores longitudes de instruccin. El diseador del
sistema debe buscar un equilibrio entre la riqueza del repertorio de instrucciones, la necesidad
de salvar espacio de memoria y la complejidad final del camino de datos. Como norma general la longitud de instruccin debe ser igual a la longitud de la transferencia de memoria o ser
mltiplo de ella.

9.1 Campos de la instruccin


Como ya hemos indicado, la instruccin se divide en campos, donde un campo es una cadena
de bits continuos. Cada campo proporciona informacin especfica. Campos tpicos de una
instruccin son:
Cdigo de operacin.
Direccin de operandos.
Modo de direccionamiento.
Extensin de campo.
El cdigo de operacin indica la operacin a realizar por la instruccin. Este campo puede
contener ms informacin. Por ejemplo, los modos de direccionamiento pueden ir incluidos
en este cdigo, o ir en un campo independiente.
El campo de direccin especifica la direccin de un dato, resultado o instruccin a la que
se bifurca. Lgicamente existirn tantos campos direccin como operandos tenga la instruc-

Captulo 9 Teora del formato de instrucciones

319

cin. Igual que ocurra con el cdigo de operacin puede incluir implcitamente los modos de
direccionamiento utilizados (si el modo de direccionamiento se incluye en el cdigo de operacin no se incluye aqu y viceversa).
En algunas ocasiones el cdigo de operacin no tiene un nmero constante de bits sino
que vara en funcin del tipo de instruccin. En estos casos se tiene un nmero bits fijo y
pequeo para casi todas las operaciones y para algunas de ellas se utiliza una extensin. El
cdigo corto se suele utilizar en las instrucciones que ms se usan. La extensin se suele utilizar en instrucciones del tipo bifurcacin condicional y desplazamiento. Vamos a ver un ejemplo de esto. Supongamos que tenemos el siguiente conjunto de instrucciones a codificar:
Suma, resta, multiplicacin, bifurcacin incondicional, bifurcacin si z, bifurcacin si c, bifurcacin si x, bifurcacin si no x. La forma de utilizar la extensin de cdigo sera la siguiente:
Suma

00

Resta

01

Multiplicacin

10

Bifurcacin

11.

La combinacin de bits 11 le indica a la unidad de control que ese formato utiliza una
extensin de dos bits ms para codificar la operacin, quedando el cdigo de operacin de
extensin variable como se ve a continuacin:
Suma

00

Resta

01

Multiplicacin

10

Bifurcacin Incondicional

1100

Bifurcacin si z

1101

Bifurcacin si x

1110

Bifurcacin si no x

1111

9.2 Caractersticas del conjunto de formatos


Como se ha visto, un procesador puede tener varios formatos y cada instruccin encaja en
uno. Cuando existen varios formatos, es el cdigo de operacin el que diferencia entre ellos.
Cuanto menos formatos tenga el repertorio, ms sencilla ser la implementacin en HW del
procesador. Los formatos mltiples complican el HW. Esta complejidad se reduce si de un
formato a otro, los campos del mismo tipo tienen la misma longitud y ocupan la misma posicin. Esto simplifica la codificacin y los caminos internos necesarios para mover la informacin. Adems se debe intentar que instrucciones prximas utilicen codificaciones similares
Por ejemplo, sean estos dos formatos:

320

Problemas de fundamentos y estructura de computadores

OPCODE

CMD

DIRA

RN

DIRQ

OPCODE

DIRB

DIRC

RN

NSU

Los dos son correctos pero complican enormemente el diseo del camino de datos. Unos
formatos ptimos seran:
OPCODE

CMD

DIRA

DIRB

DIRC

RN

OPCODE

NSU

DIRQ

NSU

NSU

RN

9.3 Problemas resueltos


PROBLEMA 1
Determinar la longitud del formato de las instrucciones de un procesador sabiendo que su
repertorio tiene 8 instrucciones del tipo OP D,F que usan el modo de direccionamiento
directo a memoria. La memoria principal tiene 512 posiciones.
Solucin:
Hay 8 instrucciones, por lo tanto para el cdigo de operacin se necesitan 3 bits. Para
512 posiciones de memoria se necesitan 9 bits de direccin, entonces:
20:18

17:9

8:0

OPCODE

Destino (DM)

Fuente (DM)

Las instrucciones tienen una longitud de 21 bits.


PROBLEMA 2
Sea un procesador con una palabra mquina de 64 bits y 128 registros de propsito general.
El procesador puede ejecutar 12 instrucciones diferentes de un operando. Este operando
puede usar dos modos direccionamiento: el directo a registro (DR) y el relativo a registrobase (RB).
a) Disear el formato de instruccin para este computador.
b) Hallar el mximo valor del desplazamiento sabiendo que es un nmero expresado en
complemento a dos (C2).
c)

Si se quiere aadir las instrucciones LOAD RD,@M y LOAD RD,(@M) al procesador


usando RD un modo de direccionamiento directo a registro y siendo @M un direccionamiento directo de memoria y (@M) un direccionamiento indirecto de memoria,
cul sera la mxima memoria direccionable?

Captulo 9 Teora del formato de instrucciones

321

Solucin:
a) Como tiene 12 instrucciones diferentes necesita un campo cdigo de operacin (OPCODE) de 4 bits.
Como cada instruccin tiene dos modos de direccionamiento diferentes, necesita un
campo de un bit para seleccionar el modo de direccionamiento (CMD).
Modo de direccionamiento relativo a registro base
Necesitan un campo desplazamiento y un campo con la direccin del registro base. El
formato queda:
63:60

59

58:52

51:0

OPCODE

CMD

RB

Desplazamiento

La mquina tendr un desplazamiento de 52 bits.


Modo de direccionamiento directo a registro
63:60

59

58:52

51:0

OPCODE

CMD

RB

NSU

b) El mximo desplazamiento es desde .251 a 251 . 1.


c)

La instruccin de LOAD tiene dos operandos, luego no encaja con ninguno de los formatos estudiados. El nmero total de instrucciones es 14, que se codifican con 4 bits. Adems tambin necesita el campo CMD para diferenciar entre los dos modos de direccionamiento de la memoria. El hecho de que una utilice un modo de direccionamiento directo
a memoria y la otra un modo de direccionamiento indirecto a memoria no afecta al campo direccin de memoria (@M)
63:60

59

58:52

51:0

OPCODE

CMD

RB

@M

La mxima memoria direccionable es 252.


PROBLEMA 3
Un computador con palabras de 128 bits posee 64 instrucciones diferentes de un operando,
8 registros de propsito general, y 3 modos de direccionamiento (directo a registro (DR),
indirecto a registro (IR) y relativo a registro-base (RB).
Disear un formato de instruccin para este computador. Cul es el rango de valores
del desplazamiento en magnitud y signo?, y en complemento a dos?

322

Problemas de fundamentos y estructura de computadores

Solucin:
Como son 64 instrucciones, se necesita un OPCODE de 6 bits.
Como son 3 modos de direccionamiento diferentes por instruccin se necesita un campo
modo de direccionamiento (CMD) de 2 bits.
Formato para modo de direccionamiento directo a registro
Como el procesador tiene 8 registros el formato necesita un campo DR de 3 bits. El resto
de bits de la instruccin no se usan (NSU)
127:122

121:120

119:117

116:0

OPCODE

CMD

DR

NSU

Formato para modo de direccionamiento indirecto con registro


El formato es idntico al anterior. En el modo de direccionamiento IR, un registro contiene una direccin de memoria, luego el formato necesita un campo direccin de registro (RD).
Formato para el modo de direccionamiento relativo a registro base
En este caso el modo de direccionamiento necesita direccionar el registro base y el desplazamiento luego el nuevo formato sera:
127:122

121:120

119:117

116:0

OPCODE

CMD

DR

Desplazamiento

El desplazamiento es de 118 bits.


En magnitud y signo el rango de desplazamiento es: .2116 ! 1 m desplaza m !2116 . 1.
En complemento a dos el rango del desplazamiento es: .2116 m desplaza m 2116 . 1.
PROBLEMA 4
Sabiendo que la palabra de memoria tiene 32 bit y que el repertorio de instrucciones tiene
16 instrucciones diferentes, cul es la mxima memoria direccionable en los siguientes
casos:
a) La instruccin tiene dos operandos con direccionamiento directo a memoria (DM).
b) La instruccin tiene un operando con direccionamiento directo (DR) a un banco de 32
registros y un operando con modo de direccionamiento DM.
c) La instruccin tiene 3 operandos con DM.
d) La instruccin tiene un solo operando DM.
Solucin:
a) Como hay 16 instrucciones, el OPCODE es de 4 bits. Los 28 restantes se utilizan la mitad
para cada operando
31:28

27:14

13:0

OPCODE

Operando 1

Operando 2

La mxima memoria direccionable son 214 posiciones.

Captulo 9 Teora del formato de instrucciones

323

b) 4 bits para el cdigo, 5 bits para especificar la direccin del registro y 23 para dar la
direccin de memoria.
31:28

27:23

22:0

OPCODE

Operando 1

Operando 2

La mxima memoria direccionable son 223 posiciones.


c)

4 bits son para el cdigo, y los 28 restantes se utilizan para dar la direccin de memoria
de los tres operandos.
31:28

27:19

18:10

9:1

OPCODE

Operando 1

Operando 2

Operando 3

NSU

La mxima memoria direccionable son 29 posiciones.


d) Se necesitan 4 bits para el cdigo de operacin, los 28 restantes se utilizan para el nico
operando.
31:28

27:0

OPCODE

Operando

La mxima memoria direccionable son 228 posiciones.


PROBLEMA 5
Sabiendo que la palabra de memoria tiene 28 bits y que el repertorio de instrucciones tiene
12 instrucciones diferentes, la instruccin tiene dos operandos con un modo de direccionamiento directo a memoria.
a) Cul es la mxima memoria direccionable?
b) Qu tamao debe tener el registro contador de programa?
c)

Se te ocurre algn mtodo para conseguir direccionar ms memoria sin modificar los
modos de direccionamiento ni el tamao de la palabra de memoria?

Solucin:
a) Se tienen 12 instrucciones, por lo tanto para el cdigo de operacin necesito 4 bits, los
24 restantes se utilizan la mitad para cada operando
27:24

23:12

11:0

OPCODE

Operando1

Operando 2

La mxima memoria direccionable son 212 posiciones.


b) El contador de programa guarda la direccin de memoria de la siguiente instruccin a
ejecutar, por lo tanto, debe ser capaz de almacenar cualquier direccin de memoria, es
decir, debe tener un ancho de 12 bits.

324

Problemas de fundamentos y estructura de computadores

c)

Utilizar formatos que ocupen dos palabras de memoria. Se debera incluir un campo en la
instruccin que indicara a la UC que esa instruccin ocupa dos palabras de memoria.
Suponiendo que esa informacin se incluye en el OPCODE el formato podra quedar:
Primera palabra 27:0

Segunda palabra 27:0

55:52

51:26

25:0

OPCODE

Operando 1

Operando 2

La mxima memoria direccionable son 226 posiciones.


PROBLEMA 6
Se desea disear un repertorio de instrucciones con el menor nmero de bits posible. La
memoria puede direccionar hasta 28 palabras. El cdigo de operacin va a ser fijo. El procesador va a tener 9 registros de propsito general. El repertorio est compuesto de:
20 instrucciones de 3 operandos que permiten direccionamiento directo e indirecto
de registro.
150 instrucciones de 2 operandos que permiten direccionamiento directo e indirecto
de memoria.
30 instrucciones de 1 operando con directo a memoria.
26 instrucciones de 0 operandos.
Hallar el formato de las instrucciones.
Solucin:
Primero se va a estudiar el formato de cada uno de los tipos sin tener en cuenta el resto.
3 operandos: todas pueden usar dos modos de direccionamiento (directo o indirecto),
por lo tanto, se necesita un bit de modo de direccionamiento (CMD) por operando.
Como existen 9 registros, se necesitan 4 bits para direccionarlos. Por lo tanto son 5 bits
del cdigo de operacin ! 5 bits por cada operando.
19:15

14

13:10

8:5

3:0

OPCODE

CMD1

DR1

CMD2

DR2

CMD3

DR3

2 operandos: 2 tipos de direccionamiento, por lo tanto se necesita 1 bit de modo de


direccionamiento, 8 bits para cada direccin y 8 bits para el OPCODE bits ms para
cada operando.
25:18

17

16:9

7:0

OPCODE

CMD1

@M1

CMD2

@M2

Captulo 9 Teora del formato de instrucciones

325

1 operando: Direccionamiento directo de memoria, entonces se necesita acceder a 28


posiciones de memoria.
12:8

7:0

OPCODE

@M1

0 operandos: Slo se necesitan los 5 bits del cdigo de operacin.


4:0
OPCODE

Todos los formatos tienen que tener el mismo tamao. Adems para simplificar el diseo
y la complejidad del camino de datos y la unidad de control se intenta que de un formato a
otro, los campos del mismo tipo, tengan la misma longitud y ocupan la misma posicin.
25:18

17

16

15

14:11

10:7

6:3

2:0

OPCODE

CMD1

CMD2

CMD3

DR1

DR2

DR3

NSU

25:18

17

16

15:8

7:0

OPCODE

CMD1

CMD2

@M1

@M2

25:18

17:8

7:0

OPCODE

NSU

@M2

25:18

17:0

OPCODE

NSU

PROBLEMA 7
Sabiendo que una memoria tiene un bus de direcciones de 8 bits, un banco de 8 registros y
diecisis operaciones diferentes, cul ser la longitud del registro de instrucciones?
a) Suponiendo que las instrucciones tienen dos operandos cuyo modo de direccionamiento es directo a memoria.
b) Suponiendo que la instruccin tiene tres operandos con modos de direccionamiento
directo a memoria.
c)

Suponiendo instrucciones de 3 operandos, con modo de direccionamiento directo a


registro y el resto indirecto a memoria.

326

Problemas de fundamentos y estructura de computadores

Solucin:
a) Se tienen 16 instrucciones, por lo tanto para el cdigo de operacin se necesitan 4 bits.
Para la memoria se necesitan 8 bits. (@M % Direccin de memoria).
19:16

15:8

7:0

OPCODE

@M

@M

b)

c)

27:24

23:16

15:8

7:0

OPCODE

@M

@M

@M

Para seleccionar los registros se necesitan 3 bits.


22:19

18:16

15:8

7:0

OPCOD

DR

@M

@M

PROBLEMA 8
Suponemos una memoria con un bus de direcciones de 16 bits y un banco de 16 registros.
Los modos de direccionamiento utilizados van a ser tres: directo a memoria (DM), directo
a registro (DR), inmediato de 8 bits (). Las operaciones con sus correspondientes modos
de direccionamiento van a ser las siguientes:
ADD DR,DR
ADD DR,DM
ADD DM,DR
ADD DM,DM
MOVE ,DR
BCNE DM
BCGT,DM
Cul es la longitud mxima de la instruccin? Encontrar todos los formatos de las
instrucciones.
Solucin:
Para direccionar la memoria se necesitan 16 bits y para seleccionar un registro 4. A la hora de
codificar las instrucciones tenemos dos opciones, podemos seleccionar la suma como una nica operacin con cuatro modos o podemos considerarlas como cuatro operaciones diferentes.
En el primer caso, necesitamos 2 bits para codificar los 4 tipos de operaciones: ADD, MOVE,
BCNE y BCGT. Adems se deben aadir dos bits para diferenciar los modos de direccionamiento de ADD, en total 4. Sin embargo, si considero cada operacin de ADD como una
instruccin diferente, slo debo codificar siete instrucciones y necesito nicamente 3 bits. Por

Captulo 9 Teora del formato de instrucciones

327

lo tanto esta ltima opcin parece la ms acertada si buscamos el formato de instruccin con
el menor tamao posible.
Utilizando el cdigo de operacin fijo, la longitud mxima corresponde a la instruccin
ADD DM,DM. Esta instruccin tiene 3 bits para el cdigo de operacin y 16 para cada operando con direccionamiento directo a memoria, en total 35 bits.
Busquemos ahora todos los formatos de las instrucciones. (Nota NSU % bits que no se
usan en el formato):
ADD DM,DM
34:32

31:16

15:0

OPCODE

@M

@M

ADD DR,DM
34:32

31:20

19:16

15:0

OPCODE

NSU

DR

@M

34:32

31:20

19:16

15:12

11:0

OPCODE

NSU

DR

DR

NSU

ADD DR,DR

ADD DM,DR
34:32

31:16

15:12

11:0

OPCODE

@M

DR

NSU

MOVE IN,DR
34:32

31:24

23:16

15:12

11:0

OPCODE

NSU

INM

DR

NSU

BCNE DM
34:32

31:16

15:0

OPCODE

@M

NSU

34:32

31:16

15:0

OPCODE

@M

NSU

BCGT DM

328

Problemas de fundamentos y estructura de computadores

PROBLEMA 9
La mquina ESCOCIA tiene un tamao de palabra de memoria de 64 bits, 64 registros de
propsito general y adems su repertorio de instrucciones tiene las siguientes caractersticas:
20 instrucciones de tipo I, con 3 operandos y modos de direccionamiento directo a
registro los 2 primeros e inmediato el tercero.
20 instrucciones de tipo R con 3 operandos y modos de direccionamiento directo a
registro los 2 primeros y relativo a registro base con desplazamiento el tercero.
24 instrucciones de tipo J que tienen 1 operando y modo de direccionamiento directo
a memoria.
Sabiendo que el cdigo de operaciones es fijo, calcular:
a) El formato de las instrucciones.
b) Tamao de la memoria.
Solucin:
a) Hay un total de 64 instrucciones, vamos a asignar un cdigo que incluya el tipo de operacin y el modo de direccionamiento.
Instrucciones tipo I
63:58

57:52

51:46

45:0

OPCODE

F1

inmediato

63:58

57:52

51:46

45:40

39:0

OPCODE

F1

RB

desplazamiento

Instrucciones de tipo R

Instrucciones de tipo J
63:58

57:0

OPCODE

@direccin de memoria

b) La memoria tendr 258 posiciones.


PROBLEMA 10
Queremos implementar un procesador con el siguiente repertorio de instrucciones
ADD D,F1,F2
ADD D,F1,
SUB D,F1,F2

Captulo 9 Teora del formato de instrucciones

329

SUB D,F1,
MUL D,F1,F2
DIV D,F1,F2
BIF INCON,@M
BIF MAYOR QUE, RC, D(PC)
BIF MENOR QUE, RC, D(PC)
BIF, IGUAL QUE, RC, D(PC)
Siendo los modos de direccionamiento:
D,F1,F2,RC directo a registro
inmediato
D(PC) relativo a contador de programa
@M directo de memoria
Suponer un banco de 32 registros y una memoria de 4 megas. Suponer tambin que
todas las instrucciones tienen el tamao de una palabra de memoria. El repertorio de instrucciones del procesador no va a ser ampliado en un futuro.
Estudiar el formato de instrucciones del procesador, intentando que el tamao de los
operandos inmediatos sea el mayor posible. Cul es este tamao? Qu tamao tiene la
palabra de memoria?
Solucin:
Tenemos 5 tipos de operacin diferentes, por lo tanto necesitamos 3 bits para codificar el
cdigo de operacin:
Operacin

OPCODE

ADD

000

SUB

001

MUL

010

DIV

011

BIF

100

La suma y la resta.
Como tienen las mismas caractersticas las tratamos juntas. Estas dos instrucciones tienen
que identificar el tipo de direccionamiento que estn usando. Como tienen dos modos de direccionamiento cada una, con un bit ser suficiente para identificarlos:
Modo de direccionamiento

CMD

Registro-registro-registro

Registro-registro-inmediato

330

Problemas de fundamentos y estructura de computadores

Adems para el primer modo de direccionamiento necesitan incluir en la instruccin las


tres direcciones los dos operandos fuentes y el destino. Como el banco tiene 32 registros el
nmero de bits necesarios para direccionarlos es 5. Luego el formato quedara de la siguiente
manera:
18-16

15

14:10

9:5

4:0

OPCODE

CMD

RD

RF1

RF2

Segn este formato las instrucciones deberan tener un mnimo de 19 bits.


Vamos a ver el formato para el segundo modo de direccionamiento. En este caso se sustituye el campo RF2 por el campo inmediato, que provisionalmente vamos a considerar tiene 5
bits, aunque slo al final del estudio, cuando determinemos la longitud mnima necesaria para
incluir todos los formatos, se fijar su longitud:
18:16

15

14:10

9:5

0:4

OPCODE

CMD

RD

RF1

Multiplicacin y divisin
Estas instrucciones slo tienen un modo de direccionamiento, luego no es necesario aadir
el campo CMD. El formato queda:
17:15

14:10

9:5

4:0

OPCODE

RD

RF1

RF2

Instrucciones de bifurcacin
Como existen cuatro tipos de instrucciones necesitaremos dos bits para codificarlo:
Tipo de bifurcacin

CTB

Incondicional

00

Mayor que

01

Menor que

10

Igual que

11

Como el enunciado nos dice que no est pensado ampliar el repertorio de instrucciones en
un futuro, eso nos indica que no tenemos que reservar bits en el cdigo de operaciones para
futuras nuevas instrucciones. Como de los tres bits de cdigo de operacin que necesitamos
para codificar los cinco tipos de instrucciones no se usan 4 combinaciones, vamos a usarlas

Captulo 9 Teora del formato de instrucciones

331

para incluir en el cdigo de operacin el tipo de instruccin condicional. Luego el cdigo de


operacin queda como sigue:
Operacin

OPCODE

ADD

000

SUB

001

MUL

010

DIV

011

BIF incondicional

100

BIF mayor que

101

BIF menor que

110

BIF igual que

111

Ahora, para cada una de estas instrucciones tenemos que ver el resto de campos que necesita. En general podemos decir que las instrucciones de bifurcacin necesitan contener la direccin a la que van a saltar, en caso de que la condicin se cumpla, y un campo con la direccin del registro que contiene el valor que vamos a utilizar para calcular la condicin.
En el caso de las bifurcaciones incondicionales, no necesitan condicin, por lo tanto slo
hay que incluir la direccin de salto, que en este caso es una direccin de memoria completa.
Como la memoria tiene 4 megas se necesitan 22 bits para direccionar todas sus posiciones.
Luego el formato queda:
24:22

21:0

OPCODE

@direccin de memoria

Para el resto de bifurcaciones la direccin de memoria utiliza el modo relativo a contador


de programa. Como slo hay un contador de programa en el procesador no se necesita direccionar explcitamente luego ser suficiente un campo desplazamiento:
24:22

21:17

16:0

OPCODE

RC

Desplazamiento

Donde desplazamiento es la cantidad que se suma al contador de programa para obtener la


direccin de salto.
Como de todos los formatos estudiados el que necesita ms bits es el de la bifurcacin
incondicional, el tamao de formato mnimo ser 25. Teniendo esto en cuenta se tienen que
reajustar el resto de formatos a este tamao. Adems vamos a cambiar la posicin de los campos de manera que los que tengan los mismos contenidos ocupen las mismas posiciones:

332

Problemas de fundamentos y estructura de computadores

ADD D,F1,F2 y SUB D,F1,F2


24:22

21:17

16:12

11

10:6

5:0

OPCODE

RD

RF1

CMD

RF2

NSU

ADD D,F1,F2, y SUB D,F1,


24:22

21:17

16:12

11

10:0

OPCODE

RD

RF1

CMD

MUL D,F1,F2 y DIV D,F1,F2


24:22

21:17

16:12

11

10:6

5:0

OPCODE

RD

RF1

NSU

RF2

NSU

BIF INCON,@M
24:22

21:0

OPCODE

@direccin de memoria

BIF CONDICIONALES
24:22

21:17

16:0

OPCODE

RF

Desplazamiento

PROBLEMA 11
Se quiere disear un procesador con un banco de 64 registros y una memoria de 1 giga. La
Unidad Aritmtico-Lgica (UAL) se va controlar desde la unidad de control y el repertorio
va a tener las siguientes instrucciones:
ADD R,@M,R, siendo @M modo de direccionamiento directo de memoria.
SUB D,R,R.
BIFURCACIN INCONDICIONAL con un modo de direccionamiento relativo a
registro base, suponiendo un desplazamiento de 15 bits.
LOAD que mueve informacin de la memoria a un registro y que utiliza los modos
de direccionamiento directo a registro e indirecto a memoria.
Adems, se quiere dejar preparado el repertorio de instrucciones para incluir 5 nuevos
tipos de instrucciones aritmtico-lgicas en posteriores implementaciones del procesador.
Hallar los formatos de las instrucciones sabiendo que una instruccin debe ocupar solo
una palabra de memoria e indicar el tamao mnimo que debe tener la palabra de memoria.
Cmo ser el formato de la instruccin STORE, que mueve informacin del banco de
registros a la memoria, si usa los mismos modos de direccionamiento que el LOAD?

Captulo 9 Teora del formato de instrucciones

333

Solucin:
Tenemos 4 instrucciones diferentes y se quiere dejar el formato preparado para ampliar el
repertorio con 5 tipos de instrucciones ms, por lo tanto el nmero total de tipos de instruccin a codificar sera 9, por lo que el campo OPCODE necesita 4 bits:
Tipo de operacin

OPCODE

ADD

0000

SUB

0001

Bifurcacin incondicional

0010

LOAD

0011

Futuras

Resto de cdigos

Vamos a estudiar los formatos de cada tipo de instruccin.


ADD
Tiene que tener dos campos que contengan la direccin de un registro. Como el banco de
registros es de 64 bit, necesita dos campos de 6 bits cada uno. El otro direccionamiento es
directo a memoria, por lo tanto en la instruccin se tiene que incluir una direccin completa
de memoria. Como la memoria mxima direccionable es de 1 giga, el campo tiene que tener
30 bits. Por lo tanto el formato de las instrucciones ser. El siguiente
45:42

41:36

35:30

29:0

OPCODE

RD

RF1

@M

SUB
La resta tiene que incluir tres campos que contengan direcciones de registro
17:14

13:8

7:4

3:0

OPCODE

RD

RF1

RF2

BIFURCACIN INCONDICIONAL
El modo de direccionamiento relativo a registro base necesita un registro base que almacena una direccin de memoria y un desplazamiento. Luego el formato necesita una direccin
de registro y un desplazamiento
24:21

20:15

14:0

OPCODE

RB

Desplazamiento

334

Problemas de fundamentos y estructura de computadores

LOAD
Necesita un campo que contenga la direccin del registro y otro campo que contenga la
direccin de memoria necesaria para implementar el modo de direccionamiento indirecto a
memoria.
39:36

35:30

29:0

OPCODE

RD

@memoria

El formato de mayor tamao es el de la suma, por lo tanto tenemos que adaptar todos los
formatos a este tamao.
ADD
45:42

41:36

35:30

29:0

OPCODE

RD

RF1

@memoria

45:42

41:36

35:30

29:24

23:0

OPCODE

RD

RF1

RF2

NSU

SUB

BIFURCACIN INCONDICIONAL
45:42

41:36

35:30

29:15

14:0

OPCODE

NSU

RF

Desplazamiento

NSU

45:42

41:36

35:30

29:0

OPCODE

RD

NSU

@memoria

LOAD

Como una palabra de memoria debe ser capaz de contener como mnimo una instruccin
completa el tamao es de 46 bits.
Las instrucciones de LOAD y STORE tendrn el mismo formato. El campo de direccin
de registro ser fuente o destino en funcin de que la instruccin sea STORE o LOAD.
45:42

41:36

35:30

29:0

OPCODE

RD/RF

NSU

@memoria

Captulo 9 Teora del formato de instrucciones

335

PROBLEMA 12
Repite el problema 11 pero suponiendo que la unidad aritmtico-lgica se controla desde
el registro de instrucciones.
Solucin:
En el primer caso las seales que controlan la unidad aritmtico-lgica se generan en la unidad de control. En el segundo caso estas seales se extraen directamente del registro de instrucciones. En lo que al formato concierne, la diferencia reside en que hay que separar el
cdigo de operacin (OPCODE) de la operacin aritmtico-lgica a realizar (COPAL). Por lo
tanto consideramos 3 tipos de operaciones:
Las instrucciones aritmtico-lgicas, que incluyen la suma, la resta y las futuras 5 operaciones aritmtico-lgicas.
Las bifurcaciones incondicionales.
Las instrucciones de LOAD.
Por lo tanto se necesitan dos bits para codificarlas:
Tipo de instruccin

OPCODE

Aritmtico-lgicas

00

Bifurcacin incondicional

01

LOAD

10

Los formatos de las instrucciones de LOAD y de bifurcacin incondicional no se ven alterados sustancialmente, salvo en el tamao del OPCODE y por lo tanto en el tamao total del
formato.
En las instrucciones de suma y resta aparece un nuevo campo, que llamamos COPAL, que
indica el tipo de operacin aritmtica que se va a realizar. Los bits de este campo atacan directamente a la unidad aritmtico-lgica. Si slo tuviramos la suma y la resta con un bit sera
suficiente. Como adems tenemos que dejar el formato preparado para 5 nuevas instrucciones
aritmtico-lgicas vamos a necesitar 3 bits para codificarlas:
46:45

44:39

38:33

32:3

2:0

OPCODE

RD

RF1

@memoria

COPAL

46:45

44:39

38:33

32:27

26:3

2:0

OPCODE

RD

RF1

RF2

NSU

COPAL

336

Problemas de fundamentos y estructura de computadores

46:45

44:39

38:33

32:18

17:0

OPCODE

NSU

RF

Desplazamiento

NSU

46:45

44:39

38:33

32:3

2:0

OPCODE

RD

NSU

@memoria

NSU

PROBLEMA 13
Sea un procesador con un banco de 8 registros. Un modelo de ejecucin, memoria, registro, una memoria con una palabra de 32 bits que puede ejecutar las dos siguientes instrucciones:
MULTIPLICACIN Fuente1, Fuente2/Destino
DIVISIN Fuente1, Fuente2/Destino
Utilizando Fuente 1 un direccionamiento relativo a registro base y Fuente2/Destino direccionamiento directo a registro. Hallar el formato de las instrucciones.
Qu tamao podra tener la memoria?
Solucin:
El procesador slo ejecuta dos instrucciones luego necesita slo un bit como cdigo de operacin:
Operacin

OPCODE

Multiplicacin

Divisin

Ambas instrucciones necesitan un campo para direccionar el Fuente2/Destino y el Fuente1.


El Fuente2/Destino es una direccin de registro, como hay 8 registros necesitamos 3 bits. El
Fuente1/Destino utiliza un modo de direccionamiento relativo a registro base, por lo tanto
necesita un campo para direccionar el registro base y otro que contiene el desplazamiento,
luego el formato para ambas instrucciones sera el siguiente:
31

30:28

27:25

24:0

OPCODE

RF2/D

RB

Desplazamiento

En el modo de direccionamiento relativo a registro base, el registro suele contener una


direccin de memoria, luego el tamao de la memoria vendr fijado por el tamao del registro. Los registros se cargan desde memoria y la memoria tiene una palabra de 32 bits, luego la
mxima memoria direccionable ser 232.

Captulo 9 Teora del formato de instrucciones

337

PROBLEMA 14
Sea un procesador que ejecuta instrucciones de tres operandos (Fuente1, Fuente2, Destino)
con los siguientes modos de direccionamiento: la Fuente1 usa relativo a PC con un desplazamiento de 17 bits, la Fuente2 usa inmediato de 16 bits, el Destino el directo a memoria y las bifurcaciones el relativo a PC con un desplazamiento de 10 bits. El repertorio
de instrucciones es el siguiente:
Suma
Resta
And lgica
Or lgica
Bifurcacin incondicional
Bifurcacin condicional si positivo
Bifurcacin condicional si negativo
Bifurcacin condicional si cero
Las instrucciones de bifurcacin consultan un registro de estado que contiene informacin sobre la ltima operacin realizada. La UAL se controla desde el registro de instrucciones. La memoria tiene un tamao de 128 K palabras con 64 bits por palabra. Hallar el
formato de las instrucciones.
Solucin:
Hay dos tipos de instrucciones. Por un lado las aritmtico-lgicas que comprende las suma,
resta, and, or y bifurcaciones condicionales, a las que hay que aadir un campo que nos indique cul es la operacin a realizar COPAL y por el otro las bifurcaciones. Por lo tanto slo
necesito un bit como cdigo de operacin:
Tipo de instruccin

OPCODE

Aritmtico-lgicas

Bifurcaciones

Como tenemos 4 operaciones aritmtico-lgicas necesitamos 2 bits para codificar el tipo


de operacin aritmtico-lgica:
COPAL
Suma

00

Resta

01

And

10

Or

11

338

Problemas de fundamentos y estructura de computadores

La suma, la resta, la and y la or tienen el mismo formato puesto que necesitan la misma
informacin para direccionar los operandos y el destino:
Fuente1 necesita un desplazamiento, puesto que el contador de programa es nico y no
necesita incluir la informacin en el formato. Fuente2 necesita un campo de 16 bits para el
inmediato. Destino es una direccin de memoria y por lo tanto necesita 17 bits para direccionarse
63

62:51

52:36

35:19

18:2

1:0

OPCODE

NSU

Desplazamiento

inmediato

@memoria

COPAL

Las bifurcaciones van a necesitar un campo extra para determinar el tipo de bifurcacin:
CC
Incondicional

00

Si positivo

01

Si negativo

10

Si cero

11

63

62:51

52:36

35:19

18:2

1:0

OPCODE

NSU

Desplazamiento

NSU

NSU

CC

El formato de las bifurcaciones incondicionales es idntico al de las condicionales. La


diferencia est en la ejecucin de la instruccin porque las primeras no consultan el registro
de estado.
PROBLEMA 15
Sea un procesador con una palabra mquina de 64 bits y 128 registros de propsito general
que puede ejecutar las siguientes instrucciones: suma, resta, LOAD y STORE. Las sumas y
restas pueden direccionar sus operandos y destinos de tres formas diferentes:
Los dos operandos y el destino usan modo de direccionamiento directo a registro
(DR).
El primer operando y el destino usan DR y el segundo operando es un inmediato ().
El primer operando y destino con DR, y el segundo operando con un direccionamiento de pgina base (PB).
El LOAD y el STORE pueden utilizar dos modos de direccionamiento diferentes para
referirse a la posicin de memoria: directo a memoria (DM) y relativo a registro base (RB).
Hallar los formatos suponiendo que la unidad aritmtico-lgica se controla desde la
unidad de control y que la pgina base es la mitad de la memoria.

Captulo 9 Teora del formato de instrucciones

339

Solucin:
Como se indica que la unidad aritmtico-lgica se controla desde la unidad de control, no hay
que incluir un campo COPAL en el formato de las instrucciones aritmtico lgicas y toda la
informacin necesaria para distinguir el tipo de instruccin queda contenida en el cdigo de
operacin:
Instruccin

OPCODE

Suma

00

Resta

01

LOAD

10

STORE

11

La suma y la resta tienen los mismos modos de direccionamiento, por lo tanto el formato
va a ser comn a las dos instrucciones. Cada una de ellas tiene tres modos de direccionamiento diferentes, luego necesitamos un campo modo de direccionamiento (CMD) de 2 bits
Modo de direccionamiento

CMD

DR-DR-DR

00

DR-DR-

01

DR-DR-PB

10

Vamos a ver el formato y el nmero de bits mnimo para cada uno de los casos
DR-DR-DR
63:62

61:60

59:53

52:46

45:39

38:0

OPCODE

CMD

RD

RF1

RF2

NSU

63:62

61:60

59:53

52:46

45:0

OPCODE

CMD

RD

RF

63:62

61:60

59:53

52:46

45:0

OPCODE

CMD

RD

RF1

Dir pgina base

DR-DR-

DR-DR-PB

340

Problemas de fundamentos y estructura de computadores

Vamos a ver el formato del LOAD/STORE. Esta instruccin tambin tiene dos modos de
direccionamiento diferentes, luego en el formato habr que incluir un campo de 1 bit que distinga entre ellas.
Modo de direccionamiento

CMD

Directo a memoria

Relativo a registro base

LOAD /STORE con direccionamiento directo a memoria:


El formato tiene que incluir un campo direccin de registro destino de 7 bits. Esta campo
va a ser comn para el LOAD y el STORE. En el LOAD hace de registro destino, en el STORE hace de registro fuente. Adems tiene que incluir un campo direccin de memoria. Como
la pgina base es la mitad de la memoria y necesita 46 bit para direccionarse, para direccionar
la memoria completa necesitamos 47 bits
63:62

61

60

59:53

52:47

46:0

OPCODE

NSU

CMD

RD/RF

NSU

@dir memoria

Formato de LOAD/STORE con direccionamiento relativo a registro base:


El modo de direccionamiento relativo a registro base necesita un campo para direccionar
el registro y un campo para el desplazamiento
63:62

61

60

59:53

52:46

45:0

OPCODE

NSU

CMD

RD/RF

RB

Desplazamiento

PROBLEMA 16
Sea un procesador con secuenciamiento explcito, una memoria de 4 K palabras de 64 bits
cada una y 128 registros de propsito general que ejecuta 9 tipos diferentes de instrucciones aritmtico-lgicas:
7 son de dos operandos, OP F1, F2/D donde F1 usa modo de direccionamiento relativo a ndice (RI) y directo a registro (RD) y F2/D usa modo de direccionamiento
(DR).
2 son de un operando OP F1 y usa direccionamiento relativo a ndice (RI) y directo
a registro (RD).
Adems ejecuta LOAD, STORE y bifurcaciones incondicionales con modos de direccionamiento DR y relativo a registro base (RB).
Las instrucciones aritmtico-lgicas pueden operar con nmeros representados en complemento a uno (C1), complemento a dos (C2) y magnitud y signo (MS).
Hallar el formato de las instrucciones suponiendo que la unidad aritmtico-lgica se
controla desde el registro de instrucciones.

Captulo 9 Teora del formato de instrucciones

341

Solucin:
Como el direccionamiento es explcito, todos las instrucciones deben tener un campo que
contenga la direccin de la siguiente instruccin (@MIRSI).
Lo primero vamos a fijar el cdigo de operacin de las instrucciones. Como la UAL se
controla desde el registro de instrucciones el nmero total de instrucciones diferentes que podemos ejecutar es 12. Por lo tanto necesitamos 4 bits de cdigo de operacin (OPCODE).
Formato de las instrucciones aritmtico-lgicas de dos operandos
Cada una de ellas puede tener dos modos de direccionamiento diferentes para su primer
operando y un modo para su segundo, por lo tanto necesitamos un campo que indique el modo
de direccionamiento elegido (CMD). Con 1 bit ser suficiente:
Modo de direccionamiento

CMD

Relativo a ndice-directo a registro

Directo a registro-directo a registro

Si suponemos que para las instrucciones de un operando la fuente es siempre la fuente 1 el


formato de las de dos operandos y de uno es idntico.
Aritmtico-lgicas relativo a ndice-directo a registro
El modo de direccionamiento relativo a ndice necesita un campo direccin registro base y
un campo direccin de memoria (@M). Adems necesitamos un campo que contenga la direccin del registro Fuente2/Destino. Por ltimo, un campo de dos bits para codificar el formato de nmero usado (CFNU).
63:60

59

58:52

51:40

39:33

32:31

30:19

18:0

OPCODE

CMD

RB

@M

RF2/RD

CFNU

@MIRSI

NSU

Aritmtico lgicas directo a registro-directo a registro


63::60

59

58:52

51:40

39:33

32:31

30:19

18:0

OPCODE

CMD

RF1

NSU

RF2/RD

CFNU

@MIRSI

NSU

Instrucciones de LOAD y STORE


El modo de direccionamiento relativo a registro base necesita un campo registro base
(DRB) y un campo desplazamiento que, para simplificar el formato, se va a suponer que tiene
el mismo nmero de bits que la direccin de memoria. Por lo tanto el formato queda:
63::60

59

58:52

51:40

39:33

32:31

30:19

18:0

OPCODE

NSU

DRB

Desplazamiento

RF/RD

NSU

@MIRSI

NSU

342

Problemas de fundamentos y estructura de computadores

Instruccin de bifurcacin incondicional:


127

59

58:52

51:40

39:33

32:31

30:19

18:0

OPCODE

NSU

DRC

Desplazamiento

NSU

NSU

@MIRSI

NSU

PROBLEMA 17
Sea un procesador con un banco de 16 registros y una palabra de memoria de 14 bits cuyo
repertorio de instrucciones tiene las siguientes caractersticas:
Instrucciones tipo a: 3 instrucciones de tres operandos.
Instrucciones tipo b: 14 instrucciones con dos operandos.
Instrucciones tipo c :30 instrucciones con 1 operando.
Es posible codificar este repertorio si todos los operandos se encuentran en el banco
de registros?
Solucin:
Est claro que con un cdigo de tamao fijo no es posible codificar todas estas instrucciones,
pero s es posible utilizando un cdigo extensible o de tamao variable. Este tipo de cdigo se
aprovecha de que las instrucciones con menos operandos necesitan menos bits para almacenar
la informacin y utiliza los bits sobrantes para codificar las operaciones.
Codificacin y formato de las instrucciones tipo A:
Hay tres instrucciones de este tipo, por lo tanto se necesitan 2 bits de OPCODE. La ltima
combinacin 11 no se usa. Adems se necesitan 12 bits para direccionar los tres operandos
13:12

11:8

7:4

3:0

OPCODE

R1

R2

R3

Siendo el OPCODE:
Instrucciones tipo A

OPCODE

I1

00

I2

01

I3

10

No se usa

11

Codificacin y formato de las instrucciones tipo B:


El cdigo no usado antes, 11, le indica a la unidad de control que el cdigo de operacin
tiene 6 bits. Se utilizan los bits 11:8 para ampliar el cdigo de operacin. Por lo tanto el formato, y sus correspondientes cdigos quedan como sigue
13:12

11:8

7:4

3:0

11

EXT OPCODE

R2

R3

Captulo 9 Teora del formato de instrucciones

Instrucciones tipo B

OPCODE

EXTOPCODE

I0

11

0000

I1

11

0001

I13

11

1101

No se usa

11

1110

No se usa

11

1111

343

Codificacin y formato de las instrucciones tipo C:


Igual que ocurra antes, de las posibles combinaciones de los 6 bits ms significativos
(13:8) hay 2 combinaciones que no se usan: la 11 1110 y la 111 1111. Estas combinaciones
indican a la unidad de control que el cdigo de operacin de las instrucciones no va a tener 6
bits sino 10 y se utilizan los bits 7:4 para extender el cdigo de operacin, puesto que estas
instrucciones no los necesitan
13:12

11:8

7:4

3:0

11

1110

EXT OPCODE2

R3

13:12

11:8

7:4

3:0

11

1111

EXT OPCODE2

R3

OPCODE

EXTOPCODE

EXTOPCODE2

I0

11

1110

0000

11

1110

I15

11

1110

1111

I16

11

1111

0000

I17

11

1111

0001

11

1111

I29

11

1111

1101

Instrucciones tipo B

PROBLEMA 18
Un computador de 15 bits palabra mquina y 8 registros, tiene el siguiente repertorio de
instrucciones:
Tipo A: 7 instrucciones de referencia de un solo operando en memoria, con direccionamiento directo a memoria (DM) e indirecto de memoria (IM).
Tipo B: 15 instrucciones con dos operados y dos modos de direccionamiento diferentes. En el primero los dos operandos usan un modo de direccionamiento directo a

344

Problemas de fundamentos y estructura de computadores

registro (DR) y en el segundo los dos operandos usan un modo de direccionamiento


indirecto de registro (IR).
Tipo C: 16 instrucciones sin operando explcito.
a) Hallar el formato de las instrucciones utilizando un cdigo de operacin extensible
intentando maximizar la memoria direccionable.
b) Especificar la zona de memoria alcanzable en cada tipo de direccionamiento y rango
posible de valores de los operandos (en C2).
Solucin:
a) Empezamos el estudio con las nicas instrucciones que tienen direcciones de memoria.
Como hay 7 instrucciones se necesita un cdigo de operacin de 3 bits:
Tipo A

OPCODE

I1

000

I2

001

I7

110

No se usa

111

Formato, hay que incluir un campo modo de direccionamiento de un bit:


14:13

12:1

OPCODE

@M

CMD

Instrucciones con dos operandos. Formato y codificacin.


La ltima combinacin del OPCODE (11) avisa a la UC que hay una extensin de
cdigo
Tipo B

OPCODE

EXTOPCODE

I1

11

0000

I2

11

0001

11

I15

11

1110

No se usa

11

1111

14:13

12:9

8:7

6:4

3:1

OPCODE

EXTOPCODE

NSU

DR

DR

CMD

Captulo 9 Teora del formato de instrucciones

345

Instrucciones sin operando.


Cuando la UC ve que OPCODE y EXTOPCODE estn todo a 1s sabe que hay una extensin de cdigo
Tipo C

OPCODE

EXTOPCODE

EXTOPCODE2

I1

11

1111

0000

I2

11

1111

0001

11

I16

11

1111

1111

14:13

12:9

8:5

4:0

OPCODE

EXTOPCODE

EXTOPCODE2

NSU

b) 211posiciones de memoria y rango de valores de .214 a 214 . 1.


PROBLEMA 19
Se tiene un computador con un ancho de palabra de 32 bits y con un banco de 32 registros.
El computador tiene 64 instrucciones y los siguientes modos de direccionamiento: directo
de pgina base (DPB), indirecto a pgina base (IPB), relativo a registro-base (RRB) y directo a registro (DR).
a) Disear los formatos de las instrucciones de dos operandos sabiendo que siempre un
operando est en memoria y otro en registro.
b) Si cada direccin de memoria especifica un byte, a qu zona de memoria se puede
acceder con cada uno de los modos de direccionamiento?
Solucin:
a) Se tienen 64 instrucciones, luego se necesitan 6 bits para codificar la operacin (OPCODE). Como son 3 modos de direccionamiento, se necesitan 2 bits para codificar el modo
de direccionamiento (CMD).
Modo de direccionamiento

CMD

DPB-DR

00

IPB-DR

01

RRB-DR

10

Estos dos campos son comunes a todas las instrucciones. Vamos a estudiar a continuacin el resto de los campos para cada tipo de modo de direccionamiento.

346

Problemas de fundamentos y estructura de computadores

Directo a memoria.
Necesita un campo que contenga la direccin de memoria, luego el formato quedara:
31:26

25:24

23:5

4:0

OPCODE

CMD

@DIR MEMORIA

DREG

Indirecto a memoria.
La instruccin contiene la direccin de una posicin de memoria que contiene la direccin de memoria en la que se encuentra la direccin. El formato es idntico al de directo a memoria.
31:26

25:24

23:5

4:0

OPCODE

CMD

@DIR INDIR MEMORIA

DREG

Relativo a registro base.


Este modo de direccionamiento necesita dos campos, uno que contenga la direccin
del registro base y otro que contenga el desplazamiento.
31:26

25:24

23:19

18:5

4:0

OPCODE

CMD

DRB

Desplazamiento

DREG

b) Para el directo de pgina base se pueden direccionar 219 bytes, como una palabra de memoria son 4 bytes, el rango direccionable es: 219/4 % 217 palabras de 32 bits.
Para el indirecto de pgina base, como la direccin efectiva se encuentra almacenada
en la memoria y la palabra de memoria son 32 bits del rango total ser: 232 bytes, con
4 bytes/palabra luego el rango direccionable es: 232/4 % 230 palabras de 32 bits.
Para el indirecto con desplazamiento a registro-base: Suponiendo que el desplazamiento se expresa en C2, el rango de desplazamiento es: [.213, 213 . 1]. Como el rango
del registro base es: [0,232 . 1].
Se podra pensar en un rango total de: [.213, 232 ! 213 . 2].
Pero como el computador tiene ancho de palabra de 32 bits la suma RB!despl. se
hace en mdulo 232, lo que quiere decir que el rango direccionable es 232 B o lo que es lo
mismo 230 palabras.
PROBLEMA 20
Sea un computador con palabra mquina de 32 bits y 16 registros. La memoria es de 256
M palabras. El juego de instrucciones de esta mquina se reduce a dos instrucciones ortogonales: Move origen, destino y Add, operando1, operando2/destino. Los modos de direccionamiento permitidos son: directo a registro (DR) y relativo a registro base (RRB). Disear los formatos de instruccin de la mquina descrita.

Captulo 9 Teora del formato de instrucciones

347

Solucin:
Hay dos tipos de instrucciones, luego el campo cdigo de operacin (OPCODE) tiene 1 bit.
Los dos tipos de instrucciones tienen 4 modos de direccionamiento diferentes:
Modo de direccionamiento

CMD

DR-DR

00

DR-RRB

01

RRB-DR

10

RRB-RRB

11

El formato ser el mismo tanto para la instruccin de move como para la instruccin de
suma.
Directo a registro-directo a registro
31

30:29

28:25

24:21

20:0

OPCODE

CMD

DRF1

DRF2/D

NSU

Directo a registro-relativo a registro base y relativo a registro base-directo a registro


Les podemos hacer coincidir puesto que los campos cdigo de modo de direccionamiento
nos indican en cada caso cul de los dos operandos utiliza cada campo
31

30:29

28:25

24:21

20:0

OPCODE

CMD

DRF1

DRB

Desplazamiento

Relativo a registro base-relativo a registro base


31

30:29

28:25

24:21

20:10

9:0

OPCODE

CMD

DRB1

DRB2

Desplaza1

Desplaza2

En este caso los desplazamientos sern ms pequeos que en el caso anterior. El orden de
los campos lo hemos elegido as para mantener el principio de que campos de diferentes formatos con el mismo que representan la misma informacin ocupen las mismas posiciones de
los formatos.

348

Problemas de fundamentos y estructura de computadores

9.4 Problemas propuestos


PROBLEMA 1
Un computador con palabra mquina de 16 bits y 32 registros ejecuta el siguiente juego de
instrucciones ortogonales:
MOVE D,F
ADD D, F1, F2
SUB D, F1, F2
MUL D, F1, F2
DIV D, F1, F2
AND D, F1, F2
OR D, F1, F2
XOR D, F1, F2,
SHIFT D, F, tipo, contador
NOT D,F
Sabiendo que:
La condicin de la bifurcacin puede ser igual que, menor que, mayor que, los modos de
direccionamiento pueden ser inmediato, directo a registro y relativo a registro y directo a memoria; la informacin se puede representar en complemento a 2, magnitud y signo y binario
puro pudiendo cada instruccin usar slo una representacin numrica; los desplazamientos
pueden ser derecha e izquierda, el contador de la instruccin de desplazamiento indica el nmero de desplazamiento, pudiendo tener ste un valor mximo de 4.
Disear el formato de las instrucciones para dicho juego de operaciones
PROBLEMA 2
Sabiendo que un procesador tiene 16 registros de propsito general, una memoria de 1K palabras y el siguiente repertorio de instrucciones:
13 instrucciones de tres operandos que usan el modo de direccionamiento directo a memoria para el primer operando, modo de direccionamiento indirecto a memoria para su
segundo operando y directo a registro para el tercero.
123 instrucciones de dos operandos, siendo el modo de direccionamiento del primero
directo a memoria y del segundo indirecto a registro. Instrucciones de una direccin de
15 bits y una de 3 bits.
200 instrucciones de 0 operandos.
Utilizar un cdigo de operacin extensible para implementar unos formatos con el menor
tamao posible.

Captulo 9 Teora del formato de instrucciones

349

PROBLEMA 3
Disear los formatos para las instrucciones de tipo registro-registro, para el repertorio de instrucciones:
72 instrucciones de 3 operandos.
26 instrucciones de 2 operandos.
56 instrucciones de 1 operando.
5 instrucciones de 0 operandos.
Utilizando el menor nmero posible de bits para la instruccin.
PROBLEMA 4
Sea un procesador con un tamao de palabra de 64 bits y un banco de 32 registros. Adems
tiene un registro puntero a pila SP que apunta a la primera posicin vaca de la pila. Sabiendo
que su repertorio de instrucciones es:
4 operaciones aritmtico lgicas de dos operandos que usan como modo de direccionamiento el directo a registro.
1 instruccin de mete pila siendo el origen un registro del banco de registros con direccionamiento directo a registro.
1 instruccin de escritura en memoria desde un registro con direccionamiento indirecto
a memoria y directo a registro.
1 instruccin de lectura de memoria sobre un registro, con un direccionamiento directo
a registro y direccionamiento directo a memoria.
Hallar el formato de las instrucciones.
PROBLEMA 5
Sea un procesador con 32 registros de propsito general y una memoria de 264 palabras que
usa secuenciamiento explcito. Sabiendo que ejecuta 5 operaciones aritmtico-lgicas diferentes de tres operandos que usan como modo de direccionamiento el directo a registro para el
primer operando y un modo indirecto a memoria para el segundo operando/destino. Hallar su
formato de instrucciones.
PROBLEMA 6
Sea un procesador con un banco de 8 registros y una memoria de 220 palabras. Adems tiene
un registro puntero a pila SP que apunta a la ltima posicin ocupada de la pila. El procesador
puede ejecutar el siguiente repertorio de instrucciones:
4 operaciones aritmtico-lgicas que usan un modo de direccionamiento directo a registro para el primer operando y el resultado; y un modo de direccionamiento relativo a
registro base con un desplazamiento de 8 bits para el segundo operando, coincidiendo la
direccin del primer operando y la del resultado.
4 bifurcaciones condicionales que utilizan el modo de direccionamiento relativo a PC.

350

Problemas de fundamentos y estructura de computadores

1 instruccin de mete pila siendo el origen un registro del banco de registros con direccionamiento directo a registro.
1 instruccin de saca pila siendo el destino un registro del banco de registros con direccionamiento directo a registro.
1 instruccin de escritura en memoria desde un registro con direccionamientos directo a
memoria y directo a registro.
1 instruccin de lectura de memoria sobre un registro con un direccionamiento directo a
registro y directo a memoria.
Hallar el formato de las instrucciones
PROBLEMA 7
Sea un procesador con 64 registros de propsito general y una memoria de 235. El procesador
tiene adems un registro puntero a pila SP que apunta a la ltima posicin ocupada de la pila,
llenndose la pila hacia direcciones decrecientes de memoria. El repertorio de instrucciones
que puede ejecutar es el siguiente:
4 operaciones aritmtico-lgicas que usan un modo de direccionamiento directo a registro para ambos operandos.
4 bifurcaciones condicionales que utilizan el modo de direccionamiento relativo a PC.

Bifurcar
Bifurcar
Bifurcar
Bifurcar

si cero.
si positivo.
si negativo.
si mayor o igual que.

1 instruccin de mete pila siendo el origen un registro del banco de registros con direccionamiento directo a registro.
1 instruccin de saca pila siendo el destino un registro del banco de registros con direccionamiento directo a registro.
1 instruccin de escritura en memoria desde un registro con direccionamientos relativo
a registro ndice y directo a registro.
1 instruccin de lectura de memoria sobre un registro con un direccionamiento directo a
registro e indirecto a memoria.
Hallar el formato de las instrucciones.
PROBLEMA 8
Sea un procesador con 128 registros de propsito general y una memoria de 256 megas. El
procesador puede ejecutar las siguientes instrucciones: Sumas y restas con tres operandos que
usan modo de direccionamiento directo a registros; instrucciones de bifurcacin condicional
que usan modo de direccionamiento relativo a registro base, siendo las condiciones mayor que
y menor que, instrucciones LOAD y STORE que usan modos de direccionamiento indirecto a
memoria. Hallar los formatos de las instrucciones. Cmo sera el formato si el secuenciamiento fuera explcito?

Captulo 9 Teora del formato de instrucciones

351

PROBLEMA 9
Sea un procesador con 8 registros de propsito general y una memoria de 1 mega palabras.
Sabiendo que puede ejecutar 1 instruccin aritmtico lgica que usa un modos de direccionamiento directo a registro; 1 instruccin de bifurcacin incondicional que utiliza el modo de
direccionamiento relativo a PC y 1 Instruccin de escritura en memoria desde un registro con
direccionamientos relativo a registro base con un desplazamiento de 8 bits y directo a registro.
Hallar el formato de sus instrucciones.

10.1 Partes bsicas de un procesador


En este captulo se va a abordar el estudio y especificacin del camino de datos y la unidad de
control de microprocesadores multiciclo. Un procesador multiciclo es aquel en el que una instruccin tarda varios ciclos en ejecutarse, y las instrucciones se ejecutan de una en una, sin
aprovechar el posible paralelismo a nivel de instruccin existente en los programas. Este tipo
de procesadores se divide en dos mdulos principales:
El camino de datos.
La unidad de control.
El camino de datos es la parte del procesador que se encarga de leer, mover, modificar y
almacenar la informacin sobre la que computa el procesador. Se compone de registros, memoria, unidad aritmtica-lgica (UAL) y hardware (HW) auxiliar, como pueden ser los multiplexores, incrementadores o sumadores.
La unidad de control (UC) es el mdulo que se encarga de generar la seales que controlan el camino de datos. Es un sistema secuencial que genera para cada ciclo de reloj las seales necesarias para implementar una determinada fase de la instruccin. A la UC llega informacin desde el registro de instrucciones y desde diferentes biestables y registros del
procesador. Con esta informacin genera las seales necesarias en cada ciclo de reloj.

10.1.1 Los registros


Los registros son elementos de memoria que se encuentran en el interior del procesador cuyo
objetivo es permitir al procesador trabajar rpidamente con los datos que ms se utilizan. Sus
principales caractersticas son su rapidez de acceso y su pequeo tamao. El modo de trabajar
de la mayora de los procesadores actuales es enviar datos desde la memoria a los registros del
procesador mediante instrucciones de LOAD. Una vez que los datos se encuentran en los

354

Problemas de fundamentos y estructura de computadores

registros, estos se utilizan como operandos de las instrucciones. Cuando los cmputos acaban
se envan los resultados a la memoria mediante instrucciones de STORE. Los registros necesitan una seal de control carga del registro (LdRA) que activa la unidad de control en las
fases en las que se desea realizar la carga de una informacin. Los registros se pueden clasificar en registros de propsito especfico y registros de propsito general.
Registros de propsito especfico. Son registros que tienen la misin de almacenar el estado
de procesador y la informacin necesaria para su control. Los ms destacados son el Contador
de Programa (PC) que almacena la direccin de la siguiente instruccin que se va ejecutar. El
Registro de Instrucciones (RI) que almacena la instruccin que se est ejecutando. El registro
de estado del procesador (SR) es un registro que contiene informacin sobre el estado en que
se encuentra el procesador. Suele estar dividido en campos o bits y cada uno de ellos tiene un
significado diferente. Entre los campos ms habituales estn: desbordamiento (overflow), acarreo, cero, positivo, negativo. Por ltimo, se puede encontrar puntero de pila (SP). Estos registros suelen ser invisibles para el programador.
Otros registros invisibles para el programador son los registros auxiliares. Se utilizan
para almacenar provisionalmente informacin necesaria para implementar algunos tipos de
instrucciones o modos de direccionamiento. Un ejemplo puede ser el registro auxiliar de
direcciones necesario para implementar el modo de direccionamiento indirecto a memoria.
Tambin se pueden usar para acortar caminos combinacionales demasiado largos. Un camino combinacional suele empezar y acabar en registros. Al incluir el registro auxiliar entre
estos dos registros, generalmente partiendo la lgica combinacional, se consigue aumentar la frecuencia de trabajo del procesador aunque se aaden ciclos a la ejecucin de la
instruccin.
Registros de propsito general. Sirven para almacenar informacin de diferente tipo, como
puede ser datos o instrucciones. Este tipo de registros son visibles para el programador, es
decir estn definidos en la arquitectura del procesador.

Los registros de propsito general se suelen agrupar en bancos de registros. Los bancos de
registros tienen puertos de escritura o entrada y puertos de lectura o salida. Los puertos constan de un bus de direcciones y un bus de datos. En principio un banco de registros puede tener
tantos buses de entrada y salida como se desee. Se puede decir que cuantos ms puertos tenga,
mayor nmero de fases en paralelo permite. Por ejemplo, si un bus tiene un nico puerto de
lectura, en las operaciones de dos operandos se necesita un registro auxiliar para almacenar el
primer operando. Si el banco tiene dos puertos de salida se pueden leer los dos operandos al
tiempo, con lo que se ahorran ciclos de ejecucin. El nmero de registros tambin puede ser el
que se desee, pero es importante recordar lo siguiente: cuantos ms puertos tenga el banco,
ms complejo ser y esto puede ralentizarlo. Lo mismo ocurre con el nmero de registros.
Muchos registros dan mayor flexibilidad al programador pero tambin ralentiza el acceso al
banco de registros. Adems de los puertos, los bancos de registros necesitan una seal de capacitacin de escritura (ver figura sobre el prrafo).

Captulo 10 Diseo del camino de datos y la unidad de control

355

10.1.2 La memoria
Es la unidad del sistema que almacena las instrucciones y los datos del proceso. Su tiempo de
acceso es aproximadamente un orden de magnitud superior al de los registros. Esta es la razn
por la que hoy en da casi todos los procesadores trabajan directamente con registros en lugar
de trabajar con memoria. Tienen un bus de direcciones y un bus de datos. En los problemas
supondremos una memoria con un bus de direcciones, un bus de entrada de datos y un bus de
salida de datos. Adems supondremos una memoria con una seal de control L/E que acta de
la siguiente manera: si L/E % 0 lee, si L/E % 1 escribe.

10.1.3 Unidad aritmtico-lgica


Es la unidad que realiza las operaciones aritmtico-lgicas sobre los operandos. Operaciones
tpicas son: suma, resta, multiplicacin, and, or, desplazamientos, etc. Necesita una seal de
control que seleccione la operacin a realizar. Como se ver ms adelante la unidad aritmtico-lgica (UAL) se puede controlar desde la UC o desde el RI. Esta ltima opcin simplifica
el diseo de la unidad de control.

356

Problemas de fundamentos y estructura de computadores

10.1.4 Estudio y diseo del camino de datos


Para disear un camino de datos es importante saber que en el procesador multiciclo una instruccin se ejecuta mediante una sucesin de pasos que se llaman fases, cada una de las cuales
dura un ciclo de reloj. Una fase suele incluir:
Una lectura de informacin que puede estar almacenada en un registro o en memoria.
Para realizar la lectura se puede necesitar una direccin.
Un movimiento de informacin, en el que suelen intervenir multiplexores que seleccionan entre diferentes caminos.
Una escritura de la informacin en un registro o en la memoria.
Fases clsicas de una instruccin son:
Envo de la instruccin desde memoria al registro de instrucciones.
Actualizacin del contador de programa.
Clculo de las direcciones de los operandos.
Lectura de los operandos.
Ejecucin de la operacin.
Clculo de la direccin del resultado.
Escritura del resultado.
En ocasiones, alguna de estas fases se puede descomponer en nuevas fases. Esto ocurre
cuando durante la ejecucin de una fase diferentes datos necesitan utilizar el mismo HW, esto
no es posible y obliga a dividir la fase en tantas como sea necesario. Un ejemplo es el clculo

Captulo 10 Diseo del camino de datos y la unidad de control

357

de la direccin efectiva para el modo de direccionamiento indirecto a memoria (dos usos diferentes del bus de direcciones de memoria).
Por el contrario si los datos de dos fases no utilizan el mismo HW se pueden agrupar en
una nica fase. Un ejemplo clsico es el de la lectura de la instruccin y la actualizacin del
contador de programa. Agrupar fases es interesante porque ahorra ciclos de reloj en la ejecucin de una instruccin. En cualquier caso es muy importante cuando se agrupan o dividan las
fases para no perder de vista que la sucesin de fases debe ser la correcta.
Siguiendo el principio de divide y vencers, lo ms apropiado para abordar el diseo de un
camino de datos es estudiar la implementacin de cada uno de los tipos de instrucciones y
despus unirlas todas en el camino de datos total. Implementar el camino de datos de una
instruccin consiste en implementar los caminos necesarios para ejecutar cada una de las fases en que se descompone la instruccin. A la hora de implementar estos caminos es importante que el diseador tenga en cuenta las ligaduras de diseo. Una instruccin puede implementarse de muchas maneras diferentes y cada implementacin tiene unas caractersticas de
rea, rendimiento y consumo. Las decisiones de diseo vendrn fijadas por las ligaduras de
especificacin. Tanto la duracin del ciclo de reloj como el nmero de ciclos de reloj por
instruccin estn determinados por la implementacin final. Para conseguir un mejor diseo
es conveniente tener en mente los dos principios que a continuacin se enuncian:
Hacer rpido el caso comn.
La regularidad favorece la simplicidad.

10.1.5 La unidad de control


La unidad de control es un sistema secuencial que forma parte de la unidad central de proceso
(CPU). Su misin es generar las seales que controlan:
Las operaciones de la CPU, incluyendo las operaciones de la ALU.
Los movimientos de datos en el interior de la CPU.
Los movimientos de datos entre la CPU y la memoria.
Los movimientos de datos y de seales de control con los interfaces exteriores.
Las entradas del sistema secuencial son ciertos campos del registro de instrucciones, como
el campo cdigo de operacin, cdigo de condicin en instrucciones de bifurcacin, y cdigo
de operacin aritmtico-lgica a realizar. Tambin pueden ser entrada algunos de los bits del
registro de estado, o de los biestables de condicin. La salida son todas las seales necesarias
para controlar el camino de datos. Seales tpicas son:
LdR r capacitacin de carga de registro.
MuxCamino r seleccin de un determinado camino.
L/E r capacitacin de la escritura/lectura de memoria.
EC r capacitacin en el banco de registros.
En principio, se puede afirmar que el diagrama de estados que especifica la UC tiene tantas ramas como tipos de instrucciones. Y cada rama tiene tantos estados como fases se necesitan para implementar la instruccin. La salida para cada estado son las seales que hay que
activar para que se ejecute esa fase.

358

Problemas de fundamentos y estructura de computadores

10.2 Problemas resueltos


PROBLEMA 1
Se quiere implementar el procesador TIFON. Este procesador tiene un banco de 4 registros, con un bus de salida de datos y un bus de entrada de datos. La memoria tiene 1K
posiciones, un bus de salida de datos, un bus de entrada de datos y un bus de direcciones.
Inicialmente TIFN tiene tres tipos de instrucciones diferentes, uno de los cuales comprende 8 operaciones aritmtico-lgicas del siguiente tipo:
OP D, F1, F2:

donde

D: % F1 OP F2

Los dos operandos y el destino usan el modo de direccionamiento directo a registro. Se


quiere que las operaciones se controlen desde la unidad de control.
a) Estudiar el formato de las instrucciones.
b) Hallar el tamao mnimo de la palabra del procesador.
c)

Estudiar el mdulo secuenciador.

Solucin:
a) Como las instrucciones aritmtico-lgicas se controlan desde UC, se incluyen dentro del
cdigo de operacin, luego en total hay 10 tipos de instrucciones diferentes, as pues se
necesitan 4 bits para el cdigo de operacin (OPCODE). Adems hay que aadir tres
campos de 2 bits para incluir las direcciones de los operandos y el destino. El formato
queda:
9:6

5:4

3:2

1:0

OPCODE

F1

F2

b) Suponemos que una instruccin se puede leer en un nico acceso a memoria, por lo tanto
el tamao de la palabra de procesador ser 10 bits.
c) El mdulo secuenciador es el que se encarga de generar la direccin efectiva de memoria.
En este caso la nica direccin que se genera es la que indica la posicin de la siguiente
instruccin y que se encuentra en el PC. Como se supone el procesador con direccionamiento implcito, la siguiente direccin se genera incrementando en 1 el contenido del
PC, luego el mdulo secuenciador es:

Captulo 10 Diseo del camino de datos y la unidad de control

359

PROBLEMA 2
Implementar el camino de datos de TIFN, especificando claramente las seales de control del HW.
Solucin:

El registro auxiliar de datos, AUX, es necesario porque el banco de registros slo tiene un
bus de salida, por lo tanto el primer dato ledo tiene que almacenarse porque si no se perdera
al leer el segundo operando. Las seales de control del camino de datos son las siguientes:
LdPC carga del contador de programa PC.
LdRI carga del registro de instrucciones RI.
Ldaux carga del registro auxiliar de datos AUX.
COPAL seleccin de la operacin a realizar. Esta seal se genera en la unidad de control.
MuxL selecciona la direccin del registro que se va a leer.
L/E lectura /escritura de memoria (%0 lee,%1 escribe).
EC escritura del banco de registros.
PROBLEMA 3
Dado el procesador anterior
a) Analizar la ejecucin de las instrucciones sobre el camino de datos, indicando qu
seales de control se tienen que activar en cada caso.
b) Estudiar el diagrama de estados de la unidad de control.
c)

Hallar la especificacin de la unidad de control.

d) Cmo se puede simplificar esta unidad de control?

360

Problemas de fundamentos y estructura de computadores

Solucin:
a) El anlisis consiste en estudiar cada uno de los movimientos atmicos en los que se descompone la ejecucin de una instruccin, indicando las seales de control necesarias para
llevarlos a cabo. La ejecucin de todas las instrucciones empieza siempre por la lectura
de la instruccin de la memoria y la decodificacin de la misma:
1.a fase. Bsqueda de la instruccin (BUS). En esta fase se lee la instruccin de la memoria y se incrementa el contador de programa
Operaciones atmicas: RI:%M[PC]; PC:%PC!1
Seales de control: LdRI%1, LdPC%1, L /E%0
2.a fase. Decodificacin (DEC). Es una fase de decisin que necesita la UC para saber
cul es el tipo de instruccin cargada en RI. En principio, en esta fase no se realiza
ninguna accin, por lo tanto todas las seales de control estn inactivas. En ocasiones
se puede usar para ahorrar ciclos de reloj realizando acciones que no modifiquen el
estado del procesador y para las que no es necesario conocer el tipo de instruccin.
3.a fase. Lectura del primer operando (POR)
Operaciones atmicas: AUX:%F1
Seales de control: Ldaux%1, MuxL%1
4.a fase. Lectura del segundo operando, ejecucin y escritura en banco de registros
(SORE). Todas estas acciones se pueden realizar en la misma fase si el ciclo de reloj es
lo suficientemente largo. Recordar que los registros se leen al principio del ciclo y que
el banco de registro se escribe al final del ciclo.
Operaciones atmicas: D:%F2 OP AUX
Seales de control: MuxL%0, COPAL%operacin, EC%1
b) Como se puede ver en la figura, las dos primeras fases son comunes a todas las instrucciones, pero a partir de ah se bifurca en tantas ramas como instrucciones, en este
caso 8.

Captulo 10 Diseo del camino de datos y la unidad de control

c)

361

La especificacin para cada rama es:


Entrada UC

Estado UC

OPCODE

Fase

XXXX

Seales de control
Ld PC

Ld RI Ld aux Mux L

L/E

EC

COPAL

BUS

DEC

POR

SOREi

OPi

Debajo de OPCODE aparece XXXX porque hasta el momento se desconoce el valor


del cdigo de operacin para cada una de las operaciones aritmtico-lgicas. Se puede
observar que las seales de multiplexacin en algunas ocasiones tienen el valor X. Esto
indica que es indiferente el valor que adopten en esa fase.
d) Las seales de control que implementan las diferentes operaciones slo se diferencian en
la seal COPAL que depende de cada operacin. Por lo tanto se pueden considerar las
fases BUS, DEC y POR comunes a todas las instrucciones. Como se puede ver en la
siguiente figura

Esta simplificacin no ahorra ciclos de reloj pero la unidad de control ser ms sencilla y por lo tanto ms rpida.
PROBLEMA 4
Estudiar una optimizacin para la unidad de control de TIFN que permite ahorrar ciclos
de reloj en las instrucciones sin modificar el HW.

362

Problemas de fundamentos y estructura de computadores

Solucin:
La fase de lectura de primer operando se realiza para todas las instrucciones. Esta fase no
modifica el estado del computador, por lo tanto se puede incluir dentro de decodificacin, con
lo que se ahorra un ciclo de reloj en todas las instrucciones. El diagrama de estado queda:

La especificacin de la unidad de control queda:


Entrada UC

Estado UC

OPCODE

Fase

XXX

Seales de control
LdPC

LdRI

Ldaux MuxL

L/E

EC

COPAL

BUS

DEC/POR

SOREi

OPi

PROBLEMA 5
Considerando el procesador anterior:
a) Se ahorraran ciclos de reloj si el banco de registros tuviera dos buses de salida en
lugar de uno y dos buses de direcciones de lectura?
b) Se podra incluir en la fase de decodificacin alguna otra fase para ahorrar ciclos de
reloj a la ejecucin de las instrucciones?
c)

Suponiendo una sola operacin aritmtico-lgica, se podra incluir en decodificacin


alguna otra fase para ahorrar ciclos de reloj en la ejecucin de las instrucciones?

Solucin:
a) El camino de datos con un banco de registros con dos buses de salida quedara de la
siguiente manera:

Captulo 10 Diseo del camino de datos y la unidad de control

363

Como el banco de registros tiene dos buses de salida no se necesita el registro auxiliar
de datos, AUX, para almacenar el primer operando. Por lo tanto, se puede realizar la lectura de los dos operandos, la ejecucin y la escritura en el banco de registros en el mismo
ciclo de reloj.
El anlisis de las instrucciones es el siguiente:
1.a fase. Bsqueda de la instruccin (BUS).
Operaciones atmicas: RI:%M[PC], PC:%PC!1
Seales de control: LdRI%1, LdPC%1, L/E%0
2.a fase. Decodificacin (DEC).
3.a fase. Lectura de operandos ejecucin y escritura en el banco de registros (LOSE).
Operacin atmica: D%F1 Op F2
Seales de control: EC%1
El diagrama de estados es el siguiente:

364

Problemas de fundamentos y estructura de computadores

Por lo tanto, el nmero de ciclos necesarios para ejecutar una instruccin es el mismo
que en el caso anterior, pero el tiempo de ciclo es ms largo puesto que se leen los operandos, se ejecuta la operacin y se escribe el resultado todo en el mismo ciclo, por lo
tanto es una opcin peor puesto que el procesador trabaja a una frecuencia inferior. Adems el banco de registros con dos puertos de lectura es ms complejo, ms lento y ms
caro.
b) No, la LOSE es diferente para cada operacin puesto que tiene que generar la seal
COPAL que selecciona la operacin que realiza la unidad aritmtico-lgica.
c)

Esto quiere decir que en lugar de 8 ramas diferentes el diagrama tendra slo una. El
diagrama quedara como se ve a continuacin:

Con este diagrama antes de saber el tipo de instruccin que se est ejecutando se escribe un dato sobre el banco de registros, es decir se modifica el estado del procesador.
Esto no tendra mayor importancia si esta fuera la nica instruccin que se ejecuta, pero
recordar que aparte de las operaciones aritmtico-lgicas se ejecutan otros 2 tipos de instrucciones, por lo tanto no se puede realizar esta modificacin.
PROBLEMA 6
Se quiere crear una nueva versin de TIFN que se llamar TIFN.20, La idea es simplificar la unidad de control controlando las 8 operaciones aritmtico-lgicas desde el registro
de instrucciones.
a) Estudiar el formato de las instrucciones.
b) Cmo afecta al camino de datos?
Solucin:
a) La principal diferencia es que la seal de control COPAL se incluye en el registro de
instrucciones. OPCODE necesita dos bits para codificar los tres tipos de instrucciones.
En el caso de las instrucciones aritmtico-lgicas hay que aadir un campo que indique el
tipo de operacin que se va a ejecutar (COPAL). Este campo tiene 3 bits para codificar
las ocho operaciones. El formato queda:
10:9

8:7

6:5

4:3

2:0

OPCODE

F1

F2

COPAL

Captulo 10 Diseo del camino de datos y la unidad de control

Tipos de instrucciones

365

OPCODE

Tipo 1

00

Tipo 2

01

Tipo 3 Aritmtico-lgicas

10

La palabra mnima del procesador es de 11 bits.


b) El cambio ms notable es que se ha sustituido la seal COPAL generada por la UC por la
seal COPAL almacenada en RI, (RIa2:0b). Tambin han cambiado los bits que sirven
para direccionar los operandos y el destino.

PROBLEMA 7
Dado el procesador TIFN.20
a) Analizar la ejecucin de las instrucciones sobre el camino de datos, indicando qu
seales de control se tienen que activar en cada caso.
b) Diagrama de estados de la unidad de control.
c)

Especificacin de la unidad de control.

Solucin:
a)

1.a fase. Bsqueda de la instruccin (BUS).


Operaciones atmicas: RI:%M[PC], PC:%PC!1;
Seales de control: LdRI%1, LdPC%1, L/E%0
2.a fase. Decodificacin (DEC).

366

Problemas de fundamentos y estructura de computadores

3.a fase. Lectura del primer operando (POR).


Operacin atmica: AUX:%F1
Seales de control: Ldaux%1, MuxL%1
4.a fase. Lectura del segundo operando, ejecucin y escritura en banco de registros
(SORE).
Operacin atmica: D:%F2!AUX
Seales de control: MuxL%0, EC%1. Fijarse que en esta fase no aparece la seal
de control COPAL que se generaba en el problema 1.
b) Este diagrama es ms sencillo que el anterior por lo que resta complejidad a la unidad de
control.

c)

Entrada UC

Estado UC

OPCODE

Fase

10

Seales de control
LdPC

LdRI

Ldaux MuxL

L/E

EC

BUS

DEC

POR

SORE

PROBLEMA 8
Se quiere implementar el nuevo TIFN.30, ms flexible que el anterior procesador. Para
conseguirlo se van a utilizar nuevos modos de direccionamiento en las operaciones aritmtico-lgicas dando lugar a las instrucciones OP D,F1,@M, donde F1 usa un modo de direccionamiento directo a registro, (DR), y @M es un modo de direccionamiento directo a
memoria (DM):
a) Estudia el formato de estas nuevas instrucciones.
b) Estudia la unidad secuenciadora necesaria para implementarlas.
Solucin:
a) El nuevo formato es:
18:17

16:15

14:13

12:3

2:0

OPCODE

F1

@M

COPAL

Se incluye el campo @M que contiene una direccin de memoria de 10 bits. La palabra de mquina mnima es de 19 bits.

Captulo 10 Diseo del camino de datos y la unidad de control

367

b) Se necesita un multiplexor que seleccione entre las dos posibles direcciones de memoria:
la almacenada en el contador de programa y la almacenada en el registro de instrucciones.

PROBLEMA 9
Estudia el camino de datos necesario para implementar las instrucciones del problema anterior. Explica las seales necesarias para controlarlo.
Solucin:
No hace falta multiplexor para seleccionar las direcciones de lectura del banco de registros
puesto que slo se lee un operando.

Desde el registro de instrucciones se proporciona la direccin del destino, y de los dos


operandos. Adems se proporciona tambin la operacin aritmtico-lgica. Desde la unidad
de control se generan las siguientes seales:
Mux@- selecciona la direccin efectiva de memoria.
EC capacitacin de escritura del banco de registros.
L/E lectura escritura de memoria (para L%0 lectura).
LdPC -capacitacin de escritura del contador de programa.
LdRI capacitacin de escritura del registro de instrucciones.

368

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Dado el procesador anterior:
a) Analizar la ejecucin de las instrucciones sobre el camino de datos, indicando qu
seales de control se tienen que activar en cada caso.
b) Diagrama de estados de la unidad de control.
c)

Especificacin de la unidad de control.

Solucin:
a)

1.a fase. Bsqueda de la instruccin (BUS).


Operaciones atmicas: RI:%M[PC], PC:%PC!1
Seales de control: Ld PC%1; Ld RI%1, MUX@%0,L/E%0
2.a fase. Decodificacin (DEC).
3.a fase. Lectura de los operandos, ejecucin y escritura de la solucin en el banco de
registros (LOEE).
Operacin atmica: D:%F1 OP M[@D]
Seales de control: EC%1, MUX@%1, L/M%0
Los caminos de datos parciales necesarios para traer los dos operandos son diferentes,
por lo tanto se pueden traer los dos en el mismo ciclo de reloj.

b)

c)
Entrada UC

Estado UC

OPCODE

Fase

10

Seales de control
LdPC

LdRI

Mux@

L/E

EC

BUS

DEC

LOEE

PROBLEMA 11
Analizando el camino de datos y la unidad de control del anterior problema, cul crees
que es su principal problema y cmo se podra solucionar?

Captulo 10 Diseo del camino de datos y la unidad de control

369

Solucin:
El camino que tiene que recorrer el segundo operando es demasiado largo. Tiene que llegar la
direccin al bus de direcciones de la memoria pasando por el multiplexor, se tiene que leer la
memoria, tiene que llegar el dato hasta la unidad aritmtico-lgica, se tiene que realizar la
operacin, tiene que llegar el resultado a la entrada del banco de registros y se tiene que escribir el dato en el banco de registros. Como todas estas acciones se tienen que realizar en un
ciclo de reloj, la frecuencia final de trabajo va a ser muy baja, lo que puede perjudicar a otro
tipo de instrucciones implementadas.
Una posible solucin sera cortar el camino del segundo operando mediante un registro de
auxiliar lo que aadira un ciclo a todas estas instrucciones pero permitira unos ciclos ms
cortos y por lo tanto mayor frecuencia, lo que podra beneficiar a los dems tipos de instrucciones:

Como ya se ha comentado la inclusin de este registro auxiliar de datos afecta a la ejecucin de estas instrucciones aadindoles un ciclo ms. La 3.a fase LOEE se descompone en
dos fases: Una fase de lectura del segundo operando (SOM) y otra fase de ejecucin y escritura (EE). El primer operando no necesita ninguna accin especial para leerse. El diagrama de
estados queda como sigue:

370

Problemas de fundamentos y estructura de computadores

Y la especificacin de la unidad de control


Entrada UC

Estado UC

OPCODE

Fase

10

Seales de control
Ld PC

Ld RI MUX@ Ld aux

L/E

EC

BUS

DEC

SOM

EE

PROBLEMA 12
Finalmente se va disear el procesador TIFN.30 incluyendo las instrucciones OP
D,F1,F2 y OP D,F1,@M. Adems se va usar un registro auxiliar de datos para conseguir
que trabaje a una frecuencia ms elevada.
a) Estudiar el formato de instrucciones.
b) Estudiar la unidad secuenciadora.
Solucin:
a) A los formatos hay que aadirles un campo que indique el modo de direccionamiento del
segundo operando (CMD) de un bit. Adems el tamao del formato ser el del mayor
formato. Intentaremos que campos de diferentes formatos con el mismo significado ocupen las mismas posiciones:
Instrucciones OP D,F1,F2
19:18

17

16:15

14:13

12:11

10:3

2:0

OPCODE

CMD

F1

F2

NSU

COPAL

Instrucciones OP D,F1,@M
19:18

17

16:15

14:13

12:3

2:0

OPCODE

CMD

F1

@M

COPAL

Siendo los cdigos para los tipos de operacin y para los modos de direccionamiento
los siguientes:
Tipos de instrucciones

OPCODE

Modos de direccionamiento

CMD

Tipo 1

00

DR-DR-DR

Tipo 2

01

DR-DR-DM

Tipo 3 Aritmtico-lgicas

10

El tamao de palabra mquina es de 20 bits.

Captulo 10 Diseo del camino de datos y la unidad de control

371

b) En el primer tipo de instrucciones la nica direccin de memoria necesaria es la almacenada en PC. En el segundo tipo de instrucciones se usan dos direcciones de memoria: la
almacenada en PC y la almacenada en RI. El secuenciador es:

PROBLEMA 13
Disear el camino de datos del procesador TIFN.30 para las instrucciones del Problema 12 indicando la accin que controla cada seal de control.
Solucin:

Para implementar las instrucciones con las dos fuentes en el banco de registros necesitamos un registro auxiliar, como vimos en el problema 1. Para implementar las instrucciones
con un operando en memoria utilizbamos un registro auxiliar para hacer el ciclo total ms
corto. Al unir los dos caminos de datos hemos decidido utilizar un nico registro auxiliar, lo

372

Problemas de fundamentos y estructura de computadores

que permite reducir rea y complejidad. Esto afectar a los pasos que hay que seguir para
traer los operandos, como se ver ms adelante.
Seales de entrada a la unidad de control OPCODE y CMD.
Seales generadas por la unidad de control:
LdPC capacitacin de carga del contador de programa PC.
LdRI capacitacin de carga del registro de instrucciones.
Ldaux capacitacin de carga del registro auxiliar de datos.
MuxL seleccin del registro a leer del banco de registros (%0 F2,%1 F1).
MuxSO seleccin de la fuente del segundo operando (%0 memoria,%1 banco de registro).
Mux@ seleccin de la fuente de direccin de memoria (%0 PC, %1 banco de registros).
L/E capacitacin escritura de memoria (%0 lee, %1 escribe).
EC capacitacin de escritura en banco de registros (%1 escribe).
La unidad aritmtico-lgica se controla desde RIa2:0b.
PROBLEMA 14
Considerando TIFN.30
a) Analizar la ejecucin de las instrucciones sobre el camino de datos, indicando qu
seales de control se tienen que activar en cada caso.
b) Diagrama de estados de la unidad de control.
c)

Especificacin de la unidad de control.

d) Suponiendo que el 70% de las instrucciones aritmtico-lgicas que se ejecutan en el


procesador tienen sus dos operandos fuente en el banco de registros, qu cambio se
podra introducir en la unidad de control para optimizarlas?
Solucin:
a) Las fases de bsqueda y decodificacin son comunes a los dos tipos de instrucciones:
1.a fase. Bsqueda de la instruccin (BUS).
Operacin atmica RI:%M[PC], PC%PC!1
Seales de control: LdPC%1, LdRI%1, Mux@%0,L/E%0
2.a fase. Decodificacin (DEC).
Instrucciones OP D,F1,F2 con OPCODE%10, CMD%0
3.a fase. Bsqueda del segundo operando en registro (SOR).
Operacin atmica: AUX:%F2
Seales de control: Ldaux%1; MuxSO%1,MuxL%0

Captulo 10 Diseo del camino de datos y la unidad de control

373

Se realiza primero la lectura del segundo operando porque slo se ha puesto un registro auxiliar de datos en la segunda entrada de la UAL.
4.a fase. Lectura del primer operando en registro y ejecucin (POR).
Operacin atmica: D:%R1 OP AUX
Seales de control: MuxL%1, EC%1
Instrucciones OP D,F1,@M con OPCODE%10, CMD%1
3.a fase. Lectura del segundo operando en memoria (SOM).
Operacin atmica: AUX :% M[@M]
Seales de control: Mux@%1, MuxSO%0, Ldaux%1
4.a fase. Lectura del primer operando, ejecucin y escritura (POR2).
Operacin atmica: D:%R1 OP AUX
Seales de control: MuxL%1, EC%1
b)

c)
Entrada UC Estado UC
OPCODE,
CMD
XX, XX

10, 0

10, 1

Fase

Seales de control
LdPC LdRI Ldaux MuxL MuxSO Mux@ L/E

EC

BUS

DEC

SOR

POR

SOM

POR2

374

Problemas de fundamentos y estructura de computadores

d) Se puede incluir la bsqueda del segundo operando de las instrucciones con fuente en el
banco de registros dentro de la fase de decodificacin. De esta forma estas instrucciones
tardan un ciclo menos en ejecutarse. La carga de esta informacin en el registro auxiliar
no afecta a las instrucciones con un operando en memoria, puesto que en la 3.a fase de
estas instrucciones se sobrescribe la informacin almacenada en la etapa de decodificacin. El diagrama de estados queda:

La especificacin de la unidad de control queda:


Entrada UC Estado UC
OPCODE,
CMD
XX, X

10, 0
10, 1

Fase

Seales de control
LdPC LdRI Ldaux MuxL MuxSO Mux@ L/E

EC

BUS

DEC/SOR

POR

SOM

POR2

PROBLEMA 15
Se quieren aadir las siguientes instrucciones aritmtico-lgicas OP D, (F1), @M siendo
(F1) el modo de direccionamiento indirecto a registro (IR) y @M el modo de direccionamiento directo a memoria (DM), a TIFN 30:
a) Estudiar el formato de las instrucciones.
b) Estudiar la unidad secuenciadora necesaria para implementarla.

Captulo 10 Diseo del camino de datos y la unidad de control

Solucin:
a)

18:17

16:15

14:13

12:3

2:0

OPCODE

F1

@M

COPAL

b)

PROBLEMA 16
Estudiar el camino de datos del problema 15.
Solucin:

375

376

Problemas de fundamentos y estructura de computadores

PROBLEMA 17
Considerando el problema 16:
a) Analizar la ejecucin de las instrucciones sobre el camino de datos, indicando qu
seales de control se tienen que activar en cada caso.
b) Especificacin de la unidad de control.
c) Aadir estas instrucciones a TIFN.30, estudiando el nuevo formato, el camino de
datos y la unidad de control.
Solucin:
a)

1.a fase. Bsqueda de la instruccin (BUS).


Operacin atmica: RI:%M[PC], PC:%PC!1
Seales de control: LdPC%1 y LdRI%1, Mux@%0,L/E%0
2.a fase. Decodificacin (DEC).
3.a fase. Lectura del segundo operando (SOM):
Operaciones atmicas: AUX:%M[@M]
Seales de control: Ldaux%1, Mux@%1
4.a fase. Lectura del primer operando, ejecucin y escritura en el banco de registro
(POME).
Operacin atmica: D:%M[F1] OP AUX
Seales de control: Mux@%2, L/E%0, EC%1

b)

Entrada UC

Estado UC

OPCODE

Fase

XX, X

Seales de control
Ldaux Mux@

LdPC

LdRI

L/E

EC

BUS

DEC

SOM

POME

c) Los formatos TIFN.30 eran los siguientes


19:18

17

16:15

14:13

12:11

10:3

2:0

OPCODE

CMD

F1

F2

NSU

COPAL

19:18

17

16:15

14:13

12:3

2:0

OPCODE

CMD

F1

@M

COPAL

El nuevo formato casa con el formato con modo de direccionamiento directo a memoria. La nica diferencia es que el CMD necesita un bit ms puesto que hay que codificar
un nuevo modo de direccionamiento:

Captulo 10 Diseo del camino de datos y la unidad de control

Instrucciones OP D,F1,F2
20:19

18:17

16:15

14:13

12:11

10:3

2:0

OPCODE

CMD

F1

F2

NSU

COPAL

Instrucciones OP D,(F1),@M y OP D,F1,@M


20:19

18:17

16:15

14:13

12:3

2:0

OPCODE

CMD

F1

@M

COPAL

Tipos de instrucciones

OPCODE

Modos de direccionamiento

CMD

Tipo 1

00

DR-DR-DR

00

Tipo 2

01

DR-DR-DM

01

Tipo 3 Aritmtico-lgicas

10

DR-IR-DM

10

Camino de datos:

377

378

Problemas de fundamentos y estructura de computadores

Diagrama de estados:

Especificacin de la unidad de control:


Entrada UC Estado UC
OPCODE,
CMD

Fase

Seales de control
LdPC LdRI Ldaux MuxL MuxPO MuxSO Mux@ L/E EC

BUS

DEC

SOR

POR

SOM

POR2

SOM2

POIR

X, X

10, 00

10, 01

10, 10

PROBLEMA 18
Se quieren implementar en TIFN.30 las instrucciones Op (@M),d(F1),F2, donde (@M)
es un modo de direccionamiento indirecto a memoria (IM) y d(F1) es un modo de direccionamiento relativo a registro base con desplazamiento, siendo ste de 10 bits.

Captulo 10 Diseo del camino de datos y la unidad de control

379

a) Estudiar el formato de la instruccin.


b) Estudiar la unidad secuenciadora.
c)

Estudiar el camino de datos.

d) Estudiar la unidad de control.


Solucin:
a)

30:29

28:27

26:25

24:23

22:13

12:3

2:0

OPCODE

CMD

RF2

RB

desplaza

@M

COPAL

b)

La entrada 0 del multiplexor implementa el secuenciamiento implcito.


La entrada 1 del multiplexor implementa el modo de direccionamiento relativo a registro base con desplazamiento.
Las entradas 2 y 3 se utilizan para implementar el modo de direccionamiento indirecto a memoria. Se necesita un registro auxiliar de direcciones (AUX@) para
guardar la direccin efectiva de memoria en la que se va a guardar el resultado de la
operacin.
En el banco de registros se necesita un multiplexor para seleccionar entre los dos posibles registros de lectura, el registro base RB y el registro RF2.
La entrada de direccin de escritura no necesita entrada puesto que en esta instruccin
slo se escribe en memoria.

380

Problemas de fundamentos y estructura de computadores

c)

AUX es necesario puesto que, aunque un operando se trae de memoria y el otro se


trae del banco de registros, se necesita acceder dos veces al banco de registros para obtener los operandos.
d) Anlisis de las instrucciones:
1.a fase. Bsqueda de la instruccin (BUS).
Operaciones atmicas: RI:%M[PC], PC:%PC!1
Seales de control: LdPC%1, LdRI%1, Mux@%0,L/E%0
2.a fase. Decodificacin (DEC).
3.a fase. Lectura del primer operando con modo de direccionamiento relativo a registro
base con desplazamiento (POM).
Operacin atmica: AUX:%M[F1!d]
Seales de control: Ldaux%1, MuxL%1,Mux@%1
4.a fase. Clculo de la direccin efectiva del destino (@ED).
Operacin atmica: AUX@:%M[@M]
Seales de control: Mux@%2, Ldaux@%1,L/E%0
5.a fase. Ejecucin y escritura en memoria (EEM).
Operacin atmica: M[AUX@]%AUX OP F2,
Seales de control: MuxL%0,Mux@%3,L/E%1

Captulo 10 Diseo del camino de datos y la unidad de control

381

Diagrama de estados:

Especificacin de la unidad de control:


Entrada UC Estado UC
OPCODE

XX

Fase

Seales de control
LdPC LdRI Ldaux Ldaux@ Mux@ MuxL

L/E

EC

BUS

DEC

POM

@ED

EEM

PROBLEMA 19
Integrar estas ltimas instrucciones en el procesador TIFN.30 especificando el formato
de las instrucciones, el camino de datos y la unidad de control.
Solucin:
Las instrucciones estudiadas en los anteriores problemas necesitan un formato de 31 bits, por
lo tanto los nuevos formatos tendrn 31 bits.
Instrucciones Op D,F1,F2
30:29

28:27

26:25

24:23

22:21

20:3

2:0

OPCODE

CMD

F1

F2

NSU

COPAL

Instrucciones Op D,(F1),@M y Op D,F1,@M


30:29

28:27

26:25

24:23

22:13

12:3

2:0

OPCODE

CMD

F1

000.0

@M

COPAL

Para las instrucciones Op D,F1,@M el campo RIa22:13b no se usa.


Para las instrucciones Op D,(F1),@M suponemos RIa22:13b%00..0. Esto se hace para
aprovechar la parte del secuenciador que implementa el modo de direccionamiento relativo a
registro base. Como se puede ver en el formato de ms abajo los bits RIa22:13b contienen

382

Problemas de fundamentos y estructura de computadores

el desplazamiento, pero cuando el desplazamiento es cero, el modo de direccionamiento relativo a registro base se puede considerar indirecto a registro. Con esta decisin se simplifica el
secuenciador.
Instrucciones Op (@M),d(F1),F2
30:29

28:27

26:25

24:23

22:13

12:3

2:0

OPCODE

CMD

RF2

RB

desplaza

@M

COPAL

Tipos de instrucciones

OPCODE

Modos de direccionamiento

CMD

Tipo 1

00

DR-DR-DR

00

Tipo 2

01

DR-DR-DM

01

Tipo 3 Aritmtico-lgicas

10

DR-IR-DM

10

IRBD-DR-IM

11

Camino de datos:

Captulo 10 Diseo del camino de datos y la unidad de control

Anlisis de las instrucciones:


1.a fase. Bsqueda de la instruccin (BUS).
Operaciones atmicas: RI:%M[PC] Pc:%PC!1
Seales de control: LdPC%1 y LdRI%1 Mux@%0,L/E%0
2.a fase. Decodificacin (DEC).
Instrucciones Op D,F1,F2 con OPCODE%10 y CMD%00
3.a fase. Lectura del primer operando en registro (POR).
Operaciones atmicas: AUX1:%F1
Seales de control: MuxL%1, MuxP0%0, Ldaux1%1
4.a fase. Lectura del segundo operando en registro (SOR).
Operacin atmica: AUX2:%F2
Seales de control: MuxL%0, MuxSO%0, Ldaux2%1
5.a fase. Ejecucin y escritura en banco de registros (EE).
Operacin atmica: D%AUX1 Op AUX2
Seales de control: EC%1
Instrucciones Op D,F1,@M con OPCODE%10 y CMD%01
3.a fase. Lectura del primer operando en registro (POR2).
Operacin atmica: AUX1:%F1
Seales de control: MuxL%1, MuxP0%0, Ldaux1%1
4.a fase. Lectura del segundo operando de memoria (SOM).
Operacin atmica: AUX2:%M[@M]
Seales de control: Mux@%2, L/E%0, MuxSO%1, Ldaux2%1
5.a fase. Ejecucin y escritura en el banco de registros (EE2):
Operacin atmica: D:%AUX1 Op AUX2
Seales de control: EC%1
Instrucciones Op D,(F1),@M con OPCODE%10 y CMD%10
3.a fase. Lectura del primer operando de memoria (POIR).
Operaciones atmicas: AUX1%M[F1]
Seales de control: Mux@%1, L/E%0, MuxPO%1, Ldaux1%1
4a fase. Lectura del segundo operando en memoria (SOM2).
Operacin atmica: AUX2%M[@M]
Seales de control: Mux@%2, L/E%0, MuxSO%1, Ldaux2%1
5.a fase. Ejecucin y escritura en banco de registros (EE3).
Operacin atmica: D%AUX1 OP AUX2;
Seales de control: EC%1

383

384

Problemas de fundamentos y estructura de computadores

Instrucciones Op (@M),d(F1),F2 con OPCODE%10 y CMD%11


3.a fase. Lectura del primer operando en memoria (POM).
Operaciones atmicas: AUX1%M[F1!d]
Seales de control: MuxL%1, MuxPO%1,Ldaux1%1
4.a fase. Lectura del segundo operando (SOR2).
Operaciones atmicas: AUX2:%F2
Seales de control: MuxL%2, MuxSO%0, Ldaux2%1
5.a fase. Clculo de la direccin efectiva del resultado(@ER).
Operaciones atmicas: AUX@:%M[@M]
Seales de control: Mux@%2, Ldaux@%1
6.a fase. Ejecucin y escritura en memoria (EEM).
Operaciones atmicas: M[AUX@]:%AUX1 Op AUX2
Seales de control: Mux@%3; L/E%1
Especificacin de la unidad de control
Entrada UC

Estado UC

OPCODE,
CMD

Fase

XX, XX

10, 00

10, 01

10, 10

10, 11

Seales de control
LdPC LdRI Ldaux1 Ldaux2 MuxL MuxPO MuxSO Mux@ L/E EC Ldaux@

BUS

DEC

POR

SOR

EE

POR2

SOM

EE2

POIR

SOM2

EE3

POM

SOR2

@ER

EEM

Captulo 10 Diseo del camino de datos y la unidad de control

385

PROBLEMA 20
Estudiar como quedara TIFN 30 al aadirle la instruccin BIFSIZ , @M que realiza
la siguiente funcin: SI FZ%1 r PC%@M!1, siendo FZ un biestable que se pone a 1
si el resultado de la ltima operacin aritmtico lgica es cero y si no se carga con un
cero.
Es posible implementar las operaciones de LOAD y STORE sin modificar el camino
de datos del procesador X? indica cuales deberan ser sus caractersticas y como se podra
hacer?
Solucin:

La instruccin de LOAD y STORE son instrucciones de movimiento de datos, de memoria a banco de registros y de banco de registros a memoria. Por lo tanto, si existe un camino
entre estos dos mdulos se pueden implementar. Este camino existe pasando a travs de la
unidad aritmtico-lgica.
Para implementar las operaciones de LOAD se podra utilizar el camino de datos de las
instrucciones que usan como operandos fuentes posiciones de memoria.

386

Problemas de fundamentos y estructura de computadores

Para implementar las operaciones se podra utilizar el camino de datos que implementa las
instrucciones que tienen como destino una posicin de memoria.
En la unidad aritmtico-lgica habra que implementar una operacin dejar pasar el dato
sin operar sobre l.

10.3 Problemas propuestos


PROBLEMA 1
Se quiere disear un procesador, que llamaremos PPM, que tenga las siguientes caractersticas:
Un banco de 64 registros de propsito general, con dos buses de salida y un bus de
entrada.
Una memoria de 1G palabras con un bus de salida, un bus de entrada y un bus de direcciones.
Una palabra de procesador de 64 bits.
Que trabaje a la mayor frecuencia posible.
Para disearlo se van a estudiar caminos parciales de instrucciones para despus irlas aadiendo al camino total. Se comienza el estudio con 5 instrucciones aritmtico-lgicas (AL) de
dos operandos, uno de ellos es la Fuente1 y el otro hace las veces de Fuente2 y Destino. Los
dos operandos utilizan el modo de direccionamiento directo a registro. Estudiar el formato de
instrucciones, el camino de datos y la unidad de control.
PROBLEMA 2
Estudiar el formato, el camino de datos y la unidad de control para 5 instrucciones aritmticolgicas en las que el operando Fuente1 sea un inmediato de 10 bits.
PROBLEMA 3
Incluye en PPM las instrucciones del problema 1 y 2 estudiando sus formatos, camino de
datos y unidad de control.
PROBLEMA 4
Sea una instruccin de bifurcacin incondicional y cinco instrucciones de bifurcacin condicional con las siguientes condiciones de salto:
Mayor que.
Menor que.
Igual que.
Mayor o igual que.
Menor o igual que.

Captulo 10 Diseo del camino de datos y la unidad de control

387

Las bifurcaciones pueden usar dos modos de direccionamiento: Directo a memoria y relativo a contador de programa con un desplazamiento de 15 bits. Para implementar las bifurcaciones condicionales vamos a usar un registro de estado (SR) de 3 bits cada uno de ellos con
un significado:
Z % 1 si el resultado de la ltima operacin AL ha sido cero, Z % 0 en el resto de los
casos.
N % 1 si el resultado de la ltima operacin AL ha sido negativo, N % 0 en el resto de
los casos.
P % 1 si el resultado de la ltima operacin AL ha sido positivo, P % 0 en el resto de
los casos.
Este registro SR se actualiza en cada operacin AL. El HW necesario para generarlos se
supone incluido en la UAL.
PROBLEMA 5
Redisear el formato del camino de datos y la unidad de control del problema 4 utilizando un
mdulo combinacional Generador de Condicin (GC) cuya misin es simplificar la unidad de
control. Las entradas a GC son los bits de registro de estados SR y los bits que indican el tipo
de salto. La salida es un bit Condicin (C) que le indica a la unidad de control si la condicin
de salto se cumple o no se cumple.
PROBLEMA 6
Se quieren aadir al procesador PPM las instrucciones del problema 4 utilizando en el diseo
el mdulo GC. Estudiar el formato de las instrucciones, el camino de datos y la unidad de
control.
PROBLEMA 7
Se quiere aadir a PPM el modo de direccionamiento indirecto a memoria.
a) Estudiar los formatos, el camino de datos y la unidad de control necesarios para implementar las instrucciones AL en las que los dos operandos utilizan este modo de direccionamiento.
b) Se quiere que las instrucciones AL sean ortogonales, es decir que cualquiera de los operandos pueda utilizar cualquiera de los modos de direccionamiento. Estudia los formatos,
el camino de datos y la unida de control necesarios para implementar esta ortogonalidad.
PROBLEMA 8
Estudiar los formatos de instrucciones en camino de datos y la unidad de control que se obtienen al aadir a PPM los nuevos formatos estudiados en el problema 7b.
PROBLEMA 9
A PPM le falta un conjunto de instrucciones que permita realizar movimiento de datos. Estudiar el formato de instrucciones, camino de datos y unidad de control de las instrucciones

388

Problemas de fundamentos y estructura de computadores

Move fuente-destino donde fuente y destino pueden ser indistintamente memoria y banco de
registros, utilizando los siguientes modos de direccionamiento:
Directo a registro.
Relativo a ndice.
Indirecto a memoria.
PROBLEMA 10
Aadir a PPM las instrucciones del problema 9.

En un procesador multiciclo las instrucciones se ejecutan de una en una, siguiendo el orden de


programa. Cada instruccin tiene varias fases y cada una de las cuales dura un ciclo de reloj.
Para realizar una primera aproximacin a la segmentacin se parte de un procesador multiciclo que puede ejecutar los siguientes tipos de instrucciones:
Operaciones aritmtico lgicas enteras: OP D,F1,F2.
Operaciones LOAD D,@M.
Operaciones STORE F,@M.
Operaciones de bifurcacin condicional BIFS R,@M.
Si el procesador tiene un banco de registros con dos puertos de salida, las fases de cada tipo
de instruccin son las siguientes:
Fases de las instrucciones
Tipo de
instrucciones

Ciclo 1

Ciclo 2

Ciclo 3

Ciclo 4

Aritmtico- lgicas

Bsqueda

Decodificacin(*) Ejecucin

Escritura

LOAD

Bsqueda

Decodificacin

Ejecucin (I)

Memoria

STORE

Bsqueda

Decodificacin

Ejecucin (I)

Memoria

Bifurcaciones

Bsqueda

Decodificacin

Ejecucin (II)

(*) Decodificacin y lectura de operandos.


(I) Clculo de la direccin efectiva.
(II) Clculo de la direccin de salto y comprobacin de la condicin.

Ciclo 5

Escritura

390

Problemas de fundamentos y estructura de computadores

Vamos a ver cmo sera el diagrama fase-tiempo al ejecutar la siguiente secuencia de instrucciones en el procesador multiciclo:
LOAD R4,@M
ADD R4,R4,R3
STORE R4,@M

LOAD R4,@M

ADD R4,R4,R3
STORE R4,@M

10

11

12

13

11.1 Segmentacin bsica


El objetivo de la segmentacin es aumentar el rendimiento del procesador extrayendo paralelismo a nivel de instruccin permitiendo que varias instrucciones puedan ejecutarse en paralelo en el procesador. Esto se consigue desacoplando las fases de ejecucin de una instruccin
mediante registros de pipeline.

Otra caracterstica de la segmentacin es que no existe unidad de control, sino que la


informacin de control de una instruccin avanza con la instruccin a lo largo del procesador. Por otro lado, puesto que las instrucciones en procesador multiciclo no tienen el mismo
nmero de fases, al implementar la segmentacin se podra dar el caso de que dos instrucciones intentaran acceder en el mismo ciclo a la misma etapa. Para evitar estos problemas
en los procesadores segmentados, todas las instrucciones tienen que pasar por todas las etapas. Por lo tanto en algunas de estas etapas la instruccin puede estar inactiva, como es el

Captulo 11 Procesadores segmentados

391

caso de la etapa de memoria en las operaciones enteras. Visto lo anterior, el diagrama fasetiempo de la anterior secuencia de instrucciones ejecutada en un procesador segmentado
sera:

LOAD R4,@M
ADD R6,R5,R3

STORE R7,@M

Como se puede observar, esta secuencia tarda 7 ciclos en ejecutarse, mientras que en el
multiciclo la misma secuencia tarda 13 ciclos.

11.2 Problemas y soluciones: tcnicas bsicas


En un procesador segmentado ideal el ciclo por instruccin es 1. En los procesadores reales
aparecen una serie de riesgos que provocan la parada del procesador y, por lo tanto, la prdida
de rendimiento. Estos riesgos son:
Riesgos estructurales.
Riesgos de lectura despus de escritura (LDE).
Riesgos de escritura despus de lectura (EDL).
Riesgos de escritura despus de escritura (EDE).
Riesgos estructurales: dos instrucciones intentan acceder en el mismo ciclo de reloj al mismo
recurso hardware (HW). Por ejemplo, si una instruccin se encuentra en la etapa de bsqueda
y un LOAD se encuentra en la etapa de memoria, las dos intentan acceder a la memoria. Estos
riesgos se pueden eliminar parando la segunda instruccin, pero las paradas penalizan el rendimiento. En la mayora de los casos se pueden eliminar los riesgos aadiendo ms HW. En el
caso de la memoria se van a utilizar dos memorias, una de instrucciones y otra de datos. Otra
optimizacin HW que evita paradas es permitir que el banco de registros se escriba en la primera mitad del ciclo de reloj y se lea en la segunda mitad del ciclo de reloj.
Riesgos de lectura despus de escritura, una instruccin intenta leer un dato antes de que haya
sido escrito en el banco de registros. Supongamos la secuencia de instrucciones:
LOAD R4,@M
ADD R6,R4,R3

En el siguiente cuadro puede observarse que la instruccin de LOAD escribe el dato en el


ciclo 5, pero que la instruccin ADD lo necesita en el ciclo 3, que es cuando lo tiene que leer
del banco de registros. Por lo tanto, si no se hace algo, la instruccin LOAD se ejecutar con
un valor errneo.

392

Problemas de fundamentos y estructura de computadores

La solucin ms sencilla es parar la instruccin ADD hasta que ha acabado el LOAD.


Esto soluciona el problema pero penaliza el rendimiento. Darse cuenta que la parada en decodificacin provoca la parada de todas las instrucciones que van detrs.

Otra solucin es el cortocircuito. La instruccin que proporciona el dato lo enva directamente a la etapa de ejecucin de la instruccin que lo espera.

Si la instruccin que proporciona el dato es un LOAD, el estudio es ligeramente diferente


porque el dato no se da desde ejecucin sino desde memoria, es decir un ciclo ms tarde. Por
lo tanto hay que provocar una parada adems de activar el corto circuito. Es importante darse
cuenta que los cortocircuitos reducen las paradas, pero no las eliminan.

Riesgos de control. Las instrucciones de bifurcacin tienen que calcular la direccin de salto y
comprobar la condicin de salto antes de poder leer la siguiente instruccin. Vamos a suponer
que las bifurcaciones realizan ese clculo en la etapa de ejecucin:

Captulo 11 Procesadores segmentados

393

En estos casos hay que provocar dos paradas antes de poder leer la instruccin siguiente.
El problema se puede reducir adelantando el HW que calcula la condicin y la direccin de
salto a la etapa de decodificacin:

Con esta aproximacin se reducen las paradas pero no se eliminan. Otra solucin es utilizar saltos retardados. Esta es una tcnica de compilacin que consiste en que el compilador
busca una instruccin que se ejecute siempre y la coloca detrs del salto condicional. Adems,
el HW del procesador en lugar de provocar una parada ejecuta esta instruccin, que viene
direccionada por el contador de programa

Evidentemente el compilador debe comprobar que al cambiar de posicin esta instruccin


no se altera el resultado final del programa. Cuando no encuentra una instruccin de estas
caractersticas el compilador aade una instruccin NOP, que es una instruccin que no hace
nada. Se puede considerar equivalente a una parada.
Otra solucin es la prediccin esttica. Esta es una solucin HW. Por defecto se empieza a
ejecutar siempre la instruccin direccionada por el contador del programa. Si la prediccin
falla esta instruccin se convierte en una NOP y se ejecuta la instruccin correcta. En caso de
que acierte la prediccin se sigue la ejecucin normal. Con esto se consigue que slo haya
paradas en los casos en los que falla la prediccin.

394

Problemas de fundamentos y estructura de computadores

Existen otros dos tipos de riesgo. Escritura despus de escritura en el que una instruccin
intenta escribir un dato en una posicin del banco de registros antes de que una instruccin
anterior haya escrito su resultado en la misma posicin del banco de registros. Las soluciones
a este tipo de riesgo las explicamos en el epgrafe de procesadores segmentados multifuncionales. El riesgo de escritura despus de lectura aparece cuando una instruccin intenta escribir un dato en una posicin del banco de registros antes de que una instruccin anterior lo
haya ledo. Por construccin, no se pueden dar en ninguno de los dos procesadores segmentados que vamos a estudiar.

11.3 Pipeline multifuncional


En estos procesadores, adems de la unidad funcional de enteros, se tiene un conjunto de unidades funcionales de coma flotante que se caracterizan por tener latencias superiores a 1. Suponiendo una suma en coma flotante con una latencia de 2 ciclos y una multiplicacin de 4
ciclos, el diagrama etapa-tiempo de la secuencia de instrucciones:
ADD F4,F2,F6
MUL F8,F10,F0

ADD F4,F2,F6
MUL F8,F10,F0

E1 E2

E1 E2 E3 E4

El estudio realizado para los riesgos de lectura despus de escritura y de control es vlido
para estos procesadores multifuncionales.
Debido a que ahora las instrucciones tienen diferente longitud se puede dar el caso de que
dos instrucciones intenten escribir en el banco de registros en el mismo ciclo de reloj. Como
el banco de registros slo tiene un puerto de escritura hay que evitarlo. Se puede utilizar un
banco de registros con dos puertos de escritura, pero esto es caro y complejo. Hay dos soluciones: a) parar un ciclo de reloj la segunda instruccin en la etapa de decodificacin, o b)
parar la segunda instruccin en la ltima etapa de ejecucin.
Por ltimo, se va a estudiar el tratamiento de los riesgos de escritura despus de escritura.
En el siguiente cuadro se puede ver un ejemplo. La instruccin de suma debera ser la ltima
en escribir, pero dado que la multiplicacin es ms larga es la ltima que lo hace.

Captulo 11 Procesadores segmentados

MUL F8,F10,F0

D
F

ADD F8,F2,F6

E1 E2 E3 E4

E1 E2

395

Existen dos soluciones: a) detener en decodificacin la segunda instruccin lanzada o b)


inhibir la escritura de la primera instruccin lanzada.
Para calcular el ciclo por instruccin de estos procesadores se va a utilizar la siguiente
expresin:
tipos de instruccin

CPI % CPIideal !

frecuenciai # penalizacini

Donde frecuencia indica la frecuencia con la que aparece una determinada penalizacin.
Por ejemplo, si considero que las bifurcaciones condicionales siempre van a producir una parada de dos ciclos y que el 30% de las instrucciones son bifurcaciones, el CPI sera:
tipos de instruccin

CPI % CPIideal !

;
i

frecuenciai # penalizacin1 % 1 ! 0,3 # 2 % 1,6

NOTA: instrucciones ms usadas en los problemas.


N.o de ciclos
en ejecucin

Instruccin
LD Fi,D(Rb)

Movimiento de informacin de memoria a registro

SD D(Rb),Fi

Movimiento datos de registro a memoria

ADDD D,Fi,Fj

Suma en coma flotante

Variable

MULD D,Fi.Fj

Multiplicacin en coma flotante

Variable

DIVD D,Ri,Rj

Divisin en coma flotante

Variable

ADDI D,Ri,Rj

Suma de enteros

1 ciclo

SUBI D,Ri,Rj

Resta de enteros

1 ciclo

BEQZ Ri,@M

Saltar si Ri % 0

1 ciclo

BNEZ Ri,@M

Saltar si Ri 0

1 ciclo

SGTI Ri, Rj, DONE

Ri % 1 si Rj b DONE

1 ciclo

NOP

Instruccin que introduce el compilador. No hace nada

1 ciclo

1 ciclo

396

Problemas de fundamentos y estructura de computadores

11.4 Problemas resueltos


PROBLEMA 1
El siguiente fragmento de cdigo se ejecuta en un procesador segmentado:
LOOP: LD F2, 0(R1)
MULTD F4, F2, F0
LD F6, 0(R2)
ADDD F6, F4, F6
SD 0(R2), F6
ADDI R1, R1, 8
ADDI R2, R2, 8
SGTI R3, R1, DONE
BEQZ R3, LOOP
NOP
Suponiendo que:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
La deteccin de riesgos LDE y parada se realiza en la etapa de decodificacin.
La deteccin de riesgos estructurales y parada se realiza en la etapa de decodificacin.
Los saltos se resuelven en la etapa de decodificacin.
Se emplea la tcnica de compilacin salto retardado de una instruccin para reducir
las paradas por riesgo de control.
Se permite que coexista una STORE y una instruccin aritmtico-lgica en la misma
etapa.
Las unidades funcionales tienen las siguientes caractersticas:
UF

Cantidad

Latencia

Segmentacin

FP ADD

No

FP MUL

No

INT ALU

No

Determinar el CPI teniendo en cuenta que DONE % 0 # 1000 y R1 % 0 # 0100 al inicio de la ejecucin y se supone que no se dispone de lgica de cortocircuito.
Solucin:
Recordatorio: SGTI R3, R1, DONE carga un 1 en R3 si R1 b DONE.
El dato no se puede tener hasta que se ha escrito en el banco de registros en la etapa de
escritura (W o WB del ingls Write Back).

SD 0(R2), F6

ADDI R1, R1, 8

ADDI R2, R2, 8

SGTI R3, R1, DONE

BEQZ R3, LOOP

LD F2, 0(R1)

ADDD F6, F4, F6

11

LD F6, 0(R2)

NOP

MULTD F4, F2, F0

10

LD F2, 0(R1)

1
E

M W

FP FP

M W

FP FP FP FP FP

FP FP FP FP FP

F DP DP DP DP DP D

F DP DP DP DP DP D E1 E2 E3 E4 M W

FP

FP

M W
F DP D

M W

M W

M W

F DP D

M W

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

F DP DP D E1 E2 E3 E4 E5 M W

Captulo 11 Procesadores segmentados

397

398

Problemas de fundamentos y estructura de computadores

La parada de las instrucciones en la etapa de bsqueda (FP) se produce porque la instruccin anterior est parada en decodificacin (DP).
La instruccin nmero 2 (I2) se para por LDE con 1. La parada se mantiene hasta que la
instruccin 1 (I1) alcanza la etapa W, entonces I2 puede leer los registros en la segunda
parte del ciclo de reloj y por lo tanto finalizar su etapa de decodificacin. Esto es aplicable al resto de los casos.
I4 se para por LDE con 2.
I5 se para por LDE con 4.
I8 se para por LDE con 6.
I9 se para por LDE con 8.
I11 es la primera instruccin del siguiente ciclo que se ejecuta
CPI %

24
Ciclos totales
% % 2,66
9
Instrucciones totales

PROBLEMA 2
Sea el procesador y el fragmento de programa del problema anterior. Determinar el CPI
suponiendo que se dispone de lgica de cortocircuito.
Solucin:

LD F2, 0(R1)

MULTD F4, F2, F0

LD F6, 0(R2)

ADDD F6, F4, F6

SD 0(R2), F6

ADDI R1, R1, 8

ADDI R2, R2, 8

SGTI R3, R1, DONE

BEQZ R3, LOOP

10

NOP

11

LD F2, 0(R1)

M W

10 11 12 13 14 15 16 17 18 19 20

F DP D E1 E2 E3 E4 E5 M W
F

M W

F DP DP DP D E1 E2 E3 E4 M W
F D P DP D

M W

FP FP

M W

M W

M W

F DP D

M W

I2 para en decodificacin por una dependencia de LDE con I1.


I4 para en decodificacin por una dependencia de LDE con I2.
I5 para en decodificacin por una dependencia LDE con I4. El cortocircuito se produce

Captulo 11 Procesadores segmentados

399

de la etapa de ejecucin de I4 a la etapa de memoria de I5. Esto es posible porque se


permite que coexistan un STORE y una instruccin aritmtico-lgica en las etapas M y
W. Para poder ganar este ciclo adems el HW que implementa el STORE tiene que
permitir calcular la direccin efectiva de memoria (ciclo 13) sin tener todava el dato
que se quiere enviar a memoria (ciclo 14).
I9 para un ciclo debido a la dependencia LDE con I8. Esta parada aparece porque I de
bifurcacin hace el clculo de la direccin de salto y de la condicin en la etapa de
decodificacin. Si este clculo se realizara en la etapa de ejecucin esta parada no aparecera.
I11 es la primera instruccin que se ejecuta del siguiente bucle, por lo tanto un bucle
tarda 17 ciclos en ejecutarse. El total de instrucciones ejecutadas en bucle es 9 (recordar
que NOP no cuenta como instruccin). Con estos datos podemos decir que el ciclo por
instruccin de este programa es:
CPI %

17 # 900
Ciclos totales
%
% 1,88
9 # 900
Instrucciones totales

En los casos en los que el bucle se repita muchas veces podemos despreciar los ciclos de llenado porque su valor es insignificante. Tambin se puede despreciar si se
supone que el programa lleva ejecutndose un rato, puesto que el efecto del llenado del
pipeline ya se ha diluido.
PROBLEMA 3
El siguiente fragmento de cdigo:
LOOP: LD F2, 0(R1)
MULTD F4, F2, F0
LD F6, 0(R2)
ADDD F6, F4, F6
LD F8, 0(R3)
ADDD F6, F8, F6
SD 0(R2), F6
ADDI R1, R1, 8
ADDI R2, R2, 8
ADDI R3, R3, 8
SGTI R4, R1, DONE
BEQZ R4, LOOP
NOP
Se ejecuta en un procesador con segmentacin con las siguientes caractersticas:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
Se dispone de lgica de cortocircuito a travs de los registros de segmentacin.

400

Problemas de fundamentos y estructura de computadores

Los saltos se resuelven en la etapa de decodificacin (el PC se modifica en esta etapa).


La deteccin y parada se hace en decodificacin para todos los casos (riesgos LDE y
riesgos estructurales).
Dos instrucciones no pueden coexistir en la misma etapa.
Los riesgos de control se solucionan mediante la tcnica de compilacin del salto
retardado.
Las unidades funcionales tienen las siguientes caractersticas:
UF

Cantidad

FP ADD

Latencia

Segmentacin

No

FP MUL

No

INT ALU

No

a) Construye el diagrama de etapa-ciclo correspondiente a la primera iteracin del bucle.


b) Determinar el CPI teniendo en cuenta que DONE % 0 # 1000 y R1 % 0 # 0100 al
inicio de la ejecucin.
Solucin:
a) (Ver tabla de la pgina siguiente.)
Las instrucciones que paran en la etapa F (representado en el diagrama como FP) lo
hacen porque la instruccin anterior se encuentra parada en D (representado por DP) y
por lo tanto no pueden avanzar.
I2 para debido a la LDE con 1. En este caso el cortocircuito se realiza desde la etapa de
memoria de I1 a la etapa de ejecucin de I2, pasando por el registro del pipeline correspondiente.
I4 para por LDE con 2 (producindose el cortocircuito desde la etapa de ejecucin a la
etapa de ejecucin) y por LDE con 3 (producindose en este caso el cortocircuito de la
etapa de memoria a la etapa de ejecucin).
I5 para en D para evitar un riesgo estructural con I4 en el ciclo 10 (en caso de no parar
ambas instrucciones coincidiran en la etapa de memoria).
I6 para en D por LDE con 5.
I7 para en D por LDE con 6. En este caso se ha supuesto que I de STORE no empieza a
calcular la direccin efectiva hasta que tiene tanto el valor del registro entero que usa
para calcular la direccin efectiva, como el valor que quiere llevar a memoria.
I8 tiene dos paradas en la etapa de decodificacin. La primera para evitar un riesgo
estructural con I6 y la siguiente para evitar un riesgo estructural con I7, ambas en la
etapa de memoria.
I12 para debido a un riesgo LDE con 11. En este caso hay que recordar que el clculo
de la direccin de salto y de la condicin se realiza en la etapa de decodificacin, por
eso se tiene que parar hasta que se tiene el valor de R4 necesario para el clculo de la
condicin.
I14 es la primera que se ejecuta del siguiente bucle.

LD F2, 0(R1)

MULTD F4, F2, F0

LD F6, 0(R2)

ADDD F6, F4, F6

LD F8, 0(R3)

ADDD F6, F8, F6

SD 0(R2), F6

ADDI R1, R1, 8

ADDI R2, R2, 8

ADDI R3, R3, 8

SGTI R4, R1, DONE

BEQZ R4, LOOP

NOP

LD F2, 0(R1)

10

11

12

13

14

1
E

M W

FP

M W

FP
FP

M W

FP

FP FP

F DP DP D

F DP D

FP

M W

M W

F DP D

M W

M W

M W

F DP D E1 E2 M W

F DP D

M W

M W

M W

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

F DP D E1 E2 M W

F DP D E1 E2 E3 M W

Captulo 11 Procesadores segmentados

401

402

Problemas de fundamentos y estructura de computadores

b) Nmero de instrucciones en un bucle: 12 (recordar que NOP no se considera instruccin).


Nmero de ciclos: 19.
Como el bucle se ejecuta 900 veces suponemos que los ciclos de llenado se pueden
despreciar:
19
Ciclos totales
% % 1,583
CPI %
Instrucciones totales 12
PROBLEMA 4
Sea un procesador segmentado multiciclo con las siguientes caractersticas:
Un dato se puede escribir y leer de un registro en el mismo ciclo de reloj.
Los saltos se resuelven en la etapa de decodificacin.
Las detecciones de riesgos de datos y generacin de paradas se realizan en la etapa
de decodificacin.
La deteccin de riesgos EDE se realiza en la etapa de decodificacin. Se soluciona
con una parada hasta que la instruccin ya lanzada entre a la etapa de memoria.
Lgica de cortocircuito.
Los riesgos de control se solucionan mediante compilacin usando la tcnica del salto retardado de 1 instruccin.
No pueden coincidir dos instrucciones en las mismas etapas. Se resuelve con deteccin y parada de la segunda instruccin en la etapa de decodificacin.
Unidad de ejecucin multiciclo con los siguientes ciclos de ejecucin:
UF

Cantidad

Latencia

Segmentacin

FP ADD

No

FP DIV

No

FP MUL

No

INT ALU

No

Y el siguiente fragmento de cdigo:


LOOP: LD F6, 0(R2)
MULD F8,F6,F0
ADDI R2,R2,1
LD F2, 0(R2)
DIVD F8,F2,F8
SD 0(R2), F8
MULD F8,F2,F0

Captulo 11 Procesadores segmentados

403

ADD F8,F4,F6
ADDI R3,R3,,8
SGTI R4,R3,DONE
BNEZ R4,LOOP
NOP
a) CPI del pipeline, suponiendo que el bucle se ejecuta muchas veces.
b) El hardware de la mquina puede inhibir la escritura en el registro destino de una instruccin ya lanzada. Explica cmo usar esta caracterstica para reducir las penalizaciones debidas a los riesgos EDE. Calcula el nuevo valor de CPI.
Solucin:
a) (Ver tabla de la pgina siguiente.)
Las instrucciones con parada en F (FP) lo estn porque la instruccin anterior est parada en D (DP).
I2 para por LDE con 1. El cortocircuito se realiza desde la etapa de memoria del
LOAD a la etapa de ejecucin de MULD.
I5 para por LDE con 4 y con 2.
I6 para por LDE con 5. En este caso hemos supuesto que I de STORE no empieza a
calcular la direccin efectiva hasta que tiene tanto el valor del registro entero que usa
para calcular la direccin efectiva, como el valor que quiere llevar a memoria.
I8 para por EDE con 7. Esta dependencia puede aparecer por modificaciones que hace
el compilador en el programa.
I11 para por LDE con 10. Esta parada aparece porque I de bifurcacin calcula la direccin de salto y la condicin en la etapa de decodificacin y necesita el valor de R4 para
calcular la condicin. Esta parada se podra eliminar mediante cortocircuito combinacional es decir que I10 mandara el valor de R4 a I11 directamente, es decir sin pasar
por el registro de pipeline correspondiente.
I13 corresponde a la primera instruccin ejecutada del siguiente ciclo.
Total de instrucciones ejecutadas: 11 (recordar que NOP no se cuenta como instruccin).
Total de ciclos: 22.
Despreciando los ciclos de llenado el CPI es
CPI %

Ciclos totales
22
% %2
Instrucciones totales 11

b) (Ver tabla de la pgina 405).


Las instrucciones paradas en F (FP) lo estn porque la instruccin anterior est parada
en D (DP) y eso para todo el pipeline.
I2 para por LDE con 1.
I5 para por LDE con 4 y 2.

ADDI R3,R3,8

LD F6,0(R2)

ADDD F8,F4,F6

13

MULD F8,F2,F0

NOP

SD 0(R2),F8

12

DIVD F8,F2,F8

BNEZ R4,LOOP

LD F2,0(R2)

11

ADDI R2,R32,1

SGTI R4,R3,DONE

MULD F8,F6,F0

10

LD F6,0(R2)

1
E

M W

FP

F
F

D
E

M W

M W

FP
FP FP FP FP

F DP DP DP DP D

M W

FP FP

F DP D

FP

M W

M W

F DP D

F DP DP D E1 E2 M W

D E1 E2 E3 E4 M W

F DP D E1 E2 E3 E4 E5 M W

M W

M W

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

F DP D E1 E2 E3 E4 M W

404
Problemas de fundamentos y estructura de computadores

ADDI R3,R3,8

LD F6,0(R2)

ADDD F8,F4,F6

13

MULD F8,F2,F0

NOP

SD 0(R2),F8

12

DIVD F8,F2,F8

BNEZ R4,LOOP

LD F2,0(R2)

11

ADDI R2,R32,1

SGTI R4,R3,DONE

MULD F8,F6,F0

10

LD F6,0(R2)

1
E

M W

FP

F
F

D
E

M W

M W

FP
FP FP FP FP

F DP DP DP DP D

M W

FP FP

F DP D P D

FP

M W

M W

F DP D

D E1 E2 M W

D E1 E2 E3 E4 M NW

F DP D E1 E2 E3 E4 E5 M W

M W

M W

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

F DP D E1 E2 E3 E4 M W

Captulo 11 Procesadores segmentados

405

406

Problemas de fundamentos y estructura de computadores

I6 para por LDE con 5.


I7 inhibe su escritura para evitar riesgos EDE. Como consecuencia I8 tienes menos
ciclos de parada.
I9 tiene dos paradas, la primera para evitar que accedan la 8 y la 9 en el mismo ciclo de
reloj a la etapa m, el segunda para evitar que 7 y 9 accedan en el mismo ciclo de ck a la
etapa M.
I11 para por LDE con 10. Recordar que los saltos se resuelven en decodificacin.
Total de instrucciones: 11, Total de ciclos: 21.
CPI %

21
Ciclos totales
% % 1,9
Instrucciones totales 11

PROBLEMA 5
Supongamos un procesador segmentado en cinco etapas que posee anticipacin de operandos y utiliza saltos retardados con un delay-slot de un ciclo, pero que posee una sola
memoria cache para el almacenamiento de instrucciones y datos. Por esta razn no resulta
posible leer una instruccin y realizar la lectura o escritura de un dato en el mismo ciclo de
reloj. Suponemos que el HW que detecta el riesgo estructural en la memoria est en la
etapa de bsqueda (F). Las escrituras en el banco de registros se hacen en la primera mitad
de la fase W, mientras que las lecturas se hacen en la segunda mitad de la fase W. Supongamos que este procesador ejecuta el siguiente programa:
bucle:

LW

R2,X(R6)

LW

R3,Y(R6)

SUB

R2,R2,R3

ADD

R2,R2,R1

SUB

R6,R6,4

SW

Z(R6),R2

BNEZ R6,bucle
ADD

R1,R1,1

SUB

R3,R3,R7

Siendo el valor inicial de R6 2000.


a) Construye el diagrama fase-ciclo correspondiente a la primera iteracin del bucle indicando los cortocircuitos que se activan.
b) Calcula el valor del CPI.
c)

Si el computador trabaja con una frecuencia de 1 GHz, determina el rendimiento en


MIPS.

Captulo 11 Procesadores segmentados

407

Solucin:
a)

M W

10 11 12 13 14 15 16

LW R2,X(R6)

LW R3,Y(R6)

SUB R2,R2,R3

F DP D

M W

ADD R2,R2,R1

FP FP

M W

SUB R6,R6,4

M W

SW Z(R6),R2

M W

BNEZ R6, BUCLE

M W

ADD R1,R1,1

M W

LW R2,X(R6)

FP

M W

M WB

NOTA: no siempre que coincide una etapa de memoria con una de bsqueda se produce
una parada. Slo cuando la etapa de memoria pertenece a una instruccin que hace uso de
la memoria, es decir LOAD y STOREs. Estas etapas de memoria estn marcadas en gris.
I3 para por LDE con I2. En este caso el cortocircuito se produce desde la etapa de
memoria de I2 a la etapa de ejecucin de I3.
I4 tiene que parar dos ciclos en la etapa de bsqueda por riesgo estructural, primero con
I4 y luego con I5.
I9, que es la primera que se ejecuta del siguiente ciclo, tiene que parar por riesgo estructural con I6.
b) Total de ciclos 11.
Total de instrucciones: 8.
CPI %
c)

Ciclos totales
11
% % 1,375
Instrucciones totales
8

R6 es el registro que controla el bucle. Inicialmente tiene cargado el valor 2000 y se


decrementa de 4 en 4, luego el bucle se ejecuta 2000/4 % 500 veces.
Instrucciones totales % 8 por bucle # 500 bucles % 4.000
Ciclos totales % 11 por bucle # 500 bucles % 5.500
Tiempo total % Ciclos totales # Tiempo ciclo %
%

MIPS %

Ciclos totales
%
Frecuencia

5.500 ciclos
% 5,5 . 10.6 s
109 Hz

Instrucciones ejecutadas . 10.6 4.000 . 10.6


%
% 727,3 MIPS
Tiempo total
5,5 . 10.6

408

Problemas de fundamentos y estructura de computadores

PROBLEMA 6
Sea un procesador segmentado con las siguientes caractersticas:
Un dato se lee y se escribe en el banco de registros en el mismo ciclo de reloj.
La etapa de ejecucin es multiciclo y consta de 1 sumador/restador de coma flotante
segmentado en 2 etapas, 1 multiplicador de coma flotante segmentado en 5 etapas y
1 unidad de enteros.
Las dependencias de LDE se detectan en la primera etapa de cada unidad funcional y
se resuelven mediante cortocircuito cuando los operandos estn disponibles.
Los riesgos estructurales se detectan y se resuelven mediante espera en la ltima etapa de cada unidad funcional.
Los riesgos de EDE entre dos instrucciones A y B tal que A precede a B se resuelven
mediante inhibicin de escritura de la instruccin A.
Sabiendo que se ejecuta el siguiente cdigo:
LD F10,0(R1)
MULD F4,F0,F10
LD F12,0(R2)
ADD F2,F12,F4
LD F4 8(R1)
MULD F12, F4, F12
LD F14,16(R1)
a) Construye el diagrama fase-ciclo de reloj. Explica detalladamente en cada caso la causa de cualquier posible riesgo y cualquier posible parada.
b) Que ventaja tiene la deteccin y parada en la primera etapa de ejecucin frente a la
deteccin y parada en decodificacin?
Solucin:
a)
1

LD F10,0(R1)

MULD F4,F0,F10

LD F12,0(R2)

ADD F2,F12,F4

LD F4 8(R1)

MULD F12,F4,F12

LD F14,16(R1)

D X1P X1 X2 X3 X4 X5
F

10

11

NW

D A1P A1P A1P A1P A1

A2

12 13 14 15

M W

D X1P X1 X2

X3 X4 X5 M W

EP

Captulo 11 Procesadores segmentados

409

I2 tiene un riesgo LDE con la 1, por lo tanto se produce una parada en la primera etapa de
ejecucin de la multiplicacin. Adems se inhibe la escritura para eliminar el riesgo EDE
con I5.
I4 tiene 4 paradas para evitar el riesgo LDE con I2.
I6 tiene una parada para evitar el riesgo LDE con I5.
I7 parada para evitar el riesgo estructural con I2 (ambas intentan acceder a memoria en
el ciclo 10). Esta parada puede eliminarse si se especifica que una instruccin de memoria y otra aritmtico-lgica pueden estar simultneamente en memoria puesto que
slo una de ellas accede a memoria.
b) Al producirse las paradas en la primera etapa de ejecucin, el procesador no para puesto
que puede seguir leyendo, decodificando y mandando instrucciones a otras unidades funcionales no ocupadas. Slo cuando se enva una instruccin a la unidad funcional parada
se para todo el procesador. Vamos a hallar la tabla para este segundo caso para comparar
CPI:

LD F10,0(R1)

MULD F4,F0,F10

LD F12,0(R2)

ADD F2,F12,F4

LD F4 8(R1)

MULD F12,F4,F12

LD F14,16(R1)

M W

10 11 12 13 14 15 16 17 18 19 20

F DP D E1 E2 E3 E4 E5 M W
FP

M W

F DP DP DP D E1 E2 M W
FP FP FP

F DP D
FP

M W

F DP D E1 E2 E3 E4 E5 M W
F

M W

Las instrucciones que paran en F (FP) lo hacen porque la instruccin anterior est parada en D (DP), es decir una parada en D produce la parada del procesador, lo que quiere
decir que se dejan de buscar instrucciones.
I2 para debido a una dependencia de LDE con I1. Podemos observar que en este caso
no hace falta inhibir la escritura de esta instruccin puesto que ha desaparecido el riesgo EDE con I5.
I4 para debido a un riesgo de LDE con I2.
I5 tiene una parada en decodificador para evitar un riesgo estructural con I4, puesto
que las dos intentan acceder a la etapa de memoria en el ciclo 12.
I6 para en decodificacin (DP) para evitar un riesgo de LDE con I5.
N.o de instrucciones ejecutadas en ambos casos: 7.
N.o de ciclos del primer caso desde que se lanza la primera instruccin hasta que acaba de ejecutarse: 15.
CPI %

15
Ciclos totales
% % 2,14
7
Instrucciones totales

410

Problemas de fundamentos y estructura de computadores

N.o de ciclos del segundo caso desde que se lanza la primera instruccin hasta que
acaba de ejecutarse: 20
20
Ciclos totales
CPI %
% % 2,857
7
Instrucciones totales
Por otro lado, la opcin inicial es ms compleja de implementar puesto que tiene que
existir una lgica de deteccin y parada para cada una de las primeras etapas de las unidades de ejecucin.
PROBLEMA 7
El siguiente fragmento de cdigo se ejecuta en un procesador segmentado:
LOOP: LD F2, 0(R1)
MULTD F4, F2, F0
LD F6, 0(R2)
ADDD F6, F4, F6
LD F8, 0(R3)
ADDD F6, F8, F6
SD 0(R2), F6
ADDI R1, R1, 8
ADDI R2, R2, 8
ADDI R3, R3, 8
SGTI R4, R1, DONE
BEQZ R4, LOOP
NOP
Suponiendo que:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
Slo se dispone de lgica de cortocircuito a travs de registros de segmentacin de la
etapa de memoria a la etapa de ejecucin.
Los saltos se resuelven en la etapa de decodificacin.
Se est empleando salto retardado para eliminar las paradas por riesgo de control.
Las unidades funcionales tienen las siguientes caractersticas:
Cantidad

N.o ciclos

Segmentacin

FP ADD

No

FP MUL

No

INT ALU

No

UF

Determinar el CPI teniendo en cuenta que DONE % 0 # 1000 y R1 % 0 # 0100 al inicio de la ejecucin y explica cul es el efecto de este tipo de cortocircuito.
Solucin:

14 LD F2, 0(R1)

13 NOP

12 BEQZ R4, LOOP

11 SGTI R4, R1, DONE

10 ADDI R3, R3, 8

9 ADDI R2, R2, 8

8 ADDI R1, R1, 8

7 SD 0(R2), F6

6 ADDD F6, F8, F6

5 LD F8, 0(R3)

4 ADDD F6, F4, F6

3 LD F6, 0(R2)

2 MULTD F4, F2, F0

1 LD F2, 0(R1)

M W

FP F

M W

FP FP FP FP F

M W

FP FP FP FP F

FP FP FP F DP DP DP DP D

F DP DP DP D E1 E2 E3 E4 M W

F DP DP DP DP D E1 E2 E3 E4 M W

M W

M W

F D E M

F DP DP D E M W

M W

M W

M W

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

F DP D E1 E2 E3 E4 E5 M W

F D E

1 2

Captulo 11 Procesadores segmentados

411

412

Problemas de fundamentos y estructura de computadores

Las instrucciones que paran en la etapa de bsqueda (FP) lo hacen porque la instruccin
anterior est parada en la etapa de decodificacin (DP).
I2 para debido a la dependencia de LDE con I1.
Fijarse que entre I3 y I4 no aparece un riesgo de EDE aunque los dos escriben sobre el
mismo registro. Esto se debe a que I3 es ms corta que I4 y por lo tanto el riesgo desaparece, pero aun en el caso que I3 fuera ms larga que la 4 no habra riesgo puesto que
entre 3 y 4 hay una dependencia de LDE y esto deshace los riesgos de EDE.
I4 tiene paradas por la dependencia de LDE con I2. Recuerda que el nico cortocircuito
que existe es de la etapa de memoria a la etapa de ejecucin. Esta es la razn por la que
la parada dura un ciclo ms.
I6 para por dependencia de LDE con I4.
I7 para debido a su dependencia LDE con I6. En este caso se supone que STORE espera
a tener todos los valores que necesita para empezar a ejecutarse.
I12 tiene dos paradas, puesto que necesita el valor del registro R4 para calcular la condicin de salto, y este valor slo se le puede pasar desde la etapa de memoria de la instruccin anterior.
La ltima instruccin, en gris, corresponde a la ejecucin del siguiente bucle.
CPI %

27
Ciclos totales
% % 2,25
Instrucciones totales 12

En general, se puede decir que para todas las dependencias LDE aparece una parada ms
puesto que el dato se enva un ciclo ms tarde. En el caso del LOAD el nmero de paradas se
mantiene puesto que el dato se sigue enviando desde la etapa de memoria.
PROBLEMA 8
Imagina el procesador del problema anterior pero con cortocircuito slo desde la etapa de
ejecucin a la etapa de ejecucin.
Determinar el CPI teniendo en cuenta que DONE % 0 # 1000 y R1 % 0 # 0100 al inicio de la ejecucin.
Explica cul es el efecto de este tipo de cortocircuito.
Solucin:
Si slo hay cortocircuito de ejecucin a ejecucin, las instrucciones de LOAD no pueden entregar un dato a la etapa de ejecucin desde la etapa de memoria. Por lo tanto, la instruccin
dependiente tiene que esperar en decodificacin hasta que LOAD llega a la etapa de escritura
(ver tabla de pgina siguiente).
I2 para en decodificacin hasta que la I1 ha escrito en el banco de registros y puede leer
el dato. Esta lectura se realiza en el mismo ciclo de reloj que la escritura.
I4 para hasta el ciclo 10 porque adems de la dependencia con el LOAD tiene dependencia con I2.

LD F2, 0(R1)

MULTD F4, F2, F0

LD F6, 0(R2)

ADDD F6, F4, F6

LD F8, 0(R3)

ADDD F6, F8, F6

SD 0(R2), F6

ADDI R1, R1, 8

ADDI R2, R2, 8

ADDI R3, R3, 8

SGTI R4, R1, DONE

BEQZ R4, LOOP

NOP

LD F2, 0(R1)

10

11

12

13

14

1
E

M W

M W

M W

F DP DP DP D

M W

M W

FP FP

F DP DP D

M W

M W

M W

F DP DP D E1 E2 E3 E4 M W

F DP DP DP D E1 E2 E3 E4 M W

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

F DP DP D E1 E2 E3 E4 E5 M W

Captulo 11 Procesadores segmentados

413

414

Problemas de fundamentos y estructura de computadores

I6 para por las dos dependencias con las instrucciones 5 y 4 que se resuelven en el mismo ciclo de reloj.
I7 para por la dependencia con I6. Suponemos la instrucciones de STORE no inician el
clculo de su direccin efectiva hasta que tiene todos los datos para ejecutarse.
I12 para porque tiene una dependencia de LDE con la 11
CPI %

Ciclos totales
25
% % 2,08
Instrucciones totales 12

PROBLEMA 9
Supongamos un procesador en el que los accesos a la memoria cache de datos y cache de
instrucciones se han segmentado en dos etapas. La deteccin y paradas por riesgo LDE y
EDE se realizan en decodificacin. La resolucin del salto se realiza en decodificacin. El
procesador utiliza la tcnica de compilacin del salto retardado para evitar las paradas por
riesgos de control. Sabiendo que la multiplicacin en coma flotante se ejecuta en 7 ciclos y
la suma en coma flotante en tres, si el procesador ejecuta el siguiente programa:
LOAD F2,0(R1)
LOOP: MULD F4, F2, F0
ADDD F6, F4,F2
SUBI R1,R1,8
BNZ LOOP
LOAD F2,0(R1)
LOAD F4
Calcular el diagrama fase-ciclo para la ejecucin del ltimo bucle.
Solucin:
El LOAD despus de la BNZ es la instruccin que el compilador utiliza para rellenar el delay
slot del salto condicional. Por otro lado, si queremos ver cmo se ejecuta el ltimo bucle no es
suficiente ver cmo se comportan las instrucciones desde la MULT, puesto que esta instruccin tiene una dependencia LDE con la instruccin LOAD F2,0(R1) que se acaba de ejecutar.
Teniendo esto en cuenta el diagrama que queda es el que se muestra en la tabla de la pgina
siguiente.
Es importante darse cuenta de dos cosas. El comportamiento del pipeline es idntico a los
ya vistos. Las paradas se producen en la etapa de decodificacin y esas paradas se transmiten
a todas las etapas anteriores (F2 y F1) parndolas tambin. Las paradas por LDE sern mayores debido a que el pipeline es ms profundo.
I1 (en gris) corresponde a la ejecucin del penltimo bucle, es decir del ltimo salto que
se toma. Es necesaria ponerla porque I2 tiene que parar debido a la dependencia de LDE
con ella.

LOAD F2,0(R1)

MULD F4, F2, F0

ADDD F6, F4,F2

SUBI R1,R1,8

BNZ R1, LOOP

LOAD F2,0(R1)

LOAD

E M1 M2 W

10 11 12 13 14 15 16 17 18 19 20 21 22 23

E M1 M2 W

E M1 M2 W
F4 F1 F2 D

F1 F2P F2 D

E M1 M2 W

E M1 M2 W

F1P F1P F1P F1P F1P F1P F1P F1 F2 DP D

F1P F1P F1 F2P F2P F2P F2P F2P F2P F2P F2 D

F1 F2P F2P F2 DP DP DP DP DP DP DP D E1 E2 E3 M1 M2 W

F1 F2 DP DP D E1 E2 E3 E3 E4 E5 E6 E7 M1 M2 W

F1 F2 D

Captulo 11 Procesadores segmentados

415

416

Problemas de fundamentos y estructura de computadores

I2 para debido a una dependencia LDE con I1. En este caso el cortocircuito se realiza
desde la etapa M2 a la etapa E, por eso hay dos ciclos de parada.
I3 para en F2 porque I2 est parada en D. Adems, para en D por una dependencia de
LDE con 2.
I4 para en F1 porque la 3 est parada en F2, y para en F2 porque I3 est parada en D.
I5 para en F1 porque la 4 est parada en F2 y para en D porque tiene una dependencia
de LDE con 4.
I6 para en F2 porque la 5 est parada en D.
PROBLEMA 10
Sea un procesador segmentado multifuncional en el que hay un 20% de riesgos de LDE, un
5% de riesgos de escritura despus de escritura. Sabiendo que los riesgos de LDE tienen
como media 3 ciclos de penalizacin y que los riesgos de EDE se eliminan inhabilitando la
escritura de la primera instruccin, cul es el CPI de este procesador?
Solucin:
tipos de instruccin

CPI % CPIideal !

frecuenciai # penalizacini

La inhibicin de escritura no produce penalizacin, por lo tanto la nica penalizacin que


existe es la debida a los riesgos de LDE, luego el ciclo por instruccin ser:
CPI % 1 ! 0,20 # 3 % 1,6
PROBLEMA 11
Supongamos un procesador segmentado de cinco etapas en el que se ejecutan 2 aplicaciones diferentes. La aplicacin A tiene un 10% de instrucciones con una penalizacin de 1
ciclo de reloj y un 5% de instrucciones con una penalizacin de 2 ciclos de reloj. La aplicacin B tiene un 15% de instrucciones con 1 ciclo de penalizacin.
a) Cul es el ciclo por instruccin de cada una de las aplicaciones?
b) Cul es el ciclo por instruccin promedio del procesador?
Solucin:
a)
tipos de instruccin

CPI % CPIideal !

;
i

frecuenciai # penalizacini

CPIA % 1 ! 0,1 # 1 ! 0,05 # 2 % 1,2


CPIB % 1 ! 0,15 # 1 % 1,15

Captulo 11 Procesadores segmentados

417

b)
CPIMEDIO %

1,2 ! 1,15
% 1,175
2

PROBLEMA 12
Supongamos el procesador del problema anterior.
a) Cul es el SPEEDUP del procesador segmentado frente al procesador sin segmentar?
b) Cul es la eficacia del procesador segmentado real frente al procesador segmentado
ideal?
Solucin:
a) Vamos a suponer que el tiempo de ciclo es el mismo en las dos aproximaciones. Sabiendo que el SPEEDUP es el tiempo de ejecucin en la mquina primitiva partido por el
tiempo de ejecucin en la que se han metido las modificaciones, el SPEEDUP del procesador segmentado frente al procesador multiciclo es el siguiente:
N.o instrucciones # CPI
5
TIEMPOSIN SEGMENTAR
% o
%
% 4,25
SPEEDUP %
N. instrucciones X # CPI 1,175
TIEMPOSEGMENTADO
b) La eficiencia trata de medir lo que se acerca el procesador real al ideal. Es una medida
que se encuentra comprendida entre 0 y 1, cuanto ms cerca est del 1 mayor ser la
eficiencia:
1
Tiempo cpuideal
%
% 0,85
Eficiencia %
Tiempo cpureal
1,175
PROBLEMA 13
Sea un procesador segmentado en cinco etapas. Ejecutamos en este procesador una aplicacin con las siguientes caractersticas:
El 15% de las veces, las instrucciones Ii!1 tienen una dependencia de LDE con las
instrucciones Ii. El 50 %de stas corresponden a instrucciones de LOAD.
El 3% de las veces las instrucciones Ii!2 tienen dependencias de LDE con la instruccin Ii.
El 30% de las instrucciones son de bifurcacin condicional, de las cuales se toman el
25%.
Calcular los ciclos por instruccin del procesador para las siguientes caractersticas de
procesador:
a) Procesador sin tcnicas para reducir o eliminar paradas. Los saltos se resuelven en
ejecucin. Se puede escribir y leer el registro en el mismo ciclo de reloj.
b) Procesador con cortocircuito. Los saltos se resuelven en decodificacin.
c)

Los saltos se resuelven en decodificacin y se supone un HW de prediccin esttica


siempre no tomado.

418

Problemas de fundamentos y estructura de computadores

Solucin:
a) Vamos a ver las paradas por dependencias que ocurren en cada caso:
Paradas por dependencia entre Ii!1 e Ii
Ii

Ii!1

DP DP

El nmero de paradas es 2. En este primer caso los LOAD y el resto de las instrucciones con dependencia tienen el mismo nmero de paradas puesto que en todos los casos
tenemos que esperar hasta la etapa de escritura para poder leer el nuevo valor.
Paradas por dependencias entre Ii!2 e Ii
Ii

Ii!1

DP

Ii!2

En este segundo caso se produce un ciclo de parada entre Ii e Ii!2.


Paradas por bifurcacin condicional
BC

Ii!1

FP

FP

Dos ciclos de parada


Por lo tanto el CPI de este procesador ser:
tipos de instruccin

CPI % CPIideal !

frecuenciai # penalizacini

CPI % 1 ! 0,15 # 2 ! 0,03 # 1 ! 0,3 # 2 % 1,9 CPI


b) Procesador con cortocircuito y los saltos se resuelven en decodificacin. Como hay cortocircuito, slo las instrucciones que dependan de un LOAD pararn por LDE.
LOAD

Ii!1

DP

Como el clculo de la direccin y de la condicin se realiza en decodificacin slo se


produce un ciclo de parada.
BC
Ii!1

FP

Captulo 11 Procesadores segmentados

419

En este caso slo producen parada por LDE las instrucciones que dependen del LOAD:
Instrucciones que dependen del LOAD % 0,5 # 0,15 % 0,075
CPI % 1 ! 0,075 # 1 ! 0,3 # 1 % 1,375
c)

Los saltos se resuelven en decodificacin y se supone un HW de prediccin esttica


siempre no tomado. En este caso slo hay que evaluar la penalizacin por los saltos en
los que falla la prediccin. Como la prediccin es no tomado, la penalizacin se produce
cuando los fallos se toman, es decir en el 25% de los saltos. Como el 30% son saltos
entonces:
CPI % 1 ! 0,075 # 1 ! 0,3 # 0,25 # 1 % 1,15

PROBLEMA 14
Sea un procesador segmentado de cinco etapas que tiene el HW para la deteccin de riesgo
y generacin de la parada en decodificacin. La resolucin de los saltos condicionales se
realiza en decodificacin. Los riesgos de control se resuelven mediante paradas en decodificacin, y tiene implementada la tcnica de cortocircuito. Supongamos que en este procesador las etapas de ejecucin y memoria se unen. Como consecuencia el ciclo de reloj
aumenta un 30%. Hallar la relacin de velocidades entre la versin original del procesador
y la modificada. Supngase que en el 15% de los casos existen dependencias LDE entre un
LOAD y la instruccin que le sigue y que el 23% son saltos condicionales.
Solucin:
Primero vamos a ver los efectos de unir las etapas de ejecucin y de memoria.
Las dependencias entre dos operaciones aritmticas no producen paradas debido al cortocircuito.
Ii

Ii!1

D
F

EM W
D

EM W

Las dependencias entre una instruccin LOAD y una aritmtico-lgica no producen paradas, puesto que, debido a que se han unido ejecucin y memoria, el dato ya no se
entrega un ciclo tarde.
LOAD

Ii!1

D
F

EM W
D

EM W

Las instrucciones de salto no se ven afectadas por este cambio, por lo tanto se produce
una parada de 1 ciclo.
BIFURCA
Ii!1

D
FP

EM W
F

EM W

420

Problemas de fundamentos y estructura de computadores

Vamos a ver cul sera el CPI medio en los dos casos:


CPI % 1 ! 0,15 # 1 ! 0,23 # 1 % 1,38
CPI % 1 ! 0,23 # 1 % 1,23
Con esta informacin parece que la segunda implementacin es mejor. Pero tenemos que
tener en cuenta que los tiempos de ciclo son diferentes. Si suponemos Tcinicial % n el
Tcnuevo % 1,3n
Tiempo total 1.o % N # CPI # Tc % N # 1,38 # n % 1,38 . N . n
Tiempo total 2.o % N # CPI # Tc % N # 1,23 # 1,3n % 1,599 . N . n
Speedup %

1,38
% 0,83
1,599

PROBLEMA 15
Sean dos procesadores segmentados de 5 etapas. Uno de ellos realiza el clculo de la direccin efectiva y de la condicin de salto en la etapa de decodificacin, el otro lo hace en la
etapa de ejecucin, siendo en este caso la frecuencia de reloj un 15% ms rpida. En ambos casos vamos a utilizar el salto retardado para resolver los riesgos de control. El compilador que utilizamos genera un 30% de bifurcaciones condicionales. El comportamiento
del compilador es el siguiente:
El 20% de los casos no encuentra instrucciones para colocar detrs del salto retardado y por lo tanto coloca no operaciones.
El 45% de los casos encuentra una instruccin para ocupar el branch delay slot de la
bifurcacin condicional.
El 35% de los casos encuentra dos instrucciones para ocupar el branch delay slot de
la bifurcacin condicional.
Sabiendo que el ciclo por instruccin de ambas implementaciones es el mismo, indica
cul sera la mejor opcin.
Solucin:
En el primer caso, el delay slot es de una instruccin (en gris la etapa en la que se hace el
clculo de la direccin y de la condicin de salto):
BIF

Ii!1

FP

En el segundo caso, el delay slot es de 2 instrucciones (en gris la etapa en la que se hace el
clculo de la direccin y de la condicin de salto):
BIF
Ii!1

FP

FP

Captulo 11 Procesadores segmentados

421

Tiempo de CPU cuando la resolucin del salto se realiza en decodificacin.


Como slo tiene un delay slot, el 20% de los casos el compilador no encuentra una
instruccin para colocar detrs de la bifurcacin y coloca una NOP, que se considera una
penalizacin de 1 ciclo. Para el resto de los casos encuentra 1 o 2 instrucciones que son
suficientes para llenar el delay slot. Por lo tanto, slo tiene penalizacin en el caso de las
NOP. Su ciclo por instruccin es el siguiente:
CPID % 1 ! 0,3 # 0,2 % 1,06
Suponiendo que ejecuta un programa de N instrucciones y que el tiempo de ciclo es
Tdecodificacin el tiempo de ejecucin total del programa es:
TCPUdecodificacin % 1,06 # N # Tdecodificacin
Tiempo de CPU cuando la resolucin del salto se realiza en ejecucin.
En este caso el delay slot es de 2, por lo tanto ocurre lo siguiente: para el 35% de los
saltos el compilador encuentra dos instrucciones, luego estos casos no tienen penalizacin.
El 45% de los casos encuentra slo una instruccin, luego en estos casos tendr un 1 ciclo
de penalizacin, porque el otro slot tendr que llenarlo con una NOP. El 20% de los casos
no encuentra instrucciones, luego mete dos NOP y esto da lugar a dos ciclos de penalizacin. El CPI en este caso es:
CPIE % 1 ! 0,3 # (0,45 # 1 ! 0,2 # 2) % 1 ! 0,3 # 0,85 % 1,255
El tiempo de ejecucin (TCPUejecucin) de un programa con N instrucciones es:
TCPUejecucin % 1,255 # N # Tejecucin
Por otro lado, como la frecuencia del procesador con la resolucin de saltos en la etapa
de ejecucin ( fejecucin) es un 15% ms rpida que la frecuencia de un procesador con la
resolucin de saltos en la etapa de decodificacin ( fdecodificacin) podemos decir lo siguiente:
fejecucin % 1,15 # fdecodificacin r Tdecodificacin % 1,15 # Tejecucin
Sustituyendo este valor en TCPUdecodificacin
TCPUdecodificacin % 1,06 # N # Tdecodificacin % 1,06 # N # 1,15 # Tejecucin
% 1,219 # N # Tejecucin
PROBLEMA 16
Un computador tiene su ciclo de instruccin segmentado en 4 etapas; F: Bsqueda de la
instruccin, D/E: Decodificacin de la instruccin, lectura de registros y ejecucin en la
UAL, M: Acceso a memoria (LOAD y STORE), escritura del PC (Saltos) o vaca (resto),
W: Escritura de registros. El computador posee arquitectura con memorias de instrucciones y datos separadas, los riesgos por dependencias de datos los resuelve mediante la tcnica del cortocircuito, y los riesgos por dependencias de control mediante la tcnica del
salto retardado. Dada la secuencia de instrucciones siguiente, dibuja un diagrama que indique, para cada ciclo de reloj, qu instruccin y fase de la instruccin se est ejecutando:

422

Problemas de fundamentos y estructura de computadores

LOOP: LD R1,0(R3)
ADD R2,R4,R1
AND R5,R2,R4
BNEZ R2,loop suponemos que R2 ab 0
SW 0(R2),R5
ADD R4,R4,8
LD R1,24(R3)
Solucin:
Tal y como indica el enunciado se utiliza el salto retardado para evitar paradas por riesgos de
control. Como el nuevo PC se escribe en la etapa de memoria, hasta el siguiente ciclo no se
puede hacer la bsqueda como se ve en el siguiente diagrama:
BIF condicional

F D/E M

FP

I siguiente

FP

Por lo tanto el delay slot es de dos instrucciones. Sabiendo esto el diagrama fase-ciclo es:

LD R1,0(R3)

ADD R2,R4,R1

AND R5,R2,R4

BNEZ R2,SALTO

SW 0(R2),R5

ADD R4,R4,

LD R1,0(R3)

D/E

D/E

D/E

D/E

D/E

D/E

D/EP D/E
FP

10

11

I7 (sombreada) corresponde a la primera instruccin del siguiente bucle.


PROBLEMA 17
Supongamos que en una mquina segmentada en cuatro etapas las paradas vienen provocadas por los riesgos entre una instruccin Ii, y las dos sucesoras, Ii!1 e Ii!2. Supongamos
que las frecuencias de los riesgos que provocan paradas y el nmero de ciclos de parada
son los indicados a continuacin:
Instr. Ii!1 (y no i ! 2)
Instr. Ii!2

20%

2 ciclos

5%

1 ciclo

Cul es el Speedup obtenido como consecuencia de la segmentacin?

Captulo 11 Procesadores segmentados

423

Solucin:
En este caso no nos hace falta conocer en qu etapas se divide el procesador puesto que se da
toda la informacin que necesitamos para calcular el CPI:
4
% 2,10
CPI % 1 ! 0,2 # 2 ! 0,5 # 1 % 1,9 ; SPEEDUP %
1,9
PROBLEMA 18
Un computador tiene el ciclo de instruccin segmentado en 7 etapas: F1, F2: Bsqueda de
la instruccin, D: Lectura de operandos y decodificacin, E: Clculo de la direccin efectiva, operacin en la ALU y condicin de saltos, M1, M2: Acceso a memoria, W: Escritura
del resultado. La frecuencia de reloj es de 200 MHz. La mquina usa cortocircuito para
resolver los riesgos de datos.
a) Cunto vale el branch delay slot?
b) Si el compilador aplica la tcnica de la carga retardada, cunto vale el LOAD delay
slot?
Solucin:
a) Como la direccin de salto y el clculo de la condicin se realizan en la etapa de ejecucin el branch delay slot es de tres instrucciones
BIF
I siguiente

F1 F2

BD BD BD

M1 M2 W
F

b) La instruccin de LOAD propociona el dato en la segunda etapa de memoria, por lo tanto


la instruccin que espera este dato tiene que esperar dos ciclos de reloj para poder utilizar
el dato en ejecucin
LOAD
I siguiente

F1 F2

M1 M2 W

F1 F2 DP DP

PROBLEMA 19
Si el procesador del problema anterior ejecuta el siguiente fragmento de programa
ADD R1,R2,R3
SUB R4,R1,R5
ADD R6,R1,R7
SUB R8,R1,R9
ADD R10,R1,R11
SUB R12,R1,R13
ADD R14,R1,R15
Indica los cortocircuitos necesarios para resolver todos los riesgos de datos que se produzcan.

424

Problemas de fundamentos y estructura de computadores

Solucin:
Se puede observar en el programa que todas las instrucciones tienen dependencias LDE con
I1, pero no se produce ninguna parada porque estamos utilizando cortocircuitos para evitarlo.

ADD R1,R2,R3

SUB R4,R1,R5

ADD R6,R1,R7

SUB R8,R1,R9

ADD R10,R1,R11

SUB R12,R1,R13

ADD R14,R1,R15

10

11

12

F1

F2

M1

M2

F1

F2

M1

M2

F1

F2

M1

M2

F1

F2

M1

M2

F1

F2

M1

M2

F1

F2

M1

M2

F1

F2

M1

M2

13

El destino de todos los cortocircuitos es la etapa de ejecucin pero el origen vara en funcin de la etapa en la que se encuentre la instruccin que tiene que proporcionar el dato.
I2 toma el dato del registro E/M1.
I3 toma el dato del registro M1/M2.
I4 toma el dato del registro M2/W.
I5 se aprovecha de que el banco de registros se puede escribir en el primer ciclo de reloj
y leer en el segundo, por lo tanto ya no necesita cortocircuito.
El resto de las instrucciones lo leen del banco de registros durante su etapa de decodificacin.
PROBLEMA 20
Sea un procesador segmentado en las siguientes nueve etapas: F1, F2: Bsqueda de instruccin. D: Lectura de operandos y decodificacin, E1, E2, E2: Ejecucin, clculo de direccin efectiva y condicin de salto, E3: escritura del PC, M1, M2: Acceso a memoria,
WB: escritura en registro (1.er semiciclo). Sabiendo que el procesador tambin tiene implementada las tcnica del cortocircuito.
a) Si los riesgos de control se resuelven mediante paradas, cuntas paradas hay que generar para evitar el riesgo?
b) Si para la instruccin de LOAD aplica parada y cortocircuito en decodificacin cuando existen instrucciones dependientes de ella, qu casos y qu paradas habra que
meter en cada caso?
Solucin:
a)

BIF
I siguiente

F1 F2

E1 E2 E3 M1 M2 W

BD BD BD BD BD F1 F2 E1 E2 E3 M1 M2 W

El procesador tiene que generar 5 paradas para evitar los riesgos de control.

Captulo 11 Procesadores segmentados

425

b) Vamos a poner en un solo diagrama todos los casos en los que hay una instruccin que
depende del resultado del LOAD
LOAD

F1 F2

E1 E2 E3 M1 M2 W

Ii!1

F1 F2 DP DP DP DP

E1 E2 E3 M1 M2 W

Ii!2

F1 F2 DP DP DP

E1 E2 E3 M1 M2 W

Ii!3

F1 F2 DP DP

E1 E2 E3 M1 M2 W

Ii!4

F1 F2 DP

E1 E2 E3 M1 M2 W

Ii!5

F1 F2

E1 E2 E3 M1 M2 W

11.5 Problemas propuestos


PROBLEMA 1
El siguiente fragmento de cdigo se ejecuta en un procesador segmentado:
LOOP: LD F2, 0(R1)
LD F10,0(R5)
MULTD F4, F2, F0
MULTD F8,F0,F10
LD F6, 0(R2)
ADDD

F6, F4, F6

ADDD

F8, F4,F8

SD

0(R2), F6

SD

0(R6),F8

ADDI

R1, R1, 8

ADDI

R2, R2, 8

ADDI

R5,R5,8

ADDI

R6,R6,8

SGTI

R3, R1, DONE

BEQZ

R3, LOOP

NOP
Sabiendo que:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
La deteccin de riesgos LDE y parada se realiza en la etapa de decodificacin.
La deteccin de riesgos estructurales y parada se realiza en la etapa de decodificacin.
Los saltos se resuelven en la etapa de decodificacin.

426

Problemas de fundamentos y estructura de computadores

Se emplea la tcnica de compilacin salto retardado de una instruccin para reducir las
paradas por riesgo de control.
Se permite que coexista una STORE y una instruccin aritmtico-lgica en la misma
etapa.
Las unidades funcionales tienen las siguientes caractersticas:
UF

Cantidad

Latencia

Segmentada

FP ADD

No

FP MUL

No

INT ALU

No

Determinar el CPI teniendo en cuenta que done%0 # 1000 y R1%0 # 0100 al inicio de
la ejecucin y se supone que no se dispone de lgica de cortocircuito.
PROBLEMA 2
El siguiente fragmento de cdigo se ejecuta en un procesador segmentado:
LOOP: LD F2, 0(R1)
LD F10,0(R5)
MULTD F4, F2, F0
MULTD F8,F0,F10
LD F6, 0(R2)
ADDD

F6, F4, F6

ADDD

F8, F4,F8

SD

0(R2), F6

SD

0(R6),F8

ADDI

R1, R1, 8

ADDI

R2, R2, 8

ADDI

R5,R5,8

ADDI

R6,R6,8

SGTI

R3, R1, DONE

BEQZ

R3, LOOP

NOP
Suponiendo que:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
La deteccin de riesgos LDE y parada se realiza en la etapa de decodificacin.
La deteccin de riesgos estructurales y parada se realiza en la etapa de decodificacin.

Captulo 11 Procesadores segmentados

427

Los saltos se resuelven en la etapa de decodificacin.


Se emplea la tcnica de compilacin salto retardado de una instruccin para reducir las
paradas por riesgo de control.
Se permite que coexista una STORE y una instruccin aritmtico-lgica en la misma
etapa.
Las unidades funcionales tienen las siguientes caractersticas:
UF

Cantidad

FP ADD

Latencia

Segmentada

FP MUL

INT ALU

No

a) Determinar el CPI teniendo en cuenta que done % 0 # 1000 y r1 % 0 # 0100 al inicio de


la ejecucin y se supone que se dispone de lgica de cortocircuito.
b) Determinar el CPI teniendo en cuenta que done % 0 # 1000 y r1 % 0 # 0100 al inicio de
la ejecucin y se supone que no se dispone de lgica de cortocircuito.
PROBLEMA 3
Considerar los procesadores de los dos problemas anteriores. Se sabe que el procesador con
las unidades sin segmentar trabaja a una frecuencia de 500 Mhz y el procesador con las unidades segmentadas trabaja a una frecuencia de 400 MhZ. Calcular:
a) Tiempo de ejecucin del segmento de programa en cada procesador.
b) MIPS de cada procesador.
c)

Speedup del procesador con unidades segmentadas frente a unidades sin segmentar.

PROBLEMA 4
El siguiente fragmento de cdigo se ejecuta en un procesador segmentado:
LOOP: LD F2, 0(R1)
LD F10,0(R5)
MULTD F4, F2, F0
MULTD F8,F0,F10
LD F6, 0(R2)
ADDD F6, F4, F6
ADDD F8, F4,F8
SD 0(R2), F6
SD 0(R6),F8
ADDI R1, R1, 8
ADDI R2, R2, 8

428

Problemas de fundamentos y estructura de computadores

ADDI R5,R5,8
ADDI R6,R6,8
SGTI
R3, R1, DONE
BEQZ R3, LOOP
LOAD F4,67(R5)
Suponiendo que:
Un dato se puede escribir en un registro y leer su valor en el mismo ciclo.
La deteccin de riesgos LDE y parada se realiza en la etapa de decodificacin.
La deteccin de riesgos estructurales y parada se realiza en la etapa de decodificacin.
Los saltos se resuelven en la etapa de ejecucin.
Se emplea la prediccin esttica HW salto no tomado sabiendo que la prediccin acierta
el 45% de las veces.
No se permite que coexista una STORE y una instruccin aritmtico-lgica en la misma
etapa.
Las unidades funcionales tienen las siguientes caractersticas:
UF

Cantidad

Latencia

Segmentada

FP ADD

No

FP MUL

No

INT ALU

No

a) Determinar el CPI teniendo en cuenta que done % 0 # 1000 y r1 % 0 # 0100 al inicio de


la ejecucin y se supone que se dispone de lgica de cortocircuito.
b) Determinar el CPI teniendo en cuenta que done % 0 # 1000 y r1 % 0 # 0100 al inicio de
la ejecucin y se supone que no se dispone de lgica de cortocircuito.
PROBLEMA 5
Suponiendo las caractersticas de los procesadores del problema anterior:
a) Sabiendo que la frecuencia es la misma para los dos procesadores, calcular el speedup del
procesador con cortocircuito, frente al que no usa cortocircuito.
b) Calcular el CPI para los dos casos suponiendo que soluciona los riesgos de control mediante prediccin esttica de HW siempre tomado, sabiendo que acierta el 88% de las
veces.
PROBLEMA 6
Supongamos que la versin bsica de un procesador segmentado en cinco etapas para operaciones enteras se modifica de la siguiente forma:
Las etapas DEC y EX se funden en una sola.
Como consecuencia la duracin del ciclo de reloj debe incrementarse en un 45%.

Captulo 11 Procesadores segmentados

429

Hallar la relacin de velocidades entre la versin original del procesador y la modificada.


Supngase que el 13% de las instrucciones son de carga seguidas de un uso inmediato del
operando cargado, y que el 35% son saltos condicionales donde la poltica de tratamiento de
saltos no permite realizar trabajo til en el delay slot.
PROBLEMA 7
Consideremos la organizacin bsica de un procesador segmentado en 5 etapas con una carga
de trabajo tal que:
En el 23% de los casos la instruccin i ! 1 presenta una dependencia LDE respecto de
la i. En el 18% de estas situaciones la instruccin i es de LOAD.
En el 11% de los casos la instruccin i ! 2, pero no la i ! 1, presenta una dependencia
LDE respecto de la i. En el 9% de los casos la instruccin i es de LOAD.
En el 2% de los casos la instruccin i ! 3, pero no la i ! 2, ni la i ! 1, presentan una
dependencia LDE respecto de la i.
El 25% de las instrucciones son de salto y el 40% de los saltos se toman.
a) Determinar en promedio el nmero de ciclos de reloj que se precisan para ejecutar cada
instruccin, en cada uno de los siguientes supuestos.
b) Si adems se aade el HW necesario para resolver los saltos en la etapa de decodificacin y se asume la prediccin de que los saltos no se toman.
c)

Si con la estructura HW del apartado anterior, se implementa una poltica de saltos retardados, donde en el 60% de los casos el hueco de retardo (delay slot) se rellena con una
instruccin. De stas no se deberan haber ejecutado el 35%. En el resto de casos lo rellena con NOP.

PROBLEMA 8
Supongamos un procesador en el que los accesos a la memoria cache de datos y cache de
instrucciones se han segmentado en tres etapas. Las lecturas de datos y de instrucciones se
pueden realizar en la etapa 2 de memoria, mientras que la escritura se realiza en la etapa 3. La
deteccin y paradas por riesgo LDE y EDE se realizan en decodificacin. La resolucin del
salto se realiza en ejecucin. El procesador utiliza la tcnica de salto retardado para evitar, en
la medida de lo posible, las paradas por riesgos de control. Sabiendo que la multiplicacin en
coma flotante se ejecuta en cuatro ciclos y la suma en coma flotante en dos, si el procesador
ejecuta el siguiente programa:
LOAD F2,0(R1)
LOOP: MULD F4, F2, F0
ADDD F6, F4,F2
SUBI R1,R1,8
BNZ LOOP
LOAD F2,0(R1)
LOAD F4
Calcular el diagrama fase-ciclo para la ejecucin del ltimo bucle.

430

Problemas de fundamentos y estructura de computadores

PROBLEMA 9
Supongamos que la versin bsica de un procesador segmentado en cinco etapas para operaciones enteras en el que las etapas EX y MEM se funden en una sola. Como consecuencia la
duracin del ciclo de reloj debe incrementarse en un 35%.
Hallar la relacin de velocidades entre la versin original del procesador y la modificada.
Supngase que en el 14% de las instrucciones son de carga seguidas de un uso inmediato del
operando cargado, y que el 17% de las instrucciones son saltos condicionales donde la poltica de tratamiento de saltos no permite realizar trabajo til en el delay slot.
PROBLEMA 10
Consideremos la organizacin bsica de un procesador segmentado en 5 etapas, en donde cada etapa opera en un ciclo de reloj. Supongamos que su carga de trabajo es tal que:
En el 38% de los casos la instruccin i ! 1 presenta una dependencia LDE respecto de
la i. En el 10% de estas situaciones la instruccin i es de LOAD.
En el 13% de los casos la instruccin i ! 2, pero no la i ! 1, presenta una dependencia
LDE respecto de la i. En el 50% de los casos la instruccin i es de LOAD.
En el 5% de los casos la instruccin i ! 3, pero no la i ! 2, ni la i ! 1, presentan una
dependencia LDE respecto de la i.
El 25% de las instrucciones son de salto y el 40% de los saltos se toman.
Determinar en promedio el nmero de ciclos de reloj que se precisan para ejecutar cada
instruccin, en los siguientes supuestos:
a) Con la organizacin bsica del procesador (sin anticipacin de operandos, ni aceleracin
de saltos y bloque de registros disponible en ciclo siguiente a la escritura).
b) Si se modifica la estructura bsica para implementar la anticipacin de operandos (cortocircuito).
c)

El procesador tiene el HW necesario para resolver los saltos en la etapa de decodificacin


y se asume la prediccin de que los saltos no se toman (predict-not-taken).

d) Si con la estructura HW del apartado anterior, se implementa una poltica de saltos retardados, donde en el 63% de los casos el hueco de retardo (delay slot) se rellena con una
instruccin previa al salto, en el 28% con una instruccin del destino del salto y en el
resto con NOP.

El sistema de memoria es el lugar donde residen los programas y datos ya que segn la arquitectura Von Neumann un programa debe estar almacenado en memoria para poder ser ejecutado. El sistema de memoria se organiza de manera jerrquica de forma que se tenga un sistema de alta capacidad y velocidad prxima a la de los dispositivos ms rpidos y un coste
cercano al de los dispositivos ms lentos y baratos, tal y como muestra la figura siguiente:

Jerarqua de memoria. Relacin coste, capacidad y tiempo de acceso.

El hecho de encontrar (acierto) o no encontrar (fallo) un elemento en un determinado nivel de la jerarqua determinar la bondad y el rendimiento del sistema completo.
Para aumentar el rendimiento de la memoria principal se debe aumentar el ancho de banda
de la misma. Los mecanismos generales para aumentar el ancho de banda de memoria se
muestran en la siguiente figura:

432

Problemas de fundamentos y estructura de computadores

Aumento del rendimiento de memoria.

Estos mecanismos son: (a) reduccin de su tiempo de acceso, (b) aumento del tamao de
palabra y (c) permitir el acceso concurrente a varios mdulos de memoria mediante una organizacin entrelazada.

12.1 Propiedades de la jerarqua de memoria


Inclusin: Cualquier informacin almacenada en el nivel de memoria Mi, debe encontrarse
tambin en los niveles Mi!1, Mi!2, ..., Mn.
Coherencia: Las copias de la misma informacin existentes en los distintos niveles deben ser
consistentes, es decir, si un bloque de informacin se modifica en el nivel Mi, deben actualizarse los niveles Mi!1, ..., Mn. Esto se consigue mediante dos mtodos:
Escritura directa (write-through): Cuando una palabra se modifica en el nivel Mi,
inmediatamente se actualiza en el nivel Mi!1.
Post-escritura (write-back): La actualizacin del nivel Mi!1 se retrasa hasta que el
bloque que se modific es reemplazado o eliminado en el nivel Mi.
Localidad: La propiedad de localidad dice que las referencias a memoria generadas por la
CPU, para acceso a datos o a instrucciones, estn concentradas o agrupadas en ciertas regiones del tiempo y del espacio.
Localidad temporal: Si se referencia un elemento, ste tender a ser referenciado en un
corto intervalo de tiempo.
Localidad espacial: Si se referencia un elemento, los elementos cercanos a l tendern
a ser referenciados tambin.
Se denomina bloque a la unidad mnima de transferencia entre los dos niveles.

Captulo 12 Memoria

433

Se produce un acierto (hit) si el dato solicitado est en el nivel i. Se conoce como tasa de
aciertos (hit ratio) a la fraccin de accesos encontrados en el nivel i. El tiempo de acierto es
el tiempo de acceso del nivel i ! el tiempo de deteccin de acierto.
De la misma forma se produce un fallo (miss) cuando el dato solicitado no est en el nivel
i y es necesario buscarlo en el nivel i ! 1. La tasa de fallos (miss ratio) es 1 . tasa de aciertos. El tiempo de penalizacin por fallo es el tiempo de sustitucin de un bloque del nivel
i ! tiempo de acceso al dato.
Se cumple que, en un sistema de memoria formado por dos niveles, Memoria Cache (MC)
y Memoria Principal (MP), el tiempo medio de acceso viene dado por la siguiente expresin:
tacc % h # tc ! (1 . h) # (tc ! tp)
Donde h es la tasa de aciertos en la MC, tc es el tiempo de acceso a MC y tp es el tiempo
de acceso a MP.
En una jerarqua con varios niveles, el tiempo de acceso viene dado por la siguiente frmula:
n

tacc % ; (1 . h(Li.1)) # ti
i%1

Donde h(Li.1) es la razn de aciertos en el nivel i . 1 y ti es el tiempo de acceso en el


nivel i.
Cuando se produce un fallo, no slo se transfiere la palabra necesaria, sino que se transfiere todo un bloque. Esto se realiza en favor de los principios de localidad espacial y temporal.

12.2 La memoria cache


La memoria cache es una memoria pequea y rpida situada entre el procesador y la memoria
principal. Almacena una copia de la porcin de informacin actualmente en uso de la memoria. Su objetivo es disminuir el tiempo de acceso al sistema global de memoria.
La figura siguiente muestra la estructura del sistema MC/MP, as como el formato de la
Direccin Fsica (DF):

Estructura del sistema MC-MP.

434

Problemas de fundamentos y estructura de computadores

As, la MP est formada por 2n palabras direccionables, dividida en nB bloques de tamao


fijo de 2k palabras por bloque.
La MC, en cambio, est formada por nM marcos de bloque de 2k palabras cada uno
(nM @ nB). El directorio de memoria cache indica qu subconjunto de los nB bloques residen
en los nM marcos de bloque.
En el diseo de la MC se debe tener en cuenta la optimizacin de los siguientes parmetros: probabilidad de acierto, tiempo de acceso efectivo, retardos debidos a fallos y mantenimiento de la correspondencia entre bloques de MP y MC. Para ello se deben definir adecuadamente y tener en cuenta las polticas y parmetros siguientes:
Poltica de emplazamiento: determina la correspondencia entre bloques de MP y MC. Dichas polticas son:
Emplazamiento directo: Cada bloque B tiene asignado un nico marco M en donde
ubicarse. Este marco viene dado por la expresin: M % B mod nM. Si nM % 2m entonces M % (m bits menos significativos de B). En este caso el directorio almacena para
cada marco una etiqueta con los n-k-m bits que completan la direccin del bloque almacenado. El acceso al marco y al directorio es directo. Para conocer si un bloque est
cargado en MC, basta con comparar las etiquetas.
Emplazamiento asociativo: Cada bloque B puede ubicarse en cualquier marco M (tambin se denomina va). El directorio guarda para cada marco una etiqueta con los n-k
bits que identifican al bloque almacenado. El acceso al marco y al directorio es asociativo. Para conocer si un bloque est cargado, la MC compara la etiqueta dada con todas
las etiquetas del directorio.
Emplazamiento asociativo por conjuntos: La MC est dividida en nC conjuntos de
nM/nC marcos cada uno. Cada bloque B tiene asignado un conjunto fijo C y puede ubicarse en cualquiera de los marcos que componen dicho conjunto. Este conjunto viene
dado por la expresin: C % B mod nC. Si nC % 2m entonces C % (m bits menos significativos de B). El directorio almacena para cada marco una etiqueta con los n-k-m bits
que completan la direccin del bloque almacenado. El acceso al conjunto es directo y al
marco dentro del conjunto asociativo.

Formatos de direccin fsica con respecto a las distintas polticas de emplazamiento en memoria cache.

Poltica de sustitucin: Determina qu bloque abandona MC para dejar espacio a otro de MP


cuando no existe espacio libre para este bloque en MC. As, se define espacio de reemplaza-

Captulo 12 Memoria

435

miento al conjunto de posibles bloques que pueden ser sustituidos por el nuevo bloque. Las
polticas ms usadas son:
Directa: El bloque que reside en marco que el nuevo bloque tiene asignado. Al no existir alternativas no se requieren algoritmos de sustitucin.
Asociativa: Se sustituye cualquier bloque que resida en la MC.
Asociativa por conjuntos: Se sustituye cualquier bloque que resida en el conjunto que
el nuevo bloque tiene asignado.
Mediante algoritmo: Los algoritmos ms usados son (1) aleatorio, donde se escoge un
bloque del espacio de reemplazamiento al azar, (2) FIFO, en que se sustituye el bloque
del espacio de reemplazamiento que lleve ms tiempo cargado, (3) LRU (least recently
used), donde se sustituye el bloque del espacio de reemplazamiento que lleve ms tiempo sin haber sido referenciado, y (4) LFU (least frequently used), en que se sustituye el
bloque que haya sido referenciado en menos ocasiones.
Poltica de actualizacin: Es necesaria para mantener la coherencia entre la MC y la MP.
Determina cundo se actualiza un bloque de la MP si ste ha sido previamente modificado en
la MC. Existen dos alternativas:
Escritura inmediata (write-through): Cada vez que se hace una escritura en la MC se
actualiza inmediatamente la MP. Existen dos variantes en funcin de lo que sucede en
caso de fallo de escritura: (a) con asignacin en escritura, es decir, un bloque se carga
en MC como consecuencia de fallos de lectura y escritura, y (b) sin asignacin en escritura, donde un bloque se carga en MC solamente como consecuencia de fallos de
lectura, lo fallos de escritura no cargan bloque y acceden directamente a MP.
Post-escritura (write-back): La MP se actualiza slo cuando se reemplaza el bloque.
En MC se cargan bloques tanto por fallos de lectura como de escritura. Por lo tanto, se
utiliza un bit de actualizacin por bloque que indica si debe actualizarse en MP, de forma que cuando se realiza una escritura se activa y cuando se realiza una sustitucin se
comprueba si est activado o no.
Poltica de bsqueda: Determina qu bloques (y en qu momento) deben cargarse en MC.
Bsqueda por demanda: Un bloque se trae a MC cuando se necesita, es decir, como
consecuencia de un fallo.
Bsqueda anticipativa: Un bloque se trae a MC antes de que se necesite para reducir la
tasa de fallos. Lo ms comn es elegir el bloque siguiente al referenciado (one block
lookahead). Existen dos variantes, a saber, (1) pre-bsqueda por fallo, donde si se produce un fallo al acceder a un bloque se buscan dicho bloque y el siguiente, y (2) prebsqueda siempre, en la que la primera vez que se referencia un bloque se pre-busca el
siguiente.
Organizacin de la cache: En cuanto al tamao de la MC y sus bloques, aumentar el tamao
del bloque hace que aumente la tasa de aciertos, por la localidad espacial y que disminuya el
nmero de bloques en MC por la localidad temporal. Mientras, disminuir el tamao del bloque hace que disminuya la cantidad de trfico de informacin entre MC y MP. Respecto a la
unicidad y homogeneidad de la MC, las instrucciones presentan localidad temporal y los datos
espacial; tener dos caches separadas una para datos y otra para instrucciones permite el acceso
simultneo a instrucciones y datos (aumenta la velocidad) y definir las polticas ms adecuadas para cada una de ellas. Finalmente, en cuanto a caches de uno o dos niveles, existe una

436

Problemas de fundamentos y estructura de computadores

mejora de las prestaciones con una MC de dos niveles. Normalmente el primer nivel de MC
se encuentra integrado en el procesador lo que elimina el acceso al bus y disminuyen los tiempos de ejecucin.

12.3 Memoria virtual


El objetivo es dar la impresin de que el computador dispone de una memoria ilimitada. Para
ello combina dos dispositivos de almacenamiento de diferente capacidad, velocidad y coste.
La Memoria Virtual (MV) separa los conceptos de direcciones lgicas o virtuales (capacidad
de direccionamiento) y direcciones fsicas (la memoria instalada). La siguiente figura muestra
un esquema de traduccin de MV a MP. El procesador trabaja con la memoria principal, pero
sus direcciones pertenecen a la memoria virtual.

Traduccin de direcciones virtuales.

Por lo tanto, la traduccin es necesaria debido a que los programas generan direcciones
lgicas (virtuales) pero para la ejecucin se necesitan direcciones fsicas.
Traduccin de direcciones: Existen tres alternativas.
Memoria virtual paginada
El espacio virtual de direcciones se divide en pginas de tamao fijo. El espacio fsico de
direcciones se divide en marcos de pgina del mismo tamao que una pgina. El esquema de
traduccin de direcciones se muestra en la figura de la pgina siguiente.
En este caso existen varios mecanismos de traduccin:
Traduccin directa: Existe una Tabla de Pginas (TP) por cada proceso con una entrada por cada pgina que nos dice si la pgina est en MP y en qu marco est ubicada.
Cada proceso tiene un registro base que seala a su TP.
Traduccin asociativa: El objetivo es reducir el tamao de la TP. Slo es necesario
mantener una entrada en la TP para aquellas pginas que estn en MP, es decir, la TP
tiene una entrada por cada marco de pgina en MP.

Captulo 12 Memoria

437

Memoria virtual paginada. Traduccin de direcciones.

Traduccin mixta: Se pretende reducir el tamao de la tabla asociativa para reducir su


coste. Para ello se mantiene una pequea tabla asociativa con las pginas ms activas,
llamada TLB (Translation Lookaside Buffer). Por otro lado se debe guardar la TP completa para traducir una direccin cuya entrada no se encuentre en la TLB.
Traduccin a varios niveles: El objetivo en este caso es resolver el problema del almacenamiento de la TP. Para ello se divide la TP en varias pginas. Algunas pginas de la
TP pueden residir en MP (no necesariamente contiguas), mientras que el resto de pginas pueden residir en Memoria Secundaria (MS). Con esto se utiliza una tabla de directorios que almacena las direcciones de comienzo de las pginas de la TP. Esta tabla se
almacena en MP. Por lo tanto, la direccin virtual se divide en tres campos: DV % (N.o
de Directorio, N.o de Pgina, Desplazamiento). Este mecanismo se puede combinar con
el uso de una TLB con las pginas ms activas.
Memoria virtual segmentada
El espacio virtual de direcciones se divide en segmentos de tamao variable. La siguiente
figura muestra un esquema del mecanismo de traducciones

Memoria virtual segmentada. Traduccin de direcciones.

438

Problemas de fundamentos y estructura de computadores

El mecanismo de traduccin es el de traduccin directa, donde cada proceso almacena


una Tabla de Segmentos (TS) que contiene una entrada por cada posible segmento del proceso. La entrada S-sima de la TS contiene la direccin inicial de MP donde comienza el segmento S (si est en MP). Cada proceso guarda en un registro la direccin inicial de la TS.
Memoria virtual segmentada/paginada
El espacio virtual de direcciones se divide en segmentos de tamao variable. Cada segmento
est compuesto por un nmero variable de pginas de igual tamao. El espacio fsico de direcciones se divide en marcos de pgina del mismo tamao que una pgina.

Memoria virtual segmentada/paginada. Traduccin de direcciones.

Los mecanismos de traduccin son:


Traduccin directa: Cada entrada de la TS almacena la direccin de comienzo de la
tabla de pginas (TP) de ese segmento. La TP del segmento S contiene una entrada por
cada pgina P de ese segmento. Cada proceso mantiene una tabla de segmentos (TS).
Traduccin mixta: Se mantiene una pequea tabla asociativa (TLB) con las pginas
ms activas. Por otro lado debemos guardar la TS (en MP) y las TPs de los distintos
segmentos (en MP o MS) para traducir las direcciones cuya entrada no se encuentre en
la TLB.

12.4 Problemas resueltos


PROBLEMA 1
Determinar el tiempo medio de acceso a un sistema de memoria formado por una memoria
cache (MC), con un tiempo de acceso de 10 ns, y una memoria principal (MP) con un
tiempo de acceso de 60 ns. La probabilidad de acierto de la memoria cache es del 70%.

Captulo 12 Memoria

439

Solucin:
En un sistema de memoria formado por dos niveles (MC y MP), el tiempo medio de acceso
viene dado por la expresin:
tacc % h # tc ! (1 . h) # (tc ! tp)
Donde h es la tasa de aciertos en la MC, tc es el tiempo de acceso a MC y tp es el tiempo
de acceso a MP.
En nuestro caso, h % 0,7, tc % 10 ns y tp%60 ns, por lo tanto:
tacc % 0,7 # 10 ! (1 . 0,7) # (10 ! 60) % 28 ns
PROBLEMA 2
Un sistema jerrquico de memoria est formado por los siguientes niveles:
tacc

Tamao

Coste

Memoria cache (MC)

5 ns

512 KB

50 e/MB

0,95

Memoria principal (MP)

50 ns

128 MB

0,4 e/MB

0,99999995

Disco magntico

10 ms

20 GB

0,01 e/MB 1,00

a) Calcular el tiempo medio de acceso para dicho sistema.


b) Calcular el coste medio, en e/MB, del mismo.
c)

Comentar los resultados obtenidos.

Solucin:
a) En una jerarqua con varios niveles, el tiempo de acceso viene dado por la siguiente frmula:
n

tacc % ; (1 . h(Li.1)) # ti
i%1

Donde h(Li.1) es la razn de aciertos en el nivel i . 1 y ti es el tiempo de acceso en


el nivel i.
En este caso tenemos tres niveles, con sus respectivos tiempos de acceso y razn de
aciertos. Teniendo en cuenta que h(L0) % 0, ya que el nivel cero no existe, podemos sustituir los datos en la ecuacin anterior, obteniendo:
tacc % 1 # 5 # 10.9 ! 0,05 # 50 # 10.9 ! 0,00000005 # 10 # 10.8 % 8 ns
b) El coste medio vendr dado por el coste total de la memoria (en euros) dividido por el
tamao total de sta (en MB):
Coste total
Coste medio %
Tamao

440

Problemas de fundamentos y estructura de computadores

Coste medio%
c)

0,5#50!128#0,4!20#1.024#0,01
281 e
%
%0,0136 e/MB
0,5!128!20#1.024
20.608,5 MB

Empleando una jerarqua de memoria obtenemos un sistema con una capacidad total del
orden del tamao del disco magntico, con un tiempo medio de acceso prximo al de la
memoria ms rpida (memoria cache) y con un coste medio por MB prximo al de la
memoria ms barata (disco magntico).

PROBLEMA 3
Sea una memoria principal de 1 Mpalabras de tamao con unos tiempos de acceso de 100
ns y dividida en bloques de 2 palabras. Sabiendo que el sistema tiene una memoria cache
asociativa por conjuntos de 28 palabras, un grado de asociatividad de 4 y un tiempo de
acceso de 10 ns, calcular:
a) Nmero de bits de la direccin fsica.
b) Nmero de conjuntos de la memoria cache.
c)

Formato de las direcciones de memoria cache.

d) Mejora del rendimiento del sistema si la tasa de fallos es del 25%.


Solucin:
a) Si la memoria tiene un tamao de 1 Mpalabras necesitaremos acceder a 220 posiciones y
por tanto el ancho de direcciones fsicas es de 20 bits.
b) Como el grado de asociatividad es 4, disponemos de 4 bloques por conjunto.
Dado que la MC disponde de 28 marcos de bloque, el nmero de conjuntos ser:
nC %

c)

28 palabras
% 25 conjuntos % 32 conjuntos
marcos
palabras
2
2
#2
conjunto
marco

Para acceder a 32 conjuntos necesitamos 5 bits, para diferenciar entre 2 palabras/bloque


un nico bit, por lo tanto la etiqueta ser de 20 . 5 . 1 % 14 bits y el formato quedar:

d) El rendimiento sin memoria cache ser de 100 ns para cada acceso. Si incorporamos la
memoria cache ser:
tacc % 0,75 # 10 ns ! (1 . 0,75) # (10 ns ! 100 ns) % 35 ns
Que representa un 35% del tiempo original.

Captulo 12 Memoria

441

PROBLEMA 4
La memoria cache de una mquina tiene un tiempo de acceso de 5 ns, siendo el tiempo de
acceso de la memoria principal de 50 ns. Se supone que el 30% de las peticiones de acceso
son para escritura y el resto para lectura. Si la razn de aciertos de la memoria cache es de
0,80 y se emplea una poltica de actualizacin inmediata (write-through), calcular:
a) El tiempo medio de acceso teniendo en cuenta slo los ciclos de lectura.
b) El tiempo medio de acceso si se tienen en cuenta tambin los ciclos de escritura.
Solucin:
a) Sabemos que el tiempo medio de acceso (en este caso lectura) viene dado por:
tlec % h # tc(1 . h) # (tc ! tp)
Donde h es la tasa de aciertos en la MC, tc es el tiempo de acceso a MC y tp es el
tiempo de acceso a MP. Por lo tanto, segn los datos del enunciado, tenemos
tlec % 0,8 # 5 ! (1 . 0,8) # (5 ! 50) % 15 ns
b) Es fcil deducir que el tiempo medio de lectura/escritura ser:
tlec/esc % Prob. lectura # tlec ! Prob. escritura # tesc
De los datos del enunciado tenemos:
Probabilidad de acceso de lectura: 0,70.
Probabilidad de acceso de escritura: 0,30.
tlec % 15 ns, del apartado a).
tesc % 50 ns, dado que se escribe a la vez en memoria principal y en memoria cache
(poltica de escritura inmediata).
Por lo tanto:
tlec/esc % 0,70 # 15 ! 0,30 # 50 % 25,50 ns
PROBLEMA 5
Los parmetros que definen la memoria de un computador son los siguientes:
Memoria principal (MP): 8 Kbloques.
Memoria cache (MC): 512 bloques.
Bloque: 8 bytes.
Determinar el formato de las direcciones fsicas en los siguientes supuestos:
a) Emplazamiento directo.
b) Emplazamiento asociativo.
c)

Emplazamiento asociativo por conjuntos, con 16 bloques por conjunto.

442

Problemas de fundamentos y estructura de computadores

Solucin:
En primer lugar, calculamos los parmetros del sistema de memoria, suponemos que la unidad direccionable es el byte.
Memoria principal:
Direccin: 8 Kbloques # 8 bytes/bloque % 64 KB % 26 # 210 bytes % 216 bytes.
Nmero de bloques en la MP: nB % 8 Kbloques % 213 bloques.
Tamao de bloque: 8 bytes % 23 bytes.
Con lo que el formato de direcciones es:

Memoria cache:
Tamao: 521 bloques # 8 bytes/bloque % 4 KB % 212 bytes.
Nmero de marcos de bloque en la MC: nM % 512 marcos de bloque % 29 marcos de bloque.
Con estos parmetros podemos resolver los distintos apartados del problema.
a) Un bloque B de la memoria principal se carga siempre sobre el marco de bloque M % B
mod nM de la memoria cache. Una direccin de n % 16 bits de la MP se interpreta de la
siguiente manera:
Campo palabra (P): como un marco de bloque contiene 23 bytes, este campo es de 3 bits.
Campo marco de bloque (M): al disponer de 29 marcos en MC, este campo es de 9 bits.
Etiqueta: Ser el nmero de bits restante de la direccin de MP, esto es 16.3.9%4 bits.

b) Un bloque B de MP puede cargarse en cualquier marco de bloque M de MC. Los 16 bits


de direccin se reparten en 3 bits para el byte dentro del bloque y el resto (13 bits) se
reservan para la etiqueta, por lo tanto el formato queda:

c)

En este caso se dispone en MC de 16 bloques por conjunto. Como la memoria cache


dispone de un total de 512 bloques, el nmero de conjuntos en MC es:
nC %

512 bloques
% 32 conjuntos % 25 conjuntos
bloques
16
conjunto

Captulo 12 Memoria

443

Se reservan entonces 3 bits para la palabra, 5 bits para el conjunto y el resto


(16 . 5 . 3 % 8) para la etiqueta.

PROBLEMA 6
Un computador posee una memoria principal (MP) de 256 MB y una memoria cache (MC)
de 128 KB. Los datos se transfieren entre MP y MC en bloques de 8 B. Determinar el
tamao de los diferentes campos que conforman una direccin fsica en cada uno de los
siguientes supuestos:
a) Emplazamiento directo.
b) Emplazamiento asociativo.
c)

Emplazamiento asociativo por conjuntos de dos vas.

Solucin:
En primer lugar, calculamos los parmetros del sistema de memoria, suponemos que la unidad direccionable es el byte.
Memoria principal:
Direccin: 256 MB % 28 # 220 bytes % 228 bytes. Tenemos por tanto 28 bits de direccin.
Tamao de bloque: 8 bytes % 23 bytes.
Nmero de bloques en la MP: nB % 256 MB / 8 B/bloque % 32 Mbloques % 225 bloques.
Con lo que el formato de direcciones es:

Memoria cache:
Tamao: 128 KB % 217 bytes.
Nmero de marcos de bloque en la MC: nM % 128 KB / 8 B/bloque % 16 Kbloques %
% 214 bloques.
Con estos parmetros podemos resolver los distintos apartados del problema.
a) Un bloque B de la memoria principal se carga siempre sobre el marco de bloque M % B
mod nM de la memoria cache. Una direccin de n % 28 bits de la MP se interpreta de la
siguiente manera:
Campo palabra (P): como un marco de bloque contiene 23 bytes, este campo es de 3 bits.
Campo marco de bloque (M): al disponer de 214 marcos en MC, este campo es de 14 bits.
Etiqueta: Ser el nmero de bits restante de la direccin de MP, esto es 28.14.3%11 bits.

444

Problemas de fundamentos y estructura de computadores

b) Un bloque B de MP puede cargarse en cualquier marco de bloque M de MC. Los 28 bits


de direccin se reparten en 3 bits para el byte dentro del bloque y el resto (25 bits) se
reservan para la etiqueta, por lo tanto el formato queda:

c) En este caso se dispone en MC de 2 bloques por conjunto (2 vas). Como la memoria


cache dispone de un total de 214 bloques, el nmero de conjuntos en MC es:
214 bloques
% 213 conjuntos
nC %
bloques
2
conjunto
Se reservan entonces 3 bits para la palabra, 13 bits para el conjunto y el resto
(28 . 13 . 3 % 12) para la etiqueta.

PROBLEMA 7
Una memoria cache con emplazamiento asociativo por conjuntos dispone de un total de 64
bloques divididos en conjuntos de 4 bloques cada uno. La memoria principal dispone de
1.024 bloques con 16 palabras por bloque. Cuntos bits se necesitan para los campos etiqueta, conjunto y palabra de la direccin de memoria principal?
Solucin:
Memoria principal:
Tamao: 1.024 bloques # 16 palabras/bloque % 16 Kpalabras % 214 palabras r 14 bits.
Tamao de bloque: 16 palabras % 24 r 4 bits.
Nmero de bloques: nB % 1.024 bloques % 210 bloques r 10 bits.
Memoria cache:
Nmero de conjuntos: nC % 64 bloques / 4 bloques/conjunto % 16 conjuntos % 24 conjuntos r 4 bits.

Captulo 12 Memoria

445

El formato de direccin es:

El campo conjunto ser de 4 bits, mientras que el campo palabra ser tambin de 4 bits. El
campo etiqueta ser por tanto de 14 . 4 . 4 % 6 bits, tal como muestra la siguiente figura:

PROBLEMA 8
Sea un computador con una MP de 1 MB y dotado con una MC de 16 marcos de bloque de
64 bytes cada uno.
a) Determinar el formato de la direccin de memoria fsica desde el punto de vista de la
poltica de ubicacin en memoria cache, especificando el nmero de bits que ocupa
cada uno de los campos que la componen para los siguientes casos: (1) emplazamiento
directo, (2) asociativo y (3) asociativo por conjuntos con 4 bloques por conjunto.
b) Si se utiliza una poltica de sustitucin LRU (implementada por registros de edad),
calcular el nmero total de bits necesarios para implementar la MC en cada uno de los
casos anteriores (incluyendo datos, etiquetas y registros de edad).
Solucin:
a.1) Emplazamiento directo
En el caso de emplazamiento directo puro, cada bloque de memoria principal puede
ubicarse nicamente en un marco de bloque de cache concreto, dado por la expresin B
mod nM.
Por tanto el campo de marco de bloque en cache est formado por los bits que hacen falta para representar todos los bloques de cache. En este caso se indica que hay 16
marcos de bloque, por lo que se requieren 4 bits para representarlos en cache. El resto
de bits de la direccin de memoria, tras descontar los que son utilizados para indicar el
desplazamiento dentro de un bloque para acceder a una palabra (6 bits), son utilizados
para la etiqueta. En el caso que nos ocupa son 20 . 4 . 6 % 10 bits, y la representacin global de memoria principal para la cache que queda entonces es:

a.2) Emplazamiento asociativo


En el caso de emplazamiento asociativo puro, cualquier bloque de memoria principal
puede ubicarse en cualquier marco de bloque de cache, por tanto la etiqueta de marco

446

Problemas de fundamentos y estructura de computadores

de bloque en cache est formada por todo el conjunto de bits que no sean utilizados
para indicar el desplazamiento dentro de un bloque para acceder a una palabra. De este
modo, ya que los bloques son de 64 bytes, se requieren 6 bits para acceder a la palabra
y el resto de bits de la direccin de memoria principal (20 . 6 % 14 bits) se utilizan
para la etiqueta. La representacin de memoria principal para la cache queda:

a.3) Emplazamiento asociativo por conjuntos con 4 bloques por conjunto


En este caso, hay 4 posibles conjuntos, ya que hay 16 marcos y en cada conjunto hay 4
bloques. Por lo tanto el campo que representa a los conjuntos requiere 2 bits y la representacin de memoria principal para la cache queda:

b.1) Emplazamiento directo


En el caso del emplazamiento directo no tiene sentido implementar ningn tipo de algoritmo de sustitucin, ya que la ubicacin de un cierto bloque queda fijada segn la
frmula:
M % B mod nM
de este modo, no se utilizan registros de edad ni se puede implementar una poltica
LRU.
El nmero total de bits que se utilizan para implementar la MC es:
Por marco: 10 bits para la etiqueta y 64 B para los datos.
Al haber 16 marcos, el total es: 16 # 10 bits ! 16 # 64 B % 20 B ! 1.024 B %
% 1.044 B % 8.352 bits.
b.2) Emplazamiento asociativo
En el caso del emplazamiento asociativo, cualquier bloque nuevo puede reemplazar
cualquier bloque de la cache, por tanto necesitamos implementar un registro de edad
que nos permita identificar el ms antiguo entre los 16 marcos de bloques de la cache,
es decir, necesitamos 4 bits para su implementacin.
Por tanto, el nmero total de bits que se utilizan para implementar la MC es:
Por marco: 14 bits para la etiqueta, 4 bits para el registro de edad y 64 B para los
datos.
Al haber 16 marcos, el total es: 16#(14!4) bits!16#64 B%36 B!1.024 B%
% 1.060 B % 8.480 bits.

Captulo 12 Memoria

447

b.3) Emplazamiento asociativo por conjuntos con 4 bloques por conjunto


En el caso del emplazamiento asociativo por conjunto, cada bloque nuevo puede reemplazar uno de los 4 bloques de su conjunto asignado segn la frmula:
M % B mod nM/nC
de este modo, necesitamos implementar un registro de edad de 2 bits, que nos permita identificar el ms antiguo entre los 4 marcos del conjunto asignado a cada bloque
de MP.
Por tanto, el nmero total de bits que se utilizan para implementar la MC es:
Por marco: 12 bits para la etiqueta, 2 bits para el registro de edad y 64 B para los
datos.
Al haber 16 marcos, el total es: 16#(12!2) bits!16#64 B%8 B!1.024 B%
% 1.052 B % 8.416 bits.
PROBLEMA 9
Disear un sistema paginado de memoria virtual de acuerdo con las siguientes especificaciones:
Tamao del espacio virtual direccionable: 64 K.
Tamao del espacio de direcciones fsicas: 8 K.
Tamao de la pgina: 512 palabras.
Traduccin directa.
Solucin:
Nmero de pginas en memoria virtual:
64 # 1.024
% 128
512
Nmero de marcos de pgina en memoria fsica:
8 # 1.024
% 16
512
64 K % 216 direcciones virtuales implican 16 bits para la direccin virtual.
8 K % 213 direcciones fsicas implican 13 bits para la direccin fsica.
Como existen 128 pginas, la tabla de pginas contendr 128 % 27 registros. Por lo tanto,
los 7 bits ms significativos de la direccin virtual se emplearn para seleccionar el registro
correspondiente. Los 16 . 7 % 9 bits restantes conforman el desplazamiento dentro de la pgina. La siguiente figura ilustra un diseo bsico del mecanismo de traduccin de direcciones:

448

Problemas de fundamentos y estructura de computadores

Traduccin de direcciones.

PROBLEMA 10
Un sistema de memoria virtual segmentada emplea un formato para las direcciones virtuales de 12 bits: los tres de ms peso se corresponden con el segmento y los nueve restantes
al desplazamiento. Considere la siguiente informacin ubicada en la Tabla de Segmentos:
N.o de segmento

Direccin base

Longitud

0D116

25816

8FC16

00E16

05A16

06416

52F16

24416

Se pide calcular las direcciones fsicas correspondientes a las siguientes direcciones


lgicas:
a) 1FE16
b) 21A16
c)

20B16

d) 59016
e)

79016

Solucin:
a) 1FE16 % 000 1111111102
En primer lugar obtenemos el nmero de segmento, que se corresponde con los tres
bits ms significativos de la direccin virtual:
Nmero de segmento r 0002 % Segmento 0
Podemos calcular el desplazamiento con los bits restantes de la direccin:
Desplazamiento r 1111111102 % 1FE16 a 25816 (permiso de acceso)

Captulo 12 Memoria

449

Se obtiene permiso de acceso con el desplazamiento dado, ya que ste es menor que
la longitud del segmento en este caso. La direccin fsica asociada ser entonces:
Direccin fsica r 0D116 (dir. base) ! 1FE16 (desplazamiento) % 2CF16
Procedemos de igual forma con el resto de los apartados.
b) 21A16 % 001 0000110102
Nmero de segmento r 0012 % Segmento 1
Desplazamiento r 0000110102 % 01A16 b 00E16 (permiso denegado)
Como el desplazamiento es mayor que la longitud del segmento se produce una excepcin en la traduccin de direcciones.
c)

20B16 % 001 0000010112


Nmero de segmento r 0012 % Segmento 1
Desplazamiento r 0000010112 % 00B16 a 00E16 (permiso de acceso)
Direccin fsica r 8FC16 (dir. base) ! 00B16 (desplazamiento) % 90716

d) 59016 % 010 1100100002


Nmero de segmento r 0102 % Segmento 2
Desplazamiento r 1100100002 % 19016 b 06416 (permiso denegado)
Como el desplazamiento es mayor que la longitud del segmento se produce una excepcin en la traduccin de direcciones.
e)

79016 % 011 1100100002


Nmero de segmento r 0112 % Segmento 3
Desplazamiento r 1100100002 % 19016 a 24416 (permiso de acceso)
Direccin fsica r 52F16 (dir. base) ! 19016 (desplazamiento) % 6BF16

PROBLEMA 11
Un sistema de memoria virtual segmentada/paginada tiene una longitud para las direcciones virtuales de 32 bits dividida en los siguientes campos: La longitud del campo de nmero de segmento es de 12 bits, la del nmero de pgina es de 8 bits y la longitud del campo
desplazamiento es de 12 bits.
Se pide determinar el valor de la direccin fsica bajo los siguientes supuestos:
El registro de inicio de la tabla de segmentos contiene el valor 1000016.
La direccin virtual a decodificar es la 01B2A10F16.
El contenido de la direccin 1001B16 en la tabla de segmentos es: 100F216.
El contenido de algunos registros de la tabla de pginas es:
1011B16 r 1516
1011C16 r FA16
1011D16 r AF16

450

Problemas de fundamentos y estructura de computadores

Solucin:
La direccin virtual definida en el enunciado sigue el siguiente esquema:

El registro base de la tabla de segmentos contiene la direccin de memoria donde comienza la tabla de segmentos. Cada uno de los registros de esta tabla contiene la direccin base de
la tabla de pginas correspondiente a un segmento.
La direccin del registro de la tabla de segmentos la obtenemos al sumar la direccin base
de la tabla de segmentos con el campo Segmento de la direccin virtual:
1000016 ! 01B16 % 1001B16
El contenido de la direccin 1001B16 en la tabla de segmentos es, segn el enunciado,
100F216. Esta se corresponde con la direccin base de la tabla de pginas de este segmento.
Sumndole el campo Pgina obtendremos la direccin del registro que contiene el nmero de
marco de pgina:
100F216 ! 2A16 % 1011C16
Y, por lo tanto, el nmero de marco de pgina es: 10011C16 r FA16.
Finalmente, la direccin fsica se obtiene concatenando el desplazamiento al nmero de
marco de pgina.
Direccin fsica: FA10F16.
PROBLEMA 12
Un computador emplea memoria virtual segmentada/paginada y un mecanismo de traduccin mixta mediante TLB. El tiempo de acceso a la memoria principal es de 50 ns y el
tiempo empleado en una bsqueda en la TLB es de 5 ns. Considerando una razn de aciertos en la TLB del 85%, determinar el tiempo medio de acceso a la informacin almacenada
en memoria.
Solucin:
La TLB (Translation Lookaside Buffer) acelera de forma importante el acceso a la informacin. Suele almacenar la informacin relativa a las ltimas direcciones de memoria a las que
se ha accedido y proporciona directamente el nmero de marco de pgina para un conjunto
reducido de pares segmento-nmero de pgina.
Si suponemos que las pginas pedidas se encuentran en la memoria fsica, el tiempo de
acceso suponiendo que se produce acierto en la TLB para extraer la pgina correspondiente es:
t1 % tiempo de bsqueda en la TLB ! tiempo de acceso a memoria principal

Captulo 12 Memoria

451

de donde:
t1 % 5 ns ! 50 ns % 55 ns
Si dicha informacin no se encuentra en la TLB hay que acceder tres veces a la memoria
principal: una a la tabla de segmentos para obtener la tabla de pginas asociada, otra a la tabla
de pginas para obtener el nmero de marco de pgina, y finalmente una tercera vez para
obtener la informacin. Por tanto
t2 % tiempo de bsqueda en la TLB ! tiempo de tres accesos a memoria principal
de donde:
t2 % 5 ns ! 3 # 50 ns % 155 ns
El tiempo medio de acceso ser entonces:
tacc % h # t1 ! (1 . h) # t2 % 0,85 # 55 ns ! 0,15 # 155 ns % 70 ns
Si no existiese TLB, el tiempo medio de acceso para acceder a la informacin sera de
3 # 55 ns % 150 ns, ya que en este caso todos los accesos requeriran la consulta a la tabla de
segmentos y a la tabla de pginas antes de acceder a la palabra buscada.
PROBLEMA 13
Una memoria principal contiene tres marcos de pgina, que inicialmente estn vacos. Si se
produce la siguiente secuencia de peticiones de pgina: 4, 2, 4, 5, 1, 4, 3, 1, 6, 5, 1.
Determinar la razn de aciertos en los tres supuestos siguientes:
a) Empleando una poltica de sustitucin FIFO.
b) Empleando una poltica de sustitucin LRU.
c)

Empleando la poltica de sustitucin ptima.

Solucin:
a) Sustitucin FIFO (First In, First Out)
Es algoritmo procede de una forma muy sencilla. Cuando es necesario sustituir una pgina, este algoritmo selecciona la pgina que lleva ms tiempo en la memoria, es decir, la
que se ubic primero.
Pginas
solicitadas

!
Pgina ms antigua

Nmero de aciertos: 2.
Razn de aciertos: 2/11.

452

Problemas de fundamentos y estructura de computadores

b) Sustitucin LRU (Least Recently Used)


En este caso se sustituye la pgina que no ha sido referenciada durante un intervalo de
tiempo ms largo, es decir, la menos recientemente usada.
Pginas
solicitadas

Pgina a sustituir

Nmero de aciertos: 4.
Razn de aciertos: 4/11.
c)

Sustitucin ptima
En este caso se sustituye la pgina que no vaya a utilizarse durante el periodo ms largo
de tiempo. Este algoritmo no puede implementarse, porque se basa en la peticin futura
de pginas, y por lo tanto no es posible su implementacin. Sin embargo es un buen punto de referencia para hacer comparativas entre distintos algoritmos de sustitucin.
Pginas
solicitadas

Pgina a sustituir

Nmero de aciertos: 5.
Razn de aciertos: 5/11.
Podemos por tanto concluir que en este caso el algoritmo LRU es el que ofrece mejores resultados.
PROBLEMA 14
Supongamos un sistema con las siguientes caractersticas: memoria principal de 1 KB, memoria cache de 4 marcos de bloque de 4 palabras de 1 byte, inicialmente vaca con sustitucin LRU (en los casos en que sea necesario).
Se solicitan los accesos a las siguientes direcciones de una memoria de 1 KB: 1, 4, 8, 5,
20, 17, 19, 56, 9, 11, 4, 43. Se pide mostrar la evolucin de la memoria cache para las
siguientes polticas de emplazamiento:

Captulo 12 Memoria

453

a) Emplazamiento directo.
b) Emplazamiento asociativo.
c)

Emplazamiento asociativo por conjuntos de dos marcos/conjunto.

Solucin:
a) En este caso, como cada bloque dispone de cuatro palabras, B % DIR/4. Por otro lado,
cada direccin tiene asociada un marco M % B mod nM % B mod 4. En consecuencia,
los nmeros de bloque y marco quedan como sigue:
DIR:

20 17 19 56

11

43

4 14

10

Una vez obtenido esto vemos la evolucin de la memoria cache, teniendo en cuenta
que si llamamos a la direccin 0 llevaremos a la memoria cache todo su bloque B % 0,
es decir de la palabra 0 a la 3. La siguiente tabla muestra la evolucin de la memoria
cache. En lugar de direcciones se indica directamente el bloque solicitado. Las celdas en
fondo gris representan que se ha producido un fallo e indican dnde se produce la sustitucin.
M/B

14

10

14

10

1
2
3

b) En este caso no hace falta calcular M puesto que el marco ser el primero que quede
libre. Por el contrario hemos de llevar un registro de edad para saber qu marco sustituir
en caso de que el conjunto correspondiente est lleno. Representamos en la siguiente tabla la evolucin de la memoria cache, donde el segundo nmero en cada celda representa
el valor del registro de edad.
M/B

14

080

081

082

082

083

480

480

481

482

482

483 1080

180

181

180

181

182

182

183

280

280

281

280

281

282

283

283 1480 1481 1481 1482 1483

580

581

581

1
2
3

582

583

583

180

10

282

181

454

Problemas de fundamentos y estructura de computadores

c)

En este caso el conjunto asociado es C % B mod nC % B mod 2, y dentro de este conjunto se tomar el primer marco que quede libre.
DIR:

20 17 19 56

11

43

4 14

10

Al igual que en el caso anterior, necesitamos un registro de edad, pero en esta ocasin
restringido al conjunto al que se refiere cada bloque.
C

M/B

14

10

080

080

081

081

081

480

480

481

280

280

280

281

280

280

280

281

281 1480 1481 1481 1481 1080

180

180

181

181

181

181

181

181

180

180

580

580

580

580

580

580

581

581

1
1

180

Resumimos la secuencia de aciertos y fallos en cache bajo las tres polticas de emplazamiento:
DIR.

Directo

Asociativo

Asociativo por conjuntos

Tipo fallo

Fallo

Fallo

Fallo

Inicio

Fallo

Fallo

Fallo

Inicio

Fallo

Fallo

Fallo

Inicio

Acierto

Acierto

Acierto

XXX

20

Fallo

Fallo

Fallo

Conflicto

17

Fallo

Fallo

Fallo

Conflicto

19

Acierto

Acierto

Acierto

XXX

56

Fallo

Fallo

Fallo

Conflicto

Fallo

Fallo

Fallo

Conflicto

Acierto

Acierto

Acierto

XXX

Fallo

Fallo

Acierto

Conflicto

43

Fallo

Fallo

Fallo

Conflicto

11

455

Captulo 12 Memoria

Y finalmente, mostramos un mapa de la memoria cache al finalizar todas las referencias:


Directo

Asociativo

Asociativo por conjuntos

Etiqueta

DIR

Etiqueta

DIR

Etiqueta

DIR

000001

00

00

16

00001010

00

40

0000010

00

00

01

17

01

41

01

00

10

18

10

42

10

10

00

11

19

11

43

11

11

01

00

00

00

40

01

01

01

01

41

01

10

10

10

10

42

01

11

11

11

11

43

10

00

40

00

56

00

10

01

41

01

57

01

10

10

42

10

58

10

10

11

43

11

59

11

11

00

00

00

20

11

01

01

01

21

11

10

10

10

22

11

11

11

11

23

000000

000010

00000010

00001110

00000001

0000101

0000000

0000010

PROBLEMA 15
Un computador tiene una memoria principal de 32 Kpalabras de 16 bits, y una memoria
cache de 4 Kpalabras, dividida en 4 bloques/conjunto, con 64 palabras/bloque. Se supone
que inicialmente la memoria cache est vaca. La CPU lee de forma consecutiva el contenido de las posiciones de memoria 0, 1, 2, ..., 4.351. A continuacin, repite 9 veces ms
esta secuencia de lectura. La memoria cache es 10 veces ms rpida que la memoria principal. Para la sustitucin de bloques en la memoria cache se emplea la estrategia LRU. Estimar la mejora que se obtiene por la utilizacin de la memoria cache:
MEJORA % 100 #

TMP . Tcache
TMP

NOTA: Suponer que el tiempo empleado por el algoritmo LRU y el tiempo de escritura en
cache se solapa con el tiempo de lectura de MP.

456

Problemas de fundamentos y estructura de computadores

Solucin:
En primer lugar determinamos el formato de direccin de memoria principal:
32 Kpalabras necesitan 15 bits de direcciones (32K % 215).
32 Kpalabras, con bloques de 64 palabras/bloque, implican 512 bloques en memoria
principal.
Una memoria cache de 4 Kpalabras, dividida en 4 marcos/conjunto, con 64 palabras/
marco, hacen un total de 16 conjuntos (24 % 16) en memoria cache. Por tanto el campo
conjunto tendr 4 bits.
Los bloques son de 64 palabras, por lo que el campo palabra tendr 6 bits.
Los 5 bits restantes, hasta completar los 15 bits de direcciones, constituyen el campo
etiqueta.
Resumiendo:
Etiqueta: 5 bits.
Conjunto: 4 bits.
Palabra: 6 bits.
Ahora se puede estudiar cmo la CPU lee 10 veces las direcciones 0 a 4.351, considerando dos casos: sin memoria cache y con ella.
Se define:
Tiempo de acceso por palabra a la memoria cache % t.
Tiempo de acceso por palabra a la memoria principal % 10t.
Sin memoria cache:
Hay que leer 10 veces el contenido de las 4.352 direcciones de memoria. EI tiempo total de
lectura en memoria principal (MP) es por tanto:
TMP % 4.352 pal. # 10 #

10t
% 435.200t
pal.

Con memoria cache:


El tiempo de lectura total es el tiempo de gestin de fallos (tiempo ocupado en traer los bloques desde MP a la memoria cache) ms el tiempo de lectura de la memoria cache:
T % Tfallos ! Tcache
Como, tal como dice el enunciado, el tiempo empleado por el algoritmo LRU (si se utiliza) y el tiempo de escritura en la memoria cache se solapa con el tiempo de lectura en MP, el
tiempo total en traer un bloque de MP es:
64

10t
pal.
#
% 640t
bloque pal.

Captulo 12 Memoria

457

Las direcciones 0..4351 se corresponden con los bloques 0..67 (68 en total). Como en la
memoria cache slo caben 64 bloques, habr que hacer sustituciones aplicando el algoritmo
LRU: se sustituye, dentro de un conjunto, el bloque que ha sido usado menos recientemente.
Primer ciclo de lectura (cache vaca):
Tiempo debido a la gestin de fallos:
En el primer ciclo de lectura, al estar la memoria cache vaca, se emplazan exitosamente los
64 primeros bloques (bloques 0 a 63, palabras 0 a 4095), que son los que caben en memoria
cache. El estado de la memoria cache tras leer el bloque 63 se ilustra en la siguiente figura.
A cada bloque B le corresponde el conjunto B mod nC % B mod 16. Dado un conjunto al que
va destinado un bloque, el marco se escoge de forma asociativa.

Mapa de la memoria cache tras leer los primeros 64 bloques en la 1.a vuelta.

Por lo tanto, al bloque 64 le vuelve a corresponder el conjunto 16 mod 16 % 0, que est


completo. Aplicando el algoritmo de sustitucin LRU determinamos que el marco a sustituir
es el 0, que es menos recientemente referenciado. Lo mismo ocurre con los bloques 65 a 67.
Por lo tanto, el mapa de la memoria cache tras acceder a los 68 bloques queda como ilustra la
figura.

458

Problemas de fundamentos y estructura de computadores

Mapa de la memoria cache tras leer los 68 bloques en la 1.a vuelta.

Se han producido por tanto 68 fallos, es decir, traemos 68 bloques de MP a MC, por lo
tanto, el tiempo de gestin de fallos viene dado por:
Tfallos % 68 bloques # 64

pal.
10t
#
% 43.520t
bloque pal.

Tiempo de lectura de MC:


Dado que estamos leyendo 4.352 palabras en cada ciclo del programa, el tiempo de lectura
suponiendo que todos los bloques se encuentran en MC vendr dado por:
Tcache % 4.352 pal. #

1t
% 4.352t
pal.

Tiempo total de lectura:


Por lo tanto el tiempo de ejecucin del primer ciclo ser:
T1 % Tfallos ! Tcache % 43.520t ! 4.352t % 47.872t
Segundo ciclo de lectura:
Tiempo debido a la gestin de fallos:
En el segundo ciclo de lectura empezamos con el estado de la memoria cache que refleja la
figura anterior. Leemos la palabra 0 que se corresponde con el bloque 0, y que no se encuentra
en memoria cache. Por lo tanto sustituimos el bloque 16 que es el menos recientemente refe-

Captulo 12 Memoria

459

renciado, quedando almacenados en el conjunto 0 los bloques 64, 0, 32, 48. Lo mismo ocurre
cuando el programa alcanza los bloques 1, 2 y 3, que fueron sustituidos en los conjuntos 1, 2,
y 3, respectivamente. Hasta aqu se han producido 4 fallos.
Desde el bloque 4 y hasta el 15 no se producen fallos, debido a que estos bloques ya se
encuentran en MC y no han sido sustituidos previamente.
Llegamos al bloque 16, que no se encuentra en cache, pues ya ha sido sustituido en el
conjunto 0. Realizamos por tanto una nueva sustitucin. Lo mismo ocurre con los bloques 17,
18 y 19. 4 fallos ms.
Desde el bloque 20 hasta el bloque 31 no se producen fallos, pues ya estn ubicados en los
conjuntos 4 a 15, respectivamente.
Y as sucesivamente.
Es fcil deducir que en los conjuntos 0 a 3 se producen un total de 5 fallos en cada uno, y
que en los conjuntos 4 a 15 no se producen fallos.
La siguiente figura muestra un esquema de la evolucin temporal de la memoria cache en
todos los ciclos del programa. Podemos apreciar que el nmero de fallos es el mismo en la
segunda vuelta y sucesivas.

Evolucin temporal de la memoria cache.

Como se producen 5 fallos en 4 conjuntos, cada uno de los cuales origina la lectura desde
MP de 64 palabras (el tamao de un bloque):
Tfallos % 5 # 4 # 64 pal. #

10t
% 12.800t
pal.

460

Problemas de fundamentos y estructura de computadores

Tiempo de lectura de MC:


El tiempo de lectura de la memoria cache es el mismo que el tiempo de lectura de la primera
vuelta:
1t
% 4.352t
Tcache % 4.352 pal. #
pal.
Tiempo total de lectura:
Por lo tanto el tiempo total viene dado por:
T2 % Tfallos ! Tcache % 17.152t
Del tercer al dcimo ciclo son iguales al segundo. De donde:
Tcache % T1 ! 9 # T2 % 47.872t ! 9 # 17.152t % 202.240t
La mejora obtenida es por tanto:
MEJORA % 100 #

TMP . Tcache
435.200t . 202.240t
% 100 #
% 53,53%
TMP
435.200t

PROBLEMA 16
Se ejecuta el siguiente cdigo C en una mquina con un procesador que dispone de una
memoria cache de datos de 256 bytes con bloques de 4 palabras (de 32 bits cada una):
int i,j,salto,vector[256];
...
for(i=0; i<10000; i++)
for(j=0; j<256; j=j+salto)
c = vector[j]+5;

Suponga que slo se accede a la memoria cache de datos para acceder al vector, y se
supone que los enteros son palabras. Se pide:
a) Cul es la tasa de fallos cuando la memoria cache es de emplazamiento directo y
salto%132?
b) Y si salto es 131?
c)

Cambiara algo si la memoria cache fuera asociativa por conjuntos de dos vas?

d) Suponiendo que la memoria cache de datos es 20 veces ms rpida que la memoria


principal y que el tiempo de acceso a memoria cache es de t ciclos, calcule el tiempo
total de acceso a memoria en los casos a) y b).
Solucin:
a) Antes de averiguar la tasa de fallos debemos saber el nmero de marcos de bloque con
que cuenta la memoria cache. Hay una capacidad 256 B % 28 B en la memoria cache.
Adems se dice que un bloque ocupa 16 B (4 palabras de 32 bits % 4 # 4 B). Por lo tanto
el nmero de marcos de bloque es: 28/24 % 24 % 16 bloques. As pues un esquema de la
memoria cache sera el siguiente:

Captulo 12 Memoria

Marco

461

Palabra

15

60

61

62

63

Como se puede ver slo podemos introducir un total de 64 palabras como mximo.
Debemos tener en cuenta que un nmero entero en C ocupa 32 bits, es decir, una palabra.
Por lo tanto la memoria cache podra en el mejor de los casos almacenar hasta 64 nmeros enteros.
Ahora hay que analizar el comportamiento del bucle interno. El bucle externo simplemente repite lo que hace el bucle interno varias veces. Se dice en el enunciado que la
memoria es de emplazamiento directo. Vamos a ir viendo a qu elementos se accede.
j % 0 r Elemento 1
j % 132 r Elemento 133
Por lo tanto accedemos a dos nmeros del vector o palabras. La pregunta que debemos responder a continuacin es a qu bloques de memoria principal corresponden estas
palabras y dnde se ubicaran estos bloques en la memoria cache. Ya que el enunciado no
lo dice suponemos por simplicidad que el vector se carga a partir de la direccin y bloque
0 de MP (memoria principal). Como no se dice nada suponemos tambin que la memoria
cache est inicialmente vaca.
j % 0 r Bloque 0 de memoria principal. r M % B mod nM % 0 mod 16 % 0
j % 132 r Bloque 33 de memoria principal (132/4 % 33) r M % 33 MOD 16 % 1
Podemos concluir que una vez trados los dos bloques de memoria principal correspondientes a los accesos efectuados por el programa, estos se ubicarn en los marcos 0 y
1 de la memoria cache. No existen por lo tanto fallos de sustitucin y slo hay que tener
en cuenta dos fallos forzosos en la primera iteracin del bucle interno (durante la primera
iteracin del bucle externo). Los fallos de sustitucin se descartan porque slo se accede
a dos palabras/enteros y en la cache hay espacio para 64 palabras/nmeros. Repetidos
estos accesos 10.000 veces (bucle exterior) se puede concluir por tanto que la tasa de
fallos es aproximadamente cero.
b) Ahora salto es igual a 131. Siguiendo un razonamiento anlogo al anterior se trata de
averiguar los elementos accedidos del vector al igual que los bloques de MP donde estn
contenidos para saber dnde se ubicaran una vez trados a la memoria cache.
j % 0 r Elemento 1
j % 131 r Elemento 132
Los bloques de memoria principal:
j % 0 r Bloque 0 de memoria principal r M % B mod nM % 0 mod 16 % 0
j % 131 r Bloque 32 de memoria principal (131/4 % 32) r M % 32 mod 16 % 0

462

Problemas de fundamentos y estructura de computadores

Ahora resulta que los dos accesos que se producen a MP debido a la lectura de dos
nmeros/palabras corresponden a dos bloques no consecutivos (el bloque 0 y el 32) de
MP que han de ubicarse en el mismo marco de la memoria cache. Esto supone que hay
que traer y expulsar sucesivamente bloques del marco cero de la memoria cache producindose dos fallos de conflicto en cada iteracin del bucle interior. Repetidos estos accesos 10.000 veces (bucle exterior) podemos concluir por tanto que la tasa de fallos es
exactamente uno.
c)

Si la memoria cache se convierte en una cache asociativa por conjuntos de dos vas se
soluciona el problema anterior y la tasa de fallos es aproximadamente 0 en los dos casos.
Esto es as porque slo se han de traer dos bloques distintos de memoria principal en todo
el programa y ahora disponemos de dos marcos de bloque por conjunto, es decir, hay espacio suficiente para ubicar esos dos bloques en el mismo conjunto en caso de necesidad.

d) En primer lugar calculamos el tiempo de acceso para el caso a). Sabemos que el tiempo
de acceso a memoria cache viene dado por la expresin:
tacc % h # tc ! (1 . h) # (tc ! tp) % tc ! (1 . h) # tp
donde tc es el tiempo de acceso a cache y tp es el tiempo de acceso a memoria principal.
Con los datos del problema esto resulta en:
tacc % t !

2
# (4 # 20t) % 1,008t
20.000

En caso de fallo traer un bloque a memoria cache cuesta lo mismo que traer 4 palabras por separado.
Para el caso b) se realiza un razonamiento similar:
tacc % t ! 1 # (4 # 20t) % 81t
Como podemos ver con estos valores el hecho de tener una cierta organizacin u otra
en la memoria cache puede influir de forma decisiva en el rendimiento general de un
computador en determinadas aplicaciones.
PROBLEMA 17
Sea el siguiente programa

que se ejecuta en un computador con una MP de 64 Kpalabras, dotado de una MC con


emplazamiento directo de 1 Kpalabras y con bloques de 128 palabras. El tiempo de ciclo

Captulo 12 Memoria

463

de la memoria principal es 10t, el de la memoria cache es t y el tiempo de transferencia de


un bloque de MP a MC es de 500t.
a) Especificar el n.o de bits de los campos etiqueta, marco y palabra.
b) Considerando solamente el tiempo de bsqueda en memoria de las instrucciones, calcular el tiempo necesario para la ejecucin del programa y la ganancia con respecto a
un computador sin cache.
Solucin:
a) La memoria principal (MP) tiene 16 bits para poder cubrir las 64 Kpalabras, de estos
16 bits 7 se dedican a direccionar la palabra (128 palabras/bloque % 27 palabras/bloque),
y el resto (9 bits a direccionar el bloque).
La memoria cache (MC) utiliza 10 bits para contener las 1 Kpalabras indicadas (210
palabras). Esto indica que el campo etiqueta ser de 16 . 10 % 6 bits. Con 7 bits para
direccionar la palabra esto nos deja 16 . 10 . 7 % 3 bits para el marco.
Como resultado quedan las siguientes anchuras en bits para los campos etiqueta, marco y palabra para ambos tipos de memoria:
Memoria principal:

Memoria cache:

b.1) Sin memoria cache


En primer lugar analizamos los accesos totales a memoria del bucle anterior dividiendo
la ejecucin de una vuelta en las distintas fases que comprende:

As resultan para el bucle externo:


10 # (142 ! 1.500 ! 961) % 10 # 2.603 % 26.030 accesos

464

Problemas de fundamentos y estructura de computadores

Entonces, para todo el fragmento de cdigo:


6 ! 26.030 ! 300 % 26.336 accesos
Por lo tanto, el tiempo total consumido sin cache para este bucle resulta:
26.336 # 10t % 263.360t
b.2) Con memoria cache
En el caso de un sistema con un nivel de cache, la cantidad de accesos bsica ser igual
ya que el procesador siempre accede a memoria a travs de la cache, pero tenemos que
aadir el coste de transferencias de MP-MC por fallos en cache. Realizamos el estudio
para las distintas fases del cdigo anterior:
Inicio: en los accesos a direcciones 17 a 22, hay un 1 fallo de cache al estar la cache
vaca y se carga el bloque 0..127 en cache al fallar el acceso a la posicin 17, Marco de
Bloque 0.
Distinguiremos entre la primera iteracin y las restantes del bucle interno:
a

1. iteracin: En total hay 9 fallos, que son los siguientes:


Accesos direcciones 23 a 164: hay 1 fallo de cache al acceder a la posicin 128,
que no se encuentra cubierta por el bloque 0 cargado anteriormente.
Accesos del bucle interno a direcciones 165 a 239: 0 fallos para las 20 iteraciones
al haber cargado el bloque en la secuencia de accesos anterior.
Accesos direcciones 240 a 1200: hay 8 fallos de cache al acceder a las siguientes
direcciones:
256 (traemos al marco de bloque 2 el rango 256..383)
384 (bloque 3, rango 384..511)
512 (bloque 4, rango 512..639)
640 (bloque 5, rango 640..767)
768 (bloque 6, rango 768..895)
896 (bloque 7, rango 896..1023)
1024 (sobrescribimos bloque 0, rango 1024..1151)
1152 (sobrescribimos bloque 1, rango 1152..1279).
2.a a 9.a iteraciones: En total hay 36 fallos, 4 cada iteracin, que son los siguientes:
Accesos direcciones 23 a 164: hay 2 fallo de cache al acceder a la posicin 128 y a
la 23 tambin, ya que el bloque 0 contiene ahora el rango 1024 a 1151 al comienzo de
todas las iteraciones.
Accesos del bucle interno a direcciones 165 a 239: sigue habiendo 0 fallos para las
20 iteraciones al haber cargado los dos bloques en la secuencia de accesos anterior durante los dos fallos.
Accesos direcciones 240 a 1200: hay 2 fallos de cache al acceder a las siguientes
direcciones
1024 (sobrescribimos bloque 0, rango 1024..1151)
1152 (sobrescribimos bloque 1, rango 1152..1279)

Captulo 12 Memoria

465

El resto de bloques (bloque 2 a bloque 7) contienen las posiciones de memoria correctas ya que se cargaron en la primera iteracin y nunca se sobrescribieron posteriormente.
Fin: en los accesos a direcciones 1201 a 1500, hay dos fallos de cache al acceder a las
direcciones:
1280 (traemos al marco de bloque 2 el rango 1280..1407)
1408 (bloque 3, rango 1408..1535)
En total, para la ejecucin completa del fragmento de cdigo hay:
1 ! 9 ! 36 ! 2 % 48 fallos
Por tanto, el tiempo de ejecucin de MP ! MC resulta:
48 # 500t ! 26.336t % 50.336t
Finalmente, el tiempo de ejecucin se reduce al tener MP ! MC con respecto al
sistema slo con MP un total de 263.360t/50.336t % 4,06 veces.
PROBLEMA 18
Sea un ordenador con un procesador de 8 bits, con sistema de memoria de las siguientes
caractersticas:
Memoria principal de 4 GB, entrelazada simple de orden inferior con 16 mdulos,
tiempo de acceso de 32 ns.
Memoria cache de dos mdulos independientes (instrucciones y datos), capacidad de
ambas caches de 64 KB, tiempo de acceso de 4 ns, bloques de 16 B, poltica de emplazamiento asociativo por conjuntos de dos bloques, poltica de actualizacin escritura inmediata sin ubicacin, poltica de sustitucin FIFO.
En este computador se ejecuta el siguiente cdigo:
while (i < n) {
total = total + precio[i]*cantidad[i];
i = i + 1;
}

Si inicialmente, la memoria cache de datos se encuentra vaca:


a) Indicar la correspondencia entre una direccin de memoria principal y una de memoria cache.
b) Indicar la traza de los 3 primeros accesos, a los datos, realizada por este fragmento de
cdigo suponiendo que:
Las variables i, n y total se almacenan en dos de los registros, inicializadas a 0.
Los vectores precio y cantidad se almacenan a partir de las direcciones de memoria
principal 8001816 y 7001816 respectivamente.
Indicar adems en cules de las anteriores referencias a la memoria principal producen fallos en la memoria cache, considerando las tres iteraciones del bucle.

466

Problemas de fundamentos y estructura de computadores

c)

Calcular la tasa de aciertos de la memoria cache de datos para el anterior fragmento de


programa.

d) Calcular el tiempo de ejecucin del fragmento del programa anterior debido nicamente a los accesos a memoria.
Solucin:
Una memoria entrelazada de orden inferior separa la memoria en diferentes mdulos, de forma que direcciones consecutivas de memoria se encuentran en mdulos consecutivos. Bajo
esta configuracin, se puede acceder a distintos mdulos en paralelo. Como un bloque ocupa
en este caso 16 B y disponemos de 16 mdulos, podemos traer un bloque de memoria principal de una sola vez.
a) Correspondencia entre direccin de MP y MC
Tamao de la memoria principal:

4 GB % 232 B

Tamao de bloque:

16 B % 24 B

Nmero de bloques en MP:

Tamao de la cache de datos:


Nmero de marcos en MC:

Nmero de conjuntos en MC:

nB %

232 B
% 228 bloques
B
24
bloque

64 KB % 26 # 210 B % 216 B
nM %

nC %

216 B
% 212 bloques
B
24
bloque

212 bloques
% 211 conjuntos
bloques
21
conjunto

Un bloque de memoria principal se ubica en el conjunto correspondiente a la posicin


B mod nC % B mod 211 de memoria cache de datos, siendo B el nmero de bloque de
memoria principal. Como la longitud de la direccin es de 32 bits, el campo palabra es de
4 bits y el campo conjunto es de 11 bits, podemos concluir que el campo etiqueta ser de
32 . 11 . 4 % 17 bits, tal como se muestra en la siguiente figura:

b) Traza de tres primeros accesos


La tabla siguiente muestra la traza de los tres primeros accesos. En la direccin de memoria principal, los dgitos en negrita representan el conjunto, mientras que los dgitos en
negrita y cursiva representan la palabra. La direccin de memoria cache se divide en los
campos etiqueta, conjunto y palabra, todos en decimal. Dado que disponemos de un procesador de 8 bits (1 B), elementos consecutivos de un vector estarn en posiciones consecutivas de memoria:

Captulo 12 Memoria

DIR. MC

467

Variable

DIR. MP

Acierto

precio[0]

8001816
0..01 0000 000 0000 0001 10002

Etiqueta: 16
Conjunto: 1
Palabra: 8

Fallo de lectura

cantidad[0]

7001816
0..00 1110 000 0000 0001 10002

Etiqueta: 14
Conjunto: 1
Palabra: 8

Fallo de lectura

precio[1]

8001916
0..01 0000 000 0000 0001 10012

Etiqueta: 16
Conjunto: 1
Palabra: 9

Acierto de lectura

cantidad[1]

7001916
0..00 1110 000 0000 0001 10012

Etiqueta: 14
Conjunto: 1
Palabra: 9

Acierto de lectura

precio[2]

8001A16
0..01 0000 000 0000 0001 10102

Etiqueta: 16
Conjunto: 1
Palabra: 10

Acierto de lectura

cantidad[2]

7001A16
0..00 1110 a000 0000 0001 10102

Etiqueta: 14
Conjunto: 1
Palabra

Acierto de lectura

c) Tasa de aciertos
La tasa de aciertos vendr dada por el nmero de aciertos que se producen al acceder
sobre el nmero de accesos totales. Del apartado anterior podemos concluir que
Tasa de aciertos % 4/6 % 0,6667 % 66,67%
d) Tiempo de ejecucin
Los dos primeros accesos (ver apartado b) implican acceder a memoria cache a buscar la
informacin y al no encontrarla se debe acceder a memoria principal a llevar el bloque a
la cache. Como es entrelazada simple de orden inferior de 16 mdulos podemos leer un
bloque entero en un acceso. Por lo que los dos primeros accesos tienen un acceso a memoria cache y otro a memoria principal.
Los siguientes accesos son aciertos por lo que solamente se accede a la cache.
Por tanto son 6 accesos a cache y 2 a memoria principal:
T % 6 # 4 ns ! 2 # 32 ns % 88 ns
PROBLEMA 19
El sistema de memoria virtual de un computador tiene 16 MB de capacidad, y dispone de
una memoria fsica de 512 KB. El tamao de pgina es de 4 KB y se realizan las siguientes
referencias a pginas virtuales (se referencian todas las palabras contenidas en cada pgina): 17, 13, 9, 17, 17, 24, 25, 25, 25, 13, 13, 14, 15, 15, 13, 13, 24, 24, 36, 37 y 40. Se pide:

468

Problemas de fundamentos y estructura de computadores

a) Tamao de la tabla de pginas.


b) Nmero total de accesos a memoria principal suponiendo que inicialmente la tabla de
pginas est vaca.
c) Nmero total de accesos a memoria principal suponiendo que inicialmente la tabla de
pginas est vaca y que se dispone de un TLB de 32 entradas con una correspondencia totalmente asociativa.
d) Si un acceso a memoria principal tarda t unidades de tiempo y se tarda 106t unidades
de tiempo en leer una pgina de disco, qu mejora en el tiempo de acceso produce el
uso del TLB? Calclese este factor teniendo en cuenta el acceso a disco y sin tenerlo
en cuenta.
NOTA: Se considerarn accesos a memoria todos aquellos accesos del programa de usuario as como los producidos por la actualizacin de la tabla de pginas y la carga de una
pgina en memoria principal.
Solucin:
a) Tamao de la tabla de pginas
N.o de pginas en MV % 16 MB / 4 KB % 224 / 212 % 212 % 4.096 pginas
r Entradas en la tabla de pginas % 4.096
Cada entrada contiene (como mnimo) 1 bit de presencia ! bits del marco de pgina
N.o de pginas en MP % 512 KB / 4KB % 219 / 212 % 27 % 128 pginas r bits de marco
de pgina % 7 bits
Por lo tanto:
Tamao de la TP % 4.096 # (7 ! 1) % 37.768 bits % 4 KB
b) Nmero de accesos a MP
N.o de fallos de pgina % 10 (existen 10 pginas diferentes en la secuencia del enunciado)
Accesos en cada fallo:
1 a TP
212 para llevar la pgina a MP (4 KB)
1 para actualizar TP
1 para acceder a TP y obtener la direccin de MP
1 para acceder a la posicin deseada
Total: 4 ! 212 r N.o total de accesos en fallos % 10 # (4 ! 212) % 41.000
Accesos en cada acierto:
1 a TP
1 a posicin deseada
Total: 2

Captulo 12 Memoria

469

N.o de aciertos % N.o de referencias total . N.o de fallos % N.o de pginas del programa # tamao de pgina
N.o de aciertos % 21 # 212 . 10 % 86.006
N.o total de accesos en los aciertos % 86.006 # 2 % 172.012
N.o total de accesos a memoria % 41.000 ! 172.012 % 213.012
c)

Nmero total de accesos a memoria con TLB de 32 entradas


TLB % 32 entradas r capacidad para soportar las entradas de TP correspondientes a las
pginas del programa.
En fallos se produce el mismo n.o de accesos a MP (1 ! 212 ! 1 ! 1 ! 1)
En aciertos se produce un solo acceso a MP. El correspondiente a la posicin deseada, el
otro se realiza sobre TLB.
N.o total de accesos a MP % 41.000 ! 86.006 % 127.006

d) Mejora al usar TLB, teniendo en cuenta el acceso al disco


Teniendo en cuenta el acceso al disco
Tiempo con TLB % 10 # 106t ! 127.006t
Tiempo sin TLB % 10 # 106t ! 213.012t
Tiempo con TLB/Tiempo sin TLB % 0,9916 r 99,16%
Sin tener en cuenta el acceso al disco:
Tiempo con TLB % 127.006t
Tiempo sin TLB % 213.012t
Tiempo con TLB/Tiempo sin TLB % 0,5962 r 59,62%
PROBLEMA 20
Sea un computador con memoria virtual paginada y memoria cache con las caractersticas
siguientes:
Tamao de pgina: 16 KB cada una (las palabras son de 1 B).
Memoria virtual: 1 MB con traduccin asociativa y sustitucin LRU.
Memoria fsica: 64 KB.
Memoria cache de 256 B, asociativa por conjuntos, con bloques de 64 B, 2 bloques por
conjunto y sustitucin LRU (mediante registros de edad).
El tiempo de acceso a la cache es Tc, el tiempo de acceso a memoria principal es Tm,
tiempo de transferencia de un bloque de memoria principal a memoria cache es Tb y el
tiempo de transferencia de una pgina de memoria secundaria a memoria principal es Tp.
Se pide:
a) Indicar el formato de la direccin virtual y de la direccin fsica. Calcular el nmero
de pginas que contiene la memoria virtual y la memoria principal, as como el nmero de bloques que contiene la memoria principal y la memoria cache.

470

Problemas de fundamentos y estructura de computadores

b) Calcular el nmero de bits necesarios para implementar la memoria cache (incluyendo


datos, etiquetas y registros de edad) y el nmero de bits necesarios para implementar
la tabla de pginas asociativa.
c) Si en un momento dado los contenidos de la tabla de pginas y de la cache (en decimal) son los siguientes:
Tabla de pginas asociativa

Etiquetas en la cache

N.o de pgina

N.o de marco

Etiqueta

Conjunto

Bloque

5
24
63
50

0
1
2
3

18
259
130
511

0
0
1
1

0
1
0
1

Expresar en hexadecimal el rango de direcciones virtuales y fsicas ubicadas en cada


marco de pgina de la memoria principal, as como el rango de direcciones virtuales y
fsicas ubicadas en cada bloque de la memoria cache.
d) Supongamos que un programa realiza la siguiente cadena de referencias virtuales para
lectura (en hexadecimal): 14910-1492F, 60170-6018F, CBFF0, 60190-6019F, 1100111F. Calcular el tiempo total de acceso a memoria para satisfacer esa cadena de referencias, suponiendo que inicialmente los contenidos de la cache son los que se muestran en la tabla anterior. Indicar claramente cmo evolucionan los contenidos de la
memoria principal y de la memoria cache (indicando las direcciones virtuales que se
ubican en cada bloque y los cambios en las etiquetas), cuando se realiza la cadena de
referencias anterior.
Solucin:
a) Formatos y nmero de pginas
La direccin virtual (DV) es de 1 MB % 220 B y tiene por tanto 20 bits. Adems, el tamao de pgina es de 16 KB % 214 B, por lo que se utilizan 14 bits para el desplazamiento, y
quedan entonces 6 bits para indicar el nmero de pgina.

En la misma lnea, la direccin fsica (DF) es de 64 KB % 216 B y por tanto necesita


16 bits. Por tanto, con respecto a la memoria virtual (MV) la direccin fsica necesita de
14 bits para el desplazamiento y 16 . 14 % 2 bits para indicar el marco de pgina.

Captulo 12 Memoria

471

Desde el punto de vista de la memoria cache (MC), un bloque consta de 64 B % 26 B.


El nmero de conjuntos se puede calcular fcilmente mediante la siguiente ecuacin:
256 B
B
64
bloque
% 2 conjuntos
nC %
bloques
2
conjunto
De donde la DF necesita de 6 bits para indicar la palabra, 1 bit para el conjunto y
16 . 1 . 6 % 9 bits para la etiqueta.

b) Nmero de bits necesarios para implementar la MC y la tabla de pginas (TP)


La Tabla de Pginas (TP) Asociativa tiene una entrada por cada marco de pgina en MP,
posee por tanto 4 entradas (64 KB de tamao de MP/16 KB por pgina). Adems, cada
entrada est compuesta por el nmero de pgina en la DV (6 bits) y el marco de pgina
en la DF (2 bits) (ver apartado anterior). Con esto resulta:
Tamao de la TP: 8 bits/registro # 4 registros % 32 bits
Con respecto a la MC, al utilizar una poltica LRU con 2 % 21 marcos por conjunto,
utilizamos un registro de edad que slo requiere 1 bit. Por tanto, el tamao de cada marco
de bloque en la MC con algoritmo LRU es:
Etiqueta: 9 bits.
Registro de edad: 1 bit.
Datos: 64 bytes.
Como tenemos 4 marcos de bloque en MC, podemos concluir:
Tamao de MC: 4 # (9 ! 1 bits) ! 4 # 64 B % 5 B ! 256 B % 261 B (2.088 bits)
c)

Rango de DV y DF en cada marco de pgina y en cada marco de bloque


Tabla de pginas
Como el esquema de una DV es 6 bits de pgina y 14 bits para el desplazamiento, el
rango de DV para esta pgina ser (en binario y hexadecimal):
Rango en binario

Rango en hexadecimal

Pgina r 5
000101 00000000000000..000101 11111111111111

14000..17FFF

472

Problemas de fundamentos y estructura de computadores

Podemos operar de la misma forma para el resto de las pginas de la tabla de pginas,
quedando:
Pgina r 5
000101 00000000000000..000101 11111111111111

14000..17FFF

Pgina r 24
011000 00000000000000..011000 11111111111111

60000..63FFF

Pgina r 63
111111 00000000000000..111111 11111111111111

FC000..FFFFF

Pgina r 50
110010 00000000000000..110010 11111111111111

C8000..CBFFF

Para el caso de las direcciones fsicas, disponemos de los marcos 0, 1, 2, 3 en la tabla


de pginas. Dado que el marco de pgina est compuesto de dos bits y el desplazamiento
de 14 bits, podemos proceder de forma similar a la anterior:
Rango en binario

Rango en hexadecimal

Marco de pgina r 0
00 00000000000000..00 11111111111111

0000..3FFF

Marco de pgina r 1
01 00000000000000..01 11111111111111

4000..7FFF

Marco de pgina r 2
10 00000000000000..10 11111111111111

8000..BFFF

Marco de pgina r 3
11 00000000000000..11 11111111111111

C000..FFFF

Memoria cache
En el caso de la MC vemos cmo resulta la traduccin de direcciones de MP a MC segn
la primera entrada de la tabla, considerando 9 bits para la etiqueta, 1 para el conjunto y 6
para la palabra:
Etiqueta

Conjunto

Bloque

18

Rango en binario
000010010 0 000000
000010010 0 111111

Rango en hexadecimal
0900
093F

Captulo 12 Memoria

473

Podemos proceder de forma similar con el resto de entradas de la memoria cache:


18

000010010 0 000000
000010010 0 111111
259

0
0900
093F

100000011 0 000000
100000011 0 111111
130

1
8180
81BF

010000010 1 000000
010000010 1 111111
511

0
4140
417F

111111111 1 000000
111111111 1 111111

1
FFC0
FFFF

Finalmente comprobamos cmo resulta la traduccin de direcciones de MC a direcciones de MV segn la TP. En el caso de la etiqueta 18, ubicada en el conjunto 0, bloque
0 de MC, est en las direcciones fsicas 090016 a 093F16. Como las direcciones fsicas son
de 16 bits, los dos bits ms significativos de este rango son 002, lo que se corresponde
con el marco de pgina 0. Segn la tabla de pginas, al marco de pgina 0 le corresponde
la pgina 5. Uniendo a este nmero de pgina el campo desplazamiento (14 bits) contemplado en el rango 090016 a 093F16, resulta en el rango de direcciones virtuales:
00002 90016:
00002 93F16:

000101 00 1001 0000 0000, resultando en MV: 1490016


000101 00 1001 0011 1111, resultando en MV: 1493F16

que representa el rango de MV para el bloque ubicado en el marco 0, conjunto 0 de MC.


Podemos proceder de la misma manera para el resto de marcos de bloque de MC, quedando el mapa de MC como sigue:
Rango en MP

Rango en MV

Rango en MV

Etiqueta 18, conjunto 0, marco 0


00002 90016
00002 93F16

000101 00 1001 0000 0000


000101 00 1001 0011 1111

14900
1493F

Etiqueta 259, conjunto 0, marco 1


10002 18016
10002 1BF16

111111 00 0001 1000 0000


111111 00 0001 1011 1111

FC180
FC1BF

Etiqueta 130, conjunto 1, marco 0


01002 14016
01002 17F16

011000 00 0001 0100 0000


011000 00 0001 0111 1111

60140
6017F

Etiqueta 511, conjunto 1, marco 1


11112 FC016
11112 FFF16

110010 11 1111 1100 0000


110010 11 1111 1111 1111

CBFC0
CBFFF

474

Problemas de fundamentos y estructura de computadores

d) Ejecucin de: 14910-1492F, 60170-6018F, CBFF0, 60190-6019F, 1100-111F


Para seguir la evolucin de esta ejecucin, realizamos una traza de los distintos intervalos utilizando los resultados del apartado anterior:
Intervalo 14910-1492F
Como podemos apreciar en el apartado anterior (ver columna Rango en MV), todas
estas direcciones se encuentran cargadas en memoria cache. Por lo tanto el tiempo de
ejecucin en este caso ser:
T1 % 32 # tc
Intervalo 60170-6018F
Como se puede apreciar en el mapa de la memoria cache (ver apartado anterior), las direcciones de este intervalo contenidas en memoria cache van desde 60170 a 6017F, todas
en el conjunto 1, marco 0.
Traduccin de direcciones en el intervalo de MV 60180 a 6018F a direccin fsica

60180 r 0110 0000 0001 1000 0000 r Pgina 24 r Marco de pgina 1


6018F r 0110 0000 0001 1000 1111 r Pgina 24 r Marco de pgina 1
Por lo tanto este rango se encuentra en MP. Como hay que traerlo a MC, para averiguar el conjunto al que pertenece, basta con traducir el rango a direcciones fsicas:

60180 r 0110 0000 0001 1000 0000 r 0100 0001 1000 0000 r 4180
6018F r 0110 0000 0001 1000 1111 r 0100 0001 1000 1111 r 418F
Traduciendo estas direcciones al formato de memoria principal, tenemos:

4180 r 010000011 0 000000 r Conjunto 0


418F r 010000011 0 001111 r Conjunto 0
Esto quiere decir que para leer las DV en el rango pedido (60180-6018F), se deben
traer de MP a MC las direcciones fsicas de la etiqueta 131, conjunto 0 (direcciones fsi-

Captulo 12 Memoria

475

cas 4180-418F), y se trae de memoria MP a MC el bloque 262, cuyo rango de direcciones


fsicas es en realidad (al ser de 64 bytes cada bloque):
010000011 0 000000.. 010000011 0 111111 r 4180..41BF
Como estamos aplicando el algoritmo LRU, se sustituye el marco 1 del conjunto 0,
porque el marco 0 ha sido referenciado anteriormente. En este caso la memoria cache
queda como sigue:
Rango en MP

Rango en MV

Rango en MV

Etiqueta 18, conjunto 0, marco 0


00002 90016
00002 93F16

000101 00 1001 0000 0000


000101 00 1001 0011 1111

14900
1493F

Etiqueta 131, conjunto 0, marco 1


01002 18016
01002 1BF16

011000 00 0001 1000 0000


011000 00 0001 1011 1111

60180
601BF

Etiqueta 130, conjunto 1, marco 0


01002 14016
01002 17F16

011000 00 0001 0100 0000


011000 00 0001 0111 1111

60140
6017F

Etiqueta 511, conjunto 1, marco 1


11112 FC016
11112 FFF16

110010 11 1111 1100 0000


110010 11 1111 1111 1111

CBFC0
CBFFF

En consecuencia, el tiempo de ejecucin de este intervalo se divide en dos: El debido


al sub-intervalo que se encuentra en MC y el que est en MP. Tenemos entonces:
T2 % (16 # tc) ! (tm ! tb ! 16 # tc) % tm ! tb ! 32 # tc
Intervalo CBFF0
Esta direccin se encuentra directamente en MC, por lo que el tiempo de ejecucin es:
T3 % tc
Intervalo 60190-6019F
Son 16 palabras que ya se encuentran en MC, por lo que el tiempo de ejecucin es:
T4 % 16 # tc
Intervalo 01100-0111F
En este caso el intervalo completo no se encuentra en memoria cache.
Traducimos las direcciones en el intervalo a direccin fsica:

476

Problemas de fundamentos y estructura de computadores

01100 r 0000 0001 0001 0000 0000 r Pgina 0 r No est en MP (ver tabla de pginas)
0111F r 0000 0001 0001 0001 1111 r Pgina 0 r No est en MP (ver tabla de pginas)
Por lo tanto tenemos que llevar la pgina 0 de memoria secundaria a memoria principal. Hay que comprobar las secuencias de referencias a pginas para ver cul debemos
sustituir:
14910..1492F r 0001 0100 1001 0001 0000 .. 0001 0100 1001 0010 1111 r Pgina 5
60170..6018F r 0110 0000 0001 0111 0000 .. 0110 0000 0001 1000 1111 r Pgina 24
CBFF0

r 1100 1011 1111 1111 0000 ................................................ r Pgina 50

60190..6019F r 0110 0000 0001 1001 0000 .. 0110 0000 0001 1001 1111 r Pgina 24
Podemos comprobar que la pgina 63 no ha sido referenciada, y por tanto sustituimos
la pgina 63 por la pgina 0, quedando como sigue:
Tabla de pginas asociativa
N.o de pgina

N.o de marco

5
24
0
50

0
1
2
3

De este modo, las direcciones virtuales tradas a MP son (pgina 0):


00000 00000000000000 r 00000 r Pgina 0 r Marco de pgina 2
00000 11111111111111 r 03FFF r Pgina 0 r Marco de pgina 2
Por lo tanto este rango se encuentra ya en MP. Ahora hay que traerlo a MC. Para
averiguar el conjunto al que pertenece, basta con traducir el rango a direcciones fsicas:

01100 r 0000 0001 0001 0000 0000 r 1001 0001 0000 0000 r 9100
0111F r 0000 0001 0001 0001 1111 r 1001 0001 0001 1111 r 911F
Traduciendo estas direcciones al formato de memoria principal, tenemos:

9100 r 100100010 0 000000 r Conjunto 0


911F r 100100010 0 011111 r Conjunto 0

Captulo 12 Memoria

477

Esto quiere decir que para leer las DV en el rango pedido (01100-0111F), se deben
traer de MP a MC las direcciones fsicas de la etiqueta 290, conjunto 0 (direcciones fsicas 9100-911F), y se trae de memoria MP a MC el bloque 580, cuyo rango de direcciones
fsicas es en realidad (al ser de 64 bytes cada bloque):
100100010 0 000000..100100010 0 111111 r 9100..913F
Como estamos aplicando el algoritmo LRU, se sustituye el marco 0 del conjunto 0,
porque el marco 1 ha sido referenciado anteriormente. En este caso la memoria cache
queda como sigue:
Rango en MP

Rango en MV

Rango en MV

Etiqueta 18, conjunto 0, marco 0


10012 10016
10012 13F16

000000 01 1001 0000 0000


000000 01 1001 0011 1111

01900
0193F

Etiqueta 131, conjunto 0, marco 1


01002 18016
01002 1BF16

011000 00 0001 1000 0000


011000 00 0001 1011 1111

60180
601BF

Etiqueta 130, conjunto 1, marco 0


01002 14016
01002 17F16

011000 00 0001 0100 0000


011000 00 0001 0111 1111

60140
6017F

Etiqueta 511, conjunto 1, marco 1


11112 FC016
11112 FFF16

110010 11 1111 1100 0000


110010 11 1111 1111 1111

CBFC0
CBFFF

En consecuencia, el tiempo de ejecucin de este intervalo se corresponde con traer


una pgina de memoria secundaria y un bloque de memoria principal. Tenemos entonces:
T5 % tp % tm ! tb ! 32 # tc
El tiempo total ser por tanto la suma de estos cinco tiempos:
5

T % ; Ti %(32 # tc) ! (tm ! tb ! 32 # tc) ! (tc) ! (16 # tc)!(tp !tm !tb !32#tc)
i%1

de donde finalmente se obtiene:


T % tp ! 2 # tm ! 2 # tb ! 113 # tc
PROBLEMA 21
Disear una memoria de 64 K # 20 bits a partir de pastillas de RAM de 8 K # 8 bits y
32 K # 1 bit.
Solucin:
Una memoria de 64 K % 216 necesita de 16 bits para direccionar cualquier palabra (A15 A14
A13 ... A0). Al disponer las pastillas en forma matricial, necesitamos usar, para reducir espa-

478

Problemas de fundamentos y estructura de computadores

cio, 8 filas # 2 columnas de pastillas de 8 K # 8 bits (3 columnas sobrepasara el tamao de


la palabra, que es de 20 bits), lo que hace 64 Kpalabras de 16 bits/palabra. Para completar los
20 bits aadimos 2 filas # 4 columnas de pastillas de 32 K # 1 bit lo que completan las
64 Kpalabras de 20 bits por palabra.
Para seleccionar una palabra en las pastillas de 8K % 213, utilizamos los 13 bits menos
significativos (A12 ... A0), mientras que la seleccin de una fila u otra (de las ocho posibles) se
realiza con los 3 bits restantes utilizando un decodificador. En el caso de las pastillas de
32K % 215, se procede de la misma forma, los 15 bits menos significativos de la direccin
(A14 ... A0) seleccionan la palabra mientras que el bit ms significativo selecciona una fila u otra.
La siguiente figura muestra un esquema de diseo de lo anteriormente mencionado:

12.5 Problemas propuestos


PROBLEMA 1
En un procesador con 10 ns de periodo de reloj, se tiene una cache con una tasa de fallos de
0,05, y una penalizacin por fallo de 20 ciclos de reloj. Calcular el tiempo medio de los accesos a memoria en funcin del nmero N de ciclos que se invierte en un acierto. Suponiendo
que se pueda mejorar la tasa de fallo a 0,03 pero aumentando 2 ciclos el tiempo de acceso a la
cache. Se consigue mejorar el tiempo medio de acceso a memoria?
PROBLEMA 2
Se tiene un computador A, con una cache de 4 vas con 256 entradas en cada va. El tamao
total de la memoria que almacena las etiquetas de la memoria cache es de 16 Kbits. La memo-

Captulo 12 Memoria

479

ria que almacena los datos en la cache es de 64 Kbits. Cul es la organizacin de la memoria
principal (profundidad y anchura) en el computador A?
Se tiene un segundo computador B, con una cache con la misma estructura y tamao que
el A. La memoria cache B, sin embargo, carga un bloque de 4 palabras cada vez que se produce un fallo de cache (intenta aprovechar el principio de localidad espacial) Cul es la organizacin de la memoria principal (profundidad y anchura) en el computador B?
PROBLEMA 3
Considere el siguiente trozo de cdigo C:
for(j=0;j<100;j=j+1)
for(i=0;i<5000;i=i+1)
x[i][j]=2*x[i][j];

Dicho cdigo es perfectamente correcto desde el punto de vista lgico, pero cmo podra
mejorarse desde el punto de vista de la jerarqua de memoria?
PROBLEMA 4
Sea una memoria principal de 264 palabras y una memoria cache de 26. Sabiendo que la memoria principal tiene unos tiempos de acceso de 150 ns, la memoria cache unos tiempos de
acceso de 8 ns y sabiendo que la MP se divide en 262 bloques, calcular:
a) Formato de la direccin cache para la poltica de emplazamiento directo, formato para la
poltica de emplazamiento asociativo.
b) Formato para la poltica de emplazamiento asociativa por conjunto sabiendo que es una
memoria cache de 4 vas.
c)

Tiempo de trabajo de la cache sabiendo que la tasa de fallos es del 20%.

d) Sabiendo que el tamao de direccin virtual es el mismo que de direccin real y que una
pgina es de 29 palabras, dar el formato de la direccin virtual.
e)

Cuntas pginas puede tener un proceso activo?

f)

Suponiendo que el sistema operativo reserva 258 posiciones de memoria para virtualizar
la memoria, cuntos procesos activos puede haber simultneamente en el sistema.

PROBLEMA 5
Un computador dispone de un sistema de memoria central constituido por una memoria principal MP de 4 MB y una memoria cache MC de 32 KB. La MC tiene un tamao de lnea de 8
bytes, un grado de asociatividad de 4 y una poltica de sustitucin LRU. La MP est diseada
como memoria entrelazada de orden inferior de manera que direcciones consecutivas se encuentran ubicadas en mdulos consecutivos y con un nmero de mdulos tal que permita minimizar el tiempo de transferencia de bloques entre MP y MC. Se pide:
a) Nmero de mdulos de MP y tamao de los mismos.
b) Interpretacin de los bits de la direccin fsica del sistema de memoria para MP.
c)

Interpretacin de los bits de la direccin fsica del sistema de memoria para MC.

480

Problemas de fundamentos y estructura de computadores

d) Si un programa referencia direcciones pertenecientes a los bloques: 63, 64, 128, 1025,
1026, 1027, 2049, 127, 340, 4097, 1025, 1024, 6145, 6147, 6148, 3073, 128, 0, 125, determinar el contenido de los bits de etiqueta correspondientes al conjunto 1.
PROBLEMA 6
En un computador que dispone de un sistema de memoria central con una memoria principal
MP de 64 Kpalabras y una cache de datos MC de 128 palabras con correspondencia asociativa
de 2 vas y 8 palabras por bloque, se ejecuta el siguiente programa:
for(j=0; j<16; j=j+1)
for(i=0; i<2; i=i+1)
z[i][j] = (x[i][j]+y[i][j])/2;

El tiempo de acceso a MP es 10 veces superior al de MC, que es de 5 ns. Suponiendo que


los arrays x[i][j], y[i][j], z[i][j] son ubicados en posiciones consecutivas de memoria a partir
de la direccin 0, uno a continuacin de otro, ordenados por filas, y que sus elementos estn
codificados con 4 palabras:
a) Calcular el tiempo total de acceso a los arrays x[i][j], y[i][j], z[i][j] durante la ejecucin
del programa sabiendo que en MC opera una poltica de escritura directa (write through)
sin asignacin en cache.
b) Calcular la ganancia de velocidad (speedup) del programa que resulta de intercambiar los
bucles i y j respecto a la versin original.
c)

Si el programa anterior es parte de una aplicacin en la que el acceso a los arrays x[i][j],
y[i][j], z[i][j] supone el 30% del tiempo total de ejecucin de la aplicacin, calcular la
ganancia de velocidad (speedup) de la aplicacin cuando se introduce el intercambio de
bucles.

NOTA: Se supone que todas las referencias del programa a los arrays x[i][j], y[i][j], z[i][j] son
convertidas por el compilador en accesos al sistema de memoria (MC-MP), sin la utilizacin
de registros internos.
PROBLEMA 7
Se desea conectar a un microprocesador de 32 lneas de direccin (A31...A0) una memoria
ROM de 8 Kpalabras y una memoria RAM de 128 Kpalabras de manera tal que la ROM se
ubique en la zona ms baja del espacio de direcciones y la RAM en las direcciones contiguas
a la ROM. Calcular las funciones lgicas de seleccin respectivas.
PROBLEMA 8
Un computador dispone de 128 MB de memoria virtual, 16 MB de memoria principal y
128 KB de memoria cache. Se pide:
a) Indicar la codificacin de la direccin de la memoria virtual para los siguientes casos:
Memoria virtual paginada con tamao de pgina de 4 MB.
Memoria virtual segmentada con tamao mximo de segmento de 16 MB.
Memoria virtual paginada segmentada con pginas de 4 MB y tamao mximo del segmento de 16 MB.

481

Captulo 12 Memoria

b) Si la memoria cache presenta 2 vas y un tamao del marco de bloque de 16 KB, adems
de los siguientes valores de las tablas de memoria virtual (re-emplazamiento FIFO) y
memoria cache (re- emplazamiento LRU). Indicar detalladamente qu ocurre cuando se
accede consecutivamente a las siguientes direcciones de memoria virtual: 5A341B1,
0404AFF, 10FFFFF.

c)

N.o pg.

M pg.

FIFO

Etiqueta

Conj.

Va

LRU

16

23

5A

10

52

43

04

18

23

52

04

23

Indicar el conjunto de direcciones tanto de memoria principal como de memoria virtual


del marco de bloque con etiqueta 04.

Al disear un computador, uno de los puntos a tener en cuenta es el diseo del sistema de
entrada-salida, ya que de l depender el rendimiento con el que el computador se comunicar
con los perifricos, y en definitiva, con el mundo exterior. En la siguiente figura se ilustra un
esquema general de entrada/salida.

Antes de empezar a hablar sobre lo que son los mtodos y tcnicas de entrada y salida de
datos debemos conocer los principios de stas, por lo cual es conveniente hablar sobre el medio de transporte de la informacin, tal y como lo es el bus de direcciones, para que una vez

484

Problemas de fundamentos y estructura de computadores

comprendido el concepto de ste nos sea ms fcil entender los trminos y el contenido en
general sobre la entrada y salida de datos.

13.1 Bus de direcciones


Es utilizado por el microprocesador para sealar la celda de memoria (o el dispositivo de E/S)
con el que se quiere operar. El tipo de operacin ser de lectura o de escritura y los datos
implicados viajarn por el bus de datos.
Por l circula la expresin binaria de la direccin de memoria a la cual el microprocesador
quiere acceder. Tiene sentido de flujo unidireccional desde el microprocesador hacia la memoria. Una vez localizados los datos perdidos, su transmisin hacia el microprocesador (o
hacia donde sea) se har a travs del bus de datos.
Los dispositivos de E/S intercambian la informacin con el microprocesador mediante los
puertos de E/S. Cada puerto est asociado con un determinado dispositivo y tiene una direccin que lo identifica.
El ancho de este bus tambin es una medida de la potencia del microprocesador, ya que
determina la cantidad de memoria a la que ste puede acceder, es decir, la cantidad de espacio
direccionable. El espacio de direcciones es el rango de valores distintos que el microprocesador puede seleccionar. La cantidad mxima de direcciones disponibles ser 2n, siendo n el
nmero de lneas del bus de direcciones.

13.2 Mdulos de E/S


Los perifricos los hay de entrada, de salida y de entrada-salida. Destinados a la comunicacin con el ser humano o con otros computadores, pero todos ellos constan de dos partes claramente diferenciadas: el controlador y el dispositivo.
El controlador del perifrico es el encargado de la comunicacin con la CPU. El que
lleva a cabo el protocolo de comunicacin y el que realiza la transferencia de datos propiamente
dicha. Los dispositivos de E/S se conectan al computador a travs de un controlador de E/S.
Cada controlador est a cargo de un tipo especfico de dispositivo.
Dependiendo del controlador, pueden estar varios dispositivos conectados al mismo
controlador.
El controlador se encarga de mover datos entre el dispositivo perifrico que controla y
el buffer de almacenamiento local. El tamao del buffer vara de un controlador a otro y
depende del dispositivo que controla.
El dispositivo es realmente el perifrico, electrnico una memoria USB, electromecnico
como un disco duro, un transductor como en el caso de los sensores de temperatura o movimiento.

13.3 Gestin de la comunicacin CPU-perifricos


En la gestin de la comunicacin de la entrada/salida se deben tener en cuenta tres aspectos
que detallamos a continuacin.

Captulo 13 Entrada/salida

485

13.3.1 Seleccin del perifrico


Identificar el perifrico entre todos los disponibles mediante el direccionamiento del mismo.
Para comunicarse con un perifrico la CPU debe seleccionarlo, indicar el sentido de la comunicacin (lectura o escritura) y enviar los datos. Para seleccionar la direccin de un perifrico
(comnmente denominado puerto), la CPU suele utilizar direcciones. Existen dos mtodos
generales para ubicar las direcciones de E/S:
E/S aislada: los espacios de direccionamiento de puertos y de direcciones de memoria
son diferentes por lo que se debern incluir instrucciones propias de entrada-salida. Por
ejemplo, en el i80x86 posee instrucciones IN y OUT.
E/S localizada en memoria: El espacio de direcciones es comn, es decir, tanto direcciones de memoria como de puertos de entrada-salida forman un espacio de direcciones comn, por lo que las instrucciones del repertorio son las mismas para ambos
tipos de transferencia (por ejemplo, MOVE X, Y para mover dato a registro o dato a
perifrico).

13.3.2 Gestin de las seales de control


Determinar para cada tipo de sincronizacin y cada tipo de seleccin de perifrico el conjunto
de seales de control que debern ser tenidos en cuenta por la Unidad de Control para la correcta gestin de la comunicacin.

13.3.3 Sincronizacin con la CPU


Se trata de evitar los problemas surgidos de las diferentes velocidades de trabajo de la CPU y
de los perifricos, de evitar inundar al perifrico con datos provenientes de la CPU y evitar
que sta se quede esperando los datos del perifrico.
Son posibles tres tcnicas de sincronizacin:
E/S programada.
E/S mediante interrupciones.
E/S mediante DMA.

13.4 E/S programada


Los datos se intercambian entre la CPU y el mdulo de E/S. La CPU ejecuta un programa que
controla directamente la operacin de E/S, incluyendo la comprobacin del estado del dispositivo, el envo de la orden de lectura o escritura y la transferencia del dato. Cuando la CPU
enva la orden debe esperar hasta que la operacin de E/S concluya. Si la CPU es ms rpida,
sta estar ociosa. La CPU es la responsable de comprobar peridicamente el estado del mdulo de E/S hasta que encuentre que la operacin ha finalizado.

486

Problemas de fundamentos y estructura de computadores

Algoritmo de lectura y escritura mediante E/S programada para un nico perifrico.

13.5 E/S mediante interrupciones


Los perifricos avisan a la CPU cuando estn listos para ser atendidos. Cuando la interrupcin
es aceptada por la CPU, sta abandona momentneamente el programa principal para ejecutar
la Rutina de Tratamiento de Interrupciones (RTI) y realiza la transferencia. Es necesario mencionar que antes de que se ejecute la correspondiente RTI se deben deshabilitar el resto de las
interrupciones.

13.5.1 Peticin de interrupcin


Para realizar la peticin de interrupcin existen diversas alternativas:
Una nica lnea de peticin de interrupcin (INTR): A esta lnea se conectan todos los
perifricos.
Varias lneas de peticin de interrupcin (INTRi): En este esquema cada uno o cada
grupo de perifricos solicitan ser atendidos por una lnea diferente.

13.5.2 Reconocimiento de interrupcin


A la hora de conceder una determinada peticin de interrupcin existen varias posibilidades.

Captulo 13 Entrada/salida

487

Por encuesta software: Una vez recibida la peticin de interrupcin por INTR, la CPU
utiliza un mecanismo de encuesta va software para identificar el perifrico que solicit
la interrupcin.
Una nica lnea de reconocimiento de interrupcin (INTA): En este caso la CPU enva
una seal cableada a todos los perifricos para indicar que se ha concedido la interrupcin.
Varias lneas de concesin (INTAi): La CPU enva una seal de reconocimiento al nivel
que solicit la interrupcin.

13.5.3 Identificacin del dispositivo


Cuando la CPU concede la interrupcin por alguno de los mecanismos anteriores, esta debe
identificar el dispositivo que la solicit para ejecutar la RTI correspondiente. Existen varias
alternativas:
Identificacin software: Se dispone de una nica RTI que realiza una encuesta a todos
los perifricos para saber qu operaciones debe ejecutar.
Identificacin hardware: En este caso cada perifrico o nivel (en el caso de tener varias
lneas de peticin de interrupcin) dispone de un vector o autovector, respectivamente,
a partir de los cuales se calcula la direccin de comienzo de la RTI correspondiente.
Otros: En algunos casos, especialmente en las interrupciones por niveles, se dispone de
una RTI por nivel que se obtiene mediante un vector o autovector. A continuacin un
mecanismo de encuesta software suele reconocer el perifrico del nivel para ejecutar las
operaciones oportunas.

13.5.4 Prioridades
Existen muchos mecanismos para establecer prioridades entre interrupciones, los ms utilizados son:
Prioridad en orden: Es el orden de la encuesta software o la propagacin de la seal
INTA la que determina qu perifrico ser atendido en primer lugar.
Codificadores de prioridad: Se pueden aadir codificadores de prioridad para establecer
qu interrupcin ser atendida en primer lugar.
Enmascaramiento selectivo: En algunas ocasiones se puede introducir un registro de
mscara para descapacitar (va puertas AND, por ejemplo) distintos niveles de interrupciones.

13.6 E/S DMA (Direct Memory Access)


La E/S con interrupciones, aunque ms eficiente que la E/S programada, tambin requiere la
intervencin de la CPU para transferir datos entre la memoria y el mdulo de E/S.
Sea el siguiente ejemplo: cuando se va a leer una lnea desde un monitor, el primer carcter escrito es enviado al computador. Cuando el carcter es recibido por el controlador, ste

488

Problemas de fundamentos y estructura de computadores

interrumpe a la CPU. La CPU le da servicio a la interrupcin y luego continua con el proceso


que estaba ejecutando. Esto es posible cuando el dispositivo es muy lento comparado con la
CPU. Entre un carcter y otro la CPU lleva a cabo gran cantidad de procesamiento. Pero qu
sucede cuando estamos trabajando con dispositivos de E/S ms veloces? Tendramos
interrupciones muy seguidas y se estara desperdiciando mucho tiempo.
Para evitar esto, se utiliza DMA para dispositivos de E/S de alta velocidad. El controlador
del dispositivo transfiere un bloque de datos desde o para sus buffers de almacenamiento a
memoria directamente sin intervencin de la CPU. Slo se produce una interrupcin por bloque en lugar de tener una interrupcin por cada byte (o palabra).
Por ejemplo, un programa solicita una transferencia de datos. El Sistema de Operacin
busca un buffer disponible. El controlador de DMA tiene sus registros actualizados con las
direcciones de la fuente y del destino y la longitud de la transferencia. Por lo general esta
actualizacin es realizada por el manejador de dispositivo (rutina). Se indica al controlador de
DMA a travs de bits de control en un registro de control para que inicie la operacin de E/S.
Mientras tanto la CPU puede llevar a cabo otras operaciones. El controlador de DMA
interrumpe la CPU cuando la transferencia ha sido terminada. La CPU interviene slo al comienzo y al final de la transferencia.
Algunos dispositivos de entrada/salida envan datos a la memoria ms rpido de lo que el
microprocesador puede manejar. El controlador de DMA es un circuito integrado dedicado
que puede enviar y recibir datos ms rpido que el microprocesador. Luego, dispositivos como discos pticos y magnticos utilizan este integrado para acceder a la memoria del sistema.
Finalmente, tambin se dispone de entrada/salida mediante procesadores de entrada/salida. En este caso se emplea una CPU secundaria dedicada a la gestin de la operacin de entrada/salida.

13.7 Problemas resueltos


PROBLEMA 1
Determinemos el impacto de la sobrecarga de la encuesta en el caso de tres dispositivos
diferentes suponiendo que el nmero de ciclos que requiere una operacin de encuesta es
100 y que el procesador trabaja con un reloj de 50 MHz. Determinar la fraccin de tiempo
de CPU que se consume en cada uno de los 3 casos siguientes:
a) El ratn debe ser encuestado 30 veces por segundo para asegurar que no se pierde
ningn movimiento realizado por el usuario.
b) El CD transfiere datos al procesador en unidades de 16 bits a una velocidad de
50 KB/s. No debe perderse ningn dato.
c)

El disco duro transfiere datos en bloques de 4 bytes a una velocidad de 2 MB/s. No


debe perderse ningn dato.

Solucin:
a) Ciclos de reloj por segundo para realizar la encuesta % 30 # 100 % 3.000 ciclos por segundo.

Captulo 13 Entrada/salida

Fraccin de ciclos de reloj consumidos por el procesador %

489

3.000
% 0,006%
50 # 106

Por tanto, la encuesta puede ser utilizada para el ratn sin mucho impacto en el rendimiento del procesador.
b) Para el CD, la velocidad a la que se debe preguntar es:
KB
encuestas
encuestas
s
% 25 K
% 25 # 210
B
s
s
2
encuesta
50

Y por tanto, el nmero de ciclos es:


25 # 210

encuestas
ciclos
ciclos
# 100
% 25,6 # 105
s
s
encuesta

Y finalmente:
Fraccin consumida por el procesador %

25,6 # 105
% 5%
50 # 106

Aunque el porcentaje es sustancial, an puede ser tolerado en un sistema de bajas


prestaciones.
c)

Es similar al apartado anterior:


MB
ciclos
s
ciclos
# 100
% 51,2 # 106
B
encuesta
s
4
encuesta
2

Fraccin consumida por el procesador %

51,2 # 106
] 100%
50 # 106

Por lo tanto la CPU estar totalmente ocupada encuestando al disco.


PROBLEMA 2
Se dispone de un procesador que trabaja con un reloj de 50 MHz y de un CD que transfiere
datos al procesador en unidades de 16 bits a una velocidad de 50 KB/s. A este sistema se le
aade un controlador de interrupciones tal que el tiempo invertido en una transferencia es
de 100 ciclos de reloj. Determinar la fraccin consumida por el procesador cuando el CD
est activo.
Solucin:
La velocidad a la cual el CD debe interrumpir cuando est transfiriendo es:

490

Problemas de fundamentos y estructura de computadores

KB
ciclos
ciclos
s
ciclos
# 100
% 2.500 # 210
% 25,6 # 105
B
s
s
interrupcin
2
interrupcin
50

Y por tanto:
Fraccin consumida por el procesador %

25,6 # 105
% 5%
50 # 106

La gran diferencia con la E/S programada es que el CD no est leyndose el 100% del
tiempo y por tanto el dispositivo no perturba a la CPU, al contrario que con la E/S programada, donde la CPU encuesta sin descanso a los dispositivos. Por ejemplo, si el CD est transfiriendo el 10% del tiempo total del sistema, la CPU ser perturbada solamente el 0,5%.
PROBLEMA 3
Se dispone de un procesador que trabaja con un reloj de 50 MHz y de un disco duro que
transfiere datos en bloques de 4 bytes a una velocidad de 2 MB/s. A este sistema se le
aade un controlador de DMA. Una transferencia de DMA utiliza 1.000 ciclos de reloj del
procesador, y el tratamiento de interrupcin tras la finalizacin de la transferencia necesita
500 ciclos de reloj. Si la transferencia media del disco es de 4 KB, determinar la fraccin
consumida por el procesador cuando el disco duro est activo.
Solucin:
Cada transferencia de DMA utiliza:
KB
s
transf.
% 2 # 10.3
MB
transf.
2
s

Si el disco est transfiriendo constantemente, ste requiere:


ciclos
ciclos
transf.
% 750 # 103
s
s
transf.

(1.000 ! 500)
2 # 10.3

Como el procesador es de 50 MHz:


Fraccin consumida por el procesador %

750 # 103
% 1,5%
50 # 106

PROBLEMA 4
En la siguiente figura se presenta un diagrama con el circuito de gestin de interrupciones
de un sistema de E/S, tal que la prioridad es ascendente: prioridad INTR0 a INTR1 a
a INTR2 a INTR3. Determine la expresin lgica que define INTR.

Captulo 13 Entrada/salida

491

Solucin:
La figura muestra un sistema de gestin de interrupciones. En este caso no nos importa la
gestin interna de las prioridades, ya que lo que pide el enunciado es el diseo lgico de la
seal INTR. Esto es, independientemente de cmo se diseen las prioridades, se producir una
solicitud de interrupcin siempre que se active alguna de las seales INTRi (i % 0..3). Dicho
esto la funcin asociada a INTR no es ms que la suma lgica de las INTRi:
INTR % INTR0 ! INTR1 ! INTR2 ! INTR3
PROBLEMA 5
Un computador tiene tres lneas de peticin de interrupcin de distinta prioridad:
INTR0 a INTR1 a INTR2 y tres lneas de aceptacin asociadas: INTA0, INTA1, INTA2.
a) Obtener la tabla de verdad de las salidas INTA0, INTA1, INTA2 en funcin del valor de
las entradas INTR0, INTR1, INTR2.
b) Disear un circuito lgico que implemente ese esquema de prioridades.
Solucin:
El sistema de gestin de interrupciones viene dado por la siguiente figura.

492

Problemas de fundamentos y estructura de computadores

a) La tabla de verdad que resulta segn las prioridades indicadas es la siguiente:


INTR2

INTR1

INTR0

INTA2

INTA1

INTA0

de donde las funciones de conmutacin que se obtienen son las siguientes:


INTA2 % INTR2
INTA1 % INTR1 . INTR2
INTA0 % INTR0 . INTR1 . INTR2
b) El circuito lgico que resulta es un sistema combinacional puro simple que tiene la siguiente implementacin:

PROBLEMA 6
Una CPU dispone de una lnea de peticin de interrupcin (INTR) y de una lnea de aceptacin de interrupcin (INTA). Se desea disear para esa CPU un controlador de interrupciones de forma que:
Se pueda atender interrupciones generadas por 3 dispositivos externos mediante lneas de peticin de interrupcin (ver figura).
Cuando se reciben peticiones de interrupcin simultneas, slo se reconoce la ms
prioritaria. La mnima prioridad la tiene INTR0 y la mxima INTR2.
Cada una de estas lneas de interrupcin se ha de poder enmascarar de manera selectiva mediante un registro de mscara (M2M1M0) del controlador de interrupciones.
Cuando la CPU activa su lnea de aceptacin, INTA, se debe informar al perifrico
correspondiente, de manera individual, que su peticin ha sido aceptada utilizando
las lneas de aceptacin INTA2, INTA1, INTA0.

Captulo 13 Entrada/salida

493

Controlador de interrupciones enmascarables.

a) Obtener la funcin lgica de las lneas INTR, INTA2, INTA1, INTA0 en funcin de las
lneas INTR0, INTR1, INTR2, INTA y de los bits del registro de mscara.
b) Disear el circuito lgico del controlador de interrupciones.
c)

Disear una conexin de varios controladores de interrupciones de 3 entradas, como el


diseado en el apartado anterior, para poder atender las peticiones de interrupcin de 7
perifricos externos.

Solucin:
a) La seal INTR se activa si alguna de las seales INTRi se activa y siempre y cuando su
correspondiente bit de mscara Mi est activo:
INTR % INTR2 . M2 ! INTR1 . M1 ! INTR0 . M0
La obtencin de las tres lneas de aceptacin INTAi es casi inmediata teniendo en
cuenta que:
INTA2 se activa siempre y cuando la CPU haya concedido la peticin, es decir, haya
activado INTA, la peticin del dispositivo 2 est activa (INTR2 % 1) y este nivel no est
enmascarado (M2 % 1).
INTA1 se activa si INTA % 1, si el dispositivo 1 ha solicitado una interrupcin
(INTR1 % 1 y M1 % 1) y el dispositivo 2 no lo ha hecho (INTR2 % 0 o M2 % 0).
INTA0 se activa si INTA % 1, si el dispositivo 0 ha solicitado una interrupcin
(INTR0 % 1 y M0 % 1) y ni el dispositivo 1 ni el 2 lo han hecho (INTR1 % 0 o M1 % 0 y
INTR2 % 0 o M2 % 0).
A esta conclusin tambin se puede llegar construyendo las tablas de verdad. En cualquier caso resulta:
INTA2 % INTA . INTR2 . M2
INTA1 % INTA . INTR1 . M1 . (INTR2 . M2)
INTA0 % INTA . INTR0 . M0 . (INTR2 . M2) . (INTR1 . M1)

494

Problemas de fundamentos y estructura de computadores

b) La siguiente figura muestra un posible diseo:

c)

La conexin de los controladores puede realizarse como se muestra en la siguiente figura:

Con la estructura mostrada en la figura anterior, el dispositivo ms alejado de la CPU


es el que tiene mayor preferencia.
Cuando se produce una peticin por cualquiera de las lneas INTRi, sta se propaga
por los controladores intermedios mediante sus lneas originales INTR2 hasta llegar a la
CPU. De la misma forma, cuando la CPU activa su seal de reconocimiento de interrup-

Captulo 13 Entrada/salida

495

cin INTA, los controladores intermedios propagan esta seal a travs de la lnea original
de aceptacin INTA2.
PROBLEMA 7
Un procesador de 16 bits (direcciones y datos) dispone de una nica lnea de interrupcin
INTR con vector en la direccin FFFF16. El procesador no dispone de seal INTA, es decir,
cuando decide conceder una interrupcin, vuelca directamente la direccin del vector sobre el bus de direcciones. Disear un controlador de interrupciones para dotar al procesador de 4 lneas autovectorizadas INTR0, INTR1, INTR2 e INTR3 con prioridad ascendente
(INTR0 la menos prioritaria e INTR3 la ms prioritaria) con vectores en las direcciones
FFFC16, FFFD16, FFFE16 y FFFF16 respectivamente.
Solucin:
En este caso cuando el procesador concede una peticin de interrupcin, vuelca directamente
la direccin del vector (FFFF16) sobre el bus de direcciones.
Para introducir 4 lneas de peticin de interrupcin, basta con utilizar un codificador de
prioridad 4 a 2:

Cuatro lneas de peticin de interrupcin.

De esta forma, si alguna de las lneas INTRi solicita una interrupcin, el codificador pondr su lnea de activacin (A) a 1 y en consecuencia se activar INTR. A continuacin, la CPU
volcar la direccin FFFF16 sobre el bus de direcciones, direccin que debemos modificar
para obtener el valor correcto en funcin de la lnea que haya solicitado la interrupcin
(FFFC16, FFFD16, FFFE16 y FFFF16). Como se puede apreciar, de las cuatro direcciones
slo habr que modificar dos de los 16 bits.

496

Problemas de fundamentos y estructura de computadores

La tabla de modificacin del bus de direcciones es la siguiente:


A15...A0

INTR3

INTR2

INTR1

INTR0

A1A0

FFFF

0
0
0
1

0
0
1
0

0
1
0
0

1
0
0
0

00 r A15...A0 % FFFC16
01 r A15...A0 % FFFD16
10 r A15...A0 % FFFE16
11 r A15...A0 % FFFF16

Por ejemplo, si interrumpe la lnea 0 (INTR0) tendremos que modificar FFFF16 a FFFC16.
Por el contrario, si interrumpe la lnea 3, tendremos que dejar el bus de direcciones como est.
Posteriormente, se dispondr de una tabla de vectores para acceder a la direccin especificada y extraer la direccin de la RTI correspondiente.
Un posible diseo consiste en utilizar puertas AND, OR, NOT para implementar el controlador, pero resulta mucho ms sencillo si en lugar de esto utilizamos multiplexores y el
codificador de prioridad anterior:

PROBLEMA 8
Una CPU tiene una longitud de palabra de 8 bits y cuenta con una sola entrada de peticin
de interrupcin (INTR) y la correspondiente salida de reconocimiento (INTA). Se quiere
dotar a la CPU de 4 niveles de peticin de interrupcin, en cada uno de los cuales puedan
interrumpir 4 dispositivos perifricos. Disear la lgica de control de interrupciones que
hay que aadir a la CPU de modo que:
a) Se resuelvan las prioridades de los dispositivos del mismo nivel.

Captulo 13 Entrada/salida

497

b) Se resuelvan las prioridades de los distintos niveles.


c)

Se identifique el dispositivo mediante un vector de 8 bits. Describir el funcionamiento


de la unidad diseada.

Solucin:
Disponemos de cuatro niveles y cuatro dispositivos por nivel. Utilizaremos la siguiente nomenclatura:
INTRij para denotar la peticin de interrupcin del perifrico j por el nivel i.
INTAij para denotar el reconocimiento de la interrupcin del perifrico j en el nivel i.
INTRi para denotar la peticin de interrupcin por el nivel i.
INTAi para denotar el reconocimiento de la interrupcin al nivel i.
Recuerda: La CPU comprueba si hay interrupciones pendientes (lnea INTR activada) al
final de la ejecucin de cada instruccin. La secuencia bsica a seguir es:
1.

El perifrico activa INTR.

2.

La CPU activa la confirmacin INTA.

3.

El perifrico que ha solicitado la interrupcin, si recibe INTA, propaga el nmero de


vector por el bus de datos.

4.

La CPU ejecuta la RTI correspondiente al nmero de vector recibido.

Este esquema presenta algunas variantes en funcin del diseo que se lleve a cabo del tratamiento de interrupciones.
a) En cuanto a la solicitud de interrupcin por el mismo nivel, podemos establecer un esquema de prioridad ascendente, es decir, para el nivel i, INTRi0 a INTRi1 a INTRi2 a
a INTRi3.
Teniendo todo esto en cuenta, y utilizando codificadores de prioridad, el esquema
hardware para un nivel dado i es el que sigue:

El codificador de prioridad codifica la entrada de mayor prioridad activa. Si al menos


una entrada al codificador est activa, entonces A % 1. Si A % 0, significa que todas las

498

Problemas de fundamentos y estructura de computadores

entradas al codificador estn inactivas. Las salidas O1 y O0 las utilizaremos ms adelante


para generar el vector de interrupciones. De momento no son necesarias.
b) Al igual que en el apartado anterior, en cuanto a la solicitud de interrupcin por distintos
niveles, podemos establecer un esquema de prioridad ascendente, es decir,
INTR0 a INTR1 a INTR2 a INTR3
Para resolver la peticin de interrupcin entre distintos niveles basta con conectar las
salidas INTRi (i % 0..3) del apartado anterior a un nuevo codificador de prioridad, de forma que la salida A de este codificador se corresponde con la entrada INTR a la CPU:

Segn la figura, podemos observar que en cuanto uno de los niveles solicita una
interrupcin, la entrada A se activa y en consecuencia la CPU recibe la notificacin (se
activa INTR).
De la seal INTA nos ocuparemos en el siguiente apartado.
c)

Una vez que la CPU recibe INTR, sta activar la seal INTA, y en consecuencia se leer
el nmero de vector correspondiente al perifrico que solicit la interrupcin.
Con el diseo que hemos venido desarrollando, y dado que se deja en nuestras manos
la eleccin del nmero de vector, la codificacin del vector va a ser sencilla.
Hasta ahora no hemos utilizado las salidas O1 y O0 de los codificadores de prioridad,
pero est claro que el nmero de vector puede tener la forma 0000XXYY, donde XX es
la salida del codificador de niveles e YY es la salida del codificador de cuatro perifricos.
Evidentemente INTA debe habilitar la salida de este nmero de vector. Una posible
implementacin por tanto puede ser la que se muestra en la figura de la pagina siguiente.
Como se puede apreciar en dicha figura hemos obviado algunas implementaciones,
como la del multiplexor y algunas agrupaciones de lneas. En cualquier caso podemos
observar cmo la informacin del nmero de vector es generada nicamente si INTA est
activa, debido al bfer triestado de la figura, que es habilitado mediante esta seal.

Captulo 13 Entrada/salida

499

Implementacin final.

PROBLEMA 9
Una CPU dispone de 8 lneas de datos, 16 lneas de direcciones, una lnea de peticin de
interrupcin INTR y una lnea de reconocimiento INTA. Disear un controlador de
interrupciones para dotar a este sistema de 4 niveles vectorizados enmascarables selectivamente, de tal forma que:

500

Problemas de fundamentos y estructura de computadores

Los registros que almacenan los vectores forman parte del controlador de interrupciones y pueden leerse y escribirse desde la CPU. Estos registros ocupan las direcciones hexadecimales FFF0-FFF3.
Lo mismo para el registro de mscara. Su direccin es la FFF416.
Solucin:
La solucin de este problema se puede plantear en dos etapas:
La primera consiste en disear el mecanismo de peticin y reconocimiento de interrupciones.
La segunda consiste en disear el mecanismo de lectura/escritura de los vectores y del
registro de mscara.
En cualquier caso, el diagrama simplificado del controlador solicitado podra ser el mostrado en la figura. Este diagrama incluye los registros (de vectores y mscara), las seales de
peticin y reconocimiento de interrupcin, el bus de datos, el bus de direcciones y la seal de
lectura/escritura (1 r lectura, 0 r escritura).

Esquema del controlador de interrupciones.

En primer lugar procedemos con la resolucin de peticiones y reconocimiento de interrupciones. En cuanto a la peticin de interrupciones, y siguiendo el esquema de problemas anteriores, podemos hacer uso de un codificador de prioridad que junto con el registro de mscara
filtre la lnea que solicita la interrupcin. Es importante destacar que debido a que el registro
de mscara forma parte del controlador no es necesario hacer uso de los buses para solicitar la
informacin del mismo. Por otro lado, podemos utilizar un mecanismo de prioridad ascendente (INTR0 a INTR1 a INTR2 a INTR3), con lo que el diseo podra ser el siguiente:

Captulo 13 Entrada/salida

501

Diseo de peticin de interrupciones.

Por otro lado, el reconocimiento de interrupcin por los distintos niveles (INTAi) puede
realizarse de mltiples formas. Una de ellas es utilizar un decodificador 2 a 4 con una seal de
capacitacin (E). Esta seal estar directamente conectada a INTA, de forma que el decodificador se pondr en funcionamiento siempre y cuando la CPU reconozca la peticin. Cada
salida del decodificador se corresponde con una lnea de reconocimiento de interrupcin (INTAi). El diseo final se muestra en la siguiente figura:

Diseo de solicitud y reconocimiento de interrupciones.

En cuanto a la lectura y escritura de los registros del controlador, el procedimiento consiste en conectar los cuatro registros al bus de datos con dos caminos, uno para lectura (del registro al bus de datos) y otro para escritura (del bus de datos al registro). Un posible esquema
podra ser el de la figura siguiente.

502

Problemas de fundamentos y estructura de computadores

Lectura y escritura de los registros. Seales de control.

Por otro lado, cul es la lgica de las seales de control MaskRead, MaskWrite, ViRead y
ViWrite? Con respecto al registro de mscara parece claro que solamente una instruccin del
repertorio podr hacer las funciones de lectura o escritura. En cuanto a los vectores Vi, la
operacin de escritura podr ser realizada por instrucciones del repertorio, pero la operacin
de lectura podr hacerse cuando: (a) una instruccin lo requiera o (b) se reconozca una
interrupcin (INTAi % 1), es decir:
ViRead % ViRead ! INTAi
donde ViRead denota la lectura del vector por parte de una instruccin.
Finalmente, la activacin de las seales de control anteriores debe ir acompaada por las
seales de control de la CPU junto con la direccin correcta en el bus de direcciones. En la
figura se ilustra el procedimiento de activacin de dichas seales.

Diseo de activacin de las seales de control para lectura (izquierda) y escritura (derecha).

Captulo 13 Entrada/salida

503

Como se puede apreciar en la figura, se activarn las seales de control en funcin de la


seal R/W, (1 lectura, 0 escritura) y de que la direccin suministrada por la CPU (A15..A0) sea
la correcta (FFF016 a FFF416).
Finalmente, para resumir, en la siguiente figura se muestra el diseo completo.

Esquema del diseo completo.

504

Problemas de fundamentos y estructura de computadores

PROBLEMA 10
Un procesador dispone de ocho lneas de interrupcin (numeradas del 0 al 7) y una poltica
en la que las interrupciones con un nmero bajo tienen mayor prioridad sobre aquellas de
nmero ms alto. El procesador comienza sin interrupciones pendientes y se produce la
siguiente secuencia de interrupciones: 4, 7, 1, 3, 0, 5, 6, 4, 2, 1. Suponga que la gestin de
una interrupcin tarda el tiempo suficiente para que se produzcan dos nuevas interrupciones y que las interrupciones no se pueden interrumpir entre s. Calcule el orden en que se
gestionan las interrupciones.
Solucin:
Segn el enunciado la gestin de una interrupcin tarda el tiempo suficiente para que se
produzcan dos nuevas interrupciones. Esto significa que mientras se atiende la primera
interrupcin (4) se pueden producir hasta dos nuevas interrupciones (7, 1). Despus de (4) se
atender la de mayor prioridad (1), lo que dar tiempo a dos nuevas interrupciones (3, 0).
Como se est procesando la interrupcin 1, las interrupciones pendientes hasta ahora son (7,
3, 0). Una forma de resolver este problema es crear una lista de interrupciones pendientes.
Cada vez que el procesador queda libre se gestiona la interrupcin pendiente de mayor prioridad (que es la de menor nmero), eliminndola de la lista. En la tabla siguiente se muestra el
orden en que van siendo atendidas las interrupciones, as como las interrupciones solicitadas y
pendientes en cada momento.
Interrupcin atendida

Interrupciones solicitadas

Interrupciones pendientes

7, 1

7, 1

3, 0

7, 3, 0

5, 6

7, 3, 5, 6

4, 2

7, 5, 6, 4, 2

7, 5, 6, 4, 1

La interrupcin 4 es la que se gestiona en primer lugar, ya que es la primera en llegar.


Cuando el procesador termina de gestionar la interrupcin 4, estn pendientes las interrupciones 7 y 1, por lo que se gestiona la interrupcin 1. Repitiendo dicho proceso, se obtiene el
orden de gestin de las interrupciones siguientes: 4, 1, 0, 3, 2. Despus de atender la interrupcin 2 quedan cinco interrupciones pendientes (7, 5, 6, 4, 1), que se atendern segn su prioridad. Es decir, en el orden: 1, 4, 5, 6, 7.
Por lo tanto, el orden en el que se gestionan las interrupciones es el siguiente: 4, 1, 0, 3, 2,
1, 4, 5, 6, 7.
PROBLEMA 11
Un controlador de DMA est transmitiendo, mediante robo de ciclos, caracteres a memoria
desde un perifrico a una velocidad de 19.200 bps (bits/s). Por su parte la CPU realiza la
bsqueda de las instrucciones con una velocidad de 2 millones de instrucciones por segun-

Captulo 13 Entrada/salida

505

do (2 MIPS). En qu porcentaje se reduce la velocidad del procesador debido al controlador de DMA?


Suponer una longitud de palabra de M bits y que la CPU emplea, en promedio, N ciclos
para ejecutar una instruccin.
Solucin:
La siguiente figura muestra un esquema de funcionamiento de DMA con robo de ciclo. Cuando el DMA toma el control retiene el bus durante un ciclo, transmite la palabra y libera el bus.

DMA con robo de ciclo.

El controlador de DMA est transmitiendo a una velocidad de 19.200 bps. Como la longitud de palabra es de M bits, el nmero de palabras por segundo que se transmiten es:
19.200 bps 19.200 palabras
%
bits
M segundo
M
palabra
Como en cada ciclo el DMA transmite una palabra completa se produce igual nmero de
robo de ciclos:
19.200 ciclos
Ciclos robados por segundo %
M segundo
Cuntas instrucciones deja de ejecutar la CPU cada segundo? Podemos calcularlo teniendo en cuenta que la CPU emplea una media de N ciclos en ejecutar una instruccin:
19.200 ciclos
M segundo
%
Instrucciones que deja de ejecutar la CPU por segundo %
ciclos
N
instruccin
%

19.200 instrucciones
M # N segundo

Ahora bien, la CPU cuando no dispone de DMA ejecuta 2 # 106 instrucciones por segundo, por lo tanto, la fraccin de instrucciones no ejecutadas es (en porcentaje):

506

Problemas de fundamentos y estructura de computadores

19.200 instrucciones
M # N segundo
% instrucciones no ejecutadas por segundo %
# 100 %
instrucciones
6
2 # 10
segundo
%

0,96
1.920.000
%
6 %%
M#N
M # N # 2 # 10

Por lo tanto, el porcentaje de reduccin nunca ser mayor del 0,96%.


PROBLEMA 12
Un computador dispone de una unidad de disco con una velocidad de lectura de 221 palabras por segundo que para transferir su contenido a la memoria principal utiliza DMA por
rfagas. El controlador de DMA tarda 4 ciclos de reloj en transmitir cada palabra. Cuando
la CPU dispone en exclusiva del bus las instrucciones emplean, en promedio, 8 ciclos de
reloj en ser ejecutadas. Si la frecuencia de reloj del computador son 500 # 106 ciclos/s, en
una operacin de lectura del disco Cuntas instrucciones por segundo dejan de ser ejecutadas por la CPU?
Solucin:
En un segundo la unidad de disco lee 221 palabras.
Estas palabras necesitan 221 palabras # 4 ciclos/palabra % 223 ciclos para transferirse a
memoria cada segundo.
Estos 223 ciclos suponen 223/8 % 220 instrucciones que la CPU no ejecuta en un segundo.
Esto supone un porcentaje de uso de la CPU de aproximadamente el 0,02%.
PROBLEMA 13
Un controlador de DMA est transmitiendo palabras a memoria mediante la estrategia
transparente. Cuando la CPU dispone en exclusiva del bus las instrucciones emplean, en
promedio, 4 ciclos de reloj en ser ejecutadas, aunque en 2 de ellos no se requiere el acceso
al bus. El controlador de DMA tarda 1 ciclo de reloj en transmitir una palabra. Si la frecuencia de reloj del computador es de 106 ciclos/s, cunto tiempo tardar el controlador
de DMA en mover un bloque de datos compuesto por 106 palabras?
Solucin:
El controlador de DMA aprovecha los dos ciclos de reloj en los que la CPU no utiliza el bus
cuando ejecuta una instruccin, para transmitir una palabra. Por tanto, en los 4 ciclos de reloj
que tarda la CPU en ejecutar una instruccin, el controlador de DMA transmite 2 palabras. La
velocidad de transferencia resultante, si el reloj del computador tiene una frecuencia de 106
ciclos/s, es de:
106

ciclos
palabras
2 palabras
#
% 0,5 # 106
segundo 4 ciclo
segundo

Captulo 13 Entrada/salida

507

Con esta velocidad de transferencia, para mover un bloque de 106 palabras el controlador
de DMA tardar:
106 palabras
%2 s
palabras
6
0,5 # 10
s
PROBLEMA 14
Un computador funciona a una frecuencia de 10 MHz (107 ciclos/s) con un CPI % 4 ciclos y
cada operacin de lectura o escritura de memoria tarda un ciclo. Determinar la mxima velocidad de transferencia de datos, en palabras por segundo, para los cuatro casos siguientes:
a) E/S controlada por programa que utiliza 3 instrucciones en transferir cada palabra.
b) DMA con transferencia por rfagas.
c)

DMA con transferencia por robo de ciclo.

d) DMA con transferencia transparente suponiendo que en cada instruccin, en promedio, hay 2 ciclos en los cuales la CPU no utiliza el bus.
Solucin:
a) E/S programada
N.o de ciclos para transferir una palabra % 3 intrucciones/palabra # 4 ciclos/instruccin % 12 ciclos/palabra.
Velocidad del computador 107 ciclos/segundo.
Velocidad de transferencia mxima % 107 ciclos/segundo / 12 ciclos/palabra %
% 8,3 # 105 palabras/segundo.
b) DMA por rfagas
Esta figura muestra un esquema del procedimiento de transferencia por rfagas.

Esquema de transferencia por rfagas.

Velocidad de transferencia mxima % 107 ciclos/segundo / 1 ciclos/palabra % 107 palabras/segundo.


c)

DMA por robo de ciclo


A continuacin se muestra un esquema de transferencia por robo de ciclo.

Esquema de transferencia por robo de ciclo.

Velocidad de transferencia mxima % 107 ciclos/segundo / 5 ciclos/palabra % 2 # 106


palabras/segundo.

508

Problemas de fundamentos y estructura de computadores

d) DMA transparente
Con esta tcnica, el DMA aprovecha los ciclos de la instruccin que no utiliza el bus. La
siguiente figura presenta un esquema de esta transferencia.

Esquema de transferencia de DMA transparente.

Velocidad de transferencia mxima % 107 ciclos/segundo / 2 ciclos/palabra % 5 # 106


palabras/segundo.
PROBLEMA 15
Un perifrico con una velocidad de transferencia de 1,5 # 106 bytes/segundo se conecta
mediante un DMA a un procesador que tarda una media de 200 nanosegundos en ejecutar
una instruccin. El DMA requiere 10 instrucciones de inicializacin y la transferencia de
un byte mantiene ocupados los buses durante 100 nanosegundos. Se quieren transferir 500
bytes. Calcular en DMA con transferencia por robo de ciclo:
a) El tiempo que se le roba al procesador a la transferencia de los 500 bytes.
b) El nmero de instrucciones que podra dedicar el procesador a otro proceso mientras
se realiza la transferencia del bloque de datos.
Solucin:
a) El tiempo que dedica el procesador a la transferencia ser el tiempo de inicializacin del
DMA ms el tiempo propio de transferencia del DMA.
El tiempo de inicializacin del DMA es:
tini. % 10 instr. # 200

ns
% 2.000 ns % 2 ]s
instr.

El tiempo robado por el DMA en la transferencia es:


trobo % 500 B # 100

ns
% 50.000 ns % 50 ]s
B

El tiempo total robado al procesador ser:


T % tini. ! trobo % 52 ]s

Captulo 13 Entrada/salida

509

b) El tiempo que tarda en realizarse la transferencia del bloque de datos una vez que se ha
inicializado el DMA es:
ttransf. % 500 B #

1
B
% 3,33 # 10.4 s % 333 ]s
6
1,5 # 10 s

Durante este tiempo, 50 ]s se pierden en robos de ciclo del DMA, luego el tiempo
que podr dedicar la CPU a la ejecucin de otro proceso ser de 333 ]s.50 ]s%283 ]s.
En 283 ]s, la CPU puede ejecutar el siguiente nmero de instrucciones:
Ninstr. % 283 ]s #

1 ns
% 1.415 instr.
200 instr.

PROBLEMA 16
Sea un computador capaz de ejecutar 10 MIPS (107 instrucciones por segundo). Se desea
conectar al computador nicamente un perifrico con una velocidad de transferencia de
20.000 bytes/segundo y sobre el que se realizan operaciones de lectura de bloques de 1.024
bytes.
Se pretende ver el comportamiento de la pareja computador-perifrico ante las diferentes tcnicas de entrada-salida (programada, mediante interrupciones y por DMA). Se sabe
que:
La rutina de transferencia de E/S programada consta de 10 instrucciones.
La rutina de tratamiento de interrupcin en la E/S mediante interrupciones consta de
20 instrucciones.
La rutina de inicializacin del DMA consta de 8 instrucciones. Y en cada operacin
de escritura de un dato en memoria el controlador ocupa los buses durante 500 ns.
Se pide indicar el nmero de instrucciones de otros procesos que puede realizar el computador durante cada uno de los siguientes tipos de E/S:
a) E/S programada.
b) E/S mediante interrupciones.
c)

E/S mediante DMA.

Solucin:
El perifrico suministra 20.000 bytes/segundo, es decir, enviar un byte cada 50 ]s.
Como los bloques son de 1.024 bytes, una operacin de E/S durar:
50 ]s
# 1.024 B % 51.200 ]s
B
La CPU en ese tiempo es capaz de ejecutar:
Instrucciones ejecutadas por la CPU en 51.200 ]s % 107

instr.
# 51.200 ]s % 512.000 instr.
s

510

Problemas de fundamentos y estructura de computadores

a) Al ser entrada-salida programada, la CPU est plenamente dedicada a ejecutar las instrucciones de la rutina de entrada-salida y a realizar encuesta, con lo que no es capaz de
ejecutar ninguna instruccin de otro proceso.
b) La rutina de interrupcin consta de 20 instrucciones.
Esta rutina se ejecuta cada vez que se transfiere un byte.
Nmero de ejecuciones de la RTI %

1.024 B
% 1.024 ejecuciones
B
1
ejecucin

Lo que supone un total de:


Nmero de instrucciones de E/S % 1.024 ejecuciones # 20

instrucciones
%
ejecucin

% 20.480 instrucciones
Esto supone que la CPU podra dedicar tiempo a otros procesos:
512.000 instrucciones . 20.480 instrucciones % 491.520 instrucciones
c) La CPU dedicar el tiempo necesario para poder programar el controlador de DMA. El
DMA emplea robo de ciclo, con lo que el perifrico ocupar los buses 500 ns/B. Con lo
que para leer 1.024 B, tardar:
500 ns/B # 1.024 B % 512.000 ns % 512 ]s
Dado que la rutina de inicializacin del controlador del DMA consta de 8 instrucciones, podemos aproximar el clculo a los 512 ]s que se corresponden con los robos de
ciclo.
En ese tiempo, la CPU habr ejecutado 5.120 instrucciones, que se correspondern
con el hecho de que durante el robo de ciclo por cada dato, la CPU no puede acceder a los
buses. La CPU podr ejecutar:
512.000 instrucciones . 5.120 instrucciones % 506.880 instrucciones
506.880 instrucciones correspondientes a otros procesos.
Resumiendo:
Instrucciones
totales

Instrucciones
para otros procesos

E/S programada

512.000

E/S mediante interrupciones

20.480

491.520

E/S mediante DMA

5.120

506.880

Tipo de E/S

Captulo 13 Entrada/salida

511

PROBLEMA 17
Supongamos dos sistemas de E/S diseados para realizar transacciones:
El sistema A soporta 1.500 operaciones de E/S por segundo.
El sistema B soporta 1.000 operaciones de E/S por segundo.
Ambos sistemas usan el mismo procesador que puede ejecutar 500 millones de instrucciones por segundo. Cada transaccin requiere 5 operaciones de E/S y cada operacin de
E/S requiere 10.000 instrucciones. Asumiendo que las transacciones se pueden ajustar al
mximo e ignorando tiempos de respuesta, cul es el mximo nmero de transacciones
por segundo que cada sistema puede soportar?
Solucin:
La solucin es sencilla siempre y cuando apliquemos correctamente las conversiones, para el
procesador tenemos:
instr.
1 operacin
transac.
1 transac.
#
# 500 # 106
% 50.000
s
segundo
5 operaciones 10.000 instr.
Sin embargo cada sistema introducir un cuello de botella a esta capacidad. El sistema A
admite 1.500 operaciones de E/S por segundo, esto implica:
1.500

1 transac.
transac.
operacin
#
% 300
5 operaciones
segundo
segundo

Mientras que para el sistema B:


1.000

1 transac.
transac.
operacin
#
% 200
5 operaciones
segundo
segundo

PROBLEMA 18
Considere un computador porttil cuya batera almacena hasta 100.000 julios. Queremos
transferir archivos de 400 MB desde este computador a otro mediante una tarjeta de conexin inalmbrica de 5 Mb/s.
La tarjeta consume 5 W mientras est transmitiendo. El disco duro consume 6 W cuando gira y 1 W cuando no gira. La potencia consumida por el porttil aparte del disco duro y
la tarjeta de red inalmbrica es de 32 W. Suponga que en promedio el sistema emplea 10 s
en buscar un fichero, que la tasa de transferencia del disco duro es de 50 MB/s, que el
retardo al inicio de una transferencia es de 20 ms, y que el resto del tiempo el disco no gira.
a) Cuntos archivos completos podemos transferir antes de que se agote la batera del
porttil?
b) Cunta energa se requerir para enviar 100 ficheros?
Solucin:
Potencia consumida por el porttil mientras busca un fichero: 32 W ! 6 W % 38 W.
Potencia consumida por el porttil mientras transfiere un fichero: 33 W ! 5 W % 38 W.
Tiempo empleado en buscar un fichero: 10 s.

512

Problemas de fundamentos y estructura de computadores

Tiempo empleado en enviar un fichero: 400 MB / 50 MB/s % 8 s.


Retardo inicial: 20 ms.
Por lo tanto el tiempo total en enviar un fichero es % 10 s ! 8 s ! 0,02 s % 18,02 s.
Y la energa consumida en enviar un fichero es % 18,02 s # 38 W % 684,76 J/fichero.
a) El nmero de ficheros a enviar ser la energa total del porttil entre la energa necesaria
para enviar un fichero:

100.000 J
J
% 146 ficheros
684,76
fichero

b) La energa necesaria para enviar 600 archivos ser:


100 ficheros # 684,76

J
% 6.847,6 J
fichero

PROBLEMA 19
Un formato tpico de los disquetes de 3,5 pulgadas tiene 2 superficies, 80 cilindros, 18
sectores por pista y 512 bytes por sector.
a) Calcular su capacidad total.
b) Suponiendo que el disco gira a 360 r.p.m., cul ser su velocidad de transferencia?
Solucin:
a) 2 superficies # 80 pistas/superficie # 18 sectores/pista # 512 B/sector%10.474,560 B%
%1,40 MB.
b) La velocidad de transferencia es:
b
Vt % % P # f
tt
donde b representa el nmero de bytes que se desean transferir, tt es el tiempo que se
emplea en la transferencia, P el nmero de bytes que hay en una pista y f la velocidad de
rotacin en revoluciones por segundo. As,
Vt % 512 # 18 #

360
B
% 55.296
60
s

PROBLEMA 20
Calcular el tiempo medio de lectura o escritura de un sector de 512 bytes en un disco duro
que gira a 4.500 r.p.m. suponiendo que:
El tiempo medio de posicionado es de 20 ms.
La velocidad de transferencia es de 2 MB/s.
La sobrecarga debida al controlador es de 2 ms.
No existe tiempo de espera porque el disco est desocupado.

Captulo 13 Entrada/salida

513

Solucin:
El acceso medio de lectura es igual al tiempo medio de posicionado ! retardo medio de rotacin (se corresponde con la rotacin de medio disco) ! tiempo de transferencia ! sobrecarga
del controlador.
El retardo medio de rotacin, dato no proporcionado en el enunciado es:
0,5 rotacin / 4.500 r.p.m. % 0,5/(4.500 r.p.m. / 60 s/min) % 6,7 ms
Utilizando el tiempo medio de posicionamiento la respuesta es:
20 ms ! 6,7 ms !

0,5 KB
! 2 ms % 20 ! 6,7 ! 0,2 ! 2 % 28,8 ms
MB
2,0
s

PROBLEMA 21
Un disco magntico tiene dos superficies. El rea de almacenamiento en cada superficie
tiene un radio interior de 1 cm y un radio exterior de 5 cm. Si bien el tamao de cada pista
es diferente, cada una de ellas almacena el mismo nmero de bits. La densidad de almacenamiento mximo que soporta este disco es de 10.000 bits/cm. El espaciado entre puntos
correspondientes en pistas adyacentes es de 0,1 mm, lo que incluye adems el espaciado
entre pistas. Supngase despreciable el espaciado entre sectores. Se pide:
a) Cul es el mximo nmero de bits que se puede almacenar en el disco?
b) Suponiendo que el disco tiene la capacidad de almacenamiento anteriormente calculada, cul es la velocidad de transferencia de datos desde el disco a la cabeza de lectura/escritura en bits/s si el disco gira con una velocidad de rotacin de 3.600 r.p.m.?
Para realizar este clculo suponga que el disco no tiene entrelazado y que en un determinado instante slo se puede acceder a una de las superficies del disco.
Solucin:
a) Desde el punto de vista del almacenamiento de la informacin, se considera que cada
superficie del disco est constituida por un conjunto de pistas a lo largo de las cuales se
va almacenando la informacin con una densidad lineal de almacenamiento de 10.000
bits/cm.

Diagrama de superficies, sectores y pistas.

Cada pista del disco magntico se divide en sectores. Como el enunciado indica explcitamente que se supone despreciable el espaciado que hay entre los sectores, no hay

514

Problemas de fundamentos y estructura de computadores

que considerar en lo que sigue la subdivisin de las pistas en sectores, y por lo tanto, la
informacin se distribuye regularmente a lo largo de cada pista con la densidad lineal
dada.

Anchura de la zona de almacenamiento.

Los pasos a seguir para el clculo de la capacidad son los siguientes:


1.

Nmero de pistas que contiene cada superficie:

Para calcular este nmero se dispone de la anchura de la zona de almacenamiento,


que es:
r2 . r1 % 4

cm
mm
% 40
superficie
superficie

y del espaciado entre pistas adyacentes, que es 0,1 mm (lo que equivale a 10 pistas/mm).
El nmero de pistas de almacenamiento es:
40

mm
pistas
pistas
# 10
% 400
superficie
mm
superficie

2. El enunciado seala que cada pista contiene el mismo nmero de bits. La pista
ms interna tiene la menor capacidad de almacenamiento, as pues todas las pistas no
almacenarn ms datos que la pista ms interna. El nmero de bits que almacena dicha
pista es:
cm
bits
bits
bits
#2#n#1
% 2.000 # n
% 62.832
10.000
pista
pista
pista
cm
3.

El almacenamiento por superficie es:

62.832
4.

bits
bits
bits
pistas
# 400
% 8 # n # 106
% 25,13 # 106
superficie
superficie
pista
superficie

El almacenamiento en el disco es:


2

bits
bits
superficies
Mb
# 25,13 # 106
% 16 # n # 106
% 50,26
superficie
disco
disco
disco

Captulo 13 Entrada/salida

515

b) En el segundo apartado del problema, se pregunta cul es la velocidad de transferencia de


datos desde el disco a la cabeza de lectura/escritura en bits/s. El disco gira con una velocidad de rotacin de 3.600 r.p.m., que es equivalente a 60 r.p.s.
La velocidad de transferencia es igual al nmero de bits que hay en una pista
(P % 62832 bits / pista) multiplicado por la velocidad de rotacin en r.p.s. ( f % 60 r.p.s.).
VT % P # f % 20.000 # n # 60 % 62.832 # 60 % 3,77

Mb
s

13.8 Problemas propuestos


PROBLEMA 1
Consideremos un programa que requera de 0,1 segundos para su ejecucin sobre un cierto
computador de hace 8 aos, de los cuales el 60% se corresponde a tiempo de CPU y el 40%
restante se corresponde con operaciones de entrada y salida sobre una cierta interfaz.
Supongamos que dicho programa se ejecuta sobre un nuevo computador de este ao y
supngase asimismo la siguiente evolucin desde hace 10 aos:
El rendimiento de la CPU se multiplica por dos cada dos aos, es decir, se reduce a la
mitad el tiempo de CPU.
El rendimiento de la interfaz de entrada y salida se multiplica por dos cada cuatro aos,
es decir, el tiempo necesario para mover la misma informacin entre la interfaz y la
memoria requiere la mitad del tiempo.
Cul pasa a ser el tiempo de ejecucin del programa en el nuevo computador de este ao?
PROBLEMA 2
Calcula la interferencia con el procesador de un perifrico que recibe bloques de datos de 64
bytes con una velocidad de transferencia de 1 MB/s. La frecuencia del procesador es de 100
MHz, y el mdulo de E/S de este perifrico lo interrumpe cada vez que recibe un bloque,
consumiendo la rutina de tratamiento de la interrupcin de este perifrico 400 ciclos de procesador.
PROBLEMA 3
Supongamos un disco duro que utiliza el modo de transferencia con las siguientes caractersticas:
Se transfiere una palabra de 16 bits entre el disco y la interfaz en cada ciclo de reloj, de
periodo 120 ns.
Cada vez que se transfiere un bloque de 512 bytes (un sector) entre el disco y la interfaz, sta solicita una interrupcin.
El movimiento de un bloque de datos entre la interfaz y la memoria lo lleva a cabo la
CPU durante la rutina de tratamiento de la interrupcin. Esta rutina de servicio tiene un
coste de 4.000 ciclos de reloj en una CPU de frecuencia 1 GHz.

516

Problemas de fundamentos y estructura de computadores

Cul es la mxima velocidad de transferencia?


Cul es el porcentaje del tiempo de procesador consumido cuando el disco transfiere a la
mxima velocidad permitida?
Para mejorar la velocidad de transferencia y disminuir a la vez el porcentaje de ocupacin
de la CPU durante las transferencias, se dota a este sistema de un controlador DMA para
transferir directamente datos entre la interfaz de disco y la memoria, a una velocidad mxima
de 100 Mbytes/s. En este caso, la interrupcin simplemente avisa a la CPU del final de la
transferencia, por lo que la RTI tiene poco trabajo que hacer. Supondremos que la RTI consume slo 40 ciclos de reloj de la CPU en esta situacin.
Qu porcentaje del tiempo de procesador se consume empleando el modo DMA?
PROBLEMA 4
Supongamos CPUs con bus de direcciones de ancho idntico. Si una de ellas emplea E/S aislada, y la otra localizada en memoria, cul podr acceder a una mayor cantidad de memoria
y por qu?
PROBLEMA 5
Sea una CPU con un nico nivel de interrupcin por una lnea INTR, una seal de reconocimiento INTA y una entrada AVEC que le indica el tipo de la interrupcin (AVEC % 1 si es
autovectorizada y AVEC % 0 si es con vector de usuario). La seal INTA slo se activa si la
interrupcin es de usuario (AVEC % 0).
a) Disear la lgica de control de interrupciones necesaria para dotar a un computador basado en dicha CPU de 8 niveles de interrupcin, 4 autovectorizadas y 4 vectorizadas o de
usuario. Asignar las prioridades de modo que el nivel 3 sea el ms prioritario en cada
caso, y las autovectorizadas ms prioritarias que las de usuario.
b) En el caso de interrupciones autovectorizadas disear la lgica necesaria para generar un
autovector distinto por cada nivel.
c)

En el caso de interrupciones de usuario disear la lgica para la resolucin de prioridades


entre los dispositivos de un mismo nivel y para el envo del vector almacenado en el
dispositivo. Suponer el flag de peticin de interrupcin almacenado en un biestable, y el
nmero de vector en un registro de 8 bits.

PROBLEMA 6
El sistema de E/S de un computador puede ejecutar transferencias DMA tanto en modo robo
de ciclo como en modo rfaga. La latencia de atencin a peticiones DMA es de 9 ciclos, el
nmero de instrucciones de una rutina de programacin de una transferencia DMA es de 437
y el CPI medio es de 5 ciclos. El tiempo de transferencia de un bloque DMA de 16 bytes es
de 28 ciclos. Determinar el tiempo total en ciclos invertido en realizar una transferencia de
512 bytes en ambos modos.

Captulo 13 Entrada/salida

517

PROBLEMA 7
Calcula la interferencia con un procesador a 2 GHz de un perifrico que recibe bloques de
datos de 2 KB con una velocidad de transferencia de 512 MB/s, en los siguientes casos:
a) Se utiliza un DMA donde se consumen 900 ciclos en la programacin del DMA y 100 en
la interrupcin final.
b) Se utiliza E/S con interrupciones y el mdulo de E/S de este perifrico interrumpe al
procesador cada vez que recibe una palabra (32 bits/palabra). La rutina para el tratamiento de la interrupcin de este perifrico consume 40 ciclos del procesador.
PROBLEMA 8
Un procesador que opera a 200 MHz con un CPI % 4 dispone de un sistema de interrupciones
con un tiempo de reconocimiento de interrupcin de 100 ns. Se conecta a un disco magntico
con 128 sectores/pista y 1.024 bytes/sector a travs del sistema de interrupciones. En cada
interrupcin se transmiten 8 bytes utilizando una rutina de tratamiento de interrupciones que
ejecuta 20 instrucciones. Determinar:
a) Capacidad de entrada de datos (ancho de banda) mxima en bytes/segundo a travs del
sistema de interrupciones.
b) Velocidad de rotacin mxima a la que podr operar el disco en r.p.m. (revoluciones por
minuto).
c)

Si el disco se conecta a travs de DMA operando por robo de ciclo y cada vez que se le
concede el bus transmite 8 bytes, calcular el tiempo que el DMA roba a la CPU durante
la lectura de un sector.

d) Porcentaje de tiempo que la CPU dedica a la E/S durante la operacin del DMA si el
disco opera a la velocidad determinada en el apartado b).
PROBLEMA 9
Considere una CPU que ejecuta 300 millones de instrucciones por segundo y que emplea una
media de 50.000 instrucciones de sistema operativo en cada operacin de entrada/salida, junto
con un bus de memoria backplane con una velocidad de transferencia de 100 MB/s. Se dispone de controladores SCSI-2 con velocidad de transferencia de 20 MB/s que permiten la conexin de hasta siete discos y de unidades de disco con ancho de banda de lectura/escritura de
5 MB/s y un tiempo medio de posicionado ms latencia de rotacin de 10 ms. Suponiendo
que la carga de trabajo consiste en lecturas de bloques de 64 KB (cada bloque se encuentra
secuencialmente en una pista) y que un programa de usuario necesita 100.000 instrucciones
por cada operacin de E/S, encuentre la mxima velocidad de E/S que puede mantenerse y el
nmero de discos y controladores SCSI necesarios. Suponga que las lecturas siempre se pueden realizar en un disco inactivo, si es que existe (es decir, ignore los conflictos en el disco).
PROBLEMA 10
El CD almacena bloques de 2.352 bytes cada uno, los cuales se reproducen a un ritmo de
75 bloques por segundo cuando almacena audio. Cuando un CD almacena datos, de los

518

Problemas de fundamentos y estructura de computadores

2.352 bytes por bloque slo 2.048 almacenan efectivamente datos mientras que los restantes bytes almacenan cdigos de deteccin y correccin de errores. Una situacin intermedia
ocurre cuando el CD almacena vdeo en formato VCD o SVCD, pues en este caso, de los
2.352 bytes totales se emplean slo 2.324 para almacenar datos.
Qu capacidad en Mbytes tiene un CD etiquetado con 74 minutos cuando almacena
audio?
Qu capacidad en Mbytes tiene un CD etiquetado con 74 minutos cuando almacena
datos?
Qu capacidad en Mbytes tiene un CD etiquetado con 74 minutos cuando almacena
video SVCD?

Las distintas unidades funcionales de un computador necesitan comunicarse. Deben existir,


por lo tanto, lneas para interconectar estos mdulos.

Figura 14.1. Lneas definidas para la interconexin de mdulos.

Los tipos de transferencias a las que debe dar cobertura la estructura de interconexin son:
Procesador T Memoria.
Procesador T E/S.
Memoria T E/S (DMA).
Un bus es un canal de comunicacin compartido que utiliza un conjunto de lneas para
conectar mltiples subsistemas. Cada cable o lnea transmite un nico bit de informacin en
un determinado momento.
Sus ventajas incluyen la versatilidad y el bajo coste.
Una gran desventaja es la aparicin de un cuello de botella, limitando la productividad
mxima del sistema.
A la hora de disear un sistema de buses, el reto consiste en cubrir la demanda de comunicacin del sistema y permitir la conexin de un gran nmero de dispositivos de E/S.
Las caractersticas deseables de un bus son la heterogeneidad, escalabilidad, baja latencia
y alto ancho de banda.

520

Problemas de fundamentos y estructura de computadores

El principal problema en el diseo de un bus es que la velocidad mxima (y por tanto el


rendimiento) est fuertemente limitada por cuestiones fsicas, tales como la longitud del bus,
el nmero de dispositivos conectados. Tambin debe dar soporte a una gran variedad de dispositivos con muy distintas latencias y anchos de banda.

14.1 Estructura del bus


Las lneas que componen un bus se pueden clasificar en tres grupos funcionales:
Las lneas de datos del bus proporcionan el camino para transmitir datos entre los mdulos del sistema. El nmero de lneas del bus de datos determina el nmero mximo de bits que
es posible transmitir al mismo tiempo.
Las lneas de direccin se utilizan para designar (direccionar) la fuente o el destino de los
datos situados en el bus de datos. La anchura del bus de direcciones determina la cantidad
mxima de memoria (y de dispositivos de E/S) direccionable en el sistema.
Las lneas de control se emplean para gestionar el acceso y el uso de las lneas de datos y
direccin, sealizando peticiones y reconocimientos e indicando qu tipo de informacin pasa
por las lneas de datos.

Figura 14.2.

Esquema de bus.

La clasificacin segn las caractersticas elctricas es:


Unidireccionales con un transmisor y mltiples receptores.
Unidireccionales con mltiples transmisores y un nico receptor.
Bidireccionales.
Algunas lneas de control tpicas son: escritura en memoria (Memory Write), lectura de
memoria (Memory Read), escritura de E/S (I/O Write), lectura de E/S (I/O Read), transferencia reconocida (Transfer ACK), peticin de bus (Bus Request), cesin de bus (Bus Grant),
peticin de interrupcin (Interrupt Request), interrupcin reconocida (Interrupt ACK), reloj
(Clock), e inicio (Reset).

14.2 Uso bsico del bus


Cuando un mdulo necesita enviar un dato a otro mdulo, se deben realizar las siguientes
acciones:

Captulo 14 Buses

521

1. Obtener el uso del bus.


2. Transferir el dato a travs del bus.
Cuando un mdulo necesita pedir un dato a otro mdulo, se deben realizar las siguientes
acciones:
1. Obtener el uso del bus.
2. Transferir la peticin al otro mdulo mediante las lneas de control y direccin apropiadas.
3. Esperar a que el segundo mdulo enve el dato.

14.3 Clases de buses y jerarquas


Aunque existen muchas clases y jerarquas de buses, generalmente podemos encontrar:
Bus local y bus de sistema: Son rpidos y de corta longitud, suelen ser buses propietarios
y por tanto diseados para dispositivos especficos y optimizados para la arquitectura a la que
van destinados.
Bus de expansin o de E/S: Son buses ms largos y por tanto ms lentos, suelen tener
especificaciones abiertas y son accesibles por el usuario. En ellos se puede conectar un nmero indeterminado de dispositivos de distintas prestaciones.

Figura 14.3. Jerarqua de buses.

522

Problemas de fundamentos y estructura de computadores

14.4 Diseo del bus


Al disear un bus, hay que tener en cuenta multitud de parmetros de configuracin. A continuacin, se enumeran algunos de estos parmetros:
Tipo de bus
Dedicado
Compartido
Nmero de maestros del bus
Uno
Varios
Mtodo de arbitraje
Centralizado
Distribuido

Anchura del bus


Temporizacin
Direccin
Sncrono
Datos
Asncrono
Tipo de transferencia de datos
Lectura
Escritura
Lectura-modificacin-escritura
Lectura despus de escritura
Bloque
Transaccin partida: Se dividen los eventos del bus
en peticiones y respuestas. Otro maestro puede usar el bus.

A continuacin describimos algunos de estos parmetros de diseo:

14.4.1 Temporizacin
Bus sncrono: Entre sus lneas de control se incluye una seal de reloj. El protocolo para la
comunicacin es fijo y est gobernado por la seal de reloj. Se asume que los envos llegan
correctamente.
Ventajas: Puede funcionar a gran velocidad y se puede implementar con un sistema secuencial sencillo.
Inconvenientes: No es adecuado para mezclar dispositivos con grandes diferencias de velocidad.
Su diseo tiene que ser muy cuidadoso ya que puede presentar problema el sesgo del reloj
(clock skew). Los buses de memoria suelen ser sncronos.

Figura 14.4. Lectura sncrona.

Bus asncrono: Sin reloj. Las transmisiones de datos se coordinan con un protocolo de handshaking entre emisor y receptor: un evento origina el siguiente, y as sucesivamente.
Ventajas: Permite la conexin de dispositivos de un amplio rango de velocidades diferentes. Escalan mejor tanto con el nmero de dispositivos como con los cambios tecnolgicos en
los mismos. No hay problemas de sesgo de reloj, por lo que permite distancias ms largas.

Captulo 14 Buses

523

Inconvenientes: Es ms lento, debido a la sobrecarga introducida para sincronizar a emisor y receptor. Puede necesitar un cierto nmero de lneas de control adicionales para implementar el protocolo. Es ms difcil predecir el tiempo que va a llevar una determinada transaccin.
Los buses de E/S son habitualmente asncronos.
A continuacin ilustramos un ejemplo sencillo acerca de cmo trabajan los buses asncronos. Consideremos un dispositivo que solicita un dato del sistema de memoria. Consideramos
tres lneas de control: (1) ReadReq utilizada para realizar una peticin de lectura, (2) DataRdy
usada para indicar que el dato est listo en el bus de datos, y (3) Ack usada por la otra parte
para indicar la recepcin de la seal ReadReq o DataRdy.

Figura 14.5. Protocolo asncrono handshaking. Las lneas de mayor grosor son aquellas asertadas
por el dispositivo (el procesador, por ejemplo), el resto son las controladas por la memoria.

De acuerdo con la figura anterior la secuencia de pasos a seguir es la siguiente:


0.

El protocolo comienza con el maestro (el procesador, por ejemplo) poniendo una direccin de memoria en el bus de datos y activando la seal de peticin de lectura
(ReadReq).

1.

El esclavo (la memoria, por ejemplo) ve la peticin y coge la direccin de memoria


del bus de datos, activando la seal de aceptacin (ACK).

2.

El maestro ve activa la seal de ACK y libera el bus de datos y desactiva la seal de


peticin de lectura, que sirve de aviso al esclavo.

3.

El esclavo ve la desactivacin de la seal de peticin y contesta asimismo con la desactivacin de la seal de ACK.

4.

Cuando el esclavo tiene listo el dato a leer lo pone en el bus y activa la seal que
indica que el dato est listo (DataReady).

5.

El maestro ve la seal DataReady, con lo que sabe que el dato est listo en el bus y
realiza su lectura. Cuando completa la operacin activa la seal de ACK.

6.

El esclavo ve la seal de ACK, lo que le dice que el maestro ya tiene el dato ledo, y
desactiva la seal DataReady y libera el bus de datos.

7.

Por ltimo, el maestro responde a la desactivacin de DataReady con la bajada de su


seal de ACK, lo que da por concluida la transmisin.

524

Problemas de fundamentos y estructura de computadores

14.4.2 Tipos de transferencia de datos


La Figura 14.6 muestra esquemticamente los distintos tipos de transferencias de datos que
generalmente se pueden dar en un bus.

Figura 14.6. Tipos de transferencias de datos que generalmente se pueden dar en un bus.

14.4.3 Esquemas de arbitraje


Los esquemas de arbitraje sirven para gestionar el uso del bus por parte de mltiples maestros.
Se deben considerar dos factores a la hora de disear un esquema de arbitraje: el tipo de prioridad y la imparcialidad. Una clasificacin genrica de tcnicas de arbitraje puede ser la siguiente:
Arbitraje en serie (daisy chain): La lnea de concesin de bus (GRANT) recorre los dispositivos desde el ms hasta el menos prioritario. Las prioridades se determinan as en funcin de la posicin del dispositivo en el bus.
Arbitraje paralelo centralizado: Se utilizan mltiples lneas de peticin, por las que los
diferentes dispositivos piden acceso al bus de forma independiente. Un rbitro centralizado
selecciona uno de entre los dispositivos que han solicitado el bus y le notifica que ahora es el
maestro del bus.

Captulo 14 Buses

525

Arbitraje distribuido por autoseleccin: Se emplean tambin mltiples lneas de peticin de bus, pero ahora cada dispositivo determina de forma independiente si l es el solicitante de mayor prioridad sin necesidad de un rbitro.
Arbitraje distribuido por deteccin de colisin: Cada dispositivo solicita de forma independiente el bus. En caso de mltiples peticiones simultneas de bus se produce una colisin. Una vez detectada la colisin se aplica un esquema que determine el dispositivo que ser
maestro de bus entre las partes en colisin.

14.4.4 Decisiones de diseo


En cuanto a las decisiones de diseo, la siguiente tabla resume las diferentes decisiones y su
efecto en rendimiento y en el coste:
Opcin

Alto rendimiento

Bajo coste

Ancho de bus

Lneas de datos y direcciones


indep.

Lneas de datos y direcciones


multiplexadas

Ancho de datos

Ms ancho es ms rpido

Menos ancho es ms barato

Tamao de la
transferencia

Transferencia bloque de mltiples


palabras

Transferencia bloque de una palabra

Maestros de bus

Mltiples maestros
(req. arbitraje)

Un nico maestro

Transac. partida

S. Aumenta ancho de banda


(necesita varios maestros)

No. Conexin continua ms barata


(y con menor latencia)

Temporizacin

Sncrono

Asncrono

14.5 Problemas resueltos


PROBLEMA 1
Sea un procesador de 32 bits, con un bus de datos de 16 bits, y con un reloj de 8 MHz. El
procesador tiene un ciclo de bus cuya duracin mnima es igual a cuatro ciclos de reloj.
Cul es la velocidad de transferencia mxima que soporta el sistema?
Solucin:
Tiempo de ciclo %

1
% 125 ns
8 MHz

Ciclo de bus % 4 # 125 ns % 500 ns

526

Problemas de fundamentos y estructura de computadores

Esto significa que se pueden llegar a transferir 16 bits cada 500 ns, o lo que es lo mismo:
Velocidad de transferencia mxima %

2B
4 MB
%
500 ns
s

PROBLEMA 2
Considerar dos microprocesadores con buses de datos de 8 y 16 bits, respectivamente. Los
dos procesadores son idnticos en todo lo dems y sus ciclos de bus son iguales.
a) Suponiendo que todas las instrucciones y operandos son de dos bytes, en qu factor
difieren las velocidades de transferencia de los dos microprocesadores?
b) Cul sera la respuesta si en la mitad de los casos los operandos y las instrucciones
son de un byte?
Solucin:
a) Durante un ciclo de bus, el microprocesador de 8 bits transfiere 1 byte, mientras que el
micro de 16 bits transfiere dos bytes. Esto implica que el micro de 16 bits duplica la
velocidad de transferencia del micro de 8 bits.
b) Supongamos que realizamos 100 transferencias de operandos e instrucciones, de las cuales 50 son de un byte y 50 son de dos bytes de longitud. El microprocesador de 8 bits
necesita de:
Nmero de ciclos en el micro de 8 bits % 50 ! (2 # 50) % 150
En cambio, el microprocesador de 16 bits necesita:
Nmero de ciclos en el micro de 16 bits % 50 ! 50 % 100
Por lo tanto, la velocidad de transferencia de datos difiere en un factor de 1,5.
PROBLEMA 3
Un procesador con un bus de 10 MHz tiene una instruccin de incremento de memoria
directo que suma 1 al valor almacenado en una posicin de memoria. La instruccin tiene
cinco etapas: captacin del cdigo de operacin (4 ciclos de bus), captacin de la direccin
del operando (3 ciclos), captacin del operando (3 ciclos), suma de 1 al operando (3 ciclos), y almacenar el operando (3 ciclos).
a) En qu porcentaje se incrementa la duracin de la instruccin si hemos de insertar
dos ciclos de bus de espera en cada operacin de lectura o escritura de memoria?
b) Cuando el procesador se encuentra en la etapa de captacin de operando cuando el
teclado activa una lnea de peticin de interrupcin. Despus de cunto tiempo entra
el procesador en el ciclo de reconocimiento de interrupcin?
c)

Repetir el apartado (a) para el caso en que la operacin de incremento necesite 13


ciclos en lugar de 3.

Captulo 14 Buses

527

Solucin:
a) Sin los ciclos de espera, la instruccin tarda 16 ciclos de bus.
La instruccin necesita de cuatro accesos a memoria, lo que implica 8 estados de
espera.
La instruccin, incluyendo los ciclos de espera tarda 24 ciclos.
Esto supone un incremento del 50%.
b) El procesador necesita de otros nueve ciclos para completar la instruccin, es decir,
INTA se activar tras:
9 # 100 ns % 900 ns
c)

En este caso la instruccin tarda 26 ciclos de bus sin espera y 34 con espera, lo que supone un incremento del 33%.

PROBLEMA 4
Considerar un procesador de 32 bits cuyo ciclo de bus tiene la misma duracin que el de
un procesador de 16 bits. Asumir que en promedio, el 20% de los operandos e instrucciones son de 32 bits, el 40% son de 16 bits y el 40% restante son de slo 8 bits. Calcular la
mejora que se consigue con la captacin de instrucciones y operandos con el procesador de
32 bits.
Solucin:
Sea un conjunto de 100 instrucciones y operandos. En promedio, el conjunto est formado por
20 elementos de 32 bits, 40 de 16 bits, y 40 de un byte. El nmero de ciclos de bus requeridos
por el procesador de 16 bits es:
(2 # 20) ! 40 ! 40 % 120
Para el procesador de 32 bits es:
20 ! 40 ! 40 % 100
Esto provoca una mejora del 16,67%.
PROBLEMA 5
En la operacin de lectura sncrona de la Figura 14.7, el mdulo de memoria debe situar el
dato en el bus de datos con la suficiente antelacin al flanco de bajada de la seal de lectura para asegurar que las seales se han estabilizado. Si el bus de un microprocesador utiliza
un bus de 10 MHz y la seal de lectura empieza a caer en el tercer cuarto del ciclo T3:
a) Determinar la longitud del ciclo de instruccin de una lectura de memoria.
b) Cundo debera situarse el dato de memoria en el bus como muy tarde? Suponer un
tiempo de 20 ns para la estabilizacin de las lneas de datos.

528

Problemas de fundamentos y estructura de computadores

Figura 14.7. Temporizacin sncrona de las operaciones de bus.

Solucin:
a) Con una frecuencia de reloj de 10 MHz, el periodo de reloj es de 10.7 s % 100 ns, tenemos que la longitud del ciclo de lectura de memoria es de 3 # 100 ns % 300 ns.
b) La seal de lectura comienza a caer a 75 ns del comienzo del tercer ciclo. Por lo tanto, la
memoria debe ubicar los datos en el bus no ms tarde de 55 ns desde el comienzo de T3.
PROBLEMA 6
Considerar un microprocesador con la temporizacin de lectura de memoria de la Figura 14.7. Despus de analizar la situacin, un diseador determina que la memoria no es
capaz de proporcionar el dato a leer en un tiempo inferior a 180 ns.
a) Cuntos ciclos de espera deben insertarse para conseguir una lectura adecuada de
memoria si el reloj de bus opera a 8 MHz?
b) Para utilizar los ciclos de espera se aade una lnea de estado denominada READY.
Una vez que el procesador ha activado la seal de lectura debe esperar a que la lnea
READY se active para intentar leer el dato de las lneas del bus. Durante qu intervalo de tiempo hay que mantener la seal READY en baja para que el procesador
inserte los ciclos de espera necesarios?

Captulo 14 Buses

529

Solucin:
a) El periodo de reloj es de 8 MHz % 125 ns. Por lo tanto, necesitamos insertar dos ciclos de
reloj.
b) Segn la figura, la seal de lectura comienza a activarse al comienzo de T2. Con el objeto
de insertar dos ciclos de reloj, la lnea READY debe ser puesta en baja al comienzo de
T2 y permanecer as durante 250 ns.
PROBLEMA 7
Un microprocesador utiliza la temporizacin que se muestra en la Figura 14.7 para la escritura en memoria. Su fabricante especifica que la extensin temporal de la seal de escritura
viene dada por T-50, donde T es el ciclo de reloj en nanosegundos.
a) Cul es la extensin de la seal de escritura si la frecuencia de reloj del bus es de
5 MHz?
b) La hoja de caractersticas del microprocesador especifica que, tras el flanco de bajada
de la seal de escritura, los datos se mantienen vlidos durante 20 ns. Durante cunto
tiempo se mantienen vlidos los datos que se van a escribir en memoria?
c)

Cuntos ciclos de espera deberan insertarse si la memoria necesita que los datos se
mantengan vlidos durante al menos 190 ns?

Solucin:
a) Un reloj de 5 MHz se corresponde con un periodo de 200 ns. Por lo tanto, la extensin de
la seal de escritura es de:
Extensin de la seal de escritura % T . 50 ns % 200 ns . 50 ns % 150 ns
b) El dato debe permacer vlido durante 150 ns ! 20 ns % 170 ns
c)

En este caso el dato debe permanecer vlido durante 150 ns ! 190 ns % 240 ns.
Esto implica utilizar dos ciclos, o lo que es lo mismo, un ciclo de espera.

PROBLEMA 8
El microprocesador 8088 de Intel tiene una temporizacin de bus para la lectura similar a
la de la Figura 14.7, pero necesita cuatro ciclos de reloj del procesador. El dato se mantiene
vlido en el bus hasta el cuarto ciclo de reloj del procesador. Si la frecuencia de reloj del
procesador es de 8 MHz:
a) Cul es la velocidad mxima de transferencia de datos?
b) Repetir el apartado anterior suponiendo que hay que insertar un ciclo de espera por
cada byte transferido.
Solucin:
a) El periodo de reloj es de 1/8 MHz % 125 ns.
Un ciclo de lectura de bus es entonces de: 125 ns # 4 % 500 ns.

530

Problemas de fundamentos y estructura de computadores

Esto implica una velocidad de transferencia mxima de:


Velocidad de transferencia mxima %

MB
1 byte
%2
s
500 ns

b) El ciclo de espera extiende el ciclo de lectura de bus a: 125 ns # 5 % 625 ns.


Por lo tanto:
Velocidad de transferencia mxima %

MB
1 byte
% 1,6
s
625 ns

PROBLEMA 9
Suponer que tenemos un sistema con las siguientes caractersticas:
Un sistema de memoria y bus que soportan acceso a bloques de entre 4 y 16 palabras
de 32 bits.
Un bus sncrono de 64 bits a 200 MHz en el que una transferencia de 64 bits requiere
un ciclo de reloj. El envo de la direccin a memoria tambin requiere un ciclo de
reloj.
Se necesitan 2 ciclos de reloj entre dos operaciones de bus.
El tiempo de acceso a memoria para las 4 primeras palabras es de 200 ns; cada grupo
adicional de cuatro palabras se lee en 20 ns.
El sistema descrito anteriormente se utiliza para gestionar accesos simultneos a discos
con una velocidad de transferencia de 50 MB/s. Calcular el nmero de transferencias a
disco que se pueden realizar simultneamente con los dos tamaos de bloque.
Solucin:
1 bloque de 4 palabras de 32 bits
Tiempo requerido para las cuatro primeras palabras:
1 ciclo de reloj para enviar la direccin de memoria
! 200 ns / 5 ns/ciclo % 40 ciclos de tiempo de acceso
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican
2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 45 ciclos
Por otro lado, el tiempo empleado en 45 ciclos es:
45 ciclos # 5 ns / ciclo % 225 ns
Lo que da un ancho de banda:
32 bits
palabra
16 B
16 # 103 MB
MB
%
%
% 71,11
225 s
225 ns
225 ns
s

4 palabras #
Ancho de banda %

Captulo 14 Buses

531

Como la velocidad de transferencia de disco es de 50 MB/s, el nmero mximo de accesos a disco que podemos gestionar es:
Transferencia a disco %

71,11 MB/s
%1
50 MB/s

1 bloque de 16 palabras de 32 bits


El procedimiento es parecido al caso anterior, con la excepcin de que ahora leeremos 16
palabras consecutivas en memoria, lo que implica que tendremos un tiempo de acceso de 40
ciclos al primer bloque de 4 palabras y de 20 ns / 5 ns/ciclo % 4 ciclos en los restantes 3 bloques de 4 palabras:
Tiempo requerido para el primer bloque de cuatro palabras:
1 ciclo de reloj para enviar la direccin de memoria
! 200 ns / 5 ns % 40 ciclos de tiempo de acceso
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican
2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 45 ciclos
Por otro lado, el tiempo empleado en 45 ciclos es:
45 ciclos # 5 ns/ciclo % 225 ns
Debemos tener presente que ahora podemos solapar el tiempo de acceso por parte de la
memoria con el tiempo de operaciones de bus. Es decir, si observamos la Figura 14.8, el tiempo de acceso del segundo ciclo se puede solapar con el volcado de datos en el bus y el tiempo
de espera del mismo.

Figura 14.8. Solapamiento del tiempo de acceso con las operaciones de bus.

Esto implica que cada transferencia adicional de bloque consumir 4 ciclos de reloj.
Tiempo requerido para los tres bloques restantes: ! 3 #
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican
2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 4 ciclos

532

Problemas de fundamentos y estructura de computadores

Por otro lado, el tiempo empleado en 4 ciclos es:


4 ciclos # 5 ns/ciclo % 20 ns
Esto hace un total de 225 ns ! 3 # 20 ns % 285 ns
Lo que da un ancho de banda:
16 palabras #
Ancho de banda %

285 ns

32 bits
palabra

64 B
64 # 103 MB
MB
%
% 224,56
285 s
285 ns
s

Como la velocidad de transferencia de disco es de 50 MB/s, el nmero mximo de accesos a disco que podemos gestionar es:
Transferencias a disco %

224,56 MB/s
%4
50 MB/s

PROBLEMA 10
Suponer que tenemos un sistema con las siguientes caractersticas:
Un sistema de memoria y bus que soportan acceso a bloques de entre 4 y 16 palabras
de 32 bits.
Un bus sncrono de 64 bits a 200 MHz en el que una transferencia de 64 bits requiere
un ciclo de reloj. El envo de la direccin a memoria tambin requiere un ciclo de
reloj.
Se necesitan 2 ciclos de reloj entre dos operaciones de bus.
El tiempo de acceso a memoria para las 4 primeras palabras es de 150 ns; cada grupo
adicional de cuatro palabras se lee en 30 ns.
Calcular el ancho de banda y la latencia del sistema al leer 256 palabras mediante
transferencias que usan:
a) Bloques de 4 palabras.
b) Bloques de 16 palabras.
Calcular tambin el nmero de transacciones de bus por segundo en cada caso.
Solucin:
a) 256/4 % 64 bloques de 4 palabras de 32 bits
Tiempo requerido para cada bloque de cuatro palabras: 64 #
1 ciclo de reloj para enviar la direccin de memoria
! 150 ns / 5 ns/ciclo % 30 ciclos de tiempo de acceso
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican 2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 35 ciclos

Captulo 14 Buses

533

Lo que hace un total de:


Ciclos totales % 64 bloques # 35

ciclos
% 2.240 ciclos
bloque

Esto implica:
Latencia % 2.240 ciclos # 5
Transacciones por segundo %

ns
% 11.200 ns
ciclo

transacciones
64 transacciones
% 5,71 # 106
segundo
11.200 ns
B
palabras
#4
palabra
bloque
MB
% 91,43
11.200 ns
s

64 bloques # 4
Ancho de banda %

b) 256/16 % 16 bloques de 16 palabras de 32 bits


El procedimiento es parecido al caso anterior, con la excepcin de que ahora leeremos 16
palabras consecutivas en memoria, lo que implica que tendremos un tiempo de acceso de
30 ciclos al primer bloque de 4 palabras y de 30 ns / 5 ns/ciclo % 6 ciclos en los restantes
3 bloques de 4 palabras:
Tiempo requerido para el primer bloque de cuatro palabras:
1 ciclo de reloj para enviar la direccin de memoria
! 150 ns / 5 ns % 30 ciclos de tiempo de acceso
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican 2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 35 ciclos
Debemos tener presente que ahora podemos solapar el tiempo de acceso por parte de
la memoria con el tiempo de operaciones de bus. Es decir, si observamos el tiempo de

Figura 14.9. Solapamiento del tiempo de acceso con las operaciones de bus.

534

Problemas de fundamentos y estructura de computadores

acceso del segundo ciclo se puede solapar con el volcado de datos en el bus y el tiempo de
espera del mismo.
Esto implica que cada transferencia adicional de bloque consumir 6 ciclos de reloj.
Tiempo requerido para los tres bloques restantes: ! 3 #
! 2 ciclos de tiempo de acceso
! 2 ciclos para transferir los datos (4 palabras, cuando el bus soporta 2 palabras implican
2 ciclos)
! 2 ciclos de reloj entre operaciones de bus
% 6 ciclos
Esto hace un total de 35 ciclos ! 3 # 6 ciclos % 53 ciclos
Este es el nmero de ciclos empleado en leer un bloque de 16 palabras. Como tenemos que leer 16 bloques, da un total de 53 ciclos # 16 % 848 ciclos.
Con esta informacin podemos calcular los datos solicitados en el enunciado:
Latencia % 848 ciclos # 5

Transacciones por segundo %

ns
% 4.240 ns
ciclo

transacciones
16 transacciones
% 3,77 # 106
segundo
4.240 ns
B
palabras
#4
palabra
bloque
MB
% 241,50
4.240 ns
s

16 bloques # 16
Ancho de banda %
PROBLEMA 11

Suponer que tenemos un sistema de escritura en memoria con las siguientes caractersticas:
Un bus sncrono de lneas dedicadas: 32 bits para direcciones y 32 bits para datos. El
bus trabaja a 200 MHz en el que una transferencia de 32 bits requiere un ciclo de
reloj. El envo de la direccin a memoria tambin requiere un ciclo de reloj.
Se necesitan 2 ciclos de reloj entre dos operaciones de bus.
La primera palabra se escribe en memoria 200 ns despus de que la direccin est
disponible; cada escritura adicional se realiza en 20 ns. La transferencia de una palabra y la escritura de la anterior puede superponerse.
Calcular el ancho de banda y la latencia del sistema al escribir 256 palabras de 32 bits
mediante transferencias que usan:
a) Bloques de 4 palabras.
b) Bloques de 8 palabras.

Captulo 14 Buses

535

Solucin:
a) 256/4 % 64 bloques de 4 palabras de 32 bits
Tiempo requerido % 64 # tiempo de transferencia de 4 palabras % 64 #
1 ciclo de reloj para enviar la direccin de memoria y la primera palabra simultneamente
! 200 ns / 5 ns/ciclo % 40 ciclos de escritura
! 3 ciclos para enviar las tres palabras restantes
! 2 ciclos de reloj entre operaciones de bus
% 46 ciclos
Lo que hace un total de:
Ciclos totales % 64 bloques # 46

ciclos
% 2.944 ciclos
bloque

Esto implica:
Latencia % 2.944 ciclos # 5

ns
% 14.720 ns
ciclo

B
palabras
#4
palabra
MB
bloque
% 69,57
14.720 ns
s

64 bloques # 4
Anchos de banda %

b) 256/8 % 32 bloques de 8 palabras de 32 bits


Tiempo requerido para cada bloque de ocho palabras:
1 ciclo de reloj para enviar la direccin de memoria y la primera palabra simultneamente
! 200 ns / 5 ns % 40 ciclos de escritura
! 7 ciclos para enviar las siete palabras restantes
! 4 ciclos de reloj debido a dos operaciones de bus
% 52 ciclos
Que para 32 bloques hacen 1.664 ciclos.
Con esta informacin podemos calcular los datos solicitados en el enunciado:
Latencia % 1.664 ciclos # 5

B
palabras
#4
palabra
bloque
MB
% 123,08
8.320 ns
s

32 bloques # 8
Anchos de banda %

ns
% 8.320 ns
ciclo

536

Problemas de fundamentos y estructura de computadores

PROBLEMA 12
Se desea comparar los anchos de banda mximos de un bus sncrono y otro asncrono. El
bus sncrono tiene un tiempo de ciclo de reloj de 50 ns, y cada transaccin del bus requiere
1 ciclo de reloj. El bus asncrono requiere 20 ns para el protocolo de handshaking. Para
ambos la seccin de datos tiene una anchura de 32 bits. Encontrar el ancho de banda de
ambos buses cuando realizan lecturas de una memoria de 100 ns. Suponer que siempre se
lee una palabra.
Solucin:
Analicemos ambos casos:
Bus sncrono
En caso de utilizar un bus sncrono, el proceso de envo de una palabra tiene 3 fases:
1. Enviar la direccin de memoria (50 ns).
2. Leer el dato (100 ns).
3. Enviar el dato (50 ns).
Por lo tanto el tiempo total de envo de 32 bits (una palabra) es de 200 ns. Para hallar el
ancho de banda basta con realizar una sencilla regla de tres:
32 bits
4 Bytes
%
% 20 MB/s
200 ns 200 # 10.9 s
Bus asncrono
Tal y como hemos visto en teora, en el protocolo de handshaking (ver Figura 14.5) hacen
falta 7 pasos, cada uno de ellos de 20 ns, sin embargo algunos de los pasos pueden solaparse:
Paso 1: la memoria detecta la activacin de ReadReq, lee la direccin que hay en el bus y
activa Ack. Tiempo 20 ns.
Pasos 2, 3 y 4: el perifrico libera los buses y desactiva ReadReq, la memoria activa Ack
para indicar que va a leer y activa DataRdy para indicar que tiene el dato. Tiempo mximo
(3 # 20 ns, 100 ns) % 100 ns.
Pasos 5, 6 y 7: el perifrico detecta DataRdy y lee los datos, activando al terminar Ack. La
memoria ve la activacin y libera el bus de datos y desactiva DataRdy. El perifrico desactiva
su seal de Ack indicando que la transferencia ha terminado. Tiempo 3 # 20 ns % 60 ns.
El tiempo total es de: 180 ns.
Por lo tanto el ancho de banda mximo para transmitir 4 bytes cada 180 ns ser:
4B
4 MB
%
% 22,22 MB/s
180 ns 0,18 s
PROBLEMA 13
Se desea comparar los anchos de banda mximos de un bus sncrono y otro asncrono. El
bus sncrono tiene un tiempo de ciclo de reloj de 30 ns. Y cada transaccin requiere 1 ciclo
de reloj. El bus asncrono requiere 25 ns. Para el protocolo de handshaking, en ambos buses, la seccin de datos tiene una anchura de 32 bits.

Captulo 14 Buses

537

Se pide:
Calcular el ancho de banda de ambos buses cuando realizan lecturas de una memoria
de 60 ns suponiendo que las lecturas siempre son de una palabra.
Solucin:
Bus sncrono
Tiene un ciclo de bus de 30 ns.
El bus sncrono deber:
1.

Enviar la direccin a la memoria: 30 ns.

2.

Leer la memoria: 60 ns.

3.

Enviar los datos al dispositivo: 30 ns.

El tiempo total ser de 120 ns. El ancho de banda mximo para transmitir 32 bits (4 bytes)
cada 120 ns ser de:
4B
MB
% 33,33
120 ns
s
Bus asncrono
Tal y como vemos, en el protocolo de handshaking hacen falta 7 pasos (Figura 14.5), cada
uno de ellos de 25 ns, pero los pasos 2, 3 y 4 pueden solaparse con el acceso a memoria.
Paso 1: la memoria detecta la activacin de ReadReq, lee la direccin que hay en el bus y
activa Ack. Tiempo 25 ns.
Pasos 2, 3 y 4: el perifrico libera los buses y desactiva ReadReq, la memoria activa Ack
para indicar que va a leer y activa DataRdy para indicar que tiene el dato. Tiempo mximo
(3 # 25 ns, 60 ns) % 75 ns.
Pasos 5, 6 y 7: el perifrico detecta DataRdy y lee los datos, activando al terminar Ack. La
memoria ve la activacin y libera el bus de datos y desactiva DataRdy. El perifrico desactiva
su seal de Ack indicando que la transferencia ha terminado. Tiempo 3 # 25 ns % 75 ns.
El tiempo total es de: 175 ns. Por lo tanto el ancho de banda mximo para transmitir 4
bytes cada 180 ns ser:
MB
4B
% 22,86
s
175 ns
PROBLEMA 14
Se dispone de un bus asncrono de 128 bits (4 palabras) para enviar datos de memoria a un
dispositivo de E/S. Una peticin del dispositivo implica leer 16 palabras de 32 bits de la
memoria. El bus sigue un protocolo de handshaking como el mostrado en la Figura 14.5,
salvo que ste es extendido para que la memoria pueda continuar enviando bloques adicionales de datos hasta que la transaccin se complete. Asumiendo que cada comunicacin en
el protocolo lleva 20 ns y que el acceso a memoria es de 60 ns, cunto tiempo lleva completar una transferencia?, cul es el ancho de banda de este bus?

538

Problemas de fundamentos y estructura de computadores

Solucin:
Para realizar una transferencia de 16 palabras, se enviarn 4 bloques de 4 palabras cada uno a
travs del bus. En la Figura 14.5, la seal ReadReq est destinada al envo de un bloque de
datos a travs del bus, no a la transferencia de bloques consecutivos. Es por esto que al protocolo original de handshaking debemos aadir una lnea adicional. Esta lnea generalmente es
conocida como Burst Request o BurstReq.
El protocolo de handshaking para bloques consecutivos queda entonces como sigue:
0.

El protocolo comienza con el maestro (el dispositivo de E/S) poniendo una direccin
de memoria en el bus de datos y activando la seal de peticin de lectura (ReadReq y
BurstReq).

1.

La memoria ve ReadReq y BustReq y coge la direccin de memoria del bus de datos


(comienzo de las 16 palabras), activando la seal de aceptacin (Ack).

2.

El dispositivo ve activa la seal de Ack y libera el bus de datos y desactiva la seal de


peticin de lectura ReadReq, que sirve de aviso a la memoria, sin embargo BurstReq
permanece activa.

3.

La memoria ve la desactivacin de la seal de peticin y contesta asimismo con la


desactivacin de la seal de Ack.

4.

Este paso comienza cuando BurstReq est activa y Ack est en baja y la memoria
tiene listas las 4 palabras, las pone en el bus y activa la seal que indica que el dato
est listo (DataRdy).

5.

El dispositivo ve la seal DataReady, con lo que sabe que el dato est listo en el bus y
realiza su lectura. Cuando completa la operacin activa la seal de Ack.

6.

La memoria ve la seal de Ack, lo que le dice que el maestro ya tiene el dato ledo, y
desactiva la seal DataRdy y libera el bus de datos.

7.

El maestro responde a la desactivacin de DataRdy con la bajada de su seal de Ack,


pero contina con la seal BurstReq activa si se deben leer ms datos. Por tanto, el
paso 4 ser el siguiente si BurstReq sigue activa.

8.

Si las ltimas 4 palabras se han ledo, el dispositivo desactiva BurstReq.

Considerando que cada comunicacin en el protocolo lleva 20 ns y que el acceso a memoria lleva 60 ns, una transferencia de bus tardar lo siguiente:
Paso 1: 20 ns (la memoria recibe la direccin y comienza su lectura, el dato estar disponible en el paso 5).
Pasos 2, 3, 4: Ser el mximo del tiempo de protocolo o la lectura de memoria, esto es
mximo (3 # 20 ns, 60 ns) % 60 ns r 4 palabras.
Pasos 5, 6, 7, 4: Comienza el bucle de lecturas, mximo (4 # 20 ns, 60 ns) % 80 ns r 8
palabras.
Pasos 5, 6, 7, 4: Lo mismo, mximo (4 # 20 ns, 60 ns) % 80 ns r 12 palabras.
Pasos 5, 6, 7, 4: Lo mismo, mximo (4 # 20 ns, 60 ns) % 80 ns r 16 palabras.
TOTAL en completar una transferencia: 320 ns.

Captulo 14 Buses

539

Con lo que podemos calcular el ancho de banda:


16 palabras #
Ancho de banda %

4B
palabra

320 ns

% 200

MB
s

PROBLEMA 15
La memoria de un computador consta de N mdulos independientes conectados a un bus
de memoria comn. Al comienzo de una operacin de escritura en memoria, el bus est
ocupado por las seales de datos, direccin y control durante 20 ns. Durante los 80 ns siguientes, el mdulo de memoria direccionado completa el ciclo de escritura, aceptando y
almacenando el dato. Las operaciones de los mdulos de memoria pueden solaparse pero
slo puede haber una peticin en un instante de tiempo. Indique cul es el nmero de mdulos de memoria conectados al bus si la velocidad mxima posible con la que se pueden
escribir los datos en memoria es de 50 Mpalabras/s.
Solucin:
El ciclo de escritura en los mdulos de memoria se muestra grficamente en la Figura 14.10.

Figura 14.10.

Ciclo de escritura en un mdulo de memoria.

El tiempo de ciclo de lectura es de 100 ns. El mdulo de memoria utiliza el bus en exclusiva durante los primeros 20 ns, mientras que en los restantes 80 ns, cualquier otro mdulo
puede hacer uso del bus. Segn se indica en el enunciado, la velocidad mxima de escritura en
memoria es de 50 Mpalabras/s. Considerando que los ciclos de escritura se solapan al mximo, esa velocidad mxima se corresponde con un nmero de mdulos de memoria mayor que
cuatro.

Figura 14.11. Ciclo de escritura en 2 mdulos de memoria.

Figura 14.11: N % 2
Velocidad mxima de transferencia %

2 palabras
Mpal
% 20
100 ns
s

540

Problemas de fundamentos y estructura de computadores

Figura 14.12. Ciclo de escritura en 3 mdulos de memoria.

Figura 14.12: N % 3
Velocidad mxima de transferencia %

Mpal
3 palabras
% 30
s
100 ns

Figura 14.13. Ciclo de escritura en 4 mdulos de memoria.

Figura 14.13: N % 4
Velocidad mxima de transferencia %

Mpal
4 palabras
% 40
s
100 ns

Figura 14.14. Ciclo de escritura en 5 mdulos de memoria.

Figura 14.14: N % 5
Velocidad mxima de transferencia %

5 palabras
Mpal
% 50
100 ns
s

Captulo 14 Buses

541

Figura 14.15. Ciclo de escritura en 6 mdulos de memoria.

Figura 14.15: N % 6
Velocidad mxima de transferencia %

6 palabras
Mpal
% 50
120 ns
s

PROBLEMA 16
Se considera un computador con una longitud de palabra de 48 bits. Cada transmisin sobre el bus multiplexado necesita 750 ns para activar las diferentes rdenes del protocolo de
comunicacin y transmitir el dato por el bus. La velocidad de transferencia desde el disco
es de 107 bits/s y el tiempo de ciclo de la memoria principal es de 600 ns.
a) Qu formato del bus se escogera?
b) Representar el cronograma de los sucesos que tienen lugar durante la transmisin de
una operacin de entrada continua desde el disco a la memoria principal.
c)

Qu fraccin del ancho de banda de la memoria principal se consume en una operacin de E/S del disco?

Solucin:
a) Para elegir un formato de bus, hay que estudiar el tipo de dispositivos que hacen uso de
l; en este caso, la memoria principal y el disco. Ambos dispositivos tienen unas velocidades de transferencia muy distintas.
El tiempo que el disco tarda en disponer de los 48 bits que componen una palabra
completa es:
48 bits
% 48 # 10.7 s % 4.800 ns
bits
7
10
s
Este tiempo es mucho mayor que los 750 ns que tarda el bus en transmitir esa palabra
o que los 600 ns que emplea la memoria principal en almacenarla. Es aconsejable utilizar
un bus con temporizacin asncrona. Con este tipo de temporizacin pueden compartir el
bus una mezcla de dispositivos lentos y rpidos. Por otro lado, no es necesario utilizar un
bus dedicado a E/S ya que una nica unidad de disco, al ser tan relativamente lenta, no lo
justifica.

542

Problemas de fundamentos y estructura de computadores

b) En la Figura 14.16 se representa el cronograma de sucesos que tienen lugar durante una
operacin de entrada desde el disco a la memoria principal.

Figura 14.16. Cronograma de transferencia.

Los nmeros del cronograma se corresponden con los siguientes eventos:

c)

1.

El disco finaliza la lectura de una palabra completa y se inicia el proceso de su


transferencia a travs del bus. Durante 750 ns se activan las seales del protocolo
de comunicaciones y se coloca el dato en el bus.

2.

Las diferentes seales de protocolo han sido activadas y el dato est estable en el
bus. La memoria comienza a almacenar la palabra, lo que llevar 600 ns.

3.

La memoria finaliza el almacenamiento de la palabra y el dato se puede retirar


del bus. Sin embargo, el siguiente dato todava no est disponible.

El ancho de banda se puede definir, en este caso, como la mxima velocidad de transferencia.
Para el disco su valor viene indicado directamente en el enunciado del problema:
bits
s
MB
% 12,5
Bdisco % 107 bps %
bits
s
8
byte
107

El ancho de banda de la memoria se calcula teniendo en cuenta que es capaz de


almacenar una palabra de 48 bits cada 600 ns.
Bmem. %

48 bits
MB
% 8 # 107 bps % 10
600 ns
s

Para calcular la fraccin basta con dividir ambas cantidades:


MB
Bdisco
s
%
% 0,125 r 12,5%
MB
Bmem.
10
s
1,25

Captulo 14 Buses

543

En operaciones de E/S entre la memoria y el disco, tan slo se produce una ocupacin
de 12,5% de la velocidad de transferencia de la memoria. Esto permitira a la memoria, si
fuera necesario y el bus lo aceptara, atender simultneamente a varias unidades de disco.
PROBLEMA 17
Un computador tiene un bus de sistema de 64 lneas de datos que trabaja a una frecuencia
de 33 MHz.
a) Determinar cuntos contralores SCSI se pueden conectar al bus antes de saturarlo, teniendo en cuenta que el bus SCSI tiene 16 lneas de datos y trabaja a una frecuencia de
10 MHz.
b) Al bus SCSI se conectan discos cuya velocidad de transferencia es 7 MB/s. Determinar cuntos discos se pueden conectar al bus SCSI sin llegar a saturarlo.
Solucin:
a) Ancho de banda
El ancho de banda del bus es:
8

B
ciclos
# 33 # 106
% 264 MB/s
ciclo
s

El ancho de banda del controlador SCSI es:


2 B # 10 MHz % 20 MB/s
Por lo tanto se pueden conectar un total de:
264
% 13 controladores
20
b) Nmero mximo de discos
Si el ancho de banda del controlador es de 20 MB/s, se le pueden conectar un total de:
20
% 3 discos
7
PROBLEMA 18
Un computador dispone de un canal multiplexor que controla 5 unidades de disco y
10 unidades de cinta. Las unidades de disco tienen una velocidad de transferencia de
106 bytes/s, y las de cinta de 2 # 105 bytes/s. Si para la transferencia de un byte del canal
multiplexor a memoria principal se utiliza el bus del sistema durante 200 ns, cul es la
velocidad mxima de transferencia de E/S agregada en este sistema?
Solucin:
El canal multiplexor es capaz de atender a varios dispositivos simultneamente. La mxima
velocidad agregada se lograr cuando todos ellos estn transmitiendo.
En este caso, la mxima velocidad de transferencia sera:
5 # 106 ! 10 # 2 # 105 % 7 # 106 bytes/segundo

544

Problemas de fundamentos y estructura de computadores

Ahora bien, si para transferir un byte hacen falta 200 ns % 200 # 10.9 s, en un segundo
slo se podr transferir un mximo de
1s
200 # 10.9

s
B

1
# 109 B % 5 # 106 B
200

en lugar de los 7 # 106 bytes/segundo que cabra esperar.


Por lo tanto, el bus no es capaz de proporcionar el ancho de banda suficiente. Es decir, la
mxima velocidad agregada viene dada por la limitacin en la velocidad de transferencia entre el canal multiplexor y la memoria.
PROBLEMA 19
Un sistema tiene la siguiente jerarqua de buses:

Figura 14.17.

Jerarqua de buses.

Captulo 14 Buses

545

a) Cul es la velocidad del bus de sistema?


b) Cul es la velocidad de los buses de expansin?
c)

Cul es la velocidad de los buses de entrada/salida?

d) Cuntos controladores SCSI se pueden conectar al bus antes de saturarlo?


e)

Cuntos discos se pueden conectar al SCSI sin llegar a saturarlo?

f)

Cuntos fax-modems pueden conectarse al bus EISA sin llegar a saturarlo?

Solucin:
a) 8 bytes # 200 MHz % 1.600 MB/s
b) 8 bytes # 66 MHz % 528 MB/s
c)

4 bytes # 8 MHz % 32 MB/s

d) Controlador SCSI r 4 B # 20 MHz % 80 MB/s


e)

80
% 4 discos
20

f)

56.000 bps % 7.000 bytes/s % 7 # 103 MB/s


32 # 103
% 4.571 fax/modems
7

PROBLEMA 20
Suponer un sistema de arbitraje de 4 dispositivos master conectados a un bus con prioridad
decreciente (Prioridad M1 b M2 b M3 b M4). Considere un tiempo de respuesta de 25
ns.
En este sistema se produce la siguiente secuencia: M4 pide el bus en t % 100 ns y lo
utiliza durante 50 ns, M2 lo pide en t % 200 ns por 50 ns, M3 en t % 330 ns y por 200 ns y
finalmente M1 pide el control del bus en t % 400 ns hasta un nuevo evento. Dibujar el
cronograma del sistema para un protocolo de 3 hilos.
Solucin:
Segn el enunciado el esquema de comunicaciones sera el siguiente:

546

Problemas de fundamentos y estructura de computadores

El proceso de comunicacin seguir los siguientes pasos:


Evento
Instante de tiempo (ns)
M4 pide el bus
100
Arbitro recibe req
125
Arbitro enva grant a M1
150
M1 enva grant a M2
175
M2 enva grant a M3
200
M2 pide el bus
200
Arbitro recibe req
225
M3 enva grant a M4 y se activa BUS BUSY
225
M4 libera el bus
275
Arbitro enva grant a M1
300
M1 enva grant a M2
325
M2 controla el bus
325
M3 pide el bus
330
Arbitro recibe req
355
M2 libera el bus
375
Arbitro enva grant a M1
400
M1 pide el bus
400
M1 enva grant a M2
425
Arbitro recibe req
425

14.6 Problemas propuestos


PROBLEMA 1
Suponer que tenemos un sistema con las siguientes caractersticas:
Un sistema de memoria y bus que soportan acceso a bloques de 4 o 16 palabras de
32 bits.
Un bus sncrono de 64 bits a 200 MHz en el que una transferencia de 64 bits requiere un
ciclo de reloj. El envo de la direccin a memoria tambin requiere un ciclo de reloj.
Se necesitan 2 ciclos de reloj entre dos operaciones de bus.
El tiempo de acceso a memoria para las 4 primeras palabras es de 200 ns; cada grupo
adicional de cuatro palabras se lee en 20 ns. La transferencia de los datos ledos ms
recientemente y la lectura de las siguientes 4 palabras puede superponerse.
Encontrar la latencia y el ancho de banda del bus al leer 256 palabras de memoria con
ambos tamaos de bloque.
PROBLEMA 2
Suponer que tenemos un sistema con las siguientes caractersticas:
Un sistema de memoria y bus que soportan acceso a bloques de palabras de 32 bits.
Un bus sncrono de 64 bits a 200 MHz en el que una transferencia de 64 bits requiere un
ciclo de reloj. El envo de la direccin a memoria tambin requiere un ciclo de reloj.

Captulo 14 Buses

547

Se necesitan 2 ciclos de reloj entre dos operaciones de bus.


El tiempo de acceso a memoria para las 4 primeras palabras es de 150 ns; cada grupo
adicional de cuatro palabras se lee en 30 ns.
Encontrar la latencia y el ancho de banda del bus al leer 256 palabras de memoria. Considere tamaos de bloque de 4, 5, 6 ... 16 palabras y representar los datos en una grfica, analizando los resultados.
PROBLEMA 3
Suponer que tenemos un sistema con las siguientes caractersticas:
Un sistema de memoria y bus que soportan acceso a bloques 4 o 16 palabras de 32 bits.
Un bus sncrono de 64 bits a 200 MHz en el que una transferencia de 64 bits requiere un
ciclo de reloj. El envo de la direccin a memoria tambin requiere un ciclo de reloj.
Se necesitan 2 ciclos de reloj entre dos operaciones de bus.
El tiempo de acceso a memoria para las 4 primeras palabras es de 150 ns; cada grupo
adicional de cuatro palabras se lee en 30 ns.
Encontrar la latencia y el ancho de banda del bus al leer 4, 5, 6, ..., 256 palabras de memoria. Considerar ambos tamaos de bloque y representar los datos en una grfica, analizando
los resultados.
PROBLEMA 4
Se desea comprobar los anchos de banda mximos de un bus sncrono y otro asncrono. El bus
sncrono tiene un tiempo de ciclo de reloj de 50 ns, y cada transicin de bus requiere un ciclo
de reloj. El bus asncrono requiere 40 ns para el protocolo de handshaking. En ambos buses, la
seccin de datos tiene una anchura de 32 bits. Encontrar el ancho de banda de ambos buses
cuando realizan lecturas de una memoria de 200 ns. Suponger que las lecturas son siempre de
una palabra.
PROBLEMA 5
El microprocesador de ocho bits 8086 de Intel utiliza un bus de 16 bits que puede transferir 2
bytes a la vez, siendo par la direccin del byte menos significativo. Sin embargo, el 8086
permite palabras de operandos alineadas tanto en direcciones pares (even-aligned) como impares (odd- aligned). Si se hace referencia a una palabra alineada en una direccin impar se
necesitan dos ciclos, cada uno de cuatro ciclos de reloj de bus para transferir la palabra. Considerar una instruccin del 8086 que utiliza dos operandos de 16 bits. Cunto tiempo se tarda
en captar los dos operandos segn las distintas posibilidades? Considerar una frecuencia de
reloj de 4 MHz y que no hay estados de espera.
PROBLEMA 6
La memoria de un computador consta de 4 mdulos conectados a un bus de memoria comn.
Cuando se realiza una peticin de escritura, el bus est ocupado por las seales de datos, direccin y control durante 50 ns. En esos mismos 50 ns y en los 200 ns siguientes, el mdulo
de memoria direccionado ejecuta 1 ciclo aceptando y almacenando el dato. Las operaciones

548

Problemas de fundamentos y estructura de computadores

de los mdulos pueden solaparse, pero slo puede haber una peticin por instante de tiempo. Si tC representa el tiempo de ciclo de escritura, calcular cul es la velocidad mxima de
escritura.
PROBLEMA 7
Suponer un sistema de arbitraje de 4 dispositivos master conectados a un bus con prioridad
decreciente (Prioridad M1 b M2 b M3). Considerar un tiempo de respuesta de 25 ns. Se produce la siguiente secuencia: M3 pide el bus en t % 100 ns y lo utiliza durante 50 ns, M2 lo
pide en t % 200 ns por 50 ns, M1 en t % 290 ns y por 75 ns. Dibujar el cronograma del sistema para a) un protocolo de arbitraje de 3 hilos y b) un protocolo daisy-chain.
PROBLEMA 8
Considerar la disposicin de las lneas de peticin del bus (BR) y de autorizacin del bus
(BG) mostradas en la Figura 14.18.

Figura 14.18.

Esquema de arbitraje de bus.

a) Cmo debera el dispositivo generar BR?


b) Interpretar la entrada BGN.
c)

Generar la salida BGO.

d) Especificar el cronograma de las seales y la prioridad de cada dispositivo.


e) Identificar los posibles conflictos que pueden aparecer en este sistema e indicar la manera
de solucionarlos.
PROBLEMA 9
El bus de E/S de un computador posee un mecanismo de arbitraje por encadenamiento (daisy
chain) y tiene conectados k dispositivos (d1, d2, ..., dk). Cada dispositivo di utiliza una fraccin
ai de la capacidad del bus, que tiene un valor normalizado a 1:
k

0 a ai a 1,

siendo

; ai % 1

i%1

Captulo 14 Buses

549

a) Cmo se deberan conectar los dispositivos para conseguir el mximo de la capacidad


media sobrante? Se define la capacidad sobrante de un dispositivo como 1 menos la suma
de las capacidades utilizadas por todos los dispositivos que tienen una prioridad superior.
b) Comentar brevemente lo que significan esos resultados y dar un ejemplo de cundo no se
pueden aplicar.
PROBLEMA 30
A continuacin se describen varios bloques usados en un sistema de E/S que tiene un bus
sncrono procesador-memoria que funciona a 200 MHz y uno o varios adaptadores de E/S
para realizar la interfaz de buses de E/S al bus procesador-memoria:
Sistema de memoria: Dispone de una interfaz de 32 bits y soporta transferencia de 4 palabras. Dispone de lneas separadas para direcciones y datos. Para las escrituras a memoria
acepta una palabra por ciclo durante 4 ciclos consecutivos y luego requiere de 4 ciclos para
almacenar los datos y estar disponible para una nueva transaccin.
DMA: Los adaptadores de E/S utilizan DMA para transferir los datos entre los buses de
E/S y el bus procesador-memoria. El controlador de DMA realiza el arbitraje para acceder al
bus procesador-memoria y enva/recibe bloques de 4 palabras hacia/desde el sistema de memoria. El controlador de DMA puede gestionar hasta 8 discos. La inicializacin de una operacin de E/S (incluidos el posicionamiento y el acceso) requiere de 1 ms, durante el cual el
controlador no puede iniciar un nuevo acceso, aunque s pueden completarse operaciones pendientes.
Bus de E/S: El bus de E/S es sncrono con un ancho de banda de 10 MB/s. El tamao de
cada transferencia es de 1 palabra.
Discos: Los discos tienen un tiempo de posicionamiento medio ms latencia de rotacin
de 12 ms. Los discos tienen un ancho de banda para la lectura/escritura de 5 MB/s.
Encuentre el tiempo necesario para leer un sector de 16 KB del disco a memoria, suponiendo que sta es la nica actividad en el bus.

Abnades, M. A., Cuesta, A., Granados A., Joglar, N., Martn. D. Exmenes finales: La solucin del profesor. Felipe II Libros, 2007.
Angulo Usategi, J. M. Sistemas digitales y tecnologa de computadores. Paraninfo, 2002.
Baena, C.; Bellido, J.; Molina, A.; Parra, M.; Valencia, M. Problemas de circuitos y sistemas
digitales. McGraw-Hill, 1997.
Beekman G. Introduccin a la informtica. Pearson, 2004. 6.a edicin.
Ercegovac, M., Lang, T. Digital Systems and hardware/firmware algorithms. John Wiley &
Sons, 1985.
Floyd, T. L. Fundamentos de sistemas digitales. Prentice Hall, 2006, 9.a edicin.
Gajski, D. D. Principios de diseo digital. Prentice Hall, 1997.
Gascn de Toro, M., Leal Hernndez, A., Peinado Bolos, V. Problemas prcticos de diseo
lgico, hardware. Paraninfo, 1990.
Hamacher, C., Vranesik, Z., Zaky, F. Computer Organization. McGraw-Hill, 2002. 5.a edicin.
Hayes, J. B. Introduccin al diseo lgico digital. Addison Wesley, 1996.
Hennessy, J. L., Patterson, D. A. Computer Architecture. A Quantitative Approach. Morgan
Kaufmann, 2007, 4.a edicin.
Hermida R., Corral A. M. del, Pastor E. y Snchez F. Fundamentos de computadores. Sntesis, 1998.
Hill, F. J., Peterson, G. R. Introduction to Switching Theory & Logical Design. John Wiley &
Sons, 1981, 3.a edicin.
Irvine, K. R. Lenguaje ensamblador para computadoras basadas en intel. Prentice Hall, 2007,
5.a edicin.
Koren, I. Computer arithmetic algorithms, A. K. Peters, 2002, 2.a edicin.
Mano, M. Ingeniera computacional: diseo del hardware. Prentice Hall, 1991.

552

Bibliografa

Mano, M. Diseo digital. Prentice Hall, 2003, 3.a edicin.


Miguel, P. de y otros. Problemas de estructura de computadores. Paraninfo, 1990.
Murdocca, M. J., Heuring, V. P. Principios de arquitectura de computadoras. Prentice Hall,
2002.
Ortega J., Anguita M., Prieto A. Arquitectura de computadores. Thomson-Paraninfo, 2004.
Parhami, B. Computer arithmetic: algorithms and hardware design. Oxford University Press,
2000.
Pastor E. y Snchez F. La mquina rudimentaria: un procesador pedaggico. III Jornadas de
Enseanza Universitaria sobre Informtica JENUI97, junio 1997, pgs. 395-402.
Patterson, D. A., Hennessy, J. L. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann, 2005, 3.a edicin.
Roth, Charles H. Fundamentos de diseo lgico. Thomson, 2004, 5.a edicin.
Septin, J., Mecha, H., Moreno, R., Olcoz, K. La familia del MC68000. Lenguaje ensamblador: conexin y programacin de interfaces. Sntesis, 1995.
Stallings, W. Organizacin y arquitectura de computadores. Prentice Hall, 2007, 7.a edicin.

Por otro lado, una vez explicada y estudiada la teora, el libro es adems una herramienta de autoevaluacin. En este sentido, desde nuestra experiencia, recomendamos al lector que no mire las soluciones, sino que previamente se enfrente al
problema e intente resolverlo por cuenta propia, acudiendo como ltimo recurso
al breve apunte terico que hay al comienzo de cada captulo. El libro recopila
ms de 250 problemas resueltos y otros tantos solamente enunciados. La mayor
parte de ellos han sido propuestos en exmenes de Diplomatura y Licenciatura en
Informtica a lo largo de los 10 ltimos aos.
Los temas que abarca se pueden agrupar en las siguientes materias:
Representacin de la informacin
Diseo Combinacional
Diseo Secuencial
Diseo Algortmico
Ensamblador
Modos de direccionamiento
Formato de instrucciones
Ruta de datos y Unidad de Control
Memoria
Buses
Entrada/Salida
Segmentacin
Rendimiento

Problemas de fundamentos
y estructura de computadores

Este libro pretende ser un complemento prctico a la extensa bibliografa terica


en el rea de Diseo Lgico, Estructura y Arquitectura de Computadores. En
estas asignaturas el alumno se enfrenta a un gran nmero de mtodos y conceptos, que naturalmente debe aprender, pero cuya finalidad es ser aplicados en
problemas reales. Por ello creemos que disponer de una coleccin de casos prcticos, presentados en forma de ejercicios, puede aclarar los conceptos que se estn
estudiando en estas asignaturas.

Problemas de fundamentos
y estructura de computadores

Cuesta
Hidalgo
Lanchares
Risco
ISBN 978-84-8322-591-2

9 788483 225912

www.pearsoneducacion.com

Problemas de fundamentos.indd 1

Alfredo Cuesta Infante


Jos Ignacio Hidalgo Prez
Juan Lanchares Dvila
Jos Luis Risco Martn
20/7/11 13:25:07