Está en la página 1de 76

INSTITUTO TECNOLÓGICO DE

TAPACHULA

CARRERA
INGENIERÍA EN SISTEMAS
COMPUTACIONALES
ASIGNATURA
ARQUITECTURA DE COMPUTADORAS
DOCENTE
ING. ROSEL MUÑOZ LÓPEZ
TRABAJO
ARQUITECTURAS DE CÓMPUTO
ESTUDIANTES
DE LA PARRA AGUIRRE RICARDO
ENRIQUE
LABRAS CASTILLO PHIL
RUÍZ CRUZ JESÚS

U
NIDAD

1
TAPACHULA, CHIS.
05 DE OCTUBRE DE 2015
CONTENIDO
UNIDAD 1
1 Arquitecturas de cómputo
1.1 Modelos de arquitecturas de cómputo.
1.1.1 Clásicas.
1.1.2 Segmentadas.
1.1.2.1 Pipe-line
1.1.3 De multiprocesamiento.
1.1.3.1 Clasificación
1.2 Análisis de los componentes.
1.2.1 CPU.
1.2.1.1 Arquitecturas.
1.2.1.1.1 Arquitectura Cisc.
1.2.1.1.2 Arquitectura Risc.
1.2.1.2 Tipos.
1.2.1.3 Características.
1.2.1.4 Funcionamiento (ALU, unidad de control,
registros y buses internos.
1.2.2 Memoria.
1.2.2.1 Conceptos básicos del manejo de la memoria.
1.2.2.2 Memoria principal semiconductora.
1.2.2.2.1 Tipos de memorias semiconductoras de
acceso aleatorio.
1.2.2.2.2 Organización.
1.2.2.2.3 Lógica del chip
1.2.2.3 Memoria caché.
1.2.2.3.1 Elementos de diseño de la cache.
1.2.3 Manejo de la entrada/salida.
1.2.3.1 Módulos de entrada/salida.
1.2.3.2 Entrada/salida programada.
1.2.3.3 Entrada/salida mediante interrupciones.
1.2.3.4 Acceso directo a memoria.
1.2.3.5 Canales y procesadores de entrada/salida.
1.2.4 Buses.
1.2.4.1 Tipos de buses.
1.2.4.2 Estructura de los buses.
1.2.4.3 Jerarquías de buses.
2 | 76
1.2.5 Interrupciones.
INDICE
Introducción Página
1.1 Modelos de arquitecturas de cómputo. 5
1.1.1 Clásicas. 7
1.1.2 Segmentadas. 9
1.1.2.1 Pipe-line 11
1.1.3 De multiprocesamiento. 11
1.1.3.1 Clasificación 13

1.2 Análisis de los componentes. 16


1.2.1 CPU. 16
1.2.1.1 Arquitecturas. 18
1.2.1.1.1 Arquitectura Cisc. 19
1.2.1.1.2 Arquitectura Risc. 21
1.2.1.2 Tipos. 23
1.2.1.3 Características. 28
1.2.1.4 Funcionamiento (ALU, unidad de control, registros y buses internos). 29

1.2.2 Memoria. 38
1.2.2.1 Conceptos básicos del manejo de la memoria. 38
1.2.2.2 Memoria principal semiconductora. 40
1.2.2.2.1 Tipos de memorias semiconductoras de acceso aleatorio. 40
1.2.2.2.2 Organización. 43
1.2.2.2.3 Lógica del chip 43
1.2.2.3 Memoria caché. 44
1.2.2.3.1 Elementos de diseño de la cache. 46

1.2.3 Manejo de la entrada/salida. 47


1.2.3.1 Módulos de entrada/salida. 48
1.2.3.2 Entrada/salida programada. 49
1.2.3.3 Entrada/salida mediante interrupciones. 53
1.2.3.4 Acceso directo a memoria. 55
1.2.3.5 Canales y procesadores de entrada/salida. 57

1.2.4 Buses. 58
1.2.4.1 Tipos de buses. 60
1.2.4.2 Estructura de los buses. 67
1.2.4.3 Jerarquías de buses. 70

1.2.5 Interrupciones. 72
Conclusión

3 | 76
Bibliografía
INTRODUCCION

La computadora está diseñada para cumplir con las tareas cotidianas que
realizamos en ella, pero ¿conocemos cómo es su funcionamiento interno para que
realice nuestras tareas? En el presente reporte de investigación se aprenderá a
ver más allá de la simple vista humana a un computador. Se conocerá el trabajo
de cada uno de los componentes que hacen posible la interacción máquina-
usuario cumpliendo sus respectivas acciones y trabajos que éstos solicitan. Se
observará detalladamente cada una de las operaciones que interceden con sus
respectivos procedimientos y necesidades que surgen al momento del trabajo.
Teniendo como punto de partida desde el aparentemente “sencillo” uso del teclado
y ratón, y que al parecer todo es muy simple, hasta cada uno de los circuitos que
son necesarios para llevar a cabo un simple clic, hasta algo tan complejo como la
misión tan importante que representa la CPU para el sistema computacional.

4 | 76
UNIDAD 1.- ARQUITECTURA DE CÓMPUTO

1.1 Modelos de arquitecturas de cómputo.


Se han diseñado y construido cientos de tipos distintos de computadoras durante
la evolución de la computadora digital moderna. Casi todos se han perdido en el
olvido, pero unos cuantos han tenido un impacto importante sobre las ideas
modernas. La arquitectura de computadoras se refiere a los atributos de un
sistema que son visibles a un programador, o para decirlo de otra manera,
aquellos atributos que tienen un impacto directo en la ejecución lógica de un
programa. Entre los ejemplos de atributos arquitectónicos se encuentran el
conjunto de instrucciones, el número de bits usados para representar varios tipos
de datos (ej. Números, caracteres), mecanismos de E/S y técnicas para
direccionamiento de memoria.
La arquitectura de computadoras es el diseño conceptual y la estructura
operacional fundamental de un sistema de computadora, es decir, es un modelo y
una descripción funcional de los requerimientos y las implementaciones de diseño
para varias partes de una computadora, también suele definirse como la forma de
seleccionar e interconectar componentes de hardware para crear computadoras
según los requerimientos de funcionalidad, rendimiento y costo.
La siguiente tabla muestra algunos acontecimientos más importantes de la
evolución de las computadoras.1
Año Nombre Hecho por Comentario
1834 Máquina analítica Babbage Primer intento por construir una
computadora digital
1936 Z1 Zuse Primera máquina calculadora de
relevadores funcional
1943 COLOSSUS Gobierno inglés Primera computadora electrónica
Primera computadora
1944 Mark l Aiken estadounidense de propósito
general
1946 ENIAC l Eckert/Mauchle Inicia la historia moderna de la
y computación
1949 EDSAC Wikes Primera computadora de
programa almacenado
1951 Whielwind l M.I.T Primera computada de tiempo
lineal
1952 IAS Von Newman Casi todas las máquinas actuales
emplean este diseño
1 Organización de computadoras un enfoque estructurado. Tanenbaum, AS. P.
14.
5 | 76
1960 PDP-1 DEC Primera minicomputadora
1961 1401 IBM Máquina pequeña para negocios
1962 7094 IBM Dominó la computación científica
1963 B5000 Burroughs Primera máquina diseñada para
un lenguaje de alto nivel
1964 360 IBM Primera línea de productos
diseñada como familia
1964 6600 CDC Primera supercomputadora
científica
1965 PDP-8 DEC Primera minicomputadora con
mercado masivo
1970 PDP-11 DEC Dominó las minicomputadoras
1974 8080 Intel Primera computadora de
propósito general de 8 bits en un
chip
1974 CRAY-1 Cray Primera supercomputadora
vectorial
1978 VAX DEC Primera superminicomputadora
de 32 bits
1981 IBM PC IBM Inició la era de la computadora
personal moderna
1983 HP150 Hewlett Packard Primera computadora táctil
1985 MIPS MIPS Primera máquina RISC comercial
1987 SPARC Sun Primera estación de trabajo RISC
basada en SPARC
1990 RSC6000 IBM Primera máquina superescalar
1998 iMac Apple Primera fuera del legado de las
PC con un puerto USB sin disco
floppy
En su momento fue la
2003 Power Mac G5 Apple computadora personal más rápida
del mercado
Dell XPS 13 Primera laptop con sistema
2007 Developer Edition Dell operativo Ubuntu Linux
con Ubuntu preinstalado
2008 Macbook Air Apple La laptop más delgada
2011 Chromebook Google Primera laptop con Chrome OS
Cuenta con un proyector que
hace que la superficie se
convierta en una segunda
2015 HP Sprout Hewlett Packard pantalla y un sistema de cámaras
3D que permiten capturar
cualquier objeto del mundo
real que pongas en esta

6 | 76
superficie para ingresarlo en el
ordenador.

1.1.1 Clásicas
Estas arquitecturas se desarrollaron en las primeras computadoras
electromecánicas y de tubos de vacío. Aún son usadas en procesadores
empotrados de gama baja y son la base de la mayoría de las arquitecturas
modernas.
Arquitectura Mauchley-Eckert (John von Newman)
En 1943, Mauchley y su estudiante de posgrado, J. Presper Eckert, procedieron a
construir una computadora electrónica a la que llamaron ENIAC (Electronic
Numerical Integrador And Computer). ENIAC consiste en 18,000 bulbos y 1500
relevadores, pesaba 30 toneladas y consumía 140 KW de potencia. En términos
de arquitectura, la máquina tenía 20 registros, cada uno capaz de almacenar un
número decimal de 10 dígitos. ENIAC se programaba ajustando 6000 interruptores
de multiposición y conectando numerosas bases con una verdadera maraña de
cables interconectores.
Von Newman se dio cuenta de que el programa podía representarse en forma
digital en la memoria de la computadora, junto con los datos. Él percibió también
que la torpe aritmética decimal en serie utilizada por ENIAC, en la que cada dígito
estaba representado por 10 bulbos podía ser sustituida por una aritmética binaria.
El diseño básico, que él describió por primera vez, ahora se conoce como
máquina de von Newman. Se usó en EDSAC, la primera computadora de
programa almacenado, y sigue siendo la base de casi todas las computadoras
digitales aun ahora. La siguiente figura muestra la máquina de von Newman.

7 | 76
La máquina de von Newman2 tiene cinco partes básicas: la memoria, la unidad
aritmética lógica (ALU), la unidad de control y el equipo de entrada y salida. La
memoria constaba de 4096 palabras, cada una de las cuales contenía 40 bits que
podían ser 0 o 1. Cada palabra contenía dos instrucciones de 20 bits o bien un
entero con signo de 40 bits. Ocho bits de cada instrucción estaban dedicados a
indicar el tipo de instrucción, y 12 bits se dedicaban a especificar una de las 4096
palabras de memoria.
Dentro de la unidad de aritmética lógica había un registro interno especial de 40
bits llamado acumulador. Una instrucción típica sumaba una palabra de la
memoria al acumulador o almacenaba el contenido del acumulador en la memoria.
Esta arquitectura consiste en una unidad central de proceso que se comunica a
través de un solo bus con un banco de memoria en donde se almacenan tanto los
códigos de instrucción del programa" como los datos que serán procesados por
este. La principal desventaja de esta arquitectura" es que el bus de datos y
direcciones único se convierte en un cuello de botella por el cual debe pasar toda
la información que se lee de o se escribe a la memoria" obligando a que todos los
accesos a esta sean secuenciales.
Arquitectura Harvard
El término Arquitectura Harvard originalmente se refería a las arquitecturas de
computadoras que utilizaban dispositivos de almacenamiento físicamente
separados para las instrucciones y para los datos (en oposición a la Arquitectura
von Neumann). El término proviene de la computadora Harvard Mark I, que
almacenaba las instrucciones en cintas perforadas y los datos en interruptores.
Esta arquitectura surgió en la universidad del mismo nombre poco después de que
la arquitectura, von Newman apareciera en la universidad de Princeton. Al igual
que en la arquitectura, von Newman el programa se almacena como un código
numérico en la memoria pero no en el mismo espacio de memoria ni en el mismo
formato que los datos. Por ejemplo se pueden almacenar las instrucciones en
doce bits en la memoria de programa mientras los datos de almacenan en 4 bits
en una memoria aparte. En la siguiente figura se muestra la arquitectura Harvard.

2 Tanenbaum, AS. Organización de computadoras un enfoque estructurado, p.


18
8 | 76
Ambos buses son totalmente independientes lo que permite que la CPU pueda
acceder de forma independiente y simultánea a la memoria de datos y a la de
instrucciones. Como los buses son independientes éstos pueden tener distintos
contenidos en la misma dirección y también distinta longitud. También la longitud
de los datos y las instrucciones puede ser distinta, lo que optimiza el uso de la
memoria en general.
El hecho de tener un bus separado para el programa y otro para los datos permite
que se lea el código de operación de una instrucción, al mismo tiempo se lee de la
memoria de datos los operados de la instrucción previa. Así se evita el problema
del cuello de botella de von Newman y se obtiene un mejor desempeño.
En la actualidad la mayoría de los procesadores modernos se conectan al exterior
de manera similar a la arquitectura von Newman, con un banco de memoria
masivo único, pero internamente incluyen varios niveles de memoria caché con
bancos separados en caché de programa y caché de datos, buscando un mejor
desempeño sin perder la versatilidad.

1.1.2 Segmentadas
Estas arquitecturas surgen por la necesidad de aumentar la velocidad de
procesamiento. En ellas, lo que se buscaba era mejorar el desempeño realizando
paralelamente varias etapas del ciclo de instrucción al mismo tiempo. Esto se
logra, debido a que el procesador se divide en varias unidades funcionales e
independientes las cuales se dividen entre ellas el procesamiento de las
instrucciones. Y entonces, ir transformando un flujo de datos en un proceso
comprendido por varias fases secuenciales, siendo la entrada de cada una de las
salidas de la anterior.
Supongamos que un procesador simple tiene un ciclo de instrucción sencillo
consistente solamente en una etapa de búsqueda del código de instrucción y en
otra etapa de ejecución de la instrucción. En un procesador sin segmentación del

9 | 76
cauce, las dos etapas se realizarían de manera secuencial para cada una de las
instrucciones, como lo muestra la siguiente figura.

En un procesador con segmentación del cause, cada una de estas etapas se


asigna a una unidad funcional diferente, la búsqueda a la unidad de búsqueda y la

ejecución a la unidad de ejecución. Estas unidades pueden trabajar en forma


paralela en instrucciones diferentes. Estas unidades se comunican por medio de
una cola de instrucciones en la que la unidad de búsqueda coloca los códigos de
instrucción que leyó para que la unidad de ejecución los tome de la cola y los
ejecute. Esta cola se parece a un tubo donde las instrucciones entran por un
extremo y salen por el otro. De esta analogía proviene el nombre en inglés:
Pipelining o entubamiento.
En un procesador con segmentación, la unidad de búsqueda comenzaría
buscando el código de la primera instrucción en el primer ciclo de reloj. Durante el
segundo ciclo de reloj, la unidad de búsqueda obtendría el código de la instrucción
2, mientras que la unidad de ejecución ejecuta la instrucción 1 y así
sucesivamente. La siguiente figura muestra este proceso.

Con la implementación de este modelo se logró realizar más procesos al mismo


tiempo, sin embargo, esto no fue sinónimo de rapidez.
Esto debido a que no todos los procesos se toman el mismo tiempo para
ejecutarse, lo que ocasiona una gran competencia respecto al uso de los recursos
del CPU.
Sin embargo, esta arquitectura es muy común en el desarrollo de programas para
el intérprete de comandos, ya que se pueden concatenar comandos fácilmente
con tuberías (pipe).
Pipe-line
10 | 76
Consiste en la segmentación del procesador, a lo que llamamos "pipe-line",
descomponiéndolo en etapas para poder procesar una instrucción diferente en
cada una de ellas y trabajar con varias a la vez. La arquitectura en pipeline
(basada en filtros) consiste en ir transformando un flujo de datos en un proceso
comprendido por varias fases secuenciales, siendo la entrada de cada una la
salida.
Es importante tener en cuenta que la arquitectura pipe-line se aplica en dos
lugares de la maquina: en la CPU y en la ALU.
Las pipe-lines, tienen diversas aplicaciones en informática, tales como:
Pipe-lines gráficos: por lo general encontrados en tarjetas gráficas, consiste en
múltiples unidades aritméticas o CPUs completas, que implementan variados
escenarios de operaciones típicas de renderizado. Ejemplo: cálculos de luz y
colores, renderizado, proyección de perspectiva, etc...
Pipe-lines de software o tuberías: consiste en múltiples procesos ordenados de tal
forma que el flujo de salida de un proceso alimenta la entrada del siguiente
proceso. Ejemplo: los pipelines de Unix.

1.1.3 De Multiprocesamiento3
El uso de varios procesadores está motivado por consideraciones relativas a las
prestaciones y a la fiabilidad. Podemos clasificar dichos sistemas como sigue:
 Multiprocesadores Débilmente Acoplados: Consisten en un conjunto de
sistemas relativamente autónomos, en los que cada CPU dispone de su
propia memoria principal y sus canales de E/S. En este contexto se utiliza el
término multicomputador.
 Procesadores de Uso Específico: Tales como un procesador de E/S. En
este caso, hay un maestro, una CPU de uso general, y los procesadores de
uso específico están controlados por la CPU maestra a la que proporcionan
ciertos servicios.
 Multiprocesadores Fuertemente Acoplados: Constituidos por un conjunto de
procesadores que comparten una memoria principal común y están bajo el
control de un mismo sistema operativo.
 Procesadores Paralelos: Multiprocesadores fuertemente acoplados que
pueden cooperar en la ejecución en paralelo de una tarea o un trabajo.
Características clave de un multiprocesador:
1. Posee dos o más procesadores de uso general similares y de capacidades
comparables.

3 Strallings, W. Organización y Arquitectura de Computadoras, p 575.


11 | 76
2. Todos los procesadores comparten el acceso a una memoria global
(común). También pueden utilizarse algunas memorias locales (privadas).
3. Todos los procesadores comparten el acceso a los dispositivos de E/S, bien
a través de los mismos canales bien a través de canales distintos que
proporcionan caminos de acceso los mismos dispositivos.
4. El sistema está controlado por un sistema operativo integrado que permite
la interacción entre los procesadores y sus programas en los niveles de
trabajo, tarea, fichero, y datos elementales.
Organización
La siguiente figura describe en términos generales la organización de un sistema
multiprocesador. Hay dos o más CPUs. Cada CPU es autónoma, incluyendo una
unidad de control, una ALU, registros, y, posiblemente, caché. Cada CPU tiene
acceso a una memoria principal compartida y a dos dispositivos de E/S a través de
algún mecanismo de interconexión. Los procesadores pueden comunicarse entre
sí a través de la memoria (mensaje e información de control almacenadas en
áreas comunes para datos). También es posible que las CPUs intercambien
señales directamente, como indican las líneas discontinuas. La memoria a
menudo se organiza de forma que sean posibles los accesos simultáneos a
bloques de memoria separados.

1.1.3.1 Clasificación.

12 | 76
Cuando la técnica de Segmentación no es suficiente y se desea incrementar el
desempeño más allá, se requiere utilizar más de un procesador para la ejecución
del programa de aplicación.
Las CPU de multiprocesamiento se clasifican de la siguiente manera:
● SISO – (Single Instruction, Single Operand) computadoras independientes
● SIMO – (Single Instruction, Multiple Operand) procesadores vectoriales
● MISO – (Multiple Instruction, Single Operand) No implementado
● MIMO – (Multiple Instruction, Multiple Operand) sistemas SMP, Clusters

SISO – (Single Instruction, Single Operand) computadoras independientes


Es el modelo tradicional de computación secuencial donde una unidad de
procesamiento recibe una sola secuencia de instrucciones que operan en una
secuencia de datos. Véase la siguiente figura.

SIMO – (Single Instruction, Multiple Operand) procesadores vectoriales


A diferencia de SISD, en este caso se tienen múltiples procesadores que
sincronizadamente ejecutan la misma secuencia de instrucciones, pero en
diferentes datos. El tipo de memoria que estos sistemas utilizan es distribuida.
Véase la siguiente figura.

13 | 76
MIMO – (Multiple Instruction, Multiple Operand) sistemas SMP, Clusters
Este tipo de computadora es paralela al igual que las SIMo, la diferencia es que
MIMO es asíncrono. Se tienen N procesadores, N secuencias de instrucciones y N
secuencias de datos. Cada procesador es capaz de ejecutar su propio programa
con diferentes datos. Esto significa que los procesadores operan asíncronamente,
o en términos simples, pueden estar haciendo diferentes cosas en diferentes datos
al mismo tiempo. Véase la siguiente figura.

Sistemas de Memoria Compartida


Las computadoras MIMD con memoria compartida son sistemas conocidos como
de multiprocesamiento simétrico (SMP) donde múltiples procesadores comparten
un mismo sistema operativo y memoria. Otro término con que se le conoce es
máquinas firmemente juntas o de multiprocesadores. Véase la siguiente figura.

14 | 76
Sistemas de Memoria Distribuida
Estos sistemas tienen su propia memoria local. Los procesadores pueden
compartir información solamente enviando mensajes, es decir, si un procesador
requiere los datos contenidos en la memoria de otro procesador, deberá enviar un
mensaje solicitándolos.
Las computadoras MIMO de memoria distribuida son conocidas como sistemas de
procesamiento en paralelo masivo (MPP) donde múltiples procesadores trabajan
en diferentes partes de un programa, usando su propio sistema operativo y
memoria. Véase la siguiente figura.

Sistemas de memoria Compartida distribuida


Es una partición de procesadores que tienen acceso a una memoria compartida
común pero sin un canal compartido. Esto es, físicamente cada procesador posee
su memoria local y se interconecta con otros procesadores por medio de un
dispositivo de alta velocidad, y todos ven las memorias de cada uno como un
espacio de direcciones globales. Véase la siguiente figura.

15 | 76
1.2 Análisis de los componentes.
Un computador es un sistema complejo; los computadores de hoy en día
contienen millones de componentes electrónicos básicos, ¿Cómo podríamos
describirlos claramente? La clave está en reconocer la naturaleza jerárquica de la
mayoría de los sistemas complejos, incluyendo el computador. Un sistema
jerárquico es un conjunto de sistemas interrelacionados, cada uno de los cuales se
organiza en una estructura jerárquica, uno tras otro, hasta que alcanza el nivel
más bajo de subsistema elemental.
La naturaleza jerárquica de los sistemas complejos, es esencial tanto para su
diseño como para su descripción. En cada nivel el sistema consta de un conjunto
de componentes y sus interrelaciones.
1.2.1 CPU
La CPU (Unidad Central de Procesamiento, Central Processing Unit) es un circuito
microscópico que interpreta y ejecuta instrucciones. Las CPU de las actuales
computadoras son microprocesadores construidos sobre un cristal de silicio
semiconductor donde se crean todos los elementos que forman un circuito
electrónico (transistores, etc.) y las conexiones necesarias para formarlo.
El microcircuito se encapsula en una pastilla de plástico con una serie de
conexiones hacia el exterior, en forma de patillas metálicas, que forman su nexo
de unión al resto del sistema informático. Estas pastillas de plástico, con una
multitud de patillas de conexión metálicas, reciben el nombre de chips.
La CPU se ocupa del control y el proceso de datos en las computadoras.
Generalmente, la CPU es un microprocesador fabricado en un chip, un único trozo
de silicio que contiene millones de componentes electrónicos. Es el “cerebro” de la
computadora. Los componentes están conectados por un bus, que es una
colección de alambres paralelos para transmitir direcciones, datos y señales de
control. Los buses pueden ser externos a la CPU, cuando la conectan a la
memoria y a los dispositivos de E/S, pero también internos.
Un microprocesador combinado con los módulos de memoria y de interconexión
se llama microcomputador. La palabra micro se usa para indicar el pequeño
tamaño físico de los componentes integrantes. La segunda parte de la palabra en
microprocesador y microcomputador es lo que realmente los diferencia.
Procesador se usa para indicar aquella sección del sistema, la cual ejecuta las
funciones básicas para realizar instrucciones y procesar datos de la manera
especificada por el programa. Esta parte se llama usualmente el CPU. El término
microcomputador se usa para indicar un sistema de computador de pequeño
tamaño consistente de tres unidades básicas: CPU, memoria e interconexión de
entrada-salida. El microprocesador se encapsula comúnmente en un CI y se llama
pastilla de microprocesador. Un microcomputador se refiere, en la mayoría de los
casos, a una interconexión con componentes LSI. Por otra parte, algunas pastillas
16 | 76
microprocesadores incluyen dentro de la cápsula no solamente el CPU sino una
parte de la memoria. Tal componente LSI se llama algunas veces
microcomputador de una cápsula. En la siguiente figura se muestra los bloques
del sistema de microcomputador.

1.2.1.1 Arquitecturas
El cambio más importante de los últimos años en diseño de las computadoras de
los últimos años se dio durante los años 1980, con la aparición de la corriente de
diseño conocida como computadoras de conjunto reducido de instrucciones
(RISC, por sus siglas en ingles).
La tendencia tradicional, representada por las Arquitecturas CISC (Complex
Instruction Set Computing) se caracteriza por tener un número amplio de
instrucciones y modos de direccionamiento. Se implementan instrucciones
especiales que realizan funciones complejas, de manera que un programador
puede encontrar con seguridad, una instrucción especial que realiza en hardware
la función que el necesita. El número de registros del CPU es limitado, ya que las
compuertas lógicas del circuito integrado se emplean para implementar las
secuencias de control de estas instrucciones especiales. Los compiladores de
lenguajes de alto nivel no hacían uso de las instrucciones especiales

17 | 76
implementadas en los procesadores CISC, por lo que resultaba un desperdicio de
recursos emplear las compuertas del circuito de esta forma.
Así surgió la escuela de diseño RISC (Reduced Instruction Set Computing) donde
solo se cuenta con unas pocas instrucciones y modos de direccionamiento, pero
se busca implementarlos de forma muy eficiente y que todas las instrucciones
trabajen con todos los modos de direccionamiento. Además, se observó que una
de las tareas que tomaban más tiempo en ejecutarse en lenguajes de alto nivel,
era el pasar los parámetros a las subrutinas a través de la pila. Como la forma
más rápida de hacer este paso es por medio de registros del CPU, se buscó
dotarlo con un amplio número de registros, a través de los cuales se pueden pasar
dichos parámetros.
1.2.1.1.1 Arquitecturas CISC
La microprogramación es una característica importante y esencial de casi todas
las arquitecturas CISC, podríamos mencionar por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.
La microprogramación significa que cada instrucción de máquina es interpretada
por una microprograma localizada en una memoria en el circuito integrado del
procesador. En la década de los sesentas la microprogramación, por sus
características, era la técnica más apropiada para las tecnologías de memorias
existentes en esa época y permitía desarrollar también procesadores con
compatibilidad ascendente. En consecuencia, los procesadores se dotaron de
poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con
una serie de microinstrucciones almacenadas en una ROM interna. Para esto se
requieren de varios ciclos reloj (al menos uno por microinstrucción).
Características CISC frente a RISC4
Tras el entusiasmo inicial por la máquina RISC, ha habido una creciente
convicción de que los diseños RISC pueden sacar provecho de la inclusión de
algunas características CISC y de que los diseños CISC pueden sacar provecho
de la inclusión de algunas características RISC. Los resultados son que los
diseños RISC son más recientes.
Una comparación interesante se muestra en la figura siguiente. La tabla lista
varios procesadores y los compara según varias características. Para el objetivo
de esta comparación, se considera típico de un RISC lo siguiente:
1. Un único tamaño de instrucción.
4 Strallings, W. Organización y Arquitectura de Computadoras, pag 451
18 | 76
2. Ese tamaño es típicamente 4 bytes.
3. Un pequeño número de modos de direccionamiento de datos, típicamente
mayor que 5.
4. No se usa direccionamiento indirecto que requiera efectuar un acceso a
memoria para conseguir la dirección de memoria de otro operando.
5. No hay operaciones que combinen carga/almacenamiento con cálculos
aritméticos.
6. No se direcciona más de un operando de memoria por instrucción.
7. Las operaciones de carga/almacenamiento no soportan un alineamiento de
datos arbitrarios.
8. Un número máximo de usos de la unidad de la gestión de memoria

(“memory managament unit”, MMU) de una dirección de dato en cada


instrucción.
9. El número de bits de un campo designador de registro entero es de cinco o
más. Esto quiere decir que, en un momento dado, se pueden referenciar
explícitamente por lo menos 32 registros enteros.
10. El número de bits de un campo designador de registro de punto flotante es
de cuatro o más. Esto quiere decir que por lo menos 16 registros de punto
flotante se pueden referenciar en un momento dado.

1.2.1.1.1 Arquitecturas RISC

19 | 76
Buscando aumentar la velocidad del procesamiento se descubrió en base a
experimentos que, con una determinada arquitectura de base, la ejecución de
programas compilados directamente con microinstrucciones y residentes en
memoria externa al circuito integrado resultaban ser más eficientes, gracias a que
el tiempo de acceso de las memorias se fue decrementando conforme se
mejoraba su tecnología de encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado, éstas pueden
implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la
necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas, con respecto
a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su
ejecución se observó lo siguiente:
 Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de
ejecución de un programa.
 Existen secuencias de instrucciones simples que obtienen el mismo
resultado que secuencias complejas predeterminadas, pero requieren
tiempos de ejecución más cortos.
Segmentación con instrucciones regulares5
La mayoría de las instrucciones son del tipo registro a registro, y un ciclo de
instrucción tiene las dos siguientes fases:
 I: Capacitación de instrucción.
 E: Ejecución. Realiza una operación de la ALU con registros como entrada
y salida.
Las operaciones de carga y almacenamiento requieren tres fases:
 I: Capacitación de instrucción.
 E: Ejecución. Calcula una dirección de memoria.
 D: Memoria. Operación registro a memoria o memoria a registro.

5 Strallings, W. Organización y Arquitectura de Computadoras, p. 453


20 | 76
La figura anterior representa la temporización de una secuencia de instrucciones
que no usan segmentación. Sin duda, se trata de un proceso dispendioso. La
siguiente figura muestra un esquema de segmentación de dos vías, en el cual las
fases I y E de dos instrucciones diferentes se pueden ejecutar simultáneamente.
Este esquema ofrece el doble de velocidad de ejecución que un esquema serie.

La segmentación puede mejorarse permitiendo dos accesos a memoria fase. Esto


produce la secuencia que se muestra en la siguiente figura. Ahora, hasta tres
instrucciones pueden solaparse, y la mejora es como mucho un factor de tres. Las
instrucciones de bifurcación hacen que la aceleración sea un poco menor de la
máxima posible. Si una instrucción necesita un operando modificado por la
instrucción precedente, se necesita un retardo. Esto puede ser llevado a cabo por
un NOOP.

En la siguiente figura se muestra una tabla comparativa de estas arquitecturas.

21 | 76
1.2.1.2 Tipos
Intel6
En septiembre de 1969 una compañía japonesa, Busicom, se acercó a Intel para
pedirle que fabricara 12 chips. El ingeniero de Intel asignado a este proyecto, Ted
Hoff, examinó el plan y se percató de que podía poner una CPU de 4 bits de
propósito general en un solo chip. Fue así como en 1970 nació la primera CPU en
un solo chip, la 4004 de 2300 transistores.
Cuando Intel decidió que valdría la pena hacer el intento de usar la 4004 en otros
proyectos, comenzó a trabajar en una nueva versión de ocho bits del chip, el 8008,
introducido en 1972. Este diseño dio como resultado el 8080, una CPU pequeña,
de propósito general, introducido en 1974.
En 1978 llegó el 8086, una verdadera CPU de 16 bits en un solo chip. Al 8086
siguió el 8088, que tenía la misma arquitectura que el 8086 y ejecutaba los
mismos programas pero tenía un bus de 8 bits en lugar de uno de 16 bits.
Ni el 8088 ni el 8086 podían direccionar más de un megabyte de memoria. Para
principios de los ochentas esto se convirtió en un problema cada vez más grave,
por lo que Intel diseñó el 80286, una versión del 8086 compatible hacia arriba.
El siguiente paso lógico era una verdadera CPU de 32 bits en un chip, el 80386,
que salió al mercado en 1985. Cuatro años más tarde salió el 80486. Éste era

6 Tanenbaum, AS. Organización de computadoras un enfoque estructurado, pag. 29

22 | 76
básicamente en una versión más rápida del 80386 que además tenía una unidad
de punto flotante y 8KB de memoria caché en el chip.
En 1993 Intel introdujo el Pentium, tenía dos filas de procesamiento, lo que le
ayudaba a ser dos veces más rápido que el 80486. Apareció la siguiente
generación con el nombre de Pentium Pro, en lugar de tener dos o más filas de
procesamiento, éste tenía una organización interna muy distinta y podía ejecutar
hasta cinco instrucciones a la vez. Incorpora una memoria caché de dos niveles.
El mismo chip procesador tenía 8KB de memoria para retener las instrucciones de
uso común, y 8 KB de memoria para retener datos de uso común.
El siguiente procesador Intel fue el Pentium II, que era básicamente un Pentium
Pro con la adición de extensiones multimedia especiales (llamadas MMX).
Los primeros integrantes de la familia Intel se muestran en la siguiente figura 7.

En
la

siguiente tabla se muestran los procesadores creados por AMD e Intel.

7 Tanenbaum, AS. Organización de computadoras un enfoque estructurado,


pag. 31
23 | 76
24 | 76
25 | 76
1.2.1.3 Características
 La velocidad de la CPU se mide en MIPS (millones de instrucciones por
segundo).
 El tamaño de la palabra es el número de bits que la CPU puede procesar a
la vez.
 Un procesador de 32 bits puede manipular 32 bits simultáneamente.
La CPU es un componente computacional completo, que se fabrica en un
solo chip.
 Cada operación dentro de la CPU toma lugar en un pulso de reloj. La
velocidad del reloj se mide en megahertz (MHz) o millones de tics por
segundo.
Intel es una de los fabricantes más grandes de CPU.
 Un ciclo de reloj, es el tiempo más corto durante el cual una CPU puede
procesar una operación: calcular, comparar etc. La cantidad de ciclo que el
reloj interno de una CPU puede realizar en un segundo es frecuentemente
medida en Hertz. Un megahertz (MHz) es un millón de ciclos por segundo.
 Las CPU están disponibles en las siguientes velocidades: 166mhz, 233mhz,
450mhz, 733mhz, 850mhz y 1000mhz (1024mhz = 1GHz).
 Actualmente están disponibles procesadores con velocidades de: 2.26GHz,
2.8GHz, 3.0GHz, 3.2GHz.
La CPU ha de cumplir dos características bien definidas:
I. Ser capaz de reconocer y ejecutar una serie de instrucciones
elementales (programa) en base a las cuales se puede realizar
cualquier proceso de datos deseado, por complejo que sea.
II. Tener separados dos estados diferentes. En una primera fase ha de
poder recibir y memorizar las instrucciones que configuran el proceso
pedido (introducción del programa) y en segunda fase debe ejecutar en
secuencia las instrucciones recibidas (ejecución del programa). Al
realizar esta ejecución se leerán los datos que se necesiten a través de
un dispositivo de entrada de datos en el momento en que sean
requeridos, realizando las operaciones que forman el proceso hasta la

26 | 76
obtención de los resultados, los cuales serán enviados al usuario a
través de un dispositivo de salida.
Además las características se pueden clasificar en lógicas y físicas.
Lógicas:
1-. Longitud de la palabra procesada, esto es, número de bits procesados en el
mismo ciclo de reloj.
2.- Capacidad de acceso a la memoria o la cantidad de memoria que puede
manejar.
Físicas:
1.-Retraso de propagación de la señal eléctrica: representa el tiempo que tarda la
señal en tomar uno u otro valor dentro del circuito.
2.- Disipación de potencia: Este valor indica el calor que genera el procesador al
permanecer operativo.

1.2.1.4 Funcionamiento
La CPU8 (Unidad Central de Procesamiento) es el lugar en donde se manipulan
los datos, se conoce como el cerebro de la computadora, la CPU contiene un
pequeño chip llamado microprocesador. Cada CPU está formada por al menos de
dos partes básicas: la unidad de control y la unidad lógica-aritmética.
Unidad de control
La unidad de control es el centro lógico de la computadora ya que los recursos de
una computadora son administrados en la unidad de control, es esta unidad es la
que se encarga de dirigir el flujo de datos.
Las instrucciones de la CPU se encuentran incorporadas en la unidad de control,
estas instrucciones o conjunto de instrucciones enumeran todas las operaciones
que una CPU puede realizar. Cada instrucción es expresada en microcódigo.
Antes de que un programa sea ejecutado, cada comando debe desglosarse en
instrucciones que correspondan a las que están en las instrucciones de la CPU. Al
momento de ejecutar el programa, la CPU lleva a cabo las instrucciones en orden
convirtiéndolas en micro código. A pesar de la complejidad que resulta del
proceso, la computadora puede realizar este proceso a una velocidad increíble.
Cuando una CPU es desarrollada, el conjunto de instrucciones tiene los mismos
comandos que su predecesora, aparte de incluirle algunos nuevos. Esto permite
que el software escrito para una CPU trabaje con computadoras con procesadores
8 Miles, J. Murdocca VPH. Principios de arquitecturas de computadoras p. 104
27 | 76
más recientes, esta estrategia es llamada Compatibilidad ascendente. Esta
característica permite ahorrar a los consumidores comprar un sistema nuevo cada
vez que una parte del sistema es actualizada.
Se le conoce compatibilidad decreciente o inversa, cuando un dispositivo del
hardware o pieza del software puede interactuar con el mismo equipo y software
que su predecesor.
Unidad lógica-aritmética (ALU)9
Los datos almacenados en una computadora son de tipo numérico, es por ello que
gran parte del procesamiento involucra la comparación de números o la
realización de operaciones matemáticas. Dentro de la unidad lógica aritmética de
la computadora se realizan sólo dos tipos de operaciones: operaciones aritméticas
y operaciones lógicas.
En el cuadro siguiente se muestra las operaciones realizadas por la unidad lógica
aritmética.
Operaciones aritméticas Operaciones lógicas
(operaciones matemáticas) (comparaciones de números)
+ Suma = , ≠ Igual a, no igual a
- Resta > , > Mayor que, no mayor que
× Multiplicación < , < Menor que, no menor que
÷ División > , > Mayor que o igual a, no mayor
que ni igual a
^ Elevar a una potencia < , < Menor que o igual a, no menor
que ni igual a

La unidad lógica aritmética incluye un grupo de registros, ubicaciones de alta


velocidad, las cuales se usan para conservar los datos que se procesan en ese
momento.
Para comprender la organización de la CPU, consideremos sus objetivos, las
cosas que debe hacer:
- Captar instrucciones: la CPU debe leer instrucciones de la memoria.
- Interpretar instrucciones: la instrucción debe decodificarse para determinar
qué acción es necesaria.
- Captar datos: la ejecución de una instrucción puede exigir leer datos de la
memoria o de un módulo de E/S.
- Procesar datos: la ejecución de una instrucción puede exigir llevar a cabo
alguna operación aritmética o lógica con los datos.
- Escribir datos: los resultados de una ejecución pueden exigir escribir datos
en la memoria o en un módulo de E/S.
9 Peter Norton, Introducción a la computación, p. 46.
28 | 76
Para poder hacer esto, la CPU necesita almacenar algunos datos temporalmente.
Debe recordar la posición de última instrucción de forma que sepa dónde ir a
buscar la siguiente. Necesita almacenar instrucciones y datos temporalmente
mientras una instrucción está siendo ejecutada. En otras palabras, la CPU
necesita una pequeña memoria interna.

En la figura anterior se observa una visión simplificada de la CPU, que indica su


conexión con el resto del sistema a través del bus de sistema. Una interfaz similar
sería necesaria para cualquiera de las estructuras de interconexión. Recordando
que los principales componentes de la CPU son unidad aritmética lógica y unidad
de control. La ALU lleva acabo la verdadera computación o procesamiento de
datos. La unidad de control controla las transferencias de datos hacia dentro y
hacia afuera de la CPU y el funcionamiento de la ALU. Además la figura muestra
una memoria interna mínima, que consta de un conjunto de lugares de
almacenamiento, llamados registros.
En la siguiente figura se presenta una visión un poco más detallada de la CPU. Se
indican los caminos de transferencia de datos y de control lógico, que incluye un
elemento con el rotulo bus interno de la CPU. Este elemento es necesario para
transferir datos entre los diversos registros y la ALU, ya que está en realidad solo
opera con los datos de la memoria interna de la CPU. La figura muestra también

29 | 76
los elementos básicos típicos de la ALU. Observe la similitud entre la estructura
interna del computador en su totalidad y la estructura interna de la CPU. En ambos
casos hay una pequeña colección de elementos principales (computador: CPU,
E/S, memoria; CPU: unidad de control, ALU, registros) conectados por caminos de
datos.

REGISTROS
Dentro de la CPU hay un conjunto de registros que funciona como nivel de la
jerarquía de memoria por encima de la memoria principal y de la cache. Los
registros de la CPU son de dos tipos:
- Registros visibles al usuario: Permiten al programador de lenguaje
maquina o ensamblador minimizar las referencias a memoria principal
optimizando el uso de registros.

30 | 76
- Registros de control y de estado: son utilizados por la unidad de control
para controlar el funcionamiento de la CPU y por programas privilegiados
del sistema operativo para controlar la ejecución de programas.

Registros visibles al usuario


Un registro visible al usuario es aquel que puede ser referenciado por medio de
lenguaje máquina que ejecuta la CP. Prácticamente todos los diseños
contemporáneos de CPUs están provistos de varios registros visibles al usuario,
en oposición a disponer de un único acumulador. Podemos clasificarlo de las
siguientes categorías:
- Uso general
- Datos
- Direcciones
- Códigos de acción
Los registros de uso general pueden ser asignados por el programador a diversas
funciones. A vece, su uso dentro del repertorio de instrucciones es ortogonal a la
operación. Es decir, cualquier registro de uso general puede contener el operando
para cualquier código de operación. Esto proporciona una utilización de registros
de auténtico uso general. Con frecuencia, sin embargo, existen restricciones. Por
ejemplo, puede haber registros específicos para operaciones en punto flotante.
En algunos casos los registros de uso general pueden ser utilizados para
funciones de direccionamiento. En otros casos hay una separación clara o parcial
entre registros de datos y registros de direcciones. Los registros de datos pueden
ser usados únicamente para contener datos y no se pueden emplear en el cálculo
de una dirección de operando. Los registros de dirección pueden ser en si
registros de uso más o menos general, o pueden estar dedicados a un modo de
direccionamiento particular.
Registros de control y de estado
Hay diversos registros de la CPU que se pueden emplear para controlar su
funcionamiento. La mayor parte de las maquinas, no son visibles al usuario.
Algunos de ellos pueden ser visibles a instrucciones maquina ejecutadas en un
modo de control o de sistema operativo.
Naturalmente, maquinas diferentes tendrán diferentes organizaciones de registros
y usaran distinta terminología. Se enumera aquí una lista razonablemente
completa de tipos de registros, con una breve descripción.
Son esenciales cuatro registros para la ejecución de una instrucción:
- Contador de programa: contiene la dirección de la instrucción a captar.
- Registro de instrucción: contiene la instrucción captada más recientemente.
31 | 76
- Registro de dirección de memoria: contiene la dirección de una posición de
memoria.
- Registro intermedio de memoria: contiene la palabra de datos a escribir en
memoria o la palabra leída más recientemente.

Antes de escribir un programa o de investigar una instrucción, es necesario


conocer la configuración interna del microprocesador. A continuación se analiza la
arquitectura interna de los microprocesadores del 8086 al Pentium 4, la cual está
visible para los programas.

32 | 76
Aclaraciones:
1.- Los registros sombreados sólo existen en los microprocesadores del 80386
hasta el Pentium 4.
2.- Los registros FS y GS no tienen nombres especiales.

De propósito general
Algunos registros son de propósito general (o registros multipropósito), mientras
que otros tienen propósitos especiales. A continuación se describen los registros
multipropósito.
60 Registro Características33
EAX (Acumulador) Se define como un registro de 32 bits
(EAX), como un registro de 16 bits
(AX) o como uno de dos registros de
8 bits (AH y AL). Si se direcciona un
registro de 8 o de 16 bits, sólo
cambia esa porción del registro de 32
bits sin afectar a los bits restantes. El
acumulador se emplea para
instrucciones como multiplicación,
división y algunas de las
instrucciones de ajuste. En
procesadores 80386 y superiores, el
registro EAX puede almacenar
también la dirección de
desplazamiento de una posición e en
el sistema de memoria.
EBX (índice base) Éste puede direccionarse como EBX,
BX, BH o BL. Algunas veces guarda
la dirección de desplazamiento de

33 | 76
una posición en el sistema de
memoria, en todas las versiones del
microprocesador. También permite
direccionar datos de la memoria.
ECX (Conteo) Almacena la cuenta de varias
instrucciones. Además puede
guardar la dirección de
desplazamiento de datos en la
memoria. Las instrucciones utilizadas
en un conteo son las instrucciones de
cadena repetida
(REP/REPE/REPNE); y las
instrucciones desplazamiento (shift),
rotación (rótate) y LOOP/LOOPD.
EDX (Datos) Guarda una parte del resultado de
una multiplicación, o parte del
dividendo antes de una división. En
el 80386 y superiores, este registro
también puede direccionar datos de
la memoria.
EBP (apuntador de la base) Apunta a una posición de memoria
en todas las versiones del
microprocesador para las
transferencias de datos de memoria.
Este registro se direcciona como BP
o EBP.
61 EDI (índice de destino Por lo general, direcciona datos de
destino de cadenas para las
instrucciones de cadenas. También
funciona como un registro de
propósito general de 32 bits (EDI) o
de 16 bits (DI).
ESI (índice de origen) Se utiliza como ESI o SI. Direcciona
datos de cadena de origen para las
instrucciones de cadenas. Se
direcciona como SI al utilizarlo como
registro de 16 bits; se direcciona
como ESI al utilizarlo como registro
de 32 bits.

De segmento de memoria

34 | 76
Estos registros adicionales generan direcciones de memoria cuando se combinan
con otros registros en el microprocesador. A continuación se en lista estos
registros de segmentos.
Registro Características
CS (código) Es una sección de la memoria que
almacena el código (procedimientos
y programas) utilizado por el
microprocesador. Así mismo define la
dirección inicial de la sección de
memoria que guarda el código. En la
operación en modo real, define el
inicio de una sección de 64 Kbytes
de memoria. El segmento de código
está limitado a 64 Kbytes en los
microprocesadores del 8088 y al
80286, y a 4 Gbytes en los
microprocesadores 80386 y
superiores cuando éstos operan en
modo protegido.
DS (Datos) Es una sección de memoria que
contiene la mayor parte de los datos
utilizados por un programa. Se
accede a los datos en el segmento
de datos mediante una dirección de
desplazamiento o el contenido de
otros registros que guardan la
dirección de desplazamiento. La
longitud está limitada a 64 Kbytes en
los microprocesadores del 8086 al
80286, y a 4 Gbytes en los
microprocesadores 80386 y
superiores.
ES (extra) Es un segmento de datos adicional
utilizado por algunas de las
instrucciones de cadena para
guardar datos de destino.
SS (pila) Define el área de memoria utilizada
para la pila. El punto de entrada de la
pila se determina mediante los
registros segmento de pila y
apuntador de pila. El registro BP
también direcciona datos dentro del
segmento de pila.
35 | 76
FS y GS Son registros de segmento
suplementario, disponibles en los
microprocesadores del 80386 al
Pentium 4 para que los programas
puedan acceder a dos segmentos de
memoria adicionales. Windows utiliza
estos segmentos para operaciones
internas, no existe una definición
disponible de su uso.

De instrucciones10
EIP (apuntador de instrucciones). EIP direcciona la siguiente instrucción en una
sección de memoria definida como segmento de código. Este registro es IP (16
bits) cuando el microprocesador opera en modo real y EIP (32 bits) cuando el
80386 y superiores operan en modo protegido. Los procesadores 8086, 8088 y
80286 no contienen un registro EIP, por lo que sólo el 80286 y superiores operan
en modo protegido. El apuntador de instrucciones, que apunta a la siguiente
instrucción en un programa, se utiliza por el microprocesador para encontrar la
siguiente instrucción secuencial en un programa ubicado dentro del segmento de
código. El apuntador de instrucciones puede modificarse mediante un salto (jump)
o una instrucción de llamada (call).
1.2.2 Memoria
La memoria de una computadora consiste en un conjunto de registros numerados
(direccionados) en forma consecutiva, cada uno de los cuales normalmente
almacena un byte de información. Un byte es un conjunto de ocho bits. Cada
registro tiene una dirección, a la que se suele designar como locación de memoria.
La denominación nibble se refiere a un conjunto de cuatro bits. Normalmente, hay
acuerdo acerca de los significados de los términos “bit”, “byte” y ”nibble”, pero no
así sobre el concepto de palabra, el que depende de la arquitectura particular de
cada procesador.
1.2.2.1 Conceptos básicos del manejo de la memoria 11
Un concepto relacionado en la unidad de transferencia. Para memorias internas, la
unidad de transferencia es igual al número de líneas de entrada/salida de datos
del módulo de memoria. A menudo es igual a la longitud de palabra, pero puede
no serlo. Para aclararlo consideremos tres conceptos relacionados con la memoria
interna:

10 Ibídem., p. 52.

11 Organización y Arquitectura de Computadoras. 4ta Edición p.99


36 | 76
- Palabra: es la unidad “natural” de organización de la memoria. El tamaño
de la palabra suele coincidir con el número de bits utilizados para
representar números y con la longitud de las instrucciones.
- Unidades direccionables: en muchos sistemas la unidad direccionable es
la palabra.
- Unidad de transferencia: para la memoria principal es el número de bits
que se leen o escriben en memoria a la vez. No tiene que coincidir con una
palabra o con una unidad direccionable.
Una de las diferencias más acusadas entre tipos de memorias es el método de
acceso. Se pueden distinguir cuatro tipos:
- Acceso secuencial: la memoria se organiza en unidades de datos
llamadas registros. El acceso debe realizarse con una secuencia lineal
específica. Se hace uso de la información de direccionamiento almacenada
para separar los registros y ayudar en el proceso de recuperación de datos.
Se utiliza un mecanismo de lectura/escritura compartida que debe ir
trasladándose desde su posición actual ala deseada, pasando y obviando
cada registro intermedio. Así pues, el tiempo necesario para acceder a un
registro dado es muy variable.
- Acceso directo: como en el caso de acceso secuencial, el directo tiene
asociado un mecanismo de lectura/escritura. Sin embargo, los bloques
individuales o registros tienen una dirección única basada en su dirección
física. El acceso se lleva a cabo mediante un acceso directo a una vecindad
dada, seguido de una búsqueda secuencial, bien contando, o esperando
hasta alcanzar la posición final.
- Acceso aleatorio (random): cada posición direccionable de memoria tiene
un único mecanismo de acceso cableado físicamente. El tiempo de acceder
a una posición dada es constante e independiente de la secuencia de
accesos previos. Por tanto, cualquier posición puede seleccionarse
“aleatoriamente” y ser direccionada y accedida directamente.
- Asociativa: es una memoria del tipo de acceso aleatorio que permite hacer
una comparación de ciertas posiciones de bits dentro de una palabra
buscando que coincidan con unos valores dados, y hacer esto para todas
las palabras simultáneamente. Una palabra es por tanto recuperada
basándose un una porción de su contenido en lugar de su dirección.
- Tiempo de acceso: para memorias de acceso aleatorio es el tiempo que
tarda en realizarse una operación de escritura o de lectura, es decir, el
tiempo que transcurre desde el instante en el que se presenta una dirección
a la memoria hasta que el dato, o ha sido memorizado, o está disponible
para su uso.
- Tiempo de ciclo de memoria: este concepto se aplica primordialmente a
las memorias de acceso aleatorio y consiste en el tiempo de acceso y algún
tiempo más que se requiere antes de que pueda iniciarse un segundo
acceso a memoria. Este tiempo adicional puede que sea necesario para
37 | 76
que finalicen las transiciones en las líneas de señal o para regenerar los
datos en el caso de lecturas destructivas.
- Velocidad de transferencia: es la velocidad a la que se pueden transferir
datos a, o desde, una unidad de memoria. Para memorias de acceso
aleatorio coinciden con el inverso del tiempo de ciclo. Para memorias de
acceso aleatorio coinciden con el inverso del tiempo de ciclo. Para otras
memorias se utiliza la siguiente relación:
TN= TA + N/R
Donde:
TN=Tiempo medio de escritura o de lectura de N bits
TA=Tiempo de acceso medio
N= Numero de bits
R=Velocidad de transferencia, en bits por segundo (bps)
1.2.2.2 Memoria principal semiconductora.12
En computadores antiguos, la forma más común de almacenamiento de acceso
aleatorio para a memora principal consistía en una matriz de pequeños anillos
ferromagnéticos denominados núcleos. Es por esto que la memoria principal
recibía a menudo el nombre de núcleo, un término que perdura en la actualidad. El
advenimiento de la microelectrónica y sus ventajas, acabo con las memorias de
núcleos. Hoy en día es casi universal el uso de memorias semiconductoras para la
memoria principal.
1.2.2.2.1 Tipos de memorias semiconductoras de acceso aleatorio
Todos los tipos de memorias que se exploran en esta sección son de acceso
aleatorio. Es decir, las palabras individuales de la memoria son accedidas
directamente mediante lógica de direccionamiento cableada interna.
La siguiente tabla lista los principales tipos de memoria semiconductoras. La más
común es la denominada Memoria de Acceso Aleatorio (RAM, “Random Access
Menor”). Una característica distintiva de las RAMs es que es posible tanto leer
datos como escribir rápidamente nuevos datos en ellas. Tanto lectura como la
escritura se ejecutan mediante señales eléctricas.

12 Organización y Arquitectura de Computadoras. 4ta Edición p.107-108


38 | 76
La otra característica distintiva de una RAM es que es volátil. Debe estar
continuamente alimentada, si se interrumpe la alimentación se pierden los datos.
Así pues, las RAMs pueden utilizarse solo como almacenamiento temporal.
Las tecnologías de las RAMs se dividen en dos variantes: estáticas y dinámicas.
Una RAM dinámica está hecha con celdas que almacenan los datos como cargas
en condensadores. La presencia o ausencia de cargas en un condensador se
interpreta como el 1 o el 0 binarios. Ya que los condensadores tienen una
tendencia natural a descargarse, las RAMs dinámicas requieren refrescos
periódicos para mantener memorizados los datos. En una RAM estática los
valores binarios se almacenan utilizando configuraciones de puertas formando
biestables (“flip-flop”).
Tanto las RAMs estáticas como las dinámicas son volátiles. Una celda de memoria
RAM dinámica es más simple que una estática y por tanto más pequeña. Por
tanto, las RAM dinámicas son más densas (celdas más pequeñas = más celdas
por unidad de superficie) y más baratas que las correspondientes RAMs estáticas.
Por otra parte, una RAM dinámica requiere de circuitería para el refresco. En
memorias grandes, el coste fijo de la circuitería se ve más que compensado por el
menor conste de las celdas RAM dinámicas. Así pues, las RAM dinámicas tienden
a ser las preferidas para memorias grandes. Un último detalle es que las RAMs
estáticas son generalmente algo más rápidas que las dinámicas.
En claro contraste con las RAMs están las memorias se solo lecturas (ROM,
“Read-Only Menor”). Como su nombre sugiere, una ROM contiene un patrón
permanente de datos que no puede alterarse. Aunque es posibles leer de una
ROM, no se puede escribir nuevos datos en ella. Otras aplicaciones son:
- Subrutinas de biblioteca para funciones de uso frecuente
- Programas del sistema
39 | 76
- Tablas de funciones
Cuando se requiere un tamaño modesto, la ventaja de una ROM es que el
programa o los datos estarán permanentemente en memoria principal y nunca
será necesario cargarlos desde un dispositivo de memoria secundaria.
Una ROM se construye como cualquier otro chip de circuito integrado, con los
datos cableados en el chip durante el proceso de fabricación. Esto presenta dos
problemas:
- La etapa de inserción de datos implica unos costes fijos relativamente
grandes, tanto si se va a fabricar una o miles de copias de una misma
ROM.
- No se permite un fallo. Si uno de los bits es erróneo, debe desecharse la
tirada completa de ROMs.
Cuando se necesitan solo una pocas ROMs con un contenido particular, una
alternativa más barata es la ROM programable (PROM). Al igual que las ROMs,
las PROMs son no volátiles y pueden grabarse solo una vez. Para la PROM, el
proceso de escritura se lleva a cabo eléctricamente y pueden realizarlo el
suministrador o el cliente con posterioridad a la fabricación del chip original. Se
requiere un equipo especial para el proceso de escritura o “programación”. Las
PROMs proporcionan flexibilidad y comodidad.
Otra variante de memoria de solo lectura es la memoria de “sobre todo lectura”,
que es útil para aplicaciones en la que las operaciones de lectura son bastante
más frecuentes que las de escritura, pero para las que se requiere un
almacenamiento no volátil. Hay tres formas comunes de memorias de sobre todo
lectura: EPROM, EEPROM, Y memorias “FLASH”.
La memoria de solo lectura programable y borrable ópticamente (EPROM,
“Erasable Programmable Read-Only Menor”) se lee y escribe eléctricamente como
la PROM. Sin embargo, antes de la operación de escritura, todas las celdas de
almacenamiento deben primeramente borrarse a la vez, mediante exposición del
chip encapsulado a radiación ultravioleta. Este proceso de borrado puede
realizarse repetidas veces; cada borrado completo puede durar hasta 20 minutos.
Así pues, las EPROM pueden modificarse múltiples veces y, al igual que las ROM
y las PROM, retiene su contenido, en teoría indefinidamente. Para una capacidad
similar, una EPROM es más cara que una PROM, pero tiene como ventaja
adicional la posibilidad de actualizar múltiples veces su contenido.
La forma más nueva de memoria semiconductora es la memoria flash
(denominada así por la velocidad con la que puede reprogramarse). Al igual que
las EEPROM, las flash utilizan una tecnología de borrado eléctrico. Una memoria
flash puede borrarse entera en uno o unos cuantos segundos, mucho más rápido
que las EPROM. Además, es posibles borrar solo bloques concretos de memoria
en lugar de todo el chip. Sin embargo, las memorias flash no permiten borrar a
40 | 76
nivel byte. Al igual que las EPROM, las flash utilizan solo un transistor por bit,
consiguiéndose las altas densidades (comparadas con las EEPROMs) de las
EPROMs.
1.2.2.2.2 Organización13
El elemento básico de una memoria semiconductora es la celda de memoria.
Aunque se utilizan diversas tecnologías electrónicas, todas las celdas de memoria
comparten ciertas propiedades:
- Presentan dos estados estables (o semi-estables), que pueden emplearse
para representar el 1 y el 0 binarios.
- Pueden escribirse en ellas (al menos una vez) para fijar su contenido.
- Pueden leerse para detectar su estado.
La siguiente figura describe el funcionamiento de una celda de memoria. Lo más
común es que la celda tenga tres terminales para transportar señales eléctricas. El
terminal de selección, como su nombre indica, selecciona la celda para la
operación de escritura o de lectura. El terminal de control indica el tipo de
operación. Para la escritura, el tercer terminal se utiliza como salida del estado de
la celda.

1.2.2.2.3 Lógica del chip


Como otros circuitos integrados, las memorias semiconductoras vienen en chips
encapsulados. Cada chip contiene un matriz de celdas de memoria. Con la
tecnología actual, los chips de 4-Mbits son comunes, y se empiezan a utilizar los
de 16-Mbits.
En toda la jerarquía de memoria se vio que existen compromisos de velocidad,
capacidad y coste. Estos compromisos existen también cuando consideramos la
organización de las celdas de memoria y del resto de funciones lógicas de un chip

13 Organización y Arquitectura de Computadoras. 4ta Edición p.110


41 | 76
de memoria. Para las memorias semiconductoras, unos de los aspectos
fundamentales de diseño es el número de bits de datos que pueden ser
leídos/escritos a la vez. En un extremo esta la estructura en la que la disposición
física de las celdas de la matriz es la misma que la disposición física de las celdas
de la matriz es la misma que la disposición lógica (tal y como la percibe el
procesador) de las palabras de memoria. La matriz está organizada en W palabras
de B bits cada una. Por ejemplo, un chip de 16-Mbits podría estar estructurado en
1-Mpalabras de 16 bits. En el otro extremo esta la estructura denominada un bit-
por-chip, en la que los datos se escriben/leen por bits. A continuación describimos
la estructura de un chip de memoria DRAM; la estructura de una ROM integrada
es similar, aunque más sencilla.
1.2.2.3 Memoria Cache 14
El propósito de la memoria chache es aproximar la velocidad de la memoria a las
de aquellas más rápidas disponibles, posibilitando al mismo tiempo un tamaño
grande de memoria al precio de memorias semiconductoras menos costosas. El
concepto se ilustra en la siguiente figura. Hay una memoria principal relativamente
grande y más lenta, junto con una memoria cache más pequeña y rápida. La
cache contiene una copia de partes de la memoria principal. Cuando la CPU
intenta leer una palabra de memoria, se hace una comprobación para determinar
si la palabra está en la cache. Si es así, se entrega dicha palabra a la CPU. Si no,
un bloque de memoria principal, consistente en un cierto número de palabras, se
transfiere a la cache, y después la palabra es entregada a la CPU. Debido al
fenómeno de localidad de las referencias, cuando un bloque de datos es
capturado por la cache para satisfacer una referencia a memoria simple, probable
que se haga referencias futuras a otras palabras del mismo bloque.

14 Organización y Arquitectura de Computadoras. 4ta Edición p.99


42 | 76
La figura que se observa abajo describe la estructura de un sistema de memoria
cache/principal. La memoria principal consta de hasta 2 n palabras direccionables,
teniendo cada palabra una única dirección de n bits. Esta memoria la
consideramos dividida en un numero de bloques de longitud fija, de K palabras por
bloque. Es decir, hay M=2n/K bloques. La cache consta de C líneas de K palabras
cada una, y el número de líneas de la cache. Ya que hay más bloques que líneas,
una línea dada no puede dedicarse univoca y permanentemente a un bloque. Por
consiguiente, cada línea incluye una etiqueta que identifica que bloque particular
está siendo almacenado. La etiqueta es usualmente una oportunidad de la
dirección de memoria principal.

43 | 76
1.2.2.3.1 Elementos de diseño de la Cache
Aunque hay muy diversas implementaciones de cache, existen unos cuantos
criterios básicos de diseño que sirven para clasificar y diferenciar entre
arquitecturas de cache.
Tamaño de cache
Cuanto más grande es, mayor es el número de puertas implicadas en direccionar
las cache. El resultado es que caches grandes tienden a ser ligeramente más
lentas que las pequeñas. El tamaño de cache esta también limitado por las
superficies disponibles de chip y de tarjeta.
Función de correspondencia
Ya que hay menos líneas de cache que bloques de memoria principal, se necesita
un algoritmo que haga corresponder bloques de memoria principal a líneas de
cache. Además, se requiere algún medio de determinar que bloque de memoria
principal ocupa actualmente una línea dada de cache.

44 | 76
Correspondencia Directa
La técnica más simple consiste en hacer corresponder cada bloque de memoria
principal a solo una línea posible de cache.
Correspondencia Asociativa
La correspondencia asociativa supera la desventaja de la directa permitiendo que
cada bloque de memoria principal pueda cargarse en cualquier línea de la cache.
En este caso, la lógica de control de la cache interpreta una dirección de memoria
simplemente como una etiqueta y un campo de palabra.
Correspondencia Asociativa por Conjuntos
Es una solución de compromiso que recoge lo positivo de las correspondencias
directas y asociativas, sin presentar sus desventajas.
Algoritmos de sustitución
Cuando se introduce un nuevo bloque en la cache, debe sustituirse uno de los
bloques existentes. Para el caso de correspondencia directa, solo hay una posible
línea para cada bloque particular y no hay elección posible. Para las técnicas
asociativas se requieren algoritmos de sustitución. Para conseguir alta velocidad,
tales algoritmos deben implementarse en hardware y cuatro de los más comunes
son:
- utilizado menos recientemente (LRU, “Least-Recently Used”)
- primero en entrar – primero en salir (FIFO, “First-In-First-Out”)
- utlizado menos frecuentemente (LFU, “Least-Frequently Used”)
- escoger una línea al azar (Aleatoria)
Política de escritura
Antes de que pueda ser reemplazado un bloque que esta en la cache, es
necesario considerar si ha sido o no alterado en cache pero no en memoria
principal. Si no lo ha sido, puede escribirse sobre el bloque antiguo de cache. Si
ha sido modificado, esto significa que se ha realizado al menos una operación de
escritura sobre una palabra de la línea correspondiente de la cache, y la memoria
principal debe actualizarse de acuerdo con ello.
1.2.3 Manejo de la Entrada/Salida
Un computador no sirve de nada sin algún medio para realizar las entradas y las
salidas. Las operaciones de E/S se realizan a través de una amplia gama de
dispositivos que proporcionan una forma de intercambiar datos entre el exterior y
el computador. Un dispositivo externo se conecta al computador mediante un
enlace a un módulo de E/S (se aprecia en la siguiente figura). El enlace se utiliza
para intercambiar señales de control, estado, y datos entre el módulo de E/S y el

45 | 76
dispositivo externo. Un dispositivo externo conectado a un módulo de E/S
frecuentemente se denomina dispositivo periférico o, simplemente periférico.

En sentido amplio, los dispositivos externos se pueden clasificar en tres


categorías:
- De interacción con humanos: permiten la comunicación con el usuario del
computador.
- De interacción con máquinas: permiten la comunicación con elementos del
equipo.
- De comunicación: permiten la comunicación con dispositivos remotos.
La lógica de control asociada el dispositivo controla su operación en respuesta a
las indicaciones del módulo de E/S. El transductor convierte las señales eléctricas
asociadas al dato a otra forma de energía en el caso de una salida y viceversa en
el caso de una entrada. Usualmente, existe un buffer asociado al transductor para
almacenar temporalmente el dato que se está transfiriendo entre módulos de E/S y
el exterior; es común un tamaño de buffer de 8 a 16 bit.
1.2.3.1 Módulos de Entrada/Salida
Un módulo de E/S es el elemento del computador responsable del control de uno
o más dispositivos externos, y del intercambio de datos entre esos dispositivos y la
memoria principal y/o los registros de la CPU. Así, el módulo de E/S debe tener

46 | 76
una interfaz interna al computador y una interfaz externa al computador (con el
dispositivo).
Las principales funciones o requisitos de un módulo de E/S se encuentran dentro
de las siguientes categorías:
- Control y temporización
- Comunicación con la CPU
- Comunicación con los dispositivos
- Almacenamiento temporal de datos
- Detección de errores
El control de la transferencia de datos desde un dispositivo externo a la CPU
podría implicar la siguiente secuencia de pasos:
1. La CPU interroga al módulo de E/S para comprobar el estado del
dispositivo conectado al mismo.
2. El módulo de E/S devuelve el estado del dispositivo.
3. Si el dispositivo está operativo y preparado para transmitir, la CPU solicita la
transferencia del dato mediante una orden al módulo E/S.
4. El módulo de E/S obtiene un dato del dispositivo externo.
5. Los datos se transfiere desde el módulo de E/S a la CPU.
Por otra parte, el módulo de E/S debe ser capaz de comunicarse con el
dispositivo, Esta comunicación implica intercambiar órdenes, información del
estado, y datos. Una tarea esencial para un módulo de E/S es el almacenamiento
temporal de datos (data buffering). Un módulo de E/S a menudo es responsable
de la detección de errores y de informar de estos errores a la CPU.
1.2.3.2 Entrada/Salida Programada
Son posibles tres técnicas para las operaciones de E/S. Con la E/S programada,
los datos se intercambian entre la CPU y el módulo de E/S. La CPU ejecuta un
programa que controla directamente la operación de E/S, incluyendo la
comprobación del estado del dispositivo, el envió de una orden de lectura o
escritura, y la transferencia del dato. Cuando la CPU envía una orden al módulo
de E/S, debe esperar hasta que la operación de E/S concluya. Si la CPU es más
rápida que el módulo de E/S, este es un tiempo que la CPU desperdicia. Con la
E/S mediante interrupciones, la CPU proporciona la orden de E/S, continua
ejecutando otras instrucciones, y en interrumpida por el módulo de E/S cuando
este ha terminado su trabajo. Tanto con E/S programada como con interrupciones,
la CPU es la responsable de extraer los datos de la memoria principal en una
salida y de almacenar los datos en la memoria principal en una entrada. La
alternativa se conoce como acceso directo a memoria (DMA). En este caso, el
módulo de E/S y la memoria principal intercambian datos directamente, sin la
intervención de la CPU.

47 | 76
Considérese la lectura de un bloque desde el disco. En la técnica de entrada-
salida programada, la CPU interroga a cada dispositivo para ver si requiere
servicio. Si se considera una analogía con un restaurante, el caso sería el del
camarero que se acerca al comensal para ver si está listo para hacer un pedido.
Las operaciones que se realizan cuando se administra la entrada-salida por medio
de un programa se ilustran en el diagrama de flujo que se observa en la siguiente
figura. La CPU verifica primero el estado del disco por medio de la lectura de un
registro especial al que puede acceder en el espacio de memoria o por medio de
la lectura de un registro especial al que puede acceder en el espacio de memoria
o por medio de la lectura de un registro especial de entrada-salida, si esta fuera la
solución adoptada por la arquitectura del procesador para la implementación del
manejo de entrada-salida. Si el disco no estuviese listo para ser leído o escrito, el
proceso queda en un lazo cerrado verificando el estado en forma continua hasta
tanto el disco esté listo, en un proceso de espera por dispositivo ocupado. Cuando
el disco finalmente se encuentre disponible, se producirá la transferencia de datos
entre el disco y la CPU.15

15 Miles, J. Murdocca. Principios de arquitecturas de computadoras. P. 309


48 | 76
Luego de completada la transferencia, la CPU verifica la existencia de algún otro
pedido de comunicación con el disco. Si lo hubiera, el proceso se repite; en caso
contrario la CPU continua otras tareas.
En la administración de E/S por programada, la CPU pierde el tiempo al interrogar
a los dispositivos. Otro problema tiene que ver con que los dispositivos de alta
prioridad no se verifican hasta tanto la CPU no completa la tarea de entrada-salida
en curso, la que puede ser de baja. No obstante, dado que la implementación de
un sistema de administración programada de los procesos de E/S se pueden
concretar en forma sencilla, presenta ventajas en algunas aplicaciones.
Resumen 16
Cuando la CPU está ejecutando un programa y encuentra una instrucción
relacionada con una E/S, ejecuta dicha instrucción mandando una orden al módulo
de E/S apropiado. Con E/S programada, el módulo de E/S realizara la acción
solicitada y después activa los bits apropiados en el registro de estado de E/S. El
módulo de E/S no realiza ninguna otra acción para avisar a la CPU. En concreto,
no interrumpe a la CPU. De esta forma, la CPU es la responsable de comprobar
periódicamente el estado del módulo de E/S hasta que encuentra que la operación
ha terminado.
Órdenes de E/S
Una orden de control se utiliza para activar el periférico e indicarles que hacer.
Estas órdenes son específicas del tipo particular de dispositivo periférico.
Una orden de test se utiliza para comprobar diversas condiciones de estado
asociadas con el módulo de E/S y sus periféricos. La CPU podrá comprobar si el
periférico en cuestión está conectado y disponible para su uso.
Una orden de lectura hace que el módulo de E/S capte un dato de un periférico y
lo situé en un buffer interno. Después, la CPU puede obtener el dato solicitando
que el módulo de E/S lo ponga en el bus de datos.
Una orden de escritura hace que el módulo de E/S tome unos datos (byte o
palabra) del bus de datos y posteriormente lo transmita al periférico.
Instrucciones de E/S
En la E/S programada, hay una estrecha correspondencia entre las instrucciones
de E/S que la CPU capta de memoria y las órdenes de E/S que la CPU envía a un
módulo de E/S al ejecutar las instrucciones. Es decir, las instrucciones se pueden
hacer corresponder fácilmente con las órdenes de E/S, y a menudo hay una
simple relación de uno a uno. La forma de la instrucción depende de la manera de
direccionar los dispositivos externos.

16 Organización y Arquitectura de Computadoras. 4ta Edición p.188


49 | 76
Normalmente, habrá muchos dispositivos de E/S conectados al sistema a través
de los módulos de E/S. Cada dispositivo tiene asociado un identificador único o
dirección. Cuando la CPU envía una orden de E/S, la orden contiene la dirección
del dispositivo deseado. Así cada módulo de E/S debe interpretar las líneas de
dirección para determinar si la orden es para él.
Cuando la CPU, la memoria principal, y las E/S comparten un bus común, son
posibles dos modos de direccionamiento: asignado en memoria
(“memory_mapped”) y aislado. Con las E/S asignadas en memoria, existe un único
espacio de direcciones para las posiciones de memoria y los dispositivos de E/S.
la CPU considera a los registros de estado y de datos de los módulos de E/S
como composiciones de memoria y utiliza las mismas instrucciones máquina para
acceder tanto a memoria como a los dispositivos de E/S. así, por ejemplo, con 10
líneas de dirección, se puede acceder a un total de 1024 posiciones de memoria y
direcciones de E/S, en cualquier combinación.
Con las E/S asignadas en memoria, se necesita una sola línea de lectura y una
sola línea en el bus. Alternativamente, el bus puede disponer de líneas de lectura y
escritura en memoria junto con líneas para órdenes de entrada y salida. En este
caso, las líneas de órdenes especifican si la dirección se refiere a una posición de
memoria o a un dispositivo de E/S. el rango completo de direcciones está
disponible para ambos. De nuevo con 10 líneas de dirección, el sistema puede
soportar ahora 1024 posiciones de memoria y 1024 direcciones de E/S. puesto
que el espacio de direcciones de E/S está aislado del de memoria, este se conoce
con el nombre de E/S aislada.
En la siguiente figura, se contrastan estas dos técnicas de E/S programada. Es
esta figura se muestra como podría ver el programador la interfaz con un
dispositivo de entrada sencillo tal como un teclado cuando se utiliza E/S asignada
en memoria. Se asume direcciones de 10 bits, con una memoria de 512 palabras
(posiciones 0-511) y hasta 512 direcciones de E/S (posiciones 512-1023), se
dedican dos direcciones a la entrada de teclado desde un terminal concreto.

50 | 76
La dirección 516 se refiere al registro de datos y la dirección 517 al registro de
estado que además funciona como registro de control para recibir las ordenes de
la CPU. El programa que se muestra lee un byte de datos desde el teclado y lo
escribe en el registro acumulador de la CPU. Obsérvese como la CPU ejecuta un
bucle hasta que el byte de datos está disponible.
Con E/S aislada (que se observa en la parte del b) de la figura anterior), los
puertos de E/S solo son accesibles mediante una orden especifica de E/S, que
activa las líneas de órdenes de E/S del bus.
La mayor parte de CPUs disponen de un conjunto relativamente grande de
instrucciones distintas para acceder a memoria. Si se utiliza E/S aislada, solo
existen unas pocas instrucciones de E/S. por eso, una ventaja de la E/S asignada
en memoria es que se puede utilizar este amplio repertorio de instrucciones,
permitiendo una programación más eficiente. Una desventaja es que se utiliza
parte del valioso espacio de direcciones de memoria. Tanto la E/S asignada como
la aislada se usan comúnmente.
1.2.3.3 Entrada/salida mediante interrupciones
El problema con la entrada/salida programadas es que la CPU tiene que esperar
un tiempo considerable a que el módulo de E/S en cuestión esté preparado para
recibir o transferir datos. La CPU, mientras espera, debe comprobar repetidamente
51 | 76
el estado del módulo de E/S. como consecuencia, se degrada el nivel de
prestaciones de todo el sistema.
Una alternativa consiste en que la CPU tras enviar una orden de E/S a un módulo
continúe realizando algún trabajo útil. Después, el módulo de E/S interrumpirá a la
CPU para solicitar su servicio cuando esté preparando para intercambiar datos
ella. La CPU ejecuta entonces la transferencia de datos, como antes, y después
continúa el procesamiento previo. Como se ve en la siguiente imagen:

Desde el punto de vista de la CPU, las acciones para una entrada son las que
siguen. La CPU envía una orden READ de lectura. Entonces pasa a realizar otro
trabajo(es decir, la CPU puede estar ejecutando programas distintos al mismo
tiempo). Al final de cada ciclo de instrucciones, la CPU comprueba las
interrupciones. Cuando se pide la interrupción desde el módulo de E/S, la CPU
guarda el contexto(es decir, el contador de programa y los registros de la CPU) del
programa en curso y procesa la interrupción. En este caso, la CPU lee la palabra
de datos del módulo de E/S y la almacena en memoria. Después recupera el
contexto del programa que estaba ejecutando (o de otro programa) y continúa su
ejecución. La E/S con interrupciones es más eficiente que la E/S programada por
que elimina las esperas innecesarias. No obstante, las E/S con interrupciones
consumen gran cantidad de tiempo de la CPU puesto que cada palabra de datos
que va desde la memoria al módulo de E/S o viceversa debe pasar a través de la
CPU.
En la siguiente figura se muestra procesamiento simplificado de una interrupción.

52 | 76
Cuestiones de diseño
En la implementación de las E/S mediante de las interrupciones aparecen dos
cuestiones. Primero, puesto que casi invariable habrá múltiples módulos de E/S, y
segundo, si se han producido varias interrupciones.
1.2.3.4 Acceso directo a memoria
Cuando hay que transferir grandes volúmenes de datos, se requiere una técnica
más eficiente: el acceso a memoria (DMA).
El DMA (Direct Memory Access) es un procesador/controlador especializado en
transferencias “muy grandes” desde periféricos a memoria y viceversa. Es
programable. La CPU no realiza ninguna tarea (salvo programar el DMA) ya que la
inicialización y transferencia son gobernadas por el periférico.
Para programar el DMA hay que enviarle al menos los siguientes datos:
 Dirección/puerto periférico E/S.
 Posición/dirección en memoria principal.
 Tamaño (número de bytes a transferir).
 Tipo transferencia: lectura o escritura. Al finalizar el DMA avisa mediante
una interrupción.

53 | 76
 Esta interrupción al igual que el resto de interrupciones son normalmente
atendidas al final de cada instrucción.
 La rutina de servicio asociada comprobará el estado del DMA para ver si se
han producido errores al ejecutar la transferencia que se le ha
encomendado.
A diferencia del mecanismo por interrupción convencional, una orden DMA puede
transferir muchísimos datos de una sola vez. Por lo tanto, el número de
interrupciones por byte transferido es mucho menor que con las interrupciones
convencionales: se gana en rapidez. El procesador no se encarga de la
transferencia de datos.
El mecanismo de DMA puede configurarse de diversas formas: Todos los módulos
comparten el mismo bus del sistema. El módulo de DMA, actuando como un CPU
suplementaria, utiliza E/S programada para intercambiar datos entre la memoria y
un módulo de E/S a través del módulo de DMA. Esta configuración, si bien es la
más económica, es claramente ineficiente. Igual que con E/S programada
controlada por la CPU, la transferencia de cada palabra consume dos ciclos de
bus.
El número de ciclos de bus necesarios puede reducirse sustancialmente si se
integran las funciones de DMA y de E/S. Esto indica que existe un camino entre el
módulo de DMA y uno o más de E/S que no incluye al bus del sistema. La lógica
de DMA puede ser parte de un módulo de E/S, o puede ser un módulo separado
que controla a uno o más módulos de E/S. este concepto se puede llevar algo más
lejos conectando los módulos de E/S a un módulo de DMA mediante un bus de
E/S. Esto reduce a uno el número de interfaces de E/S en el módulo de DMA y
permite una configuración fácilmente ampliable. En todos estos casos, el bus del
sistema, que el módulo de DMA comparte con la CPU y la memoria, es usado por
el módulo de DMA solo para intercambiar datos con la memoria. El intercambio de
datos entre los módulos de DMA y E/S se produce fuera del bus del sistema.
Inconvenientes de la E/S programada y con interrupciones.
La E/S con interrupciones, aunque más eficiente que la sencilla E/S programada,
también requiere la intervención activa de la CPU para transferir datos entre la
memoria y el módulo de E/S, y cualquier transferencia de datos debe seguir un
camino a través de la CPU. Por tanto, ambas formas de E/S presentan dos
inconvenientes inherentes:
1. La velocidad de transferencia de E/S está limitada por la velocidad a la cual la
CPU puede comprobar y dar servicio a un dispositivo.
2. La CPU debe dedicarse a la gestión de las transferencias de E/S; se debe
ejecutar cierto número de instrucciones por cada transferencia de E/S.

54 | 76
Existe un cierto compromiso entre estos dos inconvenientes. Considérese unas
transferencias de un bloque de datos. Utilizando E/S programada, la CPU se
dedica a la tarea de la E/S y puede transferir datos a alta velocidad al precio de no
hacer nada más. La E/S con interrupciones libera en parte a la CPU, a expensas
de reducir la velocidad de E/S. No obstante, ambos métodos tiene un impacto
negativo tanto en la actividad de la CPU como en La velocidad de transferencia de
E/S.
1.2.3.5 Canales y procesadores de entrada/salida
Los controladores de E/S se han mejorado haciendo que se comporten como un
procesador. La CPU hace que el controlador de E/S ejecute un programa de E/S
en memoria. El controlador de E/S coge y ejecuta sus instrucciones sin
intervención de la CPU. A este tipo de controlador de E/S se le denomina canal de
E/S. Una posterior mejora de los canales de E/S ha sido incorporarles una
memoria local con lo que ahora se pueden ver como computadores. Con esta
arquitectura, se puede controlar un conjunto grande de dispositivos de E/S con la
mínima intervención de la CPU. A este tipo de controlador se le denomina
procesador de E/S.
Características de los canales de entrada/salida
 Los canales representan una extensión al concepto de DMA.
 Tienen la habilidad de ejecutar instrucciones de E/S.
 Completo control de la transferencia de datos por lo tanto la CPU no ejecuta
instrucciones de E/S.
 Instrucciones almacenadas en memoria principal que serán ejecutadas por
un procesador de propósito especial en el canal.
 La CPU inicia una transferencia de E/S instruyendo al canal para ejecutar el
programa que está en memoria.
 Este programa especifica dispositivos, áreas de memoria a usar,
prioridades y acciones ante errores.
 El canal siguiendo las instrucciones controla la transferencia de datos.

Tipos de canales de E/S


Selector:
 Controla varios dispositivos de alta velocidad y uno por vez, por lo tanto el
canal se dedica para la trasferencia de datos de esos tipos dispositivo.
 El canal selecciona un dispositivo y efectúa la transferencia.
 Los dispositivos son manejados por un controlador o módulo de E/S.

55 | 76
Por lo tanto el canal de E/S ocupa el lugar de la CPU en el control de esos
controladores. (A continuación observe la siguiente figura).

Multiplexor:
 Puede manejar E/S con varios dispositivos a la vez. Multiplexor de bytes:
Acepta y transmite caracteres.
 Multiplexor de bloques: Intercala bloques de datos desde distintos
dispositivos. (observe la siguiente figura)

1.2.4 Buses
¿Qué es un bus?

56 | 76
 Es un camino de comunicación entre dos o más dispositivos.
 Normalmente, medio de transmisión.
 Suele agruparse: Varios caminos de comunicación o líneas con función
común. Un dato de 8 bits puede transmitirse mediante ocho líneas del bus.
Existe una serie de sistemas de interconexión. Las estructuras sencillas y
múltiples son las más comunes como los siguientes ejemplos:
Bus de datos
 Transmite datos: Recuerde que a este nivel no existe diferencia alguna
entre “datos” e “instrucciones”.
 El ancho del bus es un factor clave a la hora de determinar las
prestaciones: 8, 16, 32, 64 bits.
Bus de dirección
Identifica la fuente o destino de un dato, cuando el procesador desea leer una
palabra de una determinada parte en la memoria. El ancho del bus de direcciones
determina la máxima capacidad de memoria posible en el sistema. MSX88 tiene
un bus de dirección de 16 bits, lo que define un espacio para direcciones de 64K
lugares.
Bus de control
Transmite información de señales de control y temporización por ejemplo:
 Señal de escritura/lectura en memoria.
 Petición de interrupción.
 Señales de reloj.
La interconexión mediante un bus es la siguiente:

¿Cómo son los buses?

57 | 76
Es un conjunto de conductores eléctricos paralelos, poseen conectores para
colocar “tarjetas”. Como se puede observar en la siguiente imagen:

Los sistemas operativos gráfico-orientados como son Windows y OS/2 han creado
un “cuello de botella” entre el procesador y sus periféricos para visualización en
PCs con arquitecturas I/O estándar. Acercando las funciones periféricas con
mayores requerimientos de ancho de banda al bus del microprocesador del
sistema puede eliminarse este atascamiento. Cuando un diseño tipo “Local Bus”
es utilizado, pueden obtenerse ganancias sustanciales en performance con
interfaces gráficas para el usuario (GUIs, graphical User Interfaces) y otras
funciones de gran ancho de banda (full motion video, SCSI, LANs, etc.) Las
ventajas ofrecidas por un diseño de bus local han motivado varias versiones,
implementadas en distintas formas. Los beneficios de establecer un estándar
abierto para buses I/O han sido claramente demostrados en la industria de la PC.
Es importante que un nuevo estándar para buses locales se establezca para
simplificar diseños, reducir costos e Incrementar la selección de componentes
“Local Bus” y placas de expansión.
1.2.4.1 Tipos de buses
Dedicados: usa líneas separadas para direcciones y datos en la siguiente forma:
 El bus de direcciones usa 16 líneas.
 El bus de datos usa 16 líneas.
 El bus de control usa una línea de lectura o escritura.
Multiplexados: uso de las mismas líneas:
 16 líneas de direcciones o de datos.
 1 línea de control de lectura o escritura.
 1 línea de control para definir direcciones o datos.

58 | 76
A continuación se analizara cada uno de los buses del sistema, las ranuras de
expansión, los conectores a la placa base, los puertos de conexión con los
distintos dispositivos externos y los cables de conexión. En la siguiente imagen
puede verse la placa base con cada uno de los elementos de los que vamos a

tratar.

Buses de propósito general


De expansión internos ISA (Industry Standard Architecture)
Este bus ofrece unas prestaciones muy bajas, y totalmente fuera de línea con los
requerimientos de los PC de hoy. Se divide en dos ramas, una es interna al PC, y
a ella se conectan los dispositivos más lentos del equipo: puertos serie, teclado,
puerto paralelo, unidad de disco flexible. La otra rama es externa y se accede a
ella a través de las ranuras de expansión ISA (Véase la siguiente figura).

Además de un rendimiento pobre, otra de las desventajas del bus ISA es la falta
de inteligencia en el control del bus. Otra desventaja adicional radica en la
configuración de los dispositivos, que debe realizarse manualmente, aunque
algunos más recientes son compatibles con PaP (no todos).

59 | 76
PCI (Peripheal Component Interconnect)
El bus PCI «interconexión de componentes periféricos» se introdujo con los
primeros microprocesadores Pentium de Intel y se ha convertido en el estándar
para las tarjetas de expansión en las placas base. Soporta dispositivos de
entrada/salida de alta velocidad, como las tarjetas de vídeo, de red, de sonido,
MODEM, etc. Es capaz de transferir datos a 132 MB/s, frente a los 5 MB/s del bus
ISA. La longitud de la ranura es más corta. Suele haber de 4 a 5 ranuras PCI en
una placa base y son de color blanco. Véase la siguiente figura:

De expansión externos (también llamados Puertos)


Durante muchos años, los PC usaban sólo los buses de expansión internos.
Obviamente, incluso los PC más antiguos tenían conexiones para dispositivos
como teclados, pero esos conectores externos se diseñaban para admitir un tipo
único de dispositivo. No podías enchufar un ratón en un puerto de teclado, por
ejemplo, ni podías enchufar dos teclados en dicho puerto. Incluso los puertos para
dispositivos serie y paralelos (que podían admitir una variedad de dispositivos)
sólo admitían un dispositivo al mismo tiempo.
Para conectar los dispositivos periféricos al ordenador, se utilizan conectores. El
conector se halla en el extremo del cable adjunto al dispositivo periférico. Se
inserta dentro de un puerto para hacer la conexión entre el ordenador y el
dispositivo periférico; el puerto hace que el dispositivo periférico esté disponible
para el usuario. Veremos a continuación cuáles son los puertos y conectores que
permiten unir dispositivos externos en los equipos actuales.
SERIE
Su nombre proviene de la forma en que se envían los datos, transmitiendo un bit
tras otro en una serie y de forma asíncrona. Esto los limita en cuanto a su potencia
de transmisión, relegándolos a tareas con pocas necesidades de transferencia de
información. Son fáciles de reconocer, tienen un conector macho en forma de D
mayúscula con 9 espigas, (también los hay con 25 pins). El sistema operativo
identifica los puertos serie como puertos COM, seguido de un número
60 | 76
correspondiente al puerto de que se trata, por ejemplo COM1. Actualmente
apenas se utiliza debido a su baja velocidad. Sin embargo, todavía se pueden
encontrar ratones y módems (así como material científico) que suelen enviar datos
al puerto COM (Véase la siguiente figura).

DIN o AT
Era la conexión primaria para el teclado, es más grande que su repuesto actual, el
PS/2. Tiene 5 pines. Actualmente está en desuso, pero existen adaptadores para
poder conectar un teclado con este conector a un puerto PS/2 (Véase la siguiente
figura).

Puerto PS/2 (Sistema personal 2) para teclado


El conector mini-DIN tiene 6 pines, es de color lila y sirve para un teclado PS/2
(Véase la siguiente figura).

Puerto PS/2 para ratón


Este conector verde de 6 espigas está diseñado para el ratón PS/2 -a menos que
utilices un modelo USB o inalámbrico. Ten en cuenta que el puerto del ratón
solamente difiere del teclado por el color. Un error muy común al preparar las
conexiones del PC es confundir el conector del ratón con el del teclado, en cuyo
caso ninguno de los dos funcionará. Por suerte, es un problema de fácil solución
(Véase la siguiente figura).

Puerto Paralelo
Los puertos paralelos, al igual que los puertos serie, reciben su nombre debido a
la forma en que envían y reciben la información. En este caso, la información se
envía mediante ocho bits en lugar de utilizar un bit. Esto hace que el puerto
paralelo sea más rápido que el puerto serie, ya que se envían más datos
simultáneamente. El puerto paralelo está asociado con la conexión de la
61 | 76
impresora, aunque en los últimos años ha empezado a utilizarse para dispositivos
de almacenamiento externo, como, por ejemplo, unidades Zip, CD-ROM externos,
plotters o escáneres. A estos puertos se les conoce con el nombre de LPT.
Aunque el ordenador trae un puerto LPT (LPT1), es posible añadir un segundo y
un tercer puerto mediante una tarjeta de expansión conectada a la placa base del
ordenador. El sistema nombra a estos puertos como LPT2 y LPT3. Sin embargo,
no es necesario, ya que la mayoría de los dispositivos que se conectan al puerto
paralelo tienen un conector de paso que permite que se conecte una impresora o
cualquier otro dispositivo.
Los puertos paralelos de un ordenador son conectores hembra DB-25 a los que se
conecta el correspondiente conector macho, como se ve en la siguiente figura.

USB
El Bus Serie Universal o USB (Universal Serial Bus) es un tipo de interfaz que
soporta dispositivos periféricos de baja velocidad, como teclados o ratones, y
dispositivos de una velocidad mayor, como las cámaras digitales, impresoras,
adaptadores de red, sintonizadores de TV, discos removibles, etc. Se espera que
en un futuro termine reemplazando a los puertos serie y paralelo de los
ordenadores personales.
El USB es un puerto serie y, al igual que el puerto serie normal, transmite los datos
de bit en bit; sin embargo, los transmite más rápidamente.
El puerto USB, en su versión inicial, USB 1.1, alcanzaba velocidades de
transferencia de datos de 12 Mb/s (megabits por segundo). La versión más
reciente, USB 2.0, apodado USB de alta velocidad, soporta velocidades de
transferencia de datos de 480 Mb/s (= 60 MB/s, megabytes por segundo). Esta
versión es compatible con los dispositivos USB 1.1.
Las características que ofrece un puerto USB son las siguientes:
• Proporciona al ordenador capacidades Plug and Play para los dispositivos
externos.
• Se puede conectar dispositivos USB al ordenador sin necesidad de reiniciarlo
(conexión en caliente); el sistema operativo, por ejemplo Windows XP, los
reconoce automáticamente e instala los controladores; o bien el sistema operativo

62 | 76
solicita al usuario los controladores correspondientes (es el caso de Windows 98),
que se suelen encontrar en el disquete o CDROM que acompaña al dispositivo.
• Amplia variedad de dispositivos disponibles: teclados, ratones, unidades Zip,
Jaz, discos duros externos, escáneres, impresoras de inyección de tinta, módems,
cámaras digitales, Webcams.
Los estándares USB fueron desarrollados por un grupo de siete empresas
importantes: Compaq, Digital Equipment Corp., IBM PC Co., Intel, Microsoft, NEC
y Northern Telecom.
Conexiones USB
Los puertos y conectores USB son de dos tipos:
• Puerto Tipo A. Suele estar situado en la parte posterior del ordenador, aunque
actualmente muchos ordenadores traen también conectores Tipo A en la parte
frontal; son de tipo hembra. Y tienen una típica forma rectangular. A este puerto se
conecta un conector macho también de Tipo A, como se ve en la siguiente figura.

• Puerto Tipo B. Se encuentra en los dispositivos USB. Los puertos Tipo B son
más cuadrados y de tipo hembra. A estos puertos se conecta un conector macho
de Tipo B (véase Figura en la siguiente figura).

Buses dedicados
Son buses de propósito específico destinados al diálogo con un tipo concreto de
dispositivos.
Puertos FireWire
El estándar IEEE 1394, más conocido como FireWire, define las especificaciones
de un bus serie de alta velocidad para dispositivos que realmente funcionan a alta
velocidad, como, por ejemplo, las cámaras de vídeo o fotográficas digitales.

63 | 76
FireWire es una marca registrada de Apple Computer; otros fabricantes, como
Sony, utilizan el nombre i.Link. El nombre genérico del estándar es Bus serie de
alto rendimiento.
La interfaz IEEE 1394 comparte características con la interfaz USB. Ambas son
buses de alta velocidad, Plug and Ptay e intercambiables en caliente. El número
máximo de dispositivos que soporta es 63. Las versiones más recientes de IEEE
1394 que se están desarrollando ofrecerán velocidades de 800 Mb/s a 1,6 Gb/s
(gigabits por segundo). En la Figura siguiente, se muestra uno de los conectares
utilizados por IEEE 1394; son los mismos que los utilizados en el Nintendo
Gameboy.

El IEEE 1394 no necesita el ordenador para poder funcionar. Así, una cámara de
video digital se puede conectar con un equipo de vídeo VCR a través de este
puerto. Actualmente muchos ordenadores no tienen integrado este conector, pero
existen tarjetas de expansión que sí lo proporcionan.
AGP
El bus AGP («puerto acelerador de gráficos») se utiliza sólo para un tipo de tarjeta
de expansión: la tarjeta de vídeo. Sólo admite una. Se desarrolló principalmente
para mejorar las aplicaciones de gráficos en 3D.
La principal ventaja es que el chipset al que se conecta el bus AGP ofrece a la
tarjeta AGP un acceso rápido a la memoria principal.
La velocidad del bus AGP es superior a la del bus PCI. Hay cuatro velocidades
diferentes:
• AGP IX: transfiere datos a 266 MB/s.
• AGP 2X: transfiere datos a 532 MB/s.
• AGP 4X: transfiere datos a 1 GB/s.
• AGP 8X: transfiere datos a 2 GB/s.
La ranura AGP es de color café y algo más corta que la ranura PCI. No debemos
desconectar nunca una tarjeta AGP de la placa base con el ordenador encendido,
ya que esto puede dañarla.
Actualmente existen dos estándares de AGP, denominados AGP 2.0 y AGP 3.0 (no
tengo ni idea de lo que ha pasado con la versión 1).
La razón por la que tienes que saber todo esto es que las ranuras en las placas
base y en los conectores de la tarjeta de vídeo AGP varían según la versión y el
modelo y no son todas compatibles. Algunas tarjetas AGP 3.0 se pueden enchufar
64 | 76
físicamente en ranuras AGP 2.0, por ejemplo, pero no funcionarán. La figura
muestra dos ranuras AGP diferentes, la de arriba es la AGP 3.0 y la de abajo la
AGP 2.0 (Véase la siguiente figura).
1.2.4.2 Estructura de los buses
Un bus es un medio compartido de comunicación constituido por un conjunto de
líneas (conductores) que conecta las diferentes unidades de un computador. La
principal función de un bus será, pues, servir de soporte para la realización de
transferencias de información entre dichas unidades. La unidad que inicia y
controla la transferencia se conoce como master del bus para dicha transferencia,
y la unidad sobre la que se realiza la transferencia se conoce como slave. Los

papeles de master y slave son dinámicos, de manera que una misma unidad
puede realizar ambas funciones en transferencias diferentes. Por ejemplo, una
unidad de DMA hace de slave en la inicialización que realiza el master, la CPU,
para una operación de E/S. Sin embargo, cuando comienza la operación, la
unidad de DMA juega el papel de master frente a la memoria, que en esta ocasión
hace de slave.
Para garantizar el acceso ordenado al bus, existe un sistema de arbitraje,
centralizado o distribuido, que establece las prioridades cuando dos o más
unidades pretenden acceder al mismo tiempo al bus, es decir, garantiza que en
cada momento sólo exista un master.
Para establecer el tiempo de duración de las transferencias y que sea conocido
tanto por el master como por el slave, un bus debe disponer de los medios
necesarios para la sincronización master-slave (Véase la siguiente figura).

65 | 76
Líneas
Las líneas de un bus podemos clasificarlas en grupos, atendiendo al papel que
cumplen en las transferencias.

Líneas de información básica.


Las utiliza el master para definir los dos elementos principales de una
transferencia, el slave y los datos. Se dividen, pues, en dos grupos: direcciones y
datos.

Líneas de Direcciones
Determinan la unidad que hace de slave en la transferencia
Líneas de Datos Transportan los datos de la transferencia. Existen buses con
líneas independientes para cada uno de los anteriores tipos de información. En
cambio en otros se utilizan las mismas líneas multiplexadas en el tiempo.
Líneas de control
Transmiten las órdenes que determinan la operación de transferencia a realizar
por las líneas de datos y direcciones, y marcan el ordenamiento temporal de las
señales que circulan por el bus. Las primeras son las líneas de control
propiamente dichas, de las que las más importantes son:
 Escritura en memoria
 Lectura de memoria
 Operación de salida
 Operación de entrada

Las segundas son las líneas de sincronismo, entre las que cabe citar las
siguientes:
 Reconocimiento de transferencia
 Reloj
 Reset.

Líneas de arbitraje
Establecen la prioridad entre diferentes peticiones de acceso al bus. Por ejemplo:
66 | 76
 Petición del bus
 Cesión del bus
 Ocupación del bus

Direccionalidad de buses
Las líneas de un bus podemos también clasificarlas en función de su
direccionalidad:
Líneas unidireccionales
 Emisor simple (Véase la siguiente figura).

 Emisor múltiple (Véase la siguiente figura).

Líneas bidireccionales
Desde el punto de vista físico un bus es un conjunto de conductores eléctricos
paralelos dispuestos sobre una tarjeta de circuito impreso. Los dispositivos del
sistema se conectan a través de conectores (slots) dispuestas a intervalos
regulares a lo largo del bus (Véase la siguiente figura).

67 | 76
1.2.4.3 Jerarquías de buses
Bus del sistema (backplane) Los ordenadores antiguos utilizaban una topología de
bus único, denominado bus del sistema o backplane, para conectar procesador,
memoria y los módulos de E/S, tal como la que se muestra en la siguiente figura:

Sin embargo, cuando el número de dispositivos conectados a un bus aumenta


disminuye su rendimiento. Esto es debido a dos motivos fundamentales. El
primero el aumento del retardo de propagación de las señales debido al aumento
de longitud de los conductores que dan soporte al bus. Esto afecta especialmente
a la propagación encadenada de la señal de concesión del bus. El segundo el
incremento de demanda de acceso que se produce al aumentar el número de
dispositivos conectados. Este exceso de dispositivos puede crear un cuello de
botella que haga que el rendimiento del sistema se degrade por la espera inútil
que se origina cuando tienen que realizar transferencias.
Por otra parte, las diferencias en la velocidad de operación de los dispositivos
conectados al bus, también repercuten negativamente en su rendimiento. En
efecto, los dispositivos lentos pueden ocasionar retrasos importantes a los rápidos.

Buses locales
68 | 76
El bus local es de longitud pequeña, de alta velocidad, y adaptado a la arquitectura
particular del sistema para maximizar el ancho de banda entre el procesador y la
caché, por eso suele ser un bus propietario. Este bus aísla el tráfico procesador-
caché del resto de transferencias del sistema (Véase la siguiente figura).

Buses de E/S o de expansión


El bus de E/S o de expansión reduce el tráfico en el bus del sistema, de manera
que el procesador puede acceder a memoria en un fallo de caché mientras realiza
una operación de entrada/salida.
Los buses de expansión son buses estándar o abiertos (ISA, EISA, PCI, etc.) es
decir, independientes del computador y con unas características bien definidas en
el correspondiente documento de normalización. La existencia de estos buses
permite diseñar una amplia gama de controladores de periféricos compatibles.
Para conectar los buses del sistema y de expansión se requiere un Adaptador de
Bus, dispositivo que permite adaptar las distintas propiedades de ambos buses:
velocidad, carácter síncrono o asíncrono, multiplexación.
El proceso de jerarquización se puede complicar más con otras topologías que
den cabida a dispositivos de distinta velocidad. De esta forma se equilibra mejor el
tráfico de información en sistemas que operan con muchos dispositivos
conectados. En la figura siguiente se muestra una topología jerárquica en la que
se contempla un bus de alta velocidad del que cuelgan dos buses, uno de
expansión para dispositivos rápidos y otro de E/S para dispositivos lentos.

69 | 76
1.2.5. Interrupciones
Una interrupción es un suceso, más o menos esperado pero que no se conoce el
momento exacto en que se va a producir. La interrupción se produce bien como
consecuencia de un evento externo a la CPU (por los dispositivos de E/S), o bien
por la propia CPU como consecuencia de la ejecución o intento de ejecución de
una instrucción. Por cualquiera de estos motivos, una interrupción debe
entenderse como un suceso que se produce “por sorpresa”, pero que hay que
tratarlo inmediatamente.
Cuando se produce una interrupción, lo normal es:
1°) abandonar el flujo secuencial de ejecución actual.
2°) dar control a una Rutina de Tratamiento de la Interrupción (RTI) producida.
3°) ejecutar la RTI y, por último,
4°) reanudar el flujo normal de ejecución en el punto donde se interrumpió.
(Véase la siguiente figura).

