You are on page 1of 345

UNIVERSIDAD NACIONAL DE LA RIOJA

INGENIERIA EN SISTEMAS Y LICENCIATURA EN


SISTEMAS

MANUAL DE CATEDRA

PROCESAMIENTO DE DATOS I

DOCENTES

TITULAR: LIC. MARCELO MARTINEZ


ADJUNTO: ING. CLAUDIA CESARINI
J.T.P: ING. FERNANDO SANCHEZ

AÑO 2003
INDICE GENERAL

BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Arquitectura - Componentes Básicos:...................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Canales de e/s.........................................................................................................................20
SISTEMA OPERATIVO.......................................................................................................23
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
MEMORIA............................................................................................................................57
MICROPROCESADORES y BUSES...................................................................................66
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
UNA MICROARQUITECTURA TIPICA ...........................................................................96
UNA MACROARQUITECTURA TIPICA .......................................................................103
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144

1
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Tipos de Instrucciones ........................................................................................................160
Flujo De Control .................................................................................................................173
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
EL PROCESO DE ENSAMBLAJE ...................................................................................261
MACrOS .............................................................................................................................269
MONTAJE (LINKING) y CARGA ...................................................................................272

2
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
PERIFERICOS DE SALIDA: ............................................................................................304
PERIFERICOS DE COMUNICACION.. ..........................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

3
BOLILLA I: LA
COMPUTADORA

4
INDICE
INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38

5
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103

6
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179

7
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240

8
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296

9
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311

10
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

11
INTRODUCCIÓN

12
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

LA COMPUTADORA
CONCEPTO:
Máquina capaz de realizar y controlar a gran velocidad cálculos y procesos
complicados que requieren una toma rápida de decisiones mediante la aplicación
sistemática de criterios preestablecidos.
La computadora se la relaciona a un cerebro electrónico, teniendo en cuenta que debe
ser programada para cada tarea que se requiera.
La computadora puede recibir diversos nombres. El término computadora procede del
inglés (computer) y significa máquina de computar o calcular. Del término francés
ordinateur procede la denominación de Ordenador que se refiere a la tarea de poner en
orden la información. Son dos perspectivas distintas y complementarias. También recibe el
nombre de cerebro electrónico.

FUNCIONES Y ACCIONES:
La computadora tiene una estructura mecánica que permite realizar operaciones a
gran velocidad, la celeridad con que elabora sus cálculos es sorprendente. La velocidad
operativa se mide en millones de operaciones por segundo.
Además de la actividad de realizar cálculos numéricos, realiza otro tipo de tarea que
consiste en el manejo de los Procesos. La computadora trata diversas informaciones, las
ordena y combina apropiadamente según las indicaciones de un programa. Por ej.: la
realización de un censo de la población, la confección de la nómina o el tratamiento de
texto.
Los cálculos y procesos que lleva a cabo la computadora son complicados en el sentido
que resultan prolijos, largos y que exigen una gran precisión, y suponen por ello un gran
esfuerzo por parte del hombre. La ventaja de la máquina a este respecto es que ni sienten ,
ni padecen.
Como resultado de estas características, la computadora ofrece unas posibilidades
enormes para la realización de procesos que, de otro modo no serían factibles (por su
duración), ni tampoco rentables (requerirían concurso de muchas personas). Aporta un alto
nivel de fiabilidad por su precisión y su control, a la vez que permite eludir tareas
repetitivas al ser humano; tareas en las que la máquina se muestra incansable e insensible
y que, por el contrario, generan fatiga en el hombre.

PARA QUÉ SIRVE UNA COMPUTADORA?:


La computadora introdujo un cambio cualitativo, tanto en la organización como en el
desarrollo del trabajo y el ocio. Y no por lo que es sino por lo que hace.
La computadora puede hacer muchas cosas: controlar el riego y las condiciones
ambientales de una plantación, realizar una exploración delicadísima del cerebro humano,
asistir una operación quirúrgica, prevenir riesgos atmosféricos, probar recetas de cocina,
enviar cartas a la velocidad de la luz, regular todos los elementos mecánicas y electrónicos
de un edificio, realizar el censo de población de un país, ver la casa antes de construirla,
etc.. y así sucesivamente.
Lo que no debemos olvidar es que la computadora sólo está limitada por nuestra
propia capacidad imaginativa, si bien los desarrollos en microcomputación y nuevos
lenguajes han de proveer a este instrumento de un motor social mucho más poderoso.

13
COMPUTADORA Y CIRCUITOS:
Una computadora en el fondo no es más que un circuito electrónico muy complejo. Lo
que llamamos corriente eléctrica es, efectivamente, una corriente de cargas eléctricas que
pasa a través de una circuito de la misma manera que el agua circula por las tuberías.
Quizás el circuito más sencillo sea una lámpara enchufada a la corriente eléctrica. La
lámpara es una resistencia, al pasar la corriente, la resistencia se calienta hasta que
empieza a emitir luz.
Ahora bien, un circuito eléctrico puede ser sencillo como el recién descrito, o
sumamente complejo como el que hace funcionar a una supercomputadora. Además de las
resistencias, otros componentes de los circuitos son los condensadores y las inductancias.
Un condensador sirve para acumular carga eléctrica hasta un límite a partir del cual ya no
deja pasar más corriente. Una inductancia es una bobina, un cable enrollado sobre un
núcleo de metal. La inductancia es sensible a las variaciones de corriente eléctrica. Con
resistencias, condensadores e inductancias se fabrican, por ejemplo, los sintonizadores
radiofónicos.
Los circuitos electrónicos en lugar de cable eléctrico utilizan una fina capa de metal
sobre un soporte de silicio. Sobre la capa metálica se conectan los distintos componentes,
esto es un circuito impreso.
El elemento que más ha influido en el desarrollo de las computadoras es el transistor.
Un transistor es una combinación de metales semiconductores. Los semiconductores son
materiales con una estructura atómica particular. Los átomos que los componen están
organizados en una estructura cristalina. El transistor es el resultado de la unión especial de
tres semiconductores. Un transistor permite, por una parte, amplificar y hacer más intensa
una corriente eléctrica, por otra, se comporta como un interruptor, en función de la cantidad
de corriente eléctrica que recibe se cierra o se abre. A base de combinar transistores se
consiguen circuitos capaces de realizar funciones complejas, como sumar números binarios.
Las computadoras no son más que grandes manojos de transistores combinados muy
hábilmente; y una moderna necesita millones de transistores conectados para realizar todas
sus funciones. La conexión de tantísimos elementos sería físicamente imposible si no fuera
por los circuitos integrados. Un circuito integrado es una superposición de finísimas capas
de material semiconductor en las que se recortan y unen los transistores mediante
complicados procesos de alta tecnología. El resultado es una pieza llamada Chip, que en una
superficie de escasos milímetros cuadrados contiene millones de transistores.

HARDWARE Y SOFTWARE:
La computadora presenta dos aspectos íntimamente relacionados: el hardware y el
software. La palabra inglesa hardware se refiere a aquella parte “dura” o material. El
término software designa aquella otra parte “blanda” o lógica. Así pues, etimológicamente,
la computadora se compone de una parte dura y de una parte blanda. Estas expresiones
han de entenderse metafóricamente. Significan que existen unos elementos materiales o
tangibles, los que forman el llamado soporte físico del procesamiento de la información
como los circuitos, los aparatos y terminales y también unos elementos intangibles de
programación, que se designan como soporte lógico.

Software:
Conjunto de Instrucciones de programa de computador que dirige la operación del
hardware.
Un conjunto de instrucciones para una tarea específica se llama Rutina.
Un conjunto completo de instrucciones para ejecutar un conjunto de tareas
relacionadas se llama PROGRAMA.

Al software se lo clasifica en dos grupos:


Software de Base: controla las operaciones de la computadora en sí (Sistema
Operativo, Bios).
Software de Aplicación: los cuales resuelven problemas para los usuarios (programas
del usuario).

14
Hardware:
Es el conjunto de elementos físicos (máquinas y circuitos) y puede ser comparado con
la fuerza; el hardware difícilmente puede ser modificado, y abarca todos los componentes
materiales de la propia computadora, sean mecánicos, eléctricos o electrónicos, así como
las unidades periféricas, sean teclados, impresoras, monitores, etc..

ARQUITECTURA - COMPONENTES BÁSICOS:

Unidad de Control:
La unidad de control realiza la función de dirección central. Interpreta las instrucciones
del programa, que le indica las acciones que ha de realizar, y asigna las tareas a las
distintas partes del conjunto.

Unidad aritmético-lógica:
Es la parte donde se realizan todos los procesos, a través de las indicaciones de la
unidad de control. Realiza operaciones matemáticas ( suma, resta, producto, división, etc.),
o de relación lógica ( >, <, =, and, or, ), con los datos suministrados.
La reunión de la unidad de control y de la unidad aritmético-lógica forma un conjunto
mayor que se denomina Unidad Central de Proceso de Datos, más conocida con las siglas
inglesa de Central Processing Unit, CPU. La CPU es la encargada de desarrollar las
actividades fundamentales que realiza una computadora.

Memoria:(Memoria Central)
La memoria es el almacén donde se registran y quedan a disposición de la CPU los
datos y programas. La memoria consiste en millones de pequeños circuitos que sólo
memorizan dos tipos físicos de información: si pasa corriente o si no pasa. Cada impulso
eléctrico implica la memorización del dígito uno y la interrupción de la corriente determina
la memorización de un cero. Toda la codificación juega con un sistema binario, que puede
ejemplificarse dependiendo del dispositivo físico tomado como modelo, de varias maneras:
abierto/cerrado, conectado/desconectado, 1/0. El sistema binario se distingue del que
utilizamos normalmente, que es decimal o de base diez.

Periféricos:
Los periféricos son elementos que forman parte del sistema físico del equipo y que
cumplen funciones adicionales, pero necesarias. Existen muchos tipos de periféricos, los
fundamentales son el teclado, el monitor la unidad lectora de disco, la impresora , el ratón o
mouse, el escáner, y el modem ( modelador y demodelador de frecuencia), entre otros.

Núcleo de la computadora:
El núcleo de la computadora está compuesto por la CPU y la memoria. La CPU como
ya dijimos comprende la unidad de control (UC) y la unidad aritmético-lógica(UAL). La
memoria es de dos tipos: ROM y RAM; la memoria ROM (siglas que corresponden a la
expresión inglesa Read Only Memory, es decir, memoria de sólo lectura), no puede
alterarse, viene prefijada físicamente por el fabricante, contiene los programas necesarios
(englobados en la expresión sistema operativo), para que la máquina sepa cómo tiene que
operar con los programas y los datos que se le introduzcan, y pueda relacionar los
lenguajes de alto nivel (escrito por el programador), con el lenguaje máquina (código
binario).
La memoria RAM (siglas de la expresión inglesa Random Access Memory, o sea,
memoria de acceso aleatorio), es la que el usuario puede utilizar libremente.
La memoria ROM es fija, es decir, se conserva en toda circunstancia, mientras que la
RAM es volátil y, cuando se desconecta el aparato, la información que contiene
desaparece( por eso antes de apagar la máquina hay que guardar o grabar la información
en el dispositivo físico correspondiente) . La memoria ROM puede imaginarse como una caja
cerrada con una tapa de cristal, a ella sólo se tiene acceso para leer o ver que contiene. Por

15
el contrario la memoria RAM es como un casillero de hotel (o celdas), en el que se depositan
llaves, cartas u otras cosas. Se tiene acceso a él y se puede cambiar la disposición y los
tipos de cosas que contiene.
La estructura interna de la computadora realiza la función del tratamiento y
conservación de la información. Los periféricos que se acoplan proveen dos etapas más, que
anteceden y suceden a la etapa central. A través de los periféricos se produce la entrada y
la salida de información, por ello se conocen también con el nombre de dispositivos de
entrada y salida o de E/S. Estas tres fases reúnen la labor desarrollada por las
computadoras.

Instruccione
UC s
Datos Unidad
Memoria Central de
UAL Resultados Central Proceso

Canal Canal Unidades


De E/S

Unidades Periféricas

La UC puede compararse al director de la fábrica, que distribuye las tareas en el taller,


a la UAL, con trabajadores contables que realizan todos los cálculos y procesos que se les
indican. Los trabajos que éstos llevan a término pasan de nuevo por el director, quién
controla la exactitud y calidad de las operaciones realizadas. Hay pues, un camino de doble
dirección entre la unidad de control y la unidad aritmético-lógica; también existe un camino
doble entre la unidad de control y la memoria. La memoria Central es comparable al
almacén de la fábrica, allí se guardan todos los elementos que han ingresado, así como las
instrucciones de procesamiento y los resultados de las operaciones parciales.
La UC es una especie de mecanismo de relojería electrónico interno que lee y ejecuta
una instrucción tras otra, a un ritmo dado.
Este ritmo es rapidísimo. Para saber cómo debe operar dispone de unos programas
recogidos en la memoria ROM que le instruyen acerca de las normas elementales de una
labor de dirección.

BUSES DE COMPUTADORAS:
Un bus es una ruta eléctrica común entre múltiples dispositivos. Un ejemplo común es
el Bus del Sistema presente en toda microcomputadora, el cuál consiste de 50 a 100
alambres de cobres paralelos grabados en al tarjeta matriz, con conectores espaciados a
intervalos regulares para conectar tarjetas de memoria y de entrada/salida. Dentro de la
misma pastilla del microprocesador puede haber varios buses para conectar sus
componentes internos, como se ilustra en la siguiente figura:

16
Registros

Buses

Bus del Sistema

ALU

Tarjeta Tarjeta Tarjeta


de de E/S de E/S
memoria

Bus integrado a la pastilla

Bus Local

Coprocesador
Los Buses son los ilustrados por las líneas con Flechas.

Los Sistemas de cómputo pueden tener varios buses.


A pesar que los diseñadores de microprocesadores tienen la libertad de usar cualquier
clase de Bus, a efecto que las tarjetas diseñadas por terceras personas puedan conectarse
al Bus del sistema, deben haber reglas bien definidas del funcionamiento de éste, las cuales
deben ser obedecidas por todos los dispositivos conectados al mismo. Esas reglas se
denominan Protocolo del Bus. Asimismo debe haber especificaciones mecánicas y eléctricas
para que las tarjetas diseñadas por terceros se ajusten al gabinete de tarjetas y tengan los
conectores necesarios para acoplarse a la tarjeta Matriz, tanto físicamente como en
términos de voltaje.
Algunos dispositivos conectados al Bus se encuentran en estado activo y pueden
iniciar transferencias, mientras que otros están en estado pasivo aguardando solicitudes. A
los activos s les llama Maestros mientras que a los pasivos se les denomina Esclavos.
Cuando la CPU ordena leer o escribir un bloque a un controlador de discos, ésta actúa como
dispositivo Maestro el controlador como esclavo. Sin embargo, el controlador puede actuar
más adelante como dispositivo Maestro, al indicar a la memoria que acepte las palabras que
lee de la unidad del disco.
Hay varias combinaciones típicas entre dispositivos Maestros y esclavos. Sin embargo
LA MEMORIA NO PUEDE, bajo ninguna circunstancia, actuar como dispositivo Maestro.
Ejemplo de Combinaciones: Maestros y Esclavos del Bus.

Maestro Esclavo Ejemplo


CPU Memoria Extracción de instrucc.y datos
CPU E/S Inicio de transferencia de datos
CPU Coprocesador Traspaso de inst. de pto. Flotante
E/S Memoria DMA(acceso directo memoria)
Coprocesador Memoria Extracción de operadores

Debido a que las señales binarias que emiten los dispositivos no son lo
suficientemente fuertes para activar el Bus, en especial si éste es relativamente largo tiene
muchos o tiene muchos dispositivos conectados. Por esto la mayoría de los dispositivos
maestros se conectan al bus a través de una pastilla denominada manejador del bus, que es
en esencia un amplificador digital. En forma similar los dispositivos esclavos, se conectan

17
por medio de un receptor del bus. Para los dispositivos que pueden actuar ya sea como
maestros o esclavos, se utiliza una pastilla combinada llamada transmisor-receptor del bus.
Un Bus tiene lineas de direcciones de datos y de control, sin embargo no es necesario
que haya una correspondencia de 1 a 1 entre las señales de ambos. Por ejemplo a algunos
microprocesadores tienen tres patas que codifican las operaciones que se están realizando,
como lectura o escritura de la memoria o de entrada/salida. Por su parte, un bus típico
tendrá una línea para lectura de memoria, otra para escritura de memoria, una tercera para
lectura de E/S, una cuarta para escritura de E/S y así sucesivamente. Por lo tanto, se
requiere de una pastilla decodificadora entre la CPU y dicho Bus para convertir la señal
codificada de tres bits en señales separadas que puedan ser manejadas por las líneas del
bus. Hay aspectos relevantes a tener en cuenta en el diseño de buses tales como: la
sincronización del bus, el mecanismo de arbitraje, el manejo de interrupciones, y el manejo
de errores. Todos ellos tienen un gran impacto en la velocidad y en la amplitud de banda
del Bus.

BUSES SÍNCRONOS Y ASÍNCRONOS:


Dependiendo de los ciclos de tiempo., los buses pueden clasificarse en dos categorías:
un Bus síncrono tiene una línea manejada por un oscilador de cristal. La señal de esta línea
consiste en una onda cuadrada con una frecuencia que varía entre 5 y50 MHZ. Todas las
actividades del bus se realizan en un número entero de estos ciclos, denominados ciclos del
bus. El otro tipo de bus, el bus asíncrono no tiene un reloj maestro, la longitud de los ciclos
del bus puede ser cualquiera que se necesite y no se requiere sea la misma entre cada par
de dispositivos. Lo mejor es manejar una tecnología mixta utilizando un asíncrono, esto es
un bus sin reloj maestro, en vez de que todo esté amarrado al reloj, (como el caso del
síncrono, debido a sus intervalos de tiempos discretos, todo el trabajo se realiza en
múltiples enteros del reloj del bus. Si una CPU y una memoria particular son capaces de
completar una transferencia en 3.1 ciclos, deben ampliarla a 4.0, ya que los ciclos
fraccionados están prohibidos, esto es uno de los inconvenientes), cuando el bus maestro
ha activado las señales de dirección, MREQ (indica que la memoria y no un dispositivo está
siendo accesada), RD (distingue las operaciones de lectura de las de escritura) y cualquier
otra que necesite, activa entonces una señal especial llamada SINM (SINcronización
Maestra). Cuando el dispositivo esclavo ve esta señal, realiza su trabajo tan rápido como
puede, activando al terminar la señal SINE (SINcronización Esclava). Tan pronto como el
maestro ve activada la señal SINE, sabe que los datos están disponibles de modo que los
almacena en un registro interno y desactiva las líneas de direcciones lo mismo que MREQ,
RD Y SINM. A vez, cundo el esclavo observa desactivada la señal SINM, sabe que el ciclo se
ha completado, así que desactiva SINE, regresando a la situación original, con todas las
señales desactivadas y aguardando el siguiente ciclo. Activar SINE ocasiona que se activen
las líneas de datos, así como también provoca que el esclavo active SINE. A su vez, activar
esta última señal conduce a desactivar las líneas de direcciones, MREQ, RD Y SINM.
Finalmente, desactivar SINM causa la desactivación de SINE, terminando así la lectura.
Al conjunto de señales enlazadas de esta forma se le denomina sincronización
completa o bidireccional, cuya parte esencial consta de 4 pasos:
• Se activa SINM
• Se activa SINE en respuesta a SINM.
• Se desactiva SINM en respuesta a SINE.
• Se desactiva SINE en respuesta a la desactivación de SINM.

Con esto debe quedar claro las ventajas de los buses asíncronos, pero el hecho de que
la mayoría de los buses son síncronos por la razón de que es más fácil construir sistemas
síncronos. La CPU solo activa sus señales y la memoria sólo reacciona a éstas.

18
Arbitraje del bus:
Sabemos en forma tácita que solo hay un Bus maestro, la CPU. Pero también las
pastillas de E/S pueden actuar como maestros para lecturas y escrituras de memoria así
como para provocar interrupciones. Asimismo, los coprocesadores pueden convertirse en
maestros del bus. ¿Qué sucede si dos o más dispositivos desean actuar como bus maestros
al mismo tiempo?, las respuesta para evitar el caos, es el mecanismo de arbitraje del bus.
Este mecanismo puede Centralizado o Descentralizado. En el primer caso un solo árbitro del
bus determina qué dispositivo tiene acceso. El bus contiene una línea de solicitud que puede
ser activada por uno o varios dispositivos en cualquier momento. No hay forma de que el
árbitro sepa cuántos dispositivos han solicitado el bus. Lo único que distingue es : existen
solicitud(es) y no existen solicitud(es).
Cuando el árbitro recibe una solicitud para el bus, autoriza su uso activando la línea de
respuesta del bus. Dicha línea está conectada en serie a través de todos los dispositivos de
E/S, como en una serie de foquitos de navidad. Cuando el dispositivo que se encuentra
físicamente más cerca del árbitro recibe la señal, verifica si fue él quien hizo la solicitud, en
cuyo caso hace uso del bus y evita que la señal se siga propagando. Si este dispositivo no
fue quien originó la solicitud, la señal se propaga al siguiente dispositivo en la línea, el que
actúa en la misma forma y así sucesivamente hasta que un dispositivo acepte la señal y
haga uso del bus. A este esquema se lo denomina encadenamiento margarita, y tiene la
prioridad de que los dispositivos, poseen, en efecto, prioridades asignadas dependiendo de
qué tan cerca se encuentren del árbitro. El dispositivo más cercano tiene la prioridad más
alta.
Al fin de evitar las prioridades implícitas basadas en la distancia del árbitro, algunos
buses tienen múltiples niveles de prioridad. Para cada nivel existe una línea de solicitud y
una línea de respuesta. En la práctica los buses tienen 4,8 o 16 niveles. Cada dispositivo
está conectado a algunos de los niveles de solicitud del bus, con aquellos que tienen
tiempos más críticos conectados a las líneas con prioridades más altas.

Ejemplo de encadenamiento margarita:

Solicitud del Bus

Autorización del
árbitro bus

1 2 3 4

Dispositivos de E/S
En muchos sistemas, la CPU puede también competir por el bus, pero se le asigna la
prioridad más baja y sólo puede ocupar el bus cuando nadie más lo usa. Aquí la idea es que
la CPU puede esperar mientras que los dispositivos de entrada/salida deben obtener el uso
del bus rápido o pierden los datos que están recibiendo; girando los discos a altas
velocidades no pueden esperar.
Cuando se utiliza el arbitraje del bus descentralizado no existe un árbitro, por ejemplo,
un bus tiene 16 líneas priorizadas de Solicitud del bus, este diseño limita el número de
dispositivos a 16. Cuando alguno de ellos necesita el bus, activa su línea de solicitud. Todos
los dispositivos monitorean todas las líneas de solicitud, de modo que al final de cada ciclo
de bus, cada dispositivo sabe si tiene la prioridad más alta y de ahí, se podrá usar el bus
durante el ciclo siguiente. Este método, comparado con el centralizado requiere de un
mayor número de líneas de bus, pero evita el costo potencial del árbitro.

19
Manejo de interrupciones:
Cuando la CPU instruye a algún dispositivo de E/S para que haga algo, por lo general
esperar una interrupción cuando termine el trabajo. La señal de interrupción indica que
requiere del Bus. Para evitar que los dispositivos quieran enviar una interrupción al mismo
tiempo se asigna prioridades a los dispositivos, y se usa un árbitro centralizado para dar
prioridad a aquellos que tengan los tiempos más críticos. Existen en el mercado pastillas
estándar para el control de las interrupciones y su uso está muy extendido. Las IBM-PC,
PC/AT, y todo sus clones (IBM-PC compatibles) usan una pastilla Intel 8259A.
En las entradas de Solicitud de Interrupción, se pueden conectar en forma directa
hasta 8 pastillas controladoras de E/S. Cuando alguno de estos dispositivos desea realizar
una interrupción, activa su línea de la señal INT (INTerrupción), la cual maneja
directamente la pata de interrupción de la CPU. Cuando esta última está en disposición de
manejar la interrupción, envía un impulso a la 8259A en INTA (INTerrupción Recibida). En
este punto, la pastilla controladora deberá especificar qué dispositivo causó la interrupción,
colocando el número de éste en el bus de datos. Entonces, para encontrar la dirección del
procedimiento a ejecutar para atender esa interrupción el hardware de la CPU utiliza dicho
número como índice en una tabla de apuntadores denominados vectores de interrupción.
Dentro de la pastilla existen varios registros (por ej.: RD(lectura), WR(de escritura),
CS(selección de pastilla),), en donde la CPU puede leer o escribir. Una vez que el software
ha manejado la interrupción y está lista para la siguiente, escribe una clave especial en uno
de los Registros, lo que provoca que la pastilla 8259A desactive INTR, a menos que tenga
otra interrupción pendiente.

CANALES DE E/S
Canales o Procesadores de E/S: con éste dispositivo se quiere lograr la independencia
total con las operaciones de E/S sin que intervenga la CPU.
Lo gestiona independientemente: reconoce por si solo cuál es la dirección y cuál es el
periférico y tiene un buffer que puede convertir la disparidad de capacidad de trasferencia.
Se la conoce también como procesador esclavo.
Características: el canal tiene su juego de instrucción propio y son auténticos
procesadores (menos potentes que el procesador central).
Funciones:
• Puede seleccionar periféricos por si solo.
• Puede controlar esos periféricos (comienza o finaliza la operación)
• Puede seleccionar áreas de memoria donde ocurrirán las operaciones de E/S.
• Tiene la posibilidad de conversión de datos cuando existe disparidad de buses.

EL MICROPROGAMA DEL CANAL: está compuesto por dos grupos de instrucciones:

1. Ejecutan operaciones de E/S y son:


• De lectura y escritura.
• De control de programa (bifurcación).
• De control de periféricos.

2. Instrucciones de E/S que ejecuta el procesador central:


• Indica cuando se inicia y finaliza la operación de E/S.

20
TECNOLOGÍA DE CANALES:

1. De conexión en serie: con procesador de E/S puede atender a varios periféricos, pero de a uno por
vez.

Placa controladora

Procesador de
E/S 1 P1 P2 P3

Procesador de
E/S 2
P1 P2 P3

Es mucho más barata pero más problemática, que la matriz de conexión dinámica,
puesto que no se puede comunicar con dos periféricos que están colgados al mismo
procesador de E/S, aunque los otros procesadores de E/S estén libres.

2. Matríz de Conexiones Dinámicas: cualquier canal puede atender a cualquier periférico que están
conectados a todos los canales. Su problema es que se adapta mal al crecimiento, ya que si se
añadiera un periférico a un procesador de E/S se tendría que rediseñar la lógica dela matriz, ya que
cambiaria la dimensión.

Canal 1

Bus
Canal 2

Canal 3

P1 P2 P3

TIPOS DE CANALES:

Multiplexor:
Es de velocidad baja por atiende a todos los periféricos. Reparte su tiempo entre los
periféricos que están conectados a él, tiene la posibilidad de hacer un ensamblado o
desensamblado de datos. Para realizar operaciones de E/S cada subcanal debe tener un
conjunto de registros:

• UN BUFFER DE DATOS: permite almacenar los datos hasta que son transmitidos.
• UN REGISTRO DE DIRECCIONES DE MEMORIA: apunta a la memoria.

21
• UN REGISTRO DE ESTADO: permite conocer el estado de la transferencia.

Ensamblado: operación de unir bytes para formar 16 bits.


Desensamblado: operación que descompone una transmición en bytes.

Selector
Atiende a un solo periférico por vez. Accede a memoria solo para depositar datos
tiene:

• UN REGISTRO DE DIRECCIÓN: que le indica de donde se deben leer o escribir los datos.
• UN CONTADOR DE PALABRAS: que llegará a valer 0 cuándo termine la transmisión.
• UN REG.DIR.PC RIFE: que contiene la identidad del periférico que intervendrá en la operación
de E/S.
• UN REG.DE ENSAMBLADO que chequea la entrada de datos.
• UN REG.DE DESENSAMBLADO que chequea errores de la salida de datos.

Multipexor por bloques:


Es una mezcla de los dos anteriores. Puede trabajar como multiplexor o selector.

Spoll:
(operaciones periféricas simultáneas en línea). El problema surge cuándo varios
usuarios quieren hacer uso de la impresora. Por ejemplo al mismo tiempo, entonces tiene
que utilizarse un dispositivo Dasd (dispositivo de almacenaje de acceso directo), que tiene
la capacidad de leer y almacenar datos grandes y de mucho trabajo y, además tienen la
particularidad de ser compartido. Como sería una mala inversión asignarle un impresora
para cada usuario se buscó la manera de que cada una misma impresora éstos pueden
imprimir sus trabajos, sin necesidad de esperar que otro usuario que está utilizando el
servicio lo desocupe. Para ello el sistema forma una cola de impresiones, es decir, que éste
sistema hace una administración independiente de la impresora. Aquí se comienza a hacer
operaciones del tipo virtual (el spoll permite la impresión simultánea), de manera que
aparenta una multiprogramación , a todo éste procedimiento se llama Spoll.
Dispositivo DASD: son dispositivos de almacenaje de acceso directo, que se utilizan para leer o
escribir datos de muchos trabajos. En él leen o escriben muchos usuarios.
Ej.:

Periféricos (imp.,discos duros)

SEVER

Usuario 1 Usuario 3
Usuario 2 Us. 4
11

22
SISTEMA OPERATIVO
Introducción:
Ya sabemos que una computadora sin el Software es una masa metálica sin utilidad.
Con el software puede almacenar, procesar, y recuperar información. El Software para
computadora se clasifica en dos clases:
• Programas del Sistema o Software de Base: Controla las operaciones de la
computadora en sí.
• Programas de Aplicación o Software de Aplicación: Los cuales resuelven problemas
para los usuarios.
El programa fundamental de todos los programas del Sistemas es el Sistema
Operativo (SO), que controla todos los recursos de la computadora
Y proporciona la base sobre la cuál pueden escribirse los programas de aplicación.
Un sistema de computación moderno consta de uno o más procesadores, memoria
principal ( o memoria central), relojes, terminales, dispositivos de E/S, discos, etc., en fin
un Sistema complejo. Si cada programador tuviera que preocuparse por la forma de
funcionamiento de las unidades de disco y con las docenas de cosas que podrían salir mal,
es poco probable que pudieran escribirse muchos programas.
Para proteger a los programadores de la complejidad del Hardware se colocó un nivel
del Software por encima del Hardware con el fín de controlar todas las partes del Sistema y
presentar al usuario una interfáz o MAQUINA VIRTUAL que facilite la comprensión del
programa. Este nivel del Software se llama SO.
En la figura siguiente vemos: En la parte inferior se encuentra el Hardware, el cuál
consta de varias capas, la más baja contiene los dispositivos físicos conformados por chips,
cables, tubos de rayos catódicos, y otros dispositivos físicos similares. La forma de
construirlos y el responsable está a cargo del Ingeniero.Electrónico.

Programas de Sistema bancario Reservación en una línea aérea Juegos


aplicación
Programas de Compiladores Editores Interpretes
Sistemas de comandos
SO
Hardware Lenguaje de Máquina
Microprogramación
Dispositivos físicos

A continuación viene un software primitivo que controla en forma directa los


dispositivos y proporciona una interfaz más limpia con la siguiente capa. Este software
llamado microprograma se localiza por lo general, en la memoria exclusiva para lectura. Es
en realidad un intérprete busca las instrucciones de lenguaje de máquina tales como ADD,
MOVE Y JUMP para llevarlas a cabo como una serie de pequeños pasos. Por ej.: para hacer
la instrucción ADD el microprograma debe determinar la localización de los números que se
desean sumar, buscarlos, sumarlos y almacenar el resultado en alguna parte. El conjunto de
instrucciones que interpreta el microprograma definen al LENGUAJE DE MÁQUINA, que tiene
por lo general de 50 a 300 instrucciones, la mayoría sirve para desplazar datos a través de
la máquina, hacen operaciones aritméticas y comparan valores. En esta capa los
dispositivos de E/S se controlan al cargar valores en registros del dispositivo Especiales. Por
ej.: se puede ordenar a un disco que lea al cargar los valores de la dirección del disco, la
dirección de la memoria principal, el byte de conteo, y la instrucción (Read – Write), en sus
registros. Ela práctica son necesarios muchos más parámetros.
Una de las principales funciones del SO es ocultar toda esa complejidad y proporcionar
al programador un conjunto más conveniente de instrucciones con el cuál trabajar, por
ejemplo: READ BLOCK FROM FILE, es conceptualmente más sencillo que tener que
preocuparse de los detalles de movimiento de las cabezas del disco, esperar que se
detengan, etc..
Por arriba del SO, está el resto del Software del Sistema. Aquí se encuentra el
intérprete de comandos que es el SHELL, compiladores. Editores. Es importante saber que
estos programas no forman parte del SO aunque fabricante de computadoras los

23
proporcione juntos. El SO es esa parte del Software de Base que se ejecuta en modo central
o modo de supervisión. Está protegido contra la alteración por parte del usuario por el
Hardware (Ahora), . Los compiladores y editores se ejecutan en modo usuario. Si un usuario
no necesita utilizar un compilador particular, él está en libertad de escribir el suyo propio si
lo desea, pero no tiene la libertad de escribir su propio Controlador de Interrupciones del
disco, qué es parte del SO y que está protegido por el Hardware contra los intentos de
escritura.
Por último sobre los programas del Sistema se encuentran los programas de
Aplicación. Estos son escritos por l9s usuarios para resolver problemas particulares, como el
procesamiento de datos comerciales, juegos, o cálculos de Ingenieria, etc.

¿QUÉ ES UN SISTEMA OPERATIVO?


Es un conjunto de programas que tiene como propósito posibilitar que los programas
problemas evolucionen ordenadamente en el computador, resolviendo todas las situaciones
que podrían no estar previstas en esos programas facilitando la explotación del equipo e
independizando a los programadores de tareas rutinarias y complejas como por ej.:
lectura/escritura de un dispositivo periférico, como un disco, controlar y administra el
tiempo de la CPU, ordenar la información a almacenar, etc..
El SO es un Sistema o conjunto de programas con fines diversos, agrupados en
Subsistemas, cada uno de los cuales cumple con una misión específica supervisados por un
programa que cumple la función de control de la actividad de la CPU, denominado
SUPERVISOR.
Desde otro punto de vista lo podemos analizar como:
UNA MÁQUINA EXTENDIDA O MÁQUINA VIRTUAL, que sea más fácil de programar que
el Hardware adyacente. El SO es un programa que oculta la verdad acerca del Hardware al
programador y presenta una agradable y sencilla visión de los archivos con su nombre, los
cuales se pueden leer o escribir en ellos, así también protege al programador del Hardware
del disco y presenta una sencilla interfáz orientada a archivos, ocultando también varios
asuntos pocos agradables relacionados con las interrupciones, cronómetros, control dela
memoria y otras a características de bajo nivel.
CONTROLADOR DE RECURSOS: Supongamos qué, tres programas qué están en
ejecución intentaran imprimir sus salidas en forma simultánea en la misma impresora. El
resultado sería un caos. El SO ordena este caos el almacenar en el disco todas las salidas
destinadas a la impresora. Al concluir uno de los programas, el SO podría entonces copiar
su salida desde el disco hacia la impresora y si una computadora tiene varios usuarios, es
necesario mayor control y protección de la memoria, los dispositivos de E/S y demás
recursos, debido que con frecuencia los usuarios deben compartir recursos tales como las
unidades de cinta, como así también la información entre aquellos usuarios que trabajan
juntos.
En resumen el SO lleva un registro de la utilización delos recursos, dar paso a las
solicitudes de recursos, llevar la cuenta de su uso y mediar entre las solicitudes en conflicto
de los distintos programas y usuarios.

24
CONCLUSIÓN

25
BOLILLA II (Parte 1): EL
NIVEL DE LOGICA DIGITAL

26
INDICE
INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38

27
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103

28
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179

29
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240

30
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296

31
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311

32
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

33
INTRODUCCIÓN

34
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

EL NIVEL DE LOGICA DIGITAL


En el nivel jerárquico inferior de la figura 1-2 se encuentra el nivel de lógica digital,
que es el verdadero hardware de la computadora. En este capítulo examinaremos muchos
aspectos de la lógica digital como elemento básico para el estudio de los niveles superiores,
comentados en los capítulos siguientes. El presente estudio hará énfasis en las
microcomputadoras, no sólo porque son fáciles de comprender sino porque se están
volviendo cada vez más importantes.
Los elementos básicos con que se construyen las computadoras digitales son
asombrosamente simples. Empezaremos nuestro estudio examinando estos elementos
básicos y el álgebra especial de dos valores (álgebra de Boole) que se usa para analizarlos.
Luego estudiaremos algunos circuitos fundamentales que pueden construirse usando
combinaciones simples de compuertas, incluyendo algunos que realizan operaciones
aritméticas. En seguida veremos cómo pueden combinarse las compuertas para almacenar
información, es decir, cómo se organizan las memorias. Después abordaremos el tema de
las CPU, con especial atención a la forma en que las CPU integradas en una pastilla de silicio
se conectan con la memoria y los dispositivos periféricos.

COMPUERTAS Y ALGEBRA BOOLEANA

Los circuitos digitales pueden construirse a partir de un número pequeño de elementos


primitivos combinándolos en innumerables formas. En las siguientes secciones se
describirán tales elementos, se mostrará cómo pueden combinarse
éstos y se presentará una poderosa técnica matemática útil para analizar su
comportamiento.

Compuertas

Un circuito digital es aquel en el que están presentes dos valores lógicos. Por
convención, una señal entre 0 y 1 volt representa un valor (por ejemplo, el 0 binario) y una
entre 2 y 5 volts representa el otro (por ejemplo, el 1 binario). No se permiten voltajes
fuera de esos dos rangos. Unos pequeños dispositivos electrónicos, denominados
compuertas, pueden calcular varias funciones de estas señales de dos valores. Las
compuertas forman la base material con que se
construyen las computadoras digitales. Los detalles de cómo funcionan por dentro las
compuertas están fuera del alcance de este libro, ya que pertenecen a un nivel inferior al 0,
el nivel de dispositivo. Sin embargo, se dará un breve vistazo a la idea básica de suyo
sencilla. Toda la lógica digital moderna descansa en el hecho de que se puede hacer
funcionar un transistor como si fuera un conmutador binario muy rápido. En la figura 3-1(a)
aparece un transistor bipolar (el círculo) que forma parte de un circuito sencillo. Este
transistor tiene tres conexiones con el mundo exterior: el colector, la base y el emisor.
Cuando el voltaje de entrada Ve está por debajo de cierto valor crítico, el transistor se corta,
actuando como una resistencia infinita, y hace que la salida del circuito, Vs , tome un valor
prácticamente igual a Vcc, un voltaje regulado por fuera, por lo común de + 5 volts. Cuando

35
Ve exceda del valor critico, el transistor conmutará, actuando como un conductor perfecto y
haciendo que Vs tome el valor de tierra (por convención, 0 volts).
Lo importante es darse cuenta de que, cuando V e está alto, Vs está bajo y viceversa. El
circuito es por tanto un inversor, que convierte el 0 lógico en 1 lógico y el 1 lógico en 0
lógico. La resistencia es necesaria para limitar la corriente que fluye por el transistor. El
tiempo necesario para conmutar de un estado a otro suele ser de unos pocos
nanosegundos.
En la figura 3-1 (b) se han puesto dos transistores en serie. Si las tensiones V1 y V2
fueran altas simultáneamente, ambos transistores conducirían y Vs bajaría. Si cualquiera de
las entradas estuviera con la tensión baja, el transistor correspondiente se cortaría y la
salida quedaría alta. En otras palabras, Vs estará baja si tanto V1 como V2 están altas.
En la figura 3-1(c) los dos transistores se conectan en paralelo, en lugar de conectarse
en serie. En esta configuración, si alguna de las salidas es alta, el transistor correspondiente
conducirá y llevará la salida hacia tierra. Si ambas entradas estuvieran bajas, la salida
permanecería alta.
Estos tres circuitos, o sus equivalentes, forman las tres compuertas más simples. Se
denominan compuertas NOT, NAND y NOR respectivamente. Las compuertas NOT se suelen
denominar inversores. Si se adopta la convención de
que "alto" (Vcc volts) es el 1 lógico y "bajo" (tierra) el 0 lógico, se puede expresar el
valor de salida en función de los de entrada. Los símbolos convencionales utilizados para
dibujar estas tres compuertas se muestran en la figura 3-2(a)-(c), junto con el
comportamiento funcional de cada circuito.

Si la señal de salida de la figura 3-1(b) se introduce en un inversor, tendríamos otro


circuito que sería el inverso de la compuerta NAND, siendo su salida 1 si y sólo si ambas
entradas son 1. Este circuito se llama compuerta Y o AND y su símbolo y descripción
funcional se dan en la figura 3-2( d). De manera similar, la compuerta NOR puede
conectarse a un inversor para obtener un circuito cuya salida sea 1, si alguna o ambas
entradas es 1 y 0 si ambas son 0. La figura 3-2(e) muestra el símbolo y la descripción
funcional de esta compuerta, denominada compuerta OR. Los pequeños círculos que forman
parte de los símbolos del inversor, la compuerta NAND y la compuerta NOR se llaman
burbujas de inversión y suelen también usarse en otros contextos para expresar una señal
invertida.
Las cinco compuertas de la figura 3-2 son los elementos principales para la
construcción del nivel de lógica digital. De la explicación anterior debió quedar en claro que
las compuertas NAND y NOR requieren dos transistores cada una, mientras que las AND y
OR requieren tres. Por esa razón, muchas computadoras están basadas en compuertas
NAND y NOR y no en las más familiares AND y OR. (En la práctica, las compuertas se
realizan en una forma algo diferente, pero las NAND y NOR son aún más simples que las

36
AND y OR.) También se usan abundantemente compuertas de más de dos entradas. En
principio, una compuerta NAND, por ejemplo, puede tener un número arbitrario de
entradas, aunque en la práctica no suelen tener más de ocho.

Aunque el tema de cómo se hacen las compuertas pertenece al nivel de dispositivo, se


describirán las familias tecnológicas más importantes, debido a que se mencionan con
frecuencia. Las dos tecnologías más importantes son la bipolar y la MOS (Metal-Oxido-
Semiconductor). Entre las bipolares están la Lógica de Transistor- Transistor (llamada TTL),
que ha sido durante años el material de trabajo de la electrónica digital, y la Lógica
Acoplada por Emisor (denominada ECL), que se usa cuando se necesita gran velocidad.
Las compuertas MOS son 10 veces más lentas que las TTL y 100 veces más que las
ECL pero no necesitan casi energía ni espacio, por lo que pueden empaquetarse en forma
muy compacta. Hay muchas variedades de compuertas MOS, entre las que están las
designadas por las siglas PMOS, NMOS, CMOS y otras que van apareciendo día tras día.

Algebra booleana

Para describir los circuitos que se pueden construir combinando compuertas, se


necesita un nuevo tipo de álgebra en que las variables y las funciones sólo puedan tomar
los valores 0 y 1. Como esta álgebra fue inventada por el matemático inglés George Boole
(1815-1864), se le denomina álgebra de Boole o álgebra booleana. En rigor, en realidad nos
referimos aun tipo específico de álgebra booleana denominada álgebra de conmutación; sin
embargo, el término "álgebra booleana" se usa tan ampliamente con el significado de
"álgebra de conmutación", que no haremos distinción alguna.
Así como hay funciones en el álgebra "ordinaria" (la que se imparte en la escuela
secundaria), también hay funciones en el álgebra de Boole. Una función booleana toma una
o varias variables de entrada y da por resultado un valor que depende sólo de ellas. Una
función sencilla, f, puede definirse diciendo que f (A) es 1 si A es 0 y f(A) es 0 si A es 1.
Esta función es la función NOT de la figura 3-2(a).
Una función booleana de n variables sólo tiene 2" conjuntos posibles de valores de
entrada, por lo que puede especificarse completamente como una tabla de 2 n filas,
indicando cada una de ellas el valor de la función para una combinación determinada de los
valores de entrada. Esta tabla se denomina tabla de verdad. Las tablas de la figura 3-2 son
ejemplos de tablas de verdad. Si se toma el acuerdo en listar siempre las filas de una tabla
de verdad en el orden numérico (base 2), esto es, para dos variables, en el orden 00, 01,
10 y 11, la función puede describirse completamente por el número de 2 n bits obtenido al
leer verticalmente la columna de resultado de la tabla de verdad. Así, NAND es 1110, NOR
es 1000, AND es 0001 y OR es 0111. Evidentemente, sólo existen 16 funciones booleanas
de dos variables, correspondientes alas 16 posibles combinaciones de 4 bits. Por el
contrario, el álgebra ordinaria tiene infinitas funciones de dos variables y ninguna de ellas
puede describirse dando una tabla de resultados de todas las combinaciones posibles de las

37
entradas, ya que cada variable puede tomar un número infinito de valores.
La figura 3-3(a) muestra la tabla de verdad de una función booleana de tres variables:
M = f (A, B, C). Es la función mayoría; es decir, es 0 si la mayoría de sus entradas es 0, y 1
si la mayoría es 1. Aunque todas las funciones booleanas pueden especificarse dando su
tabla de verdad, a medida que el número de variables crece esta notación se hace más y
más engorrosa. Por ello, se suele usar otro tipo de notación.
Para entender cómo se origina esta otra notación, obsérvese que cualquier función
booleana puede especificarse diciendo qué combinaciones de las variables de entrada dan el
valor 1. En la función de la figura 3-3(a), hay cuatro combinaciones que hacen que M valga
1. Por convención se pone una barra sobre la variable de entrada cuyo valor sea 0. La
ausencia de la barra significará que vale 1. Además, se usa la multiplicación implícita o el
punto para significar Y o AND y el símbolo + para significar O u OR. Así, por ejemplo, ABC
significa que A = 1, B = 0 y C = 1. También, AB + BC significa que A = 1 y B = 0, o que B
= 1 y C = 0. Las cuatro filas de la figura 3-3(a) que producen 1 en sus salidas son: ABC,
ABC, ABC y ABC. La función M es cierta si se cumple cualquiera de esas condiciones, por lo
que se puede escribir
M = ABC + ABC + ABC + ABC
como una forma compacta de dar la tabla de verdad. Así, una función de n variables
puede describirse como una "suma" de, como máximo, 2 n términos "producto" de n
variables. Esta formulación, es muy importante, como se verá en seguida, debido a que
lleva en forma directa a su realización usando compuertas ordinarias.

Implementación de funciones booleanas

Como ya se mencionó, la formulación de una función booleana como suma de hasta 2n


términos productos lleva directamente a una de las implementaciones posibles. Puede verse
cómo se lleva a cabo esta realización por medio del ejemplo de la figura 3-3. En la parte (b)
de la figura vemos las entradas A, B y C a la izquierda y la salida M a la derecha. Como se
necesitan los complementos de las entradas, se los genera conectando a las entradas los
inversores 1, 2 y 3. Para no enmarañar la figura, se han dibujado seis líneas verticales, tres
de ellas conectadas a las variables de entrada y las otras tres a sus complementos. Las
líneas tienen una disposición conveniente para usarlas como entradas de las compuertas
ulteriores. Por ejemplo, las compuertas 5, 6 y 7 usan A como entrada. En un circuito real
probablemente estas compuertas se conectarían directamente a A, sin necesidad de hilos
"verticales" intermedios.
El circuito contiene cuatro compuertas Y, una para cada término de la ecuación ( es
decir, uno por cada fila de la tabla de verdad con un 1 en la columna de resultado). Cada
compuerta y calcula una fila de la tabla de verdad, como se indicó antes. Finalmente todos
los términos se pasan por una compuerta OR para obtener el resultado final.
El circuito de la figura 3-3(b) usa una convención que se necesitará repetidamente en
todo el libro: cuando se crucen dos líneas, se supondrá que no están conectadas a menos
que esté dibujado un punto grueso en la intersección. Por ejemplo, la salida de la
compuerta 3 cruza las seis líneas verticales, pero sólo está conectada a C. Sin embargo,
otros autores usan convenciones diferentes.
En el ejemplo de la figura 3-3 se aprecia con toda claridad cómo se realiza un circuito
para cualquier función booleana:
1. Se escribe primero la tabla de verdad de la función.
2. Se generan los complementos de las entradas por medio de inversores.
3. Se dispone una compuerta Y o AND para cada término que tenga un 1 en la
columna de resultado.
4. Se conectan las entradas apropiadas a las compuertas AND.
5. Se conectan todas las salidas de las. compuertas AND a una compuerta OR.

38
39
Aunque se ha mostrado cómo realizar cualquier función booleana con compuertas
AND, OR y NOT, suele ser preferible realizar los circuitos con un solo tipo de compuerta.
Afortunadamente es muy fácil convertir los circuitos generados por el algoritmo anterior en
otros con sólo compuertas NAND o NOR. Para hacer esa conversión, lo único que se
necesita es una forma de realizar las funciones NOT, AND y OR empleando un único tipo de
compuerta. La fila de arriba de la figura 3-4 muestra como se pueden realizar las tres
funciones exclusivamente con compuertas NAND, mientras que la fila de abajo indica cómo
hacerlo con compuertas NOR. (Estas son formas directas, pero no son las únicas
posibilidades; véase la figura 3-5.)
Una forma de implementar una función booleana usando sólo compuertas NAND y
NOR consiste en seguir primero el procedimiento señalado anteriormente para construirla
con compuertas NOT, AND y OR. Luego, se procede a reemplazar las compuertas de
entrada múltiple con circuitos equivalentes, utilizando compuertas de dos entradas. Por
ejemplo, A + B + C + D puede calcularse como (A+B)+(C+D), usando tres compuertas O
de dos entradas. Finalmente, se sustituyen las compuertas NOT, AND y OR por los circuitos
de la figura 3-4.
Aunque este procedimiento no da lugar a circuitos óptimos, en el sentido de un
mínimo número de compuertas, sí muestra que siempre es posible una solución. Se dice
que las compuertas NAND y las NOR son completas porque a partir de ellas puede
generarse cualquier función booleana. Ningún otro tipo de compuertas tiene esa propiedad,
siendo ésta una razón más por la que se prefieren como elemento básico en la construcción
de circuitos.

Equivalencia entre circuitos

Los diseñadores de circuitos naturalmente intentan reducir el número de compuertas


para disminuir el costo de los componentes, el espacio de circuito impreso, el consumo de
energía, etc. Para reducir la complejidad de un circuito, el diseñador debe encontrar otro
que calcule la misma función que el original con menos compuertas (o quizá con
compuertas más simples; por ejemplo, compuertas de dos entradas en lugar de cuatro). El
álgebra de Boole puede ser una herramienta muy útil en la búsqueda de circuitos
equivalentes.

40
He aquí un ejemplo de cómo puede usarse el álgebra de Boole: considérese el circuito
y la tabla de verdad para AB + AC, que se muestran en la figura 3-5(a). Aunque aún no se
ha hablado de ello, muchas de las reglas del álgebra ordinaria se conservan en el álgebra de
Boole. En particular, AB + AC puede escribirse como A (B + C), utilizando la propiedad
distributiva. En la figura 3-5(b) aparece el circuito y la tabla de verdad de A(B + C). Como
dos funciones son equivalentes si y sólo si dan la misma salida para todas las entradas
posibles, es fácil ver en las tablas de verdad de la figura 3-5 que A(B + C) es equivalente a
AB+AC. Además de la equivalencia, el circuito de la figura 3-5(b) es claramente mejor que
el de la figura 3-5(a) porque contiene menos compuertas.
En general, un diseñador puede representar un circuito como una función booleana y
aplicar después el álgebra de Boole a esta representación para tratar de encontrar una
equivalente más simple, que servirá para construir el nuevo circuito.
Para aplicar este método necesitamos algunas identidades del álgebra de Boole. La
figura 3-6 muestra las más importantes. Es interesante constatar que cada propiedad tiene
dos formas duales. Se puede producir una forma a partir de la otra intercambiando AND y
OR, y también 0 y 1. Todas las propiedades se pueden demostrar construyendo sus tablas
de verdad. Exceptuadas las leyes de Morgan, la propiedad de absorción y la forma AND de
la propiedad distributiva, las demás pueden obtenerse por intuición. La ley de Morgan se
extiende a más variables; por ejemplo, ABC = A + B + C.
La ley de Morgan sugiere una notación alternativa. En la figura 3- 7(a) se muestra la
forma AND, indicándose la inversión tanto en las entradas como en la salida, por medio de
burbujas de inversión. Así, una compuerta OR con las entradas invertidas es equivalente a
una compuerta NAND. En la figura 3- 7(b), a partir de la forma dual de la ley de Morgan,
vemos que una compuerta NOR puede dibujarse como una compuerta y con sus entradas
negadas. Negando ambas formas de la ley de Morgan llegamos a las figuras 3- 7(c) y (d),
que muestran representaciones equivalentes de las compuertas AND y OR. Existen símbolos
análogos de la ley de de Morgan con variables múltiples (por ejemplo, una compuerta NANO
de n entradas se convierte en una OR con n entradas negadas).

41
Usando las identidades de la figura 3-7 y las análogas para las compuertas de varias
entradas, se hace mucho más fácil convertir la representación de la suma de productos de
la tabla de verdad en una forma con sólo compuertas NANO o sólo compuertas NOR. Para
ilustrar lo anterior consideremos la función OR EXCLUSIVO de la figura 3-8(a). El circuito
como suma de productos se muestra en la figura 3-8(b). Para convertirlo a forma NAND,
deben dibujarse dos burbujas de inversión en cada una de las líneas que conectan las
compuertas ANO con la compuerta OR, como se muestra en la figura 3-8(c). Finalmente,
usando la figura 3- 7(a), llegamos a la figura 3-8(d). Las variables A y B pueden generarse
a partir de A y B usando compuertas NAND o NOR con sus entradas conectadas entre sí.
Nótese que las burbujas de inversión pueden moverse por una línea a voluntad; por
ejemplo, de las salidas de las compuertas de entrada de la figura 3-8(d) a las entradas de la
compuerta de salida.
Antes de dar por terminado el tema de la equivalencia entre circuitos, se demostrará
el hecho sorprendente de que una misma compuerta física puede calcular funciones
diferentes conforme a las convenciones utilizadas. En la figura 3-9(a) se muestra la salida
de cierta compuerta, F, para diferentes combinaciones de entrada. Tanto las entradas como
las salidas se dan en volts. Si adoptamos la convención de que 0 volts es un 0 lógico y de
que 5 volts es un 1 lógico, denominado lógica positiva, obtendremos la tabla de verdad de
la figura 3-9(b) y la función AND. Por el contrario, si adoptamos la convención de lógica
negativa, es decir, aquella en que 0 volts representan el 1 lógico y 5 volts el 0 lógico, la
tabla de verdad que obtendremos será la de la figura 3-9(c), correspondiente a la función
OR.

42
Por tanto, la convención empleada para asignar valores lógicos a las tensiones es de
suma importancia. En adelante, si no se dice lo contrario utilizaremos lógica positiva, de
modo que los términos 1 lógico, cierto y alto serán sinónimos, así como 0 lógico, falso y
bajo.

43
CIRCUITOS DIGITALES BÁSICOS

En las secciones anteriores se vio cómo realizar tablas de verdad por medio de
circuitos con compuertas individuales. Actualmente ya no se construyen los circuitos
compuerta por compuerta, aunque antaño fue práctica común. Hoy día, los elementos
básicos son módulos que contienen cierto número de compuertas. En las secciones
siguientes se examinarán esos elementos básicos en detalle y se verán cómo se usan y
cómo pueden construirse a partir de compuertas individuales.

Circuitos integrados

Las compuertas no se fabrican ni se venden individualmente, sino en unidades


llamadas circuitos integrados, chips o pastillas. Una pastilla es un pedazo de silicio
cuadrangular de unos 5 x 5 mm en el que se han depositado algunas compuertas.
Normalmente las pastillas se montan en unas cápsulas cerámicas o de plástico de 5 a 15
mm de ancho y de 20 a 50 mm de largo. A lo largo de sus bordes mayores se sitúan dos
filas paralelas de patas metálicas de unos 5 mm de largo, que pueden insertarse en
soportes o soldarse a circuitos impresos. Cada pata se conecta a una entrada o a una salida
de alguna compuerta de la pastilla, a la corriente eléctrica o a tierra. Las cápsulas con dos
filas de patas fuera y una pastilla dentro reciben el nombre técnico de DIP (siglas inglesas
que significan encapsulado de dos hileras en línea); pero todo el mundo las llama pastillas,
confundiendo así la distinción entre la pieza de silicio y su envoltorio. Las cápsulas más
usuales tienen 14, 16, 18, 20, 22, 24, 28, 40,64 o 68 patas. En algunas aplicaciones
especiales se utilizan cápsulas con patas en los cuatro lados.
Las pastillas pueden dividirse en varios grupos, con base en el número de compuertas
que contienen, según se describe abajo. Este esquema de clasificación es en extremo
burdo, pero a veces útil. El limite superior de los circuitos VLSI se encuentra entre 1 y 2
millones de transistores.
SSI (circuitos integrados a escala pequeña): 1 a 10
M SI (circuitos integrados a escala media): 10 a 100
LSI (circuitos integrados a escala grande): 100 a 100 000
VLSI (circuitos integrados a escala muy grande): más de 100 000

Estas clases tienen propiedades diferentes y se usan de manera distinta. Un circuito


SSI suele contener de dos a seis compuertas, cada una de las cuales puede usarse
individualmente, como se hizo en las secciones. anteriores. La figura 3-10 ilustra una
pastilla SSI típica que contiene cuatro compuertas NAND. Cada una de ellas tiene dos
entradas y una salida, lo que implica la necesidad de 12 patas para las cuatro. Además, la

44
pastilla necesita alimentación (por lo general 5 volts, denotada Vcc) y tierra, que son
compartidas por todas las compuertas. Generalmente la cápsula tiene una muesca cerca de
la pata 1, con lo que se facilita su identificación. Para evitar que los diagramas de circuitos
se enmarañen, normalmente no se muestran ni la alimentación ni la tierra ni las
compuertas no utilizadas.
La figura 3-11 muestra otras pastillas SSI comunes. Pertenecen a la serie 7400, de
tecnología TTL, desarrollada por Texas Instruments y producida por muchos fabricantes de
semiconductores. Se utilizan principalmente para construir circuitos sencillos que no podrían
realizarse de otra manera. El circuito de la figura 3-3(b) podría construirse con una 7404,
dos 7411 y una 7432. En la serie 7400 no hay compuertas OR de cuatro entradas, pero
puede obtenerse la misma función haciendo el OR de dos entradas por un lado, el OR de las
otras dos por el otro y, de nuevo, haciendo el OR de los dos resultados anteriores. Esto
puede representarse simbólicamente por la expresión A + B + C + D = (A + B)+(C + D), es
decir, A y B hacen el OR juntos al igual que C y D por su parte, y estas dos sumas hacen el
OR también a su vez. Si el circuito de la figura 3-3(b) se construyera realmente de esta
manera, el circuito impreso donde se montaran debería tener pistas metálicas conectando
las patas apropiadas. Algunas compuertas no se usarían. La pastilla 7486 contiene una
compuerta que no se ha mostrado hasta ahora; es la puerta OR EXCLUSIVO, que es
equivalente al circuito de la figura 3-8.

45
Para nuestros propósitos, todas las compuertas serán ideales, en el sentido de que la
salida aparece en el mismo momento en que se aplican las entradas. En realidad, las
pastillas tienen un retardo de compuerta finito, que incluye el tiempo de propagación de la
señal a través del circuito y el tiempo de conmutación. Los retardos suelen durar de 1 a 20
nanoseg. En los esquemas suelen verse números como 74S00, 74LOO, 74HOO y 74LSOO.
Representan pastillas funcionalmente equivalentes, pero con diferentes compromisos de
retardo, potencia y precio. La serie 74COO es de pastillas CMOS funcionalmente
equivalentes a las de la serie 7400, de tecnología TTL.
Hoy día es posible poner casi un millón de compuertas en una pastilla. Como todo

46
circuito puede construirse con puertas NAND, cabría pensar que un fabricante puede
fabricar una pastilla muy general con el equivalente a 250 000 pastillas como la 7400. Por
desgracia, dicha pastilla necesitaría 3 000 002 patas. Con el espaciado ordinario de 2.5 mm
entre patas, la pastilla debería medir cerca de 3.2 kilómetros, algo muy difícil de vender.
Está claro que, para poder aprovechar la tecnología, hay que diseñar circuitos cuyo cociente
de compuertas/patas sea muy alto. En las secciones siguientes examinaremos algunos
circuitos MSI sencillos que combinan internamente cierto número de compuertas para
obtener una función útil con sólo unas pocas conexiones externas (patas). Después
examinaremos dos aplicaciones que requieren miles de compuertas (LSI) con sólo 20 a 40
patas: memorias y microprocesadores. La línea divisoria entre los circuitos LSI y los VLSI es
vaga, pero una pastilla VLSI clásica puede tener un microprocesador grande, algo de
memoria en una u otra forma, y quizá, una unidad de propósito específico, como la unidad
aritmética de punto flotante.

Circuitos combinacionales

Muchas aplicaciones de la lógica digital requieren un circuito de varias entradas y


varias salidas, de modo que las salidas estén determinadas únicamente por el valor
instantáneo de las entradas. Estos circuitos se llaman circuitos combinacionales. No todos
los circuitos tienen esa propiedad. Por ejemplo, un circuito que contenga elementos de
memoria puede generar salidas que dependan tanto de los valores de entrada como de los
almacenados. Un ejemplo típico de circuito combinacional es uno que realice una tabla de
verdad, como la de la figura 3-3(a). En esta sección, como ejemplo de pastillas MSI,
examinaremos algunos circuitos combinacionales usados con frecuencia.

Multiplexores

En el nivel de lógica digital, un multiplexor es un circuito de 2n entradas de datos, una


salida de datos y n entradas de control que seleccionan una de las entradas de datos. El
dato de entrada seleccionado es el que aparece en la salida. La figura 3-12 muestra un
esquema de un multiplexor de ocho entradas. Las tres líneas de control, A, B y C, codifican
un número de 3 bits que específica qué línea de las ocho de entrada pasa a la compuerta
OR y de ahí a la salida. Independientemente de los valores de las líneas de control, siete de
las compuertas, AND siempre darán una salida 0; la otra puede dar 0 o 1, según sea el
valor de la línea de entrada que se seleccione. Cada combinación de las entradas de control
permite el paso de información por una sola de las compuertas AND.

47
El circuito de la figura 3-12 es un candidato ideal para realizarlo como pastilla MSI,
como se ilustra en la figura 3-13(a). Dicha pastilla tiene ocho entradas de datos, tres de
control y una salida. Añadiendo la alimentación y la tierra, la pastilla se puede montar en un
chip de 14 patas. Con ella se puede realizar el circuito de la figura 3-3(b), como se muestra
en la figura 3-13(b). Para cada combinación de A, B y C, se selecciona una de las líneas de
datos de entrada, que está conectada a la alimentación (1 lógico) o a la tierra (0 lógico). El
algoritmo de conexión de las entradas es trivial: la entrada D i se conecta al valor que indica
la fila i de la tabla de verdad. En la figura 3-3(a), las filas 0, 1, 2, y 4 son 0, por lo que las
entradas correspondientes se conectan a tierra; las restantes son 1 y se conectan al 1
lógico. De esta manera se puede realizar cualquier tabla de verdad de tres variables,
usando la pastilla de la figura 3-13(a).

48
Ya se vio cómo se puede usar una pastilla multiplexora para seleccionar una entrada
entre varias y para realizar una tabla de verdad. Otra de sus aplicaciones es la de
convertidor de paralelo a serie. Si se pone un dato de 8 bits en las líneas de entrada y se
van variando las líneas de control en forma secuencial desde 000 hasta 111 (en binario),
aparecerán en la salida los 8 bits de la entrada en serie. El uso típico de un convertidor de
paralelo a serie es en un teclado, donde cada vez que se pulsa una tecla, se genera un
número de 7 u 8 bits que debe enviarse en serie por una línea telefónica.
El circuito MSI de la figura 3-13(a) tiene ocho entradas de datos. También los hay en
el mercado de 16, así como pastillas con dos multiplexores independientes de cuatro
entradas o con cuatro de dos. Algunos de ellos proporcionan la salida seleccionada y su
complemento, y algunos tienen también una entrada adicional que fuerza la salida a 0,
independientemente de las entradas (esto es, una pata de habilitación o deshabilitación).
El inverso del multiplexor es el demultiplexor, que encamina una única entrada a una
de las 2n salidas posibles, según sean los valores de n líneas de control. Si el valor binario
situado en las líneas de control es k, se selecciona la salida k.

Decodificadores

Otro ejemplo de pastilla MSI es un circuito que toma un número de n bits como
entrada y los usa para seleccionar (es decir, para poner a 1) exactamente una de sus 2n
salidas posibles. Este circuito se llama un decodificador y la figura 3-14 ilustra uno de ellos
para n = 3.

49
A fin de ver en qué casos puede ser útil un decodificador, imaginemos una memoria
de ocho pastillas de 8K cada una. La pastilla 0 tiene las direcciones 0 a 8191, la 1 tiene
desde 8192 hasta 16383, y así sucesivamente. Cuando se presenta una dirección a la
memoria, se usan sus tres bits más significativos para seleccionar una de las ocho pastillas.
Si se usa el circuito de la figura 3-14, esos tres bits son las entradas A, B y C. Según sean
ellas, exactamente una de las ocho salidas, Do, ..., D7, se hace 1, y las otras permanecen a
0. Cada una de las salidas activa una de las ocho pastillas de memoria. Como únicamente
una de las salidas se pone al, sólo se selecciona una pastilla.
El funcionamiento del circuito de la figura 3-14 es muy simple. Cada compuerta AND
tiene tres entradas, de las cuales la primera es A o A, la segunda es B o B, y la tercera C o
C. Por tanto, cada compuerta se activa (da salida 1) con una sola de las combinaciones de
entrada posibles: Do con ABC, Di con ABC, y así sucesivamente.
En el mercado hay pastillas decodificadoras de 4 a 16, de 3 a 8 y dobles de 2 a 4 (es
decir, dos decodificadores de 2 a 4 en la misma pastilla). Además, son comunes los
decodificadores de 4 a lO, para decodificar números decimales codificados en binario.

50
Comparadores

Otra pastilla MSI muy útil es el comparador, que compara dos palabras de entrada. El
comparador sencillo de la figura 3-15 toma dos entradas, A y B, cada una de 4 bits, y
produce un I1si son iguales y 0 si son distintas. El circuito está basado en la compuerta OR
EXCLUSIVO, que da 0 si las entradas son iguales y 1 si son distintas. Si las dos palabras son
iguales, las cuatro compuertas OR EXCLUSIVO deben dar 0. Después se pueden pasar estas
cuatro salidas por una compuerta OR, que dará 0 si las palabras son iguales y 1 si son
diferentes. En nuestro ejemplo hemos usado una compuerta NOR en la etapa final para
invertir el sentido de la comparación:1 significa igual y 0 desigual. Las pastillas disponibles
comercialmente no sólo tienen salidas para A = E, sino también para A<B y para A>B.

Arreglos (matrices) lógicos programables

Se vio antes que podían construirse funciones arbitrarias (tablas de verdad)


calculando los términos producto con puertas AND y pasando todos éstos por una
compuerta OR. Una pastilla muy general para realizar sumas de productos es el arreglo
lógico programable ( designado también por sus siglas inglesas PLA), que se muestra en la
figura 3-16. Esta pastilla, la 74S330, tiene líneas de entrada para 12 variables.
Internamente se genera el complemento de cada una de ella, haciendo un total de 24
señales de entrada. El corazón del circuito lo forma un conjunto de 50 compuertas AND
cada una de las cua1es puede tener como entrada cualquier subconjunto de las 24 señales
de entrada. El usuario determina qué entrada va a qué compuerta AND por medio de una
matriz de 24 x 50. Cada línea de entrada a las 50 compuertas AND contiene un fusible.

51
Estos 1200 fusibles vienen intactos de fábrica. Para programar la matriz, el usuario
funde los fusibles que desee aplicando una tensión alta a la pastilla.
La parte de salida del circuito consta de 6 compuertas OR de 50 entradas,
correspondientes a las salidas de las 50 compuertas AND. Aquí hay también otra matriz,
esta vez de 50 x 6, por medio de la cual el usuario determina qué conexiones realizar. La
pastilla tiene 12 patas de entrada y 6 de salida, además de la alimentación y la tierra, lo
que hace un total de 20 patas.
Para ilustrar con un ejemplo el uso de una PLA, consideremos una vez más el circuito
de la figura 3-3(b). Tiene tres entradas, cuatro compuertas AND, una compuerta OR y tres
inversores. Nuestra PLA puede calcular esta función con sólo hacer las conexiones internas
apropiadas, usando tres de sus 12 entradas, cuatro de sus 50 compuertas AND y una de sus
6 compuertas OR. (Las cuatro compuertas AND deben calcular ABC, ABC, ABC, y ABC,
respectivamente, mientras que la compuerta OR debe tomar estos cuatro términos para
calcular la salida.) De hecho, se puede usar la misma PLA para que calcule simultáneamente
hasta cuatro funciones de complejidad similar. Para funciones sencillas, el número está
limitado por el número de variables de entrada. Para las más complicadas, la limitación
dependerá probablemente del número de compuertas AND u OR.
Aunque las PLA programables descritas todavía están en uso para muchas

52
aplicaciones, en otras son preferibles las PLA hechas "a medida" para cierto cliente (para
aplicaciones de gran volumen) y fabricadas bajo las especificaciones del cliente. Estas PLA
son más baratas que las programables.
Ahora podemos comparar los tres métodos que ya hemos visto y que sirven para
implementar la tabla de verdad de la figura 3-3(a). Usando componentes SSI, necesitamos
cuatro pastillas. También nos bastaría una pastilla multiplexora MSI, como se muestra en la
figura 3-13(b). Por último, podríamos usar la cuarta parte de una pastilla PLA.
Evidentemente, si se necesitan muchas funciones, el método más eficiente de los tres es la
PLA. Para circuitos simples, es preferible utilizar pastillas más baratas como las SSI o las
MSI.

Circuitos aritméticos

Es el momento de pasar de los MSI de uso general a los aritméticos. Empezaremos


por un sencillo registro de corrimiento; después veremos cómo pueden construirse
sumadores, y finalmente examinaremos las unidades aritméticas y lógicas, que
desempeñan un importante papel en cualquier computadora.

Registros de corrimiento

Nuestro primer circuito MSI aritmético es un registro de corrimiento de 8 entradas y 8


salidas (véase figura 3-17). El dato de 8 bits se presenta en las entradas D0, ..., D7 y se
obtiene desplazando un bit en las salidas S0, ...,S7. La línea de control C, determina el
sentido del desplazamiento: si es 0, el corrimiento es a la izquierda, si es 1, a la derecha.

Para ver cómo funciona, obsérvense los pares de compuertas AND para todos los bits
excepto los de los bordes. Cuando C = 1, se abre la compuerta derecha de cada par,
pasando el bit correspondiente a su salida. Como la compuerta AND derecha está conectada
a la entrada de la compuerta OR de su derecha, se obtiene un desplazamiento a la derecha.
Cuando C = 0, el que se abre es el miembro de la izquierda del par de compuertas AND,
efectuándose un desplazamiento a la izquierda.

53
Sumadores

No se puede imaginar una computadora que no sume enteros. En consecuencia, una


parte esencial de una CPU son los circuitos para realizar la adición. La figura 3-18(a)
muestra la tabla de verdad de un circuito para sumar 1 bit. La función tiene dos salidas: la
suma de las entradas A y B, y el acarreo a la siguiente posición (a la izquierda). La figura 3-
18(b) muestra un circuito que realiza la suma y el acarreo. Este circuito se conoce por
semisumador.
Aunque el semisumador sirve para sumar los dos bits menos significativos de dos
palabras de varios bits, no funciona en una posición intermedia, debido a que no tiene en
cuenta el acarreo que proviene de su derecha. Lo qué se necesita es el sumador completo
de la figura 3-19. Como se ve, el sumador completo puede construirse con dos
semisumadores. La salida Suma estará a 1 si hay un número impar de entradas (A, B y
Acarreo de entrada) a 1. La salida Acarreo de salida estará a 1 si A y B están a 1 (entrada
de la izquierda de la puerta OR) o bien sólo una de ellas está a 1 y el Acarreo de entrada
también lo está. Los dos semisumadores juntos generan tanto la suma como los bits de
acarreo.

54
Para construir un sumador de, digamos, palabras de 16 bits, es necesario repetir 16
veces el circuito de la figura 3-19(b). El acarreo de salida de uno de ellos se usa como
acarreo de entrada del siguiente. El acarreo de entrada al de la derecha se deja conectado a
0. Este tipo de sumador se llama sumador con propagación de acarreo, debido a que en el
último de los casos; sumar 1 a 111...111 (binario), no puede obtenerse el resultado hasta
que el acarreo se haya propagado desde el bit de la derecha al de la izquierda. También
existen sumadores que no tienen este retardo y, por tanto, son más rápidos.

Unidades aritméticas y lógicas

La mayoría de las computadoras tienen un circuito único para realizar, al menos, las
operaciones AND, OR y suma de dos palabras de máquina. Uno de estos circuitos para
procesar dos palabras de n bits suele construirse a partir de n circuitos idénticos, cada uno
de los cuales procesa el par de bits de mismo peso de cada una de las palabras de entrada.
La figura 3-20 es un ejemplo de uno de esos circuitos, denominado Unidad Aritmética y
Lógica o ALU. Puede calcular una de las cuatro funciones siguientes: A AND B, A OR B, B, o
A + B, según las líneas de selección de función, F0 y F1, que contengan (en binario) 00, 01,
10 o 11, respectivamente.
La esquina inferior izquierda de nuestra ALU contiene un decodificador de 2 bits que
genera las líneas de habilitación para las cuatro operaciones a partir de F 0 y F1. La esquina
superior izquierda tiene la lógica para calcular A AND B, A OR B y B, pero a lo sumo uno de
estos resultados puede pasar a la compuerta OR final, dependiendo de las líneas de
habilitación que vienen del decodificador. Como sólo una de las salidas del decodificador
estará a 1, sólo se permitirá el paso a través de una de las compuertas AND que están
conectadas a la puerta OR; las tres restantes darán 0, independientemente de A y B.
La esquina inferior derecha tiene un sumador completo para calcular la suma de A y B,
teniendo en cuenta los acarreos, porque es probable que varios de, estos circuitos se
conecten en paralelo para realizar las operaciones sobre la palabra completa. Existen
circuitos como el de la figura 3-20, y se les conoce como rebanadas de un bit. Con estos
circuitos el diseñador puede construir ALU del tamaño deseado.
La figura 3-21 muestra un ALU de 1 bit. Existen circuitos que contienen módulos de 8
bits para simplificar el diseño y reducir el número de circuitos. Para construir un ALU de 32
bits se pueden conectar cuatro de estos circuitos.

Relojes

En muchas computadoras digitales, el orden en que tienen un lugar los eventos es


crítico. Algunas veces un evento debe preceder a otro, mientras que otros deben realizarse
simultáneamente. Para permitir a los diseñadores satisfacer las relaciones de tiempo,
muchos circuitos digitales utilizan relojes para su sincronización. Un reloj en este contexto,
es un circuito que emite una serie de impulsos de un ancho y una separación determinadas
con precisión. El intervalo entre los flancos de subida o bajada de dos pulsos consecutivos
se llama tiempo de ciclo del reloj. Normalmente las frecuencias de los pulsos están entre 1 y
100 MHz, correspondientes a ciclos de reloj entre 1000 nseg a 10 nseg. La frecuencia del
reloj suele controlarse por medio de un oscilador a cristal, para obtener una gran precisión.

55
En una computadora pueden suceder muchas cosas durante un solo ciclo de reloj. Si
tuvieran que realizarse esos eventos en un orden especifico, sería necesario dividir el ciclo
de reloj en subciclos. Un método bastante común de obtener una resolución más fina que la
del reloj básico consiste en conectar a la línea del reloj un circuito con un retardo conocido,
generando así un segundo reloj desfasado respecto al principal, como se muestra en la
figura 3-22(a). El diagrama de tiempos o cronograma de la figura 3-22(b) proporciona
cuatro referencias de tiempo para eventos discretos:
1. Flanco de subida de REL1
2. Flanco de bajada de REL1
3. Flanco de subida de REL2
4. Flanco de bajada de REL2

56
Puede obtenerse la secuencia de sucesos deseada asociándolos a los diversos flancos.
Si se necesitaran más de cuatro referencias de tiempo durante un ciclo, se podrían añadir
más líneas con retardos diferentes.
En algunos circuitos uno se interesa más por los intervalos de tiempo que por
instantes discretos de tiempo. Por ejemplo, puede permitirse que un evento suceda cada
vez que REL1 esté alto, en lugar de que ocurra precisamente en el flanco de subida. Otro
evento puede ocurrir sólo cuando REL2 esté alto. Si se necesitan más de dos intervalos,
pueden proporcionarse más líneas de reloj, o los estados altos de ambos relojes pueden
traslaparse parcialmente en el tiempo. En este último caso se pueden distinguir cuatro
diferentes intervalos: REL1 Y REL2 , REL1 Y REL2, REL1 Y REL2 y REL1 Y REL2.
Como nota al margen, probablemente debamos puntualizar que la figuras 3-22(a)-(b)
están realmente algo simplificadas. Los relojes reales son simétricos, con la duración del
intervalo alto igual a la del intervalo bajo, como la señal A en la figura 3-22(c). Para generar
un tren de impulsos asimétricos, se desplaza el reloj básico por medio de un circuito de
retardo, obteniéndose B. Al final se pasan A y B por una compuerta AND para obtener REL.
Esta es la señal mostrada como REL1 en la figura 3-22(b). REL2 puede generarse
retrasando REL1.

MEMORIA

Un componente esencial de toda computadora es su memoria. Sin ella no podría haber


computadoras como las conocemos. Se usa para guardar las instrucciones a ejecutar y sus
datos. En las secciones siguientes examinaremos los componentes básicos de una memoria,
empezando al nivel de compuertas para ver como funcionan y como se combinan para
obtener memorias grandes.

Biestables

Para crear una memoria de un bit, es necesario un circuito que "recuerde" sus valores
de entrada anteriores. Un circuito así puede construirse con dos compuertas NOR, como se
ve en la figura 3-23(a). Se pueden construir circuitos análogos con compuertas NAND. No
los mencionaremos en adelante, ya que son conceptualmente idénticos a las versiones NOR.
El circuito de la figura 3-23(a) se llama biestable SR. Tiene dos entradas, S, para
ponerlo a 1, y R, para ponerlo a 0. También tiene dos salidas, Q y Q, que son

57
complementarias, como veremos en breve. En contraste con los circuitos combinacionales,
las salidas del biestable no están determinadas únicamente por los valores instantáneos de
las entradas.

Para ver cómo sucede esto, supongamos que S y R están en 0, lo cual ocurre casi
siempre. Supongamos que, además, Q = 0. Como Q está realimentada a la compuerta NOR
de arriba, ésta tiene ambas entradas a 0, por lo que su salida, Q(negado), está a 1. Este 1
es realimentado a la puerta de abajo, que tiene entradas 1 y 0, obteniéndose Q = 0. Este
estado es, por lo menos, consistente y es el dibujado en la figura 3-23(a).
Imaginemos ahora que Q no es 0 sino 1, estando todavía R y S a 0. La compuerta
superior tiene 1 y 0 como entradas y una salida, Q (negado), de 0, que es realimentada a la
compuerta inferior. Este estado, que se muestra en la figura 3-23(b), también es
consistente. Un estado con ambas salidas a 0 es inconsistente, porque forzaría a ambas
compuertas a tener dos ceros como entradas; de ser cierto esto, produciría unos y no ceros
como salidas. De modo similar, es imposible que ambas salidas sean iguales a 1, porque
forzaría las entradas a 0 y 1, obteniéndose 0 y no 1. Nuestra conclusión es simple: si R = S
= 0, el biestable tiene dos estados estables, que llamaremos 0 o 1, dependiendo de Q.
Examinemos ahora el efecto de las entradas en el estado del biestable. Supongamos
que S se hace 1 mientras Q = 0. Las entradas a la compuerta superior son 0 y 1, forzando
una salida de 0. Este cambio hace que ambas entradas de la compuerta inferior sean 0,
forzando una salida de 1. Por tanto, el hacer S igual al 1 conmuta del estado 0 al 1. El poner
la entrada R a 1 cuando el estado es 0 no tiene efecto, ya que la salida de la compuerta
inferior es la misma con entradas 10 que con 11.

Con un razonamiento similar, es fácil ver que si se pone S a 1 en el estado 1 nada


ocurre, pero si se pone R a 1, el biestable se coloca en estado 0. En resumen, cuando S se
pone a 1 momentáneamente, el biestable termina en el estado 1, sin tomar en cuenta el
estado en que estuvo antes. De modo similar, cuando R se pone momentáneamente a 1, el
biestable pasa a estado 0. El circuito "recuerda" si la última entrada que estuvo a 1 fue R o
S. Esta propiedad puede emplearse para construir memorias de computadora.

58
Bieslables SR sincronizados

A menudo es conveniente impedir que un biestable cambie de estado excepto en


ciertos momentos específicos. Para conseguirlo, modificamos ligeramente el circuito, como
se muestra en la Figura 3-24, obteniéndose un biestable SR sincronizado. Este circuito tiene
una entrada adicional, el reloj, que normalmente está a 0. Con el reloj a 0 ambas
compuertas AND dan 0, independientemente de S y R, y el biestable no cambia de estado.
Cuando el reloj es 1, el efecto de las puertas Y desaparece y el biestable se hace sensible a
S y a R. A pesar de su nombre, la señal de reloj no tiene por qué estar manejada por un
reloj. Cuando la señal de reloj está a 1, se suele decir que el biestable está habilitado o
activado, es decir, que es sensible a S y a R.
Hasta ahora hemos esquivado cuidadosamente el problema de lo que sucede cuando
tanto S como R son 1 a la vez. Y por una buena razón: el circuito se vuelve no determinista
cuando R y S vuelven a 0. El único estado consistente para S = R = 1 es Q = Q = 0, pero
tan pronto como las entradas vuelven a 0, el biestable puede ponerse en cualquiera de los
dos estados estables. Si alguna de las entradas vuelve a 0 antes que la otra, gana la que
esté más tiempo a 1, ya que durante ese pequeño instante hay una sola entrada a 1 y
fuerza el estado correspondiente. Si ambas entradas se pusieran a 0 simultáneamente (lo
que es muy improbable), el bienestar se situaría al azar en cualquiera de sus estados
estables.

Biestables D sincronizados

Una forma de resolver la ambigüedad de los biestables SR es estar seguros de que no


ocurrirá. La figura 3-25 muestra un biestable con una sola entrada, D. Como la entrada a la
compuerta AND inferior es siempre el complemento de la entrada a la superior, nunca se
presentará el problema de ambas a 1. Cuando D = 1 y el reloj esté a 1, el biestable pasará
a estado 1. Cuando D = 0 y el reloj esté a 1 también, el biestable pasará a 0 lógico. Dicho
de otro modo, cuando el reloj esté a 1, se muestreará el valor actual de D y se guardará en
el biestable. Este circuito, denominado biestable D sincronizado, es una verdadera memoria
de un bit. El valor almacenado está siempre disponible en Q. Para cargar el valor actual de
D en memoria, hay que enviar un impulso positivo por la línea de reloj.

Flip-flops y registros

En muchos circuitos es necesario muestrear el valor de cierta línea en un instante


determinado y almacenarlo. En principio, esto se podría hacer con un biestable D
sincronizado, mandando un impulso muy corto por la línea de reloj en el momento de
muestrear. En la práctica, puede ser difícil la generación de impulsos muy cortos, por lo que
se ha desarrollado un tipo distinto de biestables. Se denominan flip-flops o biestables
accionados por flanco, y en ellos la transición tiene lugar no cuando el reloj es 1, sino
durante la transición de 0 a 1 o de 1 a 0. Así , la duración del impulso de reloj no tiene
importancia, siempre que las transiciones ocurran con rapidez.
Es importante insistir en la diferencia entre un flip-flop y un biestable. Un flip-flop se
dispara por flanco mientras que un biestable se dispara por nivel. Es necesario tener

59
cuidado, pues en la literatura técnica a menudo se confunden los términos; muchos autores
usan flip-flop para referirse a biestables y viceversa.

Los símbolos utilizados normalmente para los biestables disparados por nivel y por
flanco se muestran en la figura 3-26. La figura 3-26(a) representa un biestable D accionado
por nivel, cuyo estado se guarda cuando el reloj, CK, es 1, mientras que el de la figura 3-
26(b) tiene en forma normal el reloj a 1 y hay que bajarlo a 0 momentáneamente para
tomar el estado de D, Las figuras 3-26(c) y (d) son flip-flops, distinguiéndose de los
anteriores por el símbolo puntiagudo de las entradas de reloj. La figura 3-26(c) cambia su
estado con el flanco de subida de reloj (transición de 0 a 1), mientras que la figura 3-26(d)
lo cambia con el de bajada (transición de 1 a 0). Muchos biestables tienen además la salida
Q y algunas entradas de Puesta a 1 y de Puesta a 0 o Borrado.

Registros

Los flip-flops están disponibles en varias configuraciones. En la figura 3-27 (a) se


muestra una de las más simples, con dos biestables D independientes con señales de
borrado (CLR) y puesta a 1 (OR). Aunque están en el mismo chip de 14 patas, ambos flip-
flops son independientes. La figura 3-27(b) muestra una disposición algo diferente, con
ocho flip-flops. A éstos no sólo les faltan las líneas Q y de puesta a 1, sino que además
todas sus entradas de reloj están juntas y conectadas a la pata 11. Cada uno de ellos es del
tipo de la figura 3-26(d). Pero las burbujas de inversión se cancelan con el inversor
conectado a la pata 11, por lo que se cargan con el flanco de subida. También todas las
señales de borrado están conectadas, por lo cual si la pata 1 se pone a 0 fuerza a todos los
biestables a ponerse a 0. En el caso de que al lector le parezca sorprendente que la pata 11
se invierta una vez a su entrada y oirá en cada señal CK, la explicación es que una señal de
entrada quizá no pueda atacar los ocho biestables y se usa el inversor de entrada como
amplificador.
Es evidente que la razón por la cual se juntan las líneas de reloj y borrado en la figura
3-27(b) es ahorrar patas, pero esto lleva a que el uso a que se puede destinar la pastilla
sea distinto del que tendrían ocho flip-flops independientes. Se utiliza como un registro de 8
bits. Así, también pueden usarse dos de estas pastillas para realizar un registro de 16 bits
conectando entre si las patas 1 y 11 respectivas. Se verá con más detalle el uso de los
registros en el capitulo 4.
A medida que avanzamos, vamos viendo que la escasez de patas lleva al diseño de
pastillas con un cociente compuertas/patas cada vez mayor. El sencillo biestable D de la
figura 3-25 requiere cinco compuertas, por lo que una pastilla con ocho de ellos, análoga a
la de la figura 3-27(b), necesitará 57, incluyendo los ocho inversores para CK y los ocho
para CLR. Un flip-flop es más complejo internamente que un biestable accionado por nivel,
por lo que la figura 3-27(b) representa el equivalente a unas 100 puertas, lo que es
bastante más complejo que las sencillas pastillas SSI de la figura 3-11. En la siguiente
sección estudiaremos una organización distinta de las pastillas de memoria, que permita un
cociente compuertas/patas mucho mayor.

60
Organización de las memorias

Aunque hemos progresado desde la simple memoria de 1 bit de la figura 3-25 a la de


8 bits de la figura 3-27(b), no podemos seguir por este camino, debido a la falta de patas
en las pastillas. Cada biestable requiere dos patas, D y Q, además de las de control
compartidas por todos. Para construir memorias grandes se requiere una organización
distinta.
Lo que se necesita es un diseño en que el número de patas crezca en relación
logarítmica con la capacidad de memoria, en lugar de hacerlo en forma lineal. Una
organización de memorias muy extendida que cumple ese criterio es la de la figura 3-28.
Este ejemplo ilustra una memoria de cuatro palabras de tres bits. Cada operación lee o
escribe una palabra completa de 3 bits. Aunque la capacidad de esta memoria de 12 bits es
algo mayor que la de nuestro registro de 8, necesita menos patas y, lo que es más
importante, el diseño se generaliza fácilmente para memorias grandes.
Aunque a primera vista la memoria de la figura 3-28 parece complicada, en realidad
es bastante simple, debido a su estructura regular. Tiene ocho líneas de entrada y tres de
salida. De las de entrada, tres son de dato: DE0, DE1 y DE2; dos de dirección: DIR0, y DIR1;
y tres de control: CS para seleccionar la pastilla, RD para distinguir la lectura de la escritura
y OE para permitir la salida. Las líneas de salida son para los datos: DS 0, DS1 y DS2. En
principio, podía ponerse esta memoria en un chip de 14 patas, incluyendo la alimentación y
la tierra, frente a las 20 del registro de ocho biestables.

61
Se necesita una lógica externa que ponga CS en alto para seleccionar la pastilla, así
como para poner RD a alto (1 lógico) para leer, o abajo (0 lógico) para escribir. Las dos
líneas de dirección deben ajustarse para que indiquen cuál de las cuatro palabras de tres
bits ha de leerse o escribirse. En una operación de lectura no se usan las líneas de datos de
entrada, pero en las de salida aparece la palabra seleccionada. En una escritura, en cambio,
no se usan las líneas de datos de salida, pero se recoge el dato de las de entrada y se
guarda en la posición de memoria seleccionada.
Examinemos ahora de cerca la figura 3-28 para ver cómo funciona. Las cuatro
compuertas AND de selección de palabra de la izquierda forman un decodificador. Los
inversores de sus entradas se han ubicado de manera que se habilite (salida en alto) cada
una de las compuertas con una dirección distinta. Cada compuerta alimenta una línea de
selección de palabra, la de arriba para la palabra 0, la siguiente hacia abajo para la 1, etc.
Cuando se seleccione la pastilla para escritura, la línea vertical etiquetada CS-RD estará en
alto, habilitando a una de las cuatro compuertas de escritura, según la línea de selección de
palabra que esté en alto. La salida de la compuerta de escritura mueve todas las señales CK
de la palabra seleccionada, cargando los datos de entrada en los flip-flops de la misma. Sólo
se escribe si CS está en alto y RD en bajo, y sólo en la palabra seleccionada por DIR0 y
DIR1; las restantes permanecen sin ser alteradas.

62
La lectura es similar a la escritura. La decodificación de direcciones es idéntica. Pero
ahora la línea CS • RD está en bajo, por lo que se deshabilitan todas las compuertas de
escritura y no se modifica ningún biestable. En cambio, la línea de selección de palabra
elegida habilita las compuertas AND conectadas a las salidas Q de la palabra seleccionada.
Por tanto, una palabra pasa sus datos a las compuertas OR de cuatro entradas de la parte
inferior de la figura, mientras que a las otras tres palabras les pasan ceros. En
consecuencia, la salida de las compuertas OR es idéntica al valor guardado en la palabra
seleccionada. Las tres palabras no seleccionadas no contribuyen a la salida.
Aunque podría haberse diseñado un circuito en que las salidas de las compuertas OR
se llevarán directamente a las líneas de salida, a veces eso causa problemas. En particular,
se ha señalado que las líneas de datos de entrada y de salida son diferentes, pero en las
memorias reales son las mismas. Si se hubieran conectado las compuertas OR a las líneas
de salida, la pastilla intentaría sacar datos, es decir, forzar cada línea a un valor especifico,
incluso en escritura, interfiriendo en esa forma con los datos de entrada. Por esta razón, es
deseable tener algún modo de conectar las compuertas OR con las líneas de datos de salida

63
en las lecturas, pero desconectarlas por completo en las escrituras. Lo que necesitamos es
un conmutador electrónico que pueda abrir o cerrar una conexión en unos pocos
nanosegundos.
Por fortuna tales conmutadores existen. La figura 3-29(a) muestra el símbolo de lo
que se llama un buffer no inversor. Tiene una entrada de dato, una salida de dato y una
entrada de control. Cuando la entrada de control está en alto, el buffer actúa como un hilo
eléctrico, como se ve en la figura 3-29(b). Cuando la entrada de control está a nivel bajo,
actúa como un circuito abierto, como se muestra en la figura 3-29(c); es como si alguien
hubiera desconectado la salida de datos del resto del circuito con cortacables. Sin embargo,
a diferencia de lo que ocurre con un cortacables, la conexión puede restaurarse en pocos
nanosegundos volviendo a poner la entrada de control a nivel alto.

La figura 3-29(d) muestra un buffer inversor, que actúa como un inversor normal
cuando el control está en alto y desconecta la salida cuando está en bajo. Ambos tipos de
buffers son dispositivos triestado, porque pueden dar 0, 1 o nada (circuito abierto). Los
buffers también amplifican las señales, por lo que pueden manejar muchas entradas a la
vez. Por esta razón, se les usa en circuitos, aunque no se necesiten sus propiedades de
conmutador.
Volviendo al circuito de memoria, podemos ahora entender para qué sirven los tres
buffers no inversores de las líneas de salida. Cuando CS, RD y OE estén en alto, la señal de
habilitación de salida también estará en alto, habilitando los buffers y poniendo una palabra
en las líneas de salida. Cuando cualquiera de las señales CS, RD, o OE esté en bajo, las
salidas de datos se desconectarán del resto del circuito.

Propiedades de las memorias

Lo más interesante de la memoria de la figura 3-28 es que se generaliza con facilidad


para tamaños mayores. Tal como está dibujada, la memoria es de 4 x 3, es decir, de 4
palabras de 3 bits cada una. Para extenderla a 4 x 8 sólo tendríamos que añadir cinco
columnas más de cuatro biestables cada una, así como cinco líneas de entrada y cinco de
salida. Para ir de 4 x 3 a 8 x 3 deberemos añadir cuatro filas más de tres biestables cada
una, así como una línea de dirección adicional, DIR2. Con esta clase de estructura, el
número de palabras debería ser una potencia de dos, para que la eficiencia sea máxima; sin
embargo, el número de bits por palabra puede ser cualquiera.
Como la tecnología de circuitos integrados es muy adecuada para hacer pastillas con
una estructura interna repetitiva en dos dimensiones, las memorias son aplicaciones ideales
de aquélla. A medida que esta tecnología se perfecciona, aumenta el número de bits que
pueden meterse en una pastilla, cuadruplicándose aproximadamente cada 3 o 4 años. En
los primeros años de la década de los setenta las pastillas tenían 1K bits; más tarde,
tuvieron sucesivamente 4K, 16K, 64K, 256K, etc. En 1990 ya eran comunes las memorias
con 4 millones de bits. No siempre las pastillas de más capacidad vuelven obsoletas a las de
menos, debido a las interrelaciones entre capacidad, velocidad, consumo, precio y
conveniencia de interconexión.
Para un tamaño de memoria dado, existen varias formas de organizar la pastilla. En la
figura 3-30 se aprecian dos posibles organizaciones para una pastilla de tamaño mediano
(256K-bit): 32K x 8 y 256K x 1. En la primera, se necesitan 15 líneas para direccionar el

64
byte seleccionado y ocho líneas para cargar y almacenar los datos. En la segunda, se
necesitan 18 líneas para direccionar el bit seleccionado, pero sólo una línea para sacar los
datos. En ambos casos se requiere de líneas para distinguir lecturas de escrituras y para la
selección de la pastilla. La línea OE representa la habilitación de salida; cuando tiene un
valor de 0, hay una salida presente, y cuando es 1, no la hay (v.g., la salida está
desconectada del circuito). La línea WE representa la habilitación de escritura. Las barras
colocadas sobre OE, WE y CS significan que la señal está activada en un estado de voltaje
bajo (0 lógico) en lugar de alto (1 lógico). Esta convención se verá en detalle más adelante.

Nótese que para construir una memoria con una palabra de memoria de 16 bits a
partir de pastillas de 256K x 1, se requiere de 16 pastillas en paralelo obteniendo una
capacidad total de por lo menos 512K bytes, mientras que usando pastillas de 32K x 8 sólo
se requiere de dos pastillas en paralelo y permite construir memorias tan pequeñas como de
64K bytes.
Las memorias que hemos estudiado hasta ahora pueden utilizarse para leer o escribir.
Se suelen denominar memorias vivas o RAM (siglas inglesas para memoria de acceso
aleatorio); este último nombre es bastante inadecuado puesto que todas las pastillas de
memoria son accesibles en forma aleatoria, pero el término ya se ha arraigado. Hay dos
variedades de memorias RAM: las estáticas y las dinámicas Las RAM estáticas se construyen
a partir de circuitos similares a nuestro biestable D básico. Tienen la propiedad de retener
su contenido tanto tiempo como estén conectadas a la fuente de alimentación, sean
segundos, minutos, horas o aun días.
Las RAM dinámicas, por el contrario, no usan circuitos biestables como los estudiados,
sino que están construidas como un conjunto de pequeños condensadores, que pueden
estar cargados o descargados. Como la carga eléctrica tiende a fugarse, cada bit de la RAM
dinámica debe refrescarse cada pocos milisegundos, para impedir la pérdida de su
información. Como el cuidado del refresco debe encomendarse a lógica externa, las RAM
dinámicas son más difíciles de interconectar que las estáticas, aunque en muchas
aplicaciones esta desventaja está compensada por su mayor capacidad. Algunas memorias
dinámicas tienen la lógica de refresco en la propia pastilla, dando así gran capacidad y
facilidad de conexión a los circuitos. Estas pastillas se denominan casi estatuas.
Las RAM no son los tarcos tipos de pastillas de memoria. En muchas aplicaciones,

65
como juguetes, electrodomésticos y automóviles, los programas, los programas y parte de
los datos deben permanecer aun cuando se desconecte la alimentación. Además, una vez
instalados, ni el programa ni esos datos van a cambiarse nunca. Estos requisitos llevaron al
desarrollo de las memorias fijas o ROM (siglas inglesas para memoria de sólo lectura), que
no pueden cambiarse de ninguna manera. Los datos se graban durante la fabricación de la
ROM, que consiste esencialmente en la exposición a la luz de un material fotosensible a
través de una máscara con la configuración deseada de bits. Después se disuelve la parte
expuesta a la luz (o la no expuesta) La única manera de cambiar un programa en ROM es
sustituir la pastilla por otra.
Las ROM son mucho más baratas quejas RAM cuando se piden en grandes cantidades,
para amortizar el precio de hacer la máscara. Sin embargo son inflexibles, ya que no
pueden cambiarse después de su fabricación y el plazo de entrega desde que se encargan
hasta que se reciben puede abarcar varias semanas. Para facilitar a las empresas el
desarrollo de productos basados en ROM se inventó otro tipo de memoria muerta
denominado PROM (ROM programable) Esta pastilla es como una ROM, excepto en que
puede programarse (una sola vez) reduciendo así el plazo en que pueden tenerse grabadas.
El siguiente avance en esta tinca fue la EPROM (PROM borrable), que no sólo puede
programarse sino también borrarse. Cuando la ventana de cuarzo de una EPROM se expone
a luz ultravioleta potente durante unos 15 minutos. todos sus bits se ponen a 1. Si se
espera hacer muchos cambios en el ciclo de diseños las EPROM son mucho más económicas
que las PROM porque pueden reutilizarse.
Aún mejores que las EPROM son las EEPROM (EPROM eléctricamente borrables)
también llamadas EAROM (ROM eléctricamente alterables), que pueden borrarse mediante
impulsos eléctricos, sin necesidad de que las introduzcan en un receptáculo especial para
exponerlas a luz ultravioleta. Las EEPROM difieren de las RAM en que el tiempo necesario
para grabar o borrar un byte es miles de veces mayor, a pasar de que los tiempos de
acceso en lectura de las ROM, PROM, EEPROM y RAM son similares (al máximo unas
centenas de nanosegundos).

MICROPROCESADORES Y BUSES

Con la información acerca de las pastillas de memoria en sus diferentes escalas de


integración, se puede abordar ahora el tema principal de este capítulo; los
microprocesadores. En esta sección se verán algunos de los aspectos generales de los
microprocesadores desde el punto de vista de la lógica digital, incluyendo el significado de
las señales asociadas a cada terminal. También se proporcionará una introducción al diseño
de buses, en virtud de la estrecha relación que existe entre éstos y algunos
microprocesadores y se darán ejemplos detallados de ambos en las siguientes secciones.

Microprocesadores

Para los fines de este libro, se usará el término "microprocesador" para denominar a
cualquier CPU contenida en una sola pastilla, aun cuando algunas de ellas tengan la
arquitectura y el poder de cómputo de pequeñas macrocomputadoras. Esta definición está
basada en el empacado de componentes, la que la hace apropiada para el nivel de la lógica
digital que se estudia.
Se decidió tratar las CPU de una sola pastilla por una buena razón: su relación con el
resto del sistema se encuentra bien definida. Una pastilla de microprocesador típica tiene
entre 40 y 132 patas, a través de las cuales se establece su relación con el mundo exterior.
Algunas patas envían señales de la CPU, otras aceptan señales del exterior y algunas
realizan ambas funciones. Si se entiende la función de cada una de las patas, se aprende
cómo interacciona la CPU con la memoria y los dispositivos de E/S al nivel de lógica digital.
Aunque lo que sigue se refiere específicamente a los microprocesadores, las ideas básicas
(por ejemplo, cómo la CPU hace referencia a la memoria, cómo se conectan los dispositivos
de E/S, etc.) también son válidas para las minicomputadoras y, en cierta medida, para las
macrocomputadoras, aunque de una manera algo diferente.
Las patas de una pastilla de microprocesador pueden dividirse en tres tipos: dirección,

66
datos y control. Estas, están conectadas a patas similares en las pastillas de memoria y de
entrada/salida por medio de un conjunto de alambres paralelos denominados bus. Para
extraer una instrucción, el microprocesador pone primero la dirección de memoria de dicha
instrucción en las patas de direccionamiento. En seguida (por lo general), activa la línea de
control para informar a la memoria que desea leer una palabra. La memoria responde
poniendo la palabra solicitada en las patas de datos del microprocesador y activando una
señal que indica que lo hizo. Cuando el microprocesador observa esta señal, acepta la
palabra y lleva a cabo la instrucción. La instrucción puede requerir a su vez leer o escribir
palabras de datos, en cuyo caso se repite todo el proceso para cada palabra adicional. Más
adelante se verá cómo funcionan la lectura y la escritura, pero, por el momento, lo
importante es entender que la CPU se comunica con la memoria y con los dispositivos
periféricos presentando y aceptando señales a través de sus patas. No es posible realizar
otro tipo de comunicación. Cabe hacer aquí una aclaración en cuanto a la terminología. En
algunas patas, una señal alta (+5 volts) provoca que se realice una acción; en otros, ésta
se produce por una señal baja. A fin de evitar confusiones, para indicar que una señal tiene
un valor para provocar alguna acción diremos que está activada (en vez de decir que tiene
un valor alto o bajo). De esta manera, en algunos casos activar las señales significa darles
un valor alto, mientras que para otras significa que tomen un valor bajo. Las patas que son
activadas cuando el valor es bajo se les asignan nombres con una barra encima. Así, WRITE
está activada alto, en tanto que WRITE está activada bajo. El término opuesto es
desactivado y se usa para indicar ausencia de acción. Cuando no ocurre ninguna acción en
particular, se dice que las patas están desactivadas o negadas.
Dos parámetros clave que determinan el desempeño de un microprocesador son el
número de patas de direccionamiento y el número de patas de datos. Una pastilla con m
patas de direccionamiento puede direccionar hasta 2m bytes de memoria. Valores comunes
para m son: 16, 20, 24 y 32. En forma similar, una pastilla con n patas de datos puede leer
o escribir en una sola operación palabras de memoria de n bits. Los valores comunes para n
son: 8, 16 y 32. Para leer una palabra de 32 bits, un microprocesador de 8 patas de datos
requiere de cuatro operaciones, mientras que uno con 32 patas lo puede hacer en una sola
operación. De ahí que este último sea mucho más rápido, aunque también invariablemente
más caro.
Además de las patas de dirección y datos, cada microprocesador tiene algunas patas
de control, las cuales sirven para regular los tiempos y el flujo de los datos desde y hacia el
microprocesador, así como otras varias funciones. Todo microprocesador tiene terminales
para alimentación (normalmente + 5 V), tierra física y para la señal de reloj (una onda
cuadrada); el resto de las patas varía mucho dependiendo de la pastilla. No obstante, las
patas de control pueden agruparse grosso modo en las siguientes categorías principales:
1. Control del bus
2. Interrupciones
3. Arbitraje del bus
4. Señalamiento al coprocesador
5. Estados
6. Varios

A continuación se describirá cada una de estas categorías y se proporcionarán más


detalles cuando se describan más adelante las pastillas de lntel y de Motorola. En la figura
3-31 se muestran estos grupos de señales de manera general para una pastilla de CPU. Las
patas de control del bus son en su mayoría salidas del microprocesador hacia el bus (o sea
entradas para las pastillas de memoria y de entrada/salida), indicando la acción que desea
realizar.
Las patas de interrupción son entradas de los dispositivos de entrada/salida al
microprocesador. En la mayoría de los sistemas, el microprocesador puede indicar a estos
lentos dispositivos que inicien su operación y después dedicarse a algo más útil mientras
éstos trabajan. Cuando termina la operación de E/S, la pastilla controladora de
entrada/salida activa una señal en una de estas patas para interrumpir ala CPU para que
atienda al dispositivo, por ejemplo para verificar si hubo algún error de E/S. Algunos
microprocesadores tienen una pata de salida para reconocer la señal de interrupción.

67
Para regular el tráfico en el bus, se necesitan las patas de arbitraje del bus, a fin de
evitar que dos dispositivos pretendan utilizarlo al mismo tiempo. Para los fines de arbitraje,
se considera a la CPU como un dispositivo.
Muchas pastillas están diseñadas para operar junto con coprocesadores, que en su
mayoría son unidades aritméticas de punto flotante, pero también pueden ser pastillas de
gráficos u otras. Para facilitar la comunicación entre el microprocesador y el coprocesador
se incluyen patas especiales para realizar y autorizar diversas solicitudes. Además de estas
señales, algunos microprocesadores tienen otras patas para funciones varias. Algunos de
éstos proporcionan o aceptan información sobre el estado del microprocesador, otros sirven
para reinicializar la computadora o para asegurar la compatibilidad con pastillas de E/S de
versiones anteriores.

Buses de computadora

Un bus es una ruta eléctrica común entre múltiples dispositivos. Un ejemplo común es
el bus del sistema presente en toda microcomputadora, el cual consiste de 50 a 100
alambres de cobre paralelos grabados en la tarjeta matriz, con conectores espaciados a
intervalos regulares para conectar tarjetas de memoria y de entrada/salida. Además, los
buses se pueden dedicar a fines especiales como conectar una pastilla de microprocesador a
uno ovarios coprocesadores o memorias locales. Más aún, dentro de la misma pastilla del
microprocesador puede haber varios buses para conectar sus componentes internos, como
se ilustra en la figura 3-32. En las publicaciones, los buses se dibujan en ocasiones como
flechas gruesas tal como en esta figura.
Mientras que dentro de la pastilla los diseñadores de microprocesadores tienen la
libertad de usar cualquier clase de bus, a efecto de que las tarjetas diseñadas por terceras
personas puedan conectarse al bus del sistema, debe haber reglas bien definidas del
funcionamiento de éste, las cuales deben ser obedecidas por todos los dispositivos
conectados al mismo.
Estas reglas se denominan protocolo del bus. Asimismo, debe haber especificaciones
mecánicas y eléctricas para que las tarjetas diseñadas por terceros se ajusten al gabinete
de tarjetas j tengan los conectores necesarios para acoplarse a la tarjeta matriz, tanto
físicamente como en términos de voltaje.
Una gran variedad de buses existen diseminados en el mundo de la computación.
Algunos de los más conocidos incluyendo ejemplos entre paréntesis son: Camac (física
nuclear), EISA (80386), Fastbus (física de alta energía), IBM PC y PC/AT (computadoras
personales), Massbus (PDP-11, VAX), Megabus (Honeywell), Microchannel (PS/2), Multibus I
(8086), Multibus II (80386), Nubus (Macintosh II), Omnibus (PDP-8), Qbus (LSI-ll ), S-I00
(Computadoras recreativas), SBI (VAX-11/780), Unibus (PDP-11), Versabus (Motorola) y

68
VME (680xO). Probablemente, éste sería un mundo si todos estos buses con excepción de
uno, desaparecieran. Por desgracia, la estandarización en esta área parece poco probable
en virtud de las inversiones existentes en todos estos sistemas incompatibles.

A continuación se estudiará el funcionamiento de los buses. Algunos dispositivos


conectados al bus se encuentran en estado activo y pueden iniciar transferencias, mientras
que otros están en estado pasivo aguardando solicitudes. A los dispositivos activos se les
llama maestros mientras que a los pasivos se les denomina esclavos. Cuando la CPU ordena
leer o escribir un bloque aun controlador de discos, ésta actúa como dispositivo maestro y el
controlador como esclavo. Sin embargo, el controlador puede actuar más adelante como
dispositivo maestro, al indicar a la memoria que acepte las palabras que lee de la unidad de
disco. En la figura 3-33 se listan varias de las combinaciones típicas entre dispositivos
maestros y esclavos. La memoria no puede, bajo ninguna circunstancia, actuar como
dispositivo maestro.
A menudo las señales binarias que emiten los dispositivos no son la suficientemente
fuertes para activar el bus, en especial si éste es relativamente largo o tiene muchos
dispositivos conectados. Por esto la mayoría de los dispositivos maestros se conectan al bus
a través de una pastilla denominada manejador del bus, que es en esencia un amplificador
digital. En forma parecida, los dispositivos esclavos se conectan por medio de un receptor
del bus. Para los dispositivos que pueden actuar ya sea como maestros o esclavos, se utiliza
una pastilla combinada llamada transmisor-receptor del bus.

69
Estas pastillas de interfaz son a menudo dispositivos triestado, a fin de permitirles
flotar (desconectarse) cuando no son necesarios, o estar conectados de cierto modo
diferente llamado colector abierto, con el que se logra un efecto similar. Cuando dos o más
dispositivos en una línea de colector abierto activan la línea al mismo tiempo, el resultado
es el O-Booleano para todas las señales. A esta configuración se le conoce por lo regular
con el nombre de O-alambrado. En la mayoría de los buses algunas de las líneas son del
tipo triestado, mientras que otras que requieren de las propiedades del O-alambrado, son
del tipo colector abierto.
Como en un microprocesador, un bus también tiene líneas de direcciones, de datos y
de control, sin embargo no es necesario que haya una correspondencia de 1 al entre las
señales de ambos. Por ejemplo, algunos microprocesadores tienen tres patas que codifican
las operaciones que se están realizando, como lectura o escritura de la memoria o de
entrada/salida. Por su parte, un bus típico tendrá una línea para lectura de memoria, otra
para escritura de memoria, una tercera para lectura de E/S, una cuarta para escritura de
E/S y así sucesivamente. Por lo tanto, se requiere de una pastilla decodificadora entre la
CPU y dicho bus para convertir la señal codificada de tres bits en señales separadas, que
puedan ser manejadas por las líneas del bus.
Otros aspectos relevantes en el diseño de buses (además del número de direcciones y
líneas de datos) son: la sincronización del bus, el mecanismo de arbitraje, el manejo de
interrupciones y el manejo de errores. Todos ellos tienen un impacto significativo en la
velocidad y en la amplitud de banda del bus. En las secciones siguientes se abordarán estos
puntos con mayor detalle, comenzando por la sincronización.

Buses síncronos

Dependiendo de los ciclos de tiempo, los buses pueden clasificarse en dos distintas
categorías. Un bus síncrono tiene una línea manejada por un oscilador de cristal. La señal
de esta línea consiste en una onda cuadrada con una frecuencia que varía entre 5 y 50 MHz.
Todas las actividades del bus se realizan en un número entero de estos ciclos, denominados
ciclos del bus. El otro tipo de bus, el bus asíncrono no tiene un reloj maestro, la longitud de
los ciclos del bus puede ser cualquiera que se necesite y no se requiere sea la misma entre
cada par de dispositivos. Ambas categorías serán examinadas en su oportunidad, más
adelante.

70
Como un ejemplo de funcionamiento de un bus síncrono, considérense los diagramas
de tiempo de la figura 3-34(a), en el que se usará un reloj de 4 MHz, el cual da un ciclo del
bus de 250nseg. Se asumirá además. que la lectura de un byte de memoria toma tres ciclos
del bus. o sea un total de 750 nseg desde el inicio del ciclo T 1 hasta el final del ciclo T3.
Nótese que ninguna de las líneas ascendentes o descendentes han sido dibujadas en forma
vertical en virtud de que ninguna señal eléctrica puede cambiar su valor en un tiempo de
cero. En el ejemplo se asume que toma 10 nseg cambiar una señal. Tanto las líneas de reloj
como de direcciones. datos, MREQ y RD se muestran en la misma escala de tiempo. El
comienzo de T1 se define por el flanco ascendente de reloj. Poco después de iniciado T 1, la
CPU pone la dirección del byte deseado en las líneas de direcciones. Como la dirección no
consta de un solo valor. como en el caso del reloj no puede mostrarse con un solo trazo; en
cambio se presenta como dos líneas que se cruzan al momento en que la dirección cambia.
Más aún, el sombreado que precede al cruce, indica que su valor no es importante.
Utilizando esta misma convención de sombreado, podemos
observar que el contenido de las líneas de datos no es significativa hasta bien
adentrado T3.
MREQ y RD se activan una vez que las líneas de dirección han tenido tiempo para
asentar sus nuevos valores. MREQ indica que la memoria (y no un dispositivo de E/S) está
siendo accesada y RD se usa para distinguir las operaciones de lectura de las de escritura.

71
Para dar tiempo a la memoria para decodificar la dirección y poner los datos en el bus, no
sucede nada durante T2. En el flanco descendente del reloj. la CPU lee las líneas de datos y
almacena su valor en un registro interno. Una vez leídos los datos, la CPU desactiva MREQ y
RD. En caso necesario puede iniciarse otro ciclo de memoria en el siguiente flanco
ascendente del reloj.
En la especificación de tiempos de la figura 3-34(b), se muestra de manera más clara
el significado de los ocho símbolos que aparecen en el cronograma. TRDIR por ejemplo, en el
intervalo de tiempo, entre el flanco ascendente del reloj en T 1 y el establecimiento de las
líneas de dirección. De acuerdo con la especificación de tiempos. TRDIR 110 nseg, lo que
significa que el fabricante de la pastilla garantiza que durante cualquier ciclo de lectura de
operandos, la CPU pondrá la dirección a ser leída dentro de los 110 nseg siguientes al punto
medio del flanco ascendente del reloj en T1.
En los diagramas de tiempos también se requiere que los datos estén disponibles por
lo menos 50 nseg antes del flanco descendente de T3, para darle tiempo de estabilizarse
antes de ser leídas por la CPU.
La combinación de las restricciones en TRDIR y TEDAT significa que, en el peor de los
casos. la memoria tendrá sólo 250 + 250 + 125 -110 -50 = 465 nseg desde el momento en
que aparecen las direcciones hasta que deba entregar el dato. Si la memoria no pudiera
responder tan rápido deberá activar ESPERA antes del flanco de bajada de T 2, que es
cuando se muestrea.
Esta acción insertará estados de espera (ciclos extra del bus) hasta que la memoria
termine y desactive ESPERA.
La especificación de tiempo garantiza que la dirección estará presente al menos 60
nseg antes de que se active MREQ. Este tiempo puede ser importante si MREQ se conecta a
la selección del circuito de memoria, ya que algunas memorias requieren que la dirección
esté estable antes de su selección. Evidentemente, el diseñador del microcomputador no
deberá elegir un chip de memoria que requiera de establecimiento de 75 nseg antes de
MREQ .
La restricción en TRPM y en TLB significa que MREQ y RD deben activarse antes de 85
nseg después del flanco de bajada del reloj en T1. En el caso peor, la pastilla de memoria
tendrá sólo 250 + 250 - 85 - 50 = 365 nseg desde la activación de MREQ y RD hasta tener
el dato en el bus. Esta restricción se añade a la referente a la dirección.
TPMA y TLA dicen cuánto tardan en negarse MREQ y RD después de haberse muestreado
el dato. Finalmente, TMDAT dice cuánto tiempo debe mantener la memoria el dato en el bus
después de desactivar RD. Por lo que concierne a la CPU del ejemplo, la memoria puede
retirar los datos del bus tan pronto como se desactive RD; sin embargo, en algunos
microprocesadores los datos deben permanecer estables un poco más de tiempo.
Cabe señalar que la figura 3-34 representa una versión muy simplificada de las
restricciones reales en la especificación de tiempos. En la práctica, se señalan siempre
muchos más tiempos crítico. No obstante, muestra una buena imagen de como funciona un
bus síncrono.
Además de los ciclos de lectura (y escritura), algunos buses síncronos manejan
transferencias en bloque. Cuando se inicia la lectura de un bloque el bus maestro indica al
esclavo cuantos bytes van a transferirse, por ejemplo, poniendo el número de bytes en la
línea de datos durante T1. En vez de regresar sólo un byte, el bus esclavo envía un byte
durante cada ciclo hasta agotar el número indicado. En este ejemplo, la lectura de un
bloque de n bytes tomaría n + 2 ciclos en lugar de 3n.
Otra forma de hacer más rápido al bus consiste en acortar el ciclo. En el ejemplo, se
transfiere un byte cada 750 nseg con una amplitud de banda máxima de 1.33 Mbytes/seg.
Con un reloj de 8 MHz, el tiempo de ciclo se reduciría a la mitad y se podrían alcanzar 2.67
Mbytes/seg. Sin embargo, acortar el ciclo del bus puede conducir a problemas de ingeniería.
No todas las señales en las diversas líneas viajarían exactamente a la misma velocidad
creando un efecto llamado distorsión del bus. Resulta esencial que la distorsión y el tiempo
del ciclo sean comparables duraderamente a fin de evitar que los intervalos de tiempo
digitalizados terminen en un ciclo de tiempo análogo.
El último punto a tratar es si las señales de control deben activarse altas o bajas.
Corresponde a los diseñadores del bus determinar cuál es más conveniente, pero la elección

72
es, en esencia, arbitraria. Esta cuestión puede verse como el equivalente en el hardware, de
la elección de un programador para representar como ceros o unos a los bloques libres de
disco en un mapa de bits.

BUSES ASINCRONOS

Aun cuando es fácil trabajar con buses síncronos debido a sus intervalos de tiempo
discretos, también presentan algunos problemas. Por un lado, todo el trabajo se realiza en
múltiples enteros del reloj del bus. Si una CPU y una memoria particular son capaces de
completar una transferencia en 3.1 ciclos, deben ampliarla a 4.0 ya que los ciclos
fraccionados están prohibidos.
Peor aún, una vez que se ha seleccionado un ciclo de bus y se ha construido para éste
tanto la memoria como las tarjetas de entrada/salida, resulta difícil aprovechar las ventajas
de mejoras futuras de la tecnología. Suponga por ejemplo que algunos años después de
construido el sistema de la figura 3-34, aparecen nuevas CPU y memoria con ciclos de
tiempo de 100 nseg en vez de 250 nseg. Aun cuando pudieran usarse, correrían a la misma
velocidad que el anterior, ya que el protocolo del bus requiere que la memoria active las
líneas de datos justo antes del flanco descendente de T3.
Por otro lado, si un bus tiene conectado un grupo heterogéneo de dispositivos,
algunos rápidos y otros lentos, el bus debe ajustarse al más lento impidiendo que los más
rápidos utilicen todo su potencial.
Puede manejarse una tecnología mixta utilizando un bus asíncrono, esto es, un bus sin
reloj maestro, como el que se muestra en la figura 3-35. En vez de que todo esté
"amarrado" al reloj, cuando el bus maestro ha activado las señales de dirección, MREQ, RD
y cualquier otra que necesite, activa entonces una señal especial llamada SINM
(SINcronización Maestra). Cuando el dispositivo esclavo ve esta señal realiza su trabajo tan
rápido como puede, activando al terminar la señal SINE (SINcronización Esclava).

Tan pronto como el maestro ve activada la señal SINE sabe que los datos están
disponibles de modo que los almacena en un registro interno y desactiva las líneas de
direcciones lo mismo que MREQ, RD y SINM. A su vez, cuando el esclavo observa
desactivada la señal SINM, sabe que el ciclo se ha completado, así que desactiva SINE,
regresando a la situación original, con todas las señales desactivadas y aguardando el
siguiente ciclo.
En los cronogramas de buses asíncronos (y en ocasiones también en los de síncronos)
se utilizan flechas para indicar causa y efectos como en la figura 3-35. Activar SINM
ocasiona que se activen las líneas de datos, así como también provoca que el esclavo active
SINE. A su vez, activar esta última señal, conduce a desactivar las líneas de direcciones,

73
MREQ, RD y finalmente, desactivar SINM causa la desactivación de SINE, terminando así la
lectura.
Al conjunto de señales enlazadas de esta forma se le denomina sincronización
completa o bidireccional, cuya parte esencial consta de cuatro pasos:
1. Se activa SINM.
2. Se activa SINE en respuesta a SINM.
3. Se desactiva SINM en respuesta a SINE.
4. Se desactiva SINE en respuesta a la desactivación de SINM.

Debe quedar claro que la sincronización completa es independiente de los ciclos de


tiempo. Cada paso se provoca por un paso previo, y no por un impulso de reloj. Si una
pareja maestro-esclavo en particular es lenta, de ninguna manera afecta a otra posterior
que sea mucho más rápida.
Con esto deben quedar claras las ventajas de los buses asíncronos, pero el hecho es
que la mayoría de los buses son síncronos por la razón de que es más fácil construir
sistemas síncronos. La CPU sólo activa sus señales y la memoria sólo reacciona a éstas. No
hay retroalimentación (causa y efecto), pero si los componentes se han seleccionado
adecuadamente, el trabajo se desarrollará de manera correcta sin necesidad de
sincronización.

Arbitraje del bus

Hasta ahora hemos asumido en forma tácita que sólo hay un bus maestro: la CPU. En
realidad, también las pastillas de entrada/salida pueden actuar como maestros para lecturas
y escrituras de memoria así como para provocar interrupciones. Asimismo, los
coprocesadores pueden convertirse en maestros del bus. De ahí que surja la siguiente
pregunta: " ¿Qué sucede si dos o más dispositivos desean actuar como bus maestros al
mismo tiempo?" La respuesta es que para evitar el caos, se necesita de algún mecanismo
de arbitraje del bus.
Este tipo de mecanismo puede ser centralizado o descentralizado. Se verá primero el
arbitraje centralizado, que en forma sencilla se muestra en la figura 3-36(a). En este
esquema, un solo árbitro del bus determina qué dispositivo tiene acceso. Muchos
microprocesadores contienen el árbitro integrado en la pastilla de CPU, pero en sistemas de
minicomputadoras es a veces un dispositivo separado. El bus contiene una línea de solicitud
que puede ser activada por uno o más dispositivos en cualquier momento (funciona como
un O-alambrado). No hay forma de que el árbitro sepa cuántos dispositivos han solicitado el
bus. Las únicas categorías que pueden distinguirse son: existe(n) solicitud(es) y no existe
solicitud.

74
Cuando el árbitro recibe una solicitud para el bus, autoriza su uso activando la línea de
respuesta del bus. Dicha línea está conectada en serie a través de todos los dispositivos de
entrada/salida, como en una serie de foquitos de navidad. Cuando el dispositivo que se
encuentra físicamente más cerca del árbitro recibe la señal, verifica si fue él quien hizo la
solicitud, en cuyo caso hace uso del bus y evita que la señal se siga propagando. Si este
dispositivo no fue quien originó la solicitud, la señal se propaga al siguiente dispositivo en la
línea, el que actúa en la misma forma y así sucesivamente hasta que algún dispositivo
acepte la señal y haga uso del bus. A este esquema se le denomina encadenamiento
margarita, y tiene la propiedad de que los dispositivos poseen, en efecto, prioridades
asignadas dependiendo de qué tan cerca se encuentren del árbitro. El dispositivo más
cercano tiene la prioridad más alta.
A fin de evitar las prioridades implícitas basadas en la distancia del árbitro, algunos
buses tienen múltiples niveles de prioridad. Para cada nivel existe una línea de solicitud y
una línea de respuesta. El bus que se muestra en la figura 3-36(b) tiene dos niveles, 1 y 2
(en la práctica los buses tienen 4, 8 o 16 niveles). Cada dispositivo está conectado a alguno
de los niveles de solicitud del bus, con aquellos que tienen tiempos más críticos conectados
a las líneas con prioridades más altas. En la figura 3-36(b) los dispositivos 1 y 2 utilizan el
nivel de prioridad 1, mientras que los dispositivos 3, 4 y 5 usan prioridad 2.
Si varios niveles de prioridad solicitan el bus al mismo tiempo, el árbitro concede su
uso sólo al de prioridad más alta. Entre los dispositivos con la misma prioridad se utiliza el
encadenamiento margarita. En la figura 3-36(b), en caso de conflicto el dispositivo 3 supera
al 4, éste al 5 que a su vez supera al dispositivo 1. El dispositivo 2 tiene la prioridad más
baja porque se encuentra al final de la cadena con menor prioridad.
Al margen puede comentarse que técnicamente no es necesario conectar en serie la
línea de respuesta del nivel 2 a través de los dispositivos 1 y 2, ya que éstas no pueden
solicitar esta línea, pero por conveniencia en la implantación, resulta más fácil conectar
todas las líneas de respuesta a todos los dispositivos, en lugar de hacer conexiones
especiales que dependan de qué dispositivo tiene cuál prioridad.
Algunos árbitros tienen una tercera, línea que es activada por el dispositivo cuando
acepta una línea de respuesta y ocupa el bus. Tan pronto como se activa esta línea de
reconocimiento, pueden desactivarse las líneas de solicitud y de respuesta. Como resultado,

75
otros dispositivos pueden solicitar el bus mientras que el primero lo está utilizando. Cuando
termine la transferencia actual, el siguiente maestro del bus ya habrá sido seleccionado y
pueden iniciar su operación tan pronto como se desactive la línea de reconocimiento en el
momento que empieza la siguiente ronda de arbitraje. Este esquema requiere de una línea
extra de bus así como más componentes lógicos en los dispositivos, pero hace un uso más
eficiente de los ciclos del bus. Entre otras, las pastillas de Motorola y de la PDP-11 utilizan
este sistema.
En muchos sistemas, la CPU puede también competir por el bus, pero se le asigna la
prioridad más baja y sólo puede ocupar el bus cuando nadie más lo usa. Aquí la idea es que
la CPU puede esperar mientras que los dispositivos de entrada/salida deben obtener el uso
del bus rápido o pierden los datos que están recibiendo; los discos girando a altas
velocidades no pueden esperar .
Cuando se utiliza el arbitraje del bus descentralizado no existe un árbitro. Por ejemplo,
el bus SBI de la VAX tiene 16 líneas priorizadas de solicitud del bus; este diseño limita el
número de dispositivos a 16. Cuando alguno de ellos desea utilizar el bus, activa su línea de
solicitud. Todos los dispositivos monitorean todas las líneas de solicitud, de modo que al
final de cada ciclo de bus, cada dispositivo sabe si tiene la prioridad más alta y de ahí, si
podrá usar el bus durante el siguiente. Este método, comparado con el arbitraje
centralizado requiere de un mayor número de líneas de bus, pero evita el costo potencial
del árbitro.
Otro tipo de arbitraje del bus descentralizado se usa en el Multibus. Este esquema,
mostrado en la figura 3-37, sólo usa tres líneas sin importar cuantos dispositivos haya. La
primera línea del bus es una línea de O-alámbrico para solicitar el bus. La segunda
denominada BUSY es activada por el bus maestro correspondiente. La tercera se usa para el
arbitraje del bus y atraviesa todos los dispositivos mediante encadenamiento margarita. La
punta de esta cadena se conecta a la fuente de poder de 5 volts, manteniendo la línea
activa.
Cuando ningún dispositivo requiere del bus, la línea activa de arbitraje se propaga a
través de todos los dispositivos. Para hacer uso del bus, el dispositivo checa primero si éste
está ocioso y si la señal de arbitraje ENT que recibe está activa, si no lo está no puede
convertirse en maestro del bus. Sin embargo, si ENT está activa, el dispositivo desactiva
SAL que es la señal que requiere el resto de los dispositivos en la línea para desactivar ENT
y SAL. Al final, sólo un dispositivo tendrá activada ENT y desactivada SAL, con lo que se
convierte en maestro del bus, activa las líneas BUSY y SAL e inicia su transferencia.
Poniendo un poco de atención, se puede apreciar que el dispositivo colocado más
hacia la izquierda en la cadena que requiera el bus es el que lo obtiene. De ahí que este
esquema sea similar al arbitraje de encadenamiento margarita, con la excepción de que no
tiene árbitro, de modo que es más barato, rápido y no está sujeto a fallas del árbitro.
Además, el Multibus ofrece también arbitraje centralizado así que los diseñadores del
sistema pueden elegir.

Un último punto acerca del arbitraje se refiere a las operaciones de ciclo múltiples. En
sistemas de multiproceso, es una práctica común usar una palabra de memoria para
proteger estructuras de datos compartidos. Si esta palabra es 0, un procesador puede
asignarle el valor de 1 y utilizar la estructura de datos. Si la palabra ya tiene el valor 1, el
procesador deberá aguardar a que el procesador que esté usando la estructura termine

76
asignando a la palabra nuevamente el valor de 0.
En la siguiente secuencia de pasos se muestra una situación en donde las cosas no
salen bien:
1. El procesador A lee la palabra xy observa que tiene un valor de 0 (ciclo 0 del bus).
2. El procesador B lee la palabra xy observa que tiene un valor de 0 (ciclo 1 del bus).
3. El procesador A escribe un 1 en la palabra x (ciclo 2 del bus).
4. El procesador B escribe un 1 en la palabra x (ciclo 3 del bus).

Si esta secuencia ocurriera, habría dos procesadores pensando cada uno al mismo
tiempo que tiene acceso exclusivo a la estructura de datos compartida, originando un caos.
Para prevenir esta situación, algunas CPU tienen una instrucción que lee una palabra de
memoria y si es 0 le da el valor de 1. El problema con dicha instrucción es que requiere de
dos ciclos del bus, uno para leer y otro para escribir. Existe una pequeña pero real
posibilidad de que un segundo procesador se meta entre la lectura y la escritura causando
estragos.
La solución a este problema es agregar una línea extra al bus, LOCK, que pueda
activarse al inicio de dicha instrucción. Una vez activada, no permite a ningún otro
procesador convertirse en maestro del bus hasta que sea desactivada. Esta regla permite al
procesador original la posibilidad de realizar múltiples ciclos del bus sin interferencia. En los
buses que no tienen esta característica, resulta difícil construir un sistema de multiproceso
que funcione de manera correcta.

Manejo de interrupciones

Hasta ahora sólo se han abordado los ciclos ordinarios del bus, con un maestro que lee
o escribe en un esclavo. Otro uso importante del bus es el manejo de interrupciones.
Cuando la CPU instruye a algún dispositivo de entrada/salida para que haga algo, por lo
general espera una interrupción cuando termine el trabajo. La señal de interrupción indica
que requiere del bus.

Aquí se presenta el mismo tipo de problemas que con los ciclos del bus ordinario, ya
que es posible que varios dispositivos quieran enviar una interrupción al mismo tiempo. La
solución usual es asignar prioridades a los dispositivos, y usar un árbitro centralizado para
dar prioridad a aquellos que tengan los tiempos más críticos. Existen en el mercado pastillas
estándar para el control de interrupciones y su uso está muy extendido. Las IBM-PC, PC/ AT
, PS/2 y todo sus clones (IBM-PC compatibles) usan una pastilla Intel 8259A como la que se
ilustra en la figura 3-38.
En las entradas de Solicitud de Interrupción (SIx) de la 8259A, se pueden conectar en
forma directa hasta 8 pastillas controladoras de entrada/salida. Cuando alguno de estos
dispositivos desea realizar una interrupción, activa su línea de entrada. Cuando una o más
de estas líneas está activa, la 8259A activa a su vez la señal INT (INTerrupción), la cual
maneja directamente la pata de interrupción de la CPU. Cuando esta última está en

77
disposición de manejar la interrupción, envía un impulso ala 8259A en INT A (INTerrupción
Recibida). En este punto, la pastilla controladora deberá especificar qué dispositivo causó la
interrupción, colocando el número de éste en el bus de datos. Entonces, para encontrar la
dirección del procedimiento a ejecutar para atender esa interrupción, el hardware de la CPU
utiliza dicho número como índice en una tabla de apuntadores denominados vectores de
interrupción.
Dentro de la 8259A existen diversos registros en los cuales puede leer o escribir la
CPU usando ciclos ordinarios del bus y las patas A0, RD (Lectura), WR (Escritura) y CS
(Selección de Pastilla). Una vez que el software ha manejado la interrupción y está listo
para la siguiente, escribe una clave especial en unos de estos registros, lo que provoca que
la 8259A desactive INTR, a menos que tenga otra interrupción pendiente también puede
escribirse en estos registros para cambiar el modo de operación de la 8259A, enmascarar
una serie de interrupciones o habilitar otras características.
Cuando existen más de 8 dispositivos de E/S se puede encadenar varias pastillas
8259A. En el caso más extremo, cada una de las 8 entradas se pueden conectar a las
salidas de 8 pastillas 8259A, permitiendo hasta 64 dispositivos de E/S en una red de
interrupciones de dos etapas. La 8259A tiene varias patas para controlar el
encadenamiento, las cuales se han omitido en la figura para mayor simplicidad.
Aunque de ninguna manera hemos agotado el tema de diseño del bus, el material
anterior debe proporcionar los elementos suficientes para entender las bases de como
funcionan y su interacción con los microprocesadores. En las obras de Borrill, 1985 y
Gustavson, 1984 puede encontrarse más información al respecto.
Ahora se pasará de lo general a lo particular y se verán algunos ejemplos de
microprocesadores actuales y sus buses.

78
CONCLUSIÓN

79
BOLILLA II (Parte 2): EL
NIVEL DE
MICROPROGRAMACIÓN

80
INDICE
INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38

81
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103

82
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179

83
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240

84
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296

85
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311

86
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

87
INTRODUCCIÓN

88
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

EL NIVEL DE MICROPROGRAMACIÓN
La frontera entre el hardware y el software no está bien definida y, además, varia
constantemente. Las primeras computadoras tenían instrucciones para hacer operaciones
aritméticas y booleanas, corrimientos, comparaciones, iteraciones y otras que eran
realizadas directamente por el hardware. Para cada instrucción había un circuito especifico
que la ejecutaba. En teoría al menos, se podía destornillar el panel trasero e identificar los
componentes electrónicos que realizaban la instrucción dividir, por ejemplo.
En una moderna computadora multinivel ya no es posible aislar los circuito de la
división porque no existen. Todas las instrucciones en el nivel de máquina convencional (por
ejemplo: aritméticas, booleanas, de miento, de comparación y de bucle) son realizadas
paso a paso por un intérprete que se ejecuta en el nivel de microprogramación. El
equivalente moderno de buscar los circuitos de la división es obtener un listado del
microprograma y examinar la porción que interpreta la instrucción de dividir .
Aunque los programas de cualquier nivel pueden ser ejecutados por un programa
intérprete que, a su vez, puede ser llevado a cabo por otro intérprete, esta jerarquía no
puede continuar indefinidamente. En el nivel inferior deberá haber una máquina física, con
circuitos integrados, fuentes de alimentación y otros objetos del hardware. Estos elementos
fueron el tema del capítulo precedente. En este capítulo estudiaremos cómo el
microprograma controla los componentes del hardware e interpreta el nivel de máquina
ordinaria (convencional). En el capítulo 8 se estudiará una clase de máquinas no
microprogramadas (las máquinas RlSC).
Como la arquitectura del nivel de microprogramación, denominada micro-
arquitectura, está definida por el hardware, suele ser primitiva y difícil de programar. Por
ejemplo, a menudo son importantes las consideraciones de tiempos. Esto llevó a Rocín
(1974) a definir la microprogramación como "el diseño de sistemas más o menos razonables
por medio de la interpretación sobre máquinas irracionales".
El nivel de microprogramación tiene una función específica: ejecutar intérpretes de
otras máquinas virtuales (más o menos razonables). El objetivo natural de diseño es la
obtención de una organización considerablemente optimizada para la extracción, examen y
ejecución de instrucciones del nivel de máquina convencional y, en algunos casos, de otras
más complejas. En este capítulo examinaremos los principios y soluciones intermedias que
hay que considerar en el diseño y organización de este nivel.
Empezaremos nuestro estudio del nivel de microprogramación revisando brevemente
los elementos básicos estudiados en el capítulo 3, ya que son parte de la arquitectura del
nivel de microprogramación y, por tanto, de interés para el microprogramador (persona que
escribe microprogramas, no un programador pequeño). Luego entraremos en el meollo del
tema, explicando de modo pormenorizado cómo pueden construirse instrucciones complejas
a partir de secuencias de instrucciones más primitivas. La explicación se apoyará en un
ejemplo desarrollado detalladamente. Después examinaremos los factores que deben
tenerse en cuenta al diseñar el nivel de microprogramación de una computadora, para
entender mejor por qué tiene determinada estructura. También se abordarán algunas
formas para mejorar el desempeño de la computadora. Por último, se examinará el nivel de
microprogramación de los dos ejemplos que se han venido usando, las familias lntel y
Motorola.

89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL
El trabajo del microprogramador es escribir programas que controlen los registros,
buses, unidades aritméticas y lógicas, memorias y otros componentes del hardware de las
máquinas. En el capítulo anterior estudiamos estos dispositivos; ahora simplemente vamos
a revisarlos para tenerlos presentes. Después del repaso diremos algunas cosas sobre las
diferentes formas conceptuales de encapsular los componentes.

Registros
Un registro es un dispositivo capaz de almacenar información. El nivel de
microprogramación siempre dispone de registros para guardar la información que se
necesita en el procesamiento de la instrucción en curso de interpretación.
Desde el punto de vista conceptual, los registros son lo mismo que la memoria
principal; la diferencia estriba en que los registros están ubicados en el procesador mismo
y, por tanto, se puede acceder a ellos en lectura y escritura más rápidamente que a la
memoria principal, la cual suele estar fuera del chip (pastilla). Normalmente, las máquinas
mayores y más caras tienen un número mayor de registros que las más pequeñas y
económicas; éstas tienen que usar la memoria principal para guardar los resultados
intermedios. En algunas computadoras el nivel de microprogramación dispone de un grupo
de registros numerados desde 0, 1, 2..., hasta n-1 , denominado memoria local o memoria
de anotaciones.
Un registro puede caracterizarse por un único número, es decir, por cuántos bits
puede guardar. La figura 4-1 muestra un registro de 16 bits con la convención de
numeración de bits usada en este libro. La información que se guarda en un registro
permanece en él hasta que otra la reemplaza. El proceso de leer la información de un
registro no afecta a su contenido. En otras palabras, cuando se lee un registro, lo que se
hace es una copia de su contenido, dejando inalterado el original.

Nº de bits 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0

Fig. 4-1. Un registro de 16 bits de información

Buses
Un bus es un conjunto de alambres que se usan para transmitir señales en paralelo.
Por ejemplo, los buses se utilizan para permitir que el contenido de un registro se copie en
otro. A diferencia de los buses del sistema que se estudiaron en el capítulo 3, éstos sólo
conectan dos dispositivos, de modo que no hay necesidad de líneas de direcciones o líneas
extensivas de control. Por ¡o general son suficientes las n líneas de datos y una o dos de
control. Se emplean buses, pues la transmisión paralela de todos los bits a la vez, es mucho
más rápida que la transmisión serial bit por bit.
Un bus puede ser unidireccional o bidireccional. Un bus unidireccional puede transferir
información en un solo sentido; en cambio uno bidireccional puede transferirla en los dos
sentidos, pero no simultáneamente. Los unidireccionales suelen usarse para conectar dos
registros, uno de los cuales siempre es fuente y el otro siempre destino. Los bidireccionales
suelen usarse cuando hay una colección de registros, cualquiera de los cuales puede ser
fuente o destino.
Muchos dispositivos tienen la posibilidad de conectarse y desconectarse eléctricamente
de los buses a los que están conectados físicamente. Estas conexiones pueden abrirse y
cerrarse en cuestión de nanosegundos. Un bus cuyos dispositivos tengan esta propiedad se
llama bus triestado, porque cada línea puede estar a O, a 1o desconectada. Suele utilizarse
cuando hay muchos dispositivos que pueden suministrar información aun bus.
En la mayoría de las micro arquitecturas algunos registros están conectados a uno o
más buses de entrada ya uno o más de salida. La figura 4-2(a) muestra un esquema de
un registro de 8 bits conectado a un bus de entrada ya otro de salida. El registro consta de
ocho flip-flops del tipo D conectados, cada uno de ellos, al bus de salida por medio de un

90
buffer no inversor. Cada uno contiene 1 bit. El registro tiene dos señales de control CK
(reloj, que realmente quiere decir "carga registro") y DE (permiso de Salida), conectadas
ambas a todos los flip-flops. Normalmente ambas señales se hallan en su estado de reposo,
pero a veces pueden ser activadas, causando alguna acción.
Cuando CK están desactivada, el contenido del registro no es afectado por las señales
del bus. En cambio, cuando se activa, el registro se carga con el contenido del bus de
entrada. Cuando DE está desactivada, el registro está desconectado del bus de salida y
desaparece respecto a los restantes registros conectados. Cuando DE está activo, el
contenido de registro pasa al bus de salida. Si otro registro, R, tuviera su entrada conectada
al bus de salida de nuestro registro, podría transferirse información de éste a R. Para
hacerlo, hay que activar DE y mantenerlo activo tanto tiempo como sea necesario para que
la salida al bus se estabilice. Después se debe activar la línea CK de R, con lo que éste se
carga con lo que hay en el bus. En el nivel de microprogramación son frecuentes estas
operaciones de conexión de un registro a un bus para que otro lo lea, como veremos en
seguida. He aquí un segundo ejemplo de registros y buses: la figura 4-2(b) muestra un
registro de 16 bits con dos buses de salida, cada uno de ellos controlado por una señal DE
diferente.

91
Multiplexores y decodificadores
Los circuitos que tienen una o más líneas de entrada y que calculan uno o varios
valores de salida determinados únicamente por las entradas actuales se llaman circuitos
combinacionales. Dos de los más importantes son los multiplexores y los decodificadores.
Un multiplexor tiene 2" entradas de datos (líneas individuales o buses), una salida de datos
de la misma anchura que la entrada y una entrada de control de n bits que selecciona una
de las entradas y la encamina a la salida. La figura 4-3(a) muestra un multiplexor con dos
buses de entrada. La señal de control de un bit selecciona A o B como salida. La figura 3-12
muestra el circuito de un multiplexor de 8 entradas.
El inverso del multiplexor es el demultiplexor, que encamina su única entrada a una de
sus 2" salidas, según el valor que tengan sus n líneas de control.
Otro circuito combinacional importante es el decodificador, que tiene n líneas de
entrada y 2" de salida, numeradas desde O hasta 2"-1. Si el número que hay en las líneas
de entrada es k, entonces se pone a 1 la salida k, permaneciendo las demás a O. Un
decodificador tiene siempre una y una sola salida al, estando a 0 las restantes. La figura 4-
3(b) ilustra simbólicamente un decodificador de 4 a 16. La figura 3-14 muestra el circuito
de un decodificador de 3 a 8.
El inverso del decodificador es el codificador, que tiene 2n entradas y n salidas. Sólo
puede haber una línea de entrada a 1 y su número, en binario, aparece en la salida.

Unidades aritméticas y lógicas y registros de corrimiento


Toda computadora necesita algún medio para hacer operaciones aritméticas. El
circuito más simple es un sumador, que toma dos entradas de n bits y produce su suma
como salida. Un circuito aritmético más general es la ALU (Unidad Aritmética y Lógica).
También tiene dos entradas y una salida de datos, pero además tiene algunas entradas y
salidas de control. La de la figura 4-4(a) tiene dos bits de función, F0 y F1 que determinan
qué función se ha de realizar. La ALU que vamos a usar en nuestro ejemplo puede calcular
A + B, AND B, A y A-. Las dos primeras no requieren explicación; la tercera simplemente
copia A en la salida; la cuarta obtiene A negando (todos sus bits invertidos). La tercera
función puede parecer inútil, pero veremos su utilidad después. La figura 3-20 muestra una
ALU de cuatro funciones que opera sobre datos de un bit. Replicando este circuito n veces y
conectando el acarreo del bit i al del i + 1, obtendremos una ALU de n bits que realice las
operaciones AND, OR, NOT y suma.
Una ALU también puede tener salidas de control. Salidas típicas son aquellas que se
ponen a 1 cuando la salida de la ALU es negativa o cero, cuando hay acarreo del bit más
significativo o cuando ha ocurrido un desbordamiento. El ejemplo de la figura 4-4(a) tiene
dos salidas de control: N, para indicar que la salida de la ALU es negativa y Z, que indica
que es cero. El bit N es simplemente una copia del más significativo de la salida, mientras
que el bit Z es el NOR de todos los bits de salida.
Aunque algunas ALU pueden realizar también operaciones de desplazamiento, la

92
mayoría de las veces es necesaria una unidad específica. Este circuito puede desplazar su
entrada un bit a la izquierda o a la derecha, o también no realizar ningún registro de
corrimiento. La figura 4-4(b) muestra el símbolo que utilizaremos para registros de
corrimiento; la figura 3-17 muestra el circuito de un desplazador algo más sencillo.

Relojes
Los circuitos de las computadoras funcionan normalmente al ritmo de un reloj,
dispositivo que emite una secuencia periódica de impulsos. Estos impulsos definen los ciclos
de máquina. Durante cada ciclo tiene lugar alguna actividad básica, como la ejecución de
una microinstrucción. A menudo es útil dividir los ciclos en sub ciclos, para que las partes de
una microinstrucción puedan realizarse en un orden bien definido. Por ejemplo, las entradas
en la ALU deben estar disponibles y estabilizadas antes de que pueda almacenarse su
salida.
La figura 4-5(a) simboliza un reloj de cuatro salidas. La de arriba es la salida
principal; las otras tres se derivan de ella al someterla a distintos retardos. La salida
principal [línea superior de la figura 4-5(b) tiene un ancho de un cuarto de ciclo. Las otras
tres están retrasadas uno, dos y tres veces el ancho del impulso. El resultado es un circuito
que divide cada ciclo en cuatro sub ciclos idénticos. Para más detalles, véase la figura 3-21.

El diseñador de computadoras puede hacer que cuatro transiciones diferentes tengan


lugar en cierto orden dentro de un ciclo activando cada una de ellas con el AND lógico de la
señal habilitadora y una línea de reloj distinta. Primero se disparará la transición asociada a
la línea principal de reloj, luego la que esté asociada a la línea de reloj de menor retardo y
así sucesivamente.

93
Memoria principal
Los procesadores deben ser capaces de leer y escribir en memoria. La mayoría de las
computadoras tienen un bus (conducto) de direcciones, otro de datos y otro de control para
la comunicación entre la CPU y la memoria. Para leer de la memoria, la CPU pone una
dirección en el bus de direcciones y ajusta adecuadamente las señales de control; por
ejemplo, activando la señal RD (lectura). Luego, la memoria pone el dato pedido en el bus
de datos. En algunas. computadoras la lectura y la escritura en memoria son síncronas; es
decir, la memoria debe responder dentro de un plazo fijo. En otras puede tomarse el tiempo
que quiera, señalizando por medio de una línea de control la presencia de datos cuando
termine.
Las escrituras en memoria se hacen en forma parecida. La CPU pone en el bus de
datos el dato a escribir y en el bus de direcciones la dirección donde se quiere guardar,
activando después WR (escritura). Una alternativa de tener las señales RD y WR sería tener
una señal MREQ, de petición a la memoria y otra RW , que distinga entre la lectura y la
escritura.
U n acceso a memoria es siempre considerablemente más largo que el que se necesita
para ejecutar una sola microinstrucción. En consecuencia, el microprograma debe mantener
los valores correctos en los buses de datos y direcciones durante varias microinstrucciones.
Para simplificar esta tarea, a menudo es conveniente tener dos registros, el MAR (Registro
de Dirección de Memoria) y el MBR (Registro de Intercambio de Memoria), a los que se
conectan los buses de direcciones y de datos, respectivamente. En este libro conviene
disponer los buses como se indica en la figura 4-6. Ambos registros se colocan entre la
CPU y el bus del sistema. El bus de direcciones es unidireccional en ambos lados y se carga
desde el lado de la CPU, activando la línea de control. Las líneas-del bus de direcciones del
sistema siempre están permitidas [o, posiblemente, sólo durante las lecturas y las
escrituras, lo que requiere una línea de permiso de salida conectada al OR lógico de RD y
WR (no mostrada en la figura)]. La línea de control del MBR hace que los datos se carguen
del bus "Entrada de datos", en el lado de la CPU. El bus "Salida de datos" está siempre
permitido.
El bus de datos del sistema es bidireccional, sacando el contenido del MBR cuando WR
está activa y cargándolo cuando se activa RD.

94
Encapsulado de los componentes
En las secciones precedentes hemos descrito varios circuitos que pueden combinarse
para formar una computadora. Se hallan disponibles en el comercio en formas
conceptualmente distintas. La más simple es la combinación en circuitos MSI (Integrados a
Escala Media), con componentes como un registro, una ALU, un registro de corrimiento,
etc., cada uno en una pastilla. Este método se encuentra en la figura 4-7(a). Debido ala
gran variedad de chips rápidos y de bajo precio disponibles en el mercado, muchas
computadoras se construyen conectando este tipo de componentes.
El principal inconveniente de construir computadoras con componentes MSI es el gran
número de componentes necesarios, que ocupan numerosas tarjetas de circuito impreso,
consumen mucha energía y disipan abundante calor . Otra técnica es usar pastillas de
rebanada de 1 bit. Cada pastilla de rodaja de bit tiene, por ejemplo, 1 bit de registros, ALU
y otros componentes. La figura 3-20 muestra el aspecto interno que presenta una rodaja de
ALU de 1 bit. Podríamos fácilmente extender su diseño para añadirle, por ejemplo, 16
registros de 1 bit, un registro de corrimiento de 1 bit y otros componentes de 1 bit de
ancho.
Tomando, por ejemplo, 32 de esas pastillas y poniéndolas una al lado de otra,
obtendríamos una máquina con 32 registros, una ALU, un registro de corrimiento, etc.,
todos de 32 bits.
En esta forma podríamos construir una máquina de 16 bits con solo 16 pastillas. Las
rebanadas de bit dan al diseñador la posibilidad de construir fácilmente una máquina de
cualquier longitud de palabra. También hay pastillas con rebanadas de 2 o 4 bits. La figura
4-7(b) muestra una máquina de 8 bits construida con 4 rebanadas de 2 bits. En general, la
utilización de rebanadas requiere menos pastillas y mucho menos tiempo de diseño que la
de circuito M SI, pero normalmente produce máquinas más lentas.
Una tercera forma de combinar los componentes consiste en poner el procesador
completo en una pastilla [véase la figura 4-7(c)]. A pesar de que reduce de modo
extraordinario el número de pastillas (a una sola), adolece de desventajas. Primero, la
tecnología necesaria para integrar un gran número de componentes en una pastilla es
diferente de la utilizada en los circuitos integrados de tipo MSI o en los de rebanada de 1 bit
y suele producir máquinas más lentas. Además, las técnicas de diseño y fabricación son
extraordinariamente complicadas y costosas. Por el contrario, cualquier competente
ingeniero en electrónica puede diseñar una computadora sencilla con pastillas MSI o de
rebanada de 1 bit sin demasiados problemas. Desde el punto de vista del fabricante, que
espera construir computadoras durante años, quizá merezca la pena dominar las
tecnologías necesarias para hacer procesadores en una pastilla. Sin embargo, seguramente
no le interesará a una empresa que necesite sólo una máquina de propósito específico. Así
pues, las opciones son: utilizar un procesador disponible en el comercio, contratar una
compañía especializada en el diseño y fabricación de una pastilla de propósito específico, o
construir el procesador con componentes M SI o de rodajas de bit.

95
UNA MICROARQUITECTURA TIPICA
Una vez estudiados todos los componentes básicos con los que se construye el nivel
de microprogramación, es el momento de ver cómo se interconectan. Como los principios
generales en esta área son pocos y dispersos, abordaremos el tema por medio de un
ejemplo detallado.

La ruta de datos
La ruta de datos es la parte de la CPU que contiene ala ALU, sus entradas y sus
salidas. La de nuestro ejemplo se muestra en la figura 4-8. Contiene 16 registros idénticos
de 16 bits, rotulados PC, AC, SP, etc. , que forman una memoria de anotaciones accesibles
solamente al nivel de microprogramación. Los registros rotulados O, + 1 y -1 se usarán
para guardar las constantes indicadas. En nuestros ejemplos sencillos el 0 nunca se usa,
pero probablemente se necesitará en una máquina más complicada; de todos modos los
hemos incluido porque disponíamos de más registros que los que podíamos utilizar. Los
restantes tienen nombre que explicaremos más adelante. Cada registro puede sacar su
contenido a uno de los buses A o B o a ambos y tomarlo de un tercero, C, como se muestra
en la figura.

96
Los buses A y B alimentan una ALU de 16 bits que puede realizar cuatro funciones: A
+ B, A AND B, A y NOT A. Las dos líneas de control de la ALU, F 0 y F1, especifican la función
que se va a realizar. La ALU genera dos bits de estado derivados de su salida: N, que se
pone al cuando la salida de la ALU es negativa, y Z, que se pone al cuando dicha salida es
cero.
La salida de la ALU pasa por un registro de corrimiento que puede desplazarla un bit a
la izquierda o a la derecha, o bien no realizar ningún desplazamiento. Es posible desplazar
un registro, R, 2 bits a la izquierda, calculando R + R en la ALU y desplazando la suma un
bit más en el registro de corrimiento.
Ni el bus A ni el B están conectados directamente a ALU, sino que hay un par de
registros buffer (tampón) intermedios. Estos se necesitan porque la ALU es un circuito

97
combinacional, es decir, calcula continuamente la salida en función de las entradas y el
código de función. Si no los hubiera, habría problemas cuando se calcule, por ejemplo, A: =
A + B. A medida que A fuera cargándose, el valor del bus A empezaría a cambiar, lo que
haría que la salida de ALU y, por tanto, el bus C cambiaran también. En consecuencia se
guardaría un valor incorrecto en A. En otras palabras, en la asignación A: = A + B, el A del
lado derecho debe ser el valor original que A, no una extraña mezcla de bits del valor
anterior y reciente. Insertando registros buffer en los. buses A y B, podemos congelar los
valores originales de A y B al principio del ciclo, de modo que ALU se aislé de los cambios en
los buses a medida que el nuevo valor se vaya guardando en la memoria de anotaciones. La
carga de estos buffers está controlada por L0 y L1.
Vale la pena señalar que la solución (v .g. , insertar biestables al frente de la ALU) no
es la única. Si en vez de biestables, todos los registros son del tipo flip-flop, entonces es
también posible un desempeño de dos buses, cargando los operandos al inicio del ciclo en
los buses A y B y leyendo el resultado en uno de éstos más adelante en el ciclo. Los
intercambios entre los diseños de dos y tres buses abarcan complejidad, paralelismo y
cantidad de alambrado. Un tratamiento más detallado de estos aspectos está más allá del
alcance de este libro.
Para la comunicación con la memoria, hemos incluido en la micro arquitectura un MAR
y un MBR. El MAR puede cargarse a partir del registro de B, en paralelo con una operación
de la ALU. La línea M0 controla la carga del MAR. En las escrituras se puede cargar el MBR
con la salida del registro de corrimiento, en paralelo con el almacenamiento en la memoria
de anotaciones o en lugar de él M1 controla la carga del MBR a partir de la salida del registro
de corrimiento M2 y M3 controlan las lecturas y escrituras de memoria. En las primeras, los
datos leídos de la memoria pueden presentarse en la entrada izquierda de la ALU a través
del multiplexor A, representado en la figura 4-8 por Amux. La línea de control A0 determina
si el biestable A o el MBR se alimentan en la ALU. La micro arquitectura de la figura 4-8 es
similar ala de muchos de los circuitos comerciales de rebanadas de 1 bit disponibles.

Microinstrucciones
Para controlar la trayectoria de datos de la figura 4-8 se requiere de 61 señales. De
acuerdo a sus funciones, éstas se pueden dividir en nueve grupos que a continuación se
describen.
• 16 para controlar la carga del bus A a partir de registros internos.
• 16 para controlar la carga del bus B a partir de registros internos.
• 16 para controlar la carga de la memoria de anotaciones a partir del bus
C.
• 2 para controlar los registros de A y B. 2 para controlar la función de la
ALU.
• 2 para controlar al registro de corrimiento. 4 para controlar el MAR y el
MBR.
• 2 para indicar una lectura o una escritura en memoria.
• 1 para controlar el Amux.

Con los valores de las 61 señales podemos realizar un ciclo de nuestra ruta de datos.
Un ciclo consiste en vaciar los valores en los buses A y B, almacenarlos temporalmente en
los registros de A y B, en pasarlos a través de la ALU y el registro de corrimientos y en
almacenar el resultado en la memoria interna y en el MBR o en ambos. Además, puede
cargarse el MAR e iniciarse un ciclo de memoria. Como primera aproximación, podríamos
tener un registro de control de 61 bits, cada uno de ellos, para una señal de control. Un bit
a 1 significa que la señal está activada y uno a O que no lo está.
Sin embargo, podemos reducir en mucho el número de bits que necesitan para
controlar la ruta de datos, al precio de un pequeño incremento en la circuitería. Para
empezar, tenemos 16 bits para controlar la entrada al bus A, lo que permite 216
combinaciones de los registros. Desafortunadamente, sólo están permitidas 16: cada uno de
los 16 registros, excluyendo los demás. Por tanto, podemos codificar la información del bus
A en 4 bits y utilizar un decodificador para generar las 16 señales de control. Lo mismo vale
para el bus B.

98
Esta situación es algo diferente en el bus C. En principio, es posible tener
almacenamientos múltiples en la memoria de anotaciones, pero esta práctica es casi
siempre inútil y la mayoría de las máquinas no la permiten. Así pues, también podremos
codificar el control del bus C con 4 bits. Habiendo ahorrado 3 x 12 = 36 bits, necesitamos
ahora sólo 25 bits de control para activar la ruta de datos, L 0 y L1 siempre se necesitan en
un momento determinado del ciclo de máquina, por lo que puede activarlos el reloj,
quedando 23 bits de control. Una señal adicional, no estrictamente necesaria pero a
menudo útil, es aquella que permite o inhibe el almacenamiento del bus C en la memoria
interna. En algunas situaciones sólo interesa generar las señales N y Z, pero no se desea
almacenar el resultado. Con este bit adicional que llamaremos ENC (habilita C), podemos
indicar que se almacene el bus C (ENC = 1) o no (ENC = O).
En este momento estamos en condiciones de controlar la ruta de datos con 24 bits.
Notamos ahora que RD puede usarse para cargar el MBR con el bus de datos del sistema y
WR para permitir la salida del MBR al mismo bus. Esta observación reduce a 22 el número
de señales de control independientes.

El siguiente paso en el diseño de la micro arquitectura es inventar un formato de


microinstrucción que contenga 22 bits. La figura 4-9 muestra uno de los posibles, con dos
campos adicionales, COND y ADDR, que se describirán en seguida. La microinstrucción
contiene 13 campos, 11 de los cuales son:
AMUX - Controla la entrada izquierda ala ALU: O; tampón de A, 1 = MBR.
ALU –Función de la ALU: O=A+B, 1=A AND B, 2=A, 3= A.
SH - Función del registro de corrimiento: O = nada, 1 = a la derecha, 2 = a la
izquierda.
MBR - Carga del MBR a partir del registro de corrimiento: O = no carga, 1 = carga.
MAR - Carga del MAR a partir del registro de B: O = no carga, 1= carga.
RD - Petición de lectura de memoria: O = no pide, 1 = carga el MBR de memoria.
WR - Petición de escritura en memoria: O = no pide, 1 = escribe el MBR en
memoria.
ENC - Control de almacenamiento en registros de memoria interna: O = no
almacena, 1 = almacena.
C - Selecciona el registro dónde almacenar si ENC = 1: O = PC, 1 = AC, etc.
B - Selecciona la fuente del bus B: O = PC, 1 = AC, etc.
A - Selecciona la fuente del bus A: O = PC, 1 = AC, etc.

El orden de los campos es completamente arbitrario. Se ha elegido el orden que


minimice el cruce de líneas en una figura que hay más adelante. (Este criterio no es tan
disparatado como parece; los cruces de líneas suelen corresponder- se con cruces de
conexiones en circuitos impresos o integrados, lo que causa problemas en diseños
bidimensionales.)

99
Cronología de las microinstrucciones
Aunque nuestra exposición de la forma en que una microinstrucción puede controlar la
ruta de datos durante un ciclo es casi completa, hemos olvidado un asunto importante: la
cronología. Un ciclo básico de ALU consiste en cargar los registros A y E, darle tiempo ala
ALU para realizar su trabajo y almacenar entonces el resultado. Es evidente que estos
sucesos deben tener lugar en esa secuencia. Si intentáramos almacenar el bus C en la
memoria de anotaciones antes de cargar los registros A y E, se guardaría basura en lugar
de datos útiles. Para obtener la secuencia correcta, introducimos un reloj de cuatro fases, es
decir, con cuatro sub ciclos, como el de la figura 4-5. He aquí los eventos clave durante
cada uno de los sub ciclos:
• Carga la siguiente microinstrucción a ejecutarse en un registro denominado MIR
(Registro de Microinstrucción).
• Salida del contenido de los registros a los buses A y E, y su captura por los
registros A y E.
• Cuando las entradas de la ALU están estabilizadas, hay que dar tiempo ala ALU y
al registro de corrimiento para que produzcan una salida estable y cargar el MAR
si es necesario.
• Ahora que la salida del registro de corrimiento está estabilizada, se almacena el
bus C en la memoria de anotaciones y en el MER si es necesario.

La figura 4-10 es un diagrama de bloques detallado de la micro arquitectura de


nuestra máquina completa. Puede parecer impresionante a primera vista, pero merece la
pena estudiarla en detalle. Cuando el lector entienda completamente cada bloque y cada
línea, podrá avanzar en la comprensión total del nivel de microprogramación. El diagrama
de bloques tiene dos partes: la ruta de datos, a la izquierda, que ya estudiamos de modo
pormenorizado, y la sección de control, de la que trataremos ahora.

100
La parte más voluminosa e importante de la porción de control de la máquina es la
memoria de control. Es donde se guardan las microinstrucciones. En algunas máquinas es
una memoria de lectura solamente, en otras es de lectura y escritura. En nuestro ejemplo
las microinstrucciones serán de 32 bits y el espacio de direcciones de microinstrucción
constará de 256 palabras, por lo que la memoria de control ocupará un máximo de 256 x 32
= 8192 bits.
Como cualquier otra memoria, la de control necesita un MAR y un MBR. Llamaremos al
MAR el M PC (Contador de Microprograma), porque su única función es señalar la siguiente
instrucción que va a ejecutarse. El MBR será el MIR ya mencionado. Es importante darse
cuenta de que la memoria de control y la principal son completamente diferentes, teniendo
la primera el microprograma y la última el programa en nivel de máquina convencional.
En la figura 4-10 se observa que la memoria de control intenta continuamente copiar
la microinstrucción direccionada por el M PC al MIR. Sin embargo, el MIR solamente se
carga durante el primer sub ciclo, como indica la línea de trazos que lo conecta con el reloj.
Durante los otros tres sub ciclos no se altera, independientemente de lo que le suceda al
MPC.
Durante el segundo sub ciclo, el MIR se encuentra estabilizado y sus campos empiezan
a controlar la ruta de datos. En particular, los campos A y B hacen que los datos salgan a
los buses A y B. Los bloques "Decodificador de A " y "Decodificador de B" del diagrama
proporcionan la decodificación de 4 a 16 de cada campo, necesaria para activar las líneas
SAL1 y SAL2 de los registros [véase figura 4-2(b)]. El reloj activa los registros de A y de B
durante este sub- ciclo, proporcionando entradas estables a la ALU durante el resto del

101
ciclo. Mientras los datos salen a los buses A y B, la unidad de "Incremento" de la sección de
control calcula M PC + 1, en preparación de la carga de la siguiente microinstrucción en
secuencia, durante el ciclo siguiente. La ejecución de instrucciones se puede acelerar
traslapando estas dos operaciones.
En el tercer sub ciclo se les da a la ALU y al desplazador tiempo suficiente para que
produzcan resultados válidos. El campo de microinstrucción AMUX determina la entrada
izquierda a la ALU; la entrada derecha es siempre el tampón de B. Aunque la ALU es un
circuito combinacional, el tiempo que emplea en calcular la suma está determinado por el
tiempo de propagación de los acarreos, no por el retraso normal de las puertas. Mientras la
ALU y el desplazador están calculando, el MAR se carga con el contenido del bus B, si el
campo MAR de la microinstrucción está a 1.
Durante el cuarto y último sub ciclo, el bus C se puede almacenar en la memoria de
anotaciones y en el MBR, según los campos ENC y MBR. La caja rotulada "Decodificador de
C" toma ENC, la cuarta línea de reloj y el campo C de la microinstrucción como entrada y
genera las 16 señales de control. En su interior realiza una decodificación de 4 a 16 del
campo C y entonces hace el y lógico de sus salidas con el resultado de hacer el y lógico del
sub ciclo 4 con ENC. Por tanto, sólo se carga un registro de anotaciones si:
1. ENC= 1.
2. Es el sub ciclo 4.
3. El campo C selecciona el registro.

El MBR también se carga durante el cuarto sub ciclo si MBR=I.


Las dos señales que controlan la memoria, RD y WR, están activas mientras estén
presentes en el MIR. En efecto, los campos correspondientes del MIR actúan como si fueran
biestables.

Secuenciamiento de las microinstrucciones


Lo único que nos queda por ver es cómo se elige la siguiente microinstrucción. Aunque
la mayoría de las veces basta extraer la siguiente microinstrucción en secuencia, se necesita
algún mecanismo que permita saltos condicionales en el microprograma para tomar
decisiones. Por esta razón dotamos a cada microinstrucción de dos campos adicionales:
ADDR, que es la dirección de un sucesor potencial de la microinstrucción en curso, y COND,
que determina si la siguiente microinstrucción se extrae de M PC + 1 o de ADDR. Cada
microinstrucción contiene potencialmente un salto condicional. Se ha tomado esta decisión
porque los saltos condicionales son muy comunes en los microprogramas y, al permitir que
toda microinstrucción tenga dos posibles sucesores, los microprogramas se ejecutan más
rápido que si se tuviera que ajustar alguna condición en una microinstrucción y examinarla
en la siguiente. La mayoría de las arquitecturas usan esta estrategia de una forma u otra.
La elección de la siguiente microinstrucción la realiza la caja rotulada "Lógica de
Microsecuenciamiento" durante el sub ciclo de 4, cuando las salidas de la ALU N y Z son
válidas. La salida de esta caja controla el multiplexor M (Mmux), que encamina M PC + 1 o
ADDR al M PC, que determinará cuál será la siguiente microinstrucción a extraer. Hemos
proporcionado al microprogramador cuatro alternativas posibles ajustando COND como
sigue:
0 = No saltar; la siguiente microinstrucción se toma de M PC + 1.
1 = Saltar a ADDR si N= 1.
2 = Saltar a ADDR si Z = 1.
3 = Saltar a ADDR incondicionalmente.

La lógica de microsecuenciamiento combina los dos bits de la ALU, N y Z, y los dos


bits de COND para generar la salida. Llamando a éstos 1 y D (izquierdo y derecho), la señal
correcta será.
Mmux = IDN + IDZ + ID = DN + IZ + ID

Donde + significa O INCLUSIVO. Expresado con palabras, la señal de control a Mmux


es 1 (encaminando ADDR al M PC) si ID es 012 y N= 1, si ID es 102 y Z = 1, o si ID es 112.
En caso contrario es 0 y se extrae la siguiente microinstrucción en secuencia. El circuito que

102
calcule la señal puede construirse con componentes SSI, como en la figura 3-3(b), o ser
parte de una PLA, como en la figura 3-16.
Para que nuestro ejemplo de máquina sea más realista, supondremos que un ciclo de
memoria principal dura más que una microinstrucción. En particular, si esta última
comienza una lectura de memoria poniendo RD al, también debe tener RD = 1 en la
siguiente que ejecute (que puede estar o no en la posición siguiente de la memoria de
control) .El dato no estará disponible hasta que hayan transcurrido dos microinstrucciones
después de iniciar la lectura. Si el microprograma no tuviera nada que hacer, deberá tener
sólo RD = 1, y se desperdiciará para cualquier trabajo útil. Del mismo modo una escritura
en memoria también requerirá dos microinstrucciones para completarse.

UNA MACROARQUITECTURA TIPICA


Para continuar nuestro ejemplo del nivel de microprogramación, pasaremos ahora a la
arquitectura del nivel de máquina convencional que deberá ser soportado por el intérprete
que se ejecute en la máquina de la figura 4-10. Por conveniencia, llamaremos macro
arquitectura a la arquitectura del nivel 2 o del3, y así distinguirla de la arquitectura del nivel
1 o micro arquitectura. (Para los propósitos de este capítulo, ignoraremos el nivel 3, ya que
sus instrucciones son en gran parte las del nivel 2 y sus diferencias no tienen importancia
aquí.) De modo similar, a las instrucciones del nivel 2 las llamaremos macroinstrucciones.
Así, durante este capítulo, llamaremos macroinstrucciones a las instrucciones normales del
nivel de máquina convencional, como ADD, MOVE, etc. (La razón por la que repetimos esto
es que algunos ensambladores proporcionan la posibilidad de definir “macros”, en
ensamblador, que no tiene nada que ver con lo que aquí entendemos como
macroinstrucciones.) Algunas veces nos referiremos a nuestro ejemplo de máquina de nivel
1 como Mic-1 ya la de nivel 2 que soporta como Mac-1. Antes de describir la Mac-1, vamos
a divagar un poco para motivar el diseño.

Pilas
Una macro arquitectura moderna debería diseñarse teniendo presentes las
necesidades de los lenguajes de alto nivel. Uno de los aspectos más importantes del diseño
es el direccionamiento. Para ilustrar el problema que vamos a resolver, consideremos el
programa Pascal de la figura 4-11(a). El programa principal inicializa dos vectores, x e y,
con valores tales que XK = k e YK = 2k + 1. Luego calcula su producto interno (también
llamado producto escalar). Siempre que necesite multiplicar dos números enteros, llama a
la función mulp. (Supóngase que el compilador es para una microcomputadora y sólo
realizará un subconjunto del Pascal que no incluye el operador de multiplicación.)

103
Los lenguajes con estructura de bloques, como el Pascal, suelen realizarse de modo
que, al salir de un procedimiento o función, se libere la memoria usada por las variables
locales. La forma más sencilla de hacerlo consiste en utilizar una estructura de datos
llamada pila. Una pila consta de bloque de memoria contigua, que contiene ciertos datos, y
de un apuntador a la pila (SP), que dice dónde está la cima de ese bloque. La base de la
pila está en una dirección fija que no interesa en adelante. La figura 4-12(a) ilustra una
pila que ocupa seis palabras de memoria. La base de la pila está en la dirección 4020 y la
cima, donde apunta SP, está en la 4015. Nuestras pilas crecerán desde1as direcciones altas
de memoria a las bajas, pero la otra alternativa también es buena.
Se definen varias operaciones en las pilas. Las dos más importantes son PUSH X y POP
y (desapila Y), PUSH avanza el apuntador de pila (decrementándolo en nuestro ejemplo) y
luego pone X en la posición de memoria a la que ahora apunta SP. PUSH incrementa el
tamaño de la pila en un elemento, POP Y, por el contrario, reduce el tamaño de la pila

104
guardando el último elemento en Y, eliminándolo de ella incrementando la dirección del
apuntador de pila. La figura 4-12(b) muestra el aspecto de la pila de la figura 4-12(a)
después de haber apilado una palabra que contiene un 5.

Otra operación que puede realizarse en una pila es avanzar el apuntador de pila sin
apilar ningún dato. Esto suele hacerse cuando se entra en un procedimiento o función, para
reservar espacio a las variables locales. La figura 4-13(a) muestra la asignación de
memoria durante la ejecución del programa principal de la figura 4-11. Hemos supuesto
arbitrariamente que la memoria consta de 4096 palabras de 16 bits y que las posiciones
desde la 4021 a la 4092 están utilizadas por el sistema operativo y, por tanto, no se pueden
usar para guardar variables, la variable k del programa Pascal se guarda en la dirección
4020 (todas las direcciones en decimal). El vector x requiere 20 palabras, de la 4000 ala
4019. El vector y empieza en la 3980 para y[l] y se extiende ala 3999 para y[20]. Mientras

105
el programa principal se ejecuta fuera de mulp, SP tiene el valor 3980, con lo cual indica
que esta dirección es la última de la pila.
Cuando el programa principal quiere llamar a mulp, primero apila los parámetros de la
llamada, 2yk;y luego ejecuta la instrucción de llamada, que apila la dirección de retorno, de
manera que mulp sepa dónde volver cuando termine. Cuando empieza mulp, SP tiene 3977.
Lo primero que hace es avanzar el apuntador de pila en 2 unidades, para reservar dos
palabras para sus variables locales, p y j. En este punto SP vale 3975, como muestra la
figura 4-13(b). Las cinco palabras de la cima de la pila constituyen la parte de pila
utilizada por mulp y se liberarán cuando termine. Las palabras 3979 y 3978 están rotuladas
como a y b, ya que son los nombres de los parámetros formales de mulp, pero, por
supuesto, contienen 2 y k respectivamente.

Cuando se haya terminado mulp y se haya llamado a interno, la configuración de la


pila será la mostrada en la figura 4-13(c). Cuando interno llame a mulp, la pila estará
como muestra la figura 4-13(d). Ahora nos encontramos con el problema: ¿qué código
generará el compilador para accesar a los parámetros de mulp ya sus variables locales? Si
intentara leer p usando una instrucción semejante a MOVE 3976,DONDE, mulp funcionaría
cuando se le llama desde el programa principal, pero no cuando se le llamara desde interno.
De manera similar, MOVE 3971,DONDE funcionará cuando se le llame desde in- terno, pero
no desde el programa principal. Lo que se necesita realmente es alguna forma de decir
"extrae la palabra que esté una dirección por encima del apuntador de pila". En otras
palabras, el Mac-1 necesita un modo de direccionamiento que extraiga o almacene una
palabra situada a una distancia conocida del apuntador de pila (o algún modo de
direccionamiento equivalente).

106
El juego de macroinstrucciones
Con este modo de direccionamiento en mente, ahora estamos listos para examinar la
arquitectura del Mac-1. Básicamente, consta de una memoria de 4096 palabras de 16 bits y
tres registros visibles al programador de nivel 2. Los registros son el contador del
programa, PC, el apuntador de pila, SP, y el acumulador, AC, que se usa para mover datos,
hacer aritmética y otros propósitos. Hay disponibles tres modos de direccionamiento:
directo, indirecto y local. Las instrucciones que usan direccionamiento directo contienen, en
sus 12 bits menos significativos, una dirección absoluta de memoria. Estas instrucciones son
útiles para accesar a las variables globales, como x en la figura 4-11. El direccionamiento
indirecto permite que el programador calcule una dirección de memoria, la ponga en AC y
lea o escriba la palabra direccionada. Esta forma de direccionamiento es muy general y se

107
utiliza para accesar a elementos de un vector, entre otras cosas. El direccionamiento local
especifica un desplazamiento respecto al SP y se utiliza para accesar a las variables locales,
como ya hemos visto. Estos tres modos combinados proporcionan un sistema de
direccionamiento simple pero adecuado. La figura 4-14 muestra el juego de instrucciones
del Mac-1. Cada instrucción contiene un código ya veces una dirección de memoria o una
constante. La primera columna de la codificación binaria de la instrucción; la segunda da su
nombre nemotécnico en lenguaje ensamblador; la tercera tiene su nombre completo, y la
cuarta describe la que hace mediante un fragmento en Pascal. En esos fragmentos m[x]
significa la palabra de memoria x. Así, LODD carga el acumulador con la palabra de
memoria especificada por sus 12 bits menos significativos. Su direccionamiento es, por
tanto, directo, mientras que el de LODL; que carga el acumulador con la palabra situada a
una distancia x por encima de SP, es local. LODD, STOD, ADDD y SUBD realizan las cuatro
operaciones básicas usando direccionamiento directo: LODL, STOL, ADDL y SUBL las
realizan con direccionamiento local.

Binario Nemotécnico Instrucción Significado


0000xxxxxxxxxxxx LODD Carga directa ac: =m[x]
0001xxxxxxxxxxxx STOD Almacena m [x]:= ac
directo
0010xxxxxxxxxxxx ADDD Suma directo ac:=ac + m[x]
0011xxxxxxxxxxxx SUBD Resta directo ac:=ac - m[x]
0100xxxxxxxxxxxx JPOS Salta si if ac ≥ 0 then pc:=x
positivo
0101xxxxxxxxxxxx JZER Salta si cero if ac = 0 then pc:=x
0110xxxxxxxxxxxx JUMP Salta pc:=x
0111xxxxxxxxxxxx LOCO Carga ac:=x(0 ≥ x ≥ 4095)
constante
1000xxxxxxxxxxxx LODL Varga local ac:=m[sp + x]
1001xxxxxxxxxxxx STOL Almacena local m[x + sp]: =ac
1010xxxxxxxxxxxx SAL Suma local ac:=ac + m[sp + x]
1011xxxxxxxxxxxx SUBL Resta local ac:=ac - m[sp - x]
1100xxxxxxxxxxxx JNEG Salta si if ac < 0 then pc:=x
negativo
1101xxxxxxxxxxxx JNZR Salta si no if ac ≠ 0 then pc:=x
cero
1110xxxxxxxxxxxx CALL Llama a sp:=sp – 1;
proced m[sp]:=pc; pc=x
1111000000000000 PSHI Apila indirecto sp:=sp – 1;
m[sp]:=m[ac]
1111001000000000 POPI Dasapila m[ac]:= m[sp]; sp:=sp
indirecto +1
1111010000000000 PUSH Apila sp:=sp – 1; m[sp]:=ac
1111011000000000 POP Desapila ac:=m[sp]; sp:=sp + 1
1111100000000000 RETN Retorno pc:=m[sp];sp:=sp+1
1111101000000000 SWAP Intercambia ac tmp:=ac; ac:=sp;
y sp sp:=tmp
11111100yyyyyyyy INSP Incrementa sp sp:=sp + y (0 ≤ y ≤
255)
11111110yyyyyyyy DESP Decrementa sp:=sp - y (0 ≤ y ≤

108
sp 255)

xxxxxxxxxxxx es una dirección de máquina de 12 bits; en la columna 4 se


llama x.
Yyyyyyyy es una constante de 8 bits; en la columna 4 se llama y

Fig. 4-14. El conjunto de instrucciones del Mac-1

Hay cinco instrucciones de salto, una incondicional (JUMP) y cuatro condicionales


(JPOS, JZER, JNEG y JNZE). JUMP siempre copia los 12 bits menos significativos al contador
de programa, mientras que las otras cuatro sólo la hacen si se cumple la condición
especificada.
LOCO carga en AC una constante de 12 bits en el rango de O a 4095 (inclusive). PSHI
apila la palabra cuya dirección está en AC. La operación inversa es POPI, que desapila una
palabra y la guarda en la posición de memoria direccionada por AC, PUSH y POP sirven para
manipular la pila de diversas maneras. SW AP intercambia los contenidos de AC y SP, la que
es útil cuando hay que incrementar o decrementar SP en una cantidad desconocida en
tiempo de compilación. También resulta útil inicializar SP al principio de la ejecución. Las
instrucciones INSP y DESP se utilizan para aumentar o disminuir SP en cantidades conocidas
al momento de la compilación. Debido a la falta de espacio de codificación, los
desplazamientos se han limitado a 8 bits. Por último, la instrucción CALL se usa para llamar
a un procedimiento, guardando la dirección de retorno en la pila y RETN regresa de un
procedimiento, desapilando la dirección de retorno y almacenándola en el registro PC.
Hasta ahora, la máquina no tiene instrucciones de entrada / salida, ni se le agregarán,
pues no las necesita. En su lugar usa E/S por memoria. Una lectura de la dirección 4092
dará una palabra de 16 bits con el siguiente carácter ASCII del dispositivo normal de
entrada en los 7 bits menos significativos y ceros en los 9 más significativos. Cuando haya
un carácter disponible en la 4092, se pondrá a 1 el bit más significativo del registro de
estado de la entrada, con dirección 4093. La lectura de la dirección 4092 pone a cero la
4093. La rutina de entrada estará normalmente en una pequeña iteración de espera a que
la 4093 se haga negativa. Cuando suceda, cargará el contenido de la 4092 y regresará.
La salida se realizará en forma similar. Una escritura en la 4094 tomará los 7 bits
menos significativos de la palabra escrita y los copiará en el dispositivo normal de salida. El
bit más significativo del registro de estado de la salida, de dirección 4095, se borrará,
volviéndose a poner a 1 cuando el dispositivo de salida esté listo para recibir un nuevo
carácter. Los dispositivos normales de entrada y salida pueden ser un teclado y una
pantalla, una lectora de tarjetas y una impresora o alguna otra combinación.
Un ejemplo de cómo se programa con este juego de instrucciones se observa en la
figura 4-11(b), que es el programa de la figura 4-11(a), compilado a lenguaje
ensamblador por un compilador que no hace ninguna optimización, ya que un código
optimizado dificultaría el seguimiento del ejemplo: Los números 0 a 19 en los comentarios,
identificados por una barra inclinada en el lenguaje ensamblador, ayudan a ver las partes
que se corresponden de las dos mitades de la figura, OUTNUM 1 y STOP son rutinas de
biblioteca que realizan las funciones obvias.

109
MICROPROGRAMACIÓN: UN EJEMPLO
Habiendo especificado la micro arquitectura y la macro arquitectura en detalle, hemos
de abordar ahora el tema de la implementación de la segunda. ¿Qué aspecto tendrá un
programa que se ejecute en la primera e interprete la segunda? ¿Cómo funcionará? Antes
de contestar estas preguntas, debemos considerar cuidadosamente qué lenguaje elegimos
para microprograma .

El lenguaje micro ensamblador


En principio, podría escribir microprogramas en binario, a razón de 32 bits por
microinstrucción. Los programadores masoquistas podrían disfrutar con ello, pero nadie
más. Por tanto, necesitamos un lenguaje simbólico en el que expresar los microprogramas.
Una notación posible es hacer que el microprogramador especifique una microinstrucción
por línea, nombrando cada campo distinto de cero y su valor. Por ejemplo, para sumar AC a
A y guardar el resultado en AC, podría escribir .
ENC = 1, C = 1, B = 1, A= 10

Muchos lenguajes de microprogramación utilizan una notación similar. Pero es una


monstruosidad, al igual que los lenguajes que la utilizan.
Una idea mucho mejor es usar una notación de lenguaje de alto nivel, reteniendo el
concepto de una línea por microinstrucción. Es concebible escribir microprogramas en un
lenguaje de alto nivel ordinario, pero como la eficiencia es de crucial importancia, se utiliza
un lenguaje ensamblador, que los definimos como un lenguaje simbólico cuyas instrucciones
se correspondan biunívocamente con las del lenguaje máquina. Recuérdese que 25% de
ineficiencia en el microprograma desacelera la máquina completa 25%. Llamaremos a
nuestro lenguaje Micro ensamblador de Alto Nivel ("LMAN"). En LMAN los almacenamientos
en los 16 registros de anotaciones, en el MAR o en el MBR, se representan por sentencias
de asignación. Así, nuestro ejemplo anterior, en LMAN, se escribiría ac : = a + ac (como
nuestra intención es que el LMAN se parezca al Pascal, adoptaremos el convenio del Pascal
que consiste en utilizar nombres en letra cursiva minúscula para los identificadores).
Para indicar el uso de las funciones 0, 1, 2, y 3 de la AL U, podemos escribir
respectivamente:
ac: = a + ac, a: = and (ri, mascp), ac: = a ya: = inv(a),

Por ejemplo, donde and se refiere al "y booleano" e inv la inversión. Los
desplazamientos pueden representarse por las funciones desizq si son a la izquierda y
desder si son a la derecha, como en
tir : = desizq (tir + tir)

Que pone el tir en los buses A y E, realiza la suma y desplaza ésta a la izquierda 1 bit
antes de almacenarla de nuevo en el tir.
Los saltos incondicionales pueden representarse por sentencias goto y los
condicionales pueden examinar n o z. Por ejemplo:
if n then goto 27

Sin embargo, se presenta un pequeño problema cuando deseamos examinar un


registro pero no almacenarlo. ¿Cómo especificamos el registro que vamos a examinar? Para
resolver este problema introducimos la seudo variable alu, a la que se puede asignar un
valor simplemente para indicar el contenido de la ALU.
Por ejemplo,
alu : = tir, if n then goto 27;

Significa que se ha de pasar el tir por la ALU (código ALU = 2) para que se pueda
examinar su contenido" Nótese que el uso de alu significa que ENC = 0.
Para indicar las lecturas o escrituras en memoria, simplemente pondremos rd o wr en
el programa fuente. El orden de las distintas partes de una sentencia fuente es, en
principio, arbitrario, pero intentaremos colocarlas en el orden en que se ejecutan para
aumentar la legibilidad. La figura 4-15 ofrece algunos ejemplos de sentencias LMAN junto

110
con sus microinstrucciones correspondientes.

A C A
M O A M M E D
U N L S B A R W N D
Sentencia X D U H R R D D C C B A R
mar:=pc; rd 0 0 2 0 0 1 1 0 0 0 0 0 00
rd 0 0 2 0 0 0 1 0 0 0 0 0 00
ir:=mbr 1 0 2 0 0 0 0 0 1 3 0 0 00
pc:=pc + 1 0 0 0 0 0 0 0 0 1 0 6 0 00
mar:=ir; mbr:=ac; wr 0 0 2 0 1 1 0 1 0 0 3 1 00
alu:=tir; if n them gato 15 0 1 2 0 0 0 0 0 0 0 0 4 15
ac:=inv(mbr) 1 0 3 0 0 0 0 0 1 1 0 0 00
tir:= lshift (tir); if n then goto
0 1 2 2 0 0 0 0 1 4 0 4 25
25
alu:=ac; if z them gato 22 0 2 2 0 0 0 0 0 0 0 0 1 22
ac:= band (ir, amask); goto 0 0 3 1 0 0 0 0 0 1 1 8 3 00
sp:=sp + (-1); rd 0 0 0 0 0 0 1 0 1 2 2 7 00
tir:= lshift (ir + ir); if n then
0 1 0 2 0 0 0 0 1 4 3 3 69
goto 69

Fig. 4-15. algunas sentencias LMAN y sus microinstrucciones correspondientes

El ejemplo de microprograma
Hemos llegado finalmente al punto donde podemos engarzar todas las piezas. La
figura 4-16 es un microprograma que funciona en el Mic-1 e interpreta el Mac-1. Es un
programa sorprendentemente pequeño, que ocupa sólo 79 líneas. Ahora la elección de los
nombres de los registros de la figura 4-8 se hace evidente: PC, AC y SP se usan para
guardar los tres registros del Mac-1. IR es el registro de instrucción que contiene la
macroinstrucción en curso de ejecución. TIR es una copia temporal del IR, utilizada para
decodificar el código de operación. Los tres registros siguientes se utilizan para guardar las
constantes indicadas. AMASK es la máscara de direcciones, 007777 (octal), y se usa para
separar el código de operación y los bits de dirección. SMASK es la máscara de la pila
000377 (octal), que se utiliza en las instrucciones INSP y DESP para aislar el
desplazamiento de 8 bits. Los 6 registros restantes no tienen ninguna función asignada y
pueden usarse al arbitrio del microprogramador.

111
Como todos los intérpretes, el microprograma de la figura 4-16 tiene un bucle
principal que extrae, decodifica y ejecuta instrucciones del programa que interpreta, que en
este caso consiste en una serie de instrucciones de nivel 2. Su bucle principal comienza por
la línea O, donde empieza a extraer la macro- instrucción a la que apunta el PC. Mientras
espera que la instrucción llegue, incrementa el PC y sigue manteniendo activa la señal RD.
Cuando llega la instrucción, en la línea 2, la guarda en el IR y simultáneamente examina su
bit más significativo (el 15). Si es 1, la decodificación continúa en la línea 28 y, en caso
contrario, en la 3. Suponiendo, por el momento, que la instrucción es LODD, en la línea 3 se
examina el bit 14 y se carga el TIR con la instrucción original desplazada 2 bits a la
izquierda (un bit con el sumador y el otro con el registro de corrimiento). Nótese que el
estado N de la ALU está determinado por su salida, en la que el bit 14 es el más
significativo, ya que IR + IR desplaza el IR en lugar a la izquierda. La salida del registro de
corrimiento no afecta a los bits de estado de la ALU.
Todas las instrucciones que tengan 00 en sus dos bits más significativos llegarán a la
línea 4, donde se las examinará el bit 13, que mandará alas que empiecen por 000 a la
línea 5 ya las que empiecen por 001 a la línea 11. La línea 5 es un ejemplo de

112
microinstrucción con ENC = 0; solamente examina el TIR, pero no lo cambia. Según sea el
resultado de esta comprobación, se seleccionará el código de LODO o el de STOD.
Si es LOOD, el micro código deberá primero extraer la palabra direccionada
directamente, cargando los 12 bits menos significativos del IR en el MAR. En este caso, los
4 bits más significativos son cero, pero para STOD y otras micro- instrucciones no lo será.
Sin embargo, como el MAR sólo tiene 12 bits de anchura, los bits de código de operación no
afectarán a la lectura. En la línea 7 el microprograma no tiene nada que hacer y, por lo
tanto, sólo espera. Cuando llega la palabra, el microprograma la copia al AC y salta al
comienzo del bucle. STOD, AODD y SUBO son similares. Lo único que cabe mencionar es
cómo se realiza la resta. Usa la siguiente propiedad de la aritmética en complemento a dos:
x -y = x + (- y) = x + ( y + 1) = x + 1 + y

La suma de 1 al AC se hace en la línea 16, que de otro modo se hubiera


desperdiciado, como la 13.
El micro código de JPOS comienza en la línea 21. Si AC<O, la bifurcación no se realiza
y JPOS termina inmediatamente saltando de nuevo al bucle'(ciclo) principal. En cambio si
AC >= 0, se extraerán los 12 bits menos significativos del IR haciendo el y lógico de éste
con la máscara 007777 y guardando el resultado en el PC. No cuesta aquí nada eliminar los
bits de código de operación y por ello es aconsejable hacerlo. Si hubiera costado una
microinstrucción adicional, tendríamos que examinar muy cuidadosamente si el tener
basura en los 4 bits más significativos del PC puede causar algún problema más tarde.
En cierto modo, JZER (línea 23) funciona en forma contraria a JPOS. En JPOS, si la
condición se cumple, no se produce el salto y el control vuelve al bucle principal. En JZER se
produce el salto si se cumple la condición. Como el código para realizar el salto es el mismo
en todas las instrucciones de salto, podemos ahorrar micro código yendo a la línea 22
siempre que sea posible. Este estilo de programación normalmente se consideraría primitivo
si se tratara de un programa de aplicación; pero en un microprograma no se tienen esos
escrúpulos. El rendimiento es lo más importante.
JUMP y LOCO son evidentes, por lo que la siguiente rutina de ejecución interesante es
la de LODL. Primero se calcula la dirección absoluta de memoria sumando el desplazamiento
contenido en la instrucción al SP. Después se inicia la lectura de memoria. Como el resto del
código es igual que el de LODL y LODD, usaremos las líneas 7 y 8 para ambos. No sólo se
ahorra memoria de control sin pérdida de velocidad, sino que también hay menos código
que depurar. STOL, ADDL y SUBL son similares. El código de JNEG y JNZE es similar al de
JZER y JPOS, respectivamente (y no al contrario). CALL decrementa primeramente el SP y
entonces apila la dirección de retorno, saltando finalmente al procedimiento. La línea 49 es
casi idéntica a la línea 22; si hubieran sido exactamente iguales, podríamos haber eliminado
la 49 poniendo en la 48 un salto incondicional a la 22. Desafortunadamente, debemos
mantener activo WR durante otra microinstrucción.
Las macroinstrucciones restantes tienen 1111 en sus 4 bits más significativos, por lo
que se necesita decodificar los bits del campo de dirección para distinguirlas. Sus rutinas de
ejecución son tan simples que no las vamos a comentar.

Observaciones sobre el microprograma


Aunque hemos estudiado el microprograma con bastante detalle, es interesante hacer
algunos comentarios. En la figura 4-16 incrementamos el PC en la línea 1. Podíamos
también haberlo incrementado en la línea O, dejando libre la línea 1 para alguna otra cosa
mientras se espera. En esta máquina no hay nada que hacer, pero en una real el
microprograma tendría la oportunidad de examinar los dispositivos de E/S en espera de
servicio, refrescar la memoria o alguna otra cosa.
Si hubiéramos dejado la línea 1 como está, podríamos, sin embargo, acelerar la
máquina modificando la línea 8 para leer
mar: = pc,. ac : = mbr; rd,. goto 1;

En otras palabras, podemos empezar la extracción de la siguiente microinstrucción


antes de terminar la ejecución de la que esté en curso. Esta posibilidad es una forma
primitiva de escalonamiento o seriación. También se puede aplicar el mismo truco a otras

113
rutinas de ejecución.
Está claro que una proporción considerable del tiempo de ejecución de cada
microinstrucción está dedicado a decodificarla bit por bit. Esta observación señala que se
puede cargar el M PC bajo control del microprograma. En muchas computadoras existentes
la micro arquitectura tiene medios físicos para extraer los códigos de operación de las
macroinstrucciones y pasarlos al MPC, donde efectúa una operación de selección múltiple.
Por ejemplo, si pudiéramos desplazar el IR 9 bits a la derecha, borrar los 9 bits más
significativos y poner el número resultante en el MPC, podría seleccionar entre 128
localidades, de las posiciones O a 127. Cada una de esas palabras tendría la primera
microinstrucción de la macroinstrucción correspondiente. Aunque este método desperdicia
memoria de control, acelera en gran medida la máquina y, en la práctica, casi siempre se
usa algo parecido.
No hemos dicho nada de cómo se realiza la E/S. Ni tenemos que hacerlo. Utilizando
E/S por memoria, la CPU no es capaz de diferenciar entre direcciones de memoria
verdaderas y las de los registros de los dispositivos de E/S. El microprograma realiza las
lecturas y escrituras en las cuatro palabras superiores del espacio de direcciones como si lo
hiciera con otras cualesquiera.

Perspectivas
En este punto conviene detenerse un minuto para reflexionar sobre los fundamentos
de la microprogramación. La idea básica es comenzar con una máquina física muy sencilla.
La de nuestro ejemplo consta de poco más que un grupo de 22 registros, una pequeña
memoria ROM de control, un sumador mejorado, un incrementador, un registro de
corrimiento y algunos circuitos combinacionales para multiplexar, decodificar y
secuencializar. Con este material fuimos capaces de construir un intérprete programado que
llevara a cabo las instrucciones de la máquina de nivel 2. Con la ayuda de un compilador,
podemos traducir programas escritos en lenguajes de alto nivel a instrucciones de nivel 2 e
interpretar éstas una a una.
Si queremos ejecutar un programa escrito en un lenguaje de alto nivel, debemos
traducirlo primero al nivel 2 y luego interpretar las instrucciones resultantes. El nivel 2 sirve
de interfaz entre el compilador y el intérprete. Aunque, en principio, el compilador podría
generar directamente microcódigo, esto es complicado y desperdicia gran cantidad de
espacio. Cada una de nuestras macroinstrucciones ocupa una palabra de 16 bits, mientras
que el microcódigo correspondiente, excluyendo la lógica de decodificación de instrucciones,
requiere 4 microinstrucciones de 32 bits en promedio. Si compiláramos directamente a nivel
1, la memoria total necesaria se multiplicaría por ocho. Además, la memoria necesaria sería
memoria de escritura. para control, que es muchísimo más cara debido a su gran velocidad.
No conviene usar la memoria principal para el microcódigo, ya que obtendríamos una
máquina lenta.
A la luz de estos ejemplos concretos, se advertirá claramente por qué las máquinas se
diseñan como una serie de niveles. Se hace por razones de eficiencia y simplicidad, ya que
cada nivel se aplica a un nivel de abstracción distinto. El diseñador del nivel O se ocupa de
cómo ganar unos pocos nanosegundos en la ALU utilizando algún nuevo algoritmo que
reduzca el tiempo de propagación del acarreo. El microprogramador se interesa en como
hacer el máximo número de operaciones elementales con cada microinstrucción,
aprovechando en lo posible el paralelismo inherente al hardware. El diseñador del juego de
macroinstrucciones desea proporcionar al escritor de compilado res y al microprogramador
una interfaz con la que se puedan sentir a gusto y que, al mismo tiempo, sea eficiente. Sin
duda cada nivel tiene objetivos, problemas y técnicas diferentes y, en general, una forma
distinta de ver la máquina. Dividiendo el problema del diseño de la máquina en varios
subproblemas, podemos intentar dominar la complejidad intrínseca del diseño de una
computadora moderna.

114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN
Como cualquier otra cosa en informática, el diseño de la micro arquitectura está lleno
de limitaciones. En las secciones siguientes veremos algunos de los temas de diseño y los
problemas que han de sopesarse.

Microprogramación horizontal frente a microprogramación vertical


Probablemente la decisión más importante sea cuán codificadas deban estar las
microinstrucciones. Si fuéramos a construirla Mic-1 con una sola pastilla VLSI, se podrían
ignorar abstracciones tales como registros, ALU, etc., y pensar sólo en las compuertas. Para
que funcione la máquina, se necesitan ciertas señales, como las 16 de habilitación de salida
de los registros al bus A o las que controlan el funcionamiento de la ALU. Si miráramos
dentro de la ALU, veríamos que toda la circuiteria interna está controlada por cuatro líneas,
no dos, ya que en la esquina izquierda de la figura 3-20 encontrarnos un decodificador de 2
a 4. En resumen, se puede hacer funcionar cualquier máquina con n señales de control
aplicadas en los lugares adecuados sin decodificar nada.
Este punto de vista nos obliga a considerar un formato de microinstrucción diferente:
hacerlo de n bits, uno por señal de control. Las microinstrucciones diseñadas según este
principio se denominan horizontales y representan un extremo del espectro de
posibilidades. En el otro extremo están las microinstrucciones con un pequeño número de
campos muy codificados. Se dice que son verticales. Los nombres derivan de la manera en
que un artista dibujaría sus memorias de control respectivas: los diseños horizontales
tienen un número bastante pequeño de microinstrucciones anchas; los verticales tienen
muchas microinstrucciones estrechas.
Entre ambos extremos hay muchos diseños intermedios. Nuestras microinstrucciones,
por ejemplo, tienen algunos bits, como MAR, MBR, RD, WR y AMUX, que controlan
directamente funciones del hardware. Por otro lado, los campos A, B, C y ALU requieren
alguna lógica de decodificación antes de que puedan aplicarse a compuertas individuales.
Una instrucción vertical extrema tendría solamente un código de operación, que sería
simplemente una generalización de nuestro campo ALU, y algunos operandos, como
nuestros campos
A, B y C. En una organización de este tipo se necesitarían códigos de operación para
leer y escribir en memoria, hacer micro saltos, etc., porque los campos que controlan esas
funciones en nuestra máquina ya no estarían presentes.
Para distinguir más claramente entre microinstrucciones horizontales y verticales,
vamos a rediseñar nuestro ejemplo de micro arquitectura y hacer que se use
microinstrucciones verticales. Cada microinstrucción contendrá ahora tres campos de 4 bits,
que suman un total de 12 bits, frente a los 32 de la versión original. El primer campo es el
código de operación, OP, que dice qué hace la microinstrucción. Los siguientes campos son
dos registros, R1 y R2. Para los saltos, se combinan formando un único campo de 8 bits, R.
Una microinstrucción típica sería ADD, SP, AC, que sumará el AC al SP.
En la figura 4-17 se muestra la lista completa de códigos de operación de las
microinstrucciones de esta nueva máquina que llamaremos Mic-2. En la lista vemos que
cada microinstrucción realiza una única función: si suma, no puede desplazar ni cargar el
MAR, ni siquiera mantener activa la señal RD. Con apenas 12 bits por microinstrucción, sólo
hay sitio para especificar una operación.

115
Binario Nemotécnico Instrucción Significado
0001 ADD Suma r1:=r1 + r2
0001 AND Y booleano r1:=r1 Y r2
0010 MOVE Mueve registro r1:=r2
0011 compl. Complementa r1:=inv(r2)
0100 LSHIFT Desplaza a la izquierda r1:=desizq(r2)
0101 RSHIFT Desplaza a la derecha r1:=desder(r2)
GETMBR Almacena el MBR en r1:=rim
0110
registro
TEST Examina registro if r2 < 0 then n:=true; if r2 = 0
0111
then z:=true
1000 BEGRD Comienza lectura rdm:=r1; lec
1001 BEGWR Comienza escritura rdm:=r1; rim:=r2; esc
1010 CONRD Continua lectura Lec
1011 CONWR Continua escritura Esc
1100 (no usado)
1101 NJUMP Salta si N = 1 if n then goto r
1110 ZJUMP Salta si Z = 1 if z then goto r
1111 UJUMP Salta siempre goto r
r= 16 * r1 + r2

Fig. 4-17. Código de operación del Mac-2

Vamos a rehacer la figura 4-10 para mostrar las nuevas microinstrucciones. La


figura 4-18 muestra el nuevo diagrama de bloques. La ruta de datos, representada a la
izquierda, es idéntica a la anterior. La mayor parte de la porción de control, a la derecha,
también quedará igual. En particular, aún necesitamos el MIR y la memoria de control
(aunque esta vez con anchura de 12 bits, en lugar de 32). Los tamaños y funciones del M
PC, el Mmux, el incrementador, el reloj y la lógica de microsecuenciamiento son idénticos a
los del diseño horizontal. Además, necesitaremos decodificadores de 4 a 16 para los campos
R1 y R2, análogos a los de A, B y C de la figura 4-10.
Las tres principales diferencias entre la figura 4-10 y la figura 4-18 son los bloques
rotulados AND, NZ y "Decodificación de OP". Se necesita AND porque el campo R1 lleva
tanto el bus A como el C. Se presenta el problema de que el bus A se carga durante el sub
ciclo 2 pero el bus C no puede cargarse en la memoria interna hasta que se hayan
estabilizado los registros de A y B, en el sub- ciclo 3.

116
La caja AND hace el Y lógico de cada una de las 16 señales decodificadas con la señal
del reloj del sub ciclo 4 y con una señal que proviene de la decodificación de OP y que
equivale a la vieja señal ENC. El resultado es que las 16 señales que cargan datos en la
memoria interna se activan bajo las mismas condiciones que antes.
El bloque NZ es un registro de dos bits al que se le pueden hacer almacenar las
señales N y Z del ALU. Se necesita esta facilidad ya que en el nuevo diseño, el ALU trabaja
en una microinstrucción pero sólo puede verificar los bits de estado en la siguiente. Como la
ALU no tiene donde almacenar N y Z y éstas se obtienen de su salida en cada momento,
siendo N su bit más significativo y Z el O lógico de todos sus bits, ambas señales de estado
se perderían si no se guardan en alguna parte.
El elemento clave de la nueva micro arquitectura es el decodificador de OP. Esta caja
toma el campo de código de operación y produce señales para controlar la caja AND, la
lógica de microsecuenciamiento, NZ, Amux, la ALU, el registro de corrimiento, el MBR, el
MAR, RD y WR. La lógica de microsecuenciamiento, la ALU y el registro de corrimiento
requieren dos señales cada uno, que son idénticas a las del diseño anterior. En total, el
decodificador de OP genera 13 señales distintas basándose en los 4 bits más significativos
de la microinstrucción en curso.
Para cada uno de los 16 posibles códigos de operación de microinstrucción, el
diseñador de la máquina debe determinar cuál de las 13 señales que salen del decodificador
de OP está activa y cuál no. En efecto, se debe generar una matriz binaria de 16 x 13 que
dé el valor de cada línea de control para cada código de operación. La figura 4-19 muestra
esta matriz para el Mic-2. Las columnas están rotuladas con los nombres de las señales. Los
sufijos B y A significan Bajo y Alto, respectivamente, y se aplican sólo a los dispositivos con
dos líneas de control: la ALU, el registro de corrimiento y la lógica de microsecuenciamiento.
Para dar un ejemplo de un código de operación de microinstrucción, consideremos

117
BEGRD, que inicia una lectura en memoria. Usa la función 2 de la ALU (selección de bus A),
con lo que ALUH = 1 y ALUL = O. También carga el MAR y activa RD. Las demás señales de
control quedan inactivas. Ahora consideremos los saltos. Como hemos decidido que sean
compatibles con nuestra vieja lógica de microsecuenciamiento, el par MSLH MSLL debe ser
00 para no salto, 01 para salto si N, 10 para salto si Z y 11 para salto incondicional (la
compatibilidad ha alcanzado tales proporciones epidémicas, que incluso las máquinas
hipotéticas de los libros de texto son compatibles con sus predecesoras), NJUMP genera 01,
ZJUMP genera 10 y UJUMP general 11. Todos los demás códigos de operación generan 00.
Ahora viene la parte interesante. ¿Cómo construiremos un circuito de cuatro entradas
(los bits de código de operación) y trece salidas (las señales de control) que calcule la
función de la figura 4-19. Pues con el uso de una o varias PLA (o ROM). La figura 4-19 es
una forma algo peculiar de representar 13 tablas de verdad, una por columna, de cuatro
variables cada una, donde el número de fila define implícitamente el valor de las cuatro
variables. Entonces la cuestión de cómo construir el circuito se reduce a cómo implementar
una tabla de verdad. La mejor forma de hacerlo consiste en emplear una PLA de cuatro
entradas y 13 salidas. Si no la podemos conseguir, podemos usar tres 74S330, que son PLA
de 12 entradas y 6 salidas. Si denotamos los cuatro bits de código de operación con las
letras A a D, del más significativo al menos significativo, algunas de las salidas son:

ALUL = A B C D + A B C D = A B D

SHH = A B C D

MAR = A B C D + A B C D = A B C

MSLH = A B C D + A B C D = A B C

Sólo deben generarse internamente 15 términos producto, ya que ABCD no se


necesita.

118
Habiendo rediseñado el hardware, necesitamos reescribir el microprograma. Lo
muestra la figura 4-20. Se han dejado las mismas etiquetas para que sea más fácil
comparar los dos microprogramas. También se ha conservado la sintaxis. Podíamos haberlo
escrito usando un lenguaje ensamblador típico (por ejemplo, con los códigos de operación
de la figura 4-17), pero hemos usado de nuevo LMAN porque es mucho más fácil de leer.
Nótese que las sentencias LMAN de la forma alu = reg usan la micr9instrucción TEST para
ajustar los bits N y Z. Asegúrese el lector de que entiende la diferencia entre el
microprograma en binario, tal como se carga en la memoria de control, y la versión en
lenguaje ensamblador que se da en el texto.

119
120
Aunque más largo, este microprograma es más simple que el anterior puesto que cada
línea sólo realiza una operación. En consecuencia, muchas líneas del original han tenido que
dividirse en dos, tres, e incluso cuatro líneas en éste. Otra causa que aumenta el número de
microinstrucciones es la ausencia de microinstrucciones de tres direcciones. Véase, por
ejemplo, las líneas 22 y 27 del primer microprograma.
El microprograma original usa 79 palabras de 32 bits, que dan un total de 2528 bits de
memoria de control. El segundo usa 160 palabras de 12 bits, que hacen un total de 1920
bits. La diferencia representa un ahorro de 240¡0 de memoria de control. En una
computadora integrada en una pastilla, también representa un ahorro de 24% en el espacio
de la pastilla (chip) ocupado por la memoria de control, lo que lo hace más barato y fácil de
fabricar. El precio que hay que pagar por la memoria de control más pequeña es que han de
ejecutarse más microinstrucciones por macroinstrucción. Normalmente, esto hace más
lenta la máquina. En consecuencia, las máquinas veloces y caras tienden a ser horizontales
y las más lentas y baratas, verticales. La existencia de microinstrucciones muy codificadas,
como las del Mic-2, plantea serios problemas conceptuales acerca de lo que es la
microprogramación. El juego de microinstrucciones de la figura 4-17 podría pasar casi por
el juego de instrucciones del lenguaje de máquina convencional de una micro-o

121
minicomputadora muy simple. La PDP-8, por ejemplo, es una minicomputadora con
palabras de 12 bits cuyas instrucciones no son mucho más potentes que éstas.
Considerando que el "significado" de las instrucciones está determinado por el hardware (la
PLA o circuito del decodificador de OP), se podría decir que el Mic-2 es realmente una
máquina no microprogramada en la que se ejecuta un intérprete para otra máquina. Si el
microprograma de la máquina vertical se guardara en la memoria principal (como sucede en
la IBM 370/145, por ejemplo), la distinción entre una máquina microprogramada muy
vertical y una cableada (no microprogramada) perdería aún más nitidez. Véase a Dasgupta
(1979) si se desea profundizar en los aspectos de codificación y paralelismo en el
microcódigo.

Nanoprogramación
Los diseños vistos hasta ahora tenían dos memorias: la central (utilizada para guardar
el programa de nivel 2) y la de control (utilizada para guardar el microprograma) .Con una
tercera memoria, la nanomemoria, se pueden realizar interesantes compromisos entre la
organización horizontal y la vertical. La nanoprogramación es apropiada cuando se repiten
varias veces muchas microinstrucciones. El microprograma de la figura 4-16 no tiene esa
propiedad. La microinstrucción más frecuente es la que sólo tiene lec y únicamente aparece
cinco veces.
La figura 4-21 ilustra el concepto de nanoprogramación. La parte (a) muestra un
microprograma de n microinstrucciones de w bits cada una. Se necesitan nw bits de
memoria de control en total para guardarlo. Supongamos que un estudio detallado del
microprograma muestra que sólo se usan m microinstrucciones diferentes de las 2W
posibles, siendo m<<n. Se podría utilizar una nanomemoria especial de m palabras de w
bits para guardar cada microinstrucción única. En el microprograma original se podría
reemplazar cada instrucción por su dirección en la nanomemoria. Como la nanomemoria
sólo contiene m palabras, la memoria de control necesaria tiene solamente log2 m
(redondeado al entero mayor) bits de anchura, como se muestra en la figura 4-21(b).

El microprograma se ejecuta como sigue. Primero se extrae una palabra de la


memoria de control y se usa para seleccionar una palabra de la nanomemoria, que se
extrae y se guarda en el registro de microinstrucción. Los bits de este registro se utilizan
como señales de control durante un ciclo. Al finalizar este ciclo, se extrae la siguiente
palabra de la memoria de control y el proceso se repite.
Por ejemplo, supongamos que el microprograma original tiene 4096 x 100 bits pero
sólo aparecen 128 microinstrucciones distintas. Bastaría una nanomemoria de 128 x 100
bits para guardar las microinstrucciones necesarias. La memoria de control tendría ahora
4096 x 7 bits, apuntando cada una de sus palabras a una nanoinstrucción. El ahorro de
memoria en este ejemplo sería:
ahorro = 4096 x 100 -4096 x 7 -128 x 100 = 368 128 bits

El precio que debe pagarse por el ahorro de memoria es una ejecución más lenta. La

122
máquina con la memoria de control de dos niveles funcionará con menor rapidez que la
original, debido a que el ciclo de extracción requiere ahora dos referencias a memoria, una
a la memoria de control y otra a la nanomemoria. Estas dos extracciones no pueden
traslaparse.
La nanoprogramación es verdaderamente eficaz cuando se usan mucho las mismas
microinstrucciones. Si se pudieran contar como iguales dos microinstrucciones casi iguales,
el microprograma contendría menos microinstrucciones distintas, pero más frecuentemente
usadas. Se puede variar la idea básica para permitir esto con sólo utilizar como parámetro
las palabras de la nanomemoria. Por ejemplo, dos microinstrucciones pueden diferir
solamente en un campo que diga qué registro ha de sacarse a cierto bus. Poniendo el
número del registro en la memoria de control, en lugar de ponerlo en la nanomemoria (es
decir, omitiendo el campo del registro de las nanoinstrucciones), las dos microinstrucciones
podrían apuntar a la misma nanopalabra. Cuando ésta se extraiga y se ponga en el registro
de microinstrucción, el campo de registro se tomará de la micromemoria y no de la
nanomemoria.
Naturalmente, con este mecanismo aumenta la anchura de la memoria de control, que
puede o no compensar la ganancia obtenida con una nanomemoria más pequeña.

Mejora del rendimiento


Aunque el objetivo de la nanoprogramación es reducir el tamaño de la memoria de
control, incluso al precio de una ejecución más lenta, también se ha invertido gran cantidad
de tiempo y esfuerzo en el objetivo opuesto: intentar acelerar la ejecución, incluso al precio
de una mayor memoria de control. Estos dos criterios de diseño aparentemente
incompatibles tienen que ver con dos estrategias de mercadotecnia: la de máquinas baratas
y la de máquinas rápidas. En esta sección examinaremos algunas de las maneras en que se
puede modificar nuestra sencilla micro arquitectura para que las máquinas funcionen más
rápido.
Hasta ahora hemos supuesto que los cuatro sub ciclos tenían la misma duración.
Aunque esto es sencillo, pocas veces produce el mejor rendimiento, ya que invariablemente
uno de los cuatro necesita mucho más tiempo que los otros tres. Si los cuatro duraran lo
mismo que el peor de los casos, la velocidad de la máquina disminuiría notablemente. La
forma de corregir esto es permitir que la duración de cada sub ciclo sea independiente de la
de los demás. La duración de cada sub ciclo debe ajustarse a la necesaria para realizar su
función.
Aunque esto constituye un paso hacia adelante en la dirección correcta, es aún
demasiado conservador, ya que la duración de cada sub ciclo está todavía determinada por
el peor de los casos en ese sub ciclo. Considérese, por ejemplo, el sub ciclo 3 de nuestros
ejemplos. Si la función de la ALU es la suma, probablemente se necesite más tiempo
(debido a los retrasos en la propagación del acarreo) que si la operación fuera simplemente
seleccionar A. Si la duración del sub ciclo 3 se determinara en el momento del diseño,
debería ser la de la suma y no la de seleccionar A. Otra estrategia consistiría en que cada
operación que va a realizarse determine la duración del sub ciclo, de modo que sea tan
corta como sea posible.
Una vez tomada la decisión de hacer que la duración de cada sub ciclo dependa de la
operación, debemos encontrar una forma de llevar a la práctica esta estrategia. Acelerar o
des acelerar el reloj es una técnica difícil, por eso lo que se hace es conseguir un reloj
maestro con un periodo mucho más corto que la duración del sub ciclo. Así. cada sub ciclo
dura un determinado número de impulsos. Por ejemplo. si ALU tardara entre 75 y 150 nseg
en realizar una operación. se podría usar un reloj maestro con un periodo de 25 nseg.
durando el sub ciclo correspondiente entre tres y seis periodos.
Nos queda averiguar cómo sabe la máquina cuánto debe durar un sub ciclo. Hay dos
posibles soluciones. Una de ellas es que la microinstrucción tenga campos que digan
explícitamente los tiempos necesarios. La otra es derivar estos tiempos basándose en los
campos de operación (utilizando una PLA). de la misma forma que se generan las demás
señales de control en una máquina vertical. La primera solución cuesta bits de la memoria
de control y la segunda cuesta lógica de decodificación y tiempo.
Otra forma de obtener mayor potencia de la máquina. consiste en incrementar la

123
flexibilidad de los microsaltos condicionales. Como ejemplo. considérese una
macroinstrucción OMITE SI MENOR. que compare el registro AC con una palabra de
memoria y salte a la siguiente macroinstrucción si AC es menor . Para realizar la
instrucción. se requiere restar la palabra de memoria de AC (o de una copia de éste). la que
puede dar como resultado un desbordamiento. como se ilustra en la figura 4-22.
Debido al desbordamiento potencial, no es posible decir. con sólo ver el bit de signo
del resultado. cual de los operandos era menor. En el cuarto ejemplo de la figura 4-22, AC
es menor que la palabra de memoria pero el resultado de la resta es positiva. La condición
correcta a probar es N O-EXCLUSIVO V. en donde V indica la presencia o ausencia de
desbordamiento. (El hardware asigna a V el valor de 1 siempre que el acarreo al bit de
signo difiera del acarreo del bit de signo.)

AC 000100 000100 077777 100001 000010


Men 000050 170000 177775 000010 100001
000030 010100 100002 077771 100007
N=0 N=0 N=1 N=0 N=1
V=0 V=0 V=1 V=1 V=1

Fig. 4-22. algunos ejemplos de restas de números de 16 bits en complemento a 2 (octal). También se muestran
los bits N y D de cada resultado.

Afortunadamente, la mayoría de .las ALU no sólo generan N y Z sino también D y A


(acarreo). Sin embargo, si sólo hubiera cuatro saltos condicionales para cada uno de los bits
NZDA, la macroinstrucción OMITE SI MENOR requeriría muchas microinstrucciones. Para
mayor flexibilidad. muchas máquinas no permiten examinar individualmente los bits de
estado de la ALU. En cambio. un único bit de las microinstrucciones provoca el O lógico de
los bits NZDA con los cuatro bits menos significativos del campo ADDR y se salte al
resultado. La figura 4-23 da algunos ejemplos. Si los 4 bits menos significativos fueran O,
esto se convertiría en un salto condicional con 16 alternativas. Si todos fueran 1, se
convertiría en salto incondicional a una dirección específica terminada en 1111.

Dirección
Campo hacia
NZDA
DIR donde
salta
10000000 1001 10001001
10001000 1001 10001001
10001011 1001 10001011
10001011 1000 10001011
10001011 0000 10001011
10001111 0000 10001111
10001111 1100 10001111
10000000 1100 10001100

Fig. 4-23. Algunos ejemplos de


saltos a múltiples destinos,
basándose en los bits NZDA

Con esta ayuda la instrucción OMITE SI MENOR sería mucho más fácil de interpretar.
Elegiríamos un campo ADDR que terminara en 0101, como 10000101 (binario), y
realizaríamos el salto. Las microinstrucciones situadas en 10001101 y 10000111 traerán el
caso AC < memoria y las situadas en 10000101 y 10001111 tratarán el caso contrario. No
se necesita ninguna decodificación adicional. También podríamos haber usado una dirección
de base terminada en 0000, en lugar de la que termina en 0101, pero estas direcciones

124
son muy valiosas, ya que son las únicas disponibles para saltos con 16 posibilidades. Por
tanto, no debe elegirse a la ligera.
Es claro que con este tipo de control del secuenciamiento de las microinstrucciones, la
tarea de situar las microinstrucciones en la memoria de control puede causar verdaderos
dolores de cabeza. La primera instrucción ejecutada después de un salto de 16 alternativas
debe tener un salto incondicional, ya que la palabra siguiente (excepto si es la última) se
utiliza como uno de los posibles destinos del salto. ¿A dónde debería saltar cada una de
estas microinstrucciones? Ciertamente no a una dirección de la forma xxxx0000, ya que son
demasiado valiosas, pero también podrían necesitarse tarde o temprano las demás, excepto
las de la forma xxxx1111. La decisión debe tomarse con cuidado, evitando agotar algún tipo
de dirección. Por ejemplo, una vez que se han agotado las direcciones pares, ya no es
posible verificar el bit de acarreo C, así que la selección de direcciones debe hacerse con
mucho cuidado.
Una forma más para acelerar la máquina consiste en conformar el hardware con varias
unidades funcionales y después unirlas para que trabajen en línea o en forma escalonada
(pipeline).* En la figura 2-5 se observó cómo funciona una computadora con cinco unidades
escalonadas. En la figura 4-24 se muestra que si la instrucción 1 se extrae en el ciclo 1, se
ejecutará en el ciclo 5. En forma parecida, si la instrucción 4 se extrae en el ciclo 8, se
decodifica en el 9, etc., se ejecutará en el ciclo 12. Bajo condiciones óptimas, en cada ciclo
de ahí en adelante se ejecuta una instrucción, dando un promedio de ejecución de una
instrucción por ciclo, en lugar de una cada cinco ciclos.

Ciclo
1 2 3 4 5 6 7 8 9 10 11
Extracción de 1 2 B 4 5 6 7 8 9
instrucciones
Decodificación de 1 2 B 4 5 6 7 8
instrucciones
Cálculo de direcciones 1 2 B 4 5 6 7
Extracción de operando 1 2 B 4 5 6
Ejecución 1 2 B 4 5

Fig. 4-24. Unidad de procesamiento en línea de 5 etapas. Las instrucciones están


etiquetadas con números. La instrucción marcada como B es un salto condicional

Desafortunadamente, hay estudios que han demostrado que alrededor del 30% de las
instrucciones son saltos y éstos hacen estragos en la línea de procesamiento. Los saltos
pueden clasificarse en tres categorías: incondicionales, condicionales e iterativos. Un salto
incondicional indica a la computadora que detenga la extracción de instrucciones en forma
consecutiva y se dirija a una dirección específica. Un salto condicional verifica una condición
y salta si ésta se cumple. Un ejemplo típico es una instrucción que checa un registro y salta
si éste contiene un valor de cero. En caso contrario, no se lleva a cabo el salto y el control
continúa en la secuencia actual.
Por lo general las instrucciones iterativas decrementan un contador de iteraciones y
saltan al inicio si el contador no es cero (v .g. todavía hay iteraciones por hacer). Estas
instrucciones son un caso especial importante de los saltos condicionales, ya que se sabe de
antemano, que casi siempre habrá ese salto.
Considérese lo que sucede en la línea de procesamiento (pipeline) de la figura 4-24
cuando se encuentra una instrucción (señalada como B) de salto condicional. La siguiente
instrucción a ejecutar debería ser la siguiente a la del salto, pero también podría ser la
dirección a la cual saltó, llamada blanco del salto. En virtud de que el extractor de
instrucciones no sabe cual sigue sino hasta que se ejecuta el salto, se demora y no puede
continuar hasta la ejecución de éste. En consecuencia la línea se vacía. Sólo después de que
termina el ciclo 7, se sabe qué instrucción sigue.

125
A la pérdida de cuatro ciclos causada de hecho por el salto se le denomina
penalización por salto. Resulta evidente que con un salto en una de cada tres instrucciones,
la disminución en el desempeño es sustancial.
Se han realizado una gran cantidad de investigaciones alrededor del problema de
recuperar algo de este desempeño (DeRosa y Levy, 1987; McFarljng y Hennessy, 1986;Hwu
y col. 1989 y, Lilja, 1988). Lo más sencillo consisté en esperar que el salto no se realice y
continuar procesando como si el salto fuera una simple instrucción aritmética. Si resulta que
en efecto, el salto no se realiza, no se ha "perdido nada. Si por el contrario el salto se
efectúa, se deben eliminar las instrucciones que estén actualmente en la línea y empezar de
nuevo.
Esta opción presenta sus propios problemas. En algunas máquinas, se puede
modificar un registro como el resultado intermedio de un cálculo de direcciones. Si una
instrucción eliminada modificó a uno o más registros, estos deben ser restaurados, lo que
significa que debe haber un mecanismo para grabar los valores originales. Resulta
instructivo hacer un modelo de la pérdida en el desempeño.
Sea Pj la probabilidad de que una instrucción sea un salto.
Sea P, la probabilidad de que el salto se realice.
Sea b la penalización por salto.

El tiempo promedio de ejecución (en ciclos) se puede calcular como la suma


ponderada de los dos casos: instrucciones regulares e instrucciones de salto.
Tiempo promedio de ejecución = (1- Pj)(l) + Pj[Pt1 + b) + (1- P,)(1)]
Un poco de álgebra revela que el tiempo promedio por instrucción es 1 + bPjP,. Luego
la eficiencia de ejecución es 1/(1 + bPjP,). Asignando los valores (típicos estimados) de b =
4, Pj = 0.3 y P, = 0.65, la máquina corre a menos del 60% de su capacidad potencial.
¿Qué puede hacerse para mejorar el desempeño? Para empezar, si se pudiera predecir
la dirección del salto, se podría extraer la instrucción apropiada " (siguiente) y eliminar la
penalización. En la fórmula para la eficiencia se puede " entonces reemplazar P, por la
probabilidad P w de que la suposición sea falsa.
Existen dos clases de predicciones: estáticas (al tiempo de compilación) y dinámicas
(al tiempo de ejecución). Con predicción estática, el compilador hace una suposición para
cada una de las instrucciones de salto que genera. Suponer por ejemplo, en las
instrucciones iterativas que el salto regresará al inicio de la iteración, es correcta la mayoría
de las veces. Cuando se trata de una condición improbable, tal como una llamada al sistema
que genera un código de error, es muy posible que el salto no se lleve a cabo. En muchos
casos se utilizan diferentes instrucciones para estos casos y el solo hecho de observar el
código de operación proporciona una buena sugerencia.
Otro esquema más elaborado para los diseñadores de máquinas consiste en
proporcionar dos códigos de operación para cada tipo de salto y hacer que el compilador use
el primero si cree que el salto se llevará a cabo y el segundo en caso contrario. En forma
alternativa, para programas de uso intensivo, se pueden correr primero en un simulador,
registrando, el comportamiento de cada salto; luego, el programa binario puede "parcharse"
con el código de operación apropiado (probablemente se realice, probablemente no se
realice).
En el método de predicción dinámica, el microprograma construye, durante la
ejecución, una tabla con las direcciones que contienen saltos y guarda un registro del
comportamiento de cada uno. Este método tiende a hacer más lenta la máquina al llevar el
registro, de modo que requiere de alguna ayuda del hardware. Algunas mediciones han
mostrado que de esta manera no es difícil lograr un 90% de precisión.
La predicción de los saltos no es el único punto de ataque. Otra opción es determinar
por anticipado en la línea, hacia que dirección será el salto. Algunas pruebas, como el salto
si es igual son mucho más fáciles de hacer que en salto si menor que. Las primeras se
pueden hacer con un comparador, mientras que las segundas requieren de un ciclo
completo de trayectoria de datos para hacer una resta. Con este enfoque, siempre que el
microprograma encuentre un salto, hace una verificación rápida en una etapa temprana de
la línea para ver si puede resolver el salto de inmediato, en cuyo caso sabe en donde
continuar con la extracción de la siguiente instrucción.

126
Los compiladores pueden ser de gran ayuda, por ejemplo, cuando el programador
escribe una iteración variando i desde 1 hasta 10, el compilador puede verificar i para ver si
es igual a lo, en vez de ver si es menor de II, de manera que el microprograma puede librar
la cuestión con una comparación en lugar de una resta. Para ocuparse de aquellos saltos
que no se pueden resolver en las primeras etapas, el compilador puede tratar de encontrar
algo útil para que la computadora trabaje, mientras espera que se ejecute el salto.
Considérese la declaración aritmética seguida de una comparación, de la figura 4-25(a).
Un compilador con una optimización hábil pudiera producir un código más parecido al de la
figura 4-25(b), el cual no está en lenguaje Pascal legal, pero muestra el orden de eventos.
Primero genera el código para hacer la comparación, luego hace la operación aritmética.
Después de que el salto ha ingresado en la línea de procesamiento, le siguen varias
instrucciones ordinarias, las cuales sin lugar a duda deben ejecutarse, así que no hay
necesidad de hacer ninguna predicción ni eliminación. Para usar esta técnica con
efectividad, los microprogramadores y los diseñadores de compilado res tuvieron que
trabajar en estrecha coordinación durante el diseño.

a := b + c; if b < c
if b < c a := b + c;
then then
declaración declaración
(a) (b)

Fig. 4-25. (a) Un fragmento en lenguaje


Pascal. (b) Como pudiera ser el tratamiento
por parte del compilador

Si todo lo demás falla, siempre existe la posibilidad de seguir ambas trayectorias en


paralelo. Para hacerlo, se requieren dos líneas de procesamiento en el hardware y no evita
el problema de eliminación. No obstante, este método se utiliza en ocasiones en las
computadoras de orden superior, en las que el aspecto importante es el desempeño y no el
precio. Desde luego, si cada trayectoria se topa con otro salto antes de resolver el primero,
el asunto se vuelve aún más complicado. Probablemente no sea la mejor idea tener
"flojeando" algunas docenas de líneas de procesamiento, para enfrentar el peor de los
casos.
Después de toda esta teoría respecto a lo que podría hacerse, regrese por un
momento a la máquina de ejemplo. Esta, no tiene distintas unidades de hardware para
extracción, decodificación, etc., de modo que no es posible formar estas líneas de
procesamiento, pero con cambios menores al microprograma, se puede lograr un número
limitado de traslapes entre las microinstrucciones de extracción y ejecución, la que también
es una forma de realizar las líneas.
En la figura 4-10, por ejemplo, si la siguiente microinstrucción pudiera extraerse de
alguna manera durante el sub ciclo 4, ya no se necesitaría el sub ciclo 1 y el reloj sólo
generaría impulsos para los sub ciclos 234234234. ..El principal problema surge con las
rnicroinstrucciones de salto condicional. Si la máquina esperara a que las líneas de estado
de la ALU estén disponibles antes de iniciar la extracción de la microinstrucción siguiente,
seria demasiado tarde. El ciclo habría prácticamente terminado y se podría conseguir poco
traslape. En algunas máquinas el problema se resuelve usando las líneas de estado de la
ALU del ciclo anterior que, por supuesto, deberán guardarse en biestables para evitar que
se desvanezcan. Estos valores están disponibles al comienzo de cada microinstrucción y por
tanto puede empezar la siguiente extracción inmediatamente, mucho antes de que se
termine la ejecución de la microinstrucción en curso. No es necesario decir que esto
complica en gran medida la vida del microprogramador.
Desde el punto de vista técnico, es posible escribir microprogramas para una máquina
de este estilo en una forma razonable. Por ejemplo, para examinar alguna palabra de la
memoria de anotaciones y saltar si es negativa, el microprograma puede pasar la palabra
por la ALU en una microinstrucción que no contenga un salto. La siguiente microinstrucción

127
será una no-operación con un salto condicional. Es decir, no hará nada excepto examinar
los bits de estado de la ALU, que se habían memorizado, y saltar. El precio a pagar por
programar en forma razonable es doblar la duración del salto, lo que no es muy deseable.
La única solución es conseguirse un frasco lleno de aspirinas y tratar de sacar el
máximo provecho de cada situación. Por ejemplo, el microprogramador podría hacer una
hipótesis de dónde suele saltar la microinstrucción y empezar a hacer el trabajo que
probablemente se necesite. Por desgracia, si el salto fuera a otra alternativa, sería
necesario eliminar parte de lo hecho.
He aquí un ejemplo sencillo: rescribimos las líneas 11 a 18 de la figura 4-16 para una
máquina con extracción y ejecución traslapadas de microinstrucciones. Los resultados se
muestran en la figura 4-26(a). En este ejemplo tenemos suerte, ya que después de
ejecutar la línea 11 sabemos que seguirá el código de ADDD o de SUBD, que empiezan por
la misma microinstrucción. Por tanto, basta poner la microinstrucción común en la línea 12
para ocupar la máquina mientras se realiza el salto.
Un ejemplo menos elegante es el de la figura 4-26(b). En la línea 52 sabemos que
vamos a entrar en la micro rutina de PSHI o en la de POPI, pero, lamentablemente no
empiezan por la misma microinstrucción. Supongamos, sin embargo, que un análisis
estadístico mostró que los programas del Mac-l usan PSHI muchas más veces que POPI.
Entonces podríamos proceder como se indica en la figura 4-24(b). Para PSHI todo va bien,
pero para POPI, cuando se llega a la línea 56, se ha iniciado una lectura en memoria de una
palabra incorrecta. Según los detalles específicos del hardware, puede ser posible o no "c"
abortar una lectura de memoria a medio realizar sin perturbar el funcionamiento. Si no
podemos abortarla, simplemente la terminamos y luego iniciamos la lectura correcta. En
este ejemplo POPI requiere 15 microinstrucciones en lugar de las 13 de la figura 4-16. Sin
embargo, si el uso del traslape reduce el tiempo básico de microinstrucción en 15%, incluso
POPI será más rápida que antes.

11: alu:=tir; 52:alu:=tir;


12:mar:=ir;rd; if n then 53:mar:=ac;rd;if n then
goto 16 goto 56
13:rd; 54:sp:=sp + (-1); rd
14ac:=mbr + ac; goto 0; 55:mar:=sp; wr; goto 10
56:rd;
16:ac:=ac + 1; rd; 57:mar:=sp; sp:=sp + 1;
17:a:=inv(mbr); rd;
18:ac:=ac + a; goto 0 58:rd;
59:mar:=ac; wr; goto 10;
(a) (b)

Fig. 4-26. (a) Un fragmento en lenguaje Pascal. (b) Como pudiera ser el
tratamiento por parte del compilador

La situación se volvería en extremo compleja si se utilizaran saltos condicionales de


alternativas múltiples, formados haciendo el O lógico de NZDA con los bits menos
significativos de ADDR en vez de comprobaciones sobre los bits individuales. Además, en
muchas máquinas, el traslape de la extracción y la ejecución de las microinstrucciones se
hace de tal modo que, al principio de la ejecución de la microinstrucción la elección de la
microinstrucción n + 1 ha de hacerse utilizando los bits de estado de la ALU de la
microinstrucción n - 1. No vamos a continuar profundizando en el tema, pero con esto basta
para entender completamente la definición de microprogramación dada por Rosin.

128
Memoria caché
Por tradición, las CPU han sido siempre más rápidas que las memorias y aunque se
han desarrollado las segundas, los CPU también lo han hecho, manteniendo así el
desequilibrio. Lo que esto significa en la práctica es que después de que la CPU envía una
solicitud a la memoria, debe permanecer ociosa durante un tiempo sustancial, aguardando a
que la memoria responda. Como se ha visto, es común que la CPU establezca una lectura
de memoria durante un ciclo del bus y no obtenga los datos hasta dos o tres ciclos más
tarde, aun cuando no haya estados de espera.
En realidad, el problema no es de tecnología sino económico. Los ingenieros saben
como construir memorias tan rápidas como las CPU, pero son tan caras que equipar a una
computadora con un megabyte o más es impensable (excepto quizá para las
supercomputadoras, en las que prácticamente no hay límite y el precio no representa
objeción). De ahí que la elección se reduce a tener una pequeña cantidad de memoria o una
gran cantidad de memoria lenta. Lo preferible seria una gran cantidad de memoria a un
bajo precio.
De sumo interés son las técnicas conocidas para combinar estos tipos de memoria a
fin de obtener, a bajo precio, la velocidad de la memoria rápida y la capacidad de la
memoria lenta. A la memoria pequeña y rápida se le llama caché (del francés cacher que
significa esconder) y está bajo el control del microprograma. En seguida, se describirá cómo
se utilizan y funcionan estas memorias. Se puede encontrar más información en (Agarwall
op. cit., 1989; Farrens y Pleszkun, 1989; Kabakibo op. cit., 198.7;Kessler op. cLt..it'1989;
Pohm y Agarwall, 1983; Przybylski op. cit., 1989; Smith, 1982; y Wang op. cit., 1989).
Desde hace años es sabido que los programadores no accesan las memorias en forma
completamente aleatoria. Si una referencia a memoria dada, es ala dirección A. es común
que la siguiente referencia se realice en los alrededores de
A. Un ejemplo sencillo es un programa en sí, con excepción de los saltos y las
llamadas a procedimientos, las instrucciones se extraen de localidades de memoria
consecutivas. Es más, la mayoría del tiempo de ejecución del programa se emplea en
iteraciones, en las que un número limitado de instrucciones se ejecutan de manera repetida.
En forma parecida, es común que en un programa manejador de matrices se efectúen
muchas referencias a la misma matriz, antes de cambiar a otra actividad.
Se le llama principio de localidad a la observación de que las referencias a memoria
realizadas en un intervalo de tiempo corto, tienden a usar sólo una fracción de la memoria
total, y representa la base para todos los sistemas de memoria caché. La idea general es
que cuando un palabra es referenciada, se le trae de la memoria grande y lenta hacia la
caché, de modo que la siguiente vez que se utilice, se pueda accesar muy rápido. En la
figura 4-27 se ilustra una distribución común de la CPU, la memoria principal y la caché. Si
una palabra se lee o escribe k veces en un intervalo corto, la computadora necesitará de 1
referencia a la memoria lenta y k -1 referencias a la memoria rápida. Entre más grande es
k, mejor es el desempeño general.

Podemos formalizar este cálculo llamado c al tiempo de acceso a la memoria caché, m

129
al tiempo de acceso a la memoria principal y h a la proporción de aciertos, que es la
fracción de todas las referencias que pueden ser satisfechas fuera de la caché. En el
pequeño ejemplo del párrafo previo, h = (k -1)/ k, algunos autores definen también la
proporción de fallas como 1- h.
Con estas definiciones podemos calcular el tiempo medio de acceso de la siguiente
manera:
tiempo medio de acceso = c + (1- h)m

Cuando h tiende a 1, todas las referencias pueden ser satisfechas en la memoria


caché y el tiempo de acceso se aproxima a c. Por otra parte, cuando h tiende a 0, se
necesita una referencia a memoria cada vez y el tiempo de acceso se aproxima a c + m,
primero un tiempo c para verificar (sin éxito) la caché y luego un tiempo m para efectuar la
referencia a memoria. En algunos sistemas, la segunda referencia puede iniciarse en
paralelo con la búsqueda en la caché, de modo que si no encuentra la palabra en ésta, el
ciclo de memoria ya ha comenzado. Sin embargo, esta estrategia es más complicada pues,
requiere que la memoria pueda detenerse sobre sus pistas, cuando la palabra fue localizada
en la caché. El algoritmo básico de búsqueda en la caché y el iniciar (o detener) la
referencia a la memoria principal dependiendo del resultado de dicha búsqueda, son
aspectos que maneja el microprograma.
Se utilizan dos formas diferentes de organización de la caché, junto con una tercera
que es un híbrido de las dos primeras. Para los tres tipos, se asume que la memoria sea de
2'.. bytes, dividida (de manera conceptual) en bloques consecutivos de b bytes, lo que da
un total de 2m / b bloques. Cada bloque tiene una dirección que es un múltiplo de b. El
tamaño b del bloque es por lo general una potencia de dos.
El primer tipo es la memoria caché asociativa, cuyo ejemplo se muestra en la figura
4-28. Consiste en cierto número de renglones o líneas, cada uno de los cuales contiene un
bloque y su número correspondiente, junto con un bit de Validez que indica si el renglón
está actualmente en uso o no. El ejemplo de la figura 4-28 ilustra una caché con 1024
renglones y una memoria con 224 bytes, dividido en 222 bloques de 4 bytes. En este tipo
de caché el orden de los accesos es aleatorio.

Al inicializar la computadora, todos los bits de Validez toman el valor O, para indicar
que ninguna entrada a la caché es válida. Suponga que la primera instrucción hace
referencia a la palabra de 32 bits que se encuentra en la dirección 0. El microprograma
checa todos los renglones de la caché buscando uno que sea válido y contenga el bloque
número 0. Al no encontrarlo, enviará una solicitud al bus para extraer de la memoria la
palabra 0. Si esta palabra se necesita de nuevo, la próxima vez será tomada de la caché,
eliminando la necesidad de una operación del bus.
Al correr el tiempo, más y más renglones de la caché se marcarán como válidos. Si el
programa completo y sus datos utilizan de 1024 palabras, todo el programa y sus datos
aparecerán en la caché y correrá a mayor velocidad, sin hacer ninguna referencia a la

130
memoria a través del bus. Si se necesita más de 1024 palabras, en algún momento la caché
estará llena y un renglón previo deberá descartarse para dar lugar a uno nuevo. En la
práctica, la decisión de cuál eliminar debe hacerse muy rápido (en nanosegundos). La VAX y
muchas otras máquinas seleccionan un renglón en forma aleatoria. En el capítulo 6 se
abordan otros algoritmos posibles bajo el título de memoria virtual, en donde ocurre el
mismo problema.
El aspecto que distingue a la memoria caché asociativa de los otros tipos, consiste en
que cada renglón contiene el número de bloque y su entrada. Cuando se presenta una
dirección de memoria, el microprograma debe calcular el número del bloque relevante
(fácil) y luego buscar ese número de bloque en la caché (difícil). A fin de evitar una
búsqueda lineal, la caché asociativa dispone de un hardware especial que puede comparar
cada entrada con el número de bloque dado en forma simultánea, en lugar de hacerlo en un
lazo de microprograma. Este tipo de hardware hace que dicha memoria sea cara.
Para reducir el costo, se inventó la memoria caché de mapeo directo. Este tipo evita la
búsqueda poniendo cada bloque en un renglón cuyo número se puede calcular fácilmente a
partir del número del bloque. Por ejemplo, el número de renglón puede ser el número de
bloque módulo el número de renglones. Con bloques de 4 bytes (una palabra) y 1024
renglones, el número de renglón que corresponde a la dirección A es igual a (A/4) módulo
1024. En el ejemplo de la figura 4-29 se puede observar que las palabras en las
direcciones 0,4096, 8192, etc., caen en el renglón 0; las palabras en las direcciones 4,4100,
8196, etc., se mapean al renglón 1 y así sucesivamente.

Mientras que las memorias caché de mapeo directo eliminan el problema de buscar,
crean por otro lado un nuevo problema; cómo indicar cuál de las muchas palabras que
corresponden al renglón lo está ocupando. En "efecto, se han creado 1024 clases de
equivalencia basada en los números de bloque módulo el tamaño de la caché. En el
ejemplo, el renglón 0 puede contener cualquiera de las palabras 0, 4096, 8192, etc. , la
forma de señalar cuál está en un momento dado en dicho renglón es poner parte de la
dirección en el campo etiqueta de la caché.
Este campo contiene aquella parte de la dirección que no puede calcularse a partir del
número de renglón.
Para hacer este punto más claro, considérese una instrucción en la dirección 8192 que
mueve la palabra ubicada en la dirección 4100 a la 12296. El número de bloque
correspondiente a la dirección 8192 se calcula dividiéndola entre 4 (tamaño del bloque del
ejemplo), para obtener 2084. En seguida, el número de renglón se calcula como 2048
módulo 1024, lo que es lo mismo que usar 10 bits de orden inferior de 2048. El número de
renglón es 0. Los 12 bits de orden superior contienen un 2, de modo que esa es la etiqueta.
La figura 4-29(a) muestra a la caché después de haber procesado las tres direcciones.
En la figura 4-29(b) se puede ver la dirección en forma separada. Los dos bits de
orden inferior son siempre 0 (ya que la caché trabaja con bloques enteros y éstos son
múltiplos del tamaño del bloque, 4 bytes en el ejemplo). En seguida está el número del
renglón (10 bits) y por último la etiqueta (12 bits). Es muy fácil construir hardware que
extraiga directamente el número de renglón y la etiqueta, de cualquier dirección de
memoria.

131
El hecho de que muchos bloques se mapeen en un mismo renglón puede causar
problemas. Supóngase que la instrucción moviera la dirección 4100 a la 12292 en lugar de
ala 12296; ambas direcciones se mapearían al renglón 1. Dependiendo de los detalles del
microprograma, la dirección que se calculara después permanecería en la caché, mientras
que la otra sería purgada. Esto no es un desastre en sí pero sí se degrada el desempeño de
la caché si muchas palabras de las utilizadas resulta que están en el mismo renglón. La
meta, después de todo, es mejorar el rendimiento.
La salida de esta dificultad consiste en expandir la caché de mapeo directo con más de
un registro por renglón. La PDP-11/70, por ejemplo, tenía dos registros por renglón. A la
memoria caché con varios registros por renglón se le denomina memoria caché asociativa
agrupada y se ilustra en la figura 4-30.

Tanto la caché asociativa como la de mapeo directo son de hecho, casos especiales de
la asociativa agrupada. Si se reduce el número de renglones a 1, todos los registros de la
caché estarán en el mismo renglón y habrá que distinguirlos sólo por sus etiquetas ya que
todos caen en la misma dirección. Este caso es sólo una caché asociativa. Si n = 1 se
regresa a una memoria caché de mapeo directo con un registro por renglón.
Las memorias caché asociativas y de mapeo directo tienen diferentes puntos fuertes y
débiles, la de mapeo directo es más sencilla, fácil de construir y tiene un tiempo de acceso
más rápido, ya que puede encontrar el renglón adecuado indexando en la caché con una
porción de la dirección como índice. Por otra parte, la caché asociativa tiene una mayor
proporción de aciertos para un número dado de renglones, pues nunca se presentan
conflictos. No se puede dar el caso de que k palabras importantes no puedan ubicarse
simultáneamente en la caché porque tuvieron la mala suerte de caer en el mismo renglón.

132
Cuando se diseña cualquier computadora real, se realiza siempre una intensa simulación de
la caché para observar el desempeño que se está adquiriendo ya que precio.
Además de determinar el número de renglones, los diseñadores deben también
seleccionar el tamaño del bloque. En los ejemplos, se ha utilizado (por simplicidad) una
palabra de 32 bits, pero también es posible y se usan con frecuencia 2, 4, 8, o más
palabras. Una ventaja de usar un tamaño grande de bloques es que hay menor gasto
general para extraer un bloque de ocho palabras que para ocho bloques de una palabra, en
especial si el bus permite transferencias en bloque. La desventaja es que puede no
necesitarse todas las palabras, así que algunas extracciones pueden desperdiciarse.
Otra parte importante en el diseño de la caché es cómo manejar las escrituras. Por lo
general se utilizan dos estrategias. En la primera denominada con escritura a memoria,
cuando una palabra se escribe en la caché de inmediato se escribe en la memoria. Este
enfoque asegura que los registros en la caché son siempre los mismos que los
correspondientes a la memoria.
La otra política de escritura llamada retrocopiado, no actualiza la memoria siempre
que cambia la caché, sino que sólo lo hace cuando un registro es eliminado de la caché para
dar lugar a que uno nuevo ocupe ese renglón. Cuando se utiliza el retrocopiado, es
necesario un bit en cada registro de la memoria caché que indique si éste ha cambiado
desde que se cargó en ésta. Al igual que en todos los demás aspectos de diseño de la
caché, existen aquí ciertas consideraciones. Es obvio que con escritura a memoria cause
más tráfico del bus que el retrocopiado. Por otra parte, si una CPU inicia una transferencia
de entrada / salida de memoria a disco y la memoria está incorrecta (porque palabras que
se modificaron recientemente aún no han sido copiadas a memoria desde la caché), se
escribirán datos incorrectos en el disco. Este problema se puede evitar, pero agrega
complejidad al sistema.
Si el porcentaje de lecturas es más alto que el de escrituras, puede resultar más
simple usar la caché con escritura a memoria y aceptar el tráfico del bus. Sin embargo, si
existen muchas escrituras, pudiera ser mejor utilizar el retrocopiado y hacer que el
microprograma explícitamente limpie la caché por completo antes de iniciar una operación
de E/S.
Otro aspecto de diseño relacionado con las escrituras, es qué hacer si una escritura
provoca una pérdida en la caché. Una estrategia consiste en extraer la palabra en la caché y
luego actualizarla, si se está usando caché con escritura a memoria. Una estrategia
diferente es escribir directamente a memoria, pero no extraer la palabra a la caché excepto
en lecturas. A este aspecto se le conoce con el nombre de política de asignación de
escrituras. Ambos métodos descritos se encuentran en uso.
Al mejorar la tecnología de los circuitos integrados, ha sido posible poner caches muy
rápidas, directamente en la pastilla de la CPU. Debido a la falta de área en la pastilla, estas
memorias son pequeñas, así que sería deseable tener dos niveles de caché, una en la
pastilla de la CPU y otra en la tarjeta. Si no se puede encontrar una palabra en la caché
integrada en la pastilla, se hace una solicitud ala caché en el nivel de tarjeta. Si falla, se
utiliza la memoria principal.
Considerando todo lo anterior, el uso de la memoria caché es una técnica importante
para incrementar el rendimiento de un sistema. Casi todas las computadoras de mediana y
gran escala utilizan alguna forma de esta técnica. Se puede encontrar información adicional
sobre el tema en (Hill, 1988; Przybylski op. cit., 1988; Short y Levy, 1988; y Smith, 1986,
1987).

133
CONCLUSIÓN

134
BOLILLA II (Parte 3): EL
NIVEL DE MAQUINA
CONVENCIONAL

135
INDICE

INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37

136
Implementación de funciones booleanas ..........................................................................38
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103

137
Pilas .................................................................................................................................103
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174

138
Corrutinas ........................................................................................................................179
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239

139
Modo de direccionamiento indirecto ..........................................................................240
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296

140
BOLAS GIRATORIAS: .................................................................................................296
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310

141
INDICE...................................................................................................................................311
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

142
INTRODUCCIÓN

143
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

EL NIVEL DE MÁQUINA CONVENCIONAL


En este capítulo se introduce el nivel de máquina convencional (nivel 2) y se revisan
muchos aspectos de su arquitectura. Históricamente, el nivel 2 se desarrolló antes que los
demás, y por ello aún se le suele denominar (incorrecta- mente) "el" lenguaje de máquina.
Esta situación se ha establecido así porque en muchas máquinas el microprograma está en
memoria de lectura solamente, lo que significa que los usuarios (a diferencia del fabricante
de la máquina) no pueden escribir programas para el nivel 1. Incluso en máquinas que
pueden ser microprogramazas por el usuario, la enorme complejidad de la arquitectura del
nivel 1 es suficiente para descorazonar a los programadores más atrevidos. Debido a que no
hay máquinas con protecciones de hardware al nivel 1, tampoco, es posible permitir a una
persona que depure microprogramas nuevos mientras otra esté usando la máquina. Esta
característica inhibe aún más la práctica de la microprogramación por los usuarios.

EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL

Más que intentar la definición rigurosa de lo que es el nivel de la máquina


convencional (10 que de cualquier manera es casi imposible), se presentará este nivel
viendo los ejemplos usuales, primero Intel y después Motorola. El propósito de estudiar las
familias de CPU existentes es mostrar como las ideas vertidas aquí pueden aplicarse en el
"mundo real". Se compararán y verán los contrastes de estas máquinas en diversas formas,
para mostrar cómo diferentes diseñadores toman distintas elecciones.
No debe llegarse a la conclusión de que el resto de este libro se refiere a la:
programación de las CPU de Intel y Motorola. Lejos de eso, estas máquinas se usarán para
ilustrar la idea del diseño de una computadora como una serie de niveles. Se examinarán
varias de las características de sus respectivas arquitecturas y se proporcionará, donde sea
necesario, información acerca de su programación. Sin embargo, no se pretende presentar
una descripción completa. Para un conocimiento cabal de todos los detalles de estas
máquinas, sírvase consultar las publicaciones del fabricante.
Por último, este capítulo se refiere en principio a la arquitectura e instrucciones
utilizadas por el usuario común (v.g., programas de aplicación). Aquellas que son de interés
para los diseñadores de sistemas operativos, se omitirán o diferirán hasta la exposición del
tema en el capítulo 6.

144
FORMATOS DE INSTRUCCIÓN

Un programa consta de una secuencia de instrucciones, cada una de las cuales


especifica una acción particular. Una parte de la instrucción, llamada código de operación,
señala la acción que va a ejecutarse. Muchas instrucciones contienen los datos que usan o
especifican dónde están. Por ejemplo, una instrucción que compare dos caracteres para ver
si son iguales debe especificar qué caracteres se han de comparar. Todo lo relativo a la
especificación de dónde está el dato (dirección) se llama direccionamiento y se verá en la
sección 5-3.
La figura 5-17 muestra varios formatos típicos de instrucciones de nivel 2. En
algunas máquinas de nivel 2 todas las instrucciones tienen igual longitud; en otras pueden
haber dos o tres longitudes. Por otra parte, las instrucciones pueden ser de longitud menor,
igual o mayor que la longitud de palabra.
Algunas relaciones posibles entre longitudes de instrucción y de palabra se muestran
en la figura 5-18.

Código de operación
(a)
Código de operación Direccionamiento
(b)
Código de operación Direccionamiento 1 Direccionamiento 2
(c)
Fig. 5-17. Tres formatos típicos de instrucción: a) Instrucción sin
dirección. b) Instrucción con una dirección. c) Instrucción con dos
direcciones.

Palabra 1 Palabra 1
Direccionamiento Direccionamiento
0 Instrucción 0 Instrucción Instrucción Instrucción Instrucción
1 Instrucción 1 Instrucción Instrucción Instrucción Instrucción
2 Instrucción 2 Instrucción Instrucción Instrucción Instrucción
3 Instrucción 3 Instrucción Instrucción Instrucción Instrucción
(a) (b)

Direccionamiento Direccionamiento
0 Instrucción 0 Instrucción Instrucción Instrucción Instrucción
1 1 Instrucción Instrucción
Instrucción
2 2 Instrucción Instrucción Instrucción
3 Instrucción 3 Instrucción Instrucción Instrucción
4 4 Instrucción Instrucción Instrucción
5 Instrucción 5 Instrucción Instrucción
6 6 Instrucción
7 Instrucción 7 Instrucción Instrucción
(c) (d)
Fig. 5-18. Algunas relaciones posibles entre la longitud de la instrucción y la de la
palabra

145
Criterios de diseño de formatos de instrucción

Cuando un grupo de diseñadores de una computadora ha de elegir un formato (o


formatos) de instrucción, debe considerar multitud de factores. El primero, y el más
importante, es que las instrucciones cortas son mejores que las largas. Un programa
compuesto den instrucciones de 16 bits ocupa solamente la mitad del espacio de memoria
que uno con n instrucciones de 32 bits. Después de todo, la memoria no es gratuita y por
eso los diseñadores no desean malgastarla inútilmente.
Una segunda razón es que la memoria tiene una velocidad de transferencia particular,
determinada por su tecnología y diseño. La velocidad de transferencia o caudal de una
memoria es el número de bits por segundo que pueden ser leídos de ella. Una memoria
rápida puede dar el procesador (o a un dispositivo de E/S) más bits por segundo que una
memoria lenta.
Si el caudal de una memoria particular es de t bits por segundo y la longitud media de
instrucción es de r bits, entonces la memoria puede entregar al máximo t/r instrucciones
por segundo. Esto significa que la velocidad de ejecución de las instrucciones (es decir, la
velocidad del procesador) depende de la longitud de ellas. Las más cortas equivalen a un
procesador más rápido. Si el tiempo requerido para ejecutar una instrucción es muy largo
en comparación con el requerido para extraería de la memoria, entonces el tiempo de
extracción de la instrucción no será tan importante. Sin embargo, con CPU rápidas las
memorias suelen ser un cuello de botella. En consecuencia, un importante criterio de diseño
consiste en aumentar el número de instrucciones extraídas por segundo.
Un segundo criterio de diseño de los formatos de instrucción es dejar suficiente sitio
en la instrucción para expresar todas las operaciones deseadas. Es imposible concebir una
máquina con 2n operaciones y una instrucción con menos de n bits. Simplemente no habrá
suficiente espacio en el código de operación para indicar qué instrucción se requiere.
Un tercer criterio consiste en que es muy conveniente que la longitud de la palabra de
máquina sea un múltiplo entero de su longitud de carácter. Si el código de los caracteres
tiene k bits, la longitud de palabra deberá ser k, 2k, 4k, 5k y así sucesivamente; de otra
manera, se derrochará espacio cuando se almacenen caracteres. Naturalmente, es posible
almacenar 3.5 caracteres por palabra, pero ello causará una grave ineficiencia en el acceso
a los caracteres. Las restricciones Impuestas en la longitud de palabra por el código de los
caracteres afectan a la longitud de instrucción, ya que o bien una instrucción debe ocupar
un número entero de palabras o bien un número entero de instrucciones debe llenar una
palabra. Seria probablemente una catástrofe un diseño con un carácter de 9 bits, una
instrucción de 12 bits y una palabra de 31 bits.
Un cuarto criterio concierne al número de bits del campo de dirección. Consideremos
el diseño de una máquina con un carácter de 8 bits (posiblemente 7 bits más el de paridad)
y una memoria principal que deba contener 215 caracteres. Los diseñadores podrán optar
por asignar direcciones consecutivas a unidades de 8, 16, 24 o 32 bits, entre otras
posibilidades.
Imaginemos qué ocurriría si el equipo de diseño degenerase en dos facciones rivales,
una partidaria de hacer del byte la unidad básica de memoria y la otra partidaria de que lo
sea la palabra de 32 bits. El primer grupo propondrá una memoria de 216 bytes numerados
0, 1, 2, 3,..., 65535; el otro, una de 214 palabras numeradas 0,1,2,3,..., 16383.
El primer grupo aducirá que, para comparar dos caracteres en la organización de
palabras de 32 bits, el programa no solamente tendría que extraer las palabras que
contienen los caracteres, sino extraer también cada carácter de su palabra para
compararlos. Hacer esto cuesta instrucciones adicionales y por lo tanto derrocha espacio.
Además, la organización de 8 bits proporciona una dirección para cada carácter, haciendo
así más fácil la comparación.
Los partidarios de la palabra de 32 bits replicarán que su propuesta requiere
solamente 214 direcciones diferentes, dando una longitud de dirección de sólo 14 bits,
mientras la propuesta del byte requiere 16 bits para direccionar la misma memoria. Una
dirección más corta significa una instrucción más corta, lo que no solamente ocupa menos
espacio sino que también requiere menos tiempo de extracción. De igual modo, podrían
retener la dirección de 15 bits para hacer referencia a una memoria cuatro veces mayor que

146
la que admite la organización de 8 bits.
Este ejemplo demuestra que, para tener una mayor resolución de memoria, se debe
pagar el precio de direcciones más largas, lo que, en general, significa instrucciones más
largas. Lo decisivo será una organización de memoria en que cada bit sea direccionable
directamente (por ejemplo, en la Burroughs B1700), y en el otro extremo será una memoria
compuesta de palabras muy largas (por ejemplo, la serie Cyber de CDC tiene palabras de
60 bits).

Códigos de operación con extensión

En la sección anterior vimos cómo se puede llegar a un compromiso entre direcciones


cortas y una buena resolución de memoria. En esta sección examinaremos los compromisos
entre los códigos de operación y las direcciones. Consideremos una instrucción de n + k bits
con un código de operación de k bits y una única dirección den bits. Esta instrucción admite
2k operaciones diferentes y 2n celdas de memoria direccionables. Alternativamente, los
mismos n + k bits podrían repartirse entre un código de operación de k -l bits y una
dirección de k + 1 bits, lo que supone la mitad de instrucciones pero el doble de memoria
direccionable, o igual cantidad de memoria pero el doble de resolución. Un código dc
operación de k + 1 bits y una dirección de n-l bits da más operaciones. El precio es, sin
embargo, o un menor número de células direccionables o peor resolución con igual cantidad
de memoria. Es posible encontrar soluciones intermedias entre los bits del código de
operación y los de la dirección, además de la muy sencilla que se acaba de describir. El
esquema descrito en el párrafo siguiente se llama código de operación con extensión.

El concepto de un código de operación con extensión puede verse más claramente


mediante un ejemplo. Consideremos una máquina en la que las instrucciones tienen 16 bits
de longitud y las direcciones 4 bits, como muestra la figura 5-19. Esta situación podría ser
razonable en una máquina que tuviese 16 registros (por tantas direcciones de registro de 4
bits) en los que se efectuaran todas las operaciones aritméticas. Un diseño posible seria un
código de operación de 4 bits y tres direcciones en cada instrucción, que dan 16
instrucciones de tres direcciones.

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

Código de operación Dirección 1 Dirección 2 Dirección 3


Fig. 5-19. Instrucción con código de operación de 4 bits y tres campos de dirección de 4 bits cada uno

Sin embargo, si los diseñadores necesitan 15 instrucciones de tres direcciones, 14


dedos, 31 de una y 16 sin dirección, pueden usar los códigos de operación 0 a 14 como
instrucciones de tres direcciones, pero interpretar el código de operación 15 de manera
diferente (véase figura 5-20).

147
El código de operación 15 indica que el código de operación está contenido en los bits
8 a 15 en lugar de estar en los bits 12 a 15. Los bits 0 a 3 y 4 a 7 for man dos direcciones,
como es usual. Las 14 instrucciones de dos direcciones tienen todas 1111 en los cuatro bits
de la izquierda y números desde 0000 a 1101 en los bits 8 a 11. Las instrucciones con 1111
en los cuatro bits de la izquierda y 1110 o 1111 en los bits 8 a 11 serán tratados
especialmente, como si sus códigos de operación estuviesen en los bits 4 a 15. El resultado
permite 32 nuevos códigos de operación. Puesto que solamente se necesitan 31.
111111111111 se interpretan como si el código de operación real estuviera en los bits 0 a
15, con lo que se obtienen 16 instrucciones sin dirección.
Nótese que, según se avanza en esta explicación, el código de operación se va
haciendo más y más largo; esto es, las instrucciones de tres direcciones tienen un código de
operación de 4 bits, las dedos direcciones tienen uno de 8 bits, las de una dirección lo
tienen de 12 bits y la de ninguna dirección lo tienen de 16 direcciones.
En la práctica, los códigos de operación extendidos no se comportan de manera tan
limpia y regular como en el ejemplo, en el que se asumió que todos los operandos requieren

148
de 4 bits. De hecho, se requiere con frecuencia una diversidad de longitudes y formatos.

Ejemplos de formatos de instrucciones

En esta sección, se examinarán los formatos de instrucciones de la PDP-11 de Intel y


de Motorola en el nivel de máquina convencional. Se incluye aquí a la PDP-11, pues su
limpieza y regularidad da luz a los futuros arquitectos de conjuntos de instrucciones.

La PDP-11

La mayoría de las instrucciones dedos operandos de la PDP-11 se codifican como se


muestra en la figura 5-21. Cada una tiene un código de operación de 4 bits y dos campos
de dirección de 6 bits. El bit más a la izquierda del código de operación indica si la
instrucción opera en bytes o en palabras. Los campos de direcciones se subdividen en dos
campos de 3 bits, uno para el modo y otro para el registro (la PDP-11 tiene E registros). Los
campos de modo indican si el operando está en un registro, en la memoria, si es una
constante, etc. Los mismos ocho modos que están disponibles para los operandos de origen,
lo están también para los de destino y cualquier código de operación se puede usar con
cualquier operando, fuente o destino. A un juego de instrucciones en el que el método para
especificar las direcciones de los operandos es independiente del código de operación, se le
denomina ortogonal. Quienes programan compiladores tienen preferencia por los juegos de
instrucciones ortogonales.
Para unas cuantas instrucciones, incluyendo a las de un operando, la PDP-11 utiliza un
esquema de código de operación extendido, usando códigos xlii (binario) como escape hacia
códigos de operación más largos. También aquí se presenta una regularidad considerable,
por ejemplo, la mayoría de las instrucciones de un operando usan códigos de operación de
10 bits y los mismos 6 bits para los campos de modo y registro que en las instrucciones de
dos operandos. Las instrucciones de la PDP-11 que direccionan memoria, tienen una o dos
palabras adicionales de 16 bits en seguida de la instrucción para especificar la dirección.

Direccionamiento

Las instrucciones pueden clasificarse según el número de direcciones que usan.


Recuérdese que una colección numerada de registros forma, de hecho, una memoria de alta
velocidad y define un espacio de direcciones. Una instrucción que sume el registro 1 con el
registro 2 debería clasificarse como de dos direcciones porque la instrucción debe
especificar qué registros han de sumarse, de la misma manera que una instrucción que
sume dos palabras de memoria debe especificar qué palabras se suman.
Son comunes instrucciones que especifican 1, 2 y 3 direcciones. En muchas máquinas
que hacen operaciones aritméticas con tina sola dirección, un registro especial llamado
acumulador proporciona uno de los operando. En estas máquinas la dirección es
generalmente la de una palabra de memoria m donde está situado el operando. La
instrucción de suma que especifica la dirección m tiene el efecto de

acumulador: = acumulador + memoria [m]

Las instrucciones de suma con dos direcciones usan una de las direcciones como
fuente y la otra como destino. La fuente se añade al destino:

destino: = destino + fuente

Las instrucciones de tres direcciones especifican dos fuentes y un destino. Las dos
fuentes se suman y se guardan en el destino.
Hasta ahora hemos prestado poca atención a la forma en que son interpretados los
bits de un campo de dirección para encontrar el operando. Una posibilidad consiste en que
contengan la dirección de memoria del operando. Sin embargo existen tambien otras

149
posibilidades. Exploraremos algunas de ellas en las secciones siguientes.

Direccionamiento inmediato

El modo más simple de que una instrucción especifique un operando es que la parte
de dirección de la instrucción contenga ya el operando mismo, en lugar de una dirección u
otra información que describa dónde esta. Este operando se denomina operando
inmediato, porque se extrae en forma automática de la memoria, al mismo tiempo que la
instrucción; de aquí que esté inmediatamente disponible para su utilización.
El direccionamiento inmediato tiene la virtud de no requerir de referencias adicionales
a memoria para extraer el operando. Tiene la desventaja de restringir el operando a un
número que pueda caber en el campo de dirección. En una instrucción con una dirección de
tres bits (por ejemplo, un campo de registro), los operandos sólo podrán tener tres bits, lo
que [imita bastante su utilidad.
Las CPU de Intel no poseen un modo de direccionamiento para operandos inmediato.
En su lugar, tienen una gran cantidad de instrucciones distintas en las que uno de los
operandos es inmediato. Por ejemplo, en la figura 5-5 la instrucción ADD se ve correcta y
ortogonal como en la PDP-1 1. En realidad, se utilizan nueve códigos de operación para
ADD, cinco de ellos para operandos inmediatos, dependiendo de la longitud de éstos (8,16 o
32 bits) y de como se especifique el destino.
Los 680x0 tienen un modo de direccionamiento inmediato, de forma que cualquier
operando fuente puede ser una constante. En algunas instrucciones del 68000 (ver figura
5-24) solo se aceptan constantes de 8 a 16 bits, pero en el 68020 y el 68030 se permiten
las tres longitudes en cualquier parte. Además, instrucciones especiales como ADDI, ADDQ
y CMPI permiten que las instrucciones inmediatas se codifiquen en forma más eficiente.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADDQ 0 1 0 1 Dato 0 Modo Reg
SUBQ 0 1 0 1 Dato 1 Modo Reg
SCC 0 1 0 1 Condición 1 1 Modo Reg
DBCC 0 1 0 1 Condición 1 1 0 0 1 Reg
Fig. 5-24. Cuatro instrucciones de la 68000.

Direccionamiento directo

Otro método sencillo de especificar un operando es dar la dirección de la palabra de


memoria donde está contenido. Este proceso se llama direccionamiento directo. Se
discutirán más adelante los detalles por ¡OS que la computadora sabe qué direcciones son
inmediatas y cuáles son directas. Existen en general dos enfoques: usar códigos de
operación diferentes, o usar un modo de direccionamiento especial para cada tipo de
operando.
Todas las CPU de Intel tienen direccionamiento directo. Tanto Cl 8088 como el 80286
utilizan direccionamiento directo de 16 bits. El 80386 usa direcciones de 16 bits en los
modos real y virtual y segmentos de 16 bits en el modo protegido. En el modo protegido de
32 bits, las direcciones directas tienen 32 bits de longitud. Nótese que en todos los casos las
direcciones directas son demasiado cortas para cubrir todo el espacio de direcciones,
Los 680x0 tienen dos formas de direccionamiento directo, una con una dirección de 16
bits y otra con una de 32 bits. Se puede accesar a las direcciones de los primeros 64K de
memoria con la forma corta, pero las direcciones que superan los 64K necesitan la forma
larga. Estas dos formas se indican por los valores del campo MODO de tres bits, y por tanto
se aplican a todas las instrucciones de la figura 5-23 que tienen uno o más campos de
OPERANDO.

150
Direccionamiento de registros

El direccionamiento de registros es conceptualmente igual que el direccionamiento


directo. En esta forma de direccionamiento el campo de dirección contiene el número del
registro donde está almacenado el operando. Una máquina con 16 registros y 65 536
palabras de memoria tiene realmente dos espacios de direcciones. Se puede considerar que,
en dicha máquina, una dirección tiene dos partes: a) un bit que indica sise desea un
registro o una palabra de memoria y b) un campo de dirección que indica el registro o
palabra de memoria que se desea. Puesto que hay menos registros que palabras de
memoria, se necesitan direcciones más pequeñas para éstos; por eso se utiliza a menudo
un formato de instrucción diferente para operandos en registro y para operandos en
memoria.
Si hubiera una instrucción de registros por cada instrucción que direccionan memoria,
la mitad de los códigos de operación se referirían a operandos situados en memoria y la
otra mitad a operandos situados en registros. Seria necesario un bit en el código de
operación para especificar qué espacio de direcciones se va a utilizar. Se verá más claro que
estamos usando dos espacios de direcciones si dicho bit se traslada desde el campo de
código de operación al de dirección. El bit indicaría entonces qué espacio de direcciones
usar.
Se diseñan máquinas Con registros por dos razones: a) los registres son más rápidos
que la memoria Central, y b) como hay pocos, sólo se necesitan unos cuantos bits para
direccionarlos. Por desgracia> el tener 80 15 registros complica en gran medida la
programación porque deben tomarse decisiones respecto a los operandos y a los resultados
intermedios que van a conservarse en el limitado número de registros y respecto a los que
van a guardarse en la memoria central. W. L. van del Poel (1958), señaló con acierto que
las computadoras deberían estar dotadas de 0, 1 o suficientes ejemplares de cada recurso
para que los programadores no perdieran el tiempo pensando qué hacer si se acaban (regla
de ninguno, uno o infinitos).
Tanto las pastillas de Intel como las de Motorola tienen un amplio repertorio de
instrucciones que toman sus operandos de registros y depositan sus resultados también en
registros.

Direccionamiento indirecto

En el direccionamiento directo la dirección especifica la palabra de memoria o registro


que contiene el operando. En el indirecto la dirección específica la palabra de memoria o
registro que contiene no el operando, sino la dirección del operando.
Primero, el contenido de la posición ¡000 se lleva a un registro interno de la CPU. Este
número de 15 bits (1510) no se pone en R1. Si así fuera, como en la figura 5-25(a),
tendríamos una instrucción con direccionamiento directo. En vez de eso, se extrae el
contenido de la posición 1510 y se pone en R1. El contenido de la posición 1000 no es el
operando sino que "apunta" al operando. Por eso se dice que es un apuntador.
Todos los procesadores de Intel tienen direccionamiento indirecto a través de un
registro. Por ejemplo, es posible poner un apuntador en SI y especificar que el operando
está ubicado en memoria en la dirección a la que apunta SI. En el 8088 y en el 80286 sólo
se pueden direccionar en forma indirecta los registros BX, SI y DI; en tanto que en el 80385
se pueden utilizar todos los registros. No es posible ¡levar a cabo el direccionamiento
indirecto en ninguno de éstos utilizando un apuntador en la memoria.

151
El 68000 permite el direccionamiento indirecto a través de los registros de direcciones
mas no de otra forma. En el 68020 yen el 68030, el direccionamiento indirecto se puede
realizar a través de memoria, en diversas formas. Esta es una de las principales diferencias
entre el 68000 y las CPU más recientes.

Indexación

Muchos algoritmos exigen la realización de operaciones sobre una secuencia de datos


estructurados, almacenados en posiciones de memoria consecutivas. Por ejemplo,
consideremos un bloque de n palabras de máquina que ocupan las posiciones

A, A + 1, A + 2 ,..., A + n - 1

que deben ser trasladadas a las posiciones

B, B + 1, B + 2 ,..., B + n - 1

Suponiendo que la máquina tenga una instrucción

MOVE A,B

que traslade el contenido de la posición A a la B, se podría ejecutar esta instrucción y


modificarla para obtener

MOVE A + 1, B + 1

ejecutarla otra vez, modificarla una vez más y repetir el ciclo hasta que las n palabras
hayan sido copiadas.
Aunque durante un tiempo los programas que se modificaban a sí mismos eran muy
populares, ahora se consideran una técnica de programación poco afortunada. Entre otras
razones porque son difíciles de depurar y obstaculizan la compartición de un programa entre
varios usuarios de un sistema de tiempo compartido.
El problema de copiar podrá también resolverse mediante direccionamiento indirecto.

152
La dirección de A se cargará en un registro o en una palabra de memoria. Lo mismo se hará
con la dirección de B. La instrucción MOVE usa dichos registros o palabras como
apuntadores. Después de copiar cada palabra, ambos apuntadores se incrementarán en 1
unidad. Naturalmente los apuntadores son parte de los dalos, no del programa, y por tanto
no son compartidos por usuarios simultáneos.
Otra solución consiste en tener uno o más registros llamados registros de índice,
que funcionan como sigue. Los campos de dirección tienen dos panes: la dirección del
registro de índice y una constante. La dirección del operando es la suma de la constante y el
contenido del registro de Índice. En el ejemplo anterior, si ambas direcciones se indexaran
usando un registro de índice que contuviera el entero k, la instrucción MOVER A, B
trasladaría el contenido de la posición de memoria A + k a la B + k. Si inicializamos el
registro de Índice a 0 y lo incrementamos en uno después de copiar cada palabra, sólo será
necesario un registro para la iteración de copia. Además, incrementar un registro es más
rápido que incrementar una posición de memoria.
También suele usarse la indexación para acceder a un campo determinado de una
estructura, si se conocen la dirección de comienzo de la estructura y la posición del campo
dentro de ella. Las variables locales de un procedimiento se accesan en esta forma.
En el ejemplo precedente era necesario incrementar explícitamente el registro índice
después de cada uso del mismo. La necesidad de incrementar o decrementar un registro
índice justo antes o después de usarlo es tan corriente, que algunas computadoras cuentan
con instrucciones especiales, modos de direccionamiento o incluso registros índice
especiales que automáticamente se incrementan o decrementar. La modificación automática
de un registro índice se llama auto-indexación.
Tanto las pastillas de Intel como las de Motorola tienen una diversidad de modos de
direccionamiento que involucran indexación. En el caso de los 680x0, también tienen auto-
indexación.

Direccionamiento por medio de pilas

Ya se ha dicho que conviene tener instrucciones de máquina lo más breves posible


para ahorrar tiempo de CPU y memoria. La reducción de las longitudes de las direcciones se
puede llevar al extremo de tener instrucciones sin dirección, únicamente con código de
operación. Aunque parezca increíble, esta situación es posible: se lleva a cabo organizando
la máquina a base de una estructura de datos llamada pila.
Una pila consta de datos elementales (palabras, caracteres, bits, etc.) almacenados
en orden consecutivo en la memoria. El primer dato introducido en la pila se dice que está
en el fondo de ella. El que se ha introducido más recientemente se dice que está en su
cima. Hay siempre un registro o una palabra de memoria asociada a la pila que contiene la
dirección de su cima. Se denomina apuntador de pila.
Aunque ya estudiamos las pilas en el capitulo 4, aquí las revisaremos brevemente,
porque emplearlas para hacer aritmética es algo diferente que usarlas para guardar
variables locales (aunque, por supuesto, se pueden combinar). La figura 5-26 ilustra el
funcionamiento de una pila. En la figura 5-26(a) hay ya dos datos en la pila. El fondo de la
pila está en la posición 1000 de la memoria y la cima en la posición 1001. El apuntador de
pila contiene 1001, que es la dirección del dato que está en la cima de la pila; es decir,
"apunta" hacia la cima. En la figura 5-26(b) se ha introducido un 6 en la pila y el
apuntador indica 1002 como una nueva cima. En la figura 5-26(c) se ha apilado un 75,
tomando el apuntador el valor 1003. En la figura 5-26(d) se han desapilado el 75.

153
Las computadoras que están orientadas a pila tienen una instrucción para apilar el
contenido de una posición de memoria o de un registro. Tal instrucción debe copiar el dato e
incrementar el apuntador de la pila. Igualmente, una instrucción para extraer el contenido
de la cima de la pila y llevarlo a un registro o a una posición de memoria debe hacer una
nueva copia en el sitio apropiado y decrementar el puntero de pila. Algunas computadoras
tienen sus pilas de arriba a abajo, de manera que los datos nuevos se introducen en
posiciones de memoria consecutivas en orden descendente, en lugar de hacerlo en
posiciones consecutivas en orden ascendente, como en la figura 5-26.
Las instrucciones sin direcciones se usan en asociación con una pila. Esta forma de
direccionamiento especifica que los dos operandos se desapilan uno después de otro, se
realiza la operación (por ejemplo, una multiplicación o un Y lógico) y el resultado se vuelve
a introducir en la pila. La figura 5-27(a) muestra una pila con cuatro datos. Una
instrucción de multiplicar tiene el efecto de desapilar el 5 y el 6, reajustando temporalmente
el apuntador a 1001. Una vez hecha la operación, el resultado, 30, se apila como se ilustra
en la figura 5-27(b). Si posteriormente se realizara una suma, se obtendrá el resultado
mostrado en la figura 5-27(c).

154
Notación polaca inversa

Desde hace mucho tiempo es tradicional en matemáticas escribir el operador entre los
operandos, como en x + y, en lugar de escribirlo después de ellos, como en x y +. La
notación que incluye el operador entre los operandos se llama infija. La que pone el
operador después de los operandos se llama notación posfija o, más comúnmente, notación
polaca inversa por ser el lógico polaco J. Lukasiewicz (1958) quien investigó sus
propiedades.
La notación polaca inversa tiene algunas ventajas sobre la notación infija para
expresar fórmulas algebraicas. Primero, cualquier fórmula puede ser expresada sin
paréntesis. Segundo, es muy conveniente para evaluar fórmulas en computadoras con pilas.
Tercero, los operadores infijos tienen precedencias, que son arbitrarias e indeseables. Por
ejemplo, sabemos que a x b + c significa (a x b) + c y no a x (b + c), porque la
multiplicación ha sido definida arbitrariamente como precedente sobre la suma. La notación
polaca inversa elimina esta incomodidad.
Existen diversos algoritmos con los que se convierten fórmulas escritas mediante
notación infija en otras escritas en polaca inversa. El que se da más adelante es una
adaptación de una idea debida a E. W. Dijkstra. Supone que una fórmula está compuesta de
los siguientes símbolos: variables, los operadores binarios (de dos operandos) +, —, * y /
los paréntesis abierto y cerrado. Para marcar los limites de una fórmula, insertaremos el
símbolo ⊥ después del último símbolo y antes del primero.
La figura 5-28 muestra un trayecto de ferrocarril desde Valencia a Madrid, con una
bifurcación que desvía hacia Granada. Cada símbolo de la fórmula se representa por un
vagón de ferrocarril. El tren se mueve hacia el oeste (a la izquierda). Cada vez que un
vagón llega a la bifurcación, debe parar y preguntar si debe ir a Madrid directamente o
desviarse a Granada. Los vagones que contienen variables siempre van directamente a
Madrid y nunca a Granada. Los vagones que contienen otros símbolos deben investigar el
contenido del vagón más cercano situado sobre la via que lleva a Granada antes de entrar
en la bifurcación.

La figura 5-29 muestra lo que pasa, según el contenido del vagón más cercano en la
vía de Granada y del de la bifurcación. El primer ⊥ siempre va a Granada. Los números
indican las situaciones siguientes:

155
Vagón en la bifurcación
⊥ + - x / ( )

Vagón que ha llegado más recientemente a la vía de Granada


⊥ 4 1 1 1 1 1 5
+ 2 2 2 1 1 1 2
- 2 2 2 1 1 1 2
X 2 2 2 2 2 1 2
/ 2 2 2 2 2 1 2
( 5 1 1 1 1 1 3

Fig. 5-29. Tabla de decisión utilizada por el algoritmo


de conversión de infija en polaca invesa.

1. El vagón que está en la bifurcación se dirige hacia Granada.


2. El vagón que ha entrado más recientemente en la vía de Granada da
la vuelta y va a Madrid.
3. El vagón de la bifurcación y el que ha entrado más recientemente en
la vía de Granada son "secuestrados" y desaparecen (es decir, se eli-
minan).
4. Fin. Los símbolos que están en Madrid representan la fórmula en
notación polaca inversa cuando se leen de izquierda a derecha.
5. Fin. Se ha producido un error. La fórmula original no estaba balan-
ceada correctamente.
Después de producirse cada acción, se hace una nueva comparación entre el vagón de
la bifurcación, que puede se el mismo de la comparación previa o el siguiente, y el vagón
que está en este momento al último en la vía de Granada. El proceso continúa hasta que se
alcanza el punto 4. Obsérvese que la vía de Granada se usa como una pila, considerando el
encaminamiento de un vagón hacia Granada como una operación de apilar y la recuperación
de un vagón de la vía de Granada para llevarlo a Madrid como una operación de desapilar.
Nótese que el orden de las variables es el mismo en las dos notaciones. Sin embargo,
el orden de los operadores es diferente. Los operadores en la notación polaca inversa
aparecen, de hecho, en el orden en que serán ejecutados durante la evaluación de la
expresión. La figura 5-30 da ejemplos de fórmulas en notación infija y sus equivalentes en
polaca inversa.

Infija Polaca inversa


A+BxC ABC x +
AxB+C AB x C +
AxB+CxD AB x CD x +
(A + B) / (C - D) AB + CD - /
AxB/C AB x C /
((A + B) x C + D) / (E + F + G) AB + C x D + EF + G + /
FIG. 5-30. Ejemplo de fórmula infija y sus equivalentes en polaca inversa.

156
Evaluación de fórmulas en la notación polaca inversa

El siguiente algoritmo evalúa una fórmula en notación polaca inversa.

Algoritmo

1. Examinar cada símbolo que en la fórmula está en notación polaca inversa,


comenzando por el extremo de la izquierda hasta llegar a un operador.
2. Escribir en un trozo de papel el operador y los dos operandos situados
inmediatamente a su izquierda.
3. Borrar el operador y los operandos en la fórmula, dejando un hueco.
4. Realizar la operación con los operandos y escribe el resultado en el hueco.
5. Si la nueva fórmula consta de un solo valor, éste es la respuesta y el algoritmo ha
terminado; en caso contrario, se vuelve al punto 1.

La figura 5-31 describe la evaluación de una fórmula en polaca inversa. Nótese que
el orden de los operadores es el orden en que se usan realmente.

La notación polaca inversa es ideal para evaluar fórmulas en una computadora con
una pila. La fórmula consta de n símbolos, siendo cada uno de ellos o una variable (es decir,
algo con un valor) o un operador. El algoritmo es como sigue.

Algoritmo

1. Poner k a 1.
2. Examinar el símbolo k-ésimo. Si es una variante, se apila. Si es un
operador, desapilar los dos datos que están en su cima, realizar la
operación y apilar el resultado de nuevo.
3. Si k = n, el algoritmo se da por terminado y la solución está en la
pila. Si no fuera así, añade 1 a k y realiza el paso 2.

La figura 5-33 muestra la evaluación de la misma fórmula que en la figura 5-32, si


bien en la 5-33 se utiliza una pila. Obsérvese que el número que está en la cima de la pila
es el operando de la derecha, no el de la izquierda.

157
Este punto es importante para la resta y la división, ya que el orden de los operandos
es significativo (a diferencia de la suma o la multiplicación).
Una computadora organizada en torno a una pila ofrece diversas ventajas en
comparación con las máquinas de registros múltiples, como los de los ejemplos:
1. Las instrucciones son cortas ya que muchas de ellas no tienen direc-
ción.
2. Las fórmulas son fáciles de evaluar.
3. No hay necesidad de utilizar algoritmos complicados para optimizar la
utilización de los registros.

Ninguna de las CPU de Intel tiene direccionamiento de pila, pero si instrucciones


especiales (PUSH y POP) para colocar Hems en la pila (apilar) y para retirarlas de ella
(desapilar). En contraste todas las pastillas 680x0 tienen direccionamiento de pila por medio
de auto-indexación. En la modalidad de decremento predeterminado, primero se
decrementa el (registro) apuntador de pila y luego el registro se utiliza como apuntador. En
la modalidad de incremento posterior, primero se realiza el direccionamiento y después se
incrementa el registro.

158
Palabra de 16 bit
Fuente Destino
Dirección
CÓDIGO DE MODO DE REGISTRO DE MODO DEL REGISTRO
N
OPERACIÓN LA FUENTE LA FUENTE DESTINO DEL DESTINO
4 3 3 3 3
N+2 (Primer palabra siguiente)
16
N+4 (Segunda palabra siguiente)
16
(a)

Modo Nombre Cómo se localiza el operando


0 Direccionamiento de registro El operando está en R
1 Indirecto sobre registro R contiene un apuntado al operando
2 Se extrae el contenido de R y se utiliza como apuntador al operando.
Auto-incrementado Después de este paso, pero antes de ejecutar la instrucción, R se
incrementa en 1 (instrucciones de byte) o en 2 (instrucciones de parabra)
3 Se extrae de R la dirección de una palabra que contiene el apuntado al
Auto-incrementado indirecto operando. Después se incrementa R en 1 o 2, antes de ejecutar la
instrucción.
4 Primero se decrementa R en 1 o 2. Después el nuevo valor de R se
Auto-incrementado
utiliza como un apuntador al operando.
5 Primero se decrementa R en 1 o 2. Después el nuevo valor de R se
Auto-incrementado inderecto utiliza como la dirección de memoria que contiene un apuntador al
operando.
6 Indexado El operando está en al dirección igual a la suma del contenido de R
(registro de índice) y el desplazamiento de 17 bits en complemento a 2
contenido en la siguiente palabra. En los modos 6 y 7 el contador de
programa (R7) se incrementa en 2 inmediatamente después de extraer la
siguiente palabra
7 Direccionamiento indexado + La posición de memoria que contiene un apuntador al operando se
indirecto obtiene sumando el contenido de R y la siguiente palabra. En los modos
6 y 7 el contador se programa (R7) se incrementa en 2 inmediatamente
después de extraer la siguiente palabra.
(b)
Fig. 5-33. a) Formato de una instrucción de la PDP-11 de dos direcciones. b) Descripción de los modos de
direccionamiento de la PDP-11. R es el registro especificado con el modo.

Si la pila crece de las direcciones altas a las bajas y el apuntador de pila apunta
siempre a la parte superior (es decir, a la dirección más baja de memoria que contiene un
elemento de la pila), se puede usar la modalidad de decremento predeterminado para apilar
y la de incremento posterior para desapilar. Por el contrario,'si la pila crece de las
direcciones bajas a las altas y, por convención el apuntador de pila apunta a la primera
celda vacía de la pila, en lugar de hacerlo a la última ocupada, se puede usar entonces el
incremento posterior para apilar y el decremento predeterminado para desapilar. Cuál de
los sistemas a utilizar depende de las preferencias y de los antecedentes de uso.

159
Ejemplos de direccionamiento

En las secciones anteriores se estudiaron varios modos de direccionamiento; el


inmediato, el directo, el indirecto, el indexado, etc. Sin embargo, queda aún la cuestión de
cómo el hardware o el intérprete de nivel uno reconocen que el direccionamiento pertenece
a alguno de los modos mencionados. Una solución consiste en tener código de operación
por separado para cada método; esto es, diferentes códigos para ADD INMEDIATO, ADD
DIRECTO, ADD INDIRECTO, etc. Otra forma es hacer que el modo forme parte de la
dirección. Cada instrucción pudiera contener unos cuantos bits por dirección para especificar
el modo de direccionamiento deseado.

Direccionamiento en la PDP-11

Las direcciones en la PDP-11 se especifican por medio de un campo de 6 bits, como se


puede apreciar en la figura 5-33(a). Las instrucciones de una dirección tienen uno de
estos campos, mientras que las de dos direcciones tienen dos, con el mismo código en cada
campo. Los campos de 6 bits constan de 3 bits para el modo de direccionamiento y 3 bits
para el número de registro. En la figura 5-33(b) se muestra el significado de los modos.
En la PDP-11, el registro 6 corresponde al apuntador de pila y el registro 7 al contador de
programa; este último se incrementa en 2 inmediatamente después de extraer la palabra de
una instrucción (antes de ejecutar la instrucción). Se debe tener presente esta propiedad al
examinar algunos de los modos de direccionamiento.
Todas las instrucciones de la PDP-11 tienen 16 bits realmente, pero, en algunos casos,
utilizan una o dos palabras adicionales situadas a continuación y que pueden considerarse
como parte de ellas. Los modos de direccionamiento 6 y 7 requieren una constante de 16
bits para indexar. Además, si se especifica uno de los modos 2 o 3 con el registro 7 (el
contador de programa), se observará la siguiente secuencia de pasos.
En primer lugar, se extrae la instrucción y se incrementa el registro 7 en dos (una
palabra consta de 2 bytes). Luego el registro 7 se usa como apuntador (puntero) del dato
(modo 2) o de la dirección del dato (modo 3). En ambos casos la palabra señalada por R7
es la que sigue a la instrucción. Una vez que se ha extraído la palabra, tiene lugar el auto-
incremento del registro 7, incrementándose en 2. El direccionamiento con auto-incremento
aplicado al contador de programa es un truco que permite utilizar como dato la palabra que
está a continuación de la instrucción. En el modo 2 este dato es el operando, lo que nos da
un direccionamiento inmediato. En el modo 3 es la dirección del operando, obteniéndose un
direccionamiento directo. Si tanto la fuente como el destino requieren una palabra adicional,
la primera es para la fuente.

TIPOS DE INSTRUCCIONES

Las instrucciones del nivel de máquina convencional se pueden dividir


aproximadamente en dos grupos: instrucciones de propósito general e instrucciones de
propósito especial. Las primeras tienen una aplicación muy amplia. Por ejemplo, la
posibilidad de mover datos a través de la máquina seguramente se necesita en casi todas
las aplicaciones. Las instrucciones de propósito especial tienen aplicaciones mucho más
restringidas. La instrucción MOVEP de la 68000 almacena en memoria el contenido de un
registro D en bytes alternos, con un byte sin utilizar entre los bytes de datos. Hay pocas
aplicaciones en las que es realmente útil esta instrucción, y ningún compilador la generará
jamás (se incluyó para facilitar la comunicación con los periféricos más antiguos de 8 bits).
En las siguientes secciones examinaremos los grupos más importantes de instrucciones de
propósito general.

160
Instrucciones de movimiento de datos

La operación de la copia de datos de un lugar a otro es la más fundamental de todas.


Por copia entendemos la creación de un nuevo objeto con la misma secuencia de bits que el
original. Este uso de la palabra “movimiento” es algo diferente al que se le asigna en
español. Cuando decimos que Manuel Mangosta se ha movido de Madrid a Barcelona, no
queremos decir que se creó una copia idéntica del señor Mangosta en Barcelona y que el
original está todavía en Madrid. Cuando decimos que el contenido de la posición de memoria
2000 se ha movido a algún registro, siempre queremos decir que se ha creado ahí una
copia idéntica y que el original está todavía sin alterar en la posición 2000. Las instrucciones
de movimiento de datos se podrían haber llamado más bien instrucciones de duplicación,
pero el término “movimiento de datos” ya está establecido. Los datos se almacenan en
diversos lugares, pero es diferente la forma en que se accede a las palabras. Tres lugares
comunes son una palabra de memoria determinada, un registro o la pila. La pila puede
estar en unos registros especiales o en memoria, pero la forma en que se accede a ella es
diferente del acceso ordinario a memoria. Un acceso a memoria requiere una dirección,
mientras que para meter o sacar un dato de la pila no hay que hacer un direccionamiento
explícito. Las instrucciones de movimiento de datos requieren la especificación explicita o
implícita de la fuente de la información (es decir, el original) y el destino (donde se ha de
colocar la copia).
Las instrucciones de movimiento de datos deben, de algún modo, indicar la cantidad
de datos que va a moverse. Existen instrucciones para mover cantidades de datos de
apenas un bit o hasta de la memoria entera. En máquinas de palabra de longitud fija el
número de palabras que deben moverse generalmente lo especifica la instrucción; por
ejemplo, puede haber instrucciones distintas para mover una palabra y para mover media
palabra. Las máquinas de palabra de longitud variable a menudo tienen instrucciones que
especifican solamente la dirección de la fuente y del destino pero no la cantidad. El
movimiento continúa hasta que se encuentra una marca de fin de datos en los datos
mismos.
Los procesadores 680 x O tienen una instrucción MOVE para fines generales, con dos
operándoos arbitrarios, como se puede ver en la figura 5-23. Esta instrucción puede mover
datos entre los registros, la memoria o la pila a cualquier lado. Las CPU de Intel tienen
instrucciones de movimiento mucho más limitadas, pero existen muchas de ellas, de
manera que también es posible mover cualquier cosa a cualquier lado.

Operaciones binarias

Las operaciones binarias son las que combinan dos operándoos para obtener un
resultado. En la práctica, todas las máquinas de nivel 2 tienen una instrucción para realizar
la suma y la resta de enteros. Excepto el micro de 8 bits, también es corriente que tengan
multiplicación y división de enteros. Se supone que no se necesita explicar por qué las
computadoras tienen instrucciones aritméticas.
Otro grupo de operaciones binarias incluye las instrucciones booleanas. Aunque haya
16 funciones de dos variables, pocas máquinas, si es que hay alguna, tienen instrucciones
para las 16. Por ejemplo, es innecesaria una función que calcule el valor CIERTO
independientemente de los argumentos. Si se necesita en alguna parte de la máquina la
secuencia de bits que representa CIERTO, se puede simplemente moverla hacia allá, en
lugar de calcularla. Argumentos similares muestran que la instrucción para realizar f(P, Q)
= P debe ser bastante inútil.
Tres instrucciones presentes en muchas máquinas son Y, O y O EXCLUSIVO. En
máquinas de longitud de palabra fija, la función Y calcula bit por bit el Y booleano de dos
argumentos de una palabra, siendo el resultado también una palabra. A veces existen
asimismo instrucciones para medias palabras, dobles palabras, etc. Cabe hacer comentarios
similares respecto de las demás instrucciones booleanas.
Un uso muy importante de la función Y es la extracción de bits de las palabras.
Considérese, por ejemplo, una máquina de palabra de 32 bits en la que se almacenan
cuatro caracteres de 8 bits por palabra. Supongamos que se necesita separar el segundo

161
carácter de los otros tres para imprimirlo; es decir es necesaria crear una palabra que
contenga el carácter en los 8 bits de la derecha o, como suele decirse, justificado a la
derecha con ceros en los 24 bits de la izquierda.
Para extraer el carácter, se hace un Y entre la palabra que lo contiene y una constante
denominada máscara. El resultado de esta operación es el cambio de todos los bits no
deseados por ceros (es decir, se enmascaran), como se muestra abajo.

10110111 10111100 11011011 10001011 A


00000000 11111111 00000000 00000000 B
(máscara)
00000000 10111100 00000000 00000000 A Y B

El resultado deberá desplazarse ahora 16 bits a la derecha para aislar el carácter en la


parte derecha de la palabra.
Un uso muy importante del O es el empaquetamiento de bits en una palabra, siendo el
empaquetamiento lo contrario de la extracción. Para cambiar los 8 bits de la derecha de una
palabra de 32 bits sin alterar los 24 bits restantes, primero se enmascaran los 8 bits no
deseados y luego se hace un O con el nuevo carácter, como se muestra abajo.

10110111 10111100 11011011 10001011 A


11111111 11111111 11111111 00000000 B
(máscara)
10110111 10111100 11011011 00000000 A Y B
00000000 00000000 00000000 01010111 C
10110111 10111100 11011011 01010111 (A Y B) 0 C

La operación Y tiende a eliminar unos, ya que nunca hay más unos en el resultado que
en los operándoos. La operación O tiende a insertar unos, ya que siempre hay al menos
tantos como tenga el operando que más tenga. La operación O es, por otro lado, simétrica,
tendiendo, en media, a no insertar ni eliminar unos. Esta simetría con respecto a los unos y
los ceros es útil en varias ocasiones; por ejemplo, para generar “números aleatorios”.
Las primeras computadoras realizaban la aritmética de punto flotante llamando a
procedimientos preprogramados, pero hoy día hay muchas computado- ras, especialmente
las concebidas para dedicarse a trabajo científico, que tienen instrucciones de punto flotante
al nivel 2 por razones de velocidad. Algunas máquinas tienen números en punto flotante de
varias longitudes, los más cortos para obtener mayor velocidad y los más largos para
cuando se necesitan muchos dígitos de precisión. Los números en punto flotante se
comentan en el Apéndice B.

Operaciones unarias

Las operaciones unarias tienen un operando y producen un resultado. Como tienen


una dirección menos que especificar, estas instrucciones son a veces más cortas que las
binarias.
Las instrucciones para desplazar o rotar el contenido de una palabra o de un byte son
bastante útiles y, a menudo, se suministran en varias modalidades. Los desplazamientos
son operaciones en que los bits se mueven a la izquierda o a la derecha, perdiéndose los
que se salen de la palabra. Las rotaciones son desplazamientos en los que los bits que se
salen por un lado aparecen en el otro. La diferencia entre el desplazamiento y la rotación se
ilustra abajo.

00000000 00000000 00000000 01110011 A

162
00000000 00000000 00000000 00011100 A desplazado a la derecha 2 bits
11000000 00000000 00000000 00011100 A rotado a la derecha 2 bits

Tanto los desplazamientos a la izquierda como los que se hacen a la derecha son
útiles. Si una palabra de n bits se rota k bits a la izquierda, el resultado es el mismo que si
se hubiera rotado m – k bits a la derecha.
Los desplazamientos a la derecha se hacen a menudo con extensión del signo. Esto
significa que las posiciones que quedan libres por el lado izquierdo de la palabra se llenan
con el bit de signo original, 0 o 1. Parece como si el bit de signo se estirara hacia la
derecha. Entre otras cosas, ello significa que un número negativo permanecerá negativo. La
situación se ilustra abajo.

11111111 11111111 11111111 11110000 A


00111111 11111111 11111111 11111100 A desplazado sin extensión del signo
11111111 11111111 11111111 11111100 A desplazado con extensión del signo

Un uso importante del desplazamiento es la multiplicación por potencias de 2 y la


división entre ellas. Si un entero positivo se desplaza k bits a la izquierda, el resultado es el
número original multiplicado por 2 k, siempre que no haya desbordamiento. Si un entero
positivo se desplaza k bits a la derecha, el resultado es el número original dividido entre 2k.
El desplazamiento puede acelerar ciertas operaciones aritméticas. Considérese, por
ejemplo, el cálculo de 18 X n, en donde n es algún entero positivo.
18 x n = 16 x n + 2 X n. 16 X n se puede obtener desplazando una copia de n cuatro
bits a la izquierda. 2 X n puede obtenerse desplazando n un bit a la izquierda. La suma de
estos dos números es 18 x n. La multiplicación se ha realizado con un movimiento, dos
desplazamientos y una suma, lo que muchas veces es más rápido que una multiplicación.
El desplazamiento de números negativos, incluso con extensión de signo, da
resultados algo diferentes. Por ejemplo, consideremos el número – 1 en complemento a
uno. Desplazado 1 bit a la izquierda da – 3. Otro desplazamiento de 1 bit da – 7:

11111111 11111111 11111111 11111110 – 1 en complemento a uno


11111111 11111111 11111111 11111100 – 1 desplazado 1 bit a la izquierda = – 3
11111111 11111111 11111111 11111000 – 1 desplazado 2 bits a la izquierda = – 7

EL desplazamiento a la izquierda en complemento a 1 no multiplica por 2. Sin


embargo, el desplazamiento a la derecha simula correctamente la división.
Considérese ahora la representación en complemento a 2 de – 1. El desplazamiento a
la derecha de seis bits con extensión de signo da – 1, mientras que la parte entera de –
1/64 debería ser 0:

11111111 11111111 11111111 11111111 – 1 en complemento a 2


11111111 11111111 11111111 11111111 – 1 desplazado 6 bits a la derecha = – 1

Sin embargo, el desplazamiento a la izquierda simula la multiplicación por 2.


Las operaciones de rotación son útiles para el empaquetamiento y
desempaquetamiento de secuencias de bits en una palabra. Si se desean examinar todos
los bits de una palabra, la rotación de ésta un bit cada vez pone cada bit en el signo, donde
se le puede examinar fácilmente. Después de examinar todos los bits de la palabra, ésta
vuelve a su valor original.
Todas las máquinas de nuestros ejemplos tienen una amplia variedad de instrucciones
de desplazamiento / rotación, en ambas direcciones. Algunas comprenden al bit de acarreo
y otras no. Sin embargo, los compiladores prácticamente nunca generan ninguna de ellas,
con excepción del desplazamiento a la izquierda, como una forma optimizada de multiplicar

163
por una potencia de dos.
Ciertas operaciones binarias ocurren con tal frecuencia con determinados operándoos,
que muchas máquinas de nivel 2 tienen instrucciones unarias que las realizan rápidamente.
Mover un cero a una palabra de memoria o a un registro es extremadamente corriente
cuando se comienza un cálculo. El movimiento de un cero es, naturalmente, un caso
particular de las instrucciones generales de mover. Por eficiencia, se suele disponer de una
operación de BORRAR con una sola dirección, la de la posición a borrar (es decir, a poner a
cero).
También se usa muchas veces la suma de un l a un registro o a una posición de
memoria para contar. Una forma unaria de la instrucción de sumar es la operación de
incrementar, que añade 1. La operación de negar es otro ejemplo. La operación de negar X
es realmente hacer la resta binaria 0 - X; pero también se suministra a veces como una
instrucción distinta.

Comparaciones y Saltos Condicionales

Casi todos los programas deben tener la capacidad de examinar datos y después
alterar el flujo de control en función de los resultados. Un ejemplo simple es la función raíz
cuadrada. Si el argumento es negativo, el procedimiento da un mensaje de error; en caso
contrario realiza la raíz cuadrada. Dicha función de los resultados. Un ejemplo simple es la
función raíz cuadrada. Si el argumento es negativo, el procedimiento da un mensaje de
error; en caso contrario realiza la raíz cuadrada. Dicha función tiene que examinar el
argumento y luego bifurcar, dependiendo de sí es negativo o no.
Un método corriente de hacerlo es proporcionar instrucciones de salto condicional (a
menudo llamadas de bifurcación condicional) que comprueben alguna condición y salten a
una dirección de memoria particular si la condición se cumple. Algunas veces se puede
poner algún bit de la instrucción a 1 o 0 para indicar si el salto debe ocurrir cuando la
condición se cumple o no, respectivamente.
La condición más corriente a verificar es si un bit particular de la máquina es 0 o no.
Si una instrucción comprueba el bit de signo de un número en complemento a 2 y bifurca a
LUGAR si es 1, se ejecutarán las instrucciones que comienzan en LUGAR si el número fue
negativo o las siguientes al salto condicional, si fue 0 o positivo. La misma comprobación
hecha en complemento a 1 bifurcará a LUGAR siempre que el número comprobado sea
menor o igual que – 1 y nunca saltará a LUGAR si dicho número es mayor o igual que 1. Si
el número es 0, el salto tendrá o no lugar según sea + 0 o – 0. Esto es sin duda incómodo,
porque matemáticamente + 0 = – 0, y éste es, en realidad, uno de los argumentos más
fuertes en contra de la aritmética de complemento a 1 y a favor de la de complemento a 2.
Muchas máquinas tienen bits que indican condiciones específicas. Por ejemplo, puede
haber un bit de desbordamiento que se ponga a 1 siempre que una operación aritmética dé
un resultado incorrecto. Al comprobar este bit se detecta si hubo desbordamiento en la
operación aritmética anterior y, si lo hubo, se puede hacer un salto a una rutina de error. La
68000 tiene incluso una instrucción especial corta, TRAPV, que hace un desvío si el bit de
desbordamiento está activo.
De modo similar, algunos procesadores tiene un bit de acarreo que se pone a 1
cuando tiene lugar un acarreo de bit de la izquierda (por ejemplo, sí se suman dos números
negativos). Un acarreo del bit de la izquierda es completamente normal y no debe
confundirse con un desbordamiento. La comprobación del bit de acarreo se necesita en la
aritmética de precisión múltiple.
Algunas máquinas tienen una instrucción para comprobar el bit de la derecha de una
palabra. Ello permite al programa comprobar si un número (positivo) es par o impar con
una sola instrucción.
La comprobación de cero es muy importante para iteraciones y para muchos otros
fines. Si todas las instrucciones de salto condicional examinaran solamente un bit, la
comprobación de sí una palabra particular está en cero, necesitaría de una comprobación
distinta de cada bit para asegurar que ninguno está a 1. Para evitar esta situación, muchas
máquinas tienen una instrucción por la que examinan una palabra y saltan si es cero.
Naturalmente, esta solución lo único que hace es pasarle la pelota al nivel l. En la práctica,

164
normalmente el hardware tiene una compuerta O a cuyas entradas son todos los bits de un
registro y cuya salida dice si dicho registro contiene algún bit a 1.
La comparación de dos palabras o caracteres para ver si son iguales y, si no lo son,
ver cuál es mayor, también es importante, por ejemplo, en ordenamientos. Para realizar
esta comprobación, se necesitan tres direcciones, dos para los datos y otra para la dirección
a la que se ha de saltar si la condición es verdadera. Las computadoras cuyo formato de
instrucción permiten tres direcciones por instrucción no tienen ningún problema, pero
aquellas que no las permiten sí lo tienen y deben hacer algo para evitarlo.
Una solución común consiste en dotarlas de una instrucción que compare ambos datos
y ajuste uno o más bits de condición para registrar el resultado. Una instrucción posterior
puede comprobar los bits de condición y saltar si los dos valores comparados eran iguales,
distintos, si el primero era mayor, etc. Las máquinas de ejemplo usan esta aproximación.
Se presentan algunas cuestiones delicadas al comparar dos números. Primero, en
máquinas complemento a 1, +0 y –0 son diferentes. Por ejemplo, en una máquina de 32
bits.

00000000 00000000 00000000 00000000 + 0 en complemento


a1
11111111 11111111 11111111 11111111 - 0 en complemento
a1

Los diseñadores tienen que decidir si +0 y –0 son iguales y, si no lo son, cuál es


mayor. Sin importar la decisión que tomen, hay argumentos convincentes para afirmar que
la decisión es errónea. Si hacen +0= –0, entonces el hecho de que una comparación
produzca igual no significa que las secuencias de bits de los datos comparados sean las
mismas. Considérese una máquina con palabra de 32 bits en la que se almacenan cuatro
caracteres de 8 bits. Si se almacenaran cuatro caracteres con código 0 en una palabra, ésta
contendrá 32 ceros. Si se almacenaran cuatro caracteres con código 255 en otra palabra,
ésta tendrá 32 unos. Si al comparar estas dos palabras resultaran iguales porque +0 = –0,
un programa de proceso de textos podrá llegar a la conclusión errónea de que las dos
palabras contienen los mismos cuatro caracteres.
Por otro lado, si el hardware tratara –0 y +0 como distintos, entonces el resultado de
comparar la suma de –1 y +1 con +0 podría dar que no son iguales, ya que –1 sumando a
+1 puede dar -0 como resultado. No es necesario decir que esta situación es totalmente
indeseable. Las máquinas de complemento a 2, que incluyen los ejemplos, no tienen
problemas con +0 y –0, pero las de complemento a 1 sí los tienen. La consecuencia es que
las máquinas con aritmética en complemento a 1 están desapareciendo lentamente.
Otro punto delicado en relación con la comparación de números es la decisión por la
que los números deben considerarse con signo o sin él. Hay dos formas de ordenar de
menor a mayor los ocho números binarios de tres bits.

Sin Con signo


signo
000 100 (el
menor)
001 101
010 110
011 111
100 000
101 001
110 010
111 011 (el
mayor)

165
La columna de la izquierda muestra los enteros positivos del cero al siete en orden
creciente. La de la derecha muestra los enteros con signo desde –4 a +3 en complemento a
2. La respuesta a la pregunta “¿Es 011 mayor que 100?” Depende de que los números se
consideren con o sin signo. La mayoría de las máquinas tienen instrucciones para las dos
formas de ordenar.
Las máquinas que tienen menos de tres direcciones por instrucción a veces tratan las
comparaciones con una instrucción que se salta u omite la siguiente instrucción si la
condición se cumple. La instrucción que se omite será con frecuencia una de salto. En
algunas máquinas pueden saltarse varias instrucciones en vez de una sola; el número de las
que se van a saltar viene especificado en la propia instrucción. Por lo general, este es un
número entre –128 y +127, de modo que cabe en un byte. El 68000 tiene varias
instrucciones de este tipo.
El salto incondicional es un caso especial del salto condicional en el que la condición
siempre se cumple.

Instrucciones de llamada a procedimiento

Un procedimiento es un grupo de instrucciones que realizan alguna tarea y al que se le


puede involucrar (llamar) desde diversos puntos del programa. A veces se usa el término
subrutina en lugar de procedimiento, especialmente si se trata de programas en lenguaje
ensamblador. Cuando un procedimiento termina su tarea, debe retornar a la sentencia que
sigue a la de llamada. Por tanto, se debe transmitir la dirección de retorno al procedimiento
para que sepa dónde retornar.
Hay tres lugares donde se pone la dirección de retorno: la memoria, un registro o la
pila. La peor solución es ponerla en una única posición fija de memoria. Con este método, si
el procedimiento llamara a otro, la segunda llamada haría que se perdiera la dirección de
retorno de la primera.
Una ligera mejora consiste en que la instrucción de llamada a procedimiento almacene
la dirección de retorno en la primera palabra del procedimiento, estando la primera
instrucción ejecutable en la segunda palabra. El procedimiento podría retornar con un salto
indirecto a la primera palabra o, si el hardware pone el código de operación de la instrucción
de salto junto a la dirección de retorno, saltando directamente a ella. El procedimiento
puede llamar a otros, ya que cada uno tiene espacio para una dirección de retorno. Si el
procedimiento se llamara a sí mismo, este esquema fallaría, porque la segunda dirección de
retorno destruiría a la primera. La habilidad de que un procedimiento se pueda llamar a sí
mismo, llamada recursión, reviste extrema importancia tanto para los teóricos como para
los programadores que hacen el trabajo práctico. Es más, si un procedimiento A llama a B,
éste llama a C y C llama de nuevo a A (recursión indirecta), tampoco funciona este
esquema.
Una mejora consistirá en que la instrucción de llamada a procedimiento ponga la
dirección de retorno en un registro, dejando al procedimiento la responsabilidad de
almacenarla en un lugar seguro. Si el procedimiento es recursivo, deberá poner la dirección
de retorno en un lugar diferente cada vez que se la llame.
Lo mejor que puede hacer la instrucción de llamada a procedimiento con la dirección
de retorno es metería en una pila. Cuando el procedimiento haya terminado, sacará la
dirección de retorno de la pila y la meterá en un contador de programa. Si se dispone de
esta forma de llamada a procedimiento, la recursión no planteará problemas especiales: las
direcciones de retorno se salvarán de manera que se evite la destrucción de las anteriores.
Todas las máquinas de ejemplo utilizan este método.

166
Control de iteraciones

Es frecuente que se necesite ejecutar un grupo de instrucciones un número fijo de


veces y, por ello, algunas máquinas tienen instrucciones para facilitarlo.
Todos los métodos requieren de un contador que se incrementa (o decrementa) en
alguna constante cada vez que se pasa por la iteración. Si se verifica cierta condición, la
iteración termina.
Un método pone un valor inicial en un contador y luego pasa a ejecutar el código de la
iteración. La última instrucción de la iteración actualiza el contador y, si aún no se ha
satisfecho la condición de terminación, salta a la primera del lazo. En caso contrario, la
iteración termina y se pasa ejecutar la siguiente instrucción. Esta forma de hacer iteraciones
se caracteriza por hacer la comprobación al final, como se muestra en la figura 5-40(a).
Las iteraciones con comprobación al final tienen la propiedad de ejecutarse siempre
una vez al menos, aunque n sea menor o igual que 0. Por ejemplo, pongamos un programa
que mantiene los registros del personal de una empresa. En cierto punto el programa está
leyendo información de tarjetas acerca de determinado empleado. Lee en n el número de
hijos que tiene dicho empleado y ejecuta una iteración n veces, una por hijo, leyendo su
nombre, sexo y fecha de nacimiento, para que la empresa pueda mandarle un regalo el día
de su cumpleaños (es una atención de la empresa). Si el empleado no tiene hijos, n será 0
pero la iteración se ejecutará una vez, mandando regalos y dando resultados erróneos.
La figura 5-40(b) muestra otra forma de realizar la comprobación, que funciona
satisfactoriamente aunque n sea menor o igual que 0. Obsérvese que la comprobación es
diferente en ambos casos, de modo que los diseñadores han de elegir un método o el otro.
Considérese el código que debería producirse con la sentencia Pascal.

167
for i : = 1 to n do bigin ... end
i: = l; i: =1;
1: {primera sentencia} 1: if i > n then goto 2;
{segunda sentencia} {primera sentencia}
. {segunda sentencia}
. .
. .
{última sentencia} .
i:i = 1; {última sentencia}
if i < = n then goto 1; i: =i+1;
goto 1;
2: {primera sentencia después 2: {primera sentencia después de
de la iteración} la iteración}
(a) (b)
Fig. 5-40. a) Iteración con comprobación al final. b) Iteración con comprobación al principio.

Si el compilador no tuviera ninguna información sobre n, seguiría la aproximación de


la figura 5-37(b) para tratar correctamente el caso de n < 0. Si, en cambio, pudiera
determinar que n >0, por ejemplo, viendo dónde se asigna un valor a n, podría usar un
código como el mejor de la figura 5-40(a). La primera normalización del lenguaje
FORTRAN especificaba que todas las iteraciones se ejecutaran al menos una vez, para
permitir que siempre se generara el código más eficiente de la figura 5-40(a). En 1977 se
corrigió este defecto cuando incluso la comunidad de usuarios del FORTRAN empezó a darse
cuenta de que no era una buena idea que la sentencia de iteración tuviera una semántica
exótica, aunque ahorrara una instrucción de salto por iteración.
Todas las CPU de Intel realizan iteraciones en un número fijo de veces utilizando la
instrucción LOOP, la cual decrementa en uno los registros CX / ECX y salta a una etiqueta
dada, si el resultado no es igual a cero. En caso de ser cero, la ejecución continúa con la
siguiente instrucción.
Las 680 x 0 tienen una instrucción en cierto modo más general, que primero verifica
los códigos de condición para una condición dada, saliendo de la iteración si ésta se cumple.
Si la condición es falsa, el registro D se decrementa. Si el resultado es 0 o más, la iteración
se repite; en caso contrario se da por termina- da la iteración y se ejecuta la instrucción que
le sigue.

Entrada / salida

Ningún otro grupo de instrucciones presenta tanta variación de máquina a máquina


como el de las instrucciones de entrada / salida. En la actualidad, se encuentran en uso
cuatro diferentes esquemas de E / S. Estos son:
1. E / S programada.
2. E / S manejada por interrupciones.
3. E / S de Acceso Directo a Memoria (DMA).
4. E / S usando canales de datos.

A continuación se describirá cada uno de estos esquemas.


El método más sencillo posible es E / S programada, el cual se usa en algunos
microprocesadores de orden inferior. Estos, tienen una sola instrucción de entrada y una
sola de salida. Cada una de estas instrucciones selecciona uno de los dispositivos de E / S y
se transfiere un solo carácter entre un registro fijo del procesador y el dispositivo
seleccionado. El procesador debe ejecutar una instrucción explícita para cada uno de los
caracteres que se leen o escriben.

168
Como un ejemplo sencillo de este método, considérese una terminal con cuatro
registros de 1 byte, como se muestra en la figura 5-41. Dos de los registros se usan para
entrada, estado y datos; y los otros dos para salida, así como también estado y datos. Cada
registro tiene una dirección única. Si se utiliza E / S mapeada en memorias, los cuatro
registros forman parte del espacio de direcciones y se pueden leer o escribir por medio de
instrucciones ordinarias. En caso contrario, se proporcionan instrucciones especiales de E /
S, llamadas IN y OUT, para leer y escribir los registros. En ambos casos, las operaciones de
E / S se realizan transfiriendo datos e información del estado entre la CPU y estos registros.

El registro de estado del teclado tiene 2 bits que se utilizan y 6 que no se usan. El bit
más hacia la izquierda (7) adquiere del hardware el valor de l siempre que llega un carácter.
Si previamente el software fijó el bit 6 en 1, se genera una interrupción; en caso contrario,
esto no ocurre (las interrupciones se abordarán en breve). Cuando se usa E / S programada
para recibir información, la CPU entra en una iteración, leyendo constantemente el registro
de estado del teclado, esperando a que se encienda el bit 7. Cuando esto sucede, el
software lee el registro del buffer del teclado, para obtener el carácter. Leer el registro de
datos del teclado provoca que el bit LISTO se ponga en 0.
La operación de salida opera en forma similar. Para escribir un carácter en la pantalla,
el software lee el registro de estado de despliegue, para chequear si el bit LISTO está en 1.
Si no es así, realiza una iteración hasta que el bit sea l, indicando de ese modo que el
dispositivo está listo para aceptar un carácter. Tan pronto como la terminal está lista, el
software escribe un carácter en el buffer del registro de despliegue, lo que provoca que se
transmita a la pantalla, así como que el dispositivo borre el bit LISTO en el registro de
estado. Cuando la terminal ha desplegado el carácter y está preparada para manejar el
siguiente, el controlador vuelve a poner en l al bit LISTO.
Como ejemplo de la E / S programada, considérese el procedimiento en Pas- cal de la
figura 5-42. A este procedimiento se le llama a ejecución con dos parámetros: un arreglo
de caracteres a ser desplegado y el número de caracteres que contiene dicho arreglo, hasta
1K. El cuerpo del procedimiento es una iteración que despliega un carácter a la vez. Para
hacerlo, la CPU debe aguardar hasta que el dispositivo esté listo (ready= l). Los
procedimientos in y out serian rutinas típicas en lenguaje ensamblador para leer y escribir
los registros especificados por el primer parámetro, hacia o desde la variable especificada
por el segundo parámetro. La división entre 128 se deshace de los 7 bits de orden inferior,
dejando el bit LISTO en el bit 0.

169
La principal desventaja de la E / S programada es que la CPU pasa la mayor parte de
su tiempo en un lazo, esperando a que el dispositivo esté listo. Este en- foque se denomina
ocupado en esperar. Si la CPU no tuviera nada más que hacer (v.g., la CPU de una
lavadora), no habría ningún problema. Sin embargo, si hay otros trabajos como ejecutar
programas, dicha espera es un desperdicio, por lo que se requiere de un método para las
operaciones de E / S.
La forma de evitar esta espera, es hacer que la CPU inicialice el dispositivo de E / S y
le indique que genere una interrupción cuando haya terminado su operación. En la figura
5-41 se puede observar como se hace esto. El software puede solicitar, activando el bit
HABILITA INTERRUPCIÓN en un registro del dispositivo, que el hardware le dé una señal
cuando la operación de E / S termine. Más adelante en este capítulo, bajo el tema de flujos
de control, se estudiarán en detalle las interrupciones.
Vale la pena mencionar que en muchas computadoras la señal de interrupción se
genera aplicando el AND booleano a los bits HABILITA INTERRUPCIÓN y LISTO. Si primero
el software habilita interrupciones (antes de la operación de E / S), ésta ocurrirá de
inmediato ya que el bit LISTO tendrá el valor de 1. De ahí que sea necesario primero
inicializar el dispositivo e inmediatamente después habilitar las interrupciones. Escribir en el
registro de estado no modifica al bit LISTO, por ser sólo de lectura.
Aunque la entrada / salida manejada por interrupciones significa un gran adelanto
comparada con la E / S programada, está lejos de ser perfecta. El problema consiste en que
se requiere de una interrupción para cada carácter transmitido y procesar interrupciones
resulta caro. Se necesitaba de una forma para deshacerse de la mayoría de las
interrupciones.
La solución reside en retomar la E / S programada, pero haciendo que alguien
diferente la lleve a cabo. (La solución a muchos problemas reside en dejar que otro haga el
trabajo). La figura 5-43 muestra cómo se organiza esto. En es- te caso, se ha incorporado
una nueva pastilla controladora para el sistema, de Acceso Directo a Memoria (DMA),
con acceso directo al bus.

170
La pastilla DMA tiene en su interior (por lo menos) cuatro registros, los que pueden
cargarse por medio de software para correr en la CPU. El primero contiene la dirección de
memoria a leer o escribir. El segundo contiene el número de bytes o palabras a transferir. El
tercero especifica el número de dispositivo o el espacio de E / S a utilizar, y por último, el
cuarto registro indica si los datos serán leídos de, o escritos en el registro de E / S.
Para escribir un bloque de 32 bytes de la dirección de memoria 100 a una terminal
(por ejemplo, el dispositivo No. 4), la CPU escribe los números 32,100 y 4 en los tres
primeros registros DMA y luego el código correspondiente a escritura (es decir, 1) en el
cuarto registro, tal como se muestra en la figura 5-43. Una vez inicializado así, el
controlador DMA realiza una solicitud del bus para leer el byte 100 de la memoria, de la
misma forma que lo haría la CPU. Una vez teniendo el byte, el controlador hace una
solicitud de E / S al dispositivo No. 4, para escribir en él dicho byte. Después de completar
estas dos operaciones, el controlador incrementa en 1 su registro de direcciones y
decrementa su registro contador también en 1. Si este último es aún mayor que 0, lee otro
byte de memoria y lo escribe en el dispositivo.
Cuando la cuenta por fin llega a 0, se detiene la transferencia de datos y se activa la
línea de interrupción en la pastilla de la CPU. Con el DMA, la CPU sólo tiene que inicializar
unos cuantos registros, después de lo cual, es libre para hacer otra cosa, hasta que la
transferencia completa termine y recibe una interrupción del DMA. Algunos controladores
tienen dos o más de estos registros, lo que les permite controlar varias transferencias
simultáneas.
Mientras que el DMA libera en gran medida a la CPU de la carga que representan las
operaciones de E / S, el proceso no es libre en su totalidad. Si un dispositivo de alta
velocidad, como un disco, está siendo usado por el DMA, se requerirá de muchos ciclos del
bus, para referencias tanto a memoria como a dispositivos. Durante estos ciclos, la CPU
tendrá que esperar (el Acceso Directo a Memoria tiene mayor prioridad de uso del bus que
la CPU, porque los dispositivos de E / S por lo general no pueden tolerar demoras). Al
proceso en el que un controlador DMA quita ciclos a la CPU se le denomina robo de ciclos.
Sin embargo, la ganancia de no tener que manejar una interrupción por cada byte (o
palabra) que se transfiere, sobrepasa a la pérdida por el robo de ciclos. En todas las
computadoras personales y minicomputadoras, el Acceso Directo a Memoria (DMA) es el
método normal de efectuar las operaciones de E / S.
Por otra parte, en las grandes macrocomputadoras la situación es diferente. Estas
máquinas realizan tantas operaciones de E / S, que el robo de ciclos saturaría el bus, e
incluso con sólo una interrupción por cada bloque transferido, se dedicaría demasiado
tiempo al manejo de interrupciones. La respuesta aquí es incorporar a la arquitectura
procesadores especiales de E / S, denominados canales de datos, como se puede apreciar

171
en la figura 2-19.
Un canal es en realidad una computadora especializada. Se le puede dar un programa
a ejecutar y luego desconectarlo para que lo lleve a cabo sin contar con ninguna ayuda de la
CPU principal. Cuando el programa ha sido ejecutado, el canal interrumpe a la CPU. Ya que
un programa de este tipo puede ser muy complicado, involucrando la transferencia de
muchos bloques de datos, se necesita un menor número de interrupciones que con las
simples transferencias de DMA.
En virtud de que ni los microprocesadores de Intel ni los de Motorola utilizan canales
de datos, se usará como ejemplo la estructura de E / S de una de las grandes
macrocomputadoras de IBM. Existen dos tipos de canales. Un canal selector, que controla
los dispositivos de alta velocidad, tales como los discos. Debido a la alta velocidad de estos
dispositivos, un canal selector sólo puede manejar una transferencia a la vez. En contraste,
un canal multiplexor, puede manejar al mismo tiempo diversos dispositivos de baja
velocidad, como son las terminales.
Para realizar operaciones de E / S en una computadora con canales de datos, la CPU
primero crea un programa para el canal y lo almacena en la memoria principal. Enseguida,
ejecuta una instrucción START I / O (Inicia E / S), que específica el canal y el dispositivo de
E / S. A continuación, el canal extrae la dirección de su programa de una localidad fija en la
memoria, coloca dicha dirección en su registro de contador de programa y comienza a
ejecutar su programa de canal. En la figura 5-44 se muestran las diversas palabras
comprendidas en el proceso, para una macrocomputadora típica.
Un programa de canal consta de una o más instrucciones de 64 bits para el canal.
Cada instrucción contiene un código de operación de 8 bits, que indica qué operación
realizar. Estas incluyen: WRITE, READ, READ BACKWARD (v.g., para rebobinar cintas
magnéticas), CONTROL (v.g., arrancar el motor), SENSE (v.g., verificar el fin de archivo) y,
CONDITIONAL BRANCH. Las instrucciones del canal incluyen también una dirección de
buffer de 24 bits para señalar de dónde, o en dónde se leerán o escribirán los datos, un
contador que indica cuántos bytes se van a transferir, así como algunos bits de bandera.
Estos últimos especifican aspectos como la no transmisión de datos (útil para salvar un
registro en una cinta) y “detener el canal después de terminar esta instrucción”.
Además de la instrucción START I / O, la CPU tiene otras instrucciones como HALT I /
O que fuerza la detención de toda actividad en el canal seleccionado. Las instrucciones TEST
I / O y TEST CHANNEL se usan para determinar el estado actual de las actividades de E / S.
Existen también disponibles otras cuantas instrucciones menores de E/S.
Todas las CPU de Intel tiene instrucciones explícitas de E / S para leer o escribir bytes,
palabras o palabras largas. Estas especifican el número de puerto de E / S deseado, ya sea
en forma directa por medio de un campo en la propia instrucción, o indirectamente, usando
el registro DX para almacenarlo. Además, por supuesto se utilizan las pastillas DMA para
liberar a la CPU de la carga de las operaciones de E / S.
Ninguna de las pastillas de Motorola tiene instrucciones de E / S. Se supone que los
registros de los dispositivos de E / S serán direccionados por medio del mapeo a memoria.
También aquí, el DMA se utiliza mucho.

172
FLUJO DE CONTROL

El flujo de control se refiere a la secuencia en que se ejecutan las instrucciones. En


general, las que se realizan consecutivamente se extraen de posiciones consecutivas de
memoria. Las llamadas a procedimientos alteran el flujo de control, deteniéndose el
procedimiento en curso y arrancando el que ha sido llamado. Las corrutinas están
relacionadas con los procedimientos y causan alteraciones similares al flujo. Los desvíos y
las interrupciones también producen el mismo efecto en condiciones especiales. Todos estos
temas se verán en las secciones siguientes.

Flujo de control secuencial y saltos

La mayoría de las instrucciones no alteran el flujo de control. Después de ejecutarse


una, se extrae la que le sigue en la memoria y se ejecuta. Después de cada instrucción el
contador de programa se incrementa en el número de posiciones de memoria que dicha
instrucción ocupa. Si se observa el contador de programa durante un largo periodo
comparado con el tiempo medio de ejecución de una instrucción, se verá que es,
aproximadamente, una función lineal del tiempo, incrementándose en la longitud media de
instrucción cada tiempo medio de ejecución de instrucción. Dicho de otro modo, el orden
dinámico en el que el procesador realmente ejecuta las instrucciones es el mismo que el
orden en que éstas aparecen en el listado del programa.
Si un programa tiene saltos, no se mantiene esta relación tan simple entre el orden en
que las instrucciones están escritas y el orden en que se ejecutan. Cuando hay saltos, el
contador de programa deja de ser una función monótona creciente de tiempo, como se

173
muestra en la figura 5-45. En consecuencia, se hace difícil visualizar la secuencia de
ejecución a partir del listado del programa. Cuando los programadores tienen problemas en
seguir la secuencia en que e! procesador va a ejecutar las instrucciones, es fácil que
cometan errores. Esta observación llevó a Dijkstra (1968) a escribir el controvertido articulo
“La declaración GO TO considerada perjudicial”, en la que se sugiere evitar las declaraciones
GO TO. Dicho artículo hizo nacer la revolución de la programación estructurada, una de
cuyas premisas en la sustitución de las declaraciones GO TO con formas más estructuradas
de flujo de control, tal como la iteración WHILE. Desde luego, estos programas se compilan
en el nivel 2, y pueden contener muchos saltos, ya que la implantación de IF, WHILE y otras
estructuras de control de alto nivel requieren de saltos.

Procedimientos

La técnica más importante para estructurar programas es el procedimiento. Desde


cierto punto de vista, una llamada a procedimiento altera el flujo de control, como lo hace el
salto, pero a diferencia de éste devuelve el control a la sentencia que sigue a la llamada,
una vez que ha terminado de realizar su tarea.
Sin embargo, desde otro punto de vista el cuerpo del procedimiento se puede
considerar como si definiera una nueva instrucción de nivel superior. Desde este punto de
vista, una llamada a procedimiento puede considerarse como una simple instrucción,
aunque pueda ser bastante complicada. Para comprender la parte de un programa que
contiene una llamada a un procedimiento, sólo se necesita saber qué hace, no cómo lo
hace.
Un tipo muy interesante es el procedimiento recursivo, que es un procedimiento
que se llama a sí mismo. El estudio de este tipo de procedimientos proporciona una
profundidad considerable de cómo están implementadas las llamadas a procedimientos y de
lo que son en realidad las variables locales. A continuación se dará un ejemplo de un
procedimiento recursivo. Un viejo problema que tiene una solución sencilla por medio de la
recursión es el de las “ Torres de Hanoi”. Hay tres varillas, la primera de las cuales pasan
por el centro de una serie de n discos concéntricos. Cada uno de ellos tiene un diámetro
más pequeño que el que está justo por debajo de él. Las otras dos varillas están vacías
inicialmente. El problema consiste en transferir todos los discos a la varilla 3, uno cada vez,
de manera que nunca haya un disco mayor sobre uno menor. La figura 5-46 muestra la
configuración inicial para n = 5 discos.

174
La solución de mover n discos de la varilla l a la 3 consiste en mover primero n – 1
discos de la varilla 1 a la 2. Seguidamente se mueve un disco de la l a la 3 y luego los n-1
discos de la 2 a la 3 (véase figura 5-42). Para resolver el problema, necesitamos un
procedimiento que mueva n discos de la varilla i a la j. Cuando se llama al procedimiento
por medio de

torres (n, i, j)

Se imprime la solución. El procedimiento comprueba primero sí n = 1. Si lo es, la


solución es trivial; nada más que moverlo de la i a la j. Si n ≠ i, la solución consta de tres
partes como la que acabamos de comentar, siendo cada una de ellas una llamada a un
procedimiento recursivo.
La solución completa se muestra en la figura 5-48.

torres (3, l, 3)

La llamada para resolver el problema de la figura 5-47, generará tres llamadas más,
ya que n no es 1. Concretamente:

torres (2, l, 2)
torres (l, l, 3)
torres (2, 2, 3)

La primera y tercera llamadas generarán cada una tres llamadas más, haciendo un
total de siete.
Para que los procedimientos sean recursivos, se necesita una pila donde almacenar los
parámetros. Cada vez que se llama a un procedimiento, se reserva en ella un bloque de
memoria, denominado trama de pila, para la dirección de retorno, los parámetros y las
variables locales si las hay. La trama más reciente es la trama actual. En nuestros ejemplos
supondremos que la pila siempre crece hacia abajo, de las direcciones altas de memoria a
las bajas. Se ha seleccionado esta convención porque la mayoría de las computadoras,
incluyendo las de Intel y Motorola, hacen las cosas de esta manera. De ahí que una
instrucción PUSH (Apila), almacene una palabra en la dirección dada por el apuntador de
pila y luego decremente dicho apuntador según el tamaño de la palabra.

175
Además del apuntador de pila, que apunta a la cima de la pila (dirección numérica
más baja), a menudo conviene tener un apuntador de base local, BL, que apunte a un
punto fijo de la trama. La figura 5-49 muestra la trama de pila para una máquina con
palabras de 16 bits. La pila comienza en la dirección 1000 y crece hacia abajo, hacia la
dirección 0. La llamada original a torres apilan n, i y j, y ejecuta una instrucción de llamada
que apila la dirección de retorno, colocándola en la 994. Al entrar, el procedimiento
llamada-almacena el valor anterior de BL en la pila y decrementa el apuntador de pila para
asignar espacio a las variables locales. Con una sola variable local de 16 bits, el apuntador
de pila, AP se decrementa en 2. La situación, después de hacer todas estas cosas, se
muestra en la figura 5-49(a).

176
Una vez dicho esto, podemos explicar para qué sirve BL. En principio, se puede hacer
referencia a las variables con desplazamientos respecto a AP. Sin embargo, según se apilan
y desapilan palabras, estos desplazamientos cambian. Aunque en algunos casos el
compilador puede conocer y seguir el número de palabras que hay en la pila, otras veces no
puede y, en todo caso, requiere considerable trabajo. Además, en algunas máquinas, como
en las Intel, el acceso a variables situadas a una distancia conocida del AP requiere del
orden de media docena de instrucciones.
En consecuencia, muchos compiladores usan un segundo registro, BL, para hacer
referencia a las variables locales y a los parámetros debido a que sus distancias a BL no
cambian con las operaciones de apilar y desapilar. En las CPU de Intel, el registro BP (EBP)
se usa para este fin. En las de Motorola, cualquier registro de direcciones, excepto el A7 (el
apuntador de pila) lo puede hacer. Los parámetros tienen desplazamientos positivos
respecto a BL y las variables loca- les los tienen negativos. Lo primero que un
procedimiento debe hacer es salvar el BL previo (de modo que pueda recuperarse a la salida
del procedimiento), copiar AP a BL y avanzar AP para reservar espacio a las variables
locales. Este código se llama prólogo del procedimiento. Hasta la salida del
procedimiento, la pila debe limpiarse de nuevo, mediante el llamado_ epílogo del
procedimiento. Una de las características más importantes de cualquier computadora reside
en qué tan corto y rápido puede hacer el prólogo y el epílogo. Si son largos y lentos, las
llamadas a procedimiento serán costosas. Los programadores que rindan culto a la
eficiencia, aprenderán a evitar la escritura de muchos procedimientos cortos y a escribir en
su lugar programas largos, monolíticos y sin estructura. Las instrucciones ENTER y LEAVE
de Intel y las instrucciones LINK y UNLK de Motorola se diseñaron para que realicen la
mayor parte del trabajo de los procedimientos de prólogo y epílogo de forma eficiente.
Volvamos ahora al problema de las Torres de Hanoi. Cada llamada a procedimiento
añade a la pila una nueva trama y cada retorno elimina de ella una trama. Para ilustrar el
uso de una pila en la realización de procedimientos recursivos, vamos a hacer un trazado de
llamadas, comenzando con

torres (3, l, 3)

La figura 5-49(a) muestra la pila justo después de hacer esta llamada. El


procedimiento comprueba primero si n = l y, al descubrir que n = 3, hace la llamada

177
torres (2, l, 2)

Después de completar esta llamada, la pila está como se muestra en la figura 5-


49(b) y el procedimiento comienza de nuevo por el principio (un procedimiento llamado
siempre empieza por el principio). Esta vez la comprobación de sí n = 1 falla de nuevo y se
hace la llamada

torres (1, l, 3)

Entonces la pila está como se muestra en la figura 5-49(c) y el contador de


programa apunta al comienzo del procedimiento. Esta vez la comprobación tiene éxito y se
imprime una línea. Seguidamente el procedimiento retorna, elimina una trama de la pila y
deja BL y AP como en la figura 5-49(d). El procedimiento continúa ejecutándose en la
dirección de retorno, que es la segunda llamada:

torres (l, 1, 2)

Esta añade una trama a la pila, como se muestra en la figura 5-49(e). Se imprime
otra línea y, después del retorno, se elimina una trama de la pila. Las llamadas a
procedimientos continúan de esta manera hasta que la llamada original termina de
ejecutarse y se elimina de la pila la trama de la figura 5-49(a).
Se pueden pasar parámetros por registro o por la pila. A las normas que regulan el
cómo se pasan los parámetros se les conoce como secuencia de llamado.

178
Corrutinas

En la secuencia ordinaria de llamada es clara la distinción entre el procedimiento que


llama y el llamado. Considérese el procedimiento A, que llama al procedimiento B, en la
figura 5-50.

El procedimiento B hace cálculos un rato y retorna a A. A primera vista podría


considerarse simétrica esta situación, ya que ni A ni B son el programa principal, sino que
son procedimientos (el procedimiento A podría haber sido llamado por el programa
principal, pero este hecho es irrelevante). Además, primero hay una transferencia de control
de A a B (la llamada) y más tarde una transferencia de control de B a A (el retorno).
La simetría viene del hecho de que cuando pasa el control de A a B, B comienza a
ejecutarse desde el principio. Cuando B retorna a A, la ejecución no comienza al principio de
A, sino en la sentencia que sigue a la llamada. Si A se ejecutara durante un rato y llamara a
B otra vez, la ejecución comenzaría al principio de B de nuevo, no en la sentencia que sigue
al retorno anterior. Si, en el transcurso de la ejecución, A llamara a B muchas veces, cada
una de las veces que arrancara B, éste comenzaría por el principio, mientras que A nunca lo
hace.
Esta diferencia se refleja en el método por el que se pasa el control de A a B. Cuando
A llama a B, usa la instrucción de llamada a procedimiento, que pone la dirección de retorno
(es decir, la de la primera sentencia que sigue a la llamada) en algún sitio útil, por ejemplo
en la cima de la pila. Pone entonces la dirección de B en el contador de programa para
completar la llamada. Cuando B retorna, no usa la instrucción de llamada, sino la de
retorno, que simplemente desapila la dirección de retorno y la mete en el contador de
programa.
A veces es útil tener dos procedimientos, A y B, cada uno de los cuales llame al otro
como a un procedimiento. Cuando B retorna a A, salta la sentencia que sigue a la llamada a
B, como antes. Cuando A transfiere control a B, no va al principio (excepto la primera vez)

179
sino a la sentencia que sigue al “retorno” más reciente, es decir, a la más reciente llamada
a A. Dos procedimientos, cada uno de los cuales considera el otro como un procedimiento
(en el sentido de que es llamado, realiza cierto trabajo y retorna a la sentencia que sigue a
la llamada), se llaman corrutinas.
Ni la llamada ni el retorno ordinarios bastarán para llamar a las corrutinas, ya que la
dirección a la que se ha de saltar viene de la pila, como en un retorno; pero, a diferencia del
retorno ordinario, la llamada a la corrutina pone a su vez una dirección de retorno en alguna
parte para hacer un retorno posterior a ella. Esta operación se podría efectuar en forma
sencilla si hubiera una instrucción que intercambiara la cima de la pila y el contador de
programa. En detalle, esta instrucción podría extraer primero la antigua dirección de retorno
de la pila, introduciéndola en un registro temporal interno; después metería el contador de
programa en la pila y, finalmente transferiría el contenido del registro temporal al contador
de programa. El apuntador de pila no cambia, ya que se saca una palabra de la pila y se
mete otra. Una secuencia de llamadas a corrutinas debe iniciarse metiendo la dirección de
una de ellas en la pila. Una introducción de llamada a corrutina se denomina, a veces,
instrucción de reanudar. De hecho existe en algunas máquinas de nivel 2, tal como se
describe aquí. Sin embargo, más a menudo, se necesitan dos o tres instrucciones para
hacer el trabajo. En la figura 5-52 se ejemplifica la instrucción REANUDAR. Ver tambien
figura 5-51.
Para ilustrar con un ejemplo el uso de las corrutinas, considérese un sistema de
programación muy avanzado que suministre documentación automática de los programas.
En cualquier lugar de un programa el programador puede insertar un comentario precedido
y seguido del símbolo #. El programa es usado por el compilador para producir el programa
objeto. Los comentarios son usados por el sistema de documentación para producir el
manual. El compilador ignora los comentarios y el sistema de documentación ignora el
programa. Para hacer el problema interesante, supondremos que la parte de documentación
es muy inteligente y analiza sintácticamente todos los comentarios para estar segura de que
no cometen errores gramaticales, ya que los que escriben manuales de programación
parecen tener grandes dificultades con el idioma. Un ejemplo de entrada se muestra en la
figura 5.53.
El programa descrito se puede escribir como dos corrutinas; una para analizar
sintácticamente el programa y otra para analizar sintácticamente el castellano. La corrutina
del programa (el compilador) comienza leyendo la entrada y analizándola según viene.
Llega un momento en que encuentra el primer símbolo de comentario, #. En este momento
desea ignorar el comentario para continuar analizando. Para ello, el compilador llama a la
corrutina de documentación, y se salta el comentario.

180
El sistema de documentación comienza leyendo y analizando el comentario. En cierto
momento lee el símbolo de comentario. Desde su punto de vista, debe ignorar el texto del
programa, de manera que regresa al compilador para saltar- se dicho texto. El compilador
arrancará, con todas sus variables y apuntadores internos intactos, desde el punto en que
se detuvo, no por el principio. El analizador sintáctico de castellano puede estar en un
estado muy complicado en este momento y es esencial que, cuando el compilador se haya
comido el siguiente trozo del texto del programa, arranque al analizador de comentarios en
el estado en que estaba cuando reanudó al compilador.
Aquí debemos notar que para realizar corrutinas se necesitan múltiples pilas, ya que
cada corrutina puede también llamar a procedimientos en la forma ordinaria, además de
hacer llamadas a corrutinas.

181
if asiento = 350 # si el avión está lleno #
then
begin
lleno = 1; # pon una bandera #
Nuevo avión # pide otro avión #
end
else reserve(pasajero); # si no, dele un asiento a esta persona #
Fig. 5-53. Un fragmento de programa con código y documentación.

Desvios

Un desvío es un tipo de llamada automática a procedimiento iniciada por alguna


condición debida al programa, normalmente una condición importante aunque improbable.
Un buen ejemplo es el desbordamiento.
En muchas computadoras, si el resultado de una operación aritmética excede al mayor
número que pueden representar, tendrá lugar un desvío, entendiéndose por esto que se
conmutará el flujo de control a alguna posición de memoria fija, en lugar de continuar en
secuencia. En dicha posición fija habrá un salto a un procedimiento de- nominado
procedimiento controlador de desvíos por desbordamiento, que realizará alguna acción
apropiada, tal como imprimir un mensaje de error. Si el resultado de una operación cae en
el rango correcto, no ocurrirá ningún desvío.
La característica esencial del desvío es que se inicia en alguna condición excepcional
causada por el programa mismo y detectada por el hardware o por el microprograma. Otro
método para tratar desbordamientos consiste en tener un registro de un bit que se ponga a
1 cuando suceda un desbordamiento. El programador que desee comprobar si hay
desbordamiento debe incluir una instrucción explícita de salto si el bit de desbordamiento
está a 1” después de cada instrucción aritmética. Hacer esto sería lento y costaría mucho
espacio.
Por lo regular, los desvíos se implementan haciendo que el microprograma realice la
verificación.
El desvío puede implementarse por medio de una comprobación explícita efectuada
por el intérprete a nivel 1. Si detecta desbordamiento, cargará la dirección del desvío en el
contador de programa. Lo que es un desvío en un nivel puede estar bajo control del
programa en un nivel inferior. El hecho de hacer que el microprograma efectúe la
comprobación ahorra tiempo en comparación con el que ocupa la comprobación hecha por
el programador, ya que la puede hacer fácilmente al mismo tiempo que alguna otra cosa.
También ahorra memoria, ya que las comprobaciones necesitan estar una sola vez en unos
pocos procedimientos del nivel 1, independientemente de cuántas operaciones aritméticas
haya en el programa principal.
Algunas condiciones corrientes que causan a veces desvíos son desbordamientos y
subdesbordamientos en punto flotante, desbordamiento en enteros, violación de

182
protecciones, código de operación indefinido, desbordamiento de la pila, intento de arrancar
un dispositivo de E/S que no existe, intento de extraer una palabra con dirección impar y la
división entre cero.

Interrupciones

Las interrupciones son cambios en el flujo de control, no ocasionados por el programa


que se ejecuta, sino por alguna otra cosa normalmente relacionada con la E/S. Por ejemplo,
un programa puede decirle al disco que empiece a transferir información y que produzca
una interrupción cuando acabe la transferencia. Al igual que el desvío, la interrupción
detiene el programa en curso y transfiere control al procedimiento de tratamiento de
interrupciones, que realiza alguna acción apropiada. Cuando termina, el procedimiento de
interrupciones retorna el control al programa interrumpido. Debe continuar el proceso
interrumpido exactamente en el mismo estado en que estaba cuando tuvo lugar la
interrupción. Ello significa restaurar los registros internos al estado que tenían antes de la
interrupción.
La diferencia esencial entre los desvíos y las interrupciones es que los desvíos son
síncronos con el programa y las interrupciones son asíncronas. Si el programa se vuelve a
ejecutar un millón de veces, los desvíos tendrán lugar cada vez, pero las interrupciones
pueden variar, por ejemplo, conforme al momento exacto en que una persona en una
terminal pulsa la tecla de retorno de carro. La razón de que los desvíos sean reproducibles y
las interrupciones no lo sean reside en que los desvíos los ocasiona el programa
directamente, y las interrupciones, a lo sumo, son causadas por el programa en forma
indirecta. Para apreciar realmente cómo funciona una interrupción, considérese un ejemplo
común: una computadora desea enviar una línea de caracteres a una terminal. Primero, el
software del sistema reúne en un buffer a todos los caracteres que se van a escribir,
inicializa una variable global apt, para apuntar al inicio del buffer y asigna a una segunda
variable global cuenta con el número de caracteres que se enviarán. En seguida checa si la
terminal está lista y, en su caso, envía el primer carácter (v.g., utilizando registros como los
de la figura 5-41). Una vez iniciada la operación de E/S, la CPU se libera para correr otro
programa o hacer alguna otra cosa. En el transcurso del tiempo, el carácter se despliega en
la pantalla. La interrupción puede ahora comenzar. Los pasos, en forma simplificada, son los
siguientes:

ACCIONES DE HARDWARE

1. El controlador del dispositivo activa una línea de interrupción para


iniciar la secuencia de interrupción.
2. Tan pronto como la CPU se encuentra preparada para manejar la
interrupción, activa en el bus una señal de interrupción recibida.
3. Cuando el controlador del dispositivo ve que su señal de interrupción
ha sido recibida, pone un número entero pequeño en las lineas de
datos para identificarse a si mismo. A este número se le denomina
vector de interrupción.
4. La CPU quita del bus al vector de interrupción y lo almacena de
manera temporal.
5. La CPU apila el contador de programa y la Palabra de Estado del
Programa (PSW) en la pila.
6. En seguida, la CPU ubica un nuevo contador de programa utilizan- do
el vector de interrupción como índice dentro de una tabla en la parte
baja de la memoria. Si, por ejemplo, el contador de programa es de 4
bytes, el vector de interrupción n correponde a la dirección 4n. Este

183
nuevo contador de programa apunta al inicio de la rutina de servicio
de interrupción, para el dispositivo que la provocó.

ACCIONES DE SOFTWARE

7. La primera cosa que hace la rutina de servicio de interrupción es


salvar todos los registros, de modo que puedan recuperarse más
tarde. Se pueden salvar en la pila, o en una tabla del sistema.
8. Cada vector de interrupción es compartido, por lo general, por todos
los dispositivos de un tipo determinado, así que aún no se sabe qué
terminal provocó la interrupción. Se puede encontrar el número de la
terminal leyendo algún registro de dispositivo.
9. Se puede leer ahora, cualquier otra información acerca de la
interrupción, tal como códigos de estado.
10. Si ocurrió un error de E/S, se puede manejar aqui.
11. Se actualizan las variables globales apt y cuenta. La primera se
incrementa para apuntar al siguiente byte; y la segunda se
decrementa para indicar que queda un byte menos para desplegar. Si
cuenta es aún mayor que 0, existen aún caracteres por enviar.
Entonces, copia el que está siendo apuntado en ese momento por apt
en el registro del buffer de salida.
12. En caso de requerirse, se envía un código especial para indicar al
dispositivo o al controlador de interrupciones que la instrucción ha sido
procesada. Por ejemplo, el 8259A requiere de dicha señal.
13. Restaura todos los registros salvados.
14. Ejecuta la instrucción RETURN FROM INTERRUPT (regresa de
interrupción), poniendo a la CPU de nuevo en el modo y estado que
tenía justo antes de que ocurriera la interrupción. La computadora
continúa como si no hubiera habido interrupción.

Un concepto clave relacionado con las interrupciones es la transparencia. Cuando


sucede una interrupción, tienen efecto algunas acciones y se ejecutan algunos códigos, pero
cuando todo termina, la computadora debe de ser regresada exactamente al mismo estado
en que se encontraba antes de la interrupción. Una rutina de interrupción que tiene esta
propiedad se dice que es transparente. Hacer que todas la interrupciones sean
transparentes hace que el proceso de interrupciones en su conjunto sea mucho más fácil de
entender.
Si la computadora sólo tiene un dispositivo de E/S, entonces las interrupciones
trabajan tal y como se describió antes y no hay nada más que agregar al respecto. Sin
embargo, una computadora grande puede tener muchos dispositivos de E/S y varios pueden
estar corriendo al mismo tiempo, probablemente en beneficio de diferentes usuarios. Existe
una posibilidad diferente de cero, que mientras una interrupción se esté ejecutando, un
segundo dispositivo de E/S quiera generar su interrupción.
Para este problema se pueden tomar dos enfoques. El primero es que todas las rutinas
de interrupción inhiban, como primera tarea, a todas las interrupciones posteriores, aun
antes de salvar los registros. Este enfoque es muy simple mientras las interrupciones se
suceden en forma estrictamente secuencial, pero puede causar problemas a los dispositivos
que no pueden tolerar mucha demora. Por ejemplo, en una línea de comunicaciones de
9600 bps, los caracteres llegan cada 1042 microsegundos, esté o no listo el dispositivo. Si el
primer carácter no ha sido procesado para cuando llega el segundo, puede haber pérdida de
información.

184
Cuando una computadora tiene dispositivos de E/S con tiempos críticos, un mejor
enfoque en el diseño es el de asignar una prioridad a cada dispositivo, alta para los
dispositivos muy críticos y baja para los menos decisivos. En forma similar, la CPU debe
tener también prioridades, por lo general determinadas por un campo en la PSW. Cuando
un dispositivo con prioridad n interrumpe la rutina de interrupción, debe correr también con
prioridad n.
Cuando se está ejecutando una rutina de prioridad n, cualquier intento de interrupción
de un dispositivo con menor prioridad se ignora, hasta que la rutina termina y la CPU vuelve
a correr un programa de usuario (prioridad 0). Por otra parte, las interrupciones de
dispositivos con prioridad mayor, deben ejecutarse sin demora.
Teniendo sujetas a interrupción a las propias rutinas de interrupción, la mejor manera
de mantener correcta la administración es asegurarse de que todas las interrupciones sean
transparentes. Considérese un ejemplo simple de interrupciones múltiples. Una
computadora tiene tres dispositivos de E / S, una impresora, un disco y una línea RS 232,
con prioridades de 2, 4 y 5, respectivamente. Al principio (t = 0), se encuentra en ejecución
un programa de usuario, cuando de repente, en 1 = 10, ocurre una interrupción de la
impresora. Como se puede ver en la figura 5-54, se inicia la rutina de servicio de
interrupción (ISR) de la impresora.

En t = 15, la línea RS 232 requiere de atención y genera otra interrupción. Ya que la


linea RS 232 tiene una prioridad mas alta (5) que la de la impresora (2), la interrupción se
realiza. El estado de la maquina, que en ese momento está corriendo la ISR de la
impresora, se coloca en la pila y se inicia la ISR de la línea RS 232.
Poco después, en t = 20, el disco termina y requiere de servicio. No obstante, su
prioridad (4) es menor que la de la rutina actualmente en ejecución (5), de modo que el
hardware de la CPU no acepta la interrupción y la mantiene pendiente. En t = 25, termina la
rutina de las líneas RS 232 y regresa al estado en que se encontraba antes de generar la
interrupción, es decir, ejecutando la rutina de servicio de interrupción de la impresora, con
la prioridad 2. Tan pronto como la CPU cambia a la prioridad 2, aún antes de poder ejecutar
una sola instrucción, se permite entonces la interrupción del disco con prioridad 4 y se
ejecuta la ISR del disco. Cuando ésta concluye, la rutina de la impresora puede continuar.
Por último, en t = 40, todas las rutinas de servicio han finalizado y el programa de usuario
continúa en el punto en el que se le dejó.
Todas las pastillas de Intel tienen dos niveles (prioridades) de interrupción, diferibles y
no diferibles. Estas últimas se usan, por lo regular, para señalar casi catástrofes, tales como
errores de paridad de memoria. El tipo diferible es el que utilizan todos los dispositivos de
E/S.
Cuando un dispositivo de E/S envía una interrupción, la CPU usa el vector, de

185
interrupción para indexar una tabla de 256 elementos y encontrar la dirección de la rutina
de servicio de interrupción. En el 8088, dicha tabla se encuentra en la dirección absoluta 0,
con 4 bytes para cada elemento. En los procesadores 80286 y 80386, los vectores de
interrupción son descriptores de segmento de 8 bytes y la tabla puede estar ubicada en
cualquier parte de la memoria, con un registro global apuntando a su inicio.
Teniendo sólo un nivel de interrupción utilizable, no existe forma de que la CPU
permita que un dispositivo con prioridad alta, ni tampoco baja, suspenda una rutina de
servicio de interrupción con prioridad media. Para resolver este problema, las CPU de Intel
se usan por lo general junto con un controlador de interrupciones 8259 A (véase figura 3-
38). Cuando se presenta la primera interrupción, digamos con la prioridad n, la CPU se
interrumpe. Si se presenta otra con una prioridad mayor, el 8259 A realiza una segunda
interrupción. Si por el contrario es menor, se mantiene pendiente hasta que la primera
termina. (La rutina debe enviar un comando en forma explícita al 8259 A, para indicarle
cuando termina y permitir que se lleven a cabo interrupciones con menor prioridad).
En los procesadores 680 x 0 de Motorola la situación es en cierta forma diferente.
Como en el 8088, tienen 256 vectores de interrupción de 4 bytes que inician en la dirección
absoluta 0. Sin embargo, a diferencia de las pastillas de Intel, tienen tres patas destinadas
al número del nivel de interrupción, del 0 al 6, más el 7 que es del tipo no diferible.
Además, la CPU tiene en la PSW un campo de prioridad de 3 bits. Cuando un dispositivo de
E / S desea provocar una interrupción, coloca su prioridad en las tres patas y envía una
señal. La CPU puede entonces, dependiendo de la prioridad actual, aceptar o rechazar la
solicitud. En este caso no se requiere de una pastilla como la 8259A.

186
CONCLUSIÓN

187
BOLILLA III:
ARQUITECTURA DEL
PROCESADOR

188
INDICE

INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37

189
Implementación de funciones booleanas ..........................................................................38
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103

190
Pilas .................................................................................................................................103
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174

191
Corrutinas ........................................................................................................................179
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239

192
Modo de direccionamiento indirecto ..........................................................................240
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296

193
BOLAS GIRATORIAS: .................................................................................................296
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310

194
INDICE...................................................................................................................................311
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

195
INTRODUCCIÓN

196
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

ARQUITECTURA DEL PROCESADOR


ESTRUCTURA GENERAL

Una computadora digital es un sistema de procesadores, memorias y dispositivos de


entrada / salida interconectados. Veremos aquí estos componentes y su interconexión.
Procesadores, memorias y dispositivos de entrada / salida son conceptos claves por lo que
iniciaremos el estudio de la arquitectura del procesador analizando cada uno de ellos.

DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR

En una visión muy general un ordenador lo podemos asimilar a la siguiente situación.


Supongamos una oficina donde tenemos un "Señor" sentado frente a un escritorio en donde
tiene una calculadora una cierta cantidad de papeles en blanco donde escribir datos y un
contador que le indica el número de la casilla que deberá leer a continuación. A su espalda
tiene una serie de casilleros numerados en donde puede guardar o sacar información y un
lugar preciso tiene una determinada cantidad de tarjetas en donde están escritas
instrucciones. Además, en la pared hay un reloj donde se le indica el tiempo que tiene para
resolver cada instrucción.
Por otro lado, también tiene a cada lado un canasto, el de su derecha es donde se le
introducen datos, requerimientos ó instrucciones y el de su izquierda es donde el entrega
datos o respuestas a los requerimientos. Esto se puede apreciar en la siguiente figura
(Figura 1).

197
Es importante destacar, que este "Señor'" no sabe hacer nada si no se le indica por
medio de las tarjetas con instrucciones. Veamos como funciona el sistema:
1- El "Señor, que llamaremos Unidad de Control, observa el número que le
indica el contador de su escritorio. y se va a la casilla indicada, previo a sumar uno
al contador.
2- El "Señor", toma la tarjeta de la casilla indicada por el contador.
3- Copia el contenido de esa casilla en un papel en blanco, e interpreta lo que
allí se le dice. Vamos a suponer que en esa instrucción se le pide que sume dos
números "A" y "6" y que están en las casillas de las cuales se les da el número, y
que el resultado "R" lo guarde en otra casilla de la que también se le indica su
número.
4- El "Señor" Unidad de Control, va ala casilla en donde se le dice que está
guardado "A" y saca su contenido, que copia en uno de los papeles en blanco que
tiene sobre su escritorio.
5- Luego va al número de casilla donde se le dice que tiene "B" y realiza la
misma operación, copiando el contenido en otro papel en blanco.
6- Toma la calculadora e ingresa "A" y "B" y los suma.
7- Al resultado "R", lo guarda en el número de casilla que se le indico.
8- Una vez que realizó todo lo anterior, y como ha terminado lo que se le
indicaba. se fija en el contador que tiene en la mesa y se examina a que número
debe ir a buscar la próxima tarjeta.
9- Va realizando los pasos 1 a 7 hasta que encuentra una tarjeta que le dice que
se terminaron las instrucciones. En este caso entrega los resultados en el canasto
de su izquierda para que otro pueda interpretarlos, y se queda esperando que se le
introduzcan por su derecha nuevas instrucciones.

Ahora que sabemos como funciona el "Señor 11 y todo su entorno, veamos como
relacionamos, por analogía, con las partes constitutivas de una computadora y su
funcionamiento.
En una visión general, un ordenador se compone de una Unidad Central de Proceso
(CPU), en la que tenemos una Unidad de control (el "Señor"), una Unidad Aritmética y
Lógica (la calculadora) los Registros Internos (los papeles en blanco sobre el escritorio) y
una Memoria (el casillero a su espalda). Por otro lado tenemos, las Interfaces y Unidades de

198
Entrada / Salida (los canastos a ambos lados). El reloj sobre la pared sirve como elemento
de sincronización entre todas las partes del sistema.
En el casillero (memoria) podemos encontrar dos clases de información, por un lado
las tarjetas con ordenes acomodadas secuencialmente ("Instrucciones de un programa") y
por otro lado los datos. a menudo llamados operandos, con los cuales la máquina efectuará
los tratamientos indicados por las instrucciones.
Dentro de la Unidad Central de Proceso (CPU), tenemos dos unidades muy
importantes de la máquina, que tienen correspondencia con las dos clases de información
almacenadas. Una es la llamada "Unidad de Control", o también llamada "Unidad de
Instrucciones'" para las instrucciones del programa, y la segunda, es la "Unidad Aritmética y
Lógica", la que realiza operaciones aritméticas sobre los datos, tales como sumar, restar,
etc., u operaciones lógicas tales como comparar, o analizar si el contenido de los datos son
verdaderos o falsos de acuerdo a la instrucción, etc.
La figura 2 muestra esquemáticamente como pueden resumirse las principales
funciones de la CPU.

La Unidad de Control, que contiene el "Contador de Programa" y el "Registro de


Instrucción", extrae de la memoria, en la dirección indicada por el Contador de Programa, la
nueva instrucción a ejecutar y la copia en el Registro de 'Instrucción, el que tiene el
siguiente formato:
En donde el "CÓDIGO DE OPERACIÓN" indica que tipo de operación deberá realizar, y
las direcciones de los operandos y del resultado, indica donde ir a buscar los operandos y
donde guardar el resultado respectivamente.
Una vez que ha decodificado (interpretado) el tipo de operación a realizar, busca los
operandos y los copia en los registros internos de la "Unidad Aritmética y Lógica" (ALU)
para que esta realice la operación indicada en el "Código de Operación".
Tal como se ha indicado hasta aquí, la máquina puede ejecutar un programa
inicialmente registrado en la memoria central, sobre datos registrados en la memoria
central y almacenar los resultados en la memoria central a medida que son obtenidos.
Ahora es necesaria dotarla de medios para comunicarse con el exterior; este es el
papel reservado a las Unidades Periféricas.
Existen dos grandes clases de unidades periféricas: "Las Unidades de Comunicación"
(lectoras de tarjetas, impresoras, unidades de visualización de rayos catódicos, teclados,
etc), que permiten el dialogo con el exterior; y las "Memorias Auxiliares" ó "Unidades de

199
Almacenamiento Secundario" (discos magnéticos. Disquetes, cintas magnéticas, etc), cuyas
capacidades de almacenamiento son muy superiores a las de una memoria principal.
Estas Unidades Periféricas se conectan a la memoria central directamente a través de
unidades especializadas en la gestión de transferencia de información. Estas "Unidades de
Transferencia de Información", se ocupan de gobernar los canales o buses.
En resumen podemos representar un ordenador como un conjunto ensamblado de
diferentes unidades, cuyo funcionamiento está regido por un programa registrado en la
memoria principal. La Unidad de Control gobierna la ejecución de las operaciones pedidas
por el programa. Si la operación es un cálculo, es la Unidad Aritmética y Lógica quien lo
realiza, al igual que si se debiera efectuar una comparación lógica y tomar una decisión. Si
es una transferencia de información con el exterior, se cede el control aun canal. Figura 3

MICROPROCESADORES

En la Figura 4 se puede apreciar la organización de una microcomputadora con un


solo bus o canal. La Unidad Central de Procesamiento (CPU) es el "cerebro" de la
computadora. Su función es ejecutar programas almacenados en la memoria central
tomando las instrucciones examinándolas y luego ejecutándolas una a continuación de otra.

200
La CPU se compone de varias partes. La Unidad de Control, se encarga de traer las
instrucciones de la memoria principal y determinar su tipo. La Unidad Aritmética y Lógica
que realiza operaciones como la suma o la función booleana ANO, necesarias para llevar a
cabo las instrucciones.
La CPU también contiene una pequeña memoria de alta velocidad utilizada para
almacenar los resultados intermedios y cierta información de control. Esta memoria consta
de varios registros, cada uno de los cuales tiene cierta función.
El registro más importante es el "Contador de Programa" (PC = Program Counter),
que indica la dirección de la próxima instrucción que debe ejecutarse. El nombre de
"Contador de Programa" a veces confunde ya que no cuenta nada, pero su uso es muy
difundido.
Otro registro muy importante es el "Registro de Instrucción", que contiene la
instrucción que se está ejecutando. No obstante, la mayoría de las computadoras tienen
otros registros, algunos de los cuales son accesibles a los programadores.

EJECUCIÓN DE LAS INSTRUCCIONES

En la CPU se ejecutan instrucciones en una serie de pequeños pasos:


1- Extrae de la memoria la siguiente instrucción y la lleva al registro de instrucción.
2- Cambia el Contador de Programa de modo que señale la siguiente instrucción.
3- Determina el tipo de instrucción que acaba de extraer.
4- Verifica si la instrucción requiere datos de la memoria y, si es así, determina donde
están situados.
5- Extrae los datos, si los hay, y los carga en los registros internos de la CPU.
6- Ejecuta la instrucción.
7- Almacena los resultados en el lugar apropiado.
8- Vuelve al punto 1 para empezar: la ejecución de la instrucción siguiente.

A esta secuencia de pasos se la denomina ciclo de máquina y es la forma básica de


operación de toda computadora.
Esta descripción de como funciona la CPU se parece mucho a un programa. El hecho
de que sea posible escribir un programa que imite el funcionamiento de la CPU demuestra
que no es necesario que un programa sea ejecutado por una CPU "física... es decir, un
dispositivo compuesto de elementos electrónicos, sino que puede utilizarse otro programa

201
que extraiga, examine y ejecute las instrucciones.
Un programa que rea liza esto se llama II intérprete". Esta equivalencia entre el
intérprete y los procesadores físicos es muy importante en la organización de las
computadoras. Después de haber especificado un lenguaje de máquina "L" para una
determinada computadora, el equipo de diseño puede decidir si quiere construir un
procesador físico para ejecutar programas en "L" o si prefiere escribir un intérprete en su
lugar que realice la misma función.
Dado que un intérprete se divide en pasos pequeños las instrucciones que ejecuta. la
máquina en la que funciona puede ser mucho más simple y por lo tanto, menos cara de lo
que costaría un procesador de hardware para la máquina. Por estas razones, los programas
en computadoras modernas, al nivel de máquina convencional, son ejecutados por un
intérprete que corre en una máquina mucho más primitiva y al que se llama "nivel de
microprogramación".
El conjunto de todas las instrucciones que tiene a su disposición un programador en
un nivel se denomina "conjunto de instrucciones". La cantidad de instrucciones varía de una
máquina a otra y de nivel en nivel. Por ejemplo, para el nivel de máquina convencional, el
conjunto suele tener de 20 a 300 instrucciones. Un conjunto de instrucciones grandes no
tiene por que ser mejor que uno pequeño. De hecho suele ocurrir lo contrario. Un conjunto
de instrucciones grandes indica, a menudo, que las instrucciones no son muy generales. Los
compiladores para alto nivel como Ada, Pascal, etc, se desempeñan mejor en máquinas con
conjuntos de instrucciones reducidos y bien definidos. A las máquinas con conjuntos de
instrucciones muy reducidos se las denomina "RISC" (Reduced Instruction Set Computer).
Este tipo de máquinas no utiliza microprogramación y son muy rápidas. A las máquinas con
conjuntos de instrucciones normales o extendidos se las llama "CISC"(Completed
Instruction Set Computer).

ORGANIZACIÓN DE LA CPU

La organización interna de una parte clásica de la CPU se debe al diseño de "Von


Neumann", y se muestra en la Figura 5. A esta parte se la denomina la "trayectoria de los
datos", y consiste en los registros (normalmente de 1 a 16) y en la ALU (Unidad Aritmética-
Lógica). Dichos registros alimentan dos entradas a la ALU (A y B en la figura). los cuales
retienen información mientras la ALU realiza sus cálculos.

202
La Unidad Aritmética y Lógica realiza sumas, restas y otras operaciones sencillas sobre
el contenido de los registros de entrada, colocando el resultado en el registro de salida, el
cual a su vez puede ser almacenado en la memoria.
Las instrucciones pueden dividirse en tres categorías:
• De registro a memoria.
• De registro a registro.
• De memoria a memoria.
Las instrucciones de registro a memoria permiten que una palabra de memoria sea
extraída a los registros, donde pueden ser usadas como entradas para la ALU en
instrucciones subsecuentes.
Una instrucción típica de registro a registro extrae dos operandos de los registros, los
lleva a los registros de entrada de la ALU, lleva a cabo alguna operación con ellos y
almacena el resultado en otro registro.
Una instrucción de memoria a memoria extrae sus operandos de la memoria y lleva
estos a los registros de entrada de la ALU, donde realiza su operación y escribe el resultado
en la memoria.
La operación de flujo de datos es el corazón de la mayoría de las CPU y define en gran
parte lo que una máquina es capaz de hacer.

203
LA UNIDAD ARITMÉTICA Y LÓGICA

Para pedir al ordenador una operación matemática, por, ejemplo una suma, la
instrucción debe facilitarle la siguiente información:
La clase de operación a realizar, en este caso una suma. Este papel lo cumple el
código de operación.
La dirección de la célula de memoria que contiene el primer dato, o primer operando.
La dirección de la célula de memoria que contiene el segundo dato, o segundo
operando.
La dirección de la célula de memoria donde debe almacenarse el resultado.
De aquí se deduce la forma de la instrucción, que contiene un código y tres
direcciones:

DIRECCIÓN DIRECCIÓN DIRECCIÓN


CÓDIGO DE
1° 2° DEL
OPERACIÓN
OPERANDO OPERANDO RESULTADO

La figura 6 representa la Unidad Aritmética y Lógica capaz de ejecutar esta


operación, la cual está rodeada de tres registros donde de memorizan los dos operandos y
el resultado.

La instrucción de suma necesita cuatro accesos a la memoria central, que permiten


sucesivamente buscar la instrucción, después el primer operando, luego el segundo
operando y, por último, almacenar el resultado. A las máquinas que utilizan este tipo de
instrucción se las llama de tres direcciones.
Existen otras máquinas llamadas de una dirección. Su Unidad Aritmética y Lógica
posee un registro partivular, denominado acumulador, que sirve tanto para albergar el
primer operando como el resultado. Esta característica permite intrucciones de una sola
dirección: la del segundo operando.
La operación de suma necesita tres instrucciones para:
1- Cargar el primer operando en el acumulador.
2- Sumar el segundo operando con el contenido del acumulador.
3- Almacenar en memoria el contenido del cacumulador.

204
Cada una de setas tres instrucciones comportará un código de operación y una
dirección.

CÓDIGO DE DIRECCIÓN
OPERACIÓN
Carga Dirección 1º operando
Adición Dirección 2º operando
Almacenamiento Dirección resultado

La Unidad Aritmética y Lógica está esquematizada en al figura 7, donde el


acumulador sustituye a los registros R1, R2 de la figura anterior.

El segundo operando puede almacenarse durante la operación en el “Registro de


Palabra” asociado a la memoria. Este es el caso de la computadora conocida como
"Abacus".

205
LA UNIDAD DE CONTROL

Es la unidad que extrae y analiza las instrucciones de la memoria central. Para ello
necesita dos registros:

1- Uno llamado "Contador de Instrucciones", "Contador Ordinal" ó “Contador


de Programa” (PC = Program Counter), que contiene la dirección de la próxima
instrucción a ejecutar. Su nombre se debe a que, exceptuado las rupturas de
secuencia, este registro va aumentando su contenido en una unidad para pasar a la
siguiente instrucción.
2- Un registro llamado “Registro de Instrucción”, que contiene la última
instrucción extraída de la memoria. Si bien existen distintos diseños para este
registro, vamos a ver el Registro de Instrucción de “Abacus”, que es la arquitectura
que estamos analizando y que es la que está más difundida. Este Registro de
Instrucción se divide en dos partes:

a) Una parte que está conformada por el “Código de Operación”, que define el tipo
de instrucción a ejecutar (suma, multiplicación, salto, etc.).
b) Otra parte que contiene la/s “Dirección/es del/os, operando/s”.

La unidad de control contiene además un órgano generador de secuencias llamado


“Secuenciador”, el que tras analizar el código de operación, distribuye las ordenes al
conjunto de unidades del ordenador, tales como la Memoria, Unidad Aritmética y Lógica,
etc., a fin de hacerles ejecutar las distintas fases de la instrucción. Esto puede verse en la
Figura 8.

El desarrollo de una instrucción de procesamiento en un computador de una dirección,


puede descomponerse en tres fases:

1- Búsqueda y análisis de la instrucción.


2- Búsqueda y procesamiento del operando o bien, almacenamiento del operando.
3- Preparación de la siguiente instrucción.

206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN

La Unidad de Control ordena la transferencia del contenido del Contador de Programa


(es decir la dirección de la instrucción por ejecutar) al Registro de Selección, y envía a la
memoria una orden de lectura. Una vez terminada esta operación de lectura, la instrucción
queda disponible en el Registro de Palabra. Entonces, la Unidad de control ordena la
transferencia del contenido de este registro al Registro de Instrucción.
Los circuitos especializados de la Unidad de Control pueden entonces analiza el Código
de Operación de la instrucción. Esta primera fase es común a todos los tipos de
instrucciones. Tal como indica la Figura 9.

FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO

Caso de búsqueda del operando, seguido de procesamiento:

Una vez analizado el código de operación de la instrucción, la unidad de control sabe


que se trata de una instrucción de procesamiento, con búsqueda previa del operando. La
dirección del operando se encuentra en la zona de dirección del Registro de Instrucción. La
Unidad de Control ordena su transferencia al Registro de Selección de memoria y acto
seguido ordena una operación de lectura en la memoria. Al finalizar dicha operación, el
operando buscado queda disponible en el Registro de Palabra. La Unidad de Control
posiciona los circuitos de la Unidad Aritmética y Lógica para realizar el procesamiento
solicitado por el código de operación y ordena la transferencia del operando a la Unidad
Aritmética y lógica. El resultado del procesamiento del operando queda almacenado en el
Acumulador.
Obsérvese que un posible procesamiento puede ser simplemente una transferencia del
operando al acumulador. Figura 10.

207
Caso de almacenamiento del operando:

La dirección de almacenamiento del operando se encuentra en la zona de dirección del


Registro de Instrucción. La Unidad de Control ordena su transferencia al Registro de
Selección de la memoria. El operando a almacenar está en el Acumulador. La Unidad de
Control ordena su transferencia al Registro de Palabra. Acto seguido completa la ejecución
ordenando a la memoria una operación de escritura. Figura 11.

208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN

Consiste en aumentar una unidad (a menudo se dice incrementar en uno) el contenido


del Contador de Programa, de manera que contenga la dirección de la siguiente instrucción..

INSTRUCCIÓN DE RUPTURA DE SECUENCIA

Este tipo de instrucción, también llamado instrucción de bifurcado o de salto, permite


modificar el desarrollo secuencial del programa, haciendo que la instrucción de salto sea
seguida, no por la instrucción almacenada en la siguiente dirección de memoria, sino por
una instrucción cuya dirección viene suministrada por la propia instrucción de salto.
El salto puede ser condicional, o sea que este no tendrá efecto si no se satisface una
determinada condición, normalmente relacionada con el contenido del acumulador, en caso
de no cumplirse esta condición, el programa continuar en secuencia.
El Código de Operación define la condición y la Dirección indica el emplazamiento de la
próxima instrucción por ejecutar en caso de satisfacerse la condición. Esto puede verse en
la figura 12.

Si la respuesta de la Unidad Aritmética y Lógica es que la condición ha sido satisfecha,


la Unidad de Control ordena la transferencia de la dirección al Contador de Programa e
inhibe la suma, de una unidad a este contador, en caso contrario ordena incrementar en
uno al Contador de Programa.

209
EL CANAL

Es un dispositivo que es capaz, en general, de gestionar la transferencia, tanto en un


sentido como en otro, de un conjunto de información entre las Unidades Periféricas y la
Memoria Central. En los ordenadores actuales esta transferencia puede operarse
simultáneamente con el desarrollo de un programa de cálculo. Las informaciones
transferidas se almacenan en memoria en forma secuencial. Para inicializar la transferencia,
instrucciones especiales de entrada/salida deben suministrar al canal lo siguiente:

1. La dirección de la Unidad Periférica implicada.


2. La dirección para el almacenamiento de la primera información.
3. El número de informaciones a transferir.

En lo sucesivo el canal se ocupara totalmente de la gestión de la transferencia. Por


cada información transferida, sumar uno a la dirección de almacenamiento y restar uno al
número de informaciones a transferir. En el momento en que toda la información ha sido
transferida, advertir a la Unidad de Control a través de un mecanismo llamado “
Interrupción”. Esto de aprecia en la Figura 13.

210
LAS UNIDADES PERIFÉRICAS

Se distinguen dos grandes clases de Unidades Periféricas:

1- Las memorias auxiliares: que sirven de soporte de almacenamiento de gran


capacidad y de medio de comunicación con el interior del sistema. Estas unidades
están compuestas por los discos, disquetes, cintas magnéticas, etc.
2- Las unidades de comunicación: que podemos a su vez dividirlas en:
a) Comunicación entre el sistema y el medio exterior: que permiten el intercambio
de información sobre soportes generados o leídos por el hombre, como pueden
ser las máquinas lectoras o perforadoras de cintas o tarjetas perforadoras, las
impresoras, etc.
b) Unidades para el diálogo entre el hombre y el computador: tales como las
máquinas de escribir, unidades de visualización, teclado y monitores de
terminales, etc.
c) Las unidades para intercambio de información a distancia: como por ejemplo las
líneas de comunicación, las redes de computadoras, las terminales, otros
computadores, etc.
d) Las unidades para el intercambio de información a través de dispositivos que
aceptan o suministran datos analógicos: tales como modems, conversores
analógicos / digitales, etc.

La mayoría de las unidades constan de dos partes:

1- Una parte electrónica, llamada “Controlador” o “Unidad de Control de Periféricos”.


2- Una unidad electromecánica que, gobernada por 1a primera, lee o escribe datos en
los dispositivos periféricos.

INTERRUPCIONES

Las " Interrupciones" son ordenes que proceden del exterior y que piden al ordenador
ejecutar un programa asociado a la orden. El programa en curso se ve interrumpido para
permitir la ejecución del programa solicitado por la interrupción, considerado ahora como
prioritario. Terminado este último. se reanuda la ejecución del programa interrumpido.
Es gracias a las interrupciones, como se le comunica ala Unidad de Control que debe
realizar o ejecutar una tarea. ~ bien para avisarle que algo a sucedido ó finalizado. como
por ejemplo cuando el canal le avisa que todos los datos solicitados han sido transferidos a
la memoria.
Más exactamente. el tratamiento de una interrupción consiste. en general. en
memorizar el estado de la máquina desde el final de la instrucción en curso y forzar
seguidamente en el Contador de Programa la dirección de la primera instrucción del
programa asociado a la interrupción. Este programa. a su vez. termina en una instrucción
que restaura el estado que tenía la máquina al momento de la interrupción. lo que permite
la reanudación del programa interrumpido.
Existen dos tipos de interrupciones:

1- Las "Enmascarables": o sea las que pueden ser temporaria- mente ignoradas.
por cuanto no implican un procesamiento o atención inmediata. El ejemplo anterior
del canal es una de las interrupciones enmascarables.
2- Las "No Enmascarables": que no pueden ignorarse por cuanto deben set
atendidas inmediatamente. Entre estas encontramos las interrupciones por errores.
tanto de Hardware como de Software. los errores lógicos (división por cero). etc.
También tenemos las interrupciones que proceden por ordenes del operador, como
por ejemplo la cancelación de un programa, etc.

Podemos clasificar las interrupciones según el campo de aplicación del procedimiento


de interrupción como por ejemplo:

211
1- Interrupción por errores o averías: falla de la alimentación eléctrica. error de
paridad en memoria. etc.
2- Interrupción por causa del programa (o desvío): instrucción o dirección
incorrecta, operaciones imposibles, división por cero, desbordamiento de capacidad,
etc.
3- Interrupción por entrada / salida: generada por el canal para avisar del fin de
una operación de entrada / salida ó de una anomalía ocurrida en el transcurso de
una operación de entrada / salida.
4- Interrupción externa: utilizada para avisar a la máquina acerca de cualquier
modificación interesante del medio exterior, especialmente en control de procesos
industriales.
5- Interrupción de recuento: para contar impulsos procedentes de un reloj.

Determinados computadores presentan una sola posibilidad de interrupción, en cuyo


caso se pasarían todas las causas de interrupción a través de una compuerta lógica "OR", y
el programa de interrupción comienza a comprobar un conjunto de indicadores a fin de
detectar cuál es la causa de la misma.
Otros poseen varios niveles de interrupciones. A cada nivel de interrupción le
corresponde un conductor proveniente de la causa o causas de la interrupción y también de
los programas asociados. Dichos niveles pueden estar jerarquizados, lo que significa que
están clasificados por orden de las prioridades respectivas, y que un programa de
interrupción puede a su vez ser interrumpido por una demanda de interrupción clasificada
en un nivel superior de prioridad. El programa interrumpido pasa entonces al estado de
espera.
Los pequeños ordenadores, especializados en la guía de procesos, poseen
frecuentemente sistemas de interrupción bastante elaborados. En general, presentan varias
características del tipo siguiente de organización modular:
• Las interrupciones están agrupadas en cierto número de niveles jerárquicos, o sea,
cada uno de ellos posee una prioridad diferente. Un programa de un determinado
nivel de prioridad puede verse interrumpido por un programa solicitado por una
interrupción de nivel superior.
• Un nivel agrupa varios subniveles, cada cual con su conductor de interrupción y su
prioridad dentro del nivel. Los programas asociados a los subniveles de un mismo
nivel no pueden interrumpirse mutuamente, siendo únicamente efectiva su
prioridad en caso de elección entre varios de ellos, si se encontrasen
simultáneamente en estado de espera.
• Un subnivel agrupa, a su vez, varias demandas de interrupciones, cuyas causas
son investigadas por prueba de los indicadores.

Una interrupción puede encontrarse en varios estados a saber:

1- Estado desactivado: el nivel no acepta ninguna demanda de interrupción. Un


nivel puede ser activado o desactivado por el programa.
2- Estado de espera: el nivel pasa al estado de espera si recibe una señal de
demanda de interrupción. Varias razones pueden diferir la consideración operativa
de la interrupción. Primeramente, es preferido que el nivel esté autorizado, puesto
que se distinguen dos formas de estado de espera:

• Estado de espera inhibido: el nivel ha resultado inhibido por programa, de tal


manera que la interrupción ha podido ser memorizada pero no tomada en cuenta
por el ordenador, también se suele decir que el nivel ha sido enmascarado.
• Estado de espera autorizado: la interrupción puede ser tomada en cuenta por el
ordenador, si se han satisfecho las siguientes condiciones:

a- No existe ningún nivel de prioridad superior en el estado autorizado de


espera.

212
b- La unidad central se encuentra en una fase ininte- rrumpible (generalmente
en final de instrucción).

2- Estado activo: implica que la unidad central tome en cuenta la interrupción y se


mantiene durante toda la ejecución del programa de interrupción.

A cada nivel de interrupción se asocian dos señales: una impulsiva. procedente del
exterior, para pedir la interrupción, y otra de larga duración que el calculador deja activada
hasta tanto no se haya tratado la interrupción, es decir, hasta que el nivel sea capaz de
aceptar una nueva demanda de interrupción.
A cada nivel de interrupción se asocia un conjunto de posiciones de memoria,
divididas en dos partes: la primera contiene toda la información necesaria para el arranque
del programa de interrupción (en especial la dirección de la primera instrucción). La
segunda sirve para almacenar la información que caracterizan al estado del programa en el
instante de la interrupción, para su posterior reanudación (estado de los diferentes
indicadores. Contador de Programa, enventualmente los registros de base. etc).
El paso de una interrupción al estado activo consiste en memorizar el estado del
programa, almacenando la información pertinente en las posiciones asociadas de memoria
para instaurar después un nuevo estado del programa.
La última instrucción de un programa de interrupción es una muy especial, cuya
finalidad es la de restaurar el estado del programa en el momento de la interrupción,
rescatando las posiciones asociadas de memoria. Además desactiva el nivel de interrupción,
lo que permite responder a otra posible señal de interrupción.

213
CONCLUSIÓN

214
BOLILLA IV: MEMORIA

215
INDICE

INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35

216
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102

217
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173

218
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239

219
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296

220
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309

221
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

222
INTRODUCCIÓN

223
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

MEMoRia
La memoria es aquella parte de la computadora en donde se almacenan los programas
y los datos. No existirían las computadoras digitales con programas almacenados sin una
memoria en la que los procesadores pudieran leer o escribir información.
Puede considerarse como un conjunto de células, cada una con posibilidad de
almacenar una información (palabra), dato o instrucción. Las células están numeradas y la
unidad de control conoce cada célula por su número, llamado "Dirección". La Unidad de
Control puede pedir leer el contenido, o escribir una nueva información en una célula de una
dirección determinada. Para realizar estas operaciones, la Unidad de Control proporciona la
dirección de la célula implicada a un registro asociado ala memoria central, llamado
"Registro de Dirección", o también "Registro de Selección" de memoria.
El dispositivo de selección de memoria analiza el contenido del registro de dirección y
sensibiliza la célula implicada, ya sea para una lectura, o para una escritura. Si se trata de
una lectura, la información almacenada en la célula será transferida a un segundo registro,
también asociado a la memoria central, llamado "Registro de Intercambio" ó "Registro de
Palabra".
En el caso de una escritura, previamente habrá sido preciso cargar en este registro
con la información que se quiere transferir ala célula en cuestión.
La operación de lectura no destruye la información almacenada en la célula, mientras
que la operación de escritura destruye la información almacenada, sustituyéndola por una
nueva información. La figura 1 muestra esta relación.
La unidad básica de memorias es el "dígito binario" al que se denomina "bit". Este
puede contener un "0" ó un "1" y es la unidad más simple posible.

224
Normalmente se dice que las computadoras utilizan aritmética binaria porque es "más
eficiente". En realidad lo que quieren decir es que la información digital puede almacenarse
distinguiendo entre valores de alguna cantidad física continua, como un voltaje o la
corriente. El sistema de numeración binario necesita únicamente diferencias ente dos
valores, en consecuencia es el más fiable para codificar información digital.
Algunas máquinas, tales como los grandes computadores, anuncian tanto aritmética
decimal como binaria. Este truco lo logran utilizando 4 bits para almacenar un dígito
decimal. Con cuatro bits se tiene 16 combinaciones que se utilizan para codificar los dígitos
0 al 9, dejando 6 combinaciones sin usar. A continuación se muestra el número 1944
codificado en forma decimal yen binaria pura, usando 16 bits en cada ejemplo:

DECIMAL: 0001 1001 0100 0100


BINARIO: 0000011110011000

En el formato decimal, 16 bits pueden almacenar los números 0 al 9999. teniendo


únicamente 10.000 combinaciones, mientras que un número binario puro de 16 bits puede
almacenar 65.536 combinaciones diferentes. Por esta razón se dice que el binario es más
eficiente.
Sin embargo, supongamos que se inventara un dispositivo electrónico altamente fiable
que pudiera almacenar directamente los dígitos 0 al 9 en diez niveles de voltajes. Cuatro de
estas unidades podrían almacenar cualquier número decimal entre 0 y 9999. Los cuatro
elementos proporcionarían 10.000 combinaciones. Con tales dispositivos. Obviamente, el
sistema decimal es más eficiente.

DIRECCIONES DE MEMORIA

La memorias constan de cierto número de "celdas" (ó posiciones) cada una de las


cuales puede almacenar una porción de información. Cada celda tiene un número asociado,
denominado "dirección", por el cual los programas pueden referirse a ella. Si una memoria
tiene "n" celdas, tendrá las direcciones de 0 a (n-1). Todas las celdas de una memoria
tienen la misma cantidad de bit. Si una celda tiene "k" bits, podrá tener cualquiera de sus
"2k" combinaciones. Las celdas adyacentes tienen direcciones consecutivas.
Las computadoras que utilizan sistemas binarios también expresan las direcciones de
memoria como números binarios. Si una dirección tiene "m" bits, el número máximo de
celdas direccionables es directamente "2m".
El número de bits de la dirección está relacionado con el número de celdas
direccionables directamente en la memoria y es independiente del número de bits por celda.
Una memoria con "212" celdas de 8 bits y otra de "2 12" celdas de 60 bits, necesitarán, cada
una, direcciones de 12 bits.
A continuación se dan algunas celdas de computadoras comerciales:

Burroughs B1700 1 bit por celda.


IBM PC 8 bits por celda.
DEC PDP-8 12 bits por celda.
IBM 1130 16 bits por celda.
DEC PDP-15 18 bits por celda.
Honeywell 6180 36 bits por celda.

La importancia de la celda reside en que es la unidad direccionable más pequeña. En


los últimos años los fabricantes de computadoras han establecido como norma una celda de
8 bits, la que se denomina "byte". Estos bytes se agrupan en "palabras". Una computadora
con una palabra de 16 bits tiene 2 bytes por palabra, mientras que otra con una palabra de
32 bits tiene 4 bytes por palabra.
La relevancia de la palabra está en que la mayor parte de las instrucciones operan
sobre palabras enteras, por ejemplo, suma de dos palabras. De ahí que una máquina de 16
bits tendrá registros de 16 bits e instrucciones para manipular palabras de 16 bits, en tanto

225
que una máquina de 32 bits tendrá registros de 32 bits e instrucciones (sumar, restar,
mover, etc) para manipular palabras de 32 bis.

ORDENAMIENTO DE BYTES

Los bytes en una palabra pueden numerarse de izquierda a derecha o de derecha a


izquierda. En principio esto podría parecer irrelevante, pero como veremos, esto tiene
grandes implicaciones.
La figura 2(a) presenta una parte de memoria de una computadora de 32 bits. cuyos
bytes están numerados de izquierda a derecha (máquinas de la familia Motorola). La figura
2(b) muestra la presentación análoga de una computadora con numeración de derecha a
izquierda (familia Intel).

Dirección Big Endian Little Endian


0 0 1 2 3 3 2 1 0
4 4 5 6 7 7 6 5 4
8 8 9 10 11 11 10 9 8
12 12 13 14 15 15 14 13 12
byte byte
Palabra de 32 bits Palabra de 32 bits
(a) Memoria Big Endian (b) Memoria Little Endian

Fig. 2.

Para el primer caso, en donde comienzan los números se numeran por el extremo
mayor (es decir los bytes de orden superior), estas computadoras se denominan "big
endian", en contraposición a las llamadas "little endian" de la figura 2 (b). Estos términos
(en ingles) se deben a Jonathan Swift, quien en su libro "Los viajes de Gulliver", satirizó a
los políticos que iniciaban una guerra debido a la discusión acerca de si los huevos debían
romperse por el extremo mayor o menor.
Es importante entender que en ambos sistemas un número entero de 32 bits, con un
valor de por ejemplo 6, se representa con los bits 110 en los tres bit más hacia la derecha
(de orden inferior) de la palabra y ceros en los restantes 29 bits hacia la izquierda.
En el esquema "big endian", estos bits se localizan en el byte 3 (ó 7, ú 11, ó 15, etc),
mientras que en el esquema "little endian" corresponden al byte 0 (ó 4, ú 8, ó 12, etc). En
ambos casos la palabra en que se ubica este número entero tiene la dirección 0 (cero).
Si las computadoras solo almacenaran enteros, entonces no habría problemas, sin
embargo, muchas aplicaciones requieren de una mezcla de enteros, cadenas de caracteres
y otro tipo de datos. Considerese un simple registro consistente en una cadena alfabética
(por ejemplo nombre de los alumnos) y el de enteros (como puede ser su número de
legajo, su edad, etc). Para completar la palabra, la cadena se termina con uno ó más bytes
de ceros.
Las dos representaciones son correctas, pero los problemas comienzan cuando una
máquina trata de enviar un registro a la otra a través de una red. Imagínese que la "big
endian" envía un registro a la "little endian" byte por byte, empezando por el byte 0 (cero).
Eso sin considerar que los bits también se invierten dentro de una palabra.
Obviamente no es una solución simple, ya que no es lo mismo tratar datos numéricos
que alfabéticos. Debe quedar claro que la falta de una norma en el ordenamiento de bytes,
constituye una grave molestia cuando se intercambia información entre máquinas
diferentes.

226
CÓDIGOS CORRECTORES DE ERRORES

La memoria de una computadora puede en ocasiones cometer errores debido a picos o


caídas de voltajes en el suministro de energía eléctrica u otras causas. Para prevenir tales
errores, la mayoría usan códigos de detección o de corrección de errores.
Cuando se usan estos códigos se agregan bits extras a cada palabra de memoria en
una forma especial. Cuando se lee una palabra de la memoria, se verifican los bit
adicionales para ver si ha ocurrido un error.
Para entender como se manejan los errores, es necesario entender que es en realidad
un error. Supongamos que una palabra de memoria es de "m" bits de datos a los que se
agregan "r" bits redundantes o de verificación, siendo "n" la longitud total (es decir n = m +
r). Para referirse a una unidad de "n" bits, conteniendo "m" datos y "r" bits de verificación,
se utiliza el término "palabra código".
Dadas dos palabras códigos cualquiera, es posible determinar en cuantos bits difieren.
Por ejemplo, entre las palabras código 10001001 y 10110001, hay una diferencia de 3 bits.
El número de bits en el que difieren dos palabras códigos se llama "distancia de
Hamming". Esto significa que si dos palabras están separadas ente sí por una distancia de
Hamming de "d" bits, se necesitarán "d" de verificación para convertir un código en otro.
En una palabra de memoria de "m" bits, existen "2 m" combinaciones de bits legales,
pero por la forma en que se calculan los bits de verificación, únicamente "2m" de las "2n"
palabra códigos son válidas. Sí una lectura de memoria da una palabra invalida, la
computadora sabe que ha ocurrido un error de memoria.
Dado el algoritmo para calcular los bits de verificación es posible encontrar las dos
palabras de código cuya distancia de Hamming sea la mínima.
Las propiedades de detección y corrección de errores, dependen de su distancia de
Hamming. Para detectar "d" errores de un bit se necesita de un código con una distancia "d
+ 1", porque con dicho código no es posible que "d" errores de un solo bit puedan cambiar
una palabra válida en otra palabra válida.
De la misma manera, para corregir errores de un solo bit se requiere de un código con
una distancia "2d + 1", pues así las palabras códigos legales se encuentran tan separadas
entre sí, que aun con "d" cambios, la palabra original está más cerca que cualquier otra y
puede ser unívocamente determinada.
Como ejemplo sencillo de códigos detectores de errores, consideremos que agregamos
un bit de paridad, el cual se elige de modo que el número de bits con valor 1 sea par (o
impar). Dicho código tiene una distancia de 2, ya que cualquier error de un solo bit produce
una palabra código con la paridad equivocada. Se puede usar para detectar errores
sencillos.

CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS

En la descripción de los componentes de un procesador, dentro de la Unidad Central


de Proceso, se encuentra la Unidad de Memoria Central ó Principal, en la que se almacenan
las instrucciones, los datos u operandos, los resultados parciales y los resultado finales del
proceso.
Cuando en un procesador, el sistema es especializado y el número de bits a
memorizar es pequeño, se suelen utilizar registros de entrada / salida en paralelo o en serie
disponibles como bloques funcionales de 4 a 8 bits en escalas de integración media (M SI)
en la mayoría de las tecnologías.
Cuando la cantidad de información a memorizar es elevada y en especial cuando el
sistema digital de proceso es programable, y han de memorizarse las instrucciones del
programa, además de los datos, nunca se necesita tener acceso a toda la información
simultáneamente. Por ello los elementos que memorizan información se pueden agrupar
constituyendo una unidad de memoria en la que sólo se pueden acceder simultáneamente
aun cierto número de aquellos.
"Se define por lo tanto una unidad de memoria como un conjunto de dispositivos
biestables (que pueden encontrarse en dos estados distintos) agrupados de tal manera que
solamente es posible introducir información o leer la que poseen simultáneamente en un

227
grupo reducido de ellos ".
Las características que ha de poseer una unidad de memoria dependen:
• De la forma en que van a presentar la información a su entrada.
• De la forma en que se obtienen la información a su salida.
• De la cantidad de información a memorizar.

Nos referiremos exclusivamente a las memorias que forman parte integrante de un


sistema digital de proceso y que están física- mente situadas en el mismo recinto físico que
la Unidad de control y la Unidad Aritmética y Lógica. Estas memorias constituyen lo que se
denomina la Memoria Central del sistema. Estudiaremos los parámetros más importantes de
una memoria y la división de las memorias de acuerdo con estos parámetros. Analizaremos
los diferentes tipos de memorias desde el punto de vista funcional independiente de la
tecnología.

PARÁMETROS Y CARACTERÍSTICAS MÁS IMPORTANTES DE UNA


MEMORIA

Capacidad

Es la cantidad de información que puede almacenar. Dado que la información se


almacena en el sistema binario. la capacidad se mide en la unidad de medida de
información en dicho sistema, que es el "bit" .
La capacidad se puede considerar, por lo tanto, igual al numero "N" tota 1 de bits.
Pero en genera 1, la información se almacena en grupos de bits denominados "posiciones" o
"palabras", formadas por un cierto número "n" de bits accesibles simultáneamente.
El número de palabras o posiciones de una memoria viene dado por lo tanto por el
cociente:
m= N
n

A la selección de una determinada posición de memoria para introducir información en


ella o leer la que contiene, se la denomina "direccionamiento" de dicha posición. Para que se
aproveche al máximo la capacidad de se lección, se hace que "m" sea una potencia de "2".
El número de variables binarias necesarias para poder seleccionar "m" es "b", tal que:

m= 2b

La unidad de capacidad, en lo que se refiere al número de posiciones de memoria se


considera igual a 1024 (por ser la potencia de 2 más próxima a 1000) y se la denomina "k".
Para seleccionar 1024 posiciones de memoria se necesitan 10 bits, ya que:

m= 2b = 210 = 1024

Como practica, el alumno puede comprobar que si "b = 14", la memoria tiene una
capacidad de 16K. El número total de posiciones de una memoria de "n * k" es "n x 1024".
Por ejemplo, una memoria de "132 k" posee: 32 x 1024 = 32798 posiciones.
La capacidad total de una memoria se suele indicar mediante el número de posiciones
y el número de bits de cada posiciones.

228
Formas de acceder a las posiciones de memoria

La acción de introducir información (escribir ó grabar) en una posición de memoria, o


leer la que contiene, se denomina "acceso a la memoria". Tal como se dijo, nunca es
necesario leer o escribir simultáneamente todas las posiciones de una memoria. Por ello
existen varias formas de acceso a una posición de memoria, lo que da lugar a la división de
las memorias indicadas en la figura 3.

En esta figura se representa una visión panorámica de los diversos tipos de memorias
y la interrelación que existe entre ellas.
En esta clasificación se incluyen solamente las memorias que no poseen partes en
movimiento y que en general se encuentran en el mismo recinto físico que la Unidad de
Control y la Unidad Aritmética y Lógica.
El almacenamiento de información en cantidades elevadas (cientos de miles de "k"
palabras), tanto de datos como de instrucciones de los sistemas programables, se realiza
actualmente en sistemas físicos que poseen partes en movimiento y reciben el nombre
genérico de periféricos.

Memorias de acceso aleatorio (RAM = Ramdom Acess Memory)

Son aquellas en las que el tiempo que tarda en leerse o escribirse en una posición es
el mismo para todas las posiciones de la memoria. Aleatoriamente se puede seleccionar
cualquier posición de la memoria para introducir información o leer la que contiene. Por lo
tanto el tiempo de acceso a cualquier posición de la memoria es el mismo

229
independientemente de su ubicación o situación.
En la figura 4 se representa el esquema de bloques general de una memoria de
acceso aleatorio.

Se supone que solamente se puede seleccionar simultáneamente una posición de


memoria para leer su contenido o introducir información en ella.
La memoria está organizada en "n", bits cuya información se desea leer o escribir
información simultáneamente.
La selección de la posición cuya información se desea leer o escribir se realiza
mediante "b" bits en paralelo denominados "bits de dirección".
El número total de posiciones que se puede seleccionar es:

m = 2b

La asignación de las patitas de una pastilla de circuito integrado (IC = Integrated


Circuit) de memoria como las especifica el fabricante se indica en la figura 4.
La memoria allí representada tiene la capacidad para almacenar (memorizar) 8
palabras de 4 bits cada una. La pastilla tiene 8 registros individuales "R 0, R1, R2 ... R7" y
cada registro consta de 4 flip-flop.
Los registros se identifican por los niveles lógicos en los terminales: "A2", "A1" y "A0".
Estos bits se denominan bits de dirección y al conjunto de los bits de dirección se los
conoce como "dirección".
Cuando "A2 A1 A0 = 000", se accede a 1 registro "R0".
Cuando "A2 A1 A0 = 001", se accede al registro "R1".
Y así sucesivamente.
Como hay tres bits de dirección se pueden seleccionar "2b = 8" registros.
Entonces cada uno tiene una dirección y se accede a un registro particular
almacenando los bits de dirección del registro en los terminales de dirección.
Los 4 bits que están almacenados, es decir escritos, en un registro direccionado se
presentan en la pastilla de memoria en los terminales de entrada "I 3 I2 I1 I0". Para escribir
una palabra en el registro, este debe direccionarse, la palabra debe presentarse en la
entrada, y deben habilitarse o activarse los terminales de "Habilitación de Escritura" (WE =

230
Write Enable) y de "Selección de Pastilla" (CS = Chip Select).
En base ala convención adoptada, el diagrama indica que el terminal externo WE se
activa en el nivel bajo (activo cuando WE = 0 en un sistema de lógica positiva) y CS se
activa en el nivel alto.
En el proceso de lectura, la memoria lleva a los terminales de salida "O 3 O2 O1 O0" la
palabra almacenada en el registro direccionado.
Para leer la memoria presentamos la dirección, habilitamos la entrada CS y ponemos
la entrada de WE = 1. Así pues:

WE = 0 escribe en memoria y WE = 1 lee de memoria

Por esta razón algunos fabricantes etiquetan los terminales de habilitación de escritura
con:

Lectura / escritura (R / W)

Tanto para lectura como para escritura la entrada de selección de pastilla "CS" debe
estar habilitada, es decir, activada. Si CS no se activa, la pastilla está aislada del mundo
exterior. Entonces no es posible ni leer ni escribir en memoria.
El numero total de bits en la figura anterior es "8 x 4 = 32". La forma de disponer los
bits en palabras se denomina organización de la memoria. La memoria de la figura anterior
se describe como una memoria de 8 palabras de 4 bits / palabra.
Debido a que podemos leer o escribir palabras en la memoria, esta se denomina de
"lectura / escritura". Además como podemos escoger cualquier registro de memoria
aleatoriamente, tanto para leer como para escribir, también se las conoce como "memorias
de acceso aleatorio" ó "RAM = Ramdom Access Memory".

Estructura de una RAM semiconductora

En principio la estructura lógica de una RAM semiconductora, del tipo que hemos
discutido, se indica en la figura 5. En esta disponemos de cuatro palabras de 2 bits cada
una, es decir, la organización de la memoria es "4 x 2". Nuestro interés se centra en la
estructura lógica de la memoria y no en los detalles electrónicos. Por lo tanto, hemos
incorporado algunas simplificaciones en comparación con una memoria física real.

231
La estructura utiliza el conmutador controlado por lógica, cuando el nivel lógico de la
línea de control (línea de trazos que atraviesa el conmutador) es "1", el conmutador se
cierra y se establece la conexión; cuando el nivel lógico de la línea de control es "0", el
conmutador se abre.
Los bits se almacenan en "Flip-Flop" elementales, es decir formados por dos
inversores acoplados. Los bits de dirección "A1" "A0" se aplican al decodificador.
Cuando tenemos, por ejemplo, "A1 = 1" y "A0 = 0", la salida de la puerta 62 está en
"1" lógico, mientras que las salidas de las demás compuertas lógicas AND del decodificador
están en "0" lógico. Por lo tanto, solo se puede acceder a los flip-flop del Registro de
Palabra 2, ya que solamente los conmutadores de estos flip-flops están cerrados y por
consiguiente conectados con las líneas de bits.
O sea, la entrada de dirección "A1 A0 = 10" direcciona la palabra 2 y sólo la palabra 2.
Si la selección de la pastilla está en cero lógico, las salidas de las puertas "G 0" y "G1"
están en "0" lógico y las líneas de bits no se conectan ni ala entrada de datos ni a los

terminales de salida.
Si "CS = 1 " y "WE = 0 ", los conmutadores que conectan "I1" e "I0" a las líneas de bits
se cerrarán y los flip-flops asumirán estados correspondientes a los niveles lógicos de las

entradas de datos.
Si "CS = 1" y "WE = 1", los flip-flop se conectarán a los terminales de salida, para que
la palabra almacenada pueda ser leída.
Comercialmente se disponen de pastillas de Circuito Integrado (IC = Integrated
Circuit) que tienen incorporados "65.536 = 216 bits" ó aún mayor en la actualidad, a un
precio bastante bajo.

232
Pastillas de memoria en paralelo

Con frecuencia surgen casos en los que no es adecuado el número de palabras de una
pastilla, ó el número de bits por palabra, ó las dos cosas simultáneamente. El problema
puede remediarse colocando las pastillas en paralelo.
En la figura 6 se representa la conexión de pastillas en paralelo para incrementar el
número de bits por palabra (pero no el número de palabras). Hay dos pastillas de 8
palabras en paralelo, 4 bits por palabra, para construir una memoria cuyo número de
palabras sigue siendo 8, pero el número de bits se ha incrementado de 4 a 8. Los 3 bits de
dirección se aplican a las pastillas de dirección de ambas memorias. Los terminaks "CS" de
las pastillas se unen, lo mismo que los terminales WE. Las entradas de selección de pastilla
y habilitación de escritura seleccionan y habilitan simultáneamente ambas pastillas.

La pastilla 1 acepta y almacena 4 bits (0, 1, 2, 3), y la pastilla 2, otros 4 bits (4, 5, 6,
7). Por supuesto, se pueden conectar en paralelo más pastillas adicionales. Así, con tres
pastillas de 8 palabras, 4 bits / palabra, se conseguirá una memoria de 8 palabras. 12 bits /
palabra, y así sucesivamente. Cuando se añadan pastillas, la dirección se aplica
simultáneamente a los terminales de entrada de dirección de las demás pastillas.
Análogamente, todas las patitas CS se conectan entre sí para tener una sola entrada CS y
las entradas WE se tratan de la misma forma.
Para dar mayor flexibilidad al problema de los bits por palabra, los fabricantes
disponen de pastillas de memoria con palabras de 1 bit. Así pues, encontramos en catálogos
de fabricantes memorias cuya organización es "256 x 1". "1024 x 1'. "4096 x 1", etc. Una
vez seleccionada una pastilla con un número adecuado de palabras. entonces ensamblamos
una memoria de "n" bits por palabra, simplemente colocando "n" pastillas en paralelo.
En la figura 7 mostramos la forma de poner en paralelo dos pastillas de 8 palabras, 4
bits / palabra, para obtener una memoria de 16 palabras de 4 bits / palabra. Como antes,
los tres bits de dirección se aplican a ambas pastillas, pero en lugar de tener un bit de
entrada CS común aplicado a las dos pastillas, cuando se activa la entrada CS de una
pastilla, se desactiva la entrada CS de la otra, La entrada CS del sistema de memoria (la de
entrada al inversor) ahora es un bit de dirección adicional, que llamamos "A 4". Cuando
"A4=1", la pastilla direccionada es la 2. y cuando "A4=0", se direcciona la pastilla 1. El bit
"A4" de dirección de selección de pastilla selecciona por lo tanto una u otra de las pastillas.

233
Los bits de selección "A0", "A1", "A2" seleccionan la posición de una palabra particular
en la pastilla seleccionada. Los bits de entrada de datos y la entrada WE se aplican en
común a ambas pastillas.
Un problema especial, que no aparecía cuando las pastillas se colocaban en paralelo
para incrementar el número de bits por palabra como en la figura 6. surge en este caso
que estamos considerando. Ahora una palabra de salida se lee a veces de una pastilla o a
veces de otra. Presumiblemente la palabra se transmitirá al mismo destino
independientemente de la pastilla que la origine. Por lo tanto, las salidas de las pastillas
tendrán que aplicarse a un bus común, ésta es la razón por la que aparece dicho bus en la
figura 7.
El esquema paralelo de la figura 7, puede, por supuesto, extenderse a más pastillas.
Supongamos, por ejemplo, que quisiéramos utilizar este esquema para colocar en paralelo
cuatro pastillas con el fin de obtener una memoria de 32 palabras de 4 bits / palabra.
Podemos introducir un bit de dirección "A5". Como antes, podríamos aplicar tres bits
de dirección "A0", "A1", "A2" a los terminales de entrada de dirección de las pastillas. Los bits
de dirección "A4" y "A5" se aplicarían aun decodificador como se indica en la figura 8. Las
salidas del decodificador se utilizan entonces para activar las entradas de selección de
pastillas.

234
Memorias pasivas

El parámetro permanencia de la información, indicado en la figura 3, se mide en


forma cualitativa por la diferencia entre el tiempo de lectura y el tiempo de escritura. De
acuerdo con este parámetro, las memorias de acceso aleatorio se clasifican en memoria de
escritura / lectura (R/W) o activas. Se denominan memorias pasivas a aquellas en las que
existe gran diferencia entre el tiempo de lectura y el de escritura, el cual es mucho mayor.
A su vez este tipo de memorias se pueden clasificar tal como se indica a continuación:
1- Memorias totalmente pasivas (ROM = Read Only Memories): son aquellas
memorias que nunca pueden ser escritas por el que las utiliza, el cual solamente
puede realizar la operación de lectura. La grabación ó escritura la realiza el
fabricante. Por lo tanto, para quien la utiliza, el tiempo de escritura se puede
considerar infinito y el tiempo de lectura tiene un cierto valor que depende de la
tecnología con la cual ha sido fabricada la memoria.
2- Memorias pasivas programables (PROM = Programmable Read Only
Memories): Son aquellas cuyo contenido pueden ser escrito por el usuario una
sola vez.
3- Memorias pasivas reprogramables, ó memorias pasivas programambles
borrables (EPROM = Erasable Programmable Read Only Memories): Son
aquellas cuyo contenido pueden, por un procedimiento especial, ser borradas y
programadas por el usuario varias veces. La escritura se realiza por un
procedimiento especial, el tiempo necesario es varias veces superior al de lectura.

Estas memorias se denominan apropiadamente de solo lectura, ya que las operaciones


de borrado y re-escritura no pueden realizarse mientras la memoria no esté trabajando en
un sistema digital. La memoria debe extraerse del sistema y su modificación puede llevar
horas.
Como la memoria de lectura / escritura, la de sólo lectura también son de acceso
aleatorio. Por consiguiente es bastante inconsistente utilizar la etiqueta "memoria de acceso
aleatorio" (RAM) para referirse únicamente a las memorias de lectura / escritura y no alas
de sólo lectura. Mucha gente a indicado esa inconsistencia, no obstante, todavía se permite
esta terminología.
En una ROM el bit almacenado en cualquier posición, no tiene que cambiarse. Por
consiguiente, no es necesario almacenar los bits en flip-flop y por ello una ROM puede
ensamblarse completamente a partir de circuitos combinacionales. Realmente una ROM no

235
es más que un conversor de código, y por lo tanto, consta de un decodificador y de un
codificador.

Memorias de acceso serie

Son aquellas en las que el tiempo que tarda en leerse o grabarse una posición
depende de la situación física en el interior de la memoria. Para introducir información en
una posición hay que hacerla pasar por todas las que la preceden hasta alcanzar los
terminales de entrada.
De forma similar, para leer el contenido de una posición hay que hacer pasar la
información por todas las que la siguen hasta alcanzar los terminales de salida.
Dentro de este tipo de memorias. y de acuerdo a la forma de entrada-salida, las
mismas pueden clasificarse en:
1- Registros de desplazamiento: Como ya hemos visto. en estas memorias de
acceso serie, cada orden externa de escritura o lectura desplaza la información una
posición en el interior de la memoria. La orden externa de desplazamiento está
constituida por los impulsos de un generador. Los registros de desplazamiento se
clasifican en dos clases, de acuerdo con las características de frecuencia de los
impulsos de desplazamiento:
a- Registros de desplazamiento estáticos: Son aquellos en los que los impulsos de
desplazamiento pueden anularse por tiempo indefinido, la información queda
almacenada en las diferentes posiciones de la memoria alas que fue llevada por
el último impulso de desplazamiento aplicado.
b- Registros de desplazamiento dinámicos: Son aquellos en las que los impulsos de
desplazamiento no pueden anularse por tiempo indefinido porque de esta
manera desaparece la información contenida en su interior.
2- Memorias FIFO (First Input First Output): Son memorias de acceso serie en las
que la primera información que entra es la primera en salir.
En la figura 9 se representa gráficamente la forma en que se mueve la información
en el interior de la memoria FIFO al realizar sucesivas operaciones de escritura
lectura.
Se puede deducir que la memoria FIFO se comporta igual que un registro de
desplazamiento en la operación de lectura, pero no así en la operación de escritura,
en la que la información se desplaza desde la entrada hasta la posición vacía más
cercana a la salida.

236
3- Memorias LIFO (Last Input First Output): Son memorias de acceso serie en las
que la información que entra en la última operación de escritura es la que primero
sale en la operación de lectura que se realice. En la figura 10 se indica
gráficamente la forma en que se realiza la escritura y la lectura de una memoria
LIFO.

237
El alumno puede deducir que en una operación de escritura, toda la información
contenida en la memoria se desplaza una posición hacia la derecha y en una operación de
lectura se desplaza una posición hacia la izquierda.

Memorias asociativas

Estas memorias se caracterizan porque la búsqueda de información en la operación de


lectura no se realiza indicando una dirección y observando su contenido, sino que se
suministra la información ala memoria para observar si ésta la contiene en alguna de sus
posiciones.
La información almacenada en cada posición de una memoria asociativa puede estar
organizada de dos formas fundamentales:
a- Dividida en dos partes ó campos: Un campo es el de la información que se
compara con la que se presenta a las entradas de la memoria en una operación de
lectura. El otro campo es el que da como respuesta la memoria cuando existe
coincidencia entre el campo de comparación y la información de entrada.
b- Toda la información contenida en cada posición de la memoria se compara
con la información de entrada: La memoria da solamente como respuesta en
general un bit cuyo estado indica si existe alguna información en el interior de la
memoria que es idéntica a la presentada a la entrada.

238
La estructura asociativa de una unidad de memorias es adecuada para el
almacenamiento de ciertos tipos de organizaciones de datos. Por ejemplo, una tabla de
clientes con su dirección como dato asociado, se debe organizar en forma asociativa para
que al presentar ala memoria el nombre de un cliente, ésta de a la salida su dirección.

MODOS DE DIRECCIONAMIENTO

Hemos visto que generalmente (aunque no necesariamente) una instrucción consta de


una parte de operación y otra de dirección. La parte de dirección puede contener la
dirección de un operando utilizado en la ejecución de la instrucción. En otras ocasiones la
parte de dirección de la instrucción puede contener, no la dirección del operando, sino la
dirección donde se encuentra la dirección del operando, en el primer caso la dirección se
describe como directa, mientras que en el segundo caso es una dirección indirecta. Esto es
lo que se conoce como "Modo de Direccionamiento".
En computadoras, y microcomputadoras se emplea una amplia gama de modos de
direccionamiento, por ello vamos a pasar revista a las diferentes técnicas de
direccionamiento. Estas equivalen generalmente a una transformación de la parte de
dirección de la instrucción en la dirección que se transferirá finalmente al Registro de
Selección de la memoria para obtener la información deseada. Llamaremos a esta última
"Dirección Efectiva". El tipo de procesamiento que debe sufrir el contenido de la zona de
dirección viene especificado, ya sea por el Código de Operación, cuando este impone un tipo
determinado, o por la configuración binaria de una parte de la instrucción, que contiene lo
que convenimos en llamar las "Condiciones de Direccionamiento".
No todos los procesadores o microprocesadores tienen todos los tipos de
direccionamiento, en algunos pueden existir modos que en otros no existen y viceversa.
Debido a estas distintas formas de direccionar los registros de un computador, la
instrucción constará de tres partes:
Veremos a continuación los modos de direccionamiento más comun- mente utilizados
en los procesadores actuales:

Modo de direccionamiento directo

En el direccionamiento directo, como ya lo señalamos, la instrucción contiene la


dirección de la posición de memoria donde se encuentra el operando.
Este direccionamiento exige un ciclo de memoria para obtener el operando. La figura
11 muestra esta situación.

239
Modo de direccionamiento indirecto

En el direccionamiento indirecto, como también dijimos, la instrucción no contiene la


dirección de la posición de memoria donde se encuentra el operando, sino la dirección de la
posición de memoria donde se encuentra la dirección del operando.
Por lo tanto, la localización de un operando direccionado indirectamente exigirá dos
ciclos de memoria: un ciclo para buscar la dirección efectiva, otro ciclo para buscar el
operando, de acuerdo a la figura 12.

Modo de direccionamiento relativo

La dirección relativa no indica la posición de la información en la memoria en valor


absoluto, sino que la sitúa en relación a una dirección de referencia. Esta a su vez, está
almacenada en un registro, frecuentemente llamado "Registro de Traslación". La dirección
efectiva se obtiene sumando la dirección relativa con la dirección de referencia.
Las técnicas de direccionamiento relativo se emplean especialmente para permitir
direccionar a toda la memoria. Es así como un calculador cuya palabra es de 16 bits, si se
tomasen 8 bits conjuntamente para el Código de Operación y las Condiciones de
Direccionamiento, no quedarían más que 8 bits para la dirección. Esto permitiría direccionar
"28 = 256" posiciones de memoria, cuando lo normal es que los ordenadores de este tipo
poseen muchas posiciones más. Si no queremos pasar aun formato de instrucción de dos
palabras, puede emplearse el direccionamiento relativo para alcanzar directamente
determinadas zonas de la memoria. Veamos tres ejemplos:

1- Direccionamiento por Base y Desplazamiento


En la máquina existe un registro llamado "Registro Base", que contiene la dirección de
referencia (primera dirección de un programa o de una zona de datos).
A la información que alberga la parte de dirección de la instrucción se le llama
"Desplazamiento".
La dirección efectiva es la suma de la "Base" y el "Desplazamiento". como se muestra
en la figura 13.

240
Algunos calculadores admiten varios registros de base, La instrucción debe especificar
entonces la dirección del Registro Base escogido

2- Oireccionamiento por ReFerencia al Proqrama


El contenido del contador de programa sirve de dirección de referencia. Con este
sistema es posible generalmente direccionar dos zonas de memoria a un lado ya otro de la
instrucción en curso, según que la parte de dirección de la instrucción se sume o se reste
con el contenido del Contador de Programa. La figura 14 muestra este modo de
direccionamiento.

3- Oireccionamiento or Yuxta osición


Se considera a la memoria dividida en zonas de "2n" palabras llamadas "Páginas". En
genera 1, la parte de di rección de la instrucción contiene "n" bits, por lo que no capacita a
la máquina para direccionar más palabras que las que contiene la página (ó dirección de
página), y de la parte de dirección de la instrucción, que suministra la dirección dentro de la
página.
Este modo se muestra en la figura 15.

241
Las condiciones de direccionamiento, en la mayoría de los pequeños ordenadores
organizados por páginas, poseen un bit de direccionamiento que, según su valor, implica el
direccionamiento absoluto, es decir dentro de la página cero, o el direccionamiento en la
página de la instrucción en curso por yuxtaposición de los bits de mayor peso del contador
de programa y de la dirección dentro de la página.
Si la compuerta (no dibujada en la figura) está cerrada, hay direccionamiento absoluto
en la página cero, si está abierta hay direccionamiento en la página de la instrucción. En
este caso el direccionamiento por yuxtaposición puede ser considerado como
direccionamiento por referencia al principio de la página en curso.

4- Complementos acerca del direccionamiento relativo


Al menos uno de estos direccionamiento relativos se encuentra en las máquinas de
palabra corta (12. 16 ó 18 bits) donde la zona reservada a la dirección no basta para
direccionar a toda la memoria, a no ser que se utilicen instrucciones sobre dos palabras.
Permiten direccionar directamente zonas de memoria (además de las "2n" primeras
palabras) sin necesidad de recurrir al direccionamiento indirecto. Las referencias fuera de
esta zona hacen necesario un direccionamiento indirecto apoyado en una célula de memoria
perteneciente a estas zonas directamente accesibles.
El direccionamiento por base y desplazamiento, lo mismo que un tipo más
evolucionado de direccionamiento por página, se utiliza en grandes ordenadores para
resolver problemas de asignación de memoria en multiprogramación. En el caso de las PCs
se usa un sistema parecido para poder direccionar más memoria.

Modo de direccionamiento indexado

En el direccionamiento indexado, como en el relativo, la parte de dirección de la


instrucción contiene un número "N" que puede ser positivo o negativo. Sin embargo, para
utilizar el direccionamiento indexado, el computador debe estar equipado con un registro
especial (distinto del Contador de Programa) empleado para permitir direccionamiento
indexado, y denominado "Registro Indice" (I). La posición de memoria donde se localiza el
operando se encuentra mediante la suma "N + I".
La dirección efectiva se obtiene sumando a la parte de dirección de la Instrucción el
contenido de un registro de la Unidad centra 1 llamado "Registro Indice", llamándose a
menudo a su contenido "Indice".
Este registro admite un cierto número de operaciones, como carga, lectura,
incremento o disminución en uno, comparación. El programador lo utiliza para tratar,
mediante una sola instrucción en un bucle de programa, datos almacenados vectorialmente
en células sucesivas (tablas) de la memoria. El direccionamiento correspondiente es

242
indexado, lo que quiere decir que la dirección especificada en la instrucción es la de la
primera célula del vector (tabla) ya ella se suma el valor del índice, inicialmente puesto a
cero e incrementando en uno cada vez que se ejecute la instrucción de fin de bucle. Esta
última compara el índice con el número de elementos del vector y origina un salto al
principio del bucle mientras quede algún elemento a procesar.
La figura 16 ilustra el concepto de indexación, con la existencia de varios registros
índice.

En algunos ordenadores, el Indice se inicializa en "-(n-1)", donde "n" representa el


número de los elementos del vector. La dirección especificada en la instrucción es la última
del vector. El índice se incrementa en uno a cada pasada y se sale del bucle cuando el
índice es cero.
Otras máquinas poseen dos registros índice, uno contiene el índice y el otro el valor
máximo de este índice, ambos resultan comparados al momento de la instrucción a fin de
bucle y se origina un salto al principio del mismo mientras no se produzcan coincidencias
entre los dos valores.
En algunas máquinas también existen registros de autoíndice incrementables en 1
cada vez que son referenciados. En muchos ordenadores pequeños se implantan los índices
en posiciones reservadas de la memoria central, con objeto de economizar el costo de los
correspondientes registros.

Modo de direccionamiento por registro indirecto

Algunas computadoras que incorporan la facultad del direccionamiento de registro


indirecto, tienen un registro especial, a menudo llamado "Puntero" (P) (Pointer Register).
Este, registro "P" contiene la dirección del operando, es decir, apunta a la posición de
memoria del operando. Una instrucción que invoque realmente direccionamiento de registro
indirecto no tiene bits significativos en su parte de dirección. En su lugar, la instrucción
completa se incluye en los bits asignados a la parte de operación de la instrucción. Una
instrucción típica que utiliza registro de direccionamiento indirecto debería especificar:
"Cargar el acumulador con el operando localizado en la dirección de memoria dada en el
registro P".

243
Otros modos de direccionamiento

Otros esquemas comunes para localizar fuentes de operandos o destinos de


operandos, denominados "modos de direccionamiento", incluyen los siguientes:

1- Direccionamiento Inmediato

No es propiamente un direccionamiento, puesto que la parte de dirección de la


instrucción no contiene la dirección del operando, sino el operando mismo. Así, la
instrucción sería: "Cargar al acumulador directo con 37", significa cargar al acumulador con
el número 37. La figura 17 muestra este tipo de direccionamiento.

2- Direccionamiento Inherente

Ordinariamente una dirección que es parte de una instrucción se refiere a una posición
de memoria. Cuando una instrucción indica una fuente o un destino de algunos datos y no
se direcciona específicamente, ya que no se hace referencia a la posición de memoria, se
dice que la instrucción tiene una dirección "inherente". Por ejemplo, en la instrucción
"Borrar el acumulador", los "datos" movidos están en una palabra cuyos bits son todos 0
(ceros) y la dirección de destino de estos datos es el registro acumulador. De nuevo, en la
instrucción "Mover el contenido del registro R1 al registro R2", R1 es la "dirección" donde se
lee una palabra y R2 es la "dirección" donde escribe la palabra.

244
CONCLUSIÓN

245
BOLILLA V: EL NIVEL DEL
LENGUAJE ENSAMBLADOR

246
INDICE
INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38

247
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103

248
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179

249
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240

250
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296

251
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311

252
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

253
INTRODUCCIÓN

254
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

EL NIVEL DEL LENGUAJE ENSAMBLADOR


En los capítulos 4, 5 y 6 estudiamos tres niveles, los cuales están presentes en la
mayoría de las computadoras actuales. Este capítulo trata fundamentalmente de un cuarto
nivel que también está presente en casi todas las computadoras modernas: el nivel del
lenguaje ensamblador. Dicho nivel difiere considerablemente de los niveles de
microprogramación, de máquina convencional y del sistema operativo, debido a que se
implementa por traducción y no por interpretación.
Los programas que convierten un programa escrito de un lenguaje a otro lenguaje
distinto se llaman traductores. El lenguaje en que está escrito el programa original se llama
lenguaje fuente y al que se convierte se llama lenguaje objeto. Ambos lenguajes, el fuente
y el objeto, definen niveles. Si contáramos con un procesador que ejecutara directamente
los programas escritos en el lenguaje fuente, no habría ninguna necesidad de traducirlos al
lenguaje objeto.
La traducción se usa cuando se dispone de un procesador ( lo mismo da que sea físico
o un intérprete) para el lenguaje objeto, y no se cuenta con uno para el fuente. Si la
traducción se hace correctamente, la ejecución del programa traducido dará exactamente
los mismos resultados que daría la ejecución del programa fuente si dispusiéramos de un
procesador para él. Por tanto podemos fabricar un nuevo nivel, en el que no hay
procesador, si traducimos primero los programas escritos para dicho nivel a un nivel objeto
y luego ejecutamos los programas resultantes.
Es importante darse cuenta de la diferencia entre la traducción, por un lado, y la
interpretación por otro. En la traducción, el programa original, escrito en lenguaje fuente,
no se ejecuta directamente. Lo que se hace es convertirlo en un programa equivalente,
llamado programa objeto o módulo objeto, que se ejecuta después de que se ha terminado
la traducción. En la traducción hay dos pasos bien definidos:
1. Generación de un programa equivalente en lenguaje objeto.
2. Ejecución del nuevo programa que se ha generado.

Estos dos pasos no tienen lugar simultáneamente; el segundo no comienza hasta que
el primero ha terminado. En la interpretación, en cambio, hay sólo un paso: la ejecución del
programa fuente original. No se genera primero un programa equivalente. La interpretación
tiene la ventaja de que el programa suele ser más pequeño y de mayor flexibilidad, pero la
traducción suele producir programas más rápidos.
Cuando se está ejecutando el programa objeto, sólo hay tres niveles en acción: el de
microprogramación, el de máquina convencional y el de máquina del sistema operativo. Por
tanto, en tiempo de ejecución, sólo pueden encontrarse en la memoria de la computadora
tres programas: el programa objeto del usuario, el sistema operativo y el microprograma.
Toda traza del programa fuente original se ha desvanecido. Así, el número de niveles
presentes en tiempo de ejecución puede diferir del número de ellos presentes antes de la
traducción. Es importante recalcar que, aunque nosotros definamos un nivel por las
instrucciones y construcciones lingüísticas que tienen a su disposición los programadores (y
no por el método de implementación), otros autores hacen una mayor distinción entre
niveles realizados por intérpretes en tiempo de ejecución y niveles realizados por
traducción.

255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR

Los traductores se pueden dividir a grandes rasgos en dos grupos, según la relación
que haya entre el lenguaje fuente y el objeto. Cuando el lenguaje fuente es, en esencia, una
representación simbólica de un lenguaje numérico de máquina, el traductor se llama
ensamblador y el lenguaje fuente se llama lenguaje ensamblador. Cuando el lenguaje
fuente es un lenguaje de alto nivel como el C o Pascal, y el lenguaje objeto es un lenguaje
de máquina numérico o una representación simbólica de uno de ellos, el traductor se llama
compilador.

¿Qué es un lenguaje ensamblador?

Un lenguaje ensamblador puro es aquel en que cada sentencia produce exactamente


una instrucción máquina. En otras palabras, hay una correspondencia biunívoca entre las
instrucciones de máquina y las sentencias del programa en ensamblador. Si cada línea de
un programa en ensamblador contuviera una sentencia ensamblador y si cada palabra de
máquina contuviera una instrucción de máquina, entonces un programa de n líneas escrito
en ensamblador produciría un programa en lenguaje máquina que ocuparía n palabras.
La razón por la que se usa el lenguaje ensamblador en lugar de programar el lenguaje
máquina (octal o hexadecimal) consiste en que es mucho más fácil programar en
ensamblador. Es muy diferente usar nombres y direcciones simbólicas que hacerlo en
binario u octal. La mayoría de la gente puede recordar que las abreviaturas para la adición,
la sustracción, la multiplicación y la división son ADD, SUB, MUL y DIV, pero pocos pueden
recordar que las instrucciones máquina (para la PDP-ll) son 24576..57344,28672 y 29184.
El programador en lenguaje ensamblador sólo tiene que recordar los nombres simbólicos...
ADD, SUB, MUL, DIV, ya que el ensamblador los traduce a las instrucciones máquina. Por el
contrario, el programador en lenguaje máquina debe recordar, o consultar constantemente,
los valores numéricos.
Los mismos comentarios se aplican a las direcciones. El programador en lenguaje
ensamblador puede dar nombres simbólicos a las posiciones de memoria y dejarle al
ensamblador la tarea de suministrar los valores numéricos correctos. El programador en
lenguaje máquina debe trabajar siempre con los valores numéricos de las direcciones. En
consecuencia, nadie programa hoy día en lenguaje máquina, aunque se hacía hace años,
antes de que se inventaran los ensambladores.
Los lenguajes ensambladores tienen otra propiedad, además de la Correspondencia
uno a uno entre las sentencias en ensamblador y las instrucciones máquina, que los
distinguen de los lenguajes de alto nivel. El programador en ensamblador tiene acceso a
todos los recursos e instrucciones de la máquina ala que se aplica, pero no el programador
en un lenguaje de alto nivel. Por ejemplo, si la máquina tiene un indicador de
desbordamiento, el programa en lenguaje ensamblador puede examinarlo; uno en Pascal no
puede hacerlo directamente. Si hay conmutadores en la consola del operador, un programa
en ensamblador puede leer su estado. Tal programa puede ejecutar todo el juego de
instrucciones de la máquina sobre la que se aplica, pero uno en lenguaje de alto nivel no
puede hacerlo. En resumen, todo lo que puede hacerse en lenguaje máquina puede hacerse
también en ensamblador, pero muchas instrucciones, registros y otras cosas por el estilo no
están disponibles para que el programador en lenguaje de alto nivel las use. Los lenguajes
para la programación de sistemas suelen ser un híbrido entre ambos tipos, con la sintaxis
de un lenguaje de alto nivel pero con las posibilidades de acceso a la máquina de un
lenguaje ensamblador.
Es conveniente hacer explícita una diferencia final, la cual consiste en que un
programa en lenguaje ensamblador sólo puede correr en una familia de máquinas, mientras
que un programa escrito en un lenguaje de alto nivel puede, en potencia, correr en muchas
máquinas. La habilidad de poder mover software de una maquina a otra, resulta de gran
importancia práctica para muchas aplicaciones.

256
Formato de una sentencia en lenguaje ensamblador

Aunque la estructura de una sentencia de un lenguaje ensamblador refleja muy de


cerca la estructura de la instrucción de máquina que representa, los lenguajes
ensambladores para máquinas y niveles diferentes se parecen lo suficiente como para
permitir una explicación detallada del lenguaje ensamblador en general. En la figura 7-1 se
presentan fragmentos de programas en lenguaje ensamblador para el 80386 y el 68030, los
cuales realizan el cálculo N = I + J + K. En ambos casos la cuenta lo realizan las
instrucciones colocadas arriba de los puntos. Las sentencias que están por debajo de los
puntos no son representaciones simbólicas de instrucciones de máquina, sino órdenes al
ensamblador para que reserve memoria para las variables I, J, K y N. Las sentencias que
son Órdenes al ensamblador se llaman seudo-instrucciones.

Campo etiqueta Campo operación Campo operando Campo de comentario

FORMULL: MOV EAX, I ;Guarda I en EAX


ADD EAX, J ;Suma J a EAX
ADD EAX, K ;Suma K a EAX
MOV N, EAX ;Almacena I + J + K en N
.
.
.
I: DD 2 ;Reserva 4 byte V inicial 2
J: DD 3 ;Reserva 4 byte V inicial 3
K: DD 4 ;Reserva 4 byte V inicial 4
L: DD 0 ;Reserva 4 byte V inicial 0
(a)

FORMUL: MOVE.L I,DO ;Carga I en DO


ADD.L J,DO ;Suma J a DO
ADD.L K,DO ;Suma K a DO
MOVE.L DO, N ;Almacena I + J + K en N
.
.
.
I: DC.L 2 ;Reserva 4 byte V inicial 2
J: DC.L 3 ;Reserva 4 byte V inicial 3
K: DC.L 4 ;Reserva 4 byte V inicial 4
L: DC.L 0 ;Reserva 4 byte V inicial 0
(b)
Fig. 7-1. Cálculo de la fórmula N = I + J + K. (a) En un 80386. (b) En un 68030.

Las instrucciones en ensamblador tienen cuatro partes: campo de etiqueta, campo de


operación, campo de operandos y campo de comentarios. Las etiquetas, que sirven para dar
nombres simbólicos a las direcciones, se necesitan en sentencias ejecutables para que se
pueda saltar a ellas. También se requieren en las seudo instrucciones de asignación de
memoria (v .g. , DC y DD) para permitir que los datos allí almacenados sean accesibles por
medio de un nombre simbólico. Si una sentencia tiene una etiqueta, ésta comienza (por lo
general) en la columna 1.
En la figura 7-1(a) se muestran cinco etiquetas: FORMUL, I, J, K y N, mis- mas que
aparecen en la figura 7-1(b). Nótese que el lenguaje ensamblador de Motorola requiere
que se pongan dos puntos después de cada etiqueta, mientras que en el de lntel no es
necesario. Esta diferencia no tiene nada de particular, sólo que los diseñadores de cada
ensamblador tuvieron gustos diferentes. Si hubieran trabajado para la otra compañía, el
lenguaje ensamblador de lntel habría usado los dos puntos y el de Motorola no.
El diseñador de cada ensamblador es libre de elegir cualquier convención que desee
en esta área. No hay nada en la arquitectura subyacente que sugiera una u otra elección

257
Una característica negativa de algunos ensambladores es que el número de caracteres
de sus etiquetas está limitado a seis u ocho. Por el contrario, la mayoría de los lenguajes de
alto nivel permiten usar nombres de longitud arbitraria. El uso de nombres largos y bien
escogidos hace los programas mucho más legibles e inteligibles por otras personas (véase
fig. 2-2 como ejemplo de ello).
El campo de operación tiene una abreviatura simbólica del código de operación (si la
sentencia es una representación simbólica de una instrucción máquina) o una seudo
instrucción (si la sentencia es una orden al ensamblador). La selección de un nombre
apropiado es sólo cuestión de gusto, por lo que diferentes diseñadores de lenguaje
ensamblador a menudo hacen distintas elecciones. En el caso de Intel eligieron MOV,
mientras que Motorola prefirió MOVE.
Tanto el 80386 como el 68030 permiten bytes, palabras y operandos largos. ¿Cómo
sabe el ensamblador qué longitud usar? De nueva cuenta los dos diseña- dores escogieron
soluciones distintas, lntel dio a sus registros diferentes nombres, de manera que EAX se
utiliza para mover elementos de 32 bits, AX para 16 bits y AL o AH para 8 bits. En
contraste, Motorola decidió agregar a cada código de operación un sufijo.L para palabras
largas, .W para palabras y, .B para bytes. Ambas formas son válidas, aunque destacan la
naturaleza arbitra- ría del diseño de lenguajes.
Los dos ensambladores difieren también en el nombre de la seudo instrucción que se
usa para reservar espacio para datos. lntel escogió DD (Define Da- ¡os) y Motorola le
nombró DC (Define Constante). Una vez más, sólo es cuestión de gustos.
El campo de operandos de una sentencia en ensamblador se usa para especificar las
direcciones y registros que la instrucción de máquina usa como operar dos. El campo de
operandos de una instrucción de suma de enteros dice qué s va a sumar a qué. El campo de
operandos de una instrucción de salto dice dónde hay que saltar .El campo de operandos de
una seudo instrucción depende de ella (por ejemplo, cuánta memoria hay que reservar).
El campo de comentarios ofrece a los programadores oportunidad de explicar el
funcionamiento del programa en beneficio de otros programadores, par que lo usen o
modifiquen posteriormente. Un programa en lenguaje ensamblador sin este tipo de
documentación resulta casi incomprensible para cualquier programador, con frecuencia
hasta para el propio autor. El campo de comentarios sólo es para el consumo humano; no
tiene ningún efecto en el proceso c ensamble o en el programa generado.

Comparación entre el. lenguaje ensamblador y los lenguajes de alto


nivel

Existe un mito muy popular según el cual los programas que se usan
mucho( especialmente los grandes, deberían escribirse en ensamblador por razones de
eficiencia. Aunque fue acertado en un tiempo, ya no lo es más. Es instructivo con parar el
sistema MUL TICS con el sistema de tiempo compartido de la 360/6' denominado TSS/67.
Ambos sistemas operativos se empezaron por la misma época ( a mediados de la década de
los sesenta) y tienen aproximadamente
mismo tamaño (enorme). La mayor parte del MUL TICS (95OJo) se escribió e un
lenguaje de alto nivel (el PL/l), mientras que el TSS/67 se escribió totalmente en
ensamblador .
Un gran sistema operativo como el MUL TICS es una prueba de fuego para un
lenguaje de alto nivel. Un sistema operativo debe controlar todos los dispositivos de E/S,
hacer frente a situaciones muy criticas en tiempo, manipular grandes bases de datos y
hacer muchas otras tareas; por eso es crucial obtener, buenas prestaciones. Si los
lenguajes de alto nivel pueden pasar esta prueba tan critica, está claro que habrá pocas
aplicaciones en que se puedan demostrar las ventajas que se ganarían usando el lenguaje
ensamblador. Una excepción sería; por ejemplo, la programación del microprocesador que
controla una lavador debido al gran número de unidades vendidas.
Los resultados de ambos proyectos pueden compararse en forma elegante tenemos en
cuenta que se tardó aproximadamente el mismo tiempo en ponerlos a funcionar. Sin
embargo, MUL TICS fue escrito por 50 personas con un costo estimado de lO millones de
dólares, mientras el TSS/67 necesitó 300 personas su costo estimado fue de 50 millones de

258
dólares (Graham, 1970). Salta a la vista que el uso del PL/ 1 ahorró millones de dólares al
proyecto MUL TICS.
Varios estudios han mostrado que el número de líneas de código depurado que puede
producir un programador al mes en un proyecto que dure varios años es de unas 100 a 200
líneas, independientemente del lenguaje de programación que use (Corbató, 1969). Sólo se
puede esperar un rendimiento más alto en programas pequeños. Como una sentencia en
PL/l equivale a 5 o lO sentencias en ensamblador, la productividad de un programador PL/l
será 5 o 10 veces mayor que la de uno que programe en ensamblador. Esto mismo es
válido para cualquier otro lenguaje de alto nivel.
Otra razón de peso en contra de la programación en lenguaje ensamblador es que casi
no se entiende un programa escrito por otra persona. Un listado completo del MUL TICS en
PL/l tiene unas 3000 páginas, algo bastante difícil de digerir en una tarde. Sin embargo,
asimilar semejante volumen es poca cosa en comparación con la lectura de 30 000 páginas
de ensamblador. Aunque nadie intentará nunca leer el listado del MUL TICS completo, la
gente puede in- tentar comprender determinados procedimientos, que tienen en promedio 4
páginas de PL/l. Es corriente que, en proyectos largos, cambie 15 % del personal al año. En
consecuencia, después de 5 años, sólo unos pocos de los programadores originales
permanecerán aún en este trabajo. Si los programadores nuevos no entendieran los
programas de sus predecesores, el proyecto se encontraría en una situación muy
embarazosa.

Afinación de programas

Ciertos estudios han mostrado que, en la mayoría de los programas, un porcentaje


muy bajo del código total es el encargado de un gran porcentaje del tiempo de ejecución
(Dardner y Heller, 1970) .Es corriente que el 1 % del programa se ocupe del 50 % del
tiempo de ejecución y que el 10 % del programa lo sea del 90 % de dicho tiempo. Una
situación corriente en un compilador es cuando la búsqueda en la tabla de símbolos se lleva
más tiempo que todo el resto de la compilación.
Supongamos que se necesitan lO años-hombre para escribir cierto compilador grande
en un lenguaje de alto nivel, y que dicho compilador necesita 100 segundos para compilar
cierto programa de prueba. Escribir el compilador en ensamblador completamente requeriría
de 50 a 100 años-hombre, debido ala baja productividad de los programadores en
ensamblador. Sin embargo, el programa de prueba se compilaría en 33 segundos, ya que
un programador inteligente puede mejorar a un buen compilador por un factor de 3. Esta
situación se ilustra en la figura 7-2.

Años-hombre necesarios Tiempo de ejecución del


para producir el programa programa en segundos
Lenguaje ensamblador 50 33
Lenguaje orientado a 10 100
problemas
Método mixto antes de pulir
Parte critica 10% 1 90
Resto 90% 9 10
Total 10 100
Método mixto después de pulir
Parte critica 10% 6 30
Resto 90% 9 10
Total 15 40
Fig. 7-2. comparación entre la programación en ensamblador y en lenguaje orientado a problemas, con ajuste y sin él.

Con base en la observación anterior, de que sólo una pequeña parte del código es la
responsable de la mayor parte del tiempo de ejecución, se puede tener otro enfoque.
Primero, el programa se escribe en un lenguaje de alto nivel. Luego se hace una serie de
mediciones para establecer las partes del programa que ocuparán la mayor parte del tiempo
de ejecución. Estas mediciones incluirán normalmente el uso del reloj del sistema para

259
calcular la cantidad de tiempo que se gasta en cada procedimiento, la cuenta del número de
veces que se ejecuta cada iteración y otros pasos similares.
Por ejemplo, supongamos que el 10 % del programa ocupa el 90 % del tiempo de
ejecución. Esto significa que para un trabajo de 100 segundos, 90 se gastan en el 10 %
critico y lO en el 90 % restante del programa. El 10 % critico se puede mejorar
rescribiéndolo en ensamblador. Este proceso se llama afinación y se ilustra en la figura 7-
2. Aquí se necesitan 5 años-hombre más para rescribir los procedimientos críticos, pero su
tiempo de ejecución se reduce de 90 a 30 segundos.
Resulta instructivo comparar el método mixto entre lenguajes de alto nivel y
ensamblador con la versión en lenguaje ensamblador puro (fig. 7-2). El último es 20 % más
rápido, pero tiene un precio de más del triple. Además, la ventaja del método mixto es
realmente mayor que la indicada, ya que la escritura de un procedimiento en ensamblador a
partir de uno escrito en lenguaje de alto nivel y ya depurado es, de hecho, mucho más fácil
que escribir el mismo procedimiento en ensamblador desde el principio. En otras palabras,
la estimación de 5 años- hombre para rescribir los procedimientos críticos es en extremo
conservadora. Si realmente se necesitara sólo 1 año-hombre, la razón de costos entre el
método mixto y el de ensamblador puro sería mayor de 4 a 1 en favor del método mixto.
Un programador que use un lenguaje de alto nivel no está sumergido en una
inmensidad de bits y, a veces, puede ver aspectos del problema que permitan verdaderas
mejoras. Esta situación no ocurre con frecuencia con los programadores en ensamblador,
que normalmente se ocupan de hacer malabarismos con las instrucciones para ahorrarse
unos pocos microsegundos. Graham (1970) nos cuenta que cierto procedimiento en PL/1 de
MUL TICS se rescribió en 3 meses. de manera que la nueva versión era 26, veces más chica
y 50 veces más rápida que la original, así como otro que se hizo 20 veces más pequeño y
40 veces más rápido con 2 meses de trabajo.
Corbató (1969) describe un procedimiento en PL/l para el manejo de un tambor que
se redujo de 50000 a 10000 palabras de código, compilado en menos de un mes y un
programa de control de E/S que se redujo de 65000 a 30 000 palabras de código
compilado, con una mejora en la velocidad de un factor 8 en cuatro meses. Esto muestra
que los programadores en lenguaje de alto nivel tienen una visión global de lo que están
haciendo, y. por ello es mucho más fácil que se les ocurran ideas que lleven a algoritmos
totalmente diferentes y mucho mejores.
Después de esta introducción, uno se pregunta maravillado: "¿Por qué molestarse
estudiando los ensambladores si la programación en ensamblador tiene tantos y tan serios
inconvenientes?" Al menos existen tres razones. La primera es que el éxito o fracaso de un
proyecto importante puede depender de la consecución de un factor de mejora de 5 o 10 en
algún procedimiento crítico, por lo que es importante estar en condiciones de escribir un
buen código en ensamblador cuando sea absolutamente necesario. La segunda es que, en
ocasiones, la programación en ensamblador es la única alternativa, debido a la falta de
memoria (las calculadoras de bolsillo tienen una CPU, pero pocas tienen un megabyte de
memoria y, menos aún, un disco duro). La tercera razón es que un compilador debe
producir una salida que utilice el ensamblador, o realizar el proceso de ensamble por sí
mismo. De ahí que resulte esencial entender el lenguaje ensamblador para comprender
cómo funcionan los compiladores.

260
EL PROCESO DE ENSAMBLAJE

En las siguientes secciones describiremos brevemente cómo funciona un ensamblador.


Aunque cada máquina tiene diferente lenguaje ensamblador, la similitud del proceso de
ensamblaje en las diferentes máquinas nos permite describirlo en términos generales.

Ensambladores de dos pasadas

Debido a que un programa en ensamblador consta de una serie de sentencias de una


línea, parece natural tener un ensamblador que lea una sentencia, la traduzca a lenguaje de
máquina y escriba el código de máquina generado en un archivo y la porción del listado
correspondiente, si la hay, en otro. El proceso se repetiría hasta que todo el programa se
haya traducido. Por desgracia, este método no funciona.
Considérese la situación en la que la primera sentencia sea un salto a L. El
ensamblador no puede ensamblar esta instrucción hasta que conozca la dirección de la
sentencia L. La sentencia L puede estar cerca del fin del programa, lo que impide que el
ensamblador encuentre la dirección sin leer primero casi todo el programa. Esta dificultad
se llama referencia adelantada, porque el símbolo L se ha usado antes de que se haya
definido; es decir, se ha hecho referencia aun símbolo cuya definición aparecerá más tarde.

261
Las referencias adelantadas pueden tratarse de dos maneras. La primera es que el
ensamblador podría leer el programa fuente dos veces. Cada lectura del programa fuente se
llama una pasada, y todo traductor que lea el programa de entrada dos veces se llama un
traductor de dos pasadas. En la pasada 1, el ensamblador de dos pasadas colecciona todas
las definiciones de símbolos, incluyendo las etiquetas de las sentencias, y las almacena en
una tabla. En el momento en que empieza la segunda pasada, ya se conocen los valores de
todos los símbolos; ya no existe el problema de las referencias adelantadas y puede leerse
cada sentencia, ensamblarla y obtener una salida.. Este método es conceptualmente
sencillo, aunque requiere una pasada adicional sobre la entrada.
El segundo método consiste en intentar hacer el ensamblaje en una pasada, a pesar
de todo. Cuando se encuentra una sentencia que no puede ser ensamblada por contener
una referencia adelantada, no se genera ninguna salida; en vez de hacerlo, se introduce la
sentencia con la referencia adelantada en una tabla, con la indicación de que todavía no ha
sido ensamblada. Al final del ensamblaje, todos los símbolos habrán sido definidos, de modo
que todas las sentencias de dicha tabla pueden ensamblarse.
Este último método genera la salida en distinto orden que en el de las dos pasadas. Si
al ensamblaje le sigue una carga, el cargador puede reordenar las piezas de la salida para
dejarlas en el orden correcto. Por tanto, esta objeción no tiene importancia. El problema del
ensamblador de una pasada estriba en que si hay muchas sentencias que contengan
referencias adelantadas, la tabla que debe contener todas las sentencias no ensambladas
puede hacerse demasiado grande y no caber en memoria. Este método presenta un grado
de complejidad considerablemente mayor y tiene dificultades para imprimir un listado,
incluyendo el código objeto producido. Por estas razones, la mayoría de los ensambladores
son de dos pasadas.

La primera pasada

La función principal de la primera pasada es construir lo que se llama tabla de


símbolos, donde se guardan los valores de todos los símbolos. Un símbolo es una etiqueta o
un valor al que se le asigna un nombre simbólico por medio de una seudo-instrucción como

ESPACIO EQU 100

Al asignar un valor a un símbolo que está en el campo de etiqueta de una instrucción,


el ensamblador debe conocer la dirección que tendrá dicha instrucción cuando se ejecute el
programa. Para conocer la dirección en tiempo de ejecución de la instrucción que se
ensambla, el ensamblador mantiene una variable durante el ensamblaje llamada contador
de posiciones de instrucción o ILC. Esta variable se pone a O al comienzo de la primera
pasada y se le añade la longitud de cada una de las instrucciones que se procesan, como se
muestra en la figura 7-3. Este ejemplo es para el 80386; como la diferencia entre ambos
no es muy importante, no es necesario dar el ejemplo para Motorola.

Campo Campo Campo Campo comentarios Longitud ILC antes


etiqueta operación operandos instrucción sentencia
.
.
.
SUSANA: MOV EAX, I EAX = I 5 100
MOV EAX, J EBX = j 6 105
MOV EAX, K ECX = K 6 111
IMUL EAX, EAX EAX = I * I 2 117
IMUL EBX, EBX EBX = J * J 3 119
IMUL ECX, ECX ECX = K * K 3 122
ADD EAX, EBX EAX = I * I + J * J 2 125
ADD EAX, ECX EAX = I * I + J * J + K * K 2 127
MOV N, EAX N=I*I+J*J+K*K 5 129
JMP YA SALTAR A YA 5 134

262
Fig. 7-3. El Contador de Posiciones de Instrucciones (ILC) va tomando el valor de la instrucción donde se
cargará la instrucción en memoria. En este ejemplo, las sentencias anteriores a SUSANA ocupan 100 byte.

Algunos ensambladores permiten que el programador escriba instrucciones con


direccionamiento inmediato, aunque no exista ninguna instrucción correspondiente en la
máquina real. Tales instrucciones con operando "seudoinmediato" se tratan como sigue. El
ensamblador reserva memoria al final del programa para el operando inmediato y genera
una instrucción que hace referencia a ella. Por ejemplo, la IBM 370 no tiene instrucciones
inmediatas; sin embargo, los programadores pueden escribir:

L 14, = F'5'

Para cargar el registro 14 con una palabra completa que tenga un constante de valor
5. En esta forma el programador evita escribir de manera explícita una instrucción DC para
ubicar una palabra con un valor inicial de 5. Se les llama literales a las constantes para las
cuales el ensamblador reserva memoria automática. Además de ahorrar al programador un
poco de escritura, las literales hacen más legibles los programas al hacer que el valor de la
constante aparezca en la instrucción fuente. La primera pasada del ensamblador debe
construir una tabla con todas las literales que utiliza el programa. Como las dos familias
utilizadas en uestros ejemplos tienen instrucciones inmediatas, sus ensambladores no
proporcionan literales. Hoy en día, las instrucciones inmediatas son muy comunes, pero
antes eran poco usuales. Es muy probable que el uso extendido de literales haya hecho ver
a los diseñadores que el direccionamiento inmediato era una buena idea.
En la mayoría de los ensambladores, la primera pasada utiliza por lo menos dos
tablas: la tabla de símbolos y la de códigos de operación. En caso de ser necesaria, se usa
también la tabla de literales. La de símbolos tiene, como se muestra en la figura 7-4, un
elemento para cada símbolo. Los símbolos se definen, bien usándolos como etiquetas, bien
por definición explícita (por ejemplo, EQU en el 370). Cada elemento de la tabla de símbolos
contiene el símbolo (o un apuntador a él), su valor numérico y, algunas veces, otra
información. Esta información adicional puede incluir:
1. Longitud del campo de datos asociado al símbolo.
2. Bits de reubicación. (¿Cambia el valor de símbolo si el programa se carga en una
dirección distinta a la que se supuso ensamblador?)
3. Si el símbolo ha de ser accesible o no a un procedimiento externo.

Símbolo Valor Otra


información
SUSANA: 100
MARIA: 111
MARISA: 125
CARMEN: 129
. . .
. . .
. . .
Fig. 7-4. Tabla de símbolos para el programa
de la figura 7-3.

La tabla de los códigos de operación contiene un elemento por cada código de


operación simbólico (nemotécnico) del lenguaje ensamblador. La figura 7-5 muestra parte
de una tabla de códigos de operación. Cada elemento contiene el código de operación
simbólico, su valor numérico, su longitud y un número de clase que divide los códigos de
operación en grupos, conforme al número y tipo de operandos.

Código de Primer Segundo Código de operación Longitud de Clase de


operación operando operando hexadecimal la instrucción instrucciones
AAA -- -- 37 1 6

263
ADD EAX IMMED32 05 5 4
ADD REG REG 01 2 19
AND EAX IMMED32 25 5 4
AND REG REG 21 2 19
. . . . . .
. . . . . .
. . . . . .
Fig. 7-5. Extractos de una tabla de códigos de operación en un ensamblador 80386

Como ejemplo, considérese al código de operación ADD. Si una instrucción ADD tiene
al registro EAX como primer operando y una constante de 32 bits (INMED32) como
segundo, se usa entonces el código de operación O5H y la instrucción tiene una longitud de
5 bytes. (En la figura no se muestran constantes que pueden expresarse en 8 o 16 bits y
que utilizan diferentes códigos de operación.) Si se usa ADD con dos registros como
operandos, la instrucción tiene dos bytes con un código de operación O1H. La clase de
instrucción (arbitraria) 19 se asignaría a todas las combinaciones código de operación-
operandos que siguieran las mismas reglas y se procesarían en la misma forma que una
instrucción ADD con dos registros como operandos.
Si se requiere de literales, durante el ensamblaje se mantiene una tabla de éstas,
creando nuevos elementos cada vez que se encuentra una. Después de la primera pasada,
dicha tabla se ordena para eliminar las literales duplicadas.
La figura 7-6 muestra un procedimiento que puede servir de base a la primera
pasada de un ensamblador. El estilo de programación es digno de mención en sí mismo. Los
nombres de los procedimientos se han elegido de manera que den una idea más o menos
precisa de lo que hacen. Más importante aún, la figura 7-6 representa un esbozo de la
primera pasada que, aunque no está completo, es bueno para empezar. Es lo bastante
corto como para que se entienda con facilidad y se vea claramente que lo siguiente que
debe hacerse es escribir los procedimientos que usa.

264
Algunos de estos procedimientos son bastante cortos, como MiraSiHay- Etiqueta, que
entrega la etiqueta como cadena de caracteres si la hay y una cadena de espacios en blanco
si no la hay. Otros procedimientos, como tipo 0 y tipo 1, pueden ser más largos y llamar a
otros procedimientos a su vez. En general, las clases no serán dos, por supuesto, sino que
dependerán del lenguaje que se ensambla.
La estructuración de los programas de este modo tiene otras ventajas, además de la
facilidad de programación. Si el ensamblador lo escribe un grupo de gente, los
procedimientos pueden repartirse entre sus miembros. Todos los detalles (engorrosos)
sobre la obtención de la entrada están escondidos dentro de LeeSiguienteSentencia. Si
tienen que hacer algún cambio (por ejemplo, debido a un cambio de sistema operativo),
sólo resultará afectado el procedimiento auxiliar y no se necesitaría hacer cambios
directamente en el procedimiento PrimeraPasada.
En algunos ensambladores, las sentencias se almacenan en una tabla después de
leídas. Si la tabla se llenara, debería entonces escribirse en un disco varias veces. Por otra

265
parte, si el programa que está siendo ensamblado es tan corto como para caber en la tabla,
la segunda pasada puede obtener sus entradas de ésta, eliminando las operaciones de E/S
en el disco.
Cuando se lee seudo instrucción END, se termina la primera pasada. Entonces se
ordenan la tabla de símbolos y la de literales, si se necesita. La tabla de literales ordenados
se examina para ver si hay duplicaciones que se puedan eliminar.

La segunda pasada

La función de la segunda pasada es generar el programa objeto y, posiblemente,


imprimir el listado del ensamblaje. Además, debe producir cierta información necesaria para
que el programa ligador enlace procedimientos ensamblados en momentos diferentes. La
figura 7-7 muestra un procedimiento para efectuar la segunda pasada.

El procedimiento correspondiente a cada clase de instrucción sabe cuántos operandos


puede tener esa clase y llama al procedimiento EvalúaExpresión ( que no se muestra) el
número de veces apropiado. El procedimiento EvalúaExpresión ha de convertir la expresión
simbólica en un número binario. Encontrará primero los valores de los símbolos y las
direcciones de los literales en las tablas respectivas. Una vez que se conocen los valores
numéricos, se evalúa la expresión. Hay muchas técnicas con las que se evalúan expresiones
aritméticas. Un método (descrito en el capítulo 5) consiste en convertir la expresión en
notación polaca inversa y evaluarla mediante una pila.

266
Una vez que se conoce el valor numérico del código de operación y los valores de los
operandos, se puede ensamblar la instrucción completa, la que entonces se coloca en un
buffer de salida, para luego escribirla en un disco cuando éste se llene.
La sentencia fuente original y el código objeto generado a partir de ella (en octal o en
hexadecimal) se imprimen o se guardan para su impresión posterior . Después de que se
haya ajustado el CPI, puede extraerse la siguiente instrucción.
Hasta ahora supusimos que el programa fuente no contiene ningún error . Cualquiera
que haya escrito alguna vez un programa en cualquier lenguaje, sabe hasta que punto es
realista dicha suposición. Algunos de los errores mas comunes son:
1. Se ha usado un símbolo no definido.
2. Se ha definido un símbolo mas de una vez.
3. El nombre del campo de código de operación no es un código de operación válido
4. No se le han suministrado al código de operación suficientes operandos
5. Se le han suministrado demasiados operandos al código de operación
6. Un número octal contiene un 8 o un 9
7. Uso no permitido de registros (por ejemplo, salto a un registro)
8. Falta de sentencia END

Los programadores son más ingeniosos cuando se ponen a buscar nuevas formas de
cometer errores. Muchas veces los errores debidos a símbolos indefinidos se deben a
errores de escritura y un ensamblador muy inteligente podría intentar figurarse cuál de los
símbolos definidos se parece más al indefinido y usarlo en su lugar. Poco puede hacerse
para corregir la mayoría de los otros errores. Lo mejor que puede hacer un ensamblador
con una sentencia errónea es imprimir un mensaje de error e intentar continuar
ensamblando.

La tabla de símbolos

Durante la primera pasada del proceso de ensamblaje, el ensamblador acumula


información sobre los símbolos y sus valores en la tabla de símbolos para que la segunda
pasada los busque. Hay varias formas de organizar la tabla de símbolos: veremos algunas
de ellas en esta sección. Todos los métodos intentan simular una memoria asociativa que,
desde el punto de vista conceptual, es un conjunto de pares (símbolo, valor). Dado un
símbolo, la memoria asociativa debe producir el valor .
El método más sencillo de realización ( secuencial ) es organizar la tabla como un
vector de pares, el primer elemento de los cuales es el símbolo (o apunta a él) y el segundo
el valor (o un apuntador a él). Dado un símbolo que buscar, la rutina de la tabla de
símbolos simplemente busca en forma lineal en la tabla hasta que lo encuentra. Este
método es fácil de programar, pero es lento, ya que en promedio se ha de recorrer la mitad
de la tabla.
Otro método de organizar la tabla de símbolos consiste en ordenar los símbolos y usar
un algoritmo de búsqueda binaria para encontrarlos. El algoritmo funciona comparando el
elemento central de la tabla con el símbolo. Si éste se localiza en orden alfabético por
delante de aquél, hay que proseguir la búsqueda en la primera mitad de la tabla, y si está
después en la segunda mitad. Si es igual, la búsqueda termina.
Suponiendo que el elemento central de la tabla no es igual al símbolo buscado, al
menos sabemos en qué mitad seguir buscando. Ahora se puede aplicar la búsqueda binaria
a la mitad apropiada, con lo que se obtendrá la coincidencia o el cuarto de tabla donde
seguir buscando. Al aplicar este algoritmo recursivamente, la búsqueda en una tabla de n
elementos requerirá unos log2 n intentos. Evidentemente, este método es mucho más
rápido que la búsqueda lineal, pero requiere ordenar primero la tabla.
Un método totalmente diferente de simular una memoria asociativa es la técnica
denominada codificación por transformación. Este método requiere una función de
transformación que haga corresponder a cada símbolo un número entre 0 y k -1. Una de las
funciones posibles será hacer el 0 EXCLUSIVO de todos los códigos ASCII de los caracteres
(o de palabras que contengan grupos de caracteres) y luego tomar el resto al dividir este
resultado intermedio entre k. De hecho, valdrá casi cualquier función de la entrada que dé

267
una distribución uniforme de los valores de salida. Los símbolos se pueden almacenar en
una tabla de k elementos numerados de 0 a k - 1. Todos los pares (símbolo, valor) cuyo
símbolo se transforme en i se almacenarán en una lista encadenada a la que apunte el
ejemplo i de la tabla. Con n/k símbolos y k elementos en la tabla, la media de las longitudes
de las listas será n. Eligiendo k aproximada- mente igual a n, los símbolos se encontrarán
con frecuencia en el primer elemento de la lista correspondiente. Ajustando k podremos
reducir el tamaño de la tabla al costo de búsquedas más lentas. La codificación por
transformación de los símbolos se ilustra en la figura 7-8.

268
MACROS

Los programadores de lenguaje ensamblador necesitan repetir frecuentemente grupos


de instrucciones dentro de un programa. La forma más sencilla de resolver el problema es
escribirlas sin más, pero la verdades que, si el número de sentencias es muy elevado o la
secuencia aparece muchas veces en el programa, el procedimiento puede resultar bastante
tedioso.
Una alternativa es convertir la secuencia en un procedimiento y llamarlo cada vez que
se necesite. Esta estrategia tiene el inconveniente de que requiere una instrucción de
llamada y otra de retorno cada vez que se ejecute esta secuencia. Si las secuencias son
cortas (por ejemplo, dos instrucciones) pero se usan con bastante frecuencia, la llamada a
procedimiento puede disminuir. significativamente la velocidad de ejecución del programa.
Las macros proporcionan una solución sencilla y eficiente al problema que plantean las
secuencias idénticas o casi idénticas de instrucciones que se usan repetidamente en un
programa.

Definición, llamada y expansión de una macro

La definición de macro es un método que permite asignar un nombre a una porción de


texto. Después de haber definido una macro, el programador puede escribir el nombre de la
macro en vez del trozo del programa. Una macro es, realmente, una abreviatura de un
trozo de texto. La figura 7-9(a) muestra un programa en lenguaje ensamblador de la
80386 que intercambia el contenido de las variables P y Q dos veces. Estas secuencias se
definen como macros, como se observa en la figura 7-9(b). Después de su definición, cada
vez que aparezca CAMBIA, será remplazada por las cuatro líneas siguientes:

MOV EAX,P
MOV EBX,P
MOV Q,EAX
MOV P,EBX

El programador ha definido la macro CAMBIA como abreviatura de las cuatro


sentencias anteriores.
MOV EAX, P SWAP MACRO
MOV EBX, Q EAX, P
MOV Q, EAX EBX, Q
MOV P, EBX Q, EAX
. P, EBX
. .
. .
MOV EAX, P SWAP
MOV EBX, Q .
MOV Q, EAX .
MOV P, EBX SWAP
(a) (b)

Fig. 7-9. Código en lenguaje ensamblador del Intel 80386 para


intercambiar P y Q dos veces. (a) Sin usar macro. (b) Usando una macro.

Aunque los distintos ensambladores usan notaciones ligeramente diferentes para


definir macros, todos requieren las mismas partes básicas:
1. Un encabezado de macro que proporciona el nombre de la macro que va a
definirse.
2. El texto que forma el cuerpo de la macro.
3. Una seudo instrucción que marque el fin de la definición (por ejemplo, ENDM).

Cuando un ensamblador encuentra una definición de macro, la aísla en una tabla de

269
definiciones de macros para su uso posterior. Desde ese momento, siempre que el nombre
de la macro (CAMBIA, en el ejemplo de la figura 7-9) aparezca como código de operación,
el ensamblador lo remplazará por su cuerpo. El uso del nombre de una macro como código
de operación se denomina llamada a macro y su reemplazo por el cuerpo, expansión de
macro.
La expansión de una macro se produce durante el proceso de ensamblaje, no durante
el proceso de ejecución del programa. Este punto es muy importante. El programa de la
figura 7-9(a) y el de la figura 7-9(b) producirán exactamente el mismo código máquina.
Si se considera solamente el programa en lenguaje máquina, es imposible decir si se han
utilizado macros en su generación, ya que la expansión de macros se terminó y sus
definiciones fueron eliminadas al finalizar el proceso de ensamblaje.
Las llamadas a macros no deben confundirse con las llamadas a procedimientos. La
diferencia básica reside en el hecho de que las primeras indican al ensamblador que
remplace el nombre de la macro por su cuerpo, mientras que una llamada a un
procedimiento es una instrucción de máquina que será insertada en el programa objeto, y
más tarde será ejecutada para llamar al procedimiento. La figura 7-10 compara llamadas a
macro con llamadas a procedimiento.

Llamado a Llamada a
Item
macro procedimiento
Durante la
Durante el
Momento en el que se hace ejecución del
ensamblaje
programa objeto
El cuerpo se inserta en el
programa objeto en todos los
Sí No
sitios donde aparece el
nombre
Es una instrucción de llamada
a procedimiento insertada en No Sí
el programa objeto
Debe usarse una instrucción
retorno para devolver el
No Sí
control a la sentencia que
sigue a la llamada
Número de copias del cuerpo Una por cada
que aparecen en el programa llamada a la 1
objeto macro
Fig. 7-10. Comparación entre llamadas a macro y a procedimientos.

Aunque las macros generalmente se expanden en la primera pasada del proceso de


ensamblaje, puede ser más simple desde el punto de vista conceptual pensar en un
ensamblador con una pasada anterior a la primera, durante la cual se salvan las definiciones
de macro y se expanden las llamadas. Desde este punto de vista, el programa fuente se lee
y se transforma en otro programa en el que todas las definiciones de macro se han
eliminado y en el que todas las llamadas se han sustituido por sus cuerpos. La salida
resultante, un programa en lenguaje ensamblador que no contiene macros, se introduce en
el ensamblador.
Recuérdese que un programa es una cadena de caracteres, que incluye letras, dígitos,
espacios, signos de puntuación y "retornos de carro" (cambio a una línea nueva). El
desarrollo de una macro no es ni más ni menos que la sustitución de ciertas subcadenas de
esa cadena de caracteres por otra cadena diferente. Las macros no son más que un método
que permite manipular cadenas .de caracteres, sin preocuparse de su significado.

270
Macros con parámetros

El tipo de macros descrito anteriormente se usa para acortar programas en los que se
repite con precisión la misma secuencia de instrucciones varias veces.
Frecuentemente se da el caso de que un programa contiene varias secuencias de
instrucciones que son casi iguales, pero no del todo, como se ilustra en la figura 7-11(a).
Aquí la primera secuencia intercambia P y Q y la segunda R y S.
Los macroensambladores manejan los casos de secuencias casi idénticas permitiendo
que las definiciones de macro acepten parámetros formales y que las llamadas a macro
proporcionen parámetros reales. Cuando se desarrolla una macro, cada parámetro formal
que aparece en el cuerpo se remplaza por el parámetro real correspondiente. Los
parámetros reales se sitúan en los campos de operando de la llamada a la macro. La figura
7-11(b) muestra el programa de la figura 7-11(a) usando macros con parámetros. Los
símbolos P1 y P2 son los parámetros formales. Cada ocurrencia de P 1 dentro del cuerpo de
la macro se remplaza por el primer parámetro actual, cuando la macro se extiende. En
forma similar, P2 se remplaza por el segundo parámetro actual.

CAMBIA P, Q

En la llamada macro P es el primer parámetro actual y Q el segundo, de ahí que los


programas ejecutables que producen las dos secuencias de la figura 7-11 son idénticos.

MOV EAX, P CHANGE MACRO P1,


P2
MOV EBX, Q MOV EAX, P1
MOV Q, EAX MOV EBX, P2
MOV P, EBX MOV P2, EAX
. MOV P1, EBX
. .
. .
MOV EAX, R CHANGE P, Q
MOV EBX, S .
MOV S, EAX .
MOV R, EBX CHANGE P, Q
(a) (b)

Fig. 7-11. Secuencia casi idénticas de instrucciones. (a) Sin macro. (b) Con una macro

Implementación de macros en un ensamblador

Para que un ensamblador pueda soportar macros debe ser capaz de realizar dos
funciones: guardar las definiciones y expandir las llamadas. Se examinarán estas funciones
una a una.
El ensamblador debe mantener una tabla de todos los nombres de las macros y, junto
con cada nombre, un apuntador a la definición, de manera que pueda recuperarla cuando la
necesite. Algunos ensambladores tienen una tabla independiente para los nombres de las
macros y otros tienen una tabla combinada de códigos de operación, donde se guardan
todas las instrucciones de máquina, seudo instrucciones y nombres de macros.
Cuando se encuentra una definición de macro, se añaden a la tabla de macros el
nombre de la macro, el número de parámetros formales y un apuntador a otra tabla (la de
definiciones de macros) donde se guarda el cuerpo. También se construye una lista de
parámetros formales para su uso en el procesamiento de la definición. Luego se lee el
cuerpo y se guarda en la tabla de definiciones. Los parámetros formales que aparecen
dentro del cuerpo se indican por una marca especial. Como ejemplo, se muestra a
continuación la representación interna de la definición de la macro CAMBIA, utilizando el

271
punto y coma como "control de carro" y el ampersand como símbolo del parámetro formal.

MOV EAX,&Pl; MOV EBX,&P2; MOV &P2,EAX; MOV &PI,EBX;

Dentro de la tabla de definiciones de macros, el cuerpo es simplemente una cadena de


caracteres.
Durante la primera pasada del ensamblaje, se buscan los códigos de operación y se
expanden las macros. Siempre que el ensamblador encuentra una definición, la almacena
en la tabla. Cuando encuentra una llamada, cesa temporalmente de leer del dispositivo de
entrada y, en cambio, empieza a leer el cuerpo, que había guardado previamente. Cada vez
que se topa con un parámetro formal, lo remplaza por el real. El ensamblador reconoce
fácilmente los parámetros formales por la presencia del carácter &.

MONTAJE (LINKING) Y CARGA

La mayor parte de los programas se componen de más de un procedimiento. Los


compiladores y ensambladores suelen traducir un procedimiento a la vez y guardan en
memoria secundaria el resultado de esta traducción. Antes de que pueda ejecutarse el
programa, todos los procedimientos traducidos deben recuperarse y ligarse correctamente.
Si no se dispone de memoria virtual, el programa enlazado debe cargarse explícitamente en
memoria. Los programas que realizan estas funciones reciben varios nombres, como
cargador (Ioader), montador o ligador (linker), cargador montado (linking loader) y editor
de enlaces (linkage edítor). La traducción completa de un programa fuente se efectúa en
dos pasos, como se ve en la figura 7-12:
1. Compilación o ensamblaje de los procedimientos fuente.
2. Encadenamiento (linking) o montaje de los módulos objeto.

El primer paso lo realiza el compilador 0 el ensamblador y el segundo el montador


(linker). La traducción de un procedimiento fuente aun módulo objeto representa un cambio
de nivel, ya que el lenguaje fuente y el objeto tienen diferentes instrucciones y notación. El
proceso de ensamblado, sin embargo, no representa en realidad un cambio de nivel, ya que
la entrada y el resultado del ensamblador son programas para la misma máquina. La
función del ensamblador es recoger los procedimientos traducidos y unirlos de tal manera
que funcionen como una unidad, a la cual se le llama generalmente módulo ejecutable. La
función del cargador es cargar el módulo de carga absoluto en memoria principal. Estas
funciones se combinan con bastante frecuencia.
Hay una buena razón por la que los compilado res y ensambladores traducen cada
procedimiento fuente en forma independiente. Si un compilador leyera una serie de
procedimientos fuente y produjera directamente un programa en lenguaje máquina de
modo de dejarlo listo para su ejecución., el cambio de una sentencia en uno de los
procedimientos requeriría traducir de nuevo todos los procedimientos fuente.
Si se usa el método de los módulos objeto separados de la figura 7-12, sólo será

272
necesario retraducir los procedimientos modificados y no habrá que tocar los demás,
aunque sí será necesario volver a enlazar (relink) todos los módulos objeto. El enlace es
generalmente mucho más rápido que la traducción; de esta manera este proceso de dos
pasos puede ahorrar una gran cantidad de tiempo durante el desarrollo de un programa
largo.

273
Tareas realizadas por el programa ensamblador

Al comienzo de la primera pasada del proceso de ensamblaje, el contador de


posiciones de instrucción es puesto a cero. Este paso es equivalente a suponer que el
módulo objeto será situado en la dirección (virtual cero durante la ejecución. La figura 7-
13 muestra cuatro módulos objeto. En este ejemplo, cada modulo empieza con una
instrucción de salto a una instrucción de movimiento de datos dentro de él.

Para ejecutar el programa, el cargador (Ioader)sitúa los módulos objeto en memoria


principal, como se ve en la figura 7-14(a). Por lo general, una pequeña porción de la
memoria que comienza en la dirección cero se usa en vectores de interrupción, para
comunicarse con el sistema operativo y otros propósitos, por lo que los programas deben
empezar más arriba. En esta figura hemos elegido (arbitrariamente) empezar los programas
en la dirección 100.
El programa de la figura 7-14(a), aunque cargado en la memoria principal, no está
listo para ser ejecutado. Consideremos lo que ocurriría si la ejecución comenzase con la
instrucción que está al principio del módulo A. El programa no saltaría a la instrucción
MUEVE (MOVE), como sería menester, ya que esa instrucción está ahora en la posición 300.
En la práctica, todas las referencias a memoria fallarían por la misma razón.

274
Este problema, llamado de reubicación, tiene lugar porque cada módulo objeto de la
figura 7-13 representa un espacio de direccionamiento distinto. En una máquina con
espacio de direccionamiento segmentado, como el del MULTICS, cada módulo objeto puede
tener el espacio de direccionamiento situado en su propio segmento. En una máquina con
una memoria lineal, unidimensional, los módulos objeto tienen que mezclarse en un único
espacio de direccionamiento. La naturaleza bidimensional de la memoria virtual del MUL
TICS elimina la necesidad de mezclar los módulos objeto y simplifica en gran medida la
tarea del ensamblador. Los distintos espacios de direccionamiento de los módulos objeto
deben también mezclarse en una máquina que tuviese una memoria paginada
unidimensional.
Además, las instrucciones de llamada a procedimientos de la figura 7-14(a) tampoco
funcionarán. En la dirección .400, el programador ha intentado llamar al módulo objeto B,
pero ya que cada procedimiento se traduce por separado, el ensamblador no puede saber
cuál es la dirección que ha de poner en la instrucción de llamada. La dirección del módulo
objeto B no se conoce hasta el momento del enlace. Este problema recibe el nombre de
referencias externas. Estos dos problemas pueden ser resueltos por el programa

275
ensamblador .
El programa ensamblador mezcla los distintos espacios de direccionamiento de los
módulos objeto para conseguir un espacio de direccionamiento único y lineal en los
siguientes pasos:
1. Construye una tabla de todos los módulos objeto y sus longitudes.
2. Basado en esta tabla, asigna una dirección de carga a cada módulo objeto.
3. Busca todas las instrucciones que contengan una dirección de memoria y, a
cada una de ellas, le suma una constante de reubicación igual a la dirección de
comienzo del módulo en el que están contenidas.
4. Busca todas las instrucciones que hacen referencia a otros procedimientos e
inserta en ellas la dirección de los mismos.

La tabla de módulos objeto construida en el paso 1 se muestra aquí para los módulos
de la figura 7-14:

Módulo Longitud Dirección de comienzo


A 400 100
B 600 500
C 500 1100
D 300 1600

La figura 7-14(b) muestra el aspecto del espacio de direcciones de la figura 7-


14(a) de que el ensamblador haya realizado los pasos anteriores.

Estructura de un módulo objeto

Los módulos objeto contienen seis partes, como se ve en la figura 7-15. La primera
contiene el nombre del módulo, cierta información necesaria para el ensamble, como las
longitudes de las distintas partes del módulo objeto y, algunas veces, la fecha de
ensamblaje.

Identificación

Tabla de puntos de entrada

Tabla de referencias externas

Instrucciones de máquina y constantes

Lista de reubicación

Fin de módulo

Fig. 7-15. Estructura interna de un módulo objeto


producida por un traductor.

La segunda parte del módulo objeto es una lista de los símbolos definidos en el
módulo a los que otros módulos pueden hacer referencia, junto con sus valores. Por
ejemplo, si el módulo consta de un procedimiento llamado “GRANLIO”, entonces la tabla de

276
puntos de entrada contendrá la cadena de caracteres "GRANLIO" seguida de la dirección a
la cual corresponde. El programador en lenguaje ensamblador indicará qué símbolos han de
ser declarados como puntos de entrada o símbolos externos usando una seudo instrucción.
La tercera parte del módulo objeto consta de una lista de los símbolos que usa, pero
que están definidos en otros módulos, junto con otra que dice qué instrucciones usa cada
uno de esos símbolos. Con esta última lista el ensamblador inserta las direcciones correctas
en las instrucciones que usan símbolos externos. Un procedimiento puede llamar a otros
procedimientos traducidos independientemente declarando como externos los nombres de
dichos procedimientos. El programador en lenguaje ensamblador indica los símbolos que
han de ser declarados como externos mediante una seudo instrucción. En algunas
computadoras, las tablas de puntos de entrada y de referencias externas se combinan en
una sola.
La cuarta parte del módulo objeto contiene el código ensamblado y las constantes.
Esta es la única parte del módulo que se cargará en memoria para su ejecución. Las otras
cinco partes las usará el montador (linker) y serán descartadas antes de que comience la
ejecución.
La quinta parte del módulo objeto es la lista de reubicación. Como se ve en la figura
7-14, a las instrucciones que contengan direcciones se les debe sumar una constante de
reubicación. Como el montador (linker) no tiene manera de saber por inspección cuáles
palabras de la parte cuatro son datos y cuáles son instrucciones, esta tabla proporciona la
información sobre cuáles son las direcciones que hay que reubicar .La información puede
tomar la forma de una tabla de bit, con un bit por cada dirección potencialmente reubicable,
o una lista explícita de direcciones que han de re ubicarse.
La sexta parte es una indicación de fin de módulo ya veces contiene una información
redundante especial para descubrir errores mientras se lee el módulo y la dirección en la
que ha de comenzar la ejecución.
La mayor parte de los montadores (linkers) requieren dos pasadas. En la primera, el
montador (linker) lee todos los módulos objeto y construye una tabla de nombres de
módulos y longitudes. La otra, de símbolos globales, contiene todos los puntos de entrada y
las referencias externas. En la segunda pasada se leen los módulos objeto, se re ubican y se
enlazan uno a uno.

Tiempo de ligadura y reubicación dinámica

En un sistema de tiempo compartido, un programa puede cargarse en memoria


principal, ejecutarse durante un rato, volver a escribirse en memoria secundaria y luego
leerse de nuevo en la memoria principal para seguir por donde iba. En un sistema grande
con muchos programas, es muy difícil asegurar que un programa se lea de nuevo en las
mismas posiciones de memoria todas las veces.
La figura 7-16 muestra lo que ocurrirá si un programa ya re ubicado, como el de la
figura 7-14(b), se cargara en la dirección 400 en vez de hacerlo en la 100, donde el
ensamblador lo puso originalmente. Todas las direcciones de memoria son incorrectas.
Además, la información de reubicación ha sido descartada hace tiempo. Pero, aun cuando la
información de reubicación estuviera disponible, seria demasiado grande el costo de tener
que re ubicar todas las direcciones cada vez que el programa se vuelva a cargar.

277
El problema de mover programas que ya han sido ensamblados y reubicados está
íntimamente relacionado con el momento en que se hace la ligadura final entre los nombres
simbólicos y las direcciones absolutas de la memoria física. Cuando se escribe un programa,
contiene nombres simbólicos para las direcciones de memoria, como en SALTA LUGAR. El
momento en que se determina la dirección real de memoria correspondiente a LUGAR se
llama tiempo de ligadura. Hayal menos seis posibilidades para el tiempo de ligadura:
1. Cuando el programa se escribe.
2. Cuando el programa se traduce.
3. Cuando se liga el programa, pero antes de cargarse.
4. Cuando el programa se carga.
5. Cuando se carga un registro de base usado para direccionamiento.
6. Cuando se ejecuta la instrucción que contiene la dirección.

278
Si una instrucción que contenga una dirección de memoria se moviera después de la
ligadura, sería incorrecta (suponiendo que el objeto al que haga referencia se haya movido
también). Si el traductor produjera un módulo de carga absoluto como salida, la ligadura se
habría producido en el momento de la traducción y el programa debería ejecutarse en las
direcciones en las que el traductor esperaba que lo hiciera. El método de ensamblado que
se ha descrito en la sección anterior liga los nombres simbólicos con las direcciones
absolutas, por lo que el programa no funcionará si se mueve a direcciones diferentes
después del ensamblado, como se muestra en la figura 7-16.
Hay dos cuestiones relacionadas con esto. La primera se refiere al momento en que
los nombres simbólicos se ligan con direcciones virtuales; la segunda, al momento en que
se ligan las direcciones virtuales con direcciones físicas. Sólo cuando ambas operaciones se
hayan realizado, el proceso de ligadura estará completo. Cuando el ensamblador mezcla los
espacios de direccionamiento de los módulos objeto en un espacio único y lineal de
direcciones, está de hecho creando un espacio de direccionamiento virtual. La reubicación y
el montaje sirven para ligar los nombres simbólicos con direcciones virtuales específicas.
Esto es cierto tanto si se usa la memoria virtual como si no se usa.
Supongamos por el momento que el espacio de direccionamiento de la figura 7-
14(b) estuviese paginado. Está claro que las direcciones virtuales correspondientes a los
nombres simbólicos A, B, C y D ya han sido determinadas, aunque sus direcciones físicas de
memoria principal dependan del contenido de la tabla de páginas en el momento en que se
usen. Un módulo de carga absoluto es en realidad una ligadura de nombres simbólicos con
direcciones virtuales. Cualquier mecanismo que permita el cambio sin dificultad en el mapeo
entre direcciones virtuales y físicas de la memoria principal, facilitará el movimiento de
programas por la memoria principal, aunque ya hayan sido ligados a un espacio virtual de
direccionamiento. Uno de estos mecanismos es la paginación. Después de que un programa
se haya movido en la memoria principal, solamente habrá que cambiar la tabla de páginas,
no el programa en si.
Un segundo mecanismo es el uso de un registro de reubicación en tiempo de
ejecución, tal como el registro CS en las CPU de Intel. En las máquinas que usan este
método de reubicación, el registro siempre apunta ala dirección de la memoria física de
inicio del programa actual. A todas las direcciones de memoria se les suma el registro de
reubicación, por medio de hardware, antes de enviarlas a memoria. El proceso de
reubicación es por completo transparente al mecanismo es menos general que el de
paginación, ya que implica mover al programa completo como a una unidad (a menos que
haya registros separados de código y de datos, en cuyo caso se le debe mover como a dos
unidades). Es posible tener un tercer mecanismo en máquinas como las CPU 680xO, que
pueden referenciar memoria en forma relativa al contador de programa. Siempre que se
mueve un programa en la memoria, sólo se necesita actualizar el contador de programa.
Los programas cuyas referencias a memoria son en su totalidad relativas al contador de
programa o absolutas (v .g. , a direcciones absolutas en registros de dispositivos de E/S);
se dice que son independiente de la posición. Un procedimiento de este tipo se puede
colocar en cualquier parte del espacio de direcciones virtual, sin necesidad de reubicación.

Enlace dinámico

En el método de montaje analizado en la Sección 7.4.1, un programa debía .enlazarse


antes de su ejecución con todos los procedimientos potencialmente
necesarios. En una computadora con memoria virtual, no se aprovechan a fon- do sus
posibilidades si ha de realizar el proceso de enlace previamente a la ejecución. Muchos
programas tienen procedimientos a los que no llaman, salvo en circunstancias
excepcionales. Por ejemplo, los compiladores tienen procedimientos para traducir
sentencias raramente usadas y para tratar condiciones de error que acontecen pocas veces.
Un método más flexible para el enlace de procedimientos compilados por separado
consiste en enlazar cada procedimiento en el momento en que se le llama por primera vez.
A este proceso se le conoce como enlace dinámico. El cual fue utilizado en primera instancia
en el MULTICS y después en el OS/2. Como las dos implantaciones son en cierto modo

279
diferentes, se expondrán ambas.
En el MUL TICS existe un segmento asociado a cada programa denominado segmento
de enlace, el cual contiene un bloque de información para cada procedimiento que pudiera
ser llamado. Dicho. bloque se inicia con una palabra reservada para la dirección virtual del
procedimiento, seguida del nombre de éste en la forma de una cadena de caracteres.
Cuando se aplica el enlace dinámico, las llamadas a procedimiento del programa
fuente se traducen a instrucciones que direccionan en forma indirecta la primera palabra del
bloque de enlace correspondiente, como se muestra en la figura 7-17(a). El traductor
llena esta palabra con una dirección inválida o con un patrón de bits que fuerza un desvió.

Cuando se llame a un procedimiento situado en un segmento diferente, el intento de


direccionar con la palabra inválida causará un desvío al enlace dinámico. Este buscará en el
directorio de archivos del usuario un procedimiento compilado que tenga el mismo nombre
que el situado detrás de la palabra con la dirección inválida. Luego le asignará una dirección
virtual, normalmente en un segmento para él solo, y cambiará la dirección inválida por la
dirección virtual recién .asignada, como se indica en la figura 7-17(b). En seguida se

280
vuelve a ejecutar la instrucción causante de la falta de enlace, permitiendo que el programa
continúe desde donde estaba antes del desvió.
Todas las referencias al procedimiento que tengan lugar después se ejecutarán sin
causar falta de enlace, ya que la palabra indirecta contiene ahora una dirección virtual
válida. En consecuencia, sólo se hará uso del enlace dinámico la primera vez que se llame a
cada uno de los procedimientos.
En el OS/2, el esquema de enlace dinámicos más general que el de MULTICS. Un
programador de OS/2 no necesita saber los nombres de todos los procedimientos que su
programa, en última instancia, llamará. Considérese el ejemplo siguiente. En un sistema
distribuido de operaciones bancarias, una máquina central recibe solicitudes de terminales
distantes para llevar a cabo ciertas transacciones. Al momento de diseñar el sistema, se
esperaba que al evolucionar éste, se incorporaran nuevos tipos de transacciones.
Para permitir la evolución del sistema, se ha decidido con antelación que cada
transacción tenga un nombre y que cada una se lleve a cabo por medio de un procedimiento
del mismo nombre. El código ejecutable para este procedimiento se almacenará como un
archivo con el mismo nombre, en un directorio especial.
Cuando una terminal remota envía un mensaje a la computadora central, éste incluye
el nombre de la transacción. En seguida, el programa de transacción construye el nombre
de archivo que contiene el código relevante y realiza una llamada de sistema solicitando al
sistema operativo que localice el archivo y lo traiga a la memoria. Después, hace una
segunda llamada al sistema operativo para que busque y le proporcione la dirección de
inicio del procedimiento que necesita (el archivo puede contener varios procedimientos).
Teniendo ya esta dirección (en realidad un selector de segmento y un desplazamiento), el
programa principal llama al procedimiento. Las llamadas posteriores al mismo
procedimiento se realizan en la forma normal, sin necesidad de llamadas de sistema.
Debe quedar claro que este esquema hace posible incorporar nuevos procedimientos a
un programa ya probado, compilando simplemente el código objeto relevante y colocándolo
en alguna parte de un disco. Ni siquiera es necesario que el programa sepa por adelantado
en donde se encuentra el procedimiento, ya que esta información puede estar contenida en
el mensaje que se le envía. Tampoco se requiere que el programa detenga su ejecución y se
recompile.

281
CONCLUSIÓN

282
BOLILLA VI (Parte 1):
PERIFÉRICOS

283
INDICE

INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35

284
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102

285
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173

286
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239

287
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296

288
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309

289
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

290
INTRODUCCIÓN

291
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

PERIFÉRICOS
RESEÑA HISTÓRICA
La naturaleza ha dotado al ser humano de diversas habilidades entre las que merecen
destacarse la capacidad de abstracción y la posibilidad de realizar cálculos matemáticos.
Estas habilidades no hubieran progresado en la medida que lo han hecho si el hombre no se
hubiera visto obligado a realizar cálculos complejos mentales o con ayuda de sus dedos.
Debido a esto se vio obligado a ayudase de diversas maneras.
En la historia de la humanidad el ábaco fue la primera herramienta de cálculos
diseñada y construida por el hombre para ayudarse en la realización de operaciones
matemáticas.
Existen diversas variantes de instrumento según las diferentes zonas donde se ha
utilizado:
1. En Oriente se fabricaron los primeros ábacos que todavía se utilizan en algunos
países.
2. En Europa los griegos, posteriormente debido a intercambios comerciales con
otros pueblos.
3. En España el ábaco se utilizo hasta prácticamente el siglo XX pero con el
nombre de contador .
4. En Sudamérica también existieron herramientas que pudieron tener una
utilización similar, como el quipu de loS Incas.

INTRODUCCIÓN
Los periféricos son una serie de dispositivos que conectan a la unidad central del
sistema de la computadora con el exterior permitiendo:
1. Introducir en la computadora la información necesaria, en forma de ordenes de
comando y datos para realizar los procesos necesarios.
2. La comunicación interactiva de la computadora con los usuarios durante el proceso.
3. El envío al exterior de la unidad central del sistema de la computadora de los
resultados obtenidos tras los procesos de información realizados.

Los periféricos son traductores que se encargan de comunicar una computadora que
utiliza un alfabeto de solo dos caracteres con los seres humanos que manejan un alfabeto
con más caracteres.
La eficacia de un sistema informático depende de la velocidad de trabajo de sus
periféricos. Los periféricos se comunican con la unidad central de proceso a través de los
canales de transferencia de información, los buses.
La conexión entre los periféricos y la unidad central del sistema de la computadora se
realiza a través de adaptadores o interfaces.
La comunicación a través de protocolos de comunicaciones que compatibilizan la
transmisión de datos entre ambos. Existen básicamente dos métodos para la transmisión de
datos :
4. Serie: las diversas señales se transmiten bit a bit, una tras otra, sobre el mismo
cable físico.
5. Paralelo: todas las señales que integran una palabra o dato unitario se transfiere
simultáneamente a través de cables separados paralelos.

292
La conexión de los periféricos con la computadora se puede realizar de dos formas
diferentes:
• Línea compartida: Todos los periféricos se conectan a la unidad
central del sistema a través de una sola línea de comunicaciones.
• Radial o en estrella: cada periférico se conecta con la computadora a
través de su propia línea de comunicaciones.

Existen varios tipos de periféricos:


• Periféricos de entrada.
• Periféricos de almacenamiento de la información.
• Periféricos de salida.
• Periféricos de comunicación.

PERLFERICOS DE ENTRADA:
Los periféricos de entrada son subsistemas que permiten la introducción de
información y ordenes en el interior de la p .C .
Los periféricos de entrada de información son los más lentos del sistema informático
por una razón evidente: son manejados por el ser humano. Entre los dispositivos de
entrada se cuentan:

TECLADO:
El método más común de interacción con una computadora es el empleo del teclado,
es la unidad periférica de entrada de datos al sistema informático más universal. El teclado
transforma la pulsación de cada tecla en una señal electrónica particular que es reconocida
por la C.P.U.
Los teclados proporcionan varias respuestas ( desde duras hasta blandas) y tiene
varias disposiciones, dependiendo de su computadora y el modelo del teclado.
La mayoría proporciona el teclado "QWERTY" (debido al orden que siguen las teclas
alfabéticas de la primera fila), el más popular , grandes teclas etiquetadas con letras
romana y punto en relieve en las teclas F, J y 5 para que los programas de procesamiento
numérico puedan utilizar estas teclas y las cercanas para emular una calculadora ( en la
Macintosh, el punto en relieve está en las teclas D , Ky5).
En las PCs, los teclados se conectan a los circuitos de la tarjeta madre. La mayoría de
los teclados en las PCs son del tipo 101 (que brinda 101 tecla), aunque están disponibles
varios estilos con más o menos teclas especiales, diodos emisor de luz (LED) y otras
características, como cubiertas de plástico para aplicaciones industriales o de servicio de
comida.
Los teclados "Macintosh" se conectan al bus de escritorio apple (ADB), el cuál maneja
todas las formas de entrada de un usuario, desde la tabla digitalizadoras hasta los ratones.

Están disponibles tres teclados Macintosh:


• El apple estándar
• El apple extendido.
• El apple ajustable (puede separarse en dos secciones ajustables
a 30° grados)
El teclado se divide físicamente en tres bloque de teclas y un grupo de teclas
especiales:
1° “Teclas alfanuméricas”
Este grupo de teclas es similar al teclado de una maquilla de escribir estándar: las
teclas del alfabeto, signos de acentuación y puntuación los diez decimales y símbolos

293
especiales.
2° “Teclas de función”
Realiza un conjunto de operaciones especiales especificadas por el fabricante de la
computadora o de la aplicación informática que esté ejecutando en su momento. Las
ventajas de las teclas de función es órdenes a través del teclado.
3° “Teclas numéricas”
Son un bloque de teclas similares al de una calculadora para facilitar el trabajo de
introducción de datos y la realización de operaciones matemáticas. El bloque de teclas
numéricas tienen dos modos de funcionamiento principales: si la tecla NUM LOCK (bloqueo
numérico) está pulsada en el teclado, en la pantalla del sistema informático aparecerán los
dígitos impresos en cada tecla numérica, mientras no este pulsada, las teclas estarán en
modo de control del cursor , pudiéndose utilizar estas teclas para navegar por la pantalla de
la computadora.
4° “Tecla ENTER o INTRO”
Esta tecla se utiliza para indicar a la computadora que ha terminado de introducir
información en una línea
Si se esta trabajando en un programa de aplicación se realizará la acción que
corresponda, por ejemplo, en un procesador de textos el cursos pasará a la línea siguiente.
5° “Tecla CTRL”
Esta tecla se denomina control, y se usa en combinación con otras teclas.
Generalmente sirve para avisar al sistema operativo de que el usuario esta intentando
realizar una acción especial.
6° "Tecla ALT"
Esta tecla se denomina alternar , también es una tecla que provoca acciones
especiales de la computadora o de los programas que estén ejecutándose en ese momento.
Por Ejemplo, pulsando al mismo tiempo la tecla ALT y 164 se leerá en el monitor la letra ñ.
7° “Tecla ESC"
Se denomina escape. como su nombre indica permite "escapar" de algunos .procesos,
como la ejecución de un listado en la pantalla de la computadora, o de algunos programas
de aplicación comercial.

Existen varias tecnologías para la construcción de teclados de computadora, entre los


que se destacan:
• Teclados Mecánicos
• Teclados Electrónicos

TECLADOS MECÁNICOS :
Son más antiguos que los electrónicos y, en algunos casos, menos fiables y caros de
construir. Los teclados mecánicos presentaron un problema debido a que, por su tecnología
de construcción la parte mecánica de las teclas no efectuaba solo un contacto al pulsarla,
sino que existía un efecto rebote sobre la superficie del contacto eléctrico que enviaba varas
veces la señal al controlador del teclado.

TECLADOS ELECTRÓNICOS:
Solucionaron el problema del efecto rebote creando un retardo en el controlador para
eliminar las señales producidas por el mismo.

Cuidados y advertencias
Si bien el teclado es considerado un dispositivo no frágil, esta expuesto aciertos
riesgos que pueden alterar su normal funcionamiento.
Dentro del teclado existe una placa con un contacto electrónico para cada tecla. Al
presionar una de ellas, se acciona un contacto y la información se transmite a la
computadora a través de cables. Para que este mecanismo se desencadene normalmente
hay que tomar ciertas precauciones :
No es recomendable comer, ni fumar mientras se trabaja en la PC. El teclado tiene la
particularidad de "atraer" las migas y cenizas, estas se van depositando en los intersticios y

294
al acumularse, termina tapando los contactos, lo que provoca dificultades tales como letras
que no se marcan o se repiten y lentitud en la escritura.
Tampoco es una buena costumbre dejar la taza de café cerca del teclado o apoyada
sobre el gabinete, el derrame de cualquier líquido sobre el teclado puede anular el
funcionamiento de los contactos y facilitar al adherencia de suciedad, provocando problemas
como los recién mencionados.
Por otra parte, al quedar expuesto sobre el escritorio, el teclado se convierte en un
inevitable depositario del polvo ambiental. Por ello, se recomienda, cubrirlo con una funda
mientras no este en uso.
Si se desea limpiarlo superficialmente nunca emplee alcohol común o sustancias
solventes ya que puede dañar su mecanismo. En cambio, utilice alcohol isopropílico, un
aerosol de aire comprimido o simplemente un trapo húmedo-

MOUSE (RATON)
A fines de los 60 en California se desarrollo un dispositivo que consistió en una cajita
capaz de ajustarse en la concavidad formada por la palma de la mano ( ergonómicamente ).
El ratón es la extensión del dedo humano para señalar, tocar y escoger los objetos
que se muestran ella pantalla. El mouse es simplemente un controlador del cursos o
puntero que aparece en la pantalla del sistema informático al que se conecta.
Este posee un software asociado que relaciona las filas y las columnas de la pantalla
del sistema informático con un espacio situado en una superficie donde se sitúa el aparato.
Un decodificador convierte el movimiento del ratón en movimiento del cursos en la pantalla
de la computadora.
En el ratón se utiliza una bola de acero pesada, cubierta de goma, metida dentro de
una caja de plástico. Dentro de la caja hay dos ruedas dentadas que se friccionan contra la
bola de acero y que se mueven según se gire la bola a través de una superficie plana. Estas
ruedas son las que informan a los circuitos integrados del ratón los cambios de posición.
Suelen tener dos o tres botones para poder ejecutar las diferentes operaciones por
ejemplo: en el proceso de señalamiento y doble click para abrir un documento o en la
operación de hacer click y arrastrar en la que el botón del ratón se mantiene oprimido, para
arrastrar un objeto o para seleccionar una opción en el menú desplegable.
Existen dos tecnologías principales en fabricación de ratones: Mecánicos y Ópticos.

1- Ratones Mecánicos:
Los ratones mecánicos constan de una bola situada en su parte inferior, la bola, al
moverse el ratón, roza unos contactos en forma de rueda que indican el movimiento del
cursor en la pantalla del sistema informático.
2- Ratones Ópticos:
Los ratones ópticos tienen un pequeño haz de luz láser en lugar de la bola rodante de
los mecánicos. un sensor óptico situado dentro del cuerpo del ratón detecta el movimiento
del reflejo al mover el ratón sobre el espejo e indica la posición del cursor en la pantalla de
la computadora.
Una limitación de los ratones ópticos es que se ubican sobre una superficie que refleje
el haz de luz.

295
Tipos de ratones
Ratones Inalámbricos.
Funcionan en base al envío de una señal infrarroja o una onda de radio a una unidad
receptora la cual es la encargada de enviar la información a la tarjeta correspondiente.

Ratones Estacionarios.
Estos se basan en la tecnología Marble Sensing, que posibilita el usuario un alto grado
de precisión y libertad en los desplazamientos del cursor (Tracking), esto se debe a que a
diferencia de los traskballs y ratones tradicionales, no incorpora elementos mecánicos y por
consiguiente no requiere de mantenimiento. La tecnología Marble Sensing permite la
medición óptica del movimiento mediante un sistema electrónico que actúa como una
cámara, de manera que es capaz de calcular el desplazamiento del cursor

PANTALLAS TÁCTILES:
Este dispositivo se usa en espacios reducidos y /o en lugares abarrotados de objetos,
donde el movimiento del mouse se toma dificultoso, su aspecto es agradable y fino y su
ergonomía se adapta de manera cómoda y natural. Su funcionamiento es simple para ello
basta con posesionar un dedo sobre el pequeño pad y desplazarlo por su superficie, que
hace las veces de pantalla, no acepta otros objetos como lápices o puntos. El click se puede
hacer tanto presionando las dos pequeñas teclas ubicadas sobre el pad como ejecutando un
leve golpe sobre su superficie, no requiere mantenimiento físico , al no experimentar
continuos movimientos con el uso, su cable presupone una mayor vida útil.
Una de las desventajas es que su precisión no es como la del mouse pero la mayor
dificultad se registro al intentar manejar el dispositivo con la mano húmeda, el puntero se
desplaza a la deriva por la pantalla.

BOLAS GIRATORIAS:
Son similares a los ratones, excepto que el cursor se mueve utilizando uno o más
dedos para hacer girar la bola, no necesitan una superficie plana como el ratón esto es
importante para ambientes reducidos y computadoras portátiles de baterías. Las bolas
giratorias tienen al menos dos botones: uno para hacer click o doble click y otro para
seleccionar menú y arrastrar objetos.

ESCANER
Son lectores ópticos de imágenes. No es fácil almacenar imágenes dentro de la
computadora, la única forma fácil y rápida de hacerlo es utilizando un periférico de este
tipo. Los escáner leen imágenes en dos dimensiones y las convierten en bits.
El principio de funcionamiento de un escáner es la digitalización, es decir, la
conversión de una información analógica a datos comprensibles por la P.C. para ello se vale
de una serie de componentes internos que posibilitan este objetivo. Una fuente de luz va
iluminando, línea por línea la imagen o documento en cuestión y la luz reflejada en la
imagen es recogida por los elementos que componen el CCD (Charged-Couple Device)
dispositivo que convierte la luz recibida en información analógica. Por último un DAC
(Digital- Analog Converter) convierte los datos analógicos en valores digitales.
Los escáner se asocian a un tipo de software especialmente diseñado pata el manejo
de este tipo de información en código binario llamados OCR (Opticals Character Recognition
o reconocimiento óptico de caracteres); que permiten reconocer e interpretar los caracteres
de teclados por el escáner en forma de una matriz de puntos e identificar y determinar que
caracteres son los que el subsistema está leyendo .
Un caso particular de la utilización de un escáner ~ aunque representa una de sus
principales ventajas, es la velocidad de lectura e introducción de la información en el
sistema informático con respecto al método tradicional de introducción manual de datos por
medio del teclado, llegándose a alcanzar los 1200 caracteres por segundo.

Profundidad de color
El parámetro expresado en bits, indica el número de tonalidades de color que un píxel

296
puede adoptar; lo normal en la actualidad es un valor de 24 bits por píxeles. Los 24 bits de
color se han convertido en un estándar .
Hay algunos escáner capaces de utilizar 30 o incluso 36 bits de color, pero la mayoría
lo hacen a nivel interno, para disminuir el intervalo entre una tonalidad y la siguiente, pero
solamente envían a la PC 24 bits.

Tipos de escáner:
Existen tres tipos :
• Escáner de mano.
• Escáner de sobremesa.
• Escáner de rodillo.

Escáner de mano:
Es la alternativa más económica, puesto que elimina gran parte de los mecanismos
que encarecen a los dispositivos de sobremesa: más correctamente el de tracción y que es
el usuario el que mueve el escáner sobre la imagen o documento a digitalizar .
Ventaja:
• Es económico.
• Ahorra espacio
Desventajas:
• La poca fiabilidad en cuanto al proceso ya que depende de la
habilidad y el pulso del usuario y mover el escáner de forma
demasiado lenta o rápida puede afectar el resultado final.

Escáner de Sobremesa:
Representan la alternativa más profesional y de calidad, aunque también
más cara y realmente son los que más se están extendiendo. A modo de
pequeñas fotocopiadoras, el documento o imagen se coloca sobre un cristal
bajo el cual la lente luminosa se desplaza, digitalizando el documento.
Ventajas:
• Permite obtener una gran calidad y fiabilidad.
Desventajas:
• Su tamaño .
• Su precio.

Escáner de Rodillo:
Es una interesante alternativa, a medio camino entre los dos anteriores, como su
nombre lo indica utiliza como mecanismo de tracción un rodillo que recoge
automáticamente el documento y lo digitaliza. La calidad obtenida no es tanta como los
modelos de sobremesa pero es una excelente opción para usuarios con determinadas
necesidades.

Calibración
Estos dispositivos necesitan ser calibrados, muchos escáner de mano incluyen una
hoja con diferentes tonalidades de color, que debe ser digitalizado para que nuestro
periférico, establezca los patrones necesarios. Aunque todos los modelos permiten la
calibración cada vez se utiliza con mayor frecuencia-

LECTORES DE CODIGO DE BARRA


Uno de los medios más modernos y que está tomando cada vez más auge, de
introducir información en una computadora es por medio de una codificación de barras

297
verticales.
Cada vez son más los productos que llevan en su etiqueta uno de estos códigos
donde, por medio de las barras verticales de color negro, se consigue una identificación
para todo tipo de productos.
Esta codificación ha sido definida de forma estándar por la Organización de Estándares
Internacionales y, en ella, cada una de las líneas tiene un determinado valor dependiendo
de su presencia o ausencia y también de su grosor .
Los lectores de código de barras captan los datos de entrada al sistema informático al
hacer pasar delante de un censor óptico la serie de barras verticales codificadas. El principal
uso que se le da a estos subsistemas es el de control de mercaderías, como así también el
control de acceso de personal en instalaciones de distinta índole.
Los censores lectores de barras pueden estar fijos en una estructura de diferentes tamaños
y tecnologías, como pueden ser los que tienen en las cajas de algunos supermercados, o
bien en forma de lápiz óptico .
El censor lector de las barras convierte el código de barras en impulsos eléctricos que
representa la información contenida en la etiqueta. A su vez, un decodificador convierte los
pulsos eléctricos en código binario para su tratamiento en la computadora.

TABLETA DIGITALIZADORA
Son herramientas que permiten el manejo del cursor a través de la pantalla del
sistema informático y facilitan una importante ayuda en el tratamiento de los comandos de
órdenes en aplicación de CAD / CAM (Diseño asistido por computadora).
Las tabletas digitalizadoras convierten una serie de coordenadas espaciales en un
código binario que se introduce en la computadora. Estas coordenadas serán manejadas
posteriormente por programas de dibujo, ingeniería, etc.
La tableta suele tener impresos en su armazón pulsadores con símbolos dibujados
para ejecutar de modo directo comandos que agilizan el trabajo de manejo de software.
Estas tabletas poseen una resolución de alrededor de una décima de milímetro y
pueden manejar gráficos en dos y tres dimensiones.
Una posibilidad de manejo muy intuitiva convierte a las tabletas digitalizadoras en
unas herramientas muy útiles y polivalentes en los sistemas informáticos de diseño y
manejo de gráficos.
Existen diversas tecnologías de construcción de tarjetas, pudiendo ser estas:
• Tabletas Mecánicas
• Tabletas Electrónicas.
La mecánicas, debido al desgaste producido en sus componentes por el uso
continuado, son menos precisas y más delicados de manejar que las electrónicas, siendo
esta, por ello, la más extendidas comercialmente en el mercado.

LECTORES DE TARJETAS MAGNETICAS


Los lectores de tarjetas magnéticas leen la información impresa en una banda
magnética de manera semejante a como la grabadora lee la música de la cinta.
Tras leer la información de la banda magnética de forma similar a como lee la
información la cabeza lectora de un disco duro, el lector de tarjetas envía los datos n forma
de bit a la unidad central del sistema de la computadora para su tratamiento.

LAPIZ OPTICO:
Los lápices ópticos son dispositivos de introducción de datos que trabajan
directamente con la pantalla de la computadora, señalando puntos en ellas y realizando
operaciones de manejo de software. Para operar con el lápiz óptico se coloca este sobre la
pantalla del sistema informático. En el momento en el que el cañón de rayos catódicos de la
pantalla barre el punto sobre el que se posiciona
El lápiz, este envía la información aun software especial que la maneja. El
microprocesador calcula cual es la posición sobre la pantalla de la computadora permitiendo
manipular la información representada en ella. Los lápices ópticos permiten la introducción
de datos, el manejo del cursor, etc., en la pantalla de la computadora. Son una asistencia

298
para la limitaciones de los teclados en algunas aplicaciones, sobre todo las que no son de
gestión puras ( creativas, etc.).

PERIFERICOS DE ALMACENAMIENTO:
Los periféricos de almacenamiento, llamados también de memoria auxiliar, son unos
dispositivos en los que se almacenan, temporal o permanentemente, los datos que va a
manejar la CPU durante el proceso, y que no es posible mantener en la memoria principal.
Los periféricos de almacenamiento se pueden clasificar de acuerdo al modo de acceso
a los datos que contienen:
• Acceso Secuencial: debe seguir una secuencia donde la información
que requiere, puede estar al principio o al final del soporte que lo contiene, es decir
que si o si debe recorrer todo el espacio ocupado hasta donde se encuentre la
información solicitada-
• Acceso Aleatorio: el elemento de lectura accede directamente a la
dirección donde se encuentra almacenada físicamente la información, sin tener que
pasar previamente por la entre el principio de la superficie de grabación y el punto
donde se almacena la información buscada.

Es evidente la reducción de tiempo que presenta el acceso aleatorio frente al


secuencial, pero la utilización de la tecnología de acceso secuencial se debió ala
implementación de la cinta magnética, anterior a la puesta en marcha operativa del primer
periférico de acceso aleatorio .
En la actualidad, las cintas magnéticas tradicionales se están relegando poco a poco a
simples soportes de almacenamiento de datos históricos del sistema informático o de
procesos periódicos de copias de seguridad.

Discos
Los discos son dispositivos que están fabricado en un material rígido o flexible y se
utilizan habitualmente como periféricos de apoyo al proceso de la computadora, siendo el
principal medio de almacenamiento de la información que utilizan las computadoras. El
acceso a la información almacenada se realiza en forma aleatoria.
Habitualmente se les conoce como memoria masiva.
La clasificación de los tipos de discos magnéticos es de carácter físico. Se diferencian
entre sí en el soporte sobre el que se deposita la capa de material magnético. Los discos
magnéticos se clasifican en:
• Discos Flexibles (floppy disks )
• Discos Duros (hard disks)

Una computadora personal posee una o dos unidades para trabajar con discos
flexibles. A estas unidades de trabajo se las denominan disqueteras. El tamaño de los discos
que se utilizaran en las disqueteras puede ser de 31/2 pulgadas (unidad "A") o de 5 1/4
pulgadas (unidad "E").
Los discos duros generalmente se denominan unidad "C". Los discos duros tienen
mayor capacidad de almacenamiento sobre el mismo espacio que los discos flexibles,
debido a que aquellos tienen una mayor densidad de pistas por pulgada.
La velocidad de acceso a la información es considerablemente mayor en los discos
duros que en los disquetes debido a la mayor velocidad de giro de los platos de los discos
duros ya que no existen fricción entre las cabezas lectoras y los platos del disco.
La principal ventaja que poseen los disquetes frente los discos duros es su
portabilidad.

Discos flexibles
Son unos de los componentes más delicados del sistema informático, debido a que la
portabilidad, precisamente su ventaja, implica que sean muy vulnerables a los malos tratos
por una manipulación descuidada cuando se encuentran fuera de las disqueteras de la
computadora.

299
Actualmente existen dos formatos de discos flexibles que se diferencia según la
longitud de su diámetro: los de 5 1/4 pulgadas y los de 31/2 pulgadas. Es este ultimo
formato el que se está imponiendo en estos momentos por su mayor seguridad y facilidad
de manejo.
Las diferencias entre los dos formato s, además del tamaño ya reseñado, se presenta
en:

Fiabilidad del soporte.


Los discos flexibles con formato de 31 12 pulgadas están mucho mejor protegidos por
un plástico rígido y un escudo, plástico o metálico, que protege una ranura existente en la
superficie del material protector del disco (la ventana de lectura) que los discos de 5 1 14
pulgadas, envueltos en un plástico de mucho menos grosor y sin protección en la ventana
de lectura

Facilidad de manejo y almacenamiento.


La mejor protección de los discos que tienen formato de 31/2 pulgadas, su facilidad
para el manejo habitual y las menores restricciones para su almacenamiento, mientras no
sea utilizado el soporte físico, le dan importantes ventajas sobre los discos de 5 114
pulgadas.

El material sobre el que se construyen los disquetes flexibles es un plástico, mientras


que, en los discos duros, el soporte físico es una base de aluminio.
La lectura de la información grabada en los discos flexibles se realiza mediante una
cabeza lectora que entra en contacto directo con la superficie del disco a través de la ranura
de la funda de protección.

1. Disco flexible de 5 1/4 pulgadas


Los disquetes de 5 1/4 pulgadas se protegen mediante una cubierta de plástico cuyo
interior es antiestático y autolimpiante.
Poseen un agujero central que le sirve para encajar en el mecanismo de rotación, un
pequeño agujero de control que sirve para detectar el comienzo de cada pista y una
abertura en la cubierta de plástico que le permite ala cabeza lectora el acceso a los discos.
2. Disco flexible de 3 1/2pulgadas
Poseen una cubierta de plástico mucho más rígida que la de los de 5 1/4, ello aumenta
en gran medida la seguridad de los datos que contienen.
El mecanismo de rotación se engancha a dos muescas situadas en la parte inferior de
un eje de rotación metálico, que es la única parte del disco que sobre sale del exterior .
En la actualidad se están desarrollando otros formatos de discos flexibles más
pequeños que los existentes, que oscilan entre una o dos pulgadas, aunque todavía no se
estén comercializando.

Disco duro
El primer disco duro surge a mediados de los años cincuenta diseñado por mM. Tenia
un tamaño aproximado de un televisor y sólo podía almacenar 5 megabytes de datos; su
tiempo medio de acceso era aproximadamente de medio segundo.
En la actualidad, un disco duro con una capacidad de un gigabyte cabe en la palma de
la mano y su tiempo de acceso es de unos 12 milisegundos.
Los discos duros son el principal subsistema de almacenamiento de información en los
sistemas informáticos.
El interior de un disco duro se compone de unas o varias placas cuya superficie está
magnetizada y una serie de cabezas lectoras, una para cada una de las diferentes
superficies en que se divide cada placa.
La superficie útil total del disco duro se divide en:

300
• Pistas: Se denomina pistas a cada una de la circunferencia de placa
del disco. Las pistas se dividen en pequeños espacios de similar
tamaño donde se graba la información. En los discos la información
se graba en serie, ya que las pistas tienen un bit de ancho, en las
cintas, la información se graba en paralelo puesto que están
compuestas de 9 pistas paralelas.
• Sectores: El sector la mínima cantidad de información que se
maneja al realizar un acceso al disco.
La división del disco se realiza para hacer más rápido el acceso a la
información almacenada en la superficie, ya que para la cabeza
lectora es mucho más sencillo saber que la información a localizar
está, por ejemplo, en la pista 3 sector 5 que tener que buscar esa
información por toda la longitud de la pista 3 .
• Cilindros: El cilindro está formado por la totalidad de las superficies
útiles existentes en las diferentes placas que forman el disco duro. La
razón por la que se realiza esta división es que la superficie de una
placa del disco es limitada, pero si se instalan varias placas
superpuestas dentro de la misma carcasa del disco duro, cada una
con su dispositivo de lectura-escritura se aumenta la capacidad de
almacenamiento del disco.
El disco duro que se instala en la unidad central del sistema de una microcomputadora
se denomina Winchester .
Esta tecnología se caracteriza porque la cabeza lectora no toca físicamente al disco
duro. La principal ventaja del método Winchester es que ni 1a superficie del disco ni la
cabeza de lectura sufren desgaste por el razonamiento, por ello es mucho mayor el tiempo
de vida medio de estos subsistemas de almacenamiento.
La carcaza es de un material rígido, metálico o plástico de gran dureza que sirve para
proteger físicamente los discos y cabezales situados en el in6terior del subsistema.
Existen dos tipos principales de discos duros:
1. Discos fijos:
Los discos fijos se fabrican dentro de una carcasa sellada de la que
no se puede extraer. El montaje de los componentes internos del
disco se realiza en la fabrica con unas condiciones muy estrictas de
limpieza y aislamiento para evitar la entrada de polvo que pudieran
deteriorarlo. Por ello nunca debe abrirse la carcasa de protección de
un disco duro excepto por personal técnico en las condiciones
adecuadas.
2. Disco removibles:
Los discos removibles están montados en un contenedor, también
sellado, que ,les permite entrar y salir de unos habitáculos
especiales. Estos habitáculos están situados en la carcasa de la
computadora o bien conectados a ésta por medio de un cable
interfaz.

Discos opticos:
Los discos ópticos son un medio de almacenamiento de información que permite una
mayor flexibilidad, seguridad y capacidad de almacenamiento que los subsistemas
convencionales de almacenamiento magnético (disquetes y cintas). Su base técnica es
similar ala de los "compact disks" (disco de música) pudiéndose almacenar alrededor de 600
megabytes de información por cada disco.

301
En estos momentos la principal función de los discos ópticos es la distribución
comercial de software debido a su gran capacidad de almacenamiento.
Existen dos tipos diferentes de discos ópticos, dependiendo de la posición del escrito o
no sobre el disco:

1. Técnica láser:
La técnica láser graba la información agujereando, mediante un rayo,
un soporte sensible a su acción y lee, mediante un rayo similar, la
información contenida en el soporte. Como los agujeros son
permanentes, la información grabada también es permanente. Cada
posición de un agujero es un bit que tomará uno de los dos valores
posibles del código binario.
2. Técnica magneto-ópticas:
Las técnicas magneto-ópticas se basan en un material de una
superficie magnética que al ser calentado a gran temperatura por el
láser e inducido por una corriente eléctrica cambia su polarización
magnética y se almacena la información.
La ventaja de esta seguridad técnica es la no destructividad, el láser no realiza
agujeros como en el caso anterior, pudiéndose grabar información varias veces sobre la
misma superficie.

Cintas magneticas:
Las cintas magnéticas son el tipo más elemental de los periféricos destinados al
almacenamiento de datos. Fueron el primer subsistema que utilizó un medio magnético
como soporte de almacenamiento masivo de información.
En su origen las cintas magnéticas se utilizaron como unidades de almacenamiento y
apoyo al proceso de información, de la misma manera que ahora se utilizan los discos, si
bien en la actualidad, debido a sus limitaciones, se utilizan generalmente sólo como soporte
de copias de seguridad.
La primera unidad de cinta se comercializó a primeros de los años cincuenta, poseía
una capacidad de almacenamiento de 1,44 megabytes un tamaño similar al de un disquete
de 31/2 pulgadas. El soporte físico sobre el que se construye la cinta es una tira de plástico
de media pulgada (1,25cm) de ancho y unos 800 metros de largo sobre la que se deposita
una capa de un material magnético donde se realiza la grabación y lectura.
La principal ventaja de utilizar este tipo de soporte es su bajo costo. La diferencia
entre las cintas magnéticas y el disco es el tipo de acceso, es decir , en las cintas
magnéticas el acceso es puramente secuencial mientras que en el disco el tipo de acceso es
de forma aleatoria.
El inconveniente es su lentitud, comparada con los demás medios de almacenamiento
actuales, también es que no puede utilizar toda su longitud para almacenar datos.

DVD:
La cinta de video permitió a los poseedores de aparatos reductores/ grabadores poder
ver y grabar películas y programas de TV .
Uno de los problemas a los que se enfrentaron en un principio fue la existencia de dos
formatos incompatibles entre sí: VHS y Betamax. Al final la batalla la ganó el sistema VHS
por el gran número de películas que se lanzaron en dicho formato ya pesar de que la
cantidad de imagen y sonido era inferior ala ofrecida por Betamax.
Para solucionar esta carencia se creo el Láser Disk. La cantidad era superior ,el sonido
era equiparable al del Compact Disk, los discos duraban más, y se podía acceder a
diferentes secciones de la película.
Los discos eran demasiados grandes, había que darles la vuelta y sobre todo, no se
podía grabar. Los fabricantes volvieron a digitalizar y comprimir las películas mediante
tecnología MPEG-1 , lanzaron al mercado el video-cd, que ofrecía gran calidad de imagen y

302
sonido sobre un soporte mas extendido como era el CD. La idea de formato CD era buena
pero se necesitaba conseguir mayor calidad a base de aumentar la capacidad de los discos.
En 1994 surgieron dos propuestas diferentes entre si: Toshiba y Time Warner (entre otras)
presentaron su proyecto de un disco de doble cara llamado SD (Super Density), mientras
que Philips y Sony hicieron lo propio el MMCD (multimedia CD) pero con un disco de una
sola cara aunque con dos capas.
Luego surgió el disco de doble cara ya la vez de doble capa llamado Digital Vídeo Disk
o DVD. Poco después, y viendo el potencial que podría tener en el mundo de la informática,
el nombre paso a ser digital Versatile Disk. El cambio del nombre se debió a que no solo
serviría para almacenar vídeo sino que también podría almacenar datos y sonido .

Prestaciones del DVD:


El disco "básico" de DVD consta de una sola cara y una sola capa (equivalente a 4,7
Gb de datos), lo que ya de por si le permite almacenar 133 minutos de vídeo de alta
calidad, tres pistas de sonido Dolby Digital y cuatro conjuntos de subtítulos para otros
tantos idiomas. Si además se hace uso de las dos caras y las dos capas se llega ya alas 8
horas de vídeo, 8 idiomas simultáneos y 32 subtítulos diferentes.
Al ser un soporte óptico las películas no se deterioran con el uso, y uno siempre
obtiene la máxima calidad en pantalla. Incluso mantiene la compatibilidad con los CD de
audio, que podrán escucharse sin problemas en cualquier reproductor .
Debido a la gran capacidad de almacenamiento permitirá su uso como backup o copias
de seguridad.

El disco por dentro:


Dado que en un CD-ROM podían almacenarse 680 Mb y el DVD llega a almacenar 17
Gb ha hecho falta almacenar la información de forma diferente para dar cabida a tanta
cantidad de datos.
Lo primero que se ha hecho ha sido reducir y compactar el tramado de pits o puntos
que se asientan sobre la superficie del disco; en el DVD el tamaño de estos puntos se ha
visto sustancialmente reducido, así como la distancia existente entre estos dando lugar a
una mayor densidad de grabación en un mismo espacio. Para leer estos micro-puntos hace
falta un láser de menor grosor que el convencional se pasa de unos 780 mm de longitud de
onda del CD-ROM a los de 635 a 650 mm del DVD.
Para mejorar el enfoque y la calibración se ha sustituido el haz infrarrojo por un haz
rojo. Al reducir el grosor de la capa de grabación a la mitad se ha permitido dotar a un
mismo disco de dos caras y se ha dividido cada cara en dos capas diferentes.

La compresión MPEG-2:
Al igual que sucede con el video-cd o el CD-I ,la imagen se encuentra comprimida
pues de no ser así se necesitaran 700 Mb. para almacenar únicamente 6 minutos de vídeo.
La diferencia es que en esta ocasión se ha optado por la compresión MPEG~2 bastante mas
avanzada que su predecesora .A pesar de que el concepto que envuelve a la norma MPEG-2
es similar ala MPEG-l se han incluido extensiones para cubrir un rango de aplicaciones mas
amplio como la cuantizacion no lineal, la división de la señal de vídeo en dos o mas canales
a diferente resolución o la inclusión de canales de datos diferenciados. Al hacer uso de la
Tecnología de comprensión MPEG se llega a una cantidad que ronda el medio megabytes
por segundo.

El futuro del DVD:


El DVD va a permitir la escritura de discos por medio de unos grabadores llamados
DVD-R.
La utilidad de estos discos en el campo de la informática es evidente, pero no lo es
tanto en el campo del vídeo domestico: un usuario solo opondría grabar una sola vez en
cada disco, y dado que su especificación solo permite una capacidad de 2,6 Gb la duración
se ve limitada a solo una hora de vídeo.
y es aquí donde entra en escena el DVD-RAM sobre los diferentes metales en los

303
discos se puede sobre escribir cerca de 1000 veces.

PERIFERICOS DE SALIDA:
Los periféricos de salida son las unidades del sistema informático a través de las que
la computadora entrega información al mundo exterior .
La tecnología de los periféricos de salida ha evolucionado mucho desde que la
computadora entregaba su respuesta en una cinta o en una hoja de papel. En la actualidad,
sé esta experimentando con periféricos de salida mucho más intuitivos y fáciles de
comprender para el hombre como los sintetizadores de voz, etc.

PANTALLAS DE SISTEMAINFORMATICO (Monitor):


Es el periférico más utilizado en la actualidad para obtener la salida de las operaciones
realizadas por la computadora. Las pantallas de los monitores muestran una imagen del
resultado de la información procesada por la computadora.
El tamaño de la pantalla de computadora más habituales entre los actuales sistemas
microinformáticos suelen ser el de 14 pulgadas, si bien existen tamaños de pantallas
diferentes para sistemas informáticos especializados, por ejemplo 21 pulgadas para
sistemas informáticos de autoedición. Los sistemas informáticos portátiles suelen tener
tamaño de entre 9 y 14 pulgadas.
La imagen formada en la pantalla de la computadora tiene una unidad elemental
llamada pixel. Los pixels del monitor forman una matriz de puntos de luz que dibujan la
imagen de cada uno de los caracteres que aparecen en la pantalla de la computadora.
Los colores que pueden aparecer en la pantalla de un sistema informático están
determinados por la paleta de colores. Las paletas oscilan entre los cuatro colores básicos
de la CGA y 256.000 colores de la SVGA.
Las pantallas de las computadoras pueden tener varios formatos entre los que se
pueden destacar:

1. Pantallas de computadoras de rayos catódicos:


Este tipo de pantallas de computadora son similares a las pantallas del televisor, pero
se diferencian de manera importante en su modo de funcionamiento.
Las pantallas de computadora de rayos catódicos son el tipo de tecnología de pantalla
de sistemas informáticos más extendidos en la actualidad entre las computadoras
comerciales.
Las pantallas de computadora de rayos catódicos pueden ser monocromas ( de un solo
color, normalmente verde, blanco o ámbar) o policromas. En estos momentos casi
todos los sistemas informáticos comerciales se configuran con pantallas de color .

2. Pantallas de computadora de cristal líquido:


Las pantallas de computadora de cristal líquido se utilizaron en algunos sistemas
informáticos portátiles por su mayor manejabilidad y menor tamaño que las pantallas
de rayos catódicos.
El mayor inconveniente de este tipo de pantallas de computadora era que debían ser
monocromas porque no podían manejar color.
En la actualidad se puede ver sobre todo en algunos tipos de calculadoras.

3. Pantallas de computadora de plasma:


Son el tipo de pantallas que se están imponiendo actualmente en los sistemas
informáticos portátiles, puesto que tiene las misma ventajas que las anteriores,
alcanzando una mayor definición y la posibilidad del color.
El tamaño lógico de las pantallas de los sistemas informáticos se determinan de forma
distintas en dos diferentes modos de trabajo vistos anteriormente en el apartado de
las tarjetas gráficas:
Modo de texto: Las pantallas del sistema informático sólo pueden mostrar los 128
caracteres definidos por el código ASCII, aunque algunas pantallas de computadora
pueden mostrar hasta 256 caracteres por el modo extendido de dicho código.
El tamaño lógico de la pantalla de los sistemas informáticos se mide por el número de

304
filas y el de columnas de caracteres que pueden representar en la pantalla de la
computadora. El tamaño más expendido es el de 24 o 25 líneas y 80 columnas.
Modo Gráfico : La pantalla del sistema informático se divide en una serie de punto de
información que aparece en su superficie.
El tamaño lógico de la pantalla de la computadora está directamente relacionado con
la cantidad de información en forma de puntos por filas que proporciona la tarjeta
gráfica conectada a la pantalla del sistema informático. El número de punto puede
llegar los 1280 puntos por 1024 filas en las tarjetas gráficas SVGA.
Es evidente la mayor potencia del medio gráfico que el modo de texto, por ello, en la
actualidad, prácticamente todas las tarjetas controladoras de los subsistemas de vídeo
de las computadoras trabajan en modo gráfico.

Impresoras
Su función en el sistema informático es obtener una copia en papel de la información
existente en memoria o en disco.
Para que una impresora pueda funcionar correctamente debe estar en posición ON-
LINE, lo que quiere decir, que se encuentre en líneas con la computadora a la espera de
recibir datos que el usuario a solicitado imprimir .
La introducción de circuitos integrados en los mecanismos de las impresoras a
permitido una mayor flexibilidad y potencia con respecto a las primeras teletipos
completamente electromecánico que actuaban como periféricos de salida en algunos
sistemas informáticos antiguos.
La instalación de memoria intermedias y otras de ayudas electrónicas ha ayudado a
mejorar los subsistemas de impresión al descargar partes de las tareas de impresión desde
la C.P.U. en estos controles internos de la impresora.
Dependiendo de su tecnología de construcción, las impresoras pueden dividirse en:
• Impresoras con cinta entintada.
- Impresoras de margaritas
- Impresoras de bolas.
- Impresoras de agujas.
• Impresoras sin cinta entintada.
- Impresoras térmicas
- Impresoras de inyección de tintas
- Impresoras láser.
- Impresoras láser color.
- Impresoras de películas gráficas.

Impresoras con cinta entintada:


La principal característica de las impresoras de cintas entintadas es un método de
impresión: Una cinta humedecida con tinta que golpea contra el papel por un tipo metálico
o un grupo de agujas formando un carácter .
Este tipo de impresora son una evolución tecnológica de los antiguos modelos de
máquinas de escribir donde se han mejorado las prestaciones de velocidad y de forma de
impresión.
Sus principales ventajas son el bajo costo y la facilidad de construcción, y sus
principales inconvenientes son su lentitud y el ruido que causa al golear sobre la cinta para
conseguir la impresión.
Es un tipo de impresora antiguo que ha sido retirada de algunos lugares por su
lentitud.
Su mecanismo se compone de una rueda alrededor de la cual están colocados los
caracteres alfanuméricos que se pueden imprimir .
La impresión se hace cuando una cápsula que tiene un relieve del tipo a imprimir se
encuentra enfrentada al papel. Un pequeño punzón golpea contra la cápsula y así al
martillar el tipo se imprime el carácter deseado.

Impresora de Bola:

305
Son similares alas impresoras de margaritas pero de mejor calidad. Los caracteres se
sitúan sobre una esfera metálica que posiciona al carácter en el punto de impresión y
golpea ala cinta entintada para imprimirlo.

Impresoras de agujas:
En las impresoras de agujas el cabezal esta formado por 7 o 9 agujas que golpean una
cinta entintada entre ésta y el papel, cada una de ellas tiene la posibilidad de un cierto
movimiento horizontal. Con esta capacidad se puede generar matrices de 7 por 5 o 9 por 7
puntos con los que se forman los diferentes caracteres.

Impresoras sin cinta entintadas:


Se caracterizan por la tecnología de su método de impresión al no necesitar una cinta
humedecida en tinta para imprimir.
Al no producir un impacto para realizar la impresión del carácter, estas impresoras son
mucho más silenciosas. Permiten su uso en lugares de trabajos sin equipos especiales de
protección acústicas.
La disminución de los preciso de este tipo de impresoras han determinado su amplia
difusión en el mercado.

Impresoras térmicas:
El método es similar a las aguja, pero se diferencian en que, en lugar de utilizar un
papel normal, utilizan un papel especial termo sensible y en lugar de las agujas utilizan
unas resistencias eléctricas que al calentarse y apoyarse sobre el papel, van generando loS
caracteres.
Esta tecnología ha ido retirándose poco a poco del mercado debido a que el paso del
tiempo, la luz y, sobre todo, el calor afectaban mucho al papel termo sensible,
deteriorándose con el tiempo. Aunque en la actualidad es comúnmente utilizada por los
equipos de fax.

Impresoras de inyección de tinta:


Las impresoras de inyección de tinta, también llamada chorro de tinta, utilizan una
especie de cañón a través del cual se envía un chorro de tinta líquida hacia la hoja de papel
donde se va a realizado se va a realizar la impresión. Para poder controlar la inyección de la
tinta están situadas a cada lado de la boca del cañón de tinta unas placas magnéticas que
controlan el chorro de tinta disparado por el cañón hacia el papel para formar el carácter .

Impresoras láser:
El fundamento de este tipo de impresoras es un láser de baja potencia que genera un
rayo que es manejado por un elemento de control que permite o bloquea el paso de la luz.
Un disco de espejo desvía al rayo barriendo repetidamente el tambor fotoconductor,
quedando los caracteres trazados eléctricamente sobre el tambor . Al girar este se le aplica
un polvo de tinta pulverizada llamado tonner similar a la existentes en las fotocopiadoras y
que solo se adhiere a las zonas expuestas a rayos láser. Esta tinta es la que finalmente
forman los caracteres.
La impresoras láser son las que poseen una tecnología de impresión más rápida
( entre 4 y 8 paginas por minutos) y también una mayor definición de caracteres o gráficos
que van a formar el resultado final, obteniendo entre 300 y 600 puntos por pulgada.

Impresoras Láser de color:


El funcionamiento de las impresoras láser de color es similar alas impresoras láser en
blanco y negro, pero en lugar de utilizar un solo dispositivo de tinta utiliza tres dispositivos
con los colores fundamentales que se imprimen con una mayor o menor saturación sobre el
papel para formar el color deseado en ese punto. La velocidad de impresión es algo más
lenta que en las impresoras láser de tinta negra, debido a que aquí se deben gestionar tres
colores de tinta diferentes.

306
PERIFERICOS DE COMUNICACION..

MODEM
Los ordenadores trabajan con información digital (todos los datos) se almacenan en
forma de 1 y O. Las líneas, sin embargo, suelen analógicas t y trasmiten los datos como una
señal continua con una serie de picos y valles.
El Módem es un Modulador/Demodulador (de allí su nombre). Modulas los datos
digitales que salen del ordenador convirtiéndolos en una señal analógica. Después demodula
esta señal que entra en el ordenador convirtiéndola de nuevo al formato digital.

Aspectos técnicos
La tecnología 56 K es algo diferente que la de los Modems analógicos de 14.000~
28.000 y 33.660. Para alcanzar mayores velocidades deben utilizar conexiones parcialmente
digitales.
La línea telefónica análoga es el factor que limita la velocidad de transferencia de los
datos debido al ruido que introduce en las transmisiones.
Las líneas digitales también generan ruido y tienen un. límite en la velocidad de
transmisión. Pero tiene menos ruido y, además, permiten una velocidad de transmisión
mayor ala de las análogas.
Poco a poco, todas las redes telefónicas se están convirtiendo al formato digital.
El Sistema Telefónico como una red digital con una porción analogica
Los fabricantes de Modems han creado técnicas que utilizan las ventajas de esta
porción digital de la red telefónica para conseguir mayores velocidades de transmisión
puramente analógica. En general, estas nuevas técnicas tratan el sistemas telefónico como
una red digital que tiene una porción analógica.
Esta conexión semi-digital obliga a varios compromisos. El más importante ellos es
que el Proveedor de Servicios de Internet debe poseer líneas telefónicas digitales.
Los Modems 56 K consiguen una velocidad de transmisión más elevada que los
módems tradicionales. Se evita así, una conversión desde una línea digital a otra analógica
en la conexión entre el usuario y el Proveer de Servicios.
Las conexiones normales se inician sobre una línea analógica. La compañía telefónica
las convierte en digitales y vuelven a convertirse en analógicas, en el -5egmento final ante
de llegar al proveer de servicios. Las conexiones 56K comienzan siendo analógica, se
convierten en digitales y, sin embargo, no se vuelven a convertir en analógica en el
proveedor de servicios.
Los Modems 56K tiene sentido para algunas aplicaciones aunque no para otras. Por
ejemplo, las comunicaciones de módem a módem, no pueden aprovechar las mayores
velocidades, ya que necesita de los sistemas de un ISP en uno de los extremos de la
conexión, sin embargo, son útiles para acceder a Internet.

Como usar la Tecnología 56K

Para aprovechar todas las ventajas de la tecnología 56 K se necesitan tres cosas: 1)


Un módem 56 K
2) Un Proveedor de Servicios de Internet que soporte 56K 3) Una línea telefónica que
soporte 56K
Conseguir el módem es muy fácil. En el mercado hay muchos dispositivos de este tipo
y cada día aparecen nuevos modelos. En cuanto al segundo punto, muchos ISP ya soportan
algunos de los protocolos 56K o planean hacerlo en un futuro cercano.
El tercer requisito, es quizás el más problemático de todos. Para alcanzar la velocidad
56K, solo debe hacer un proceso de conversión analógico / digital entre el ordenador y el
ISP. Si hay más de uno, no se podrán utilizar los 56 K y la velocidad de conexión estará
limitada a 28.8 o 33.6K.
Para averiguar si nuestra línea telefónica soporta la velocidad de 56K, la única prueba
totalmente fiable es conseguir un módem 56K y llamar a nuestro ISP . Cuando se compra

307
un módem hay que asegurarse de que este pueda ser actualizado (preferiblemente
mediante un programa software gratuito) para hacerlo compatible con el estándar 56K
definitivo. Además, estas actualizaciones permiten mejorar el rendimiento y eliminar errores
de forma rápida y sencilla sin tener que comprar un módem nuevo o enviarlo a la fábrica
para que actualicen su hardware.

CONCLUSIÓN
Al haber realizado el trabajo de investigación nos ayuda a tener una idea concreta
sobre los tipos de periféricos analizando y determinando en cada caso cual es el más
conveniente para el usuario.
A merced de esto el trabajo grupal ayuda a establecer pautas que se deberán seguir a
medida que se progresa en la investigación.
Hubo que investigar en distintos libros y revistas y así ir determinando lo que cada
integrante debía realizar para lograr un buen fin. También nos ha dejado como enseñanza
que en el momento de adquirir un equipo debe tenerse en cuenta distintos aspectos como
ser:
Velocidad,
Capacidad de la RAM,
Servicio Técnico,
Sistema operativo,
y elegir para nuestra conveniencia
y alcance los demás periféricos.

308
CONCLUSIÓN

309
BOLILLA VI (PARTE 2):
TÉCNICAS Y
DISPOSITIVOS DE
ENTRADA SALIDA

310
INDICE
INDICE GENERAL............................................................................................1
BOLILLA I: LA COMPUTADORA..............................................................................................4
INDICE.......................................................................................................................................5
INTRODUCCIÓN...................................................................................................................12
LA COMPUTADORA............................................................................................................13
CONCEPTO:.........................................................................................................................13
FUNCIONES Y ACCIONES:...............................................................................................13
Para qué sirve una computadora?:.........................................................................................13
Computadora y Circuitos:......................................................................................................14
HARDWARE Y SOFTWARE: ............................................................................................14
Software: ...........................................................................................................................14
Al software se lo clasifica en dos grupos: .....................................................................14
Hardware:...........................................................................................................................15
Arquitectura - Componentes Básicos:...................................................................................15
Unidad de Control:.............................................................................................................15
Unidad aritmético-lógica:..................................................................................................15
Memoria:(Memoria Central)..............................................................................................15
Periféricos: ........................................................................................................................15
Núcleo de la computadora: ...............................................................................................15
BUSES DE COMPUTADORAS:.........................................................................................16
Buses síncronos y asíncronos: ..............................................................................................18
Arbitraje del bus:...............................................................................................................19
Ejemplo de encadenamiento margarita:.............................................................................19
Solicitud del Bus............................................................................................................19
Dispositivos de E/S............................................................................................................19
Manejo de interrupciones:.................................................................................................20
Canales de e/s.........................................................................................................................20
TECNOLOGÍA DE CANALES:.......................................................................................21
TIPOS DE CANALES:.....................................................................................................21
Multiplexor: ..................................................................................................................21
Selector..........................................................................................................................22
Multipexor por bloques: ................................................................................................22
Spoll: .........................................................................................................................22
SISTEMA OPERATIVO.......................................................................................................23
Introducción: ....................................................................................................................23
¿QUÉ ES UN SISTEMA OPERATIVO?.........................................................................24
CONCLUSIÓN........................................................................................................................25
BOLILLA II (Parte 1): EL NIVEL DE LOGICA DIGITAL.....................................................26
INDICE.....................................................................................................................................27
INTRODUCCIÓN...................................................................................................................34
EL NIVEL DE LOGICA DIGITAL......................................................................................35
COMPUERTAS Y ALGEBRA BOOLEANA......................................................................35
Compuertas........................................................................................................................35
Algebra booleana...............................................................................................................37
Implementación de funciones booleanas ..........................................................................38

311
Equivalencia entre circuitos...............................................................................................40
CIRCUITOS DIGITALES BÁSICOS..................................................................................44
Circuitos integrados ..........................................................................................................44
Circuitos combinacionales ................................................................................................47
Multiplexores ................................................................................................................47
Decodificadores ............................................................................................................49
Comparadores ...............................................................................................................51
Arreglos (matrices) lógicos programables ....................................................................51
Circuitos aritméticos..........................................................................................................53
Registros de corrimiento................................................................................................53
Sumadores .....................................................................................................................54
Unidades aritméticas y lógicas......................................................................................55
Relojes ..............................................................................................................................55
MEMORIA............................................................................................................................57
Biestables...........................................................................................................................57
Bieslables SR sincronizados..........................................................................................59
Biestables D sincronizados............................................................................................59
Flip-flops y registros..........................................................................................................59
Registros........................................................................................................................60
Organización de las memorias...........................................................................................61
Propiedades de las memorias.............................................................................................64
MICROPROCESADORES y BUSES...................................................................................66
Microprocesadores ............................................................................................................66
Buses de computadora.......................................................................................................68
Buses síncronos .................................................................................................................70
BUSES ASINCRONOS....................................................................................................73
Arbitraje del bus ................................................................................................................74
Manejo de interrupciones ..................................................................................................77
CONCLUSIÓN........................................................................................................................79
BOLILLA II (Parte 2): EL NIVEL DE MICROPROGRAMACIÓN.......................................80
INDICE.....................................................................................................................................81
INTRODUCCIÓN...................................................................................................................88
EL NIVEL DE MICROPROGRAMACIÓN .......................................................................89
REPASO SOBRE EL NIVEL DE LÓGICA DIGITAL .......................................................90
Registros ..........................................................................................................................90
Buses .................................................................................................................................90
Multiplexores y decodificadores .......................................................................................92
Unidades aritméticas y lógicas y registros de corrimiento ...............................................92
Relojes ..............................................................................................................................93
Memoria principal .............................................................................................................94
Encapsulado de los componentes .....................................................................................95
UNA MICROARQUITECTURA TIPICA ...........................................................................96
La ruta de datos .................................................................................................................96
Microinstrucciones ............................................................................................................98
Cronología de las microinstrucciones .............................................................................100
Secuenciamiento de las microinstrucciones ...................................................................102
UNA MACROARQUITECTURA TIPICA .......................................................................103
Pilas .................................................................................................................................103

312
El juego de macroinstrucciones ......................................................................................107
MICROPROGRAMACIÓN: UN EJEMPLO ....................................................................110
El lenguaje micro ensamblador .......................................................................................110
El ejemplo de microprograma .........................................................................................111
Observaciones sobre el microprograma ..........................................................................113
Perspectivas ....................................................................................................................114
EL DISEÑO DEL NIVEL DE MICROPROGRAMACIÓN ............................................115
Microprogramación horizontal frente a microprogramación vertical..............................115
Nanoprogramación ..........................................................................................................122
Mejora del rendimiento ...................................................................................................123
Memoria caché ...............................................................................................................129
CONCLUSIÓN......................................................................................................................134
................................................................................................................................................135
BOLILLA II (Parte 3): EL NIVEL DE MAQUINA CONVENCIONAL................................135
INDICE...................................................................................................................................136
INTRODUCCIÓN.................................................................................................................143
EL NIVEL DE MÁQUINA CONVENCIONAL.................................................................144
EJEMPLOS DEL NIVEL DE MAQUINA CONVENCIONAL........................................144
FORMATOS DE INSTRUCCIÓN.....................................................................................145
Criterios de diseño de formatos de instrucción................................................................146
Códigos de operación con extensión...............................................................................147
Ejemplos de formatos de instrucciones...........................................................................149
La PDP-11...................................................................................................................149
Direccionamiento.............................................................................................................149
Direccionamiento inmediato........................................................................................150
Direccionamiento directo.............................................................................................150
Direccionamiento de registros.....................................................................................151
Direccionamiento indirecto..........................................................................................151
Indexación....................................................................................................................152
Direccionamiento por medio de pilas..........................................................................153
Notación polaca inversa...........................................................................................155
Evaluación de fórmulas en la notación polaca inversa............................................157
Algoritmo.............................................................................................................157
Algoritmo.............................................................................................................157
Ejemplos de direccionamiento.....................................................................................160
Direccionamiento en la PDP-11..............................................................................160
Tipos de Instrucciones ........................................................................................................160
Instrucciones de movimiento de datos ............................................................................161
Operaciones binarias .......................................................................................................161
Operaciones unarias ........................................................................................................162
Comparaciones y Saltos Condicionales...........................................................................164
Instrucciones de llamada a procedimiento ......................................................................166
Control de iteraciones .....................................................................................................167
Entrada / salida ................................................................................................................168
Flujo De Control .................................................................................................................173
Flujo de control secuencial y saltos ................................................................................173
Procedimientos ................................................................................................................174
Corrutinas ........................................................................................................................179

313
Desvios ............................................................................................................................182
Interrupciones .................................................................................................................183
ACCIONES DE HARDWARE ..................................................................................183
ACCIONES DE SOFTWARE ...................................................................................184
CONCLUSIÓN......................................................................................................................187
BOLILLA III: ARQUITECTURA DEL PROCESADOR.......................................................188
INDICE...................................................................................................................................189
INTRODUCCIÓN.................................................................................................................196
ARQUITECTURA DEL PROCESADOR..........................................................................197
ESTRUCTURA GENERAL...............................................................................................197
DESCRIPCIÓN DE LOS COMPONENTES DE UN PROCESADOR ............................197
Microprocesadores...............................................................................................................200
EJECUCIÓN DE LAS INSTRUCCIONES .......................................................................201
ORGANIZACIÓN DE LA CPU ........................................................................................202
LA UNIDAD ARITMÉTICA Y LÓGICA .........................................................................204
LA UNIDAD DE CONTROL.............................................................................................206
FASE DE BÚSQUEDA DE LA INSTRUCCIÓN .............................................................207
FASE DE BÚSQUEDA O ALMACENAMIENTO DEL OPERANDO ...........................207
Caso de búsqueda del operando, seguido de procesamiento: .........................................207
Caso de almacenamiento del operando: ..........................................................................208
FASE DE PREPARACIÓN DE LA SIGUIENTE INSTRUCCIÓN .................................209
INSTRUCCIÓN DE RUPTURA DE SECUENCIA ..........................................................209
EL CANAL..........................................................................................................................210
LAS UNIDADES PERIFÉRICAS .....................................................................................211
INTERRUPCIONES ..........................................................................................................211
CONCLUSIÓN......................................................................................................................214
BOLILLA IV: MEMORIA........................................................................................................215
INDICE...................................................................................................................................216
INTRODUCCIÓN.................................................................................................................223
MEMoRia ..............................................................................................................................224
DIRECCIONES DE MEMORIA .......................................................................................225
ORDENAMIENTO DE BYTES ........................................................................................226
CÓDIGOS CORRECTORES DE ERRORES ....................................................................227
CLASIFICACIÓN Y ORGANIZACIÓN DE LAS MEMORIAS .....................................227
PARáMETROS y CARACTERíSTICAS MáS IMPORTANTES DE UNA MEMORIA 228
Capacidad.........................................................................................................................228
Formas de acceder a las posiciones de memoria ............................................................229
Memorias de acceso aleatorio (RAM = Ramdom Acess Memory) ............................229
Estructura de una RAM semiconductora ................................................................231
Pastillas de memoria en paralelo ........................................................................233
Memorias pasivas....................................................................................................235
Memorias de acceso serie ...........................................................................................236
Memorias asociativas ..................................................................................................238
MODOS DE DIRECCIONAMIENTO ..........................................................................239
Modo de direccionamiento directo .............................................................................239
Modo de direccionamiento indirecto ..........................................................................240

314
Modo de direccionamiento relativo ............................................................................240
Modo de direccionamiento indexado ..........................................................................242
Modo de direccionamiento por registro indirecto .......................................................243
Otros modos de direccionamiento ..............................................................................244
CONCLUSIÓN......................................................................................................................245
................................................................................................................................................246
BOLILLA V: EL NIVEL DEL LENGUAJE ENSAMBLADOR.............................................246
INDICE...................................................................................................................................247
INTRODUCCIÓN.................................................................................................................254
EL NIVEL DEL LENGUAJE ENSAMBLADOR..............................................................255
INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR ...................................................256
¿Qué es un lenguaje ensamblador? .................................................................................256
Formato de una sentencia en lenguaje ensamblador .......................................................257
Comparación entre el. lenguaje ensamblador y los lenguajes de alto nivel ...................258
Afinación de programas ..................................................................................................259
EL PROCESO DE ENSAMBLAJE ...................................................................................261
Ensambladores de dos pasadas .......................................................................................261
La primera pasada ...........................................................................................................262
La segunda pasada ..........................................................................................................266
La tabla de símbolos .......................................................................................................267
MACrOS .............................................................................................................................269
Definición, llamada y expansión de una macro ..............................................................269
Macros con parámetros ...................................................................................................271
Implementación de macros en un ensamblador ..............................................................271
MONTAJE (LINKING) y CARGA ...................................................................................272
Tareas realizadas por el programa ensamblador .............................................................274
Estructura de un módulo objeto ......................................................................................276
Tiempo de ligadura y reubicación dinámica ...................................................................277
Enlace dinámico ..............................................................................................................279
CONCLUSIÓN......................................................................................................................282
BOLILLA VI (Parte 1): PERIFÉRICOS.................................................................................283
INDICE...................................................................................................................................284
INTRODUCCIÓN.................................................................................................................291
PERIFÉRICOS......................................................................................................................292
RESEÑA HISTÓRICA.......................................................................................................292
INTRODUCCIóN ...............................................................................................................292
PERlFERICOS DE ENTRADA: ........................................................................................293
TECLADO: .....................................................................................................................293
Cuidados y advertencias..............................................................................................294
MOUSE (RATON) .........................................................................................................295
Tipos de ratones...........................................................................................................296
Ratones Inalámbricos. .............................................................................................296
Ratones Estacionarios..............................................................................................296
PANTALLAS TÁCTILES: ............................................................................................296
BOLAS GIRATORIAS: .................................................................................................296

315
ESCANER ......................................................................................................................296
Profundidad de color....................................................................................................296
Tipos de escáner:.........................................................................................................297
Escáner de mano: ....................................................................................................297
Ventaja: ...............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Sobremesa: ...........................................................................................297
Ventajas: .............................................................................................................297
Desventajas: ........................................................................................................297
Escáner de Rodillo:..................................................................................................297
Calibración...................................................................................................................297
LECTORES DE CODIGO DE BARRA.....................................................................297
TABLETA DIGITALIZADORA....................................................................................298
LECTORES DE TARJETAS MAGNETICAS...............................................................298
LAPIZ OPTICO: ............................................................................................................298
PERIFERICOS DE ALMACENAMIENTO: .................................................................299
Discos...........................................................................................................................299
Discos flexibles............................................................................................................299
Fiabilidad del soporte. .............................................................................................300
Facilidad de manejo y almacenamiento. .................................................................300
1. Disco flexible de 5 1/4 pulgadas .....................................................................300
2. Disco flexible de 3 1/2pulgadas ......................................................................300
Disco duro....................................................................................................................300
Discos opticos: ............................................................................................................301
Cintas magneticas: ......................................................................................................302
DVD:............................................................................................................................302
Prestaciones del DVD: ............................................................................................303
El disco por dentro: .................................................................................................303
La compresión MPEG-2: ........................................................................................303
El futuro del DVD: .................................................................................................303
PERIFERICOS DE SALIDA: ............................................................................................304
PANTALLAS DE SISTEMAINFORMATICO (Monitor): ...........................................304
Impresoras........................................................................................................................305
Impresoras con cinta entintada: ..................................................................................305
Impresora de Bola: ..................................................................................................305
Impresoras de agujas: ..............................................................................................306
Impresoras sin cinta entintadas: ..................................................................................306
Impresoras térmicas: ...............................................................................................306
Impresoras de inyección de tinta: ...........................................................................306
Impresoras láser: .....................................................................................................306
Impresoras Láser de color: ......................................................................................306
PERIFERICOS DE COMUNICACION.. ..........................................................................307
MODEM..........................................................................................................................307
Aspectos técnicos.........................................................................................................307
Como usar la Tecnología 56K ................................................................................307
CONCLUSIóN....................................................................................................................308
CONCLUSIÓN......................................................................................................................309
BOLILLA VI (PARTE 2): TÉCNICAS Y DISPOSITIVOS DE ENTRADA SALIDA...........310
INDICE...................................................................................................................................311

316
INTRODUCCIÓN.................................................................................................................318
TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA (Input / Ouput)..................319
Dispositivos de fichas y de banda perforada.......................................................................319
Dispositivos de soporte magnético......................................................................................323
Impresoras............................................................................................................................323
Plotter...................................................................................................................................330
La pantalla............................................................................................................................331
Terminales...........................................................................................................................332
Procesos de comunicación para la transmisión de datos a distancia...................................334
Otros periféricos..................................................................................................................334
Técnicas de entrada/salida (input/output)............................................................................335
Polling (interrogatorio de tráfico) ...................................................................................336
Interrupciones (interrupts) ..............................................................................................338
Transferencia DMA ........................................................................................................339
GLOSARIO.........................................................................................................................340
CONCLUSIÓN......................................................................................................................342
CONCLUSIÓN FINAL..............................................................................................................343
BIBLIOGRAFÍA .......................................................................................................................344

317
INTRODUCCIÓN

318
APUNTES DE CATEDRA

CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –


INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003

TECNICAS Y DISPOSITIVOS DE ENTRADA / SALIDA


(Input / Ouput)
EL objetivo de este capítulo es explicar los dispositivos más comunes de entrada y
salida de datos. Puesto que en el anterior, hablando de las memorias masivas, ya
examinamos las principales características de los dispositivos de I/O (Input/Output =
entrada/salida) en soporte magnético, no los trataremos en éste.
Aprenderemos las principales técnicas utilizadas en un sistema de ordenador para la
gestión de periféricos de entrada/salida (I/O), refiriéndonos a un sistema de
microprocesadores. Estas técnicas, en sustancia, son las mismas que las utilizadas en los
sistemas de grandes y medianos ordenadores.
Por consiguiente, y para una mayor simplicidad, consideremos de ahora en adelante
una configuración estándar para todos los periféricos, que prevea para cada uno de ellos,
por lo menos, un registro de estado y un buffer de I/O. El primero, generalmente está
constituido por un conjunto de bits que proporciona las informaciones esenciales sobre el
estado del periférico (por ejemplo petición de disponibilidad de un dato, buffer ocupado,
etc.).
El segundo es un registro de tránsito, de dimensiones variables, dependiendo del tipo
de periférico, por el que pasan todos los datos de salida y de entrada.
Además, generalmente, para las operaciones de I/O, en la memoria del ordenador
también existe un buffer de I/O (en general, de dimensiones distintas con respecto al del
periférico en cuestión) que contiene los datos a transmitir.

DISPOSITIVOS DE FICHAS Y DE BANDA PERFORADA

Cuando un ordenador recibe los datos de entrada en fichas son necesarios los
siguientes dispositivos:
• Una máquina perforadora para transformar manualmente los documentos originales
en fichas perforadas;
• Una máquina verificadora para controlar que las perforaciones de las fichas sean
exactas;
• Una máquina selectora para ordenar las fichas en base a campos determinados.
Realmente esta máquina casi no se utiliza, ya que se prefiere, desde que las
posibilidades del ordenador lo permiten, cargar las fichas desordenadas en un
soporte magnético y que esta tarea de ordenar la realice el mismo ordenador
mediante un programa (programas de selección):
• Lectora de fichas conectada al ordenador.
Antes de hablar de estos dispositivos veamos en qué consiste una ficha.
Se trata de una pequeña cartulina rectangular con una discreta resistencia y un buen
aislamiento eléctrico. La ficha esta dividida en 80 columnas y 12 filas. Las filas están
numeradas físicamente de 0 a 9, existiendo también dos filas superiores a la fila 0 (la 11 y
la 12).
La característica de las fichas es representar los datos carácter a carácter. Las cifras
se representan con una perforación en la fila correspondiente; las letras del alfabeto se

319
obtienen por medio de dos perforaciones , de las que la superior puede ser la 12 (línea más
alta) o la 11 o la 0. Para los caracteres especiales se usan tres perforaciones en un misma
columna. Obviamente, no se aprovechan todas las combinaciones posibles de las
perforaciones en una columna.
Las perforadoras, como su nombre indica, taladran, perforan las fichas introducidas
(en la fig. 1, ejemplo de una perforadora Honeywell Bull). Los modelos más perfeccionados
pueden incluso escribir en el borde superior el contenido de la perforación. Se parecen, al
igual que las verificadoras, a máquinas de escribir. La única diferencia reside en su mayor
tamaño. En estas perforadoras se puede introducir un programa, representado por una ficha
perforada, el cual, reflejando el contenido de la ficha, facilita la perforación de un grupo de
fichas.
En las verificadoras, las fichas llegan ya perforadas y comprueban, pulsando sobre el
teclado, las perforaciones existentes.

Foto. Perforadora de fichas. (Foto cedida por Honeywell Bull)

320
Foto. Detalle de una lectora de fichas (Foto cedida por Honeywell Bull)

Las lectoras de fichas, con un mecanismo de arrastre, hacen llegar las fichas hajo el
dispositivo de lectura, que puede ser electromecánico o fotoeléctrico. La lectura puede ser
en serie, es decir, una columna tras otra, o en paralelo, una fila tras otra. En ambos casos,
el resultado final es una fotografía del estado de las perforaciones existentes en la ficha en
la que a cada perforación le corresponde un bit 1, ya las posiciones sin perforación, un bit 0.
Supongamos que cada columna de la ficha se «fotografíe» en 2 bytes que constituyen
una palabra de ordenador. En este caso, el contenido de la ficha después de la lectura
consta de 80 palabras, carácter a carácter. A esta zona de memoria del ordenador la
llamamos buffer de lectura.
Los datos contenidos en el buffer solo pueden utilizarse si previamente han sido
interpretados según las directrices del programa. Para cada ficha, antes de la perforación,
se establece el trazado, es decir, se determina cuantos caracteres son necesarios para cada
dato y en qué columna de la ficha tienen que perforarse. Por otro lado, el programa tiene
que saber, por medio de las convenciones del lenguaje utilizado, las características de los
datos que residen en el buffer. Por lo tanto, puede ocuparse de reagrupar los caracteres que
pertenecen a cada dato, realizar eventuales transformaciones de código y transferir esos
datos desde el buffer a las zonas de memoria dedicadas a ellos.
La lectura de la ficha perforada es, en realidad, bastante complicada; de hecho,
mientras la ficha se desliza a velocidad constante bajo la estación de lectura, el ordenador
tiene que leerla columna a columna (o fila a fila) con la temporización exacta, para no
sobreponer las informaciones.
Si el ordenador utiliza las fichas en los dispositivos de salida, deberá conectarse a una
unidad perforadora de fichas. En tal caso, los datos que se perforarán sobre una ficha
tendrán que prepararse en un buffer de escritura, carácter a carácter, para luego ser
transferidos a la ficha por medio de punzones dirigidos eléctricamente.
Hemos mencionado la máquina selectora de fichas. Junto a ésta podíamos encontrar
otra máquina, denominada intercaladora, que servía para agrupar, en una única secuencia,
dos paquetes de fichas ya ordenadas. Hoy en día también se prefiere realizar este trabajo
con dispositivos magnéticos por medio de un programa de ordenador (programas de
agrupación).
Pasemos ahora a examinar los periféricos de banda perforada. Constan de una cinta
de papel resistente de color opaco, que contiene en toda su longitud una secuencia de

321
pequeños agujeros para su arrastre. Se trata, bien de lectoras, bien de perforadoras, o de
lectoras/perforadoras. En éstas tenemos una estación de lectura y/o perforación, donde la
lectura puede realizarse de igual manera que para las fichas perforadas, es decir, de
manera electromecánica o fotoeléctrica, y la perforación, mediante punzones accionados
eléctricamente. Además, existe un dispositivo para el arrastre de la cinta, el cual
normalmente se controla mediante programa. Algunos dispositivos de lectura permiten leer
la banda por bloques (como sucede en las cintas magnéticas), mientras que otros sólo
permiten la lectura a gran velocidad de toda la banda disponible. Es evidente que en el
primer caso se pueden introducir datos procesables por el ordenador en forma de bloques,
mientras que en el segundo sólo puede llenarse una parte de la memoria. Algunos
ordenadores contienen una lectora de banda perforada para cargar en memoria el programa
inicial de comienzo y/o parte del sistema operativo.
De todas formas, si un ordenador utiliza periféricos de banda perforada. Generalmente
dispone también de un dispositivo manual para la perforación de la banda.
El código de perforación puede realizarse utilizando un determinado número de bits,
generalmente 7 u 8, y las perforaciones se realizan perpendicularmente a la directriz de
arrastre a lo largo de los canales. Los datos se perforan carácter a carácter utilizando
siempre un bit para el control de paridad. En la figura 1 se representa una banda con 8
canales, donde el canal 8 se utiliza para el control de paridad y los canales del 1 al 7 para el
código.
También para la banda de papel son válidas las mismas observaciones hechas para las
fichas. Los datos se reciben carácter a carácter en un buffer de lectura, o son preparados en
un buffer de escritura. El programa se encarga de todas las transformaciones de código
necesarias para poder trabajar con los datos. En el caso de que se carguen programas de
lenguaje de máquina mediante banda perforada, cada carácter grabado puede representar
el contenido binario de un byte, y es suficiente transferirlo a la memoria a partir de la
posición deseada.

Fig. 1. Banda de papel perforada de 8 canales.

322
DISPOSITIVOS DE SOPORTE MAGNÉTICO

De estos dispositivos ya hemos hablado en el capítulo anterior.


Están constituidos por dispositivos de cintas magnéticas, por discos magnéticos rígidos
o flexibles y por tambores.
Genéricamente se denominan dispositivos de memoria masiva, pero son en todo caso
dispositivos de entrada/salida (I/O).

IMPRESORAS

Las impresoras son los periféricos que más se utilizan para la salida de datos del
ordenador, de manera inteligible para el hombre.
Estas se encargan de imprimir los resultados de los procesos sobre folios o sobre
módulos de papel continuo.
En el primer caso, es posible, mediante carretes apropiados, introducir el folio, que
después la impresora tratará como lo hace una máquina de escribir corriente. Por el
contrario, los módulos de papel continuo están doblados en forma de acordeón y son fáciles
de separar. Están dotados de dos cintas laterales perforadas que permiten «enganchar» el
papel al mecanismo de arrastre. Algunas impresoras permiten utilizar, por medio de carros
superpuestos, un módulo de papel continuo y hojas sueltas de inserción frontal.
Mediante un interruptor especial se puede elegir el espaciado entre las líneas, que
normalmente es de 1/6 ó 1/8 de pulgada. El número de caracteres que se pueden imprimir
en una línea varía, dependiendo de la impresora utilizada: las medidas habituales son de
32, 80, 120, 132 ó 160 caracteres por línea. Para controlar el número de líneas que se
pueden imprimir en una hoja existen diferentes posibilidades, dependiendo del tipo de
impresora. En algunas existe una tecla de «reset» (recomponer), que puede accionarse
después de haber colocado la hoja. El sistema cuenta las líneas impresas ( el número de
líneas por página puede ser fijo o modificable por software: el más común es de 66 líneas
por página) y accede automáticamente a una hoja nueva, dejando el margen necesario. Si
se desea cambiar de hoja en base a unas reglas más complicadas, se puede utilizar en el
programa un contador de líneas y mandar el avance del papel con una orden de impresión
en vacío.
Más flexible es el sistema de avance del papel, basado en la utilización de una cinta de
papel perforada, cerrada en círculo y ubicada en la impresora.
El principio de funcionamiento es el siguiente: se corta la cinta de papel de manera
que sea tan larga como las hojas utilizadas, y se encola en forma de círculo. El dispositivo
de arrastre de la cinta actúa, por lo tanto, conjuntamente con el movimiento del papel en la
impresora.
La cinta de papel ofrece, además de una pista de perforaciones para el arrastre, la
posibilidad de realizar perforaciones en diferentes posiciones sobre los 12 canales o pistas.
Es posible dirigir por programa el avance del papel en base a las perforaciones existentes en
los diferentes canales de la cinta, así como el formato de la línea de impresora (ver figura
2). Los lenguajes simbólicos de alto nivel constan de una serie de instrucciones que facilitan
la impresión de los resultados con el formato y paginación deseados. Considerando la forma
en la que se imprimen los caracteres, las impresoras pueden dividirse en dos grupos: por
impacto y sin impacto.

323
Fig. 2. Cinta de control para el desplazamiento del papel.

Al primer grupo pertenecen las impresoras que imprimen el carácter sobre el papel
por contacto mecánico por medio de una cinta entintada. Pertenecen al segundo grupo las
máquinas en las cuales la impresión se realiza por medio de sistemas químicos, magnéticos
o eléctricos.
Además, un carácter puede imprimirse con una imagen continua o en base a puntos.
El primer sistema, muy parecido al utilizado en las teclas de una máquina de escribir,
consta de un dispositivo con la forma del carácter en relieve, que golpea una cinta
posicionada entre el papel y el dispositivo. Por el contrario, el segundo sistema consta de
una matriz de agujas (matriz 7 x 5, 9 x 7, 7 x 7, 8 x 8 u otras) , que forma cada vez el
carácter deseado activando algunas agujas.
Hay que considerar otra subdivisión entre los tipos de impresoras disponibles:
impresoras en serie e impresoras en paralelo. Las impresoras en serie producen la línea
impresa carácter a carácter. Existen también las monodireccionales, que imprimen sólo de
izquierda a derecha y en las cuales el retroceso del carro se hace sin imprimir: y las
bidireccionales, que imprimen tanto de izquierda a derecha como de derecha a izquierda.
Las impresoras en paralelo imprimen todos los caracteres de una línea a la vez o de
tal manera que parece que la impresión se realiza simultáneamente en todas las posiciones.
Ahora que conocemos los parámetros en base a los que están subdivididas las
impresoras, pasaremos a hablar de los tipos más importantes.
En las impresoras de cadena, que son del tipo en paralelo, el dispositivo de impresión
está formado por una cadena metálica cerrada en forma de anillo, que gira a velocidad
constante en paralelo a la línea de impresión. En la parte superior lleva todo el grupo de
caracteres disponibles, que están repetidos un cierto número de veces. La cinta está situada
entre la cadena y el papel. Detrás de ésta hay una serie de pequeños martillos, tantos
cuantos son los caracteres que se pueden imprimir en una línea. Cuando el programa pide
la impresión de un determinado carácter en una determinada posición, hay que esperar a
que la cadena tenga disponible dicho carácter en la posición deseada para poder activar el
martillo correspondiente. En la figura 3 se representa un esquema del dispositivo de
impresión con cadena.

324
Fig. 3. Esquema de un dispositivo de impresión con cadena.

Con impresoras de esta clase se obtienen velocidades comprendidas entre 600 y


3.000 líneas por minuto. Son bastante caras.
En las impresoras de cilindro, figura 4, que también son del tipo en paralelo, el grupo
de caracteres está situado en una serie de canales circulares sobre la superficie de un
cilindro metálico, que gira a velocidad constante. A lo largo de una directriz del cilindro se
encuentra el mismo carácter, por lo que, a cada instante, está disponible en
correspondencia con las diferentes posiciones de impresión. El funcionamiento es similar al
que vimos anteriormente. La única diferencia reside en que la línea se escribe en tiempos
sucesivos, imprimiendo en el mismo instante todos los caracteres iguales tan rápidamente,
que parece que todos los caracteres de una línea se imprimen simultáneamente.

Fig. 4. Dispositivo de impresión de cilindro.

Otra clase de impresora del tipo paralelo de impacto es la de barras o de ruedas. En


este caso, los caracteres están dispuestos, ya sea sobre barras metálicas que se levantan o
se bajan dejando el carácter deseado disponible a la altura de la línea, o bien sobre ruedas
giratorias. En la figura 5 se representa el esquema de un dispositivo de impresión de una
impresora en serie con cabezal cilíndrico.

325
Fig. 5. Esquema del dispositivo de impresión de bola. También se puede
disponer de cabezas de escritura con forma diferente: cilíndrica, de rueda o de
margarita.

Las impresoras de margarita, figura 6, tienen los caracteres en relieve dispuestos en


círculo y formando, como su nombre indica, una margarita.

Foto. Impresora láser para la impresión de textos, números e imágenes sobre papel a la
velocidad de 12 originales (formato A-4) por minuto. (foto cedida por Rank Xerox)

Fig. 6. Cabezal de margarita (Foto cedida por Olivetti)

326
Son impresoras en serie y a impacto más bien lentas (30 cps -caracteres por
segundo-) y caras, pero tienen una óptima calidad de impresión, figura 7.

Fig. 7. La margarita en funcionamiento.

Se obtienen velocidades mayores, incluso del orden de los 200 cps, con impresoras en
serie, de impacto y de agujas. En la figura 8 se representa un esquema para una matriz de
7 x 7. En este caso, la cabeza de impresión tiene las dimensiones de una columna de la
matriz y se mueve a lo largo de la línea de impresión a velocidad constante.
Correspondiéndose a cada carácter, se activan las agujas necesarias tantas veces como
haga falta (en el ejemplo, 7 veces las 7 agujas de una columna) y el carácter se crea por
puntos y por impacto. En la figura 9 se pueden observar las diferentes fases de realización
de la letra «A» por medio de una impresora de agujas.

Fig. 8. Esquema del dispositivo de impresión en serie por punto.

327
Fig. 9. Diferentes fases en la formación de la letra "A" con una impresora de aguja.

En la impresora de agujas de funcionamiento en paralelo, con una pulsación se


señalan todos los puntos de todos los caracteres relativos a una línea de la matriz. Por lo
tanto, se efectúan tantas pulsaciones como líneas tenga la matriz, y se alcanzan velocidades
del orden de 2.000 líneas por minuto. Sin embargo, estas impresoras son muy caras.
Para grandes sistemas existen impresoras superrápidas. Citemos las impresoras de
chorro de tinta (ink-jet), que pueden alcanzar velocidades de 40.000 líneas por minuto.
Esquemáticamente, su funcionamiento es el siguiente (ver figura 10 ). El cabezal de
escritura, constituido por un depósito con un dosificador, se mueve uniformemente a lo
largo de toda la hoja. En la posición en la que se tiene que escribir, dosifica la tinta, la cual,
después de ser electrizada, gota a gota, será conducida a través de un campo eléctrico
sobre el papel para formar el carácter deseado, al igual que sucedía con la impresora de
matriz.

Fig. 10. Impresora de chorro de tinta.

La impresora láser consta de un cilindro recubierto de selenio (material aislante en la


oscuridad y conductor a la luz), con rotación constante y uniforme, en cuya superficie incide
un rayo láser; desviado por un espejo, a lo largo de todo el proceso de impresión (ver

328
figura 11).

Fig. 11. Impresora de rayo láser.

Sólo los puntos de selenio «iluminados» retienen electrostáticamente el polvo de tinta


seca (toner) depositada en una determinada franja del cilindro. Después, por medio de
compresión y calentamiento se imprime el carácter deseado sobre el papel como un
conjunto de puntos. Alcanzan velocidades de 20.000 líneas por minuto.
Entre la gama de impresoras sin impacto y de bajo costo, citamos las impresoras
térmicas. El elemento de impresión, ver figura 12, por puntos o por segmentos, imprime
en caliente sobre papel especial el carácter deseado. No se consigue una buena nitidez de
impresión. Son bastante silenciosas, aunque lentas.

Fig. 12. Impresora térmica de matriz de puntos.

Después de haber hablado de las principales clases de impresoras, volvamos a las


consideraciones de carácter general.
Los datos que se tienen que imprimir, codificados según el dispositivo utilizado, deben
ser almacenados en un buffer (de impresión), que normalmente tiene la capacidad
suficiente para contener una línea.
Es evidente que, si disponemos de una impresora de carácter entero, sólo se puede
obtener la impresión del conjunto (set) de caracteres disponibles en la máquina. Por el

329
contrario, si utilizamos una impresora de matriz por puntos, siempre que el sistema lo
permita será posible obtener, mediante software, diseños especiales, es decir, diseñar
caracteres particulares.
Tomemos la matriz 8 x 8. Esta tiene una imagen en memoria de 8 bytes consecutivos,
en los que: los bits 1 corresponden a los puntos que se tienen que imprimir.
Mediante una adecuada configuración de los 1 se puede imprimir, por ejemplo, la letra
n (ver figura 13).

Fig. 13. Correspondencia entre puntos de impresión y el contenido de


los 8 bytes.

PLOTTER

Toman el nombre de plotters aquellas unidades de impresión, no muy rápidas, que


permiten dibujar gráficos (ver figura 14).

Fig. 14. Ejemplo de un plotter; arriba a la izquierda, detalle de plumas de 4 colores. (Foto
cedida por Calcomp.)

En algunos, el papel, generalmente enrollado, puede desplazarse verticalmente en los


dos sentidos, enrollándose o desenrollándose.
Por el contrario, el desplazamiento horizontal es tarea de la pluma (o plumas) de
escritura, que puede escribir o elevarse para permitir el desplazamiento sin escribir.

330
También existen plotters en los que la hoja de papel, situada horizontalmente, queda
inmóvil y el dibujo se realiza con el solo movimiento de la pluma. El programa es el que
dirige todos estos desplazamientos y permite trazar gráficos muy complejos con tanta
mayor precisión cuanto menor sea el incremento de coordenadas (es decir, el más pequeño
desplazamiento horizontal o vertical que puede realizar).
Algunos ordenadores realizan la impresión de gráficos de forma distinta. De hecho,
éstos pueden copiar sobre el papel cualquier imagen que aparezca en la pantalla. Por lo
tanto, se dice que tienen el dispositivo de hard copy: es decir, se trata de una imagen de
puntos que se reproduce línea a línea mediante una impresora corriente de matriz por
puntos.

LA PANTALLA

Hemos mencionado la pantalla como una unidad de salida (output) muy difundida y a
menudo utilizada en estrecha unión con el teclado de entrada (input), que domina
totalmente el campo de ordenadores personales. Consiste en una pantalla en blanco y
negro o de dos o más colores (de 8 a 16), muy parecida a la de un televisor corriente. Su
dimensión habitual es de 12 pulgadas (ver figura 15).

Fig. 15. Conjunto (set) de colores de un apantalla según los componentes de


luminosidad: color y saturación. (Foto cedida por Tektronix.)

El número de caracteres que se pueden visualizar depende del tipo de ordenador.


Normalmente de 20 a 80 caracteres por línea y de 20 a 24 líneas. Dichos caracteres o
pertenecen al conjunto (set) disponible o, en muchos casos, pueden ser diseñados por
puntos por el mismo programador. Generalmente, la pantalla está dotada de posibilidad de
giro de la visualización (scrolling); es decir, cuando la pantalla está llena, es posible
continuar escribiendo eliminando las líneas superiores para dejar sitio a las nuevas. En
algunos sistemas se consigue incluso obtener un giro de visualización (scrolling) hacia
abajo, pudiendo de esta forma insertar nuevas líneas en la parte superior.
Generalmente, el área de pantalla está representada en la memoria, es decir, en ésta
existe una zona denominada buffer, que consta de tantos bytes como caracteres pueden
aparecer en la pantalla, resultando ser así una imagen de ella. Por ejemplo, en una pantalla
de 24 líneas, de 80 caracteres cada una, disponemos de 1.920 bytes. En la pantalla de color
también existen buffers dedicados a los códigos de colores de los diferentes puntos de la
pantalla.
En otra zona dc memoria se conservan las imágenes de todo carácter visualizable

331
(letra, número u otros) bajo la forma de tabla de bytes, una para cada carácter. El
microprocesador, que se encarga de la pantalla, utiliza el buffer para obtener una relación
de las tablas que representan los distintos caracteres. Por lo tanto, se puede decir que el
buffer contiene los punteros de las imágenes de los caracteres.
Es evidente que la posibilidad de accionar sobre los punteros para la búsqueda de los
caracteres en tablas diferentes a la estándar del sistema aumenta notablemente las
posibilidades gráficas de la pantalla.
La pantalla puede ser utilizada también como unidad de entrada por medio de un lápiz
óptico o lápiz luminoso (light-pen), que sirve para indicar una posición de la pantalla. La
posición viene determinada durante el continuo barrido de la pantalla por medio del rayo
luminoso.
Se recomienda la utilización del lápiz particularmente en operaciones de selección,
pero siempre con el debido cuidado y habilidad, ya que su posicionamiento tiene efecto
inmediato.
Para facilitar la gestión de la pantalla se utiliza un indicador luminoso (generalmente
intermitente), llamado cursor, que en todo momento se encuentra en la posición
actualmente disponible y que puede ser movido utilizando las teclas de desplazamiento del
cursor.

TERMINALES

Se llaman terminales aquellos dispositivos que permiten la comunicación directa (sin


utilizar soportes intermedios) con el ordenador por medio de un teclado alfanumérico
parecido al de una máquina de escribir (ver figura 16). Existen diferentes tipos de
terminales; hablaremos de los terminales de pantalla y de los de escritura. La diferencia
entre los dos grupos depende de la manera en la que se visualizan los datos introducidos
por el teclado, por pantalla o sobre el papel.

Fig. 16. Terminal constituido por un teclado alfanumérico y una impresora o una
pantalla, la pantalla utiliza la nueva técnica de ventanillas múltiples.

Podemos imaginar un teclado de n x m teclas como una matriz de n líneas por m


columnas, en la que la pulsación de una tecla provoca un contacto en el cruce de una línea

332
con una columna. Las líneas de la matriz son líneas de salida de la CPU y las columnas son
líneas de entrada.
La CPU envía tensión (estado lógico 1) a las diferentes líneas de la matriz, una por
una, cíclicamente, miles de veces por segundo.
El pulsar una tecla equivale a cortocircuitar una línea con una columna y, por lo tanto,
a obtener un 1 también en la columna, lo que indica que al menos una tecla ha sido
pulsada. Con el barrido sistemático de las líneas y columnas para averiguar dónde aparece
un 1, se obtiene la identificación exacta de la tecla pulsada. Esta operación, junto con la
detección de la tecla pulsada, se efectúa mediante programa con adecuadas instrucciones
de entrada y salida, que escriben sobre las líneas y leen las columnas.
Cuando se pulsan dos o más teclas a la vez (rollover), se da una situación anómala.
Para remediarlo se lleva a cabo el barrido de todo el teclado, también después de
determinar que una tecla ha sido pulsada. En el caso de que se determinen nuevas
pulsaciones, generalmente son ignoradas.
Otro problema ligado a la gestión del teclado es el rebote. Por rebote se entiende el
fenómeno según el cual, la pulsación de una tecla provoca el cierre efectivo y definitivo del
contacto con un cierto retraso, del orden de los 15/20 ms, después de un determinado
número de oscilaciones. Lo mismo sucede cuando dejamos que la tecla vuelva a su posición
inicial.
Por tanto, es necesario evitar que la operación de determinar el estado de la tecla, en
una situación transitoria, interprete de manera errónea una oscilación. Se procede,
entonces, bien con una técnica hardware, por medio de filtros RC, bien por software,
introduciendo rutinas de retardo en los programas de gestión del teclado y volviendo a leer
el estado de la tecla después de haber transcurrido un cierto tiempo desde la primera
determinación, para confirmar o no la lectura anterior.
Algunos teclados están dotados de un buffer en el que se pueden conservar algunos
de los caracteres pulsados, a la espera de visualizarlos en la posición inmediatamente
disponible en la salida, bien sobre papel, bien en pantalla.
Esta operación es tarea del sistema, aunque se puede omitir.
El terminal de pantalla es muy utilizado y cómodo. Es posible efectuar una entrada
muy sofisticada de datos, utilizando las posibilidades de desplazamiento del cursor.
Hasta ahora se ha hablado de terminales no inteligentes, es decir, de dispositivos
utilizados sólo para entrada y salida. Existe también una categoría de terminales
inteligentes, es decir, programables sin dependencia alguna del ordenador al que están
conectados. En realidad, se trata de pequeños ordenadores que pueden funcionar de
manera autónoma.
Finalmente, refiriéndonos al tipo de conexión, los terminales se clasifican en remotos y
no remotos. Se consideran remotos aquellos terminales para los que no es posible una
conexión directa, por medio de cables, al ordenador central.

Ejemplo de nuevas técnicas de pantalla, gráficas y tridimensionales.

333
PROCESOS DE COMUNICACIÓN PARA LA TRANSMISIÓN DE DATOS A
DISTANCIA

En este caso, la transmisión de los datos a distancia (un determinado número de bits
transmitidos en serie, es decir, sobre una única línea uno tras otro) se efectúa
generalmente por medio de líneas telegráficas, telefónicas o a través de enlaces por radio.
Tanto en la estación transmisora como en la receptora, tienen que estar presentes el
hardware y el software necesarios para la transmisión: es decir, los procesos de
comunicación (protocolo de transmisión), que permiten la «comprensión» entre las dos
estaciones. Por ejemplo, la señal por una parte y el reconocimiento del principio de un
mensaje, por otra.
La transmisión puede ser síncrona o asíncrona.
En el primer caso, después de un intercambio de informaciones que permiten la
sincronización entre los dos dispositivos, se realiza la transmisión en bloque del conjunto de
caracteres que constituyen el mensaje.
Esta termina con la transmisión de un carácter de fin de bloque, por parte del emisor,
y con una señal de confirmación de llegada, por parte del receptor.
Por el contrario, en la transmisión asíncrona, cada carácter va precedido y seguido por
un cierto número de bits que determinan su principio y su fin. En general, la transmisión
síncrona se utiliza en líneas de velocidad media o alta, y la transmisión asíncrona, en líneas
de baja velocidad.
La velocidad se mide en baudios (1 baudio = 1 bit por segundo).

OTROS PERIFÉRICOS

Mencionaremos, brevemente, otros tipos de periféricos.


Para evitar que los datos pasen por soportes intermedios, como fichas o bandas
perforadas, se han desarrollado dispositivos de entrada basados en la lectura magnética u
óptica. En este caso, los documentos originales sirven como entrada al ordenador y el
dispositivo de lectura tiene que identificar directamente los símbolos utilizados por el
hombre. En el sistema de lectura magnética (MICR = Magnetic lnk Character Recognition),
los caracteres deben escribirse en forma estándar, utilizando tinta magnética, y deben
situarse en posiciones del documento previamente determinadas. Por el contrario, en la
lectura óptica ( OCR = Optical Character Recognition), el documento se escribe con tinta
normal y la determinación del carácter sólo se basa en su forma.
El joystick (palanca direccional) es una palanca que puede desplazarse muy
rápidamente hacia adelante, hacia atrás, a la derecha y a la izquierda, produciendo el
correspondiente desplazamiento de un punto en la pantalla. Existen palancas direccionales
(joysticks) con posiciones fijas y otras en las que el movimiento puede ser continuo. Son
muy utilizadas en los videojuegos, así como los paddles, que están formados por un mando
con un botón que permite el desplazamiento continuo del cursor.
El tablero digitalizador (tablero digital) permite escribir o dibujar con un bolígrafo
especial, reproduciéndose el mismo dibujo en la pantalla (ver figura 17). El dibujo
producido puede ser visualizado en la pantalla o memorizado en otro dispositivo.

334
Fig. 17. Detalle de un puesto de trabajo de un
sistema gráfico donde resalta el lápiz. (Foto cedida
por Calcomp.)

Existen dispositivos, aún no muy utilizados y con limitado vocabulario, para la entrada
oral de datos al ordenador.
Análogamente, existen dispositivos con salida oral de datos desde el ordenador.

TÉCNICAS DE ENTRADA/SALIDA (INPUT/OUTPUT)

Después de haber hablado de los dispositivos I/O (entrada/salida) más comunes que
se pueden conectar a un ordenador, vamos a hablar ahora de las técnicas principales
utilizadas en las transferencias de datos desde el ordenador a los periféricos, y viceversa,
haciendo referencia a los modernos sistemas de microprocesadores.
Generalmente, para conectar un periférico al ordenador es necesario una interfase que
realice las transferencias en serie o en paralelo, o que disponga de la conversión de datos
serie/paralelo, y viceversa.
El periférico, en el caso de dispositivos con partes mecánicas complejas, consta de un
controlador del dispositivo (controller) que, como su nombre indica, realiza todas las
funciones de control necesarias para el correcto funcionamiento del dispositivo. Por ejemplo,
el controlador de una unidad de floppy-disk (diskette) debe realizar, por lo menos, las
funciones siguientes:
Lectura
1. Cargar el registro
2. Generar una búsqueda
3. Esperar para el correcto posicionamiento
4. Transferencia de los datos bajo control de interrupción
5. Verificar que la operación se realice correctamente

Escritura
1. Cargar el registro
2. Generar una búsqueda
3. Esperar para el correcto posicionamiento
4. Mandar una orden de escritura
5. Cargar los datos después de que haya recibido una señal de demanda
6. Verificar los indicadores de estado «ocupado» y el carácter de control de
bloque (CRC).

335
Por el contrario, el controlador de pantalla tiene que encargarse de buscar en la tabla
de caracteres la matriz de puntos necesaria para evidenciar cada carácter que se encuentra
en la zona de pantalla, encargarse del cursor y del desplazamiento de líneas.
Dado que en un sistema están conectados muchos periféricos, es necesario establecer
un proceso de comunicación o técnica de I/O, que haga posible que cada uno de ellos
trabaje. Podemos esquematizar tres procesos: polling (interrogatorio de tráfico), las
interrupciones (interrupt) y el DMA (Direct Memory Access o Acceso Directo a Memoria)
esquematizados en la figura 18.

Fig. 18. Las tres técnicas de I / O (Input / Output - Entrada / Salida.)

Polling (interrogatorio de tráfico)

El primer método, I/O programado o polling, es el más simple. Se trata de una técnica
síncrona en la que el ordenador interroga cíclicamente a los periféricos que están
conectados por medio del bus de datos, el bus de direcciones y algunas líneas del bus de
control, para saber si solicitan alguna tarea.
En la interfase de conexión de cada dispositivo se encuentra un indicador (flag), al que
se le pregunta acerca de la disponibilidad de los dispositivos.
Se trata de un ciclo repetitivo realizado por software por medio de un algoritmo
adecuado. En la figura 19 se esquematiza la secuencia de polling.

336
Fig. 19. Ciclo de polling (interrogatorio de tráfico).

El proceso de pregunta y respuesta entre el ordenador y el periférico toma el nombre


de protocolo (handshaking). Generalmente, este término indica una clase de comunicación
entre los dos dispositivos, en los que a la transferencia de datos se le añaden señales
adecuadas denominadas handshake (permiso de tráfico), que comunican la petición de un
dato por parte de un dispositivo, la disponibilidad del dato por parte del otro y finalmente su
recepción por parte del primero.
Se trata de una comunicación real que representa ya sea una entrada, o una salida de
datos para el ordenador. Si el dispositivo está listo para transmitir un dato, el ordenador,
antes de leerlo del registro del periférico, tiene que cerciorarse de que esté actualizado,
analizando un bit especial del registro de estado del periférico. Análogamente, si el
ordenador transmite un dato al periférico tiene que verificar que esté listo para recibirlo, y
más tarde controlar que haya recibido dicho dato antes de realizar cualquier otro proceso.
Veamos las ventajas y desventajas de esta técnica. Comencemos por estas últimas. El ciclo
de polling puede resultar lento, porque si un periférico solicita una tarea inmediatamente
después de haber sido interrogado tiene que esperar a que sean interrogados y,
eventualmente, se les asigne tareas a todos los demás periféricos, lo que provoca un
retraso intolerable en aplicaciones delicadas.
Por otra parte, el polling es una técnica de comunicación software, ya que
prácticamente no necesita hardware: de hecho, el proceso de recepción y transmisión se
realiza bajo el control del programa.

337
Interrupciones (interrupts)

Por el contrario, la técnica que aprovecha las interrupciones es mixta: software +


hardware adicional, que permite una mayor velocidad para atender a las peticiones.
Refiriéndonos al esquema de la figura 20, vemos que el periférico solicita servicios al
ordenador por medio de una señal enviada en la línea de interrupciones.

Fig. 20. Técnica de interrupciones (interrups).

El ordenador reconoce la petición (2 en la figura), suspende el programa en ejecución,


atiende al periférico (3 en la figura), y vuelve al programa que se había interrumpido.
Veamos más detalladamente cómo se realizan estas operaciones. Cuando la CPU
recibe una interrupción, salva el estado actual del programa en ejecución, grabando en una
determinada zona de memoria la información necesaria para poder continuar, atendida la
interrupción, con la correcta ejecución del programa: dicha información es el contenido del
CP (contador de programa), o sea, la dirección de la instrucción con la que se tiene que
continuar la ejecución del programa y el contenido del registro de estado, si éste existe.
Después de esta operación, que toma el nombre de «salva», se le asigna una determinada
rutina al periférico que pidió la interrupción. Una vez concluida la ejecución de la rutina de
servicio, el control vuelve al programa interrumpido. Previamente se realiza una operación
para restablecer las condiciones que se grabaron en memoria en el momento de la
interrupción.
Con esta descripción es fácil entender que se trata de una gestión asíncrona, o sea, no
controlada por programa. La gestión de entrada/salida (I/O) de este tipo es más
complicada, ya que no se puede prever el momento en el que serán transmitidos los datos.
Además, cuando hay más de un dispositivo conectado, es necesario asignar
prioridades de servicio para el caso de peticiones simultáneas. Esto se realiza agrupando
todos los dispositivos según niveles de prioridad.
Es necesario saber que la asignación de los niveles de prioridad para los periféricos se
determina en la fase de implantación y que una mala elección puede crear graves
problemas. La situación ideal se logra conectando un único periférico a cada nivel de
prioridad. En este caso, las peticiones simultáneas se ponen en cola y son atendidas según
su prioridad. Por el contrario, si más de un dispositivo se asocia a un mismo nivel de
prioridad, cuando la CPU recibe una interrupción tiene que poder determinar cuál es el
periférico que la provocó, bien por software, bien por hardware.
Esta técnica, aun siendo muy rápida gracias al programa, necesita un hardware
complicado y una programación difícil.

338
Transferencia DMA

Para realizar la transferencia DMA es necesario disponer de un procesador capaz de


efectuarla. Se trata de una técnica hardware que utiliza un dispositivo particular para
efectuar la transferencia de bloques de datos desde y para la memoria del ordenador, sin
interrumpir el programa en ejecución.
Cuando existe una transferencia DMA, la CPU interviene sólo en el momento de lanzar
la operación y después la transferencia sigue su proceso de manera autónoma por medio de
hardware. Naturalmente, también intervienen el bus de datos y el bus de direcciones. Las
operaciones de la CPU sólo se interrumpen momentáneamente para liberar estos buses y
poder efectuar la transferencia en DMA. La señal de parada enviada al procesador central se
denomina hold, y la contestación desde la CPU, ack (acknowledgement: reconocimiento).
Prácticamente, la gestión de las interrupciones (interrupts), que en la técnica anterior las
realizaba el procesador central, ahora están a cargo, con el DMA, de un dispositivo
particular denominado, precisamente, DMA. En el esquema de la figura 21 se puede ver su
funcionamiento.

Fig. 21. Esquema de un DMA.

El DMA permite que el programa se ejecute utilizando el modo asíncrono con respecto
a la transferencia de los datos. Al final de la trasmisión, el procesador central es avisado por
medio de una interrupción. Se trata de dispositivos caros y se usan cuando se necesita una
transferencia rápida como en los discos, en las cintas o en las pantallas.
No es nunca tarea fácil realizar la programación necesaria para efectuar las
entradas/salidas de un ordenador. Por eso siempre existen programas estándar
proporcionados por las casas constructoras junto con el ordenador, para gestionar los
periféricos. El conjunto de estos programas toma el nombre de sistema de control para la
I/O, conocido como IOCS (Input/output Control System).

339
GLOSARIO

Soporte de papel en forma de cinta en la que se representan


Banda
los datos, carácter a carácter, por medio de adecuadas
perforada
combinaciones de perforaciones.
Registro o conjunto de registros de un periférico en el que
transitan los datos de entrada y salida. También zona de
Buffer de I/O
memoria del ordenador utilizada para realizar las
operaciones de I/O.
Código Es el código que se utiliza para representar los caracteres en
Hollerith una ficha con las adecuadas combinaciones de perforaciones.
Indicador luminoso intermitente que se encuentra, a cada
Cursor
instante, en la posición disponible de la pantalla.
Técnica hardware de I/O, gestionada por un dispositivo
DMA (Direct denominado DMA. Se utiliza para transferencias rápidas de
Memory grandes cantidades de datos entre un periférico y la
Access- memoria central. No necesita el control de la CPU, sino sólo
Acceso Directo una cortísima suspensión de su actividad para dejar
a Memoria) disponibles los buses en los que se realiza la transferencia de
datos.
Soporte de papel para el registro de los datos de entrada y
Ficha perforada salida del ordenador. Cada carácter se puede
perforada identificar a través de una determinada configuración de
perforaciones en posiciones adecuadas.
Técnica de impresión en la que los caracteres se imprimen
Impresión con
sobre el papel por medio del contacto mecánico entre la hoja
impacto
y el dispositivo de impresión utilizando una cinta entintada.
Técnica de impresión, que utiliza procesos químicos,
Impresión sin
magnéticos o eléctricos, en la que no existe el contacto entre
impacto
el papel y el dispositivo de impresión.
Dispositivo de salida que proporciona los resultados de los
Impresora procesos, impresos sobre hojas de papel, de manera
inteligible por el hombre.
Impresoras en Imprimen simultáneamente (o casi) todos los caracteres de
paralelo una línea en diferentes posiciones.
Impresoras en
Imprimen, uno tras otro, los caracteres de una línea.
serie
Desde el punto de vista de hardware, es el conjunto de
dispositivos que permiten la conexión entre ellos de dos o
Interfase más componentes de un sistema; con referencia al software,
es el conjunto de programas que gestionan tales
dispositivos.
Interrupciones Técnica de I/O mixta hardware + software en la que la
(interrupts) transferencia de un dato se realiza por la petición de un
periférico que interrumpe el proceso del programa en
ejecución. En los problemas relativos a la identificación del
periférico que demanda tareas y en la definición de prioridad

340
para peticiones simultáneas, es necesario hardware
adicional. El servicio de las demandas tiene carácter
software y se realiza por medio de rutinas denominadas de
«servicio».
IOCS
Conjunto de programas estándar generalmente
(Input/Output
proporcionados por las casas constructoras para la gestión
Control
de las operaciones de entrada y salida.
System)
Joystick
Es una palanca direccional que puede moverse manualmente
(palanca
para dirigir el movimiento de un punto en la pantalla.
direccional)
Lectora de Dispositivo de entrada por medio del cual se introducen en el
fichas ordenador los programas y los datos sobre fichas perforadas.
Perforadora de Dispositivo de salida conectado al ordenador. Los resultados
fichas de los procesos se obtienen bajo forma de fichas perforadas.
Dispositivo de salida que, aprovechando el desplazamiento
Plotter vertical de la hoja de papel y el desplazamiento horizontal de
una pluma, realiza la impresión de gráficos y dibujos.
Técnica software de I/O, en la que la transferencia de datos
Polling se realiza bajo el control de un programa que interroga
(Interrogatorio cíclicamente a los periféricos. La transferencia se realiza sólo
de tráfico) si el periférico que lo demanda es interrogado por el
programa.
Registro interno de un dispositivo (unidad central o
periférico) que proporciona, por medio del estado de sus
Registro de
bits, la información acerca del estado del dispositivo. Por ej.
estado
la petición de un dato, disponibilidad de un dato, el buffer de
I/O ocupado, etc.
Modalidad de comunicación y transferencia de datos entre
Técnicas de
los periféricos y la unidad central, con referencia tanto al
I/O
aspecto hardware como al software.
Dispositivo de I/O formado por un teclado alfanumérico por
el que se introducen los datos y los programas en el
Terminal
ordenador sin pasar a través de soportes intermedios, o por
una impresora o por una pantalla.

341
CONCLUSIÓN

342
CONCLUSIÓN FINAL

343
BIBLIOGRAFÍA

UNLaR - Procesamiento de Datos I – Ciclo 2003


Pagina 1
http://unlar.estudio3.com.ar
BIBLIOGRAFIA
CARRERA: LICENCIATURA EN ANALISIS DE SISTEMAS –
INGENIERIA EN SISTEMAS
Cátedra: Procesamiento De Datos I
Profesor: Lic. Marcelo Martinez
AÑO: 2003
Básica
Introducción a la Informática LL Guillera Aguera EDUNSA
Operación Programación de Computadoras M.C. Ginzburg
La PC por Dentro M.C. Ginzburg Bibioteca Técnica
Superior
Sistemas de Micro computación Ivan Flores El Atenero
Organización de Computadoras Andrew S. Tanenmaum Prentice Hall
Sistemas Operativos Modernos Andrew S. Tanenmaum Prentice may
Principios de Procesamiento de Datos Gordon B. Davis Trillas
Apuntes de la Cátedra Marcelo Martinez Sitio de la Cátedra
en Internet y Copias
Apuntes de la Cátedra Claudia Cesarini Sitio de la Cátedra
en Internet y Copias
Enciclopedia Audiovisual de Computación Océano Multimedia
Fundamentos de computadores Digitales Thomas C. Bartee
Complementaria
Matemáticas para Computación McGraw Hill Seymour Lipschutz
Informática – Glosario de Términos McGraw Hill Antonio Vaquero y Luis
Joyanes
PC Interno Boixareu – Editores Data Becker

344

You might also like