You are on page 1of 73

REPÚBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD DEL ZULIA

FACULTAD DE INGENIERÍA

ESCUELA DE INGENIERÍA ELÉCTRICA

ARQUITECTURA DE COMPUTADORES, MICROPORCESADORES INTEL,


MICROPROCESADORES BÁSICOS 16 BITS: 8086 Y 8088, MEMORIAS
SEMICONDUCTORAS

(Monografía para la Unidad Curricular Electrónica Digital II)

Elaborado por:
Aguilar Briceño, Roberto Alfonzo. C.I: 23.765.606
Ibarra Vivas, Ricardo Amado C.I: 18.202.527
Hernández Gutiérrez, Leonardo José C.I: 24.735.983
Vílchez Montilla, Francisco Javier C.I: 23.737.713

Profesor:
Ing. Claudio Bustos

Maracaibo, marzo de 2018


2

ARQUITECTURA DE COMPUTADORES, MICROPORCESADORES INTEL,


MICROPROCESADORES BÁSICOS 16 BITS: 8086 Y 8088, MEMORIAS
SEMICONDUCTORAS

(Monografía para la Unidad Curricular Electrónica Digital II)

Ibarra Vivas, Ricardo Amado Aguilar Briceño, Roberto Alfonzo.


C.I. 18.202.527 C.I: 23.765.606
Urb. Los Olivos, Urb. Produzca,
Municipio Maracaibo, Municipio Valmore Rodríguez,
Estado Zulia. Estado Zulia.
Tlf: 0412-6462053 Tlf: 0424-6847616
Correo: ricardoibarra7@gmail.com Correo: robrtaguilarb12@gmail.com

__________________________________ _________________________________
Hernández Gutiérrez, Leonardo José. Vílchez Montilla, Francisco Javier
C.I: 24.735.983 C.I: 23.737.713
Urb. Delicias, Urb. La Trinidad,
Municipio Cabimas, Municipio Maracaibo,
Estado Zulia. Estado Zulia.
Tlf:0412-0642667 Tlf:0412-5235211
Correo: leonardo2war@gmail.com Correo: franvil31@gmail.com

___________________
Ing. Claudio Bustos
Profesor

0
3

INDICE DE CONTENIDO

Pagina
INTRODUCCIÓN 5

1. Estudio de Arquitectura de microprocesadores Intel 32 bits (IA-32). 6


1.1. Historia del desarrollo de la computación. 6
1.1.1. Primera generación. 8
1.1.2. Segunda Generación. 9
1.1.3. Tercera Generación. 10
1.1.4. Cuarta Generación. 11
1.1.5. Quinta Generación. 12
1.2. Arquitectura del computador y CPU. 12
1.2.1. Arquitectura del Computador. 12
1.2.1.1. Dispositivos de Entrada. 13
1.2.1.2. Dispositivos de Salida. 14
1.2.1.3. Dispositivos de Proceso. 15
1.2.1.4. Dispositivos de Almacenamiento. 17
1.2.2. Arquitectura de los CPU 19
1.2.2.1. Modelo de Von Neumann. 21
1.2.2.2. Arquitectura Harvard. 21
1.3. Arquitectura y evolución de los microprocesadores Intel. 22
1.3.1. Arquitectura. 22
1.3.2. Evolución. 23
1.4. Datos manejados por la arquitectura IA-32. 31
1.4.1. Organización de los datos en la memoria. 31
1.4.2. Datos enteros. 32
1.4.3. Datos decimales. 32
1.4.4. Datos BCD. 32
1.5. Modos de direccionamiento de memoria. 32
1.5.1. Modo implícito. 32
1.5.2. Modo Inmediato. 33
1.5.3. Modo directo por registro. 33
1.5.4. Modo directo (o absoluto). 34
1.5.5. Modo indirecto. 34
1.5.6. Modo por Base y Desplazamiento. 35
1.5.7. Modo (Índice * Escala) y Desplazamiento. 35
1.5.8. Modo Base + Índice + Desplazamiento. 35
1.5.9. Modo Base + (Índice * Escala)+ Desplazamiento. 36
1.5.10. Modo de Pila. 36
1.6. Lenguaje ensamblador. 36
1.6.1. Introducción al lenguaje ensamblador. 36
1.6.2. Características del lenguaje ensamblador. 38

2. Microprocesadores básicos de 16 bits: 8086 y 8088 de Intel. 38


2.1. 2.1. Arquitectura específica. 39
2.1.1. Registros de almacenamiento temporal. 40
2.1.2. Registros de segmento. 42
4

2.1.3. 6744Registros de la pila. 42


2.1.4. Registros índices. 42
2.1.5. Registros de instrucción. 43
2.1.6. Registro de Banderas. 43
2.2. Datos Manejados. 44
2.3. Interfaces de Entrada y Salida. 45
2.4. Ejemplos de Aplicación. 46

3. Memorias Semiconductoras. 46
3.1. Jerarquías de memoria. 47
3.2. Clasificación/Empaques de las Memorias Semiconductoras. 51
3.2.1. Memoria RAM (Memoria de Acceso Aleatorio). 51
3.2.1.1. Tipos de memoria RAM. 52
3.2.2. Memorias ROM (Memoria solo de Lectura). 54
3.2.2.1. Tipos de memoria ROM. 55
3.3. Interfaz de las Memorias Semiconductoras. 58
3.4. Decodificación. 61
3.4.1. Decodificación de direcciones. 61
3.4.2. Decodificación total. 62
3.4.3. Decodificación Parcial. 63
3.5. Sistemas de Memoria. 64
3.5.1. La Organización de los Módulos. 65
3.5.2. Agrupación por Longitud de Celda. 67
3.5.3. Agrupación por Direcciones. 68

CONCLUSION. 71
REFERENCIAS. 73
5

INTRODUCCIÓN

Ninguna otra invención en la historia se ha diseminado tan aprisa por todo el mundo o
ha tocado tan profundamente tantos aspectos de la existencia humana, El
microprocesador es uno de los logros más sobresalientes del siglo XX, y hoy día existen
casi 20,000 millones de microchips de alguna clase en uso.

Han pasado casi 45 años desde que Intel diseñara el primer microprocesador, siendo la
compañía pionera en el campo de la fabricación de estos productos, y que actualmente
cuenta con más del 90% del mercado. Un tiempo en el que todo ha cambiado
enormemente, se ha visto pasar varias generaciones de máquinas que han ayudado en
el trabajo diario a la humanidad.

Su presencia ha comenzado a cambiar la forma de percibir el mundo e incluso a la


humanidad. Cada vez se hace más difícil pasar por alto el microprocesador como otro
simple producto en una larga línea de innovaciones tecnológicas.

Con la presente investigación se mostrará un poco de la historia de la computación,


arquitectura y la evolución que han tenido los microprocesadores Intel hasta estos
tiempos, con un mayor enfoque en los microprocesadores Intel 8086 y 8088, de igual
manera se dará a conocer el lenguaje ensamblador, el cual es el más rápido en
convertir utilizado para llegar al lenguaje máquina de los microprocesadores.

De igual manera las memorias de tipo semiconductor, hoy en día constituyen el sector
más expansivo dentro de la tecnología de los semiconductores. En este trabajo se
expondrán las características más importantes de las memorias, su jerarquía, donde en
ésta se establece un orden en función de la capacidad de memoria y su velocidad, su
decodificación, y una clasificación general, que dará a su vez paso a una segunda
clasificación de las de tipo semiconductor en forma integrada.
6

1. ESTUDIO DE ARQUITECTURA DE MICROPROCESADORES INTEL 32 BITS (IA-32)

1.1. Historia del desarrollo de la computación.

Uno de los primeros dispositivos mecánicos para contar fue el ábaco, cuya historia se
remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy sencillo,
consta de cuentas ensartadas en varillas que a su vez están montadas en un marco
rectangular. Al desplazar las cuentas sobre varillas, sus posiciones representan valores
almacenados, y es mediante dichas posiciones que este representa y almacena datos.
A este dispositivo no se le puede llamar computadora por carecer del elemento
fundamental llamado programa.

Otro de los inventos mecánicos fue la Pascalina inventada por Blaise Pascal (1623 -
1662) de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de Alemania. Con
estas máquinas, los datos se representaban mediante las posiciones de los engranajes,
y los datos se introducían manualmente estableciendo dichas posiciones finales de las
ruedas, de manera similar a como leemos los números en el cuentakilómetros de un
automóvil.

Figura 1.

La primera computadora fue la máquina analítica creada por Charles


Babbage, profesor matemático de la Universidad de Cambridge en el siglo XIX. La idea
que tuvo Charles Babbage sobre un computador nació debido a que la elaboración de
las tablas matemáticas era un proceso tedioso y propenso a errores. En 1823
el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un
dispositivo mecánico para efectuar sumas repetidas.

Mientras tanto Charles Jacquard (francés), fabricante de tejidos, había creado un telar
que podía reproducir automáticamente patrones de tejidos leyendo
la información codificada en patrones de agujeros perforados en tarjetas de papel
rígido. Al enterarse de este método Babbage abandonó la máquina de diferencias y se
dedicó al proyecto de la máquina analítica que se pudiera programar con tarjetas
perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos.
La tecnología de la época no bastaba para hacer realidad sus ideas. El mundo no
estaba listo, y no lo estaría por cien años más.
7

En 1944 se construyó en la Universidad de Harvard, la Mark I, diseñada por un equipo


encabezado por Howard H. Aiken. Esta máquina no está considerada como
computadora electrónica debido a que no era de propósito general y su funcionamiento
estaba basado en dispositivos electromecánicos llamados relevadores.

Figura 2. ENIAC (1945) universidad de Pennsylvania.

En 1947 se construyó en la Universidad de Pennsylvania la ENIAC (Electronic


Numerical Integrator And Calculator) que fue la primera computadora electrónica, el
equipo de diseño lo encabezaron los ingenieros John Mauchly y John Eckert. Esta
máquina ocupaba todo un sótano de la Universidad, tenía más de 18 000 tubos de
vacío, consumía 200 KW de energía eléctrica y requería todo
un sistema de aire acondicionado, pero tenía la capacidad de realizar cinco mil
operaciones aritméticas en un segundo.

Figura 3. ENIAC

El proyecto, auspiciado por el departamento de Defensa de los Estados Unidos, culminó


dos años después, cuando se integró a ese equipo el ingeniero y matemático húngaro
John von Neumann (1903 - 1957). Las ideas de von Neumann resultaron tan
fundamentales para su desarrollo posterior, que es considerado el padre de
las computadoras.

La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseñada por este
nuevo equipo. Tenía aproximadamente cuatro mil bulbos y usaba un tipo
de memoria basado en tubos llenos de mercurio por donde
circulaban señales eléctricas sujetas a retardos.

La idea fundamental de von Neumann fue: permitir que en la memoria coexistan datos
con instrucciones, para que entonces la computadora pueda ser programada en
8

un lenguaje, y no por medio de alambres que eléctricamente interconectaban varias


secciones de control, como en la ENIAC.

Figura 4. Neumann y La EDVAC

Todo este desarrollo de las computadoras suele divisarse por generaciones y el criterio
que se determinó para determinar el cambio de generación no está muy bien definido,
pero resulta aparente que deben cumplirse al menos los siguientes requisitos:

 La forma en que están construidas.


 Forma en que el ser humano se comunica con ellas.

1.1.1. Primera generación.

En esta generación había un gran desconocimiento de las capacidades de las


computadoras, puesto que se realizó un estudio en esta época que determinó que con
veinte computadoras se saturaría el mercado de los Estados Unidos en el campo de
procesamiento de datos.

Esta generación abarco la década de los cincuenta. Y se conoce como la primera


generación. Estas máquinas tenían las siguientes características:

 Estas máquinas estaban construidas por medio de tubos de vacío.


 Eran programadas en lenguaje de máquina.
 Las máquinas son grandes y costosas (de un costo aproximado de ciento de
miles de dólares).

En 1951 aparece la UNIVAC (NIVersAl Computer), fue la primera computadora


comercial, que disponía de mil palabras de memoria central y podían leer cintas
magnéticas, se utilizó para procesar el censo de 1950 en los Estados Unidos.

La computadora más exitosa de la primera generación fue la IBM 650, de la cual se


produjeron varios cientos. Esta computadora que usaba un esquema de memoria
secundaria llamado tambor magnético, que es el antecesor de los discos actuales.
9

Otros modelos de computadora que se pueden situar en los inicios de la segunda


generación son: la UNIVAC 80 y 90, las IBM 704 y 709, Burroughs 220 y UNIVAC 1105.

1.1.2. Segunda Generación.

Cerca de la década de 1960, las computadoras seguían evolucionando, se reducía su


tamaño y crecía su capacidad de procesamiento. También en esta época se empezó a
definir la forma de comunicarse con las computadoras, que recibía el nombre de
programación de sistemas.

Figura 5.Computadora con uso de Transistores

Las características de la segunda generación son las siguientes:

 Están construidas con circuitos de transistores.


 Se programan en nuevos lenguajes llamados lenguajes de alto nivel.

En esta generación las computadoras se reducen de tamaño y son de menor costo.


Aparecen muchas compañías y las computadoras eran bastante avanzadas para su
época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester.

Algunas de estas computadoras se programaban con cintas perforadas y otras más por
medio de cableado en un tablero. Los programas eran hechos a la medida por un
equipo de expertos: analistas, diseñadores, programadores y operadores que se
manejaban como una orquesta para resolver los problemas y cálculos solicitados por la
administración.

El usuario final de la información no tenía contacto directo con las computadoras.


Aparecen los programas procesadores de palabras como el célebre WordStar, la
impresionante hoja de cálculo (spreadsheet) Visicalc y otros más que de la noche a la
mañana cambian la imagen de la computadora. El software empieza a tratar de
alcanzar el paso del hardware. Pero aquí aparece un nuevo elemento: el usuario.

Las computadoras de esta generación fueron: la Philco 212 (esta compañía se retiró del
mercado en 1964) y la UNIVAC M460, la Control Data Corporation modelo 1604,
10

seguida por la serie 3000, la IBM mejoró la 709 y sacó al mercado la 7090, la National
Cash Register empezó a producir máquinas para proceso de datos de tipo comercial,
introdujo el modelo NCR 315. La Radio Corporation of America introdujo el modelo 501,
que manejaba el lenguaje COBOL, para procesos administrativos y comerciales.
Después salió al mercado la RCA 601.

1.1.3. Tercera Generación.

Con los progresos de la electrónica y los avances de comunicación con las


computadoras en la década de los 1960, surge la tercera generación de las
computadoras. Se inaugura con la IBM 360 en abril de 1964.

Las características de esta generación fueron las siguientes:

 Su fabricación electrónica está basada en circuitos integrados.


 Su manejo es por medio de los lenguajes de control de los sistemas operativos.

Figura 6. Serie 360 IBM (uso de circuitos integrados)

La IBM produce la serie 360 con los modelos 20, 22, 30, 40, 50, 65, 67, 75, 85, 90, 195
que utilizaban técnicas especiales del procesador, unidades de cinta de nueve canales,
paquetes de discos magnéticos y otras características que ahora son estándares (no
todos los modelos usaban estas técnicas, sino que estaba dividido por aplicaciones).

El sistema operativo de la serie 360, se llamó OS que contaba con varias


configuraciones, incluía un conjunto de técnicas de manejo de memoria y del
procesador que pronto se convirtieron en estándares.

En 1964 CDC introdujo la serie 6000 con la computadora 6600 que se consideró
durante algunos años como la más rápida. En la década de 1970, la IBM produce la
serie 370 (modelos 115, 125, 135, 145, 158, 168). UNIVAC compite son los modelos
1108 y 1110, máquinas en gran escala; mientras que CDC produce su serie 7000 con el
modelo 7600. Estas computadoras se caracterizan por ser muy potentes y veloces.
11

A finales de esta década la IBM de su serie 370 produce los modelos 3031, 3033, 4341.
Burroughs con su serie 6000 produce los modelos 6500 y 6700 de avanzado diseño,
que se reemplazaron por su serie 7000. Honey - Well participa con su computadora
DPS con varios modelos.

A mediados de la década de 1970, aparecen en el mercado las computadoras de


tamaño mediano, o minicomputadoras que no son tan costosas como las grandes
(llamadas también como mainframes que significa también, gran sistema), pero
disponen de gran capacidad de procesamiento. Algunas minicomputadoras fueron las
siguientes: la PDP - 8 y la PDP - 11 de Digital Equipment Corporation, la VAX (Virtual

Address eXtended) de la misma compañía, los modelos NOVA y ECLIPSE de Data


General, la serie 3000 y 9000 de Hewlett - Packard con varios modelos el 36 y el 34, la
Wang y Honey - Well -Bull, Siemens de origen alemán, la ICL fabricada en Inglaterra.
En la Unión Soviética se utilizó la US (Sistema Unificado, Ryad) que ha pasado por
varias generaciones.

1.1.4. Cuarta Generación.

Aquí aparecen los microprocesadores que es un gran adelanto de la microelectrónica,