70 | 76
Teniendo en cuenta que las TRI forman parte del sistema operativo instalado, esta
opción forzaría mucho su construcción, pues en cada caso ocupara un tamaño
distinto y en distinta dirección.
En su lugar, lo que suele hacer es saltar a las rutinas de tratamiento mediante
indirección.
Normalmente, en la parte la parte baja de la memoria se dispone de una Tabla de
Vectores de Interrupción, denominada así porque cada elemento o entrada de la
tabla contiene un Vector de manera que el primer elemento de esta tabla
contiene la dirección de la rutina de tratamiento de la interrupción 0; la segunda
entrada, la dirección de la RTI 1, y así sucesivamente. (En Motorola, esta tabla a
la que también se le conoce como Vector de Interrupciones, está en la dirección 0;
en el Pentium, la dirección es configurable; en el PowerPC se puede optar entre
1F4 y FFF001F4 como direcciones de comienzo).
El sistema operativo debe encargarse, en su proceso de inicialización, de
establecer las direcciones de sus rutinas de tratamiento de interrupciones en los
vectores de interrupción correspondientes.
Tipos de interrupciones
Teniendo en cuenta que una interrupción la puede producir un dispositivo externo
a la CPU o la ejecución de una interrupción en la propia CPU, nos encontramos
con los siguientes tipos de interrupciones que se muestran en la imagen.

