Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.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.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
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.
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.
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.
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
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.
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.
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
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.
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
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
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
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.
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.
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.
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
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.
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:
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.
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:
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 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 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).
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:
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).
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.
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).
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
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.
76 | 76