son circuitos integrados de alta densidad y con una velocidad impresionante. Las
microcomputadoras con base en estos circuitos son extremadamente pequeñas y
baratas, por lo que su uso se extiende al mercado industrial. Aquí nacen las
computadoras personales que han adquirido proporciones enormes y que han influido
en la sociedad en general sobre la llamada "revolución informática".

En 1976 Steve Wozniak y Steve Jobs inventan la primera microcomputadora de uso


masivo y más tarde forman la compañía conocida como la Apple que fue la segunda
compañía más grande del mundo, antecedida tan solo por IBM; y está por su parte es
aún de las cinco compañías más grandes del mundo.

Con el surgimiento de las computadoras personales, el software y los sistemas que con
ellas de manejan han tenido un considerable avance, porque han hecho más interactiva
la comunicación con el usuario. Surgen otras aplicaciones como los procesadores de
palabra, las hojas electrónicas de cálculo, paquetes gráficos, etc. También las industrias
del Software de las computadoras personales crece con gran rapidez, Gary Kildall y
William Gates se dedicaron durante años a la creación de sistemas operativos y
métodos para lograr una utilización sencilla de las microcomputadoras (son los
creadores de CP/M y de los productos de Microsoft).
12

1.1.5. 3Quinta Generación.

En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha


dado a la tarea de poner también a esa altura el desarrollo del software y los sistemas
con que se manejan las computadoras. Surge la competencia internacional por el
dominio del mercado de la computación, en la que se perfilan dos líderes que, sin
embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse
con la computadora en un lenguaje más cotidiano y no a través de códigos o lenguajes
de control especializados.

Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras",


con los objetivos explícitos de producir máquinas con innovaciones reales en los
criterios mencionados. Y en los Estados Unidos ya está en actividad un programa en
desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente
manera:

 Procesamiento en paralelo mediante arquitecturas y diseños especiales y


circuitos de gran velocidad.
 Manejo de lenguaje natural y sistemas de inteligencia artificial.

El futuro previsible de la computación es muy interesante, y se puede esperar que esta


ciencia siga siendo objeto de atención prioritaria de gobiernos y de la sociedad en
conjunto.

1.2. Arquitectura del computador y CPU.

1.2.1. Arquitectura del Computador.

La arquitectura de computadoras es el diseño conceptual y la estructura operacional


fundamental de un sistema que conforma una 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, con especial interés en la forma en que la unidad
central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria.
13

Figura 7. Arquitectura del computador

La arquitectura de una computadora explica la situación de sus componentes y permite


determinar las posibilidades de un sistema informático, con una determinada
configuración, pueda realizar las operaciones para las que se va a utilizar. La
arquitectura básica de cualquier ordenador completo está formado por solo 5
componentes básicos: procesador, memoria RAM, disco duro, dispositivos de
entrada/salida y software.

1.2.1.1. Dispositivos de Entrada.

Estos dispositivos permiten al usuario del computador introducir datos, comandos y


programas en el CPU. El dispositivo de entrada más común es un teclado similar al de
las máquinas de escribir. La información introducida con el mismo, es transformada por
el ordenador en modelos reconocibles. Los datos se leen de los dispositivos de entrada
y se almacenan en la memoria central o interna.
14

Los Dispositivos de Entrada, convierten la información en señales eléctricas que se


almacenan en la memoria central. Los más comunes son:

 Teclado: El teclado es un dispositivo eficaz para introducir datos no gráficos


como rótulos de imágenes asociados con un despliegue de gráficas. Los
teclados también pueden ofrecerse con características que facilitan la entrada de
coordenadas de la pantalla, selecciones de menús o funciones de gráficas.
 Ratón ó Mouse: Es un dispositivo electrónico que nos permite dar instrucciones
a nuestra computadora a través de un cursor que aparece en la pantalla y
haciendo clic para que se lleve a cabo una acción determinada; a medida que el
Mouse rueda sobre el escritorio, el cursor (Puntero) en la pantalla hace lo mismo.
Tal procedimiento permitirá controlar, apuntar, sostener y manipular varios
objetos gráficos (Y de texto) en un programa. A este periférico se le llamó así por
su parecido con un roedor. Existen modelos en los que la transmisión se hace
por infrarrojos eliminando por tanto la necesidad de cableado. Al igual que el
teclado, el Mouse es el elemento periférico que más se utiliza en una PC.
 Micrófono: Los micrófonos son los transductores encargados de transformar
energía acústica en energía eléctrica, permitiendo, por lo tanto el registro,
almacenamiento, transmisión y procesamiento electrónico de las señales de
audio. Son dispositivos duales de los altoparlantes, constituyendo ambos
transductores los elementos más significativos en cuanto a las características
sonoras que sobre imponen a las señales de audio.
 Scanner: Es una unidad de ingreso de información. Permite la introducción de
imágenes gráficas al computador mediante un sistema de matrices de puntos,
como resultado de un barrido óptico del documento. La información se almacena
en archivos en forma de mapas de bits (bit maps), o en otros formatos más
eficientes como Jpeg o Gif.
 Cámara Digital: Se conecta al ordenador y le transmite las imágenes que capta,
pudiendo ser modificada y retocada, o volverla a tomar en caso de que este mal.
 Cámara de Video: Graba videos como si de una cámara normal, pero las
ventajas que ofrece en estar en formato digital, que es mucho mejor la imagen,
tiene una pantalla LCD por la que ves simultáneamente la imagen mientras
grabas. Se conecta al PC y este recoge el video que has grabado, para poder
retocarlo posteriormente con el software adecuado.
 Webcam: Es una cámara de pequeñas dimensiones. Sólo es la cámara, no tiene
LCD. Tiene que estar conectada al PC para poder funcionar, y esta transmite las
imágenes al ordenador. Su uso es generalmente para videoconferencias por
Internet, pero mediante el software adecuado, se pueden grabar videos como
una cámara normal y tomar fotos estáticas; entre otras.

1.2.1.2. Dispositivos de Salida.

Estos dispositivos permiten al usuario ver los resultados de los cálculos o de las
manipulaciones de datos de la computadora. El dispositivo de salida más común es la
unidad de visualización (VDU, acrónimo de Video Display Unit), que consiste en un
15

monitor que presenta los caracteres y gráficos en una pantalla similar a la del televisor.
Los dispositivos de Salida más Comunes Son:

 Pantalla o Monitor: Es en donde se ve la información suministrada por el


ordenador. En el caso más habitual se trata de un aparato basado en un tubo de
rayos catódicos (CRT) como el de los televisores, mientras que en los portátiles
es una pantalla plana de cristal líquido (LCD).
 Impresora: Es el periférico que el ordenador utiliza para presentar información
impresa en papel. Las primeras impresoras nacieron muchos años antes que el
PC e incluso antes que los monitores, siendo el método más usual para
presentar los resultados de los cálculos en aquellos primitivos ordenadores. En
nada se parecen las impresoras a sus antepasadas de aquellos tiempos, no hay
duda de que igual que hubo impresoras antes que PC’s, las habrá después de
éstos, aunque se basen en tecnologías que aún no han sido siquiera inventadas.
 Altavoces: Dispositivos por los cuales se emiten sonidos procedentes de la
tarjeta de sonido. Actualmente existen bastantes ejemplares que cubren la oferta
más común que existe en el mercado. Se trata de modelos que van desde lo más
sencillo (una pareja de altavoces estéreo), hasta el más complicado sistema de
Dolby Digital, con nada menos que seis altavoces, pasando por productos
intermedios de 4 o 5 altavoces.
 Auriculares: Son dispositivos colocados en el oído para poder escuchar los
sonidos que la tarjeta de sonido envía. Presentan la ventaja de que no pueden
ser escuchados por otra persona, solo la que los utiliza.
 Plotters (Trazador de Gráficos): Existen plotters para diferentes tamaños
máximos de hojas (A0, A1, A2, A3 y A4); para diferentes calidades de hojas de
salida (bond, calco, acetato); para distintos espesores de línea de dibujo
(diferentes espesores de rapidógrafos), y para distintos colores de dibujo
(distintos colores de tinta en los rapidógrafos).
 Fax: Dispositivo mediante el cual se imprime una copia de otro impreso,
transmitida o bien, vía teléfono, o bien desde el propio fax. Se utiliza para ello un
rollo de papel que cuando acaba la impresión se corta.

1.2.1.3. Dispositivos de Proceso.

 Tarjeta Madre: La placa base o tarjeta madre principal (motherboard o


mainboard en inglés), es una tarjeta de circuito impreso a la que se conectan los
componentes que constituyen la computadora. Es una parte fundamental para
cualquier computadora personal de escritorio o portátil. Tiene instalados una
serie de circuitos integrados, entre los que se encuentra el circuito integrado
auxiliar (chipset), que sirve como centro de conexión entre el microprocesador
(CPU), la memoria de acceso aleatorio (RAM), las ranuras de expansión y otros
dispositivos.
16

Figura 8. Componentes de la tarjeta madre.

Va instalada dentro de una carcasa o gabinete que por lo general está hecha de chapa
y tiene un panel para conectar dispositivos externos y muchos conectores internos y
zócalos para instalar componentes internos. La placa madre, además incluye un
firmware llamado BIOS, que le permite realizar las funcionalidades básicas, como
pruebas de los dispositivos, vídeo y manejo del teclado, reconocimiento de dispositivos
y carga del sistema operativo.

 Memoria RAM: Los módulos de RAM sirven como almacén temporal de los
datos que necesita el microprocesador para trabajar. Esto significa que si
pedimos que se lea un dato desde un disco duro, éste vacía la información
requerida hacia la memoria RAM, y de ahí el micro la va tornando según lo vaya
necesitando el programa de aplicación específico. Igualmente, cuando se desea
grabar algo en el disco duro, el micro pone los datos en la RAM y de ahí se
transportan hacia el disco duro.
 Memoria ROM: La memoria de sólo lectura, conocida también como ROM
(acrónimo en inglés de read-only memory), es un medio de almacenamiento
utilizado en ordenadores y dispositivos electrónicos, que permite sólo la lectura
de la información y no su escritura, independientemente de la presencia o no de
una fuente de energía. Los datos almacenados en la ROM no se pueden
modificar, o al menos no de manera rápida o fácil. Se utiliza principalmente en su
sentido más estricto, se refiere solo a máscara ROM -en inglés, MROM- (el más
antiguo tipo de estado sólido ROM), que se fabrica con los datos almacenados
de forma permanente y, por lo tanto, su contenido no puede ser modificado de
ninguna forma. Sin embargo, las ROM más modernas, como EPROM y Flash
EEPROM, efectivamente se pueden borrar y volver a programar varias veces,
aun siendo descritos como "memoria de sólo lectura" (ROM). La razón de que se
17

las continúe llamando así es que el proceso de reprogramación en general es


poco frecuente, relativamente lento y, a menudo, no se permite la escritura en
lugares aleatorios de la memoria. A pesar de la simplicidad de la ROM, los
dispositivos reprogramables son más flexibles y económicos, por lo cual las
antiguas máscaras ROM no se suelen encontrar en hardware producido a partir
de 2007.
 Procesador: Es el cerebro del sistema, encargado de procesar todos los datos e
informaciones. A pesar de que es un dispositivo muy sofisticado no puede llegar
a hacer nada por sí solo. Para hacer funcionar a este necesitamos algunos
componentes más como lo son memorias, unidades de disco, dispositivos de
entrada/salida y los programas.

Figura 9. Partes del procesador.

El procesador o núcleo central está formado por millones de transistores y componentes


electrónicos de un tamaño microscópico. El procesamiento de las tareas o eventos que
este realiza va en función de los nanosegundos, haciendo que los miles de transistores
que contiene este trabajen en el orden de los MHz. La información binaria se introduce
mediante dispositivos periféricos que sirven de interfaz entre el mundo exterior con el
usuario. Estos periféricos lo que van a hacer será traducir la información que el usuario
introduce en señales eléctricas, que serán interpretadas como unos y ceros, los cuales
son interpretados de una manera más rápida por la computadora, ya que el lenguaje
maquina utiliza el código binario para ser interpretado por el computador.

1.2.1.4. Dispositivos de Almacenamiento.

 Disco Duro:Las unidades de discos rígidos o duros (hard disk drive, HDD) tienen
una gran capacidad de almacenamiento de información, pero al estar alojados
18

normalmente dentro de la computadora (discos internos), no son extraíbles


fácilmente. Para intercambiar información con otros equipos (si no están
conectados en red) se tienen que utilizar unidades de disco, como los disquetes,
los discos ópticos (CD, DVD), los discos magneto-ópticos, memorias USB o las
memorias flash, entre otros.

El disco duro almacena casi toda la información que manejamos al trabajar con
una computadora. En él se aloja, por ejemplo, el sistema operativo que permite
arrancar la máquina, los programas, archivos de texto, imagen, vídeo, etc. Dicha
unidad puede ser interna (fija) o externa (portátil), dependiendo del lugar que
ocupe en el gabinete o caja de computadora.

Un disco duro está formado por varios discos apilados sobre los que se mueve
una pequeña cabeza magnética que graba y lee la información. Este
componente, al contrario que el micro o los módulos de memoria, no se pincha
directamente en la placa, sino que se conecta a ella mediante un cable. También
va conectado a la fuente de alimentación, pues, como cualquier otro
componente, necesita energía para funcionar. Además, una sola placa puede
tener varios discos duros conectados.

 DVD: Las unidades de DVD-ROM son aparentemente iguales que las de CD-
ROM, pueden leer tanto discos DVD-ROM como CD-ROM. Se diferencian de las
unidades lectoras de CD-ROM en que el soporte empleado tiene hasta 17 GB de
capacidad, y en la velocidad de lectura de los datos. La velocidad se expresa con
otro número de la «x»: 12x, 16x... Pero ahora la x hace referencia a 1,32 MB/s.
Así: 16x = 21,12 MB/s. Las conexiones de una unidad de DVD-ROM son
similares a las de la unidad de CD-ROM: placa base, fuente de alimentación y
tarjeta de sonido. La diferencia más destacable es que las unidades lectoras de
discos DVD-ROM también pueden disponer de una salida de audio digital.
Gracias a esta conexión es posible leer películas en formato DVD y escuchar
seis canales de audio separados si disponemos de una buena tarjeta de sonido y
un juego de altavoces apropiado (subwoofer más cinco satélites)

 Unidad de memoria flash: La memoria flash es un tipo de memoria que se


comercializa para el uso de aparatos portátiles, como cámaras digitales o
agendas electrónicas. El aparato correspondiente o bien un lector de tarjetas, se
conecta a la computadora a través del puerto USB o Firewire.
19

1.2.2. Arquitectura de los CPU

Unidad central de proceso o UCP (conocida por sus siglas en inglés, CPU), circuito
microscópico que interpreta y ejecuta instrucciones.

 La CPU se ocupa del control y el proceso de datos en las computadoras.


 El microprocesador de la CPU está formado por una unidad aritmético-lógica
que realiza cálculos y comparaciones, y toma decisiones lógicas por una serie de
registros donde se almacena información temporalmente, y por una unidad de
control que interpreta y ejecuta las instrucciones
 Para aceptar órdenes del usuario, acceder a los datos y presentar los resultados,
la CPU se comunica a través de un conjunto de circuitos o conexiones llamado
bus. El bus conecta la CPU a los dispositivos de almacenamiento (por ejemplo,
un disco duro), los dispositivos de entrada (por ejemplo, un teclado o un mouse)
y los dispositivos de salida (por ejemplo, un monitor o una impresora).

Su funcionamiento es el siguiente:

 Cuando se ejecuta un programa, el registro de la CPU, llamado contador de


programa, lleva la cuenta de la siguiente instrucción, para garantizar que las
instrucciones se ejecuten en la secuencia adecuada.
 La unidad de control de la CPU coordina y temporiza las funciones de la CPU,
tras lo cual recupera la siguiente instrucción desde la memoria. En una secuencia
típica, la CPU localiza la instrucción en el dispositivo de almacenamiento
correspondiente.
 La instrucción viaja por el bus desde la memoria hasta la CPU, donde se
almacena en el registro de instrucción. Entretanto, el contador de programa se
incrementa en uno para prepararse para la siguiente instrucción. A continuación,
la instrucción actual es analizada por un descodificador, que determina lo que
hará la instrucción. Cualquier dato requerido por la instrucción es recuperado
desde el dispositivo de almacenamiento correspondiente y se almacena en el
registro de datos de la CPU. A continuación, la CPU ejecuta la instrucción, y los
resultados se almacenan en otro registro o se copian en una dirección de
memoria determinada.

Los componentes principales de la CPU deben realizar funciones específicas y así


liberar de trabajo costoso y difícil al microprocesador.

 La unidad de control: Se encarga de buscar las instrucciones en la memoria


principal y determinar su tipo.
20

 La unidad aritmética lógica: Como bien lo indica su nombre, está a cargo de


todas las operaciones aritméticas y lógicas necesarias en la ejecución de ciertas
instrucciones.
 Los registros: Son memorias pequeñas y de alta velocidad que sirven para