Las interrupciones externas las producen los dispositivos de E/S o sensores que
son periférico de la CPU. Estas interrupciones son asíncronas, pues nunca se
sabe con exactitud cuándo van a producirse.
Las interrupciones internas se pueden producir por dos motivos:
 En la ejecución de una instrucción se detecta alguna anomalía, como por
ejemplo, que el código de operación es desconocido, que se intenta dividir

71 | 76
por cero, o que se ha realizado una operación aritmética que ha producido
overflow. Cada uno de estos motivos genera una interrupción distinta, y el
momento exacto en que se produce depende de cada instrucción; en el
caso de un código de operación inexistente, la interrupción se produce
mientras se decodifica la instrucción, en el caso de un intento de división
por cero, la interrupción se produce al comprobar que el divisor es cero; y
en el caso del overflow, la interrupción se produce al finalizar la operación.
 Interrupciones simuladas o interrupciones software. Son interrupciones
generadas por las instrucciones del lenguaje maquina incluida en el código
de un programa, cuyo cometido es única y simplemente simular una
interrupción.

Cuando se ejecuta una de estas instrucciones de interrupciones software, el


tratamiento que se genera es exactamente igual al que habría si esa misma
interrupción la hubiera generado cualquier dispositivo externo. Por ejemplo, la
instrucción |INT 7| de Intel hace que se ejecuté la rutina de tratamiento de la
interrupción 7; una vez ejecutada dicha rutina, se continuara con la instrucción que
le sigue en secuencia a |INT 7|.
Las interrupciones software se suelen utilizar para comunicar las aplicaciones de
usuario con el sistema operativo (traps) y para comprobar el tratamiento de las
interrupciones que generan los dispositivos periféricos (o las internas de la CPU).
Las interrupciones internas son síncronas pues la producción de una de estas
interrupciones está asociada a una instrucción del propio programa, y no depende
en absoluto de circunstancias externas al programa; por esto, si siempre se
utilizan los mismos datos, al ejecutar el programa varias veces siempre se
producen las misma interrupciones (si las hay) en los mismos momentos (relativos
al comienzo de ejecución del programa).
Algunos fabricantes de procesadores, como Motorola, denominan “excepciones” a
todos los tipos de interrupciones, y a las producidas internamente a la CPU las
llama traps. PowerPC también llama “excepciones” a las interrupciones en
general. Intel denomina “interrupciones” a las originadas externamente a la CPU, y
“excepciones” a las producidas como consecuencia de la ejecución de alguna
instrucción.
¿Cuántas patas hay para comunicarle interrupciones a la CPU?
El procesador podría disponer de una pata distinta para cada tipo de interrupción,
pero dado que, por ejemplo, Intel, y Motorola tienen hasta 256 interrupciones, no
parece conveniente dedicarle sola mente a esto 256 patas en el procesador. En
su lugar, lo que ay es una pata (INTR) que avisa de que se ha producido una
interrupciones especiales, como RESET, Bus Error, o la NMI (non Maskable
interrupt), que disponen directamente de una pata en la CPU para cada una de