almacenar resultados de las operaciones realizadas por las diferentes unidades
de procesamiento de los CPU.
 El bus: Es el componente interno de la CPU encargado de transmitir los datos,
direcciones y señales de control, entre las diferentes unidades del CPU.

Todos estos elementos están conectados entre sí por medio de un conjunto de circuitos
o conexiones nombrado bus. Todo su funcionamiento se basa en interpretar las señales
eléctricas como números y de esta forma poder operar sobre ellas, para lo cual hace
servir métodos como el álgebra de Boole. La forma en que estos circuitos se conectan y
trabajan puede ser de dos formas, con la arquitectura Von Neumann y la arquitectura
Harvard.

Figura 10. Esquema interno del CPU.


21

1.2.2.1. Modelo de Von Neumann.

Tradicionalmente los sistemas con microprocesadores e basan en esta arquitectura, en la cual


la unidad central de proceso (CPU), está conectada a una memoria principal única (casi
siempre solo RAM) donde se guardan las instrucciones del programa y los datos. A dicha
memoria se accede at través de un sistema de buses único (control, direcciones y datos)

Figura 11. Arquitectura Von Neumann.

Los ordenadores con la arquitectura Von Neumann Constan de las siguientes partes:

Figura 12. Partes de la arquitectura.

1.2.2.2. Arquitectura Harvard.

Este modelo, que utilizan los micro controladores PIC, tiene la unidad central de proceso (CPU)
conectada a dos memorias (una con las instrucciones y la otra con los datos ) por medio de dos
buses diferentes
22

Figura 13. Arquitectura Harvard.

1.3. Arquitectura y evolución de los microprocesadores Intel.

1.3.1. Arquitectura.

El microprocesador tiene una arquitectura parecida a la computadora digital. En otras


palabras, el microprocesador es como la computadora digital porque ambos realizan
cálculos bajo un programa de control. Consiguientemente, la historia de la computadora
digital ayuda a entender el microprocesador. El hizo posible la fabricación de potentes
calculadoras y de muchos otros productos. El microprocesador utiliza el mismo tipo de
lógica que es usado en la unidad procesadora central (CPU) de una computadora
digital. El microprocesador es algunas veces llamado unidad microprocesador (MPU).
En otras palabras, el microprocesador es una unidad procesadora de datos.
Entonces, en un microprocesador se pueden diferenciar varias partes:

 Encapsulado: Es lo que rodea a la oblea de silicio en sí, para darle consistencia,


impedir su deterioro (por ejemplo, por oxidación por el aire) y permitir el enlace
con los conectores externos que lo acoplaran a su zócalo a su placa base.
 Memoria cache: Es una memoria ultrarrápida que emplea el micro para tener a
alcance directo ciertos datos que «predeciblemente» serán utilizados en las
siguientes operaciones, sin tener que acudir a la memoria RAM, reduciendo así
el tiempo de espera para adquisición de datos. Todos los micros compatibles con
PC poseen la llamada cache interna de primer nivel o L1; es decir, la que está
dentro del micro, encapsulada junto a él. Los micros más modernos (Pentium III
Coppermine, Athlon Thunderbird, etc.) incluyen también en su interior otro nivel
de caché, más grande, aunque algo menos rápida, es la caché de segundo nivel
o L2 e incluso los hay con memoria caché de nivel 3, o L3.
 Coprocesador matemático: Unidad de coma flotante. Es la parte del micro
especializada en esa clase de cálculos matemáticos, antiguamente estaba en el
exterior del procesador en otro chip. Esta parte está considerada como una parte
lógica junto con los registros, la unidad de control, memoria y bus de datos.
 Registros: Son básicamente un tipo de memoria pequeña con fines especiales
que el micro tiene disponible para algunos usos particulares. Hay varios grupos
de registros en cada procesador. Un grupo de registros está diseñado para
control del programador y hay otros que no son diseñados para ser controlados
23

por el procesador pero que la CPU los utiliza en algunas operaciones, en total
son treinta y dos registros.
 Memoria: Es el lugar donde el procesador encuentra las instrucciones de los
programas y sus datos. Tanto los datos como las instrucciones están
almacenados en memoria, y el procesador las accede desde allí. La memoria es
una parte interna de la computadora y su función esencial es proporcionar un
espacio de almacenamiento para el trabajo en curso.
 Puertos: Es la manera en que el procesador se comunica con el mundo externo.
Un puerto es análogo a una línea de teléfono. Cualquier parte de la circuitería de
la computadora con la cual el procesador necesita comunicarse, tiene asignado
un número de puerto que el procesador utiliza como si fuera un número de
teléfono para llamar circuitos o a partes especiales.

1.3.2. Evolución.

 (1971) El primer microprocesador, Intel 4004

El 15 de Noviembre de 1971 Intel lanza su microprocesador 4004, el primer


microprocesador. El Intel 4004 (i4004), un CPU de 4bits, fue el primer microprocesador
en un sólo chip, así como el primero disponible comercialmente. Con el Intel 4004 se
conseguía situar en placas de 0,25 centímetros cuadrados un circuito integrado que
contenía 2300 transistores.

Figura14.Microprocesador 4004.
24

Figura 15. Arquitectura del Intel 4004

El 4004 fue diseñado originalmente por Intel para la compañía japonesa Busicom, para
ser usado en su línea de calculadoras. Este primer procesador tenía características
únicas para su tiempo, como la velocidad del reloj, que sobrepasaba los 100 KHz (kilo
hertzio).

 (1972) Intel 8008.

El 1 de Abril de 1972, Intel anunció una versión mejorada de su procesador anterior. Era
el 8008, y su principal ventaja frente a otros modelos, fue poder acceder a más memoria
y procesar 8 bits. La velocidad de su reloj alcanzaba los 740KHz.

Fue el primer microprocesador de 8 bits, implantado con tecnología PMOS, contaba con
48 instrucciones, podía ejecutar 300.000 operaciones por segundo y direccionaba 16
Kbyte de memoria.

Figura 16.Microprocesador 8008.


25

Figura 17. Arquitectura Intel 8008.

 (1974) Intel 8080.

En Abril de 1974 Intel lanzó el 8080 con una velocidad de reloj que alcanzaba los 2
Mhz. Al año siguiente, aparece en el mercado el primer ordenador personal, de nombre
Altair, basado en la micro arquitectura del Intel 8080. El procesador de este computador
suponía multiplicar por 10 el rendimiento del anterior, gracias a sus 2 Mhz de velocidad.

Este microprocesador también direccionaba 8 bits, tenía 78 instrucciones, su velocidad


de operaciones era 10 veces mayor que la del 8008 y podía direccionar hasta 64 Kbytes
de memoria.

 (1997) Intel 8085.

En 1977 sale al mercado el Intel 8085, procesador de 8 bits, binariamente compatible


con el anterior i8080, pero exigía menos soporte de hardware, así permitía sistemas de
microordenadores más simples.

 (1978) Intel 8086 y 8088.

En junio de 1978 y 1979 hacen su aparición los microprocesadores 8086 y 8088 que
pasaron a formar el IBM PC, equipo que salió al mercado en 1981.

La venta realizada por Intel a la nueva división de computadoras personales de IBM,


hizo que las PC de IBM dieran un gran golpe comercial con el nuevo producto con el
8088, el llamado IBM PC. El éxito del 8088 propulsó a Intel a la lista de las 500 mejores
26

compañías, en la prestigiosa revista Fortune, y la misma nombró la empresa como uno


de Los triunfos comerciales de los sesenta.

Los i8086 e i8088 se basaron en el diseño del Intel 8080 y el Intel 8085, y de hecho son
compatibles a nivel de ensamblador con el i8080. Ambos tienen cuatro registros
generales de 16 bits, que también pueden ser accedidos como ocho registros de 8 bits,
con cuatro registros.

 (1982) Intel 80286.

El 1 de Febrero de 1982, Intel daba un nuevo vuelco a la industria con la aparición de


los primeros 80286 (el famoso ordenador”286”) con una velocidad entre 6 y 25 Mhz y un
diseño mucho más cercano a los actuales microprocesadores. El 286 tiene el honor de
ser el primer microprocesador usado para crear ordenadores clones en masa. Gracias
al sistema de “licencias cruzadas”, aparece en el mercado el primer fabricante de
clónicos “IBM compatible”.

Figura18. Microprocesador 80286.

 (1985) Intel 80386.

El 16 de octubre de 1985 Intel lanza el i80386, con arquitectura de x86. Fue empleado
como la unidad central de proceso de muchos computadores personales desde
mediados de los años 80 hasta principios de los 90.

También conocido como 386, con una velocidad de reloj entre 16 y 40 Mhz. El 386
añadió una arquitectura de 32 bits, con capacidad para multitarea y una unidad de
traslación de páginas, lo que hizo mucho más sencillo implementar sistemas operativos
que usaran memoria virtual.

En 1988, Intel desarrolla un sistema sencillo de actualizar los antiguos 286 gracias a la
aparición del 80386SX, que sacrificaba el bus de datos para dejarlo en uno de 16 bits,
pero a menor costo. Estos procesadores irrumpieron con la explosión del entorno
gráfico Windows, desarrollado por Microsoft unos años antes, pero que aún no había
tenido la suficiente aceptación por parte de los usuarios.
27

Figura 19. Microprocesador 80386SX.

 (1989) Intel 80486.

El 10 de abril de 1989 aparece el Intel 80486DX, de nuevo con tecnología de 32 bits y


como novedad principal con la incorporación del caché de nivel 1 (L1) en el propio chip.
Estas características aceleran enormemente la transferencia de datos de este caché al
procesador.

La generación 486 realmente significó contar con una computadora personal de


prestaciones avanzadas, entre ellas,un conjunto de instrucciones optimizado, una
unidad de coma flotante o FPU, una unidad de interfaz de bus mejorada y una memoria
caché unificada, todo ello integrado en el propio chip del microprocesador. Estas
mejoras hicieron que los i486 fueran el doble de rápidos que el par i386 - i387 operando
a la misma frecuencia de reloj. El procesador Intel 486 fue el primero en ofrecer un
coprocesador matemático o FPU integrado; con él que se aceleraron notablemente las
operaciones de cálculo

En 1989 Intel lanza el i486, que alcanzó velocidades entre 16 y 100 MHz. Eran
microprocesadores muy similares a los Intel 80386, con la principal diferencia que el
i486 tiene un conjunto de instrucciones optimizado, una unidad de coma flotante y un
caché unificado integrados en el propio circuito integrado del microprocesador y una
unidad de interfaz de bus mejorada.

Estas mejoras hacen que los i486 sean el doble de rápidos que un i386 y un i387 a la
misma frecuencia de reloj.

 (1993) Intel Pentium.

El 22 de marzo del 1993 ve la luz por primera vez el “Pentium”, también conocido por
nombre clave P54C. Estos procesadores partían de una velocidad inicial de 60 MHz,
llegando a los 200 MHz, algo que nadie había sido capaz de augurar unos años antes.
Con una arquitectura real de 32 bits, se usaba de nuevo la tecnología de .8 micras, con
lo que se lograba realizar más unidades en menos espacio. Poseía un bus de datos.

El Pentium poseía una arquitectura capaz de ejecutar dos operaciones a la vez, gracias
a sus dos pipeline de datos de 32 bits cada uno, uno equivalente al i486DX (u) y el otro
28

equivalente al 486SX (u). Poseía un bus de datos de 64 bits, permitiendo un acceso de


memoria de 64 bits.

 (1995) Intel Pentium Pro.

El 27 de Marzo de 1995, el procesador Pentium Pro supuso para los servidores de red y
las estaciones de trabajo un aire nuevo, tal y como ocurriera con el Pentium en el
ámbito doméstico.

El Pentium Pro es la sexta generación de arquitectura x86. Este producto buscaba


reemplazar al Intel Pentium en toda gama de aplicaciones pero luego se centró como
chip en el mundo de los servidores.

Figura 20. Procesador Pentium Pro.

 (1997) Intel Pentium II.

El 7 de marzo de 1997 Intel lanza al mercado el Intel Pentium 2, con arquitectura x86,
basado en una versión modificada del núcleo P6, usado por primera vez en el Intel
Pentium Pro.

En comparación con su antecesor, este último mejora el rendimiento en la ejecución de


código de 16 bits, añade el conjunto de instrucciones MMX y elimina la memoria caché
de segundo nivel del núcleo del procesador, colocándola en una tarjeta de circuito
impreso junto a éste. Poseía 32 KB de memoria caché de primer nivel, repartida en 16
KB para datos y otros 16 KB para instrucciones.

 (1998) Intel Pentium II Xeon.

En 1998 aparece el primer procesador Xeon, con nombre Pentium II Xeon, que utilizaba
tanto el chipset 440GX como el 450NX. Los procesadores Pentium II Xeon se diseñan
para cumplir con los requisitos de desempeño en computadoras de medio-rango,
servidores más potentes y estaciones de trabajo (workstations).
29

 (1999) El Intel Celeron.

Continuando la estrategia, Intel, en el desarrollo de procesadores para los segmentos


del mercado específicos, el procesador Celeron es el nombre que lleva la línea de bajo
costo de Intel.

 (1999) Intel Pentium III.

El 26 de febrero de 1999 llega el Pentium III, microprocesador de arquitectura i686. Las


primeras versiones eran muy similares al Pentium II, siendo la diferencia más
importante la introducción de las instrucciones SSE. Al igual que con el Pentium II,
existía una versión Celeron de bajo presupuesto y una versión XEON para quienes
necesitaban mayor poder de cómputo.

El procesador Pentium III ofrece 70 nuevas instrucciones Internet Streaming, las


extensiones de SIMD que refuerzan dramáticamente el desempeño con imágenes
avanzadas, 3D, añadiendo una mejor calidad de audio, video y desempeño en
aplicaciones de reconocimiento de voz

 (2000) Intel Pentium IV.

El 20 de noviembre de 2000 sale al mercado el Pentium 4, microprocesador de séptima


generación, basado en la arquitectura X86 y con un diseño completamente nuevo. Es el
primero con un diseño completamente nuevo desde el Pentium Pro. Se estrenó la
arquitectura NetBurst, la cual no daba mejoras considerables respecto a la anterior P6.
Intel sacrificó el rendimiento de cada ciclo para obtener a cambio mayor cantidad de
ciclos por segundo y una mejora en las instrucciones SSE. El 8 de agosto de 2008 Intel
lanza el último Pentium 4, siendo sustituido por los Intel Core Duo.

Figura 21. Procesador Pentium 4.

 (2003) Intel Pentium M.

En marzo de 2003 llega el Intel Pentium M, microprocesador con arquitectura x86


(i686), que representa un cambio radical para Intel, ya que no es una versión de bajo
30

consumo del Pentium 4 sino una versión fuertemente modificada del diseño del Pentium
III (que a su vez es una modificación del Pentium Pro).

Está optimizado para un consumo de potencia eficiente, una característica vital para
ampliar la duración de la batería de los computadores portátiles. Funciona con un
consumo medio muy bajo y desprende mucho menos calor que los procesa- dores de
computadores de escritorio.

 (2005) Intel Pentium D.

En la Primavera de 2005 Intel Developer Forum se introducen los procesadores


Pentium D, que eran básicamente 2 procesadores Pentium 4 metidos en un solo
encapsulado (2 núcleos Prescott para el Core Smithfield y 2 núcleos Cedar Mill para el
core Presler).

Figura 22. Procesador Pentium D.

 (2006) Intel Core Duo.

El 26 de junio de 2006, Intel anuncia la nueva generación: Xeon Dual Core con
tecnología de doble núcleo. Este nuevo procesador brindaba un 80% más de
rendimiento por vatio y en un 60% más rápido que la competencia. Además, la nueva
generación ofrecía más del doble de rendimiento que la generación anterior de
servidores basados en el procesador Intel Xeon, que era capaz de ejecutar aplicaciones
de 32 y 64 bits.

Intel lanzó ésta gama de procesadores de doble núcleo y CPUs 2x2 MCM (módulo
Multi-Chip) de cuatro núcleos con el conjunto de instrucciones x86-64, basado en el la
nueva arquitectura Core de Intel. La microarquitectura Core regresó a velocidades de
CPU bajas y mejoró el uso del procesador de ambos ciclos de velocidad y energía
comparados con anteriores NetBurst de los CPU Pentium 4/D2.

 (2008) Intel Atom.

El 2 de marzo de 2008 Intel anuncia la llegada de Intel Atom, nombre de una línea
anteriormente denominada Silverthorne / Diamondville. Diseñados para un proceso de
31

fabricación de 45 nm CMOS y destinados a usarse en dispositivos móviles de internet,


ultra portátiles, teléfonos inteligentes y otros de baja potencia y aplicaciones.

 (2010) Intel Core i.

En el 2010, Intel anunció los modelos Core i3, i5 e i7 de cuatro núcleos, familia de
procesadores que cubren los requerimientos de proceso de todos los niveles de
usuario, dependiendo de su perfil y estilo de vida.

 (2011) Intel Core Sandy Bridge.

En enero de 2011 Intel lanzó la segunda generación de la familia Core, tecnología que
posee cambios en la memoria caché, mejorías en el modo Turbo Boost y
perfeccionamientos en la propia arquitectura.

Intel lanzó sus procesadores que se conocen con el nombre en clave Sandy Bridge.
Estos procesadores Intel Core que no tienen sustanciales cambios en arquitectura
respecto a nehalem, pero si los necesarios para hacerlos más eficientes y rápidos que
los modelos anteriores. Es la segunda generación de los Intel Core con nuevas
instrucciones de 256 bits, duplicando el rendimiento, mejorando el desempeño en 3D y
todo lo que se relacione con operación en multimedia. Llegaron la primera semana de
Enero del 2011. Incluye nuevo conjunto de instrucciones denominado AVX y una GPU
integrada de hasta 12 unidades de ejecución

1.4. Datos manejados por la arquitectura IA-32.

Los microprocesadores Intel de la familia IA-32 manejan diversos tipos de datos. Los
datos en los microprocesadores Intel se pueden almacenar en forma de enteros, BCD y
decimales. Sin importar el tipo, existen unos formatos básicos utilizados por la familia
IA-32 para el almacenamiento de estos datos y son: los Bytes (8 b), las palabras (16 b),
las palabras dobles (32 b), las palabras cuádruples (64 b) y las palabras cuádruples
dobles (128 b). Los datos manejados por estos microprocesadores serán almacenados
en alguno de estos formatos dependiendo de lo grande o pequeño del dato que se
desea representar o del tamaño con el que se desea operar.

1.4.1. Organización de los datos en la memoria.

Los datos son almacenados en la memoria semiconductora en formatos. Estos formatos


se pueden almacenar en la memoria a partir de cualquier dirección con excepción de la
palabra doble cuádruple; las instrucciones que usan este formato de datos requieren
que los datos estén alineados en la memoria. La alineación consiste en el
32

almacenamiento de los datos en direcciones que sean divisibles entre el número de


bytes que ocupa el dato.

La organización de los datos en la memoria de los microprocesadores Intel se realiza


colocando en las direcciones más bajas de memoria los datos menos significativos y en
las direcciones más altas las partes más significativas de los datos.

1.4.2. Datos enteros.

Los datos enteros se pueden almacenar en binario simple cuando se desea representar
los enteros sin signo y en complemento a dos cuando se desea representar enteros con
signo.

1.4.3. Datos decimales.

En los microprocesadores modernos se utiliza la norma IEEE-754 para representar los


números decimales. Hoy en día existen tres formatos distintos de esta norma para
representar números decimales, el formato punto flotante de precisión simple, el de
precisión doble y el de precisión doble extendida.

1.4.4. Datos BCD.

En los microprocesadores Intel se pueden manejar los números BCD de forma directa.
Tanto la unidad aritmético-lógica como la unidad punto flotante soportan operaciones en
BCD. El almacenamiento de estos números puede ser en tres formas diferentes,
formato desempacado, empacado y empacado en 80 bits.

1.5. Modos de direccionamiento de memoria.

1.5.1. Modo implícito.

Los modos de direccionamiento podrían clasificarse en propios e impropios: en los


direccionamientos propios el operando está localizado en una dirección concreta de
memoria, mientras que en los impropios en otros lugares tales como los registros del
procesador, etc. Entre los modos de direccionamiento descritos en los párrafos
33

siguientes, los tres primeros pueden considerarse impropios, mientras que los demás
son direccionamientos propios.

1.5.2. Modo Inmediato.

En este modo de direccionamiento no es necesario poner ninguna dirección de forma


explícita, ya que en el propio código de operación se conoce la dirección de el/los
operando/s al (a los) que se desea acceder o con el/los que se quiere operar.

En este modo, llamado también inherente, el operando se especifica en la misma


definición de la instrucción. El modo implícito se usa para hacer referencia a operandos
de dos tipos:

 Registros: En el caso de que el código de operación se refiera en particular a un


registro. Es típico de las organizaciones de un solo acumulador. Generalmente
en un ordenador de este tipo todas las instrucciones que actúan sobre el
acumulador utilizan direccionamiento implícito.
 Operando en la pila: En el caso de que la operación se realice siempre sobre el
dato situado en la cima de pila. En este caso están la mayoría de las
instrucciones de los ordenadores con organización de pila. Estas operaciones
llevan implícitos los operandos que son los elementos de la cima de pila.

1.5.3. Modo directo por registro.

El campo de operando en la instrucción contiene la dirección en memoria donde se


encuentra el operando.

En este modo la dirección efectiva es igual a la parte de dirección de la instrucción. El


operando reside en la memoria y su dirección es dada directamente por el campo de
dirección de la instrucción. En una instrucción de tipo ramificación el campo de dirección
especifica la dirección de la rama actual.

Si hace referencia a un registro de la máquina, el dato estará almacenado en este


registro y hablaremos de direccionamiento directo a registro. Este modo de
direccionamiento tienen una forma muy simple dependerá del número de registros que
tenga la máquina.

Se mencionó anteriormente que el campo de dirección de una instrucción puede


especificar una palabra de memoria o un registro del procesador. Cuando se da este
último caso se dice que el operando está especificado con direccionamiento directo por
reg o, en tal caso, el operando reside en uno de los registros del procesador que es
selecciona por un campo de registro de k bits en la instrucción. Este campo de k bits
puede especificar o de 2k registros. Este modo es típico de los ordenadores con
organización de registros de uso general. Las ventajas de este modo son:
34

 El acceso a los registros es muy rápido, por tanto el direccionamiento por registro
debe usarse en las variables que se usen con más frecuencia para evitar
accesos a memoria que son más lentos, un ejemplo muy pico del uso de este
direccionamiento son los índices de los bucles.
 El número de bits necesarios para especificar un registro es mucho más pequeño
que el necesario para especificar una dirección de memoria, esto es debido a
que el número de registros del procesador es muy pequeño comparado con el
número de direcciones de memoria. Sin embargo, hay que tener en cuenta que
en los ordenadores modernos el nú- mero de registros ha aumentado
considerablemente.

1.5.4. Modo directo (o absoluto).

Este es el modo de direccionamiento más sencillo. El campo de dirección no necesita


transformación alguna para dar la dirección efectiva, es decir la función que transforma
el campo de operando en la dirección efectiva es la identidad. Esto significa que el
campo de operando es ya la dirección efectiva.

Este direccionamiento sólo se usa en ordenadores pequeños en que el programa


siempre se sitúa en la misma zona de memoria ya que dificulta la relocalización de los
programas, es decir que el código de los programas no dependa de su situación en
memoria. En ordenadores más grandes, este modo está reservado para acceder a
direcciones del sistema, que normalmente se refieren a operaciones de entrada y
salida, ya que estas direcciones no dependen del programa.

1.5.5. Modo indirecto.

El campo de operando contiene una dirección de memoria, en la que se encuentra la


dirección efectiva del operando.

Si hace referencia a un registro de la máquina, la dirección de memoria (dirección


efectiva) que contiene el dato estará en este registro y hablaremos de direccionamiento
indirecto a registro; si hace referencia a una posición de memoria, la dirección de
memoria (dirección efectiva) que contiene el dato estará almacenada en esta posición
de memoria y hablaremos de direccionamiento indirecto a memoria.

La desventaja principal de este modo de direccionamiento es que necesita un acceso


más a memoria que el directo. Es decir, un acceso a memoria para el direccionamiento
indirecto a registro y dos accesos a memoria para el direccionamiento indirecto a
memoria; por este motivo este segundo modo de direccionamiento no se implementa en
la mayoría de las máquinas.
35

1.5.6. Modo por Base y Desplazamiento.

Este modo combina las posibilidades de los modos directo e indirecto con registro.
Requiere que las instrucciónes tengan dos campos de dirección donde al menos uno de
ellos es explícito. El valor contenido en uno de los campos de dirección se utiliza
directamente. El otro campo de dirección o referencia implícita definida por el código de
operación se refiere a un registro cuyo contenido se suma al primer campo de dirección
para generar la dirección efectiva del operando.

Usos: este modo de direccionamiento puede ser utilizado con dos propósitos
principales:

 Como un índice para manejar elementos de un arreglo, siempre que los


elementos de dicho arreglo posean un tamaño diferente de 1, 2, 4 u 8 bytes. El
elemento de “desplazamiento fijo” permite direccionar el inicio del arreglo
mientras que el elemento “base” contiene el valor requerido para acceder al
elemento deseado dentro del arreglo.
 Para obtener un campo de un registro, en cuyo caso la “base” contiene la
dirección de inicio del registro y el elemento de “desplazamiento fijo” contiene la
distancia estática hasta el campo requerido en el registro.

1.5.7. Modo (Índice * Escala) y Desplazamiento.

En este modo existen solamente los elementos índice, factor de escala y el


desplazamiento. Uso: este modo es muy eficiente para direccionar arreglos estáticos de
datos en memoria cuyo tamaño sea de 2, 4 y 8 bytes.

El elemento de “desplazamiento fijo” ubica el inicio del arreglo y el elemento índice


contiene el número (índice) del dato al que se desea acceder (el microprocesador aplica
de forma automática el factor de escala para calcular la distancia real del inicio del
arreglo hasta el elemento deseado utilizando el factor de escala especificado).

1.5.8. Modo Base + Índice + Desplazamiento.

Es un modo complejo de direccionamiento que usa los elementos base, índice y


desplazamiento. Uso: permite direccionar arreglos bidimensionales. El elemento de
“desplazamiento fijo” indica el inicio del arreglo, y la base y el índice permite calcular la
dirección del elemento deseado.
36

1.5.9. Modo Base + (Índice * Escala)+ Desplazamiento.

Es el modo de direccionamiento más complejo. Uso: permite direccionar de forma


eficiente a los elementos de un arreglo bidimensional de datos en donde los elementos
tengan tamaño de 2, 4 u 8 bytes.

1.5.10. Modo de Pila.

Se utiliza cuando el operando está en memoria y en la cabecera de la pila. Este


direccionamiento se basa en las estructuras denominadas Pila (tipo LIFO), las cuales
están marcados por el fondo de la pila y el puntero de pila (*SP). El puntero de pila
apunta a la última posición ocupada. Así, como puntero de direccionamiento usaremos
el SP.

El desplazamiento más el valor del SP nos dará la dirección del objeto al que queramos
hacer referencia. En ocasiones, si no existe C. de desplazamiento solo se trabajara con
la cima de la pila.

Como es un modo de direccionamiento implícito, solo se utiliza en instrucciones


determinadas, las más habituales de las cuales son PUSH (poner un elemento en la
pila) y POP (sacar un elemento de la pila).

Este tipo de direccionamiento nos aporta flexibilidad pero por el contrario, es mucho
más complejo que otros tipos estudiados más arriba.

1.6. Lenguaje ensamblador.

1.6.1. Introducción al lenguaje ensamblador.

Es un lenguaje de programación de bajo nivel. Consiste en un conjunto


de mnemónicos que representan instrucciones básicas para
los computadores, microprocesadores, microcontroladores y otros circuitos integrados
programables. Implementa una representación simbólica delos códigos de
máquina binarios y otras constantes necesarias para programar una arquitectura de
procesador y constituye la representación más directa del código máquina específico
para cada arquitectura legible por un programador. Cada arquitectura de
procesador tiene su propio lenguaje ensamblador que usualmente es definida por el
fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de
37

procesamiento (las instrucciones), los registros del procesador, las posiciones


de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo
tanto específico de cierta arquitectura de computador física (o virtual). El lenguaje
ensamblador trabaja directamente con el microprocesador de una máquina, es decir,
programamos un microprocesador con este lenguaje, también lo podemos utilizar para
desarrollar controladores de dispositivos (Drivers) y sistemas operativos de
computadoras.

Este surge al desarrollarse las primeras computadoras electrónicas, se vio la necesidad


de programarlas, es decir, de almacenar en memoria la información sobre la tarea que
iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban
los pasos de cálculo, uno por uno. Lenguaje Ensamblador es la primera abstracción del
Lenguaje de Máquina, consistente en asociar a los códigos de operación (OPCODES)
palabras clave que faciliten su uso por parte del programador. Como se puede ver, el
Lenguaje Ensamblador es directamente traducible al Lenguaje de Máquina, y viceversa;
simplemente, es una abstracción que facilita su uso para los seres humanos. Por otro
lado, la computadora no entiende directamente el Lenguaje Ensamblador; es necesario
traducirle a Lenguaje de Máquina.

Originalmente, este proceso se hacía a mano, usando para ello hojas donde se
escribían tablas de programa similares al ejemplo de la calculadora que vimos
anteriormente. Pero, al ser tan directa la traducción, pronto aparecieron los programas
Ensambladores, que son traductores que convierten el código fuente (en Lenguaje
Ensamblador) a código objeto (es decir, a Lenguaje de Máquina).

El uso del lenguaje ensamblador le permite al programador indicarle al computador


exactamente cómo llevar a cabo una tarea específica usando la menor cantidad de
instrucciones. Aun cuando el código generado por los compiladores con opción de
optimización es eficiente, la optimización manual puede resultar en una mejora
sustancial en términos de rendimiento y consumo de memoria. El lenguaje ensamblador
es usualmente utilizado en las siguientes circunstancias:

 Mejorar la eficiencia de una rutina específica que se ha transformado en un


cuello de botella.
 Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que
no son soportadas por los lenguajes de alto nivel.
 Escribir manejadores de dispositivos para comunicarse directamente con
hardware especial tales como tarjetas de red.
 Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje
ensamblador pues el código ejecutable puede ser menor que el generado por el
compilador.

Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran


básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos
electrónicos.
38

1.6.2. Características del lenguaje ensamblador.

 El código escrito en lenguaje ensamblador posee una cierta dificultad de ser


entendido directamente por un ser humano ya que su estructura se acerca más
bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
 El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para
un Microprocesador, suele necesitar ser modificado, muchas veces en su
totalidad para poder ser usado en otra máquina distinta, aun con el mismo
Microprocesador, solo pueden ser reutilizados secciones especiales del código
programado.
 Los programas hechos en lenguaje ensamblador, al ser programado
directamente sobre Hardware, son generalmente más rápidos y consumen
menos recursos del sistema (memoria RAM y ROM). Al programar
cuidadosamente en lenguaje ensamblador se pueden crear programas que se
ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto
nivel.
 Con el lenguaje ensamblador se tiene un control muy preciso de las tareas
realizadas por un Microprocesador por lo que se pueden crear segmentos de
código difíciles de programar en un lenguaje de alto nivel.
 También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e
impedir que se interrumpa durante su ejecución.
 El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado
sobre un archivo de programación (.ASM), en el cual pueden existir varios
programas, macros o rutinas que pueden ser llamados entre sí.

2. MICROPROCESADORES BÁSICOS DE 16 BITS: 8086 Y 8088 DE INTEL.

Fue uno de los primeros procesadores de 16 bits del mercado (introducido en junio de
1978), tenía registros de 16 bits y podía procesar una nueva clase de software usando
instrucciones de 16 bits. El bus de direcciones era de 20 bits, permitiendo direccionar 1
Mb de memoria, lo cual suponía un contraste con la mayoría de los chips de la época,
que tenían registros de 8 bits y un bus de direcciones de 16 bits, pudiendo direccionar
como máximo 64 Kb de memoria RAM.

Por desgracia, la mayoría de equipos del momento usaban procesadores de 8 bits que
trabajaban con sistemas operativos y software de 8 bits. Por esto, las placas base y los
diseños de circuitos estaban también orientados a los 8 bits. Crear una placa base y un
sistema de memoria de 16 bits era costoso, elevando demasiado el precio del equipo en
39

el que estuviera instalado el 8086. El coste era alto porque el 8086 necesitaba un bus
de datos de 16 bits en lugar de uno de 8 bits, que era más barato.

Los microprocesadores 8086/8088 fueron diseñados para trabajar con lenguajes de alto
nivel, disponiendo de un soporte hardware con el que los programas escritos en dichos
lenguajes ocupan un pequeño espacio de código y pueden ejecutarse a gran velocidad.
Esta concepción, orientada al uso de compiladores, se materializa en un conjunto de
facilidades y recursos, y en unas instrucciones entre las que cabe destacar las que
permiten efectuar operaciones aritméticas de multiplicar y dividir, con y sin signo; las
que manejan cadenas de caracteres, etc.

Además, el diseño de Intel 8086 tenía como objetivo seguir la línea y mantener
compatibilidad con los chips 8008, 8080 y 8085, de este modo los programadores no
debían editar o rehacer código.

Figura 22. Microprocesador Intel 8086.

2.1. 2.1. Arquitectura específica.

Los microprocesadores 8086 y 8088 se desarrollaron a partir de los microprocesadores


anteriores, el 8080 que era un microprocesador de 8 bits, esto significa que el 8080
realizaba todas sus operaciones con bloques de 8 bits.

La familia de microprocesadores 8086 y 8088 dispone de diversos coprocesadores


como el 8089 de E/S, el 8087 coprocesador matemático de coma flotante para hacer
que el sistema sea más potente. Tanto el 8086 como el 8088 disponen de un juego de
92 instrucciones y 7 modos de direccionamiento.