72 | 76
ellas. Ya veremos más adelante el proceso para averiguar el nivel de la
interrupción producida cuando se activa la pata INTR (Véase la siguiente figura).

El Motorola 68000 dispone de tres patas para señalar las interrupciones


generales, pero las utiliza para indicar la prioridad de las interrupciones, no para
señalar interrupciones distintas.
En Intel también hay distintas prioridades se realiza en un dispositivo externo a la
CPU, denominado PIC (Programmable interrupt Controller). (Véase la siguiente
figura)

Hay dos tipos de interrupciones: enmascarables y no enmascarables.


Las interrupciones no enmascarables con las que siempre se atienden. Se deben
a motivos cuya atención no puede dilatarse en el tiempo. Por ejemplo, un reset, un
error de bus de direcciones, o una interrupción no enmascarable (NMI), que puede
deberse a motivos como una detección de fallo de tensión alimentación o la
detección de un error en memoria RAM. Estas interrupciones suelen contar con
patas específicas en la CPU (RESET, BERR, NMI), aunque Motorola utiliza la
interrupción de nivel 7 como NMI.

73 | 76
Las interrupciones enmascarables se pueden atender o no, dependiendo de lo que
este indicado en el registro de estado. Intel cuenta con dos instrucciones, ENABLE
y DISABLE, para permitir o inhibir la aceptación de interrupciones, que activan o
desactivan el flag de aceptación de interrupciones del registro de estado.
En el Motorola, para inhibir la aceptación de interrupciones debe establecer el
nivel de privilegio 7 en su registro de estado (ORI #$0700, SR), con lo cual
solamente aceptaría las interrupciones clasificadas como no enmascarables (las
de nivel 7). Para permitir todas las interrupciones se debe ejecutar la instrucción
ADNI #$F0FF, SR la cual pone a cero los bits de prioridad (I0, I1, I2) en el registro
de estado. (Véase la siguiente figura).

74 | 76
CONCLUSIÓN

A lo largo de este reporte, se comprendió el correcto funcionamiento de una


computadora. Después de ver la evolución que ésta ha sufrido se puede decir, que la
compactación de las máquinas e introducción de una CPU, memorias, circuitos
integrados y dispositivos de E/S en ella, ha dado un plus a su funcionamiento. Esto la
hace cada vez, conforme avanza el tiempo, más rápida y portátil. Cumpliendo
progresivamente con innovaciones que mejoran su desempeño en las áreas más
sobresalientes como la memoria RAM, discos duros, tarjetas gráficas, conectividad y
dispositivos de E/S. Los programadores y técnicos que se ocupan de desarrollar como
de dar mantenimiento deben mantenerse en constante actualización sin descuidar la
base de todo lo que en la actualidad existe tal y como se ha aprendido.
La importancia de una computadora no solo está en la marca del fabricante o precio
en el mercado, en realidad, su importancia radica en los componentes que ésta
contiene en su interior, conforme avanza el tiempo, los usuarios demandan de
componentes de alto nivel para sus máquinas, llámese memoria RAM o disco duro, lo
cual ha obligado a los desarrolladores estar innovando en estos sectores, y
comprender que sin la organización interna correcta de una computadora, éstas no
serían capaces de realizar todas sus actividades demandantes.

75 | 76
BIBLIOGRAFIA

 https://www.uclm.es/profesorado/licesio/Docencia/ETC/13_CBas-
EstructuraComputador_itis.pdf
 http://rvazquez.org/Misitio/Arquitectura_de_Computadoras_files/buses1.pdf
 http://www.geocities.ws/er_manu_dky/er_manu_dkytipodebuse.pdf
 Arquitectura de Computadoras - Morris Mano.
 Organización y Arquitectura de Computadoras. 4ta Edición ed. Madrid,
España.: Editorial Prentice hall; 1997.
 Tanenbaum, Andrew S. Organización de computadoras un enfoque
estructurado. Cuarta edición. Estado de México, México 2000.

 Stallings, William. Organización de arquitectura de computadoras. Cuarta


edición. Editorial Prentice Hall. Madrid España. 1997

 Miles, J. Murdocca. Principios de arquitecturas de computadoras. Buenos


aires, republica argentina. Prentice hall. 2002

 Mano, Morris M. arquitectura de computadoras Prentice hall

76 | 76

También podría gustarte