El microprocesador 8086, que es el que se va a considerar en este trabajo, es un


microprocesador de 16 bits que controla los ordenadores personales estándar de IBM.
40

El 8086 difiere del 8088 solamente en un detalle: utiliza un bus de datos de 16 bits en
vez del bus de 8 bits del 8088. A excepción de esa diferencia, se les considera
prácticamente idénticos. Por ello, cada vez que se haga referencia a uno de ellos, se
pondrá 8086/8088 para indicar que esa referencia es válida para ambos
microprocesadores.

En cuanto a estos tipos de microprocesadores contiene una estructura interna Para


ayudar al funcionamiento de las instrucciones, para poder manejar variables en
memoria y para su propio funcionamiento, el microprocesador dispone de una serie de
“variables” internas de nombres fijos que son los registros internos. En total hay 14 de
estos registros, como se puede observar en la figura 35, cada uno de los cuales está
pensado principalmente para alguna función concreta. Este microprocesador tiene una
configuración tal que puede trabajar en dos modos diferentes:

 Modo mínimo: trabajo de manera independiente


 Modo máximo: trabaja con otros integrados, 8288 controlador de bus, 8087
coprocesador matemático y otros.

Figura 23. Esquema básico de un CPU

2.1.1. Registros de almacenamiento temporal.

 AX (registro Acumulador): Es el registro principal, es utilizado en las


instrucciones de multiplicación y división y en algunas instrucciones aritméticas
especializadas, así como en ciertas operaciones de carácter específico como
entrada, salida y traducción. Obsérvese que el 8086 es suficientemente potente
41

para realizar las operaciones lógicas, la suma y la resta sobre cualquier registro
de datos, no necesariamente el acumulador.
 BX (registro Base): Se usa como registro base para referenciar direcciones de
memoria con direccionamiento indirecto, manteniendo la dirección de la base o
comienzo de tablas o matrices. De esta manera, no es preciso indicar una
posición de memoria fija, sino la número BX (así, haciendo avanzar de unidad en
unidad a BX, por ejemplo, se puede ir accediendo a un gran bloque de memoria
en un bucle).
 CX (registro Contador): Se utiliza comúnmente como contador en bucles y
operaciones repetitivas de manejo de cadenas. En las instrucciones de
desplazamiento y rotación se utiliza como contador de 8 bits.
 DX (registro Dato): Se usa como registro auxiliar en operaciones aritméticas y
como contenedor de datos a la hora de usar instrucciones de comunicación de
puertos. Estos cuatro registros, como todos los restantes, son de 16 bits, pero
para permitir la realización de operaciones de tipo byte (8 bits) cada uno de estos
cuatro registros está dividido en dos subregistros de 8 bits a los que se puede
acceder de forma independiente (como se observa en la figura 36)). Así, por
ejemplo, los 8 bits inferiores de AX se llaman AL (L de low, bajo) y los 8
superiores AH (H de high, alto). En consecuencia, BX, CX y DX se dividen en
BH/BL, CH/CL y DH/DL respectivamente. De esta forma se tiene que todas las
instrucciones ensamblador pueden operar con datos de 8 y 16 bits según lo que
se precise. En los demás registros esta subdivisión no es posible.

Figura 24. Registro interno del microprocesador 8086


42

2.1.2. Registros de segmento.

Son cuatro registros de 16 bits usados para indicar direcciones de memoria (los
conceptos de segmento y desplazamiento se explicarán en el apartado siguiente):

 CS (Code Segment): Este registro es usado por el procesador, junto con el


registro IP, para conocer dónde está la instrucción actual que está siendo
ejecutada.
 DS (Data Segment): Se usa para indicar dónde están todos los datos del
programa en ejecución.
 SS (Stack Segment): En este registro se indica al procesador dónde está la
zona de memoria que se usa como segmento de pila.
 ES (Extra Segment): Es el registro que referencia al segmento extra, y se usa
como apuntador de memoria auxiliar en operaciones complejas donde se
necesitan dos punteros de datos simultáneos.

2.1.3. Registros de la pila.

La pila es un área de memoria importante. Tiene, en vez de uno, dos registros que se
usan como desplazamiento (offset) para apuntar su contenido. Se usan como
complemento al registro SS y son:

 SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio


en instrucciones de manipulación de la pila.
 BP (Base Pointer): Es un puntero de base, que apunta a una zona dentro de la
pila dedicada al almacenamiento de datos (variables locales y parámetros de las
funciones en los programas compilados).

2.1.4. Registros índices.

Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar la


posición donde se encuentran los datos a los que se desea acceder. Son:

 SI (Source index): Utilizado como registro de índice en ciertos modos de


direccionamiento indirecto, también se emplea para guardar un valor de
desplazamiento en operaciones de cadenas.
 DI (Destination index). Se usa en determinados modos de direccionamiento
indirecto y para almacenar un desplazamiento en operaciones con cadenas.
43

2.1.5. Registros de instrucción.

Sólo hay uno, el registro IP (Instruction Pointer), es usado por la CPU para conocer la
posición relativa a la base CS donde se encuentra la instrucción que se está ejecutando
actualmente. Este registro no puede ser modificado directamente por parte del
programador. Este puntero cambia su contenido automáticamente cada vez que se
ejecuta una instrucción o cuando se salta a otro punto del programa mediante una
instrucción de salto.

2.1.6. Registro de Banderas.

Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones
durante la ejecución de un programa. Los bits 0, 2, 4, 6, 7 y 11 son indicadores de
condición, que reflejan los resultados de operaciones del programa; los bits del 8 al 10
son indicadores de control y el resto no se utilizan. Estos indicadores pueden ser
comprobados por las instrucciones de salto condicional, lo que permite variar el flujo
secuencial del programa según el resultado de las operaciones.

Figura 25. Estructura de registro de bandera.

 CF (Carry Flag): Indicador de acarreo. Su valor más habitual es lo que nos


llevamos en una suma o resta.
 OF (Overflow Flag): Indicador de desbordamiento. Indica que el resultado de
una operación no cabe en el tamaño del operando destino.
 ZF (Zero Flag): Indicador de resultado 0 o comparación igual.
 SF (Sign Flag): Indica si se ha producido un resultado negativo o comparación
menor.
 PF (Parity Flag): Indicador de paridad. Se activa tras algunas operaciones
aritmético-lógicas para indicar que el número de bits a uno resultante es par.
 AF (Auxiliary Flag): Para ajuste en operaciones BCD.
 DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros
relativos en operaciones repetitivas de cadenas de datos.
 IF (Interrupt Flag): Si está a 1, indica que está permitida la generación de
interrupciones hardware que generan algunos periféricos, como la que realiza el
teclado cada vez que una tecla es pulsada.
 TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuración de
código.
44

2.2. Datos Manejados.

Como ya se ha comentado anteriormente, todos los programas y datos se cargan en


localidades de memoria específicas determinadas por sus direcciones. Esa información
es almacenada como una secuencia de bytes de manera que cada uno de ellos tiene
un número asociado correspondiente al lugar que ocupan. A ese número se lo
denomina dirección de memoria.

El 8088 contiene un variado conjunto de instrucciones aritméticas y lógicas. Estas


operaciones se ejecutan para bytes o palabras signadas o no signadas (enteros) y
valoresASCII. Este procesador no dispone de ningún modo de hacer operaciones en
punto flotante, si se desea dotarla de esta habilidad, habría que añadirle un
coprocesador matemático. El coprocesador matemático más común era el Intel 8087.

Dado que el 8086/8088 tiene una longitud de palabra de direcciones de 20-bits es


posible direccionar hasta 1.048.576 (=210 ) localidades distintas de memoria, es decir,
podemos almacenar hasta 1Mbyte de información. Sin embargo, la CPU sólo procesa
palabras de 16 bits en sus registros de direcciones, como ya se ha visto en los
apartados anteriores, y las direcciones de memoria son de 20 bits, por lo que una
dirección no cabe en un registro.

Por lo tanto, en principio, teóricamente sólo se podría acceder hasta el byte número
65.535 (216 , el número mayor posible de 16 bits) contando a partir del inicio, que es el
byte 0. Para solucionar este inconveniente, se ideó el dividir la dirección de un byte en
dos partes, denominadas segmento (o Base) y desplazamiento (u offset), ambos de 16
bits.

Adoptada dicha medida, la dirección real de un byte en la memoria es:

𝑫𝒊𝒓𝒆𝒄𝒄𝒊𝒐𝒏 𝒓𝒆𝒂𝒍 = (𝟏𝟔 ∗ 𝑽𝒂𝒍𝒐𝒓 𝒃𝒂𝒔𝒆) + 𝑽𝒂𝒍𝒐𝒓 𝒅𝒆𝒔𝒑𝒍𝒂𝒛𝒂𝒎𝒊𝒆𝒏𝒕𝒐

De esta forma, se pueden direccionar el millón de bytes y se tiene acceso a toda la


memoria del PC (a cada uno de los 1024 Kbytes). La notación más empleada para
indicar la dirección de un par segmento – desplazamiento consiste en separar esos dos
valores con dos puntos, utilizando notación hexadecimal (por ejemplo: 123h: 12h4,
representa la dirección con segmento 123h y desplazamiento 12h).

Esta forma de direccionar la memoria presentó un pequeño problema que ha


entorpecido la elaboración de grandes programas, y no es otro que éste: como ya se ha
visto se accede a memoria dando un valor de segmento y otro de desplazamiento; pues
bien, si se mantiene el valor del segmento fijo (lo que ocurre en los programas) y se
varía únicamente el valor del desplazamiento sólo es posible acceder a 65535 bytes (64
Kbytes), que es el valor máximo alcanzable con los 16 bits del registro de
desplazamiento. Con esto, la información máxima que se puede almacenar en la
memoria, modificando únicamente el desplazamiento, es de 64 Kb. A esta cantidad de
almacenamiento se le denomina segmento de memoria.
45

De este modo, un segmento es un área continua de memoria que puede tener 64K-
bytes, que debe comenzar en una localidad de memoria cuya dirección sea límite de 16
bytes (cantidad denominada párrafo) y que puede solaparse con otros segmentos. Así,
por ejemplo, la dirección AB00:0012, (es decir, 43776:8 con valores decimales), tiene la
misma dirección real que AB01:0002 (es decir, 43777:2 con valores decimales), pues
ambas equivalen a la dirección real 700.434 (valor que se obtiene al aplicar la fórmula
anterior).

2.3. Interfaces de Entrada y Salida.

Los microprocesadores de la familia Intel se caracterizan por tener espacios separados


para memoria y para entradas y salidas. Los dispositivos de E/S tienen 64 K de espacio
para su selección. La línea IO/*M actúa como una línea adicional de direccionamiento y
permite separar el mapa de memoria del de las interfaces de entrada / salida. Para el
8086/8088 existen dos instrucciones que hace que IO/*M valgan 1. Son IN y OUT que
se corresponden biunívocamente con inport y outport del C.

Las instrucciones IN y OUT transfieren datos entre dispositivos E/S y el acumulador del
microprocesador (AL,AX o EAX).la dirección de E/S se almacena en el registro DX
como dirección de 16 bits o en el byte(p8) que sigue inmediatamente al código de
operación como dirección de E/S de 8 bits. Intel llama a la forma de 8 bits (p8) una
dirección fija porque se almacena con las instrucciones INS y OUTS se emplean una
dirección de E/S variable contenida en el registro DX.

Siempre que se transfieren datos con una instrucción IN u OUT, la dirección de E/S,
llamada a menudo número de puerto aparece en el canal de dirección. La interface
externa de E/S la decodifica en la misma forma en que decodifica una dirección en la
memoria. El número (p8) del puerto fijo de 8 bits aparece en las conexiones A7 hasta
A0 del canal de dirección, junto con los bits A15 hasta A8 =0000 0000.

Las direcciones por arriba de A15 son indefinidas para una instrucción de E/S. El
número de variable de puerto de 16 bits (DX) aparece en las terminales de dirección
A15 a A0. Esto significa que las primeras 256 direcciones de puerto E/S(00H hasta
FFH) se accesan por las instrucciones de E/S fijas y variables, pero las direcciones de
E/S de la 0100H hasta FFFH solo accesan con la dirección variable de E/S.

En muchos sistemas para tareas específicas, solo se decodifican los 8 bits que están
más a la derecha, con lo cual se reduce la cantidad de circuitos necesarios para la
decodificación. En una computadora personal (PC), se decodifican los 16 bits del canal
de direcciones y se emplean las localidades 00XXH hasta 03XXH para casi todos los
dispositivos de E/S de la computadora.
46

2.4. Ejemplos de Aplicación.

De los microcomputadores que usaron el 8086 tenemos los siguientes:

 El primer microcomputador comercial basado en el 8086 fue el Mycron 2000.


 El procesador de texto IBM Displaywriter .
 El Wang Professional Computer, manufacturado por Wang Laboratories.
 El AT&T 6300 PC (construido por Olivetti).
 El NEC PC-9801 (construido por NEC).
 El primer Compaq Deskpro usaba un 8086 corriendo a 7,14 MHz, pero fue capaz
de correr tarjetas de expansión designadas para el IBM XT de 4,77 MHz.
 El FLT86 es un bien establecido sistema de entrenamiento para el CPU 8086,
que todavía está siendo manufacturado por Flite Electronics International Limited
en Southampton, Inglaterra.
 El IBM PS/2 modelos 25 y 30 fueron construidos con un 8086 de 8 MHz La
serie SL del Tandy 1000.
 El Amstrad PC1512, PC1640, PC2086, PC3086 y PC5086 usaron el 8086 a 8
MHz.
 Hasta el año 2002, la NASA todavía estaba usando el CPU 8086 original en
equipo para mantenimiento en tierra del Transbordador espacial Discovery, para
prevenir la regresión de software que pudiera resultar por actualizar o cambiar a
clones imperfectos

Los procesadores Intel 8086 y 8088 son la base del IBM-PC, el cual fue un computador
personal del año 1981, formando parte de la quinta generación de computadores. El
8088 se utilizó un bus externo de 8bits para poder emplear circuitos de soporte al
microprocesador más económicos, en contraposición al bus de 16bits.

Estos, disponen de 92 tipos de instrucciones, que pueden ejecutar con hasta 7 modos
de direccionamiento en puertos de entrada y salida de hasta 64K (65536 puertos), por
lo que las maquinas construidas entorno a estos microprocesadores no suelen emplear
la entrada/salida por mapa de memoria.

3. MEMORIAS SEMICONDUCTORAS.

Las memorias semiconductoras son aquellas memorias que utilizan circuitos integrados
basados en semiconductores para almacenar información. Un chip de memoria de
semiconductor puede contener millones de minúsculos transistores o condensadores.
Existen memorias de semiconductor de ambos tipos: volátiles y no volátiles.

 Memorias volátiles: Las memorias volátiles o transitorias son aquellas memorias


cuya información se pierde al interrumpirse la energía eléctrica. Algunos
ejemplos de memorias volátiles son: DRAM, RAM, SRAM, HPU Y GJR.
47

 Memorias no volátiles: La memorias no volátiles o permanentes son aquellas


memorias cuyo contenido de datos almacenados no se pierde aún si no esté
energizada. Algunos ejemplos de memorias no volátiles son: EPROM, EEPROM,
NVRAM Y PRAM.

En las computadoras modernas, la memoria principal consiste casi exclusivamente en


memoria de semiconductor volátil y dinámica, también conocida como memoria
dinámica de acceso aleatorio o más comúnmente RAM, su acrónimo inglés Random
Access Memory). Con el cambio de siglo, ha habido un crecimiento constante en el uso
de un nuevo tipo de memoria de semiconductor no volátil llamado memoria flash. Dicho
crecimiento se ha dado, principalmente en el campo de las memorias fuera de línea en
computadoras domésticas.
Las memorias de semiconductor no volátiles se están usando también como memorias
secundarias en varios dispositivos de electrónica avanzada y computadoras
especializadas y no especializadas.

3.1. Jerarquías de memoria.

Se conoce como jerarquía de memoria, a la organización piramidal de la memoria de


niveles que tiene los ordenadores. Su objetivo es conseguir el rendimiento de una
memoria de gran velocidad, al coste de una memoria de baja velocidad.

La memoria se suele estructurar en varios niveles debido al compromiso costeo-


capacidad-velocidad (velocidades altas significan costos también altos, y de igual forma,
grandes capacidades suponen el aumento del costo). Existirá un nivel rápido de
pequeña capacidad, y niveles sucesivos de menor velocidad, pero mayor capacidad. La
información se ubicará en uno de los niveles, de acuerdo a su probabilidad de uso. Así
un programa poco empleado o unos datos de archivo, estarán almacenados en un nivel
inferior más lento y de mayor capacidad.

Si en un momento determinado se necesita esta información, se transfiere al nivel


superior más rápido para ser utilizada. Por ello se ha llegado a establecer una jerarquía
de las memorias, fundamentalmente en dos niveles:

 Una memoria central que es relativamente rápida, pero de capacidad muy


limitada.
 Una memoria auxiliar que es de mucha mayor capacidad, pero con un tiempo de
acceso considerable.

Esta jerarquía básicamente establece un orden en función de la capacidad de memoria


y su velocidad. La pirámide siguiente, está construida por diversos tipos de memoria, de
tal manera se establecen las siguientes reglas de jerarquía:

 A menor tiempo de acceso mayor el costo por bit de almacenamiento.


 A mayor capacidad menor el costo por bit.
 A mayor capacidad mayor tiempo de acceso.
48

Figura 26. Jerarquías de Memoria.

En general, los dispositivos de almacenamiento se vuelven más rápidos y más grandes


a medida que avanzamos de mayor a menor nivel. El más alto nivel (L0) son un
pequeño número de registros rápidos de CPU que éste puede acceder en un solo ciclo
de reloj. Las siguientes son más pequeñas que las memorias caché SRAM de tamaño
moderado, a las cuales se puede acceder en unos pocos ciclos de reloj del CPU. Estos
son seguidos por una gran cantidad de memoria principal DRAM que se puede acceder
en decenas de cientos de ciclos de reloj.

Luego se encuentran los discos duro de almacenamiento secundario de gran tamaño.


Por último, algunos sistemas incluso incluyen un nivel adicional de discos en servidores
remotos a los que puede accederse a través de una red. Por ejemplo, sistemas de
archivos distribuidos, tales como el Sistema de Archivo Andrew (AFS) o el Sistema de
archivos de red (NFS) permiten a un programa para acceder a los archivos
almacenados en servidores remotos conectados a la red.

Del mismo modo, la World Wide Web permite que los programas para acceder a
archivos remotos almacenados en servidores web en todo el mundo.
Los niveles se describen de la siguiente forma:

 Nivel 1: Registros.

Son de acceso aleatorio y muy pequeña capacidad y tiempo de acceso. Lo constituyen


los registros internos del microprocesador. Son volátiles y de semiconductores. Los
registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida
que tiene el sistema de almacenar datos. Los registros se miden generalmente por el
número de bits que almacenan. Los tipos de registros son:

o Registros de datos: son usados para guardar números enteros. En


algunas computadoras antiguas, existía un único registro donde se
guardaba toda la información, llamado acumulador.
o Registros de memoria: son usados para guardar exclusivamente
direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya
49

que muchas veces las direcciones tenían un tamaño de palabra distinto


que los datos.
o Registros de propósito general (GPRs): pueden guardar tanto datos
como direcciones. Son fundamentales en la arquitectura de von Neumann.
La mayor parte de las computadoras modernas usa GPR.
o Registros de coma flotante: son usados para guardar datos en formato
de coma flotante.
o Registros de propósito específico: guardan información específica del
estado del sistema, como el puntero de pila o el registro de estado.

 Nivel 2: Memoria Caché.

Las características son idénticas a las de los registros, aumentando un poco su


capacidad y tiempo de acceso. Se sitúan, en general, fuera del microprocesador. Se
usan, como veremos, para acelerar los accesos a la memoria principal.

Es una memoria de tamaño reducido, de alta velocidad, que se coloca entre la memoria
principal (RAM) y el CPU y se presenta de forma temporal y automática para el usuario,
que proporciona acceso rápido a los datos de uso más frecuente.

La ubicación de la caché entre el microprocesador y la RAM, hace que sea


suficientemente rápida para almacenar y transmitir los datos que el microprocesador
necesita recibir casi instantáneamente.

La memoria caché es rápida, unas 5 ó 6 veces más que la DRAM (RAM dinámica). En
el caso de los microprocesadores, estos integran de 1 a 3 tipos de memoria caché
denominadas L1, L2, L3, que significan nivel 1, 2 y 3, respectivamente.

o Memoria L1: se encuentran integradas dentro de los circuitos del


microprocesador y eso la hace más cara y complicado en el diseño, pero
también mucho más eficiente por su cercanía al microprocesador, ya que
funcionan a la misma velocidad que él.

Ésta a su vez se divide en dos partes:

a) L1 DC (Level 1 date cache) que se encarga de almacenar datos usados


frecuentemente y cuando sea necesario volver a utilizarlos,
inmediatamente los utiliza, por lo que se agilizan los procesos.
b) L1 IC (Level 1 instruction cache) las cuales se encargan de almacenar
instrucciones usadas frecuentemente y cuando sea necesario volver a
utilizarlas, inmediatamente las recupera, por lo que se agilizan los
procesos.

o Memoria L2: este anteriormente se encontraba en tarjetas de memoria,


para ser insertadas en una ranura especial de la tarjeta principal y
funciona a la velocidad de trabajo de la misma. Actualmente, la memoria
L2 viene integrada en el microprocesador, se encarga de almacenar datos
de uso frecuente y agilizar los procesos. Pueden contar con una
50

capacidad de almacenamiento caché de 8 MB, 9 MB en procesadores


AMD y hasta 12 MB en procesadores Intel.

o Memoria L3: con este nivel de memoria se agiliza el acceso a datos e


instrucciones que no fueron localizadas en L1 o L2. Si no se encuentra el
dato en ninguna de las 3, entonces se accederá a buscarlo en la memoria
RAM. Esta memoria es un tercer nivel que utilizaron primero los
procesadores de la firma AMD y posteriormente Intel. Puede contar con
una capacidad de almacenamiento caché de hasta 8 MB y 9 MB sumando
L2 y L3 en el caso de la nomenclatura AMD.

 Nivel 3: Memoria Principal.

Son de semiconductores y acceso aleatorio. Su función, como veremos, es la de


almacenar las instrucciones y datos a los que accede la CPU.

Desde 1972, el tipo de memoria universalmente empleada como memoria principal es la


memoria de semiconductores. Éstas, almacenan la información en forma electrónica
mediante circuitos simples, que pueden ser construidos automáticamente y en forma
masiva.
 Memoria RAM: en este nivel residen los programas y los datos. El CPU
lee y escribe datos en él, aunque con menos frecuencia que en los niveles
anteriores y tiene un tiempo de acceso relativamente rápido y gran
capacidad. Es el sistema principal de memoria del computador, pues
permiten accesos de lectura y escritura de datos e instrucciones por parte
del procesador o cualquier otro dispositivo con capacidad para ello. Estas
memorias serán definidas con mayor profundidad en el siguiente inciso.

 Nivel 4: Disco Magnético.

Son de semiconductores y acceso aleatorio. Su función, como veremos, es la de


almacenar las instrucciones y datos a los que accede la CPU.

También se puede definir como un dispositivo en el que el almacenamiento de la


información es permanente (almacenamiento no volátil), no necesita de un aporte
constante de energía para conservar la información y que puede alterarse en cualquier
momento para ser reutilizado, dado que posee miles de ciclos antes de la aparición de
errores.

Su funcionamiento se basa en el sistema de grabación magnética, por el cual algunos


materiales son capaces de almacenar determinados estados magnéticos (impuestos
desde el exterior).Cada vez los discos duros tienen más capacidad y menor coste.

 Nivel 5: Cinta Magnética.

El nivel más bajo está formado por dispositivos en los que el medio donde se
almacenan los datos puede ser cambiado (CD, cintas, DVD, entre otros) lo que hace
51

que su tamaño sea “ilimitado” aunque su velocidad de acceso será la más lenta, sobre
todo si el medio no está insertado en la unidad.

3.2. Clasificación/Empaques de las Memorias Semiconductoras.

Todas las memorias que se considerarán son de direccionamiento cableado, por lo


tanto son de acceso aleatorio. Se puede establecer la siguiente tabla de clasificación:

Tipo de Modo de
Propósito Borrado Volatilidad
Memoria Escritura
Random
Access Memoria de Eléctrico a
Eléctricamente Volátil
Memory Lectura/Escritura nivel Byte
(RAM)
Read Only
Memory Máscaras
Memoria de sólo
(ROM) No Posible
Lectura
Programmable
ROM (PROM)
Erasable
Luz UV a nivel
PROM
chip
(EPROM) No Volátil
Eléctrico a
Memoria Flash Eléctricamente
Memoria sobre nivel bloque
Electrically todo de Lectura
Erasable Eléctrico a
PROM nivel byte
(EEPORM)
Tabla 1. Clasificación de memoria

3.2.1. Memoria RAM (Memoria de Acceso Aleatorio):

Son memorias que permiten accesos de lectura y escritura de datos e instrucciones por
parte del procesador o cualquier otro dispositivo con capacidad para ello. Son memorias
volátiles. La memoria principal de un ordenador es RAM, ya que la ROM; al no permitir
la escritura, tiene un uso limitado. El sistema operativo, los programas y datos del
usuario se almacenan en memoria RAM para poder ser usados por el procesador. Se
utiliza como memoria de trabajo de computadoras para el sistema operativo, los
programas y la mayor parte del software.

En la RAM se cargan todas las instrucciones que ejecuta la unidad central de


procesamiento (procesador) y otras unidades del computador. Se denominan «de
acceso aleatorio» porque se puede leer o escribir en una posición de memoria con un
52

tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden
para acceder (acceso secuencial) a la información de la manera más rápida posible.

3.2.1.1. Tipos de Memoria RAM

 DRAM (Dinamic Random Access Memory):


Son memorias en las cuales el estado (0 ó 1) se almacena en un dispositivo electrónico
cuya forma de funcionamiento podemos compararla con un condensador que tiende a
descargarse. Por ello, cada cierto tiempo, entre 1 y 18 millones de veces cada segundo,
hay que enviar una señal, que se denomina señal de refresco, que recuerde a la
memoria la información que posee, ya que ésta, se pierde poco después de haberse
introducido. El microprocesador es el que da las órdenes oportunas para que la señal
de refresco llegue a la memoria. La frecuencia de esta señal de refresco tiene que ser
suficientemente alta para que no dé tiempo a que se pierda la información contenida en
la memoria.

La capacidad de las memorias DRAM va de 64Kbit a 32Mbit. El tiempo medio de


acceso de esta memoria oscila entre 80ns y 50ns. Actualmente no se emplean
directamente los chips de memoria, sino que se agrupan varios en una placa, con un
conector estándar para poder colocarse mejor; son los llamados SIMM (Single Inline
Memory Module) que han existido de dos tipos: de 30 contactos (casi en desuso) y de
72 contactos. Posteriormente aparecieron los llamados DIMM (Dual Inline Memory
Module), que tienen 168 contactos y su capacidad varía desde 8Mb hasta 128 MB.
En la actualidad se dispone de una gran variedad de tipos de memoria RAM, en las
cuales algunas de ellas se clasifican en:

 Asíncronas:

a) FPM: Para acelerar el acceso a la DRAM, existe una técnica, conocida como pagi
nación, que permite acceder a la información ubicada en una misma columna,
modificando únicamente la dirección en la fila, y evitando de esta manera, la repetición
del número de columna entre lecturas por fila. Este proceso se conoce como DRAM
FPM (Memoria en Modo Paginado). El FPM alcanza tiempos de acceso de unos 70 u
80 nanosegundos, en el caso de frecuencias de funcionamiento de entre 25 y 33 MHz.
b) EDO: La DRAM EDO (Salida de Información Mejorada, a veces denominada "híper‐
página") se introdujo en 1995. La técnica utilizada en este tipo de memoria implica
direccionar la columna siguiente mientras paralelamente se está leyendo la información
de una columna anterior. De esta manera, se crea un acceso superpuesto que permite
ahorrar tiempo en cada ciclo. El tiempo de acceso de la memoria EDO es de 50 a 60
nanosegundos, en el caso de una frecuencia de funcionamiento de entre 33 y 66 MHz.
c) BEDO (Burst EDO): Es un tipo más rápido de EDO que mejora la velocidad usando
un contador de dirección para las siguientes direcciones y un estado 'pipeline' que
solapa las operaciones. Poco extendida, compite en prestaciones con la SDRAM.

 Síncronas:
53

a) SDRAM (Synchronous DRAM - DRAM síncrona): Es un tipo de memoria RAM


dinámica que es casi un 20% más rápida que la RAM EDO. SDRAM entrelaza dos o
más matrices de memoria interna de tal forma que mientras que se está accediendo a
una matriz, la siguiente se está preparando para el acceso. SDRAM‐II es tecnología
SDRAM más rápida esperada para 1998. También conocido como DDR DRAM o DDR
SDRAM (Double Data Rate DRAM o SDRAM), permite leer y escribir datos a dos veces
la velocidad bús.
b) RAMBUS: La DR‐SDRAM (DRAM Directa de Rambus), es un tipo de memoria que
permite la transferencia de datos a un bus de 16 bits y a una frecuencia de 800 Mhs, lo
que proporciona un ancho de banda de 1,6 GB/s. Al igual que la SDRAM, este tipo de
memoria está sincronizada con el reloj del bus, a fin de mejorar el intercambio de
información. Sin embargo, la memoria RAMBUS es un producto de tecnología
patentada, lo que implica que cualquier empresa que desee producir módulos RAM que
utilicen esta tecnología deberá abonar regalías, tanto a RAMBUS como a Intel.

Figura 27. Memorias DRAM.

 SRAM (Static Random Access Memory):


Mantiene la información mientras esté alimentada, es muy rápida (van de 50ns a 15ns)
pero tiene baja densidad de integración. Las memorias RAM estáticas son las utilizadas
en los ordenadores actuales para implantar las memorias caché debido a su bajo
tiempo de acceso. La diferencia fundamental con las memorias anteriores es que no
necesitan refresco, para ello emplean varios transistores por bit, lo cual reduce la
capacidad de la memoria y hace que sean más caras que las DRAM.

Existen otras modalidades de funcionamiento de las memorias estáticas, entre ellas se


pueden nombrar las siguientes:

 SRAM sincrónica:
Al igual que en los sistemas sincrónicos, este tipo de memoria tiene una entrada de
reloj, la cual le permite operar en sincronía con otros dispositivos. Esta característica no
aporta mejores beneficios, sin embargo, simplifica enormemente el diseño de sistemas
de alta prestaciones, ya que una única señal controla todos los dispositivos
involucrados. La ventaja de estas memorias viene proporcionada por lo que se podría
llamar su funcionamiento automático, guiado por la señal de reloj, por lo que no es
necesario ocuparse de generar las señales de control.
54

 SRAM de ráfaga (burst):


Son sincrónicas y se caracterizan por incluir un contador que permite que la memoria
genere internamente la dirección a la que debe acceder, consiguiendo de esta forma
accesos hasta cuatro posiciones de memoria con una sola dirección de referencia. Esto
permite acceder de forma más rápida a la información en memoria.
Funcionamiento: La CPU genera una dirección de memoria, la cual se propaga a través
del bus de direcciones hasta la memoria, decodificándose y accediendo a la posición
correspondiente. Si se ha configurado la memoria en modo ráfaga, una vez obtenido el
primer dato, incrementa la dirección y vuelve a acceder.

De esta forma se evita el tiempo de propagación de las señales por el bus y el tiempo
de decodificación de la dirección. El número de palabras leídas o escritas en una
ráfaga, viene limitado por el tamaño del contador interno de la memoria.

 SRAM pipeline:
Con los dos tipos de memorias anteriores se consigue el acceso a posiciones
consecutivas de forma rápida. Para mantener esta velocidad cuando se cambia de
secuencia, las memorias pipeline incluyen un buffer para almacenar la dirección y los
datos actuales proporcionados por la memoria. De esta forma, se puede enviar la nueva
dirección antes de terminar la lectura, consiguiendo así que la CPU no espere la
finalización del acceso a una posición de memoria para generar la nueva dirección.

Figura 28. Memoria SRAM.

3.2.2. Memorias ROM (Memoria solo de Lectura):

Es un medio de almacenamiento utilizado en ordenadores y dispositivos electrónicos,


que permite solo la lectura de la información y no su escritura, independientemente de
la presencia o no de una fuente de energía. Los datos almacenados en la ROM no se
pueden modificar, o al menos no de manera rápida o fácil. Se utiliza principalmente en
su sentido más estricto, se refiere solo a máscara ROM -en inglés, MROM- (el más
antiguo tipo de estado sólido ROM), que se fabrica con los datos almacenados de forma
permanente y, por lo tanto, su contenido no puede ser modificado de ninguna forma. Sin
embargo, las ROM más modernas, como EPROM y Flash EEPROM, efectivamente se
pueden borrar y volver a programar varias veces, aun siendo descritos como "memoria
de sólo lectura" (ROM).
55

La razón de que se las continúe llamando así es que el proceso de reprogramación en


general es poco frecuente, relativamente lento y, a menudo, no se permite la escritura
en lugares aleatorios de la memoria. A pesar de la simplicidad de la ROM, los
dispositivos reprogramables son más flexibles y económicos, por lo cual las antiguas
máscaras ROM no se suelen encontrar en hardware producido a partir de 2007.

Los programas tienen correcciones y mejoras constantes, por lo que es poco práctico (y
poco rentable) tener que producir nuevas ROMs cada vez que hay un cambio. Por ello
se fueron desarrollando con el tiempo nuevos circuitos que dieran respuesta a esta
situación: por un lado fueran memorias permanentes (no perdieran su contenido al
quedar sin energía eléctrica) y por otro pudiera ser modificado su contenido de alguna
forma.

3.2.2.1. Tipos de memoria ROM.

 M-ROM:
La memoria ROM de máscara se caracteriza porque la información contenida en su
interior se almacena durante su fabricación y no se puede alterar. El proceso de
fabricación es muy caro, pero se hacen económicas con la producción de grandes
cantidades. La programación se realiza mediante el diseño de un negativo fotográfico
llamado máscara donde se especifican las conexiones internas de la memoria y son
ideales para almacenar microprogramas, sistemas operativos, tablas de conversión y
caracteres.

Figura 29. Memoria típica ROM.

 PROM (Programmable Read Only Memory - ROM programable):


Este tipo de memoria, a diferencia de la M-ROM, no se programa durante el proceso de
fabricación, sino que la efectúa el usuario y se puede realizar una sola vez, después de
la cual no se puede borrar o volver a almacenar otra información.

Figura 30. Memoria PROM.


56

 EPROM (Erasable PROM):


Es un tipo de chip de memoria ROM no volátil inventado por el ingeniero Dov Frohman
de Intel. Está formada por celdas de FAMOS (Floating Gate Avalanche-Injection Metal-
Oxide Semiconductor) o "transistores de puerta flotante", cada uno de los cuales viene
de fábrica sin carga, por lo que son leídos como 1 (por eso, una EPROM sin grabar se
lee como FF en todas sus celdas).

Este tipo de memoria es similar a la PROM con la diferencia que la información se


puede borrar y volver a grabar varias veces. Su capacidad de desde algunos kilobits
hasta del orden de 8 Megabits y muchas veces están organizadas en palabras de 8 bits.
La programación se efectúa aplicando a un pin especial de la memoria una tensión
entre 10 y 25 V durante aproximadamente 50 ms, según el dispositivo, al mismo tiempo
se direcciona la posición de memoria y se pone la información a las entradas de datos.

El mecanismo de borrado es totalmente distinto al de programación e implica un


proceso de exposición del circuito a luz ultravioleta por varios minutos. Para ello, las
EPROM disponen de una ventana transparente en el encapsulado cerámico o plástico
del circuito integrado. Esa ventana expone el propio chip de silicio, de forma de poder
irradiar adecuadamente el material con luz ultravioleta de forma de revertir las
modificaciones físico-químicas producidas por el proceso de grabación por impulsos
eléctricos, mediante un dispositivo específico: Programador de EPROMs. Esta ventana
está normalmente tapada de forma de evitar exponer el silicio a la luz normal (que
contiene componentes ultravioletas) para que el contenido de la EPROM no se altere.

Figura 31. Memoria EPROM

 EEPROM (Electronically EPROM):


Las EPROM si bien solucionan el problema de la re-usabilidad de este tipo de
memorias, todavía tienen el inconveniente que este proceso es sumamente lento,
complejo y requiere retirar la EPROM del sistema para realizar el borrado.

Es así que surgieron las EEPROM (Electrical EPROM), es decir, una EPROM cuyo
proceso de borrado se hace eléctricamente y puede efectuarse sin retirar el circuito
integrado del sistema. Posee otra diferencia importante con la EPROM: una EEPROM
normalmente tiene la capacidad de borrar cada bit en forma individual (también hay
implementaciones que borran una palabra completa en cada operación de borrado).

Típicamente se utilizan para almacenar los datos de configuración de un sistema.


Tienen una capacidad de hasta del orden de 128 kbits. Es frecuente que estén
organizadas en palabras de un solo bit.
57

Figura 32. Memoria EEPROM

 Flash EEPROM / Flash EPROM / Flash Memory:


Este tipo de memoria es una variante de las EEPROM que se desarrolló con el objetivo
de mejorar el tiempo de borrado, de forma de habilitar su uso para aplicaciones de
almacenamiento masivo.

Si bien el nombre está asociado al concepto de velocidad, el nombre se origina en la


similitud que uno de sus creadores veía entre el proceso de borrado y el destello del
flash de una cámara de fotos.

Figura 33. Memoria Tipo Flash EEPROM

Finalmente, algunos Ejemplos de las características de las memorias se puede


observar en el siguiente cuadro:

Modelo de Longitud de Unidad


Bus de Datos
Memoria Registros Direccionable
8086 16 16
8088 8 16
486 32 32
Pentium 64 64 Byte
68000 16 32
68020 32 32
PowerPC 750 64 64
Tabla 2. Ejemplos y características de memorias.
58

3.3. Interfaz de las Memorias Semiconductoras.

Una vez estudiados los componentes que conforman la memoria principal del
microprocesador, es necesario que se ensamblen estos componentes en forma correcta
a objeto de producir un sistema de memoria adecuado para un microprocesador. Debe
considerarse la cantidad de memoria requerida y el método óptimo de conectar a toda
la memoria del microprocesador. Por esto se incluye en este inciso, la solución de
problemas de conexión de la memoria al microprocesador mediante una interfaz
adecuada, específicamente para la familia de los microprocesadores Intel.

Figura 34. Ejemplo de una Memoria RAM para aplicar diferentes interfaces.

Se tiene de la imagen anterior, una pastilla de memoria RAM de 1 Mbit x 8 (1 Mbyte).


Se presenta a continuación, la interfaz que esta memoria ofrece para su conexión con el
resto de los componentes del ordenador.

 Patas de direcciones (A0-A19): Puesto que tiene un espacio de


direccionamiento de 1 Mega (1.048.576 direcciones) necesita 20 patas de
direcciones para poder seleccionar la celda deseada, pues 220= 1.048.576. Está
claro que estas señales son de entrada.
 Patas de datos (D0-D7): Cada celda direccionada es un byte, luego necesita 8
hilos. Ya que esta pastilla es de memoria RAM, se puede leer o escribir en ella,
por lo que estas patas son de entrada/salida, dependiendo de si la operación es
escritura o lectura.
 Señales de lectura/escritura (OE y WE): Cuando se desea realizar una
operación de lectura, además de indicar la dirección correspondiente en las
patas de dirección, debe activarse la señal OE (Output Enable). Si lo que se
desea es una operación de escritura, debe activarse la señal WE (Write Enable).
Obviamente, estas señales son mutuamente excluyentes.
 Selección de pastilla (CS): El mapa de memoria de un ordenador normalmente
está compuesto por varias pastillas de memoria a las que llegan las señales de
direcciones que salen de la CPU. Sin embargo, en cada operación concreta de
lectura/escritura no debe leerse o escribirse en todas estas pastillas, sino
solamente en la que corresponda según la dirección, por lo que un módulo de
decodificación se encarga de seleccionar la pastilla o pastillas que deben
59

activarse al recibir una señal OE o WE, y para ello activará la señal CS (Chip
Selecto CE, Chip Enable) de la pastilla o pastillas que deban responder a la
operación. Es decir, que esta señal le indica a la pastilla si debe responder o no a
la operación de lectura/escritura que se arranca.
 Tensión de alimentación (Vcc): Por esta patilla se recibe la tensión de
alimentación de la pastilla.
 Tierra (GND): Este pin se une a la toma de tierra (Ground) del ordenador.

Las patillas de alimentación o de toma de tierra suelen estar duplicadas en los


encapsulados comerciales. Las diferencias con otros tipos de pastilla suelen ser
mínimas. En las pastillas ROM, por ejemplo, no está presente la señal Write Enable; y
en las pastillas de tipo EEPROM (memoria no volátil de lectura/escritura) se dispone de
una señal de tensión especial para la escritura.

Se debe tener en cuenta que al decir que una señal está activa no quiere decir que esa
señal tiene 5 voltios, por ejemplo, pues depende de si la señal tiene lógica positiva o
lógica negada. Esto quiere decir que una señal concreta puede estar activa al tener 5V
o al estar a 0V o -5V, dependiendo de la lógica utilizada.

(A) (B)
Figura 35. Cronograma de: (A) lectura y (B) escritura

Los cronogramas simplificados de las operaciones de lectura y escritura, como se


muestra en la imagen anterior, en una plantilla genérica de memoria.

 Para un Ciclo de Lectura: En este caso considerándose síncrona, todas las


señales activan el dispositivo que quiere realizar la lectura de memoria (CPU),
excepto las señales de datos, ya que, al tratarse de una lectura, será la propia
pastilla de memoria la que los active convenientemente.

En primer lugar, se debe poner la dirección del dato a leer en las señales de
direcciones; luego se activará la señal de selección de pastilla CS (o CE) y, para
terminar, OE, la señal que indica que se trata de una lectura. Obviamente, la
señal de escritura WE, se mantiene desactivada durante toda la operación.
Pasado un cierto tiempo, la pastilla de memoria pone el contenido de la dirección
de memoria indicada en las señales que componen el bus de datos. El tiempo
máximo que transcurre desde que se activa la señal CS hasta que entrega el
dato, se denomina “Tiempo de acceso”, y su duración depende de la tecnología
60

utilizada. Como ya se sabe, las memorias dinámicas (las normalmente utilizadas


en la RAM), tienen un tiempo de acceso entre 10 y 20 ns, mientras que las
estáticas (las utilizadas para memorias caché) son de alrededor de 3 ns.

 Para un Ciclo de Escritura: Igualmente síncrona, todas las señales las activan
el dispositivo que va a escribir en la memoria, incluidas, las señales de datos.

En la imagen del Cronograma de Escritura, se puede ver el orden en el que se


tiene que ir activando las distintas señales. Ahora es la señal OE, la que se
mantiene desactivada durante toda la operación.

Las pastillas de memoria exigen, generalmente, que el dato que se desea


escribir esté presente en el bus de datos, un tiempo mínimo (tiempo de “setup”)
antes de desactivar las señales CS y WE, de tal forma que le dé tiempo a la
pastilla a capturar el dato correctamente.

Tanto al ciclo de lectura como al ciclo de escritura, se los conoce de forma genérica
como, Ciclo de Memoria (o Bus). Debe quedar claro que, aunque tengan un nombre
genérico común, un ciclo de lectura no tiene por qué durar lo mismo que uno de
escritura; es decir, que los ciclos de memoria pueden tener distintas duraciones.

En la siguiente imagen se puede observar la interfaz que ofrecen el CPU y las pastillas
de memoria, para lograr luego describir la interconexión entre ambos.

Figura 36. Interconexión CPU-Memoria.

Se supone un procesador más o menos actual, con 64 hilos en el bus de datos, y 32 en


el de direcciones, lo que quiere decir que cuenta con un espacio de direccionamiento de
4 Gbytes. Por otra parte, se supone una memoria con 232 bytes, es decir, los 4 Gbytes.
61

Luego se debe conectar los 32 hilos de direcciones de la CPU con los 32 de la memoria
y los de datos del CPU con los de datos de la memoria.

También hay que conectar la salida AS del CPU con la entrada CS de la memoria, de
tal forma que cuando el CPU dé por estables los valores del bus de direcciones, se
seleccione la pastilla de memoria. Por último, nos queda conectar la salida R/W del
CPU a las entradas OE y WE de la memoria, para indicar cuando se desea leer o
escribir en ella.

Hay que dejar claro, que el procesador tiene 64 hilos de datos, y la memoria por su
parte ofrece 232 unidades de direccionamiento de 8 bits cada una, luego debe tener 8
hilos de datos. Pasa estos casos se debe conocer el mapa de memora, que representa
la distribución del espacio de direccionamiento de una máquina entre los distintos tipos
de memoria instalados.

3.4. Decodificación.

La decodificación de direcciones es necesaria incluso en espacios de direccionamiento


ocupados por múltiples pastillas de memoria del mismo tipo (RAM, ROM, etc). En la
práctica lo que sucede es que el espacio de direccionamiento suele estar ocupado solo
parcialmente y, además, por diferentes tipos de memoria o puertos de controladores de
periféricos mapeados en memoria memoria (ocupando direcciones del espacio de
direccionamiento normal de la CPU), con lo cual se añade un motivo más para la
aplicación de las decodificaciones.

3.4.1. Decodificación de direcciones.

El ejemplo que se muestra en la siguiente imagen, es un sistema con un espacio de


direccionamiento de 64 kbytes, ocupado por 2 kbytes de memoria ROM a partir de la
dirección 0, y otros 2 kbytes de RAM a partir de la dirección 8000H. Además, las últimas
4 direcciones están utilizadas para hacer referencia a los 4 registros o puertos del
controlador de un dispositivo periférico.

Figura 37. Proceso de decodificación de direcciones.


62

3.4.2. Decodificación total.

Figura 38. Proceso de decodificación total de direcciones.

Debido a lo establecido en el mapa de memoria de la transparencia anterior, la memoria


ROM deberá seleccionarse por cualquier dirección binaria del tipo 00000xxxxxxxxxxx.
Es decir, siempre que los 5 bits de mayor peso estén a cero indicará que la dirección
está dentro de los dos primeros kbytes de memoria.

Dado que normalmente la señal CS se activa por lógica inversa (a cero), la selección de
la ROM puede conseguirse entonces mediante una puerta OR de cinco entradas, de tal
manera que solamente cuando las cinco estén a 0, el resultado será un 0.

El mismo principio puede aplicarse a la memoria RAM, cuyas direcciones tendrán el


formato 10000xxxxxxxxxxx. En este caso, la selección de esta pastilla se puede
conseguir con la misma lógica que la de la ROM, más un inversor para la señal de
mayor peso a la entrada de la OR.

La decodificación de las direcciones de los puertos es igual de sencilla, pues al tener las
direcciones del tipo 11111111111111xx, su activación se consigue con una puerta
NAND a la que entran las 14 señales de direcciones de mayor peso.
Todo esto ha sido una decodificación total de direcciones, ya que para la selección de
cada pastilla intervienen todas las señales de direcciones que identifican directa y
unívocamente tal pastilla.

La decodificación total de direcciones, aunque es más compleja y costosa, tiene dos


ventajas:

 Detecta referencias a direcciones inexistentes de memoria.


 Permite ampliaciones del mapa de memoria con otras zonas de memoria.
63

3.4.3. Decodificación Parcial.

Figura 39. Proceso de decodificación parcial de direcciones.

En el caso del ejemplo de decodificación anterior, se ha necesitado las 5 señales de


dirección de mayor peso para identificar la ROM y la RAM, y las 14 de mayor peso para
identificar las direcciones de los puertos de E/S.

Sin embargo, se podría utilizar una artimaña para tratar de simplificar el número de
señales implicadas en la decodificación. Se trata de observar las diferencias entre los
distintos grupos de direcciones, y utilizar lógica para decodificar direcciones basándose
solamente es esas diferencias.

De acuerdo a la imagen anterior del proceso de decodificación parcial de direcciones,


se tiene que las direcciones ROM, y solamente las direcciones ROM, tienen de
particular que su señal de direcciones más alta (A15) siempre es 0. Así, podríamos
conectar directamente A15 a la señal CS.

En cuanto a la memoria RAM, tenemos que sus direcciones son las únicas cuyas
señales de direcciones A15 y A14 son, respectivamente, 1 y 0. Por último, las
direcciones de los puertos de E/S son las únicas cuya señal A14 es siempre 1.
Como se puede observar, se tiene que para distinguir los tres grupos de direcciones y
poder seleccionar la pastilla adecuada, basta con utilizar solamente las dos señales de
dirección más altas, lo cual se consigue, como se puede ver en la imagen de
decodificación parcial de direcciones, con solo una puerta NAND y dos inversores.

Este método de decodificación de direcciones se denomina decodificación parcial de


direcciones, puesto que no intervienen todas las señales que definen cada grupo de
direcciones. Esto tiene un seguimiento, una lectura de cualquiera de estas direcciones:

0001 0000 0000 0000


0001 1000 0000 0000
0010 0000 0000 0000
64

Se producirá el mismo resultado. De hecho, cualquier lectura de la mitad inferior de las


direcciones (sin variar los 11 bits de menor peso) producirá el mismo efecto, pues
cualquiera de ellas seleccionará la pastilla ROM, y con los mismos 11 bits de
direcciones.

Por esto, hay que pensar que quizás sería mejor detectar las referencias a direcciones
de memoria no existentes.

Si se piensa que el ordenador puede ampliarse en el futuro con otras zonas de


memoria, se puede quedar inservible la lógica de decodificación; así, al añadir más
módulos de memoria, con decodificación total solamente hay que añadir la lógica
correspondiente a los módulos de memoria añadidos, mientras que, con decodificación
parcial, es muy posible que haya que rehacer toda la lógica general de decodificación
de direcciones.

3.5. Sistemas de Memoria.

La memoria principal suele estar formada por varios tipos de memoria; normalmente se
encuentran, al menos, memorias de tipo RAM y ROM. Para todas ellas hay una serie de
características o términos comunes que se deben aclarar, como se muestran en la
siguiente imagen:

Figura 40. Sistema Típico de Memoria.

A continuación, Se Definen las características principales que se muestran en la imagen


del sistema típico de una memoria:

 La Capacidad: Ésta puede venir expresada por su número de celdas de


memoria, por lo que, en la mayoría de los sistemas basados en
microprocesadores, viene expresada en bytes (1 byte = 8 bits). Otra forma de
expresarla es indicando el número de celdas y el número de bits de datos de
cada celda. Así, por ejemplo, 16 K x 8, quiere decir que tiene 16 k celdas
direccionales, y cada una se compone de 8 bits, o lo que es lo mismo, 16 Kbytes.
65

 La Dirección o ubicación: Cada celda de memoria está asociada unívocamente


a una dirección, de tal manera que mediante esa dirección se puede acceder a
ella para leer o escribir un dato. No se debe confundir el espacio de
direccionamiento de un procesador con la cantidad de memoria disponible. El
espacio de direccionamiento viene impuesto por el número de hilos (n) del bus
de direcciones, de tal manera que el espacio de direccionamiento de un
procesador es 2𝑛 unidades direccionales, con lo que su rango de direcciones va
de 0 a 2𝑛 − 1. La cantidad de memoria de un ordenador se corresponde
solamente con la memoria realmente instalada. El máximo de memoria que se
puede instalar es 2n.
 La Unidad direccional o resolución de acceso: Es el número de bits
accesibles en cada dirección de memoria. La mínima unidad de almacenamiento
es el bit, pero con solo dos valores posibles no resulta muy útil como unidad para
el usuario, por eso se elige un tamaño mayor como mínima unidad de
direccionamiento. La unidad de direccionamiento, es la mínima unidad de
memoria a la que se puede hacer referencia mediante las señales de direcciones
y selección de la CPU. Si bien el tamaño de la palabra es el apropiado para los
números, hay otros tipos de datos para los que esta unidad resulta demasiado
grande, por ejemplo, los caracteres, que ocupan solamente un byte. Por este
motivo, es normal que la unidad de direccionamiento sea el byte y no la palabra.
Normalmente el espacio de direccionamiento, o capacidad, viene expresado en
unidades direccionales.
 La Palabra: Su tamaño suele ser igual al máximo número de bits utilizado para
representar los números en los registros internos de la CPU. Los primeros
microprocesadores tenían palabras de 8 bits (como el 8080 y 8085 de Intel), el
8086 tenía una palabra de 16 bits, y la palabra del 68000 era de 32 bits. Los
microprocesadores actuales tienen 64 bits, como el Pentium y los últimos
modelos de PowerPC. La palabra de memoria viene establecida por la CPU,
aunque, influye directamente en el diseño de la organización de la memoria.
 La Unidad de transferencia: Es el máximo número de bits que pueden
transferirse por el bus en cada operación de lectura o escritura en memoria. Este
número viene impuesto por el número de hilos del bus de datos y, aunque suele
ser igual a la palabra, también puede ser un submúltiplo de ésta.
 El Tiempo de acceso: Es el tiempo necesario para realizar una operación de
lectura/escritura, es decir, el tiempo que transcurre desde el instante en que se
pone la dirección en el bus de direcciones hasta que el dato ha sido almacenado
o puesto a disposición de la CPU. Actualmente las memorias estáticas tienen un
tiempo de acceso del orden de 3 ns, mientras que las dinámicas están alrededor
de 20 ns.

3.5.1. La Organización de los Módulos.

Luego de tener en claro toda la descripción del mapa de la memoria, su sistema se


descompone en una característica principal que determina su función como sistema
único de una memoria, este es:
66

Figura 41. Organización para aplicar al CPU.

Hay ocasiones que se presenta, que las pastillas de memoria se adaptan muy bien a las
necesidades normales de un ordenador, sin embargo, no suelen ofrecerse
comercialmente.

Dichas pastillas de memoria se comercializan con un número de celdas de memoria


(direcciones) y un tamaño de celda (bits por celda) que no tienen por qué coincidir con
el tamaño de la palabra de la CPU ni con las necesidades de memoria que hay que
instalar. Por esto, es normal que haya que agrupar varias pastillas de memoria para
ofrecerle a la CPU la imagen de una única memoria con tantas direcciones como se
desea y con un tamaño de celda igual al de la palabra del CPU.

En la imagen de la organización al CPU, se muestra un ordenador al que se le quiere


dotar de un espacio de direccionamiento de 12 Kbytes, pero resulta que en el mercado
no está disponible una pastilla de memoria de 12 k x 8; se supondrá que lo más
parecido disponible son pastillas de 4 k x 2 bits. Así pues, las pastillas de memoria se
deben de agrupar por dos motivos:

 Para conseguir el espacio de memoria (direcciones) deseado.


 Para conseguir el tamaño de celda o unidad de direccionamiento que ve el CPU.

En consecuencia, a continuación, se explicarán algunas configuraciones donde se


muestre, cómo deben agruparse las pastillas o módulos de memoria para conseguir la
memoria deseada.
67

3.5.2. Agrupación por Longitud de Celda.

Figura 42. Ejemplo de Agrupación por Longitud de Celda.

Se supone que se desea conseguir un banco de memoria de 16 Kpalabras de 8 bits (es


decir una memoria de 16 k x 8 bits); y para ello se dispone de módulos de 16 k x 4 bits
(4 bits de datos cada celda).

Se observa en la imagen anterior del ejemplo de agrupación por longitud de celda, que
cada módulo de memoria cubre el espacio de direccionamiento requerido (16
Kdirecciones), pero solamente con la mitad de la longitud de una celda en cada
dirección. Así pues, lo que se tiene que hacer es agrupar convenientemente dos
módulos de 16 k x 4 bits para conseguir una visión de 16 k x 8 bits.

Por una parte, se debe unir directamente los pines de direcciones de las dos pastillas,
puesto que ambas tienen 16 k direcciones. Por consiguiente, se tiene que formar
palabras de 8 bits a partir de dos bloques de 4.

Para ello simplemente se toman los 4 bits de datos de la pastilla 1 y los consideramos
como los 4 bits de mayor peso de la palabra, y los 4 bits de datos de la pastilla 2 serán
los 4 bits de menor peso de la palabra. Así, cuando la CPU realice una lectura de la
dirección 2F00, ambas pastillas se seleccionarán (CS activo); la primera pastilla
aportará los 4 bits de su dirección 2F00 a los 4 bits de mayor peso, y la segunda pastilla
aportará los 4 bits de su dirección 2F00 a los 4 bits de menor peso de la palabra. De
esta manera, el CPU habrá leído una palabra de 8 bits de la dirección 2F00 de su
espacio de direcciones.
68

3.5.3. Agrupación por Direcciones.

Figura 43. Ejemplo de Agrupación por Direcciones.

Para este caso se supone, que para implementar el mismo bloque de memoria de 16 k
x 8 bits, se dispone ahora de módulos de 4 k x 8 bits.

Como se observa en la imagen anterior del ejemplo de agrupación por direcciones,


cada módulo ahora ofrece palabras completas de (8 bits), pero no se dispone de un
módulo que ofrezca 16 K palabras, por lo que se tiene que agrupar 4 pastillas de tal
forma que cada una de ellas nos ofrezca ¼ del espacio de direccionamiento requerido,
consiguiendo los 16 k en total (0 – 3FFF).

Lo que parece razonable es hacer que un módulo de memoria contenga el primer


cuarto de direcciones, otro módulo el segundo cuarto, y otros dos módulos para los dos
últimos cuartos del espacio de direccionamiento. Así, se tiene lo siguiente:

Direcciones 0000-0FFF en Modulo 0


“ 1000-1FFF en Modula 1
“ 2000-2FFF en Modulo 2
“ 3000-3FFF en Modulo 3
Tabla 3. Agrupación por direcciones.

A continuación, se presenta un ejemplo aplicativo común:


69

Figura 44. Interconexión de los Módulos de Memoria con el CPU.

En este caso, cada pastilla entrega los 8 bits de cada palabra, pero no se tienen que
seleccionar todas simultáneamente, sino que solamente tendrá que seleccionarse la
que tenga la dirección referenciada por el CPU.

En estas situaciones en las que cada uno de los espacios de direccionamiento está
repartido entre múltiples pastillas de memoria, se requiere un mecanismo que sepa
averiguar el módulo que contiene la dirección referenciada por el CPU y activar
únicamente la señal CS (Chip Select) de ese módulo. A este mecanismo se le conoce
como decodificación de direcciones.

Para finalizar la organización de los módulos se presenta el siguiente ejemplo para


mayor entendimiento del procedimiento:

Figura 45. Organización Típica de Módulos de Memoria.

En este ejemplo se tiene un sistema con una memoria de 64 Kbytes formada a base de
módulos de 16 k x 1 bit, esto quiere decir que cada chip de 14 pines de direcciones y
una de datos.

Se tendrá 4 bancos (filas) de 16 Kdirecciones cada uno, y cada banco a su vez, debe
estar formado por 8 pastillas, ya que cada una de ellas entrega un bit. Así pues, se
necesitará 4x8 pastillas, es decir, 32 en total.
70

En cuanto a los hilos de datos, puede verse que cada columna de pastillas entrega un
bit de datos del mismo peso, pero como en un momento dado solamente estará
activada una pastilla por columna, el resto de las pastillas de la columna se quedarán
en alta impedancia y no aportarán nada al bus de datos.

Ya que cada pastilla tiene 16 Kdirecciones, dispone de 14 hilos de direcciones, mientras


que del CPU salen los 16 hilos correspondientes a un direccionamiento de 64 k. Lo
primero que se debe realizar es conectar los 14 hilos de direcciones de menor peso (A0
- A13) a las 14 patas de cada módulo de memoria.

Con esta conexión resulta que para cualquier dirección que genere el CPU se
seleccionarán todas las pastillas de memoria, mientras que se quiere que para una
dirección en el rango 0-3FFF se seleccionen solamente las 8 pastillas que forman los
bytes de las 16 Kdirecciones primeras; si la dirección está en el rango 4000-7FFF, se
debe seleccionar las 8 pastillas del segundo banco de memorias, para las direcciones
de 8000-BFFF, las 8 pastillas del tercer banco; y por último, si la dirección está en el
rango C000-FFFF, se deben seleccionar solamente las 8 pastillas de último banco.
Pues bien, si nos fijamos en los 16 hilos de direcciones que salen del CPU, las señales
que indican el banco de direcciones de 16 k que se está referenciando, son las dos
señales de mayor peso, la A14 y la A15, con las siguientes combinaciones:

𝑨𝟏𝟓 𝑨𝟏𝟒 Banco seleccionado


0 0 1º (0000-3FFF)
0 1 2º (4000-7FFF)
1 0 3º (8000-BFFF)
1 1 4º (C000-FFFF)
Tabla 5. Combinaciones de datos.

Lo único queda por hacer es ingresar estas dos señales en un decodificador de 2 bits
que se encargue de activar una de sus 4 salidas, de tal manera que cada una de ellas
se conectará al pin CS (Chip Select) de todas las pastillas que conforman el banco
correspondiente de 16 k. Como se puede observar en la figura 42, para activar una
pastilla no basta con conectar la salida del codificador a la pastilla CS, sino que para
activar una pastilla debe estar activa la señal correspondiente del decodificador más la
señal AS (Address Strobe) de la CPU.
71

CONCLUSION

Se ha visto la historia de la computación, hasta los últimos avances tecnológicos en


ella, y cabe destacar que para el desarrollo de la misma el primer invento fue el Abaco,
luego la Pascalina, la cual sus datos se representaban mediante posiciones de
engranajes; y todo esto dio pie para que en 1947 se diseñara la primera computadora,
la cual tuvo como principal característica la realización de 5000 operaciones aritméticas
por segundo, esta recibió el nombre de ENIAC.

Prosiguiendo con la historia para el año 1971, la compañía Intel comienza con el
desarrollo de los Microprocesadores teniendo como primera creación el
microprocesador 4004, con un CPU de 4 bits. Esta creación de este microprocesador
ha sido de gran importancia ya que este es el encargado de ejecutar los programas,
sean de usuario o de sistema, ejecutando instrucciones a un bajo nivel y realizando
operaciones elementales. Fue la base de los avances tecnológicos que hemos logrado
hoy en día.

En cuanto a lo aprendido del lenguaje Ensamblador, este opera directamente con el


microprocesador, permite que la computadora procese más rápido la ejecución de los
programas, utilizando poco espacio en memoria y posee mucha flexibilidad en torno a lo
que es realización de tareas específicas, que en lenguajes de alto nivel es de mucha
dificultad.

Con respecto a la arquitectura de los microprocesadores Intel, los más utilizados fueron
el 8088 y el 8086 los cuales fueron un gran avance gracias a su potencia y velocidad de
procesamiento de datos. Son muy parecidos en cuanto a su estructura, pero lo que los
diferencio fue el tamaño en el bus de datos externos, donde uno maneja 8 bits y el otro
16 bits. Se detalla la arquitectura e interfaces de entrada y salida, y que estos permiten
operar sobre un mapa de E/S independiente del de memoria, esto quiere decir que
habrá instrucciones particulares que permiten traer información del mundo exterior o
llevarla hasta el mismo. Esas instrucciones se conocen como IN/OUT, y son las únicas
que llevan en línea en el último ciclo de máquina.

Sobre las memorias semiconductoras, estas se estructuran en varios niveles y su


rendimiento dependerá según sea su capacidad, su velocidad y el coste. Se organizan
en forma escalonada observándose los niveles típicos que posee la computadora, la
cual está constituida por varios tipos de memoria, la información se va organizando de
acuerdo a la probabilidad de que esta pudiera a ser utilizada próximamente, por ejemplo
si estamos en presencia de datos pocos utilizados la información es almacenada en un
nivel inferior de menor velocidad, pero no obstante con mayor capacidad, y en el caso
de que la información presenta una necesidad mayor, se transfiere a un nivel más alto
según la escala.
72

Acerca de las decodificaciones de las memorias, los procesos que se presentan son la
de Direcciones, la Tota; y la Parcial. La primera aplica en los casos en que los espacios
de direccionamiento ocupados por múltiples pastillas de memorias, la segunda que para
seleccionar la dirección binaria del tipo de memoria, se hace por medio de compuertas
lógicas, y finalmente la tercera que también utiliza compuertas lógicas pero para
simplificar el número de señales implicadas en la decodificación.

Generalizando, actualmente la computación a logrado grandes avanzases, ya son


capaces de realizar tareas de alta dificultad en corto tiempo que en el pasado eran
impensables. Está forma parte del día a día de las personas tanto en sus casas como
en el trabajo, y está a permitido el fácil desarrollo de trabajos, procesos entre otros. La
tecnología apunta a que un computador pueda tener la capacidad que tiene el humano
de respuesta al análisis, la capacidad de razonamiento y de otras capacidades que
posee el humano.

.
73

REFERENCIAS

 VillaRojas, Marisela. “PRINCIPIOS DE LA COMPUTACION”, artículo de la web


leído el 27 de febrero 2018, recuperado de:
http://www.monografias.com/trabajos10/pricom/pricom.shtml.
 Chacon Cando, Carolina, (2012). “GENERACIONES DE LAS
COMPUTADORAS”. Universidad ECOTEC. leído el 27 de febrero 2018.
Recuperado de:
http://gye.ecomundo.edu.ec/doc_aula_virtual_ecotec/tareas/2012E/COM170/alu
m/2009513136_1314_2012E_COM170_Generaciones_de_las_Computadoras_C
AROLINA_CHACON.docx.
 Carter, Nicholas (2004). “Arquitectura de computadores” 1a. Edición,
McGraw-Hill 2004 Recuperado de:
https://sites.google.com/site/computadorasarquitectura/home/unidad1.
 Camacho, Rene. (2012) “Arquitectura von Neumann y arquitectura Harvard”.
Publicado 9 de abril de 2012. Recuperado de:
http://rcmcomputointegrado.blogspot.com/2012/04/arquitectura-von-
neumann.html
 Blanco, Epifanio. (2011). “40 AÑOS DEL PRIMER MICROPROCESADOR:
INTEL 4004”. Publicado el 10 de noviembre de 2011, recuperado de:
https://portinos.com/tecnologia/40-anos-del-primer-microprocesador-intel-4004-2.
 Piña, Jaliesis. “MICROPROCESADORES INTEL Y MEMORIAS
SEMICONDUCTORAS”. Publicado el Octubre del 2016 en:
https://es.scribd.com/document/349213103/Trabajo-Final-Microprocesadores.
 “Arquitectura de hardware”. Publicado el 6 de Octubre 2015 en:
http://arquitecturaymisconocimientos.blogspot.com/2015/10/jerarqui-de-la-
memoria.html
 Lanchares Dávila, Juan. (2000). “APUNTES DE ESTRUCTURA DE
COMPUTADORES”. Universidad Complutense de Madrid, Departamento de
Arquitectura de Computadores y Automática. Publicado en junio del 2000.
Recuperado de: http://www.dacya.ucm.es/hidalgo/estructura/lanchares.pdf.
 “ARQUITECTURA DE COMPUTADORES”. Leído el 1 de marzo de 2018,
recuperado de: http://www.dia.eui.upm.es/asignatu/arq_com/Paco/4-Memoria.pdf.