INSTITUTO TECNOLOGICO DE LÁZARO CÁRDENAS TRABAJO FINAL: ’INVESTIGACION DE LAS 4 UNIDADES DE LA MATERIA’ INTEGRANTES: ALEJANDRA LUNA JAIMES ANA LIZBETH RICO VARGAS ALEJANDRO ROJAS VARGAS DANIEL BALANZAR ROJAS DANIEL ALEJANDRO CORONA ORTEGA CARRERA: INGENERIA EN SISTEMAS COMPUTACIONALES MATERIA: ARQUITECTURA DE COMPUTADORAS PROFESOR: ALAN JIMENEZ PACHECO AULA: 51T SALON: I6
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
INSTITUTO TECNOLOGICO DE LÁZARO CÁRDENAS
TRABAJO FINAL:
’INVESTIGACION DE LAS 4 UNIDADES DE LA MATERIA’
INTEGRANTES:
ALEJANDRA LUNA JAIMES
ANA LIZBETH RICO VARGAS
ALEJANDRO ROJAS VARGAS
DANIEL BALANZAR ROJAS
DANIEL ALEJANDRO CORONA ORTEGA
CARRERA: INGENERIA EN SISTEMAS COMPUTACIONALES
MATERIA: ARQUITECTURA DE COMPUTADORAS
PROFESOR: ALAN JIMENEZ PACHECO
AULA: 51T SALON: I6
UNIDAD 1
1. EL MICROPROCESADOR (CPU)
El microprocesador (o simplemente procesador) es el circuito integrado central y más
complejo de un sistema informático; a modo de ilustración, se le suele llamar por
analogía el «cerebro» de un ordenador. Es un circuito integrado conformado por
millones de componentes electrónicos. Constituye la unidad central de
procesamiento (CPU) de un PC catalogado como microcomputador.
Es el encargado de ejecutar los programas desde el sistema operativo hasta
las aplicaciones de usuario. Sólo ejecuta instrucciones programadas en lenguaje de
bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como sumar,
restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.
Esta unidad central de procesamiento está constituida, esencialmente, por registros,
una unidad de control, una unidad aritmético lógica (ALU) y una unidad de cálculo en
coma flotante (conocida antiguamente como «co-procesador matemático»).
El microprocesador está conectado generalmente mediante un zócalo específico de
la placa base del ordenador; normalmente para su correcto y estable funcionamiento,
se le incorpora un sistema de refrigeración que consta de un disipador de calor
fabricado en algún material de alta conductividad térmica, como cobre o aluminio, y de
uno o más ventiladores que eliminan el exceso del calor absorbido por el disipador.
Entre el ventilador y la cápsula del microprocesador normalmente se coloca pasta
térmica para mejorar la conductividad del calor. Existen otros métodos más eficaces,
como la refrigeración líquida o el uso de células peltier para refrigeración extrema,
aunque estas técnicas se utilizan casi exclusivamente para aplicaciones especiales,
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 microprocesadora (MPU). En otras palabras, el
microprocesador es una unidad procesadora de datos. En un microprocesador se
puede diferenciar diversas partes:
Encapsulado: es lo que rodea a la oblea de silicio en si, 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 caché: es una memoria ultrarrápida que emplea el procesador para
tener alcance directo a 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 caché interna de primer nivel o L1; es decir, la que está
dentro del micro, encapsulada junto a él. Los micros más modernos (Core i3,Core
i5 ,core i7,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 esta 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 esta diseñado para control del
programador y hay otros que no son diseñados para ser controlados 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.2. Tipos de arquitecturas en la evolución del CPU.
TIPOS DE ARQUITECTURAS.
ARQUITECTURAS CISC
La microprogramación es una característica importante y esencial de casi todas las
arquitecturas CISC.
Como por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.
La microprogramación significa que cada instrucción de máquina es interpretada por
un microprograma localizado en una memoria en el circuito integrado del procesador.
En la década de los sesentas la microprogramación, por sus características, era la
técnica más apropiada para las tecnologías de memorias existentes en esa época y
permitía desarrollar también procesadores con compatibilidad ascendente. En
consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una
serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren
de varios ciclos de reloj (al menos uno por microinstrucción).
ARQUITECTURAS RISC
Buscando aumentar la velocidad del procesamiento se descubrió en base a
experimentos que, con una determinada arquitectura de base, la ejecución de
programas compilados directamente con microinstrucciones y residentes en memoria
externa al circuito integrado resultaban ser mas eficientes, gracias a que el tiempo de
acceso de las memorias se fue decrementando conforme se mejoraba su tecnología
de encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden
implantar por hardware directamente en la CPU, lo cual elimina el micro código y la
necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas, con respecto a la
frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución,
se observó lo siguiente:
- Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución
de un programa.
- Existen secuencias de instrucciones simples que obtienen el mismo resultado que
secuencias complejas predeterminadas, pero requieren tiempos de ejecución más
cortos.
Las características esenciales de una arquitectura RISC pueden resumirse como
sigue:
Estos microprocesadores siguen tomando como base el esquema moderno de
Von Neumann.
Las instrucciones, aunque con otras características, siguen divididas en tres
grupos:
a) Transferencia.
b) Operaciones.
c) Control de flujo.
Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que
pueden implantarse todas las operaciones complejas.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que
tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor
número de acceso a memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un
control implantado por hardware (con un diseño del tipo load-store), casi todas las
instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la
reorganización de la ejecución de instrucciones por medio de un compilador.
Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el
número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que
esta técnica permite que una instrucción pueda empezar a ejecutarse antes de que
haya terminado la anterior.
El hecho de que la estructura simple de un procesador RISC conduzca a una notable
reducción de la superficie del circuito integrado, se aprovecha con frecuencia para
ubicar en el mismo, funciones adicionales:
Unidad para el procesamiento aritmético de punto flotante.
Unidad de administración de memoria.
Funciones de control de memoria cache.
Implantación de un conjunto de registros múltiples.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de
diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre
la aplicación de las más recientes tecnologías de semiconductores. Por ello, los
procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del
sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de
generación en generación son mucho mayores que en los CISC.
Por otra parte, es necesario considerar también que:
La disponibilidad de memorias grandes, baratas y con tiempos de acceso
menores de 60 ns en tecnologías CMOS.
Módulos SRAM (Memoria de acceso aleatorio estática) para memorias cache
con tiempos de acceso menores a los 15 ns.
Tecnologías de encapsulado que permiten realizar más de 120 terminales.
Esto ha hecho cambiar, en la segunda mitad de la década de los ochentas,
esencialmente las condiciones técnicas para arquitecturas RISC.
EVOLUCIÓN DEL CPU.
La CPU es el motor del ordenador, es la cabeza pensante del cuerpo, en definitiva es
el ordenador.
A lo largo de la historia de la Informática han sido muchas las CPU’s que han pasado
por los ordenadores, pero al final, en el tema de los compatibles ha sido la serie X86
la que se ha llevado la palma.
Cuando IBM se planteó la construcción de su Personal Computer, barajó una serie de
CPU’s que cumplían una serie de requisitos, pero fue el 8086 el elegido para el PC.
El CPU 8086 fue uno de los primeros CPU’s de 16 Bits que salió al mercado, y era
muy avanzado a su época. Sus principales características son:
-Ancho de bus de 16 Bits.
-Un bus de direccionamiento de 20 Bits.
-Alimentación única a +5V.
-Dos procesadores independientes en su interior: Una unidad de comunicación con
los buses y una unidad de ejecución de instrucciones.
-Una serie de registros de 16 Bits.
Cuando nos referimos que tiene un bus de direcciones de 20 Bits, nos referimos a
que es capaz de direccionar 220 direcciones, o sea, 1 MB. Ahora nos parece ridículo,
pero en su época era una barbaridad, por lo que parecía que Intel se había “pasado”
en su diseño.
Los primeros ordenadores basados en 8086, todos ellos de IBM, tenían una memoria
de 64KB. Nos puede parecer extraño que pudiendo manejar 1MB sólo lo hiciera con
64KB; debemos tener en cuenta que en aquella época la memoria era muy cara y no
estaba al alcance de todo el mundo, so pena de encarecer el precio final del
ordenador. Además, el software no era tan exigente como el actual.
Los primeros IBM PC tenían incorporado el BASIC, y como sistema de
almacenamiento de masa tenía un casete. Posteriormente, se añadió la
disquetera. Como sistema operativo, se utilizó el famoso CP/M.
La evolución del software hizo que pronto se quedara corta la memoria. Se hicieron
ampliaciones a 128Kbytes, 256Kbytes, 512Kbytes y 640KBytes, que sólo podían
pagar unos pocos.
El aumento de memoria provocó determinadas incompatibilidades, que quedaron
subsanadas con un ingenioso sistema denominado segmentación, que será explicado
más adelante.
De todas formas, los primitivos PC’s eran muy caros. Es por ello por lo que IBM
encargó a Intel un CPU compatible con el 8086 pero de menor precio, de manera que
se diseñó un CPU idéntico al 8086 pero con un bus de datos de sólo 8 Bits,
denominada 8088. Pronto se hizo muy popular, puesto que por su menor precio, el
PC fue más económico.
Las CPU’s 8086 y 8088 funcionaban a una velocidad de reloj de 4,77 MHz, siendo
por tanto de las más rápidas que había en su época. Además, surgió una gran
cantidad de chips que acompañaban a los CPU’spara diversas funciones: generador
de reloj, control de entradas/salidas, buffers, etc.
Sin embargo, los 8086/8088 tenían poca facilidad para el cálculo matemático
complejo, de manera que hubo que diseñar un chip específico para dichas
operaciones. A este chip se le denominó coprocesador matemático y su nombre fue
8087.
Un coprocesador matemático como su nombre indica, es un chip destinado única y
exclusivamente a operaciones matemáticas complejas, tales como senos, cosenos,
potenciación, exponenciación, etc. Este chip va conectado al CPU mediante los
buses de datos y direcciones.
¿Cómo funciona un coprocesador? Supongamos que estamos ejecutando un
programa que necesita de un cálculo matemático complejo. Es necesario que el
programa haya sido creado pensando en la posibilidad de utilizar un
coprocesador. Este punto es imprescindible, ya que el objeto del coprocesador es
asistir a la CPU en operaciones que por sí sola no es capaz de hacer. Si el “copro” no
estuviera, el programa no debe funcionar.
En ese momento, el programa intenta ejecutar la orden compleja, y el CPU
automáticamente deja de atender al programa, dándole paso al coprocesador. Este
ejecuta la instrucción y cuando termina, da paso otra vez al CPU,
desconectándose. Huelga decir que el “copro” pasa al CPU los resultados.
El uso del coprocesador permitió ejecutar programas complejos de diseño y cálculo,
pero con el poco rendimiento del 8086/8088 no se aprovechó bien, de manera que
hubo que pensar una manera de mejorar los PC´s. La solución se llamó 80286.
3. 2. La siguiente generación, el 80286
La verdad es que la serie 8086/8088 tenía poca potencia de cálculo, sobre todo
debido a su baja velocidad de proceso, que ya sabemos era de 4,77 MHz. Es por eso
por lo que Intel siguió investigando en el mundo de los procesadores, presentando en
sociedad al 80186/80188.
Estos CPU’s estaban optimizados en el tiempo de ejecución de las instrucciones, es
decir, que la ejecución de una instrucción determinada ocupaba menos ciclos de reloj,
de forma que el programa se ejecutaba más rápido.
De todas formas, estos microprocesadores apenas se vieron, debido a la aparición de
un CPU que revolucionó el mercado de los ordenadores personales de la época, me
refiero a la auténtica estrella de la casa: El 80286.
El 286 era un CPU pensado por y para la multitarea, debido a una serie de
características internas que lo hacían idóneo para ello. En primer lugar, era más
rápido que sus antecesores, y no sólo en tiempo de ejecución de instrucciones, sino
también en el reloj del sistema. Los 286 comenzaron a verse a velocidades de reloj
de 6, 8, 12, 16 y 20MHz.
Hay que hacer notar que los CPU’s a 16 y 20MHz no los fabricaba Intel: Por aquel
entonces comenzaba a despuntar la casa AMD, la cual ha dado al mundo versiones
muy buenas de los CPU’s de Intel. Debemos recordar al lector que Intel no había
terminado de atar los cabos de las patentes, de manera que cualquiera podía basarse
en sus diseños para crear un CPU.
También entró en escena otro fabricante: HARRIS. Si bien las CPU’s de Harris eran
las más rápidas que jamás se habían visto, (¡20 MHz!), también es cierto que quiso
incorporar ciertas mejoras al 286 que provocaron una serie de problemas de
compatibilidad con el software, de manera que los CPU’s de Harris siempre tuvieron
fama de ser problemáticos.
Las características del 286 eran:
-Bus de datos de 16 Bits.
-Direccionamiento ampliado de 24 Bits.
-Dos modos de trabajo: Real y Protegido.
Con 24Bits de bus de direcciones, el 286 permitía la ampliación de memoria hasta
valores de: 16 MB de RAM.
A pesar de esto, era raro el 286 que tenía más de 4 MB de RAM, pues el precio de la
memoria en aquellos tiempos era muy caro: Llegó a ser de hasta 10.000 Ptas el MB.
Antes hemos dicho que el 286 tenía dos modos de trabajo: Real y Protegido. El modo
real de trabajo es el estándar del 8088/8086, con la limitación de 1 MB de RAM. Este
modo se implantó para tener la compatibilidad con los sistemas antiguos.
El modo Protegido se implantó para la integración del 286 en los sistemas
multiusuario y multiprocesador de aquella época, que eran las primitivas versiones de
OS/2 y UNIX. En este modo se pueden utilizar la máxima memoria de la que se
disponga, mediante la carga de un driver en el CONFIG.SYS de la máquina, ya sea en
MS-DOS ó DR-DOS.
Para conseguir la “multitarea” de los sistemas anteriormente reseñados, al 286 “no
se le puede dejar solo” con la memoria. Es por ello por lo que el 286 incorpora una
especie de “coprocesador” encargado de las colas de instrucciones y el manejo de la
memoria, conceptos estos que provocan una especie de “modo de supervisión” del
trabajo realizado, concepto ya desarrollado por Motorola en su serie 68000.
Sin embargo, con el 286 comenzaron los errores de Intel, ya que había un error en el
modo de trabajo virtual: En determinadas circunstancias, no se podía volver al modo
real, quedando el ordenador colgado. Este fue uno de las motivos que impidió el
avance del DOS. Por aquella época, se estaba preparando la versión 4.0 del MS-
DOS. Esta versión incluía una serie de órdenes que permitían el trabajo en modo
protegido en DOS, lo cual hubiera acabado en posteriores versiones en una especie
de DOS multitarea. Lamentablemente, el fallo del 286 truncó esa esperanza, de
manera que el MS-DOS 4.0 acabó con una serie de funciones y órdenes que no están
documentadas en ningún sitio para que no se usen, que utilizaban las prestaciones
avanzadas del 286.
Esto hubiera supuesto la muerte de la compatibilidad, ya que también se habría
acabado con la barrera de los 640 KB. Aun así, como opinión personal, creo que al
final hubiera sido mejor para todos.
Por supuesto, también apareció el coprocesador de turno, denominado 80287, con
una serie de mejoras en el cálculo y en velocidad de ejecución.
Sin embargo, no se siguió investigando para aumentar las prestaciones del 286, ya
que estaba a punto de aparecer el CPU que marcó la revolución: El 80386.
1.3 ARQUITECTURA MULTINUCLEO
ARQUITECTURA MULTINUCLEO
HISTORIA
Como historia se puede decir que el primer procesador multinúcleo en el mercado fue el IBM Power 4 en el año 2000. Una alternativa a los procesadores multinúcleo son los sistemas multiprocesadores, que consisten en una placa madre que podía soportar desde 2 a más procesadores. El rendimiento es bastante bueno, pero también es bastante caro.
DESCRIPCIÓN
Un microprocesador multinúcleo es aquel que combina dos o más procesadores independientes en un sólo circuito integrado. Un dispositivo doble núcleo contiene solamente dos microprocesadores independientes. En general, los microprocesadores multinúcleo permiten que una computadora trabaje con Multiprocesamiento, es decir procesamiento en simultáneo con dos o más procesadores. Por otro lado, la tecnología de doble núcleo mejora el rendimiento de los entornos de trabajo multitarea y las aplicaciones con múltiples subprocesos. Por ejemplo, permite que aplicaciones fundamentales como antivirus o antiespías se ejecuten al mismo tiempo que aplicaciones empresariales con un impacto mínimo sobre el rendimiento del sistema.
Durante agosto de 2007 comenzaron a aparecer los procesadores de cuádruple núcleo, encabezados por el lanzamiento del Core 2 Quad de Intel. En el caso de las computadoras portátiles.
CLASES DE PROCESADORES MULTINUCLEOS
Antes de comenzar a nombrar los diferentes procesadores multinucleo definieremos lo que es HyperThreading.
HyperThreading: esta tecnología fue creada por Intel, para los procesadores Pentium 4 más avanzados. El Hyperthreading hace que el procesador funcione como si fuera dos procesadores. Esto fue hecho para que tenga la posibilidad de trabajar de forma multihilo (multithread) real, es decir pueda ejecutar muchos hilos simultáneamente.
Un procesador con la tecnología Hyperthreading tiene un 5% más de transistores que el mismo procesador sin esa tecnología.
Clases de procesadores multinucleo INTEL:
PentiPentium D están conformados por dos procesadores Pentium 4 Prescott sin Hyperthreadingum.
Core Duo
Core 2 Duo
Core2Quad
Clases de procesadores multinucleo AMD:
Athlon 64 X2
Opteron X2
Turion X2 (Portatiles)
1.4 MULTIPROCESAMIENTO Y MULTINUCLEO
MULTIPROCESAMIENTO
Multiprocesamiento o multiproceso es tradicionalmente conocido como el uso de múltiples procesos concurrentes en un sistema en lugar de un único proceso en un instante determinado. Como la multitarea que permite a múltiples procesos compartir una única CPU, múltiples CPUs pueden ser utilizados para ejecutar múltiples hilos dentro de un único proceso.
El multiproceso para tareas generales es, a menudo, bastante difícil de conseguir debido a que puede haber varios programas manejando datos internos (conocido como estado o contexto) a la vez. Los programas típicamente se escriben asumiendo que sus datos son incorruptibles. Sin embargo, si otra copia del programa se ejecuta en otro procesador, las dos copias pueden interferir entre sí intentando ambas leer o escribir su estado al mismo tiempo. Para evitar este problema se usa una variedad de técnicas de programación incluyendo semáforos y otras comprobaciones y bloqueos que permiten a una sola copia del programa cambiar de forma exclusiva ciertos valores.
MULTINUCLEO
Los procesadores multi núcleo son chips independientes que contienen dos o más procesadores o núcleos de ejecución distintos en el mismo circuito integrado. Aunque son independientes, su construcción les permite compartir tareas de forma interdependiente.
Y, ¿eso qué significa para el usuario? Cada día que pasa se desarrollan programas que envían múltiples instrucciones que se tienen que procesar simultáneamente.
Estos programas toman miles de millones de decisiones en un segundo, especialmente mientras se ejecutan programas exigentes como reproducción de vídeo de alta definición o programas de ingeniería.
Los procesadores Intel Core 2 Duo incorporan dos núcleos de ejecución en un mismo paquete que ofrece, con el software adecuado, la ejecución totalmente paralela de varios subprocesos. Esto permite que cada núcleo funcione a una frecuencia menor, dividiendo la potencia normalmente asignada a un único núcleo.
El resultado para el usuario no es sólo un procesamiento más rápido. Es… bueno, ¡que tu foto ya está lista! Mientras chateas. Y has imprimido un diseño arquitectónico.
La tecnología de cuatro núcleos consiste en un único procesador que cuenta con cuatro núcleos. Piensa que son cuatro cerebros que están pensando al mismo tiempo pero que pueden trabajar juntos o por separado en una tarea grande, lo que se traduce en unos resultados más rápidos y eficientes.
CONCLUSIÓN
El microprocesador es uno de los logros más sobresalientes del siglo XX. Esas son
palabras atrevidas, y hace un cuarto de siglo tal afirmación habría parecido absurda.
Pero cada año, el microprocesador se acerca más al centro de nuestras vidas,
forjándose un sitio en el núcleo de una máquina tras otra. Su presencia ha comenzado
a cambiar la forma en que percibimos el mundo e incluso a nosotros mismos. 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.
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. Hoy existen
casi 15,000 millones de microchips de alguna clase en uso (el equivalente de
dos computadoras poderosas para cada hombre, mujer y niño del planeta).
No obstante que reconocemos la penetración del microprocesador en nuestras vidas,
ya estamos creciendo indiferentes a la presencia de esos miles de
máquinas diminutas que nos encontramos sin saberlo todos los días. Así que, antes
de que se integre de manera demasiado imperceptible en nuestra diaria existencia, es
el momento de celebrar al microprocesador y la revolución que ha originado, para
apreciar el milagro que es en realidad cada uno de esos chips de silicio diminutos y
meditar acerca de su significado para nuestras vidas y las de nuestros descendientes.
o Lectura destructiva: necesitan reescritura después de una lectura.
o Lectura no destructiva
UBICACIÓN EN EL COMPUTADOR
o Interna (CPU): registros, cache(L1), cache(L2), cache(L3), memoria principal
o Externa (E/S): discos, cintas, etc.
PARÁMETROS DE VELOCIDAD
o Tiempo de acceso
o Tiempo de ciclo
o Ancho de banda(frecuencia de acceso)
UNIDADES DE TRANSFERENCIA
o Palabras
o Bloques
JERARQUÍA DE LAS UNIDADES DE MEMORIA DE UN COMPUTADOR
Las distintas memorias presentes en un computador se organizan de forma jerárquica:
aumenta capacidad
nivel superior aumenta velocidad
Registros de la CPU
Memoria cache(L1,L2,L3)
Memoria principal
Discos magnéticos
Cintas, CD-ROM, etc.
En el nivel i+1 se ubica una copia de aquellos bloques del nivel i que tienen
mayor probabilidad de ser referenciados en el futuro inmediato
nivel i+1
nivel i
Este mecanismo de migración entre niveles es efectivo gracias al principio de localidad
referencial que manifiestan los programas:
espacial
temporal
Se consigue que el mayor número de referencias generado por los programas correspondan a
Informaciones ubicadas en los niveles más altos de la jerarquía. ORGANIZACIÓN INTERNA DE LA MEMORIA PRINCIPAL.
Una memoria principal se compone de un conjunto de celdas básicas dotadas de
una determinada organización. Cada celda soporta un bit de información. Los bits se
agrupan en unidades direccionales denominadas palabras. La longitud de palabra la
determina el número de bits que la componen y constituye la resolución de la memoria
(mínima cantidad de información direccionales). La longitud de palabra suele oscilar
desde 8 bits (byte) hasta 64 bits.
Cada celda básica es un dispositivo físico con dos estados estables (o semi-
estables) con capacidad para cambiar el estado (escritura) y determinar su valor
(lectura). Aunque en los primeros computadores se utilizaron los materiales
magnéticos como soporte de las celdas de memoria principal (memorias de ferritas,
de película delgada, etc.) en la actualidad sólo se utilizan los materiales.
Desde un punto de vista conceptual y con independencia de la tecnología,
consideraremos la celda básica de memoria como un bloque con tres líneas de
entrada (entrada dato, selección y lectura/escritura) y una de salida (salida dato). La
celda sólo opera (lectura ó escritura) cuando la selección está activa.
Selección
Entrada dato Salida dato
Lectura/Escritura
ORGANIZACIÓN INTERNA DE LA MEMORIA.
Las celdas de memoria se disponen en el interior de un chip atendiendo a dos
organizaciones principales: la organización por palabras, también denominada 2D, y la
organización por bits, también denominada 2 ½ D o 3D.
ORGANIZACIÓN 2D
Es la organización más sencilla que responde al esquema mostrado en la siguiente figura:
dirección
2n
Matriz de celdas
Selección
2n * m celdas
n
SC
Control
R/W
m m
datos
datos
entrada
salida
Las celdas forman una matriz de 2n filas y m columnas, siendo 2n el número de
palabras del chip y m el número de bits de cada palabra. Cada fila es seleccionada por la decodificación de una configuración diferente de los n bits de dirección.
Esta organización tiene el inconveniente que el selector (decodificador) de
palabras crece exponencialmente con el tamaño de la memoria. Igual le ocurre al
número de entradas (fan-in) de las puertas OR que generan la salida de datos.
Ejemplo
En la siguiente figura se muestra la organización 2D de un chip de memoria con 4 palabras de 4
bits:
De0 De1 De2 De3
R/W
A0 DEC
A1
Ds0 Ds1 Ds2 Ds3
ORGANIZACIÓN 3D
En lugar de una única selección (decodificador) de 2n salidas en esta organización se utilizan dos decodificadores de 2n/2 operando en coincidencia. Las líneas de dirección se reparten entre los dos decodificadores. Para una configuración dada de las líneas de dirección se selecciona un único bit de la matriz. Por ello se la denomina también organización por bits.
Selección X
2n/2
n/2
n
Matriz de celdas
2n/2
Selecci
ón
2n * m celdas
dirección
Y
n/2
2.2. ACCESO A LOS DATOS Y TEMPORIZACIÓN
TEMPORIZACIÓN
RELOJ DEL SISTEMA
El reloj de una computadora se utiliza para dos funciones principales:
1. Para sincronizar las diversas operaciones que realizan los diferentes
subcomponentes del sistema informático.
2. Para saber la hora.
El reloj físicamente es un circuito integrado que emite una cantidad de pulsos por
segundo, de manera constante. Al número de pulsos que emite el reloj cada segundo
se llama Frecuencia del Reloj.
La frecuencia del reloj se mide en Ciclos por Segundo, también llamados Hertzios,
siendo cada ciclo un pulso del reloj. Como la frecuencia del reloj es de varios millones
de pulsos por segundo se expresa habitualmente en Megaherzios.
El reloj marca la velocidad de proceso de la computadora generando una señal
periódica que es utilizada por todos los componentes del sistema informático para
sincronizar y coordinar las actividades operativas, evitando el que un componente
maneje unos datos incorrectamente o que la velocidad de transmisión de datos entre
dos componentes sea distinta.
Cuanto mayor sea la frecuencia del reloj mayor será la velocidad de proceso de la
computadora y podrá realizar mayor cantidad de instrucciones elementales en un
segundo.
El rango de frecuencia de los microprocesadores oscila entre los 4,77 megaherzios
del primer PC diseñado por IBM y los 200 megaherzios de las actuales computadoras
En máquinas de arquitectura Von Neumann la mayoría de las operaciones son
serializadas, esto significa que la computadora ejecuta los comandos en un orden
preestablecido. Para asegurarnos de que todas las operaciones ocurren justo en el
tiempo adecuado, las máquinas 80x86 utilizan una señal alternante llamada el reloj del
sistema.
En su forma básica, el reloj del sistema maneja toda la sincronización de un
sistema de cómputo. El reloj del sistema es una señal eléctrica en el bus de control
que alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la cual
el reloj del sistema alterna entre cero y uno es llamada frecuencia del reloj de sistema.
El timepo que toma para cambiar de cero a uno y luego volver a cero se le llama
periodo de reloj, también llamado ciclo de reloj. La frecuencia del reloj es simplemente
el número de ciclos de reloj que ocurren en un segundo, en sistemas actuales, éste
valor excede los 200 ciclos por segundo, siendo ya común frecuencias del orden de
los 366 Mhz. (MegaHertz, que equivale a un millón de ciclos por segundo). Observe
que el periodo de reloj es el valor inverso de la frecuencia, por lo tanto, para un
sistema de 200 Mhz el periodo es igual a 5 nanosegundos. Para asegurar la
sincronización, el CPU inicia una operación ya sea en el flanco ascendente (cuando la
señal cambia de cero a uno) ó en el descendente (cuando la señal cambia de uno a
cero). Como todas las operaciones de un CPU están sincronizadas en torno a su reloj,
un CPU no puede ejecutar operaciones más rápido que la velocidad del reloj.
ACCESO A MEMORIA Y EL RELOJ DEL SISTEMA
El acceso a memoria es probablemente la actividad más común de un CPU, se
trata en definitiva de una operación sincronizada al reloj del sistema, esto es, la lectura
o escritura no puede ser más rápida que un ciclo de reloj, de hecho, en muchos
sistemas 80x86 el acceso a memoria toma varios ciclos de reloj. El tiempo de acceso
a memoria es el número de ciclos de reloj que el sistema necesita para acceder a una
ubicación de memoria, este es un valor importante ya que a mayor número de ciclos
menor desempeño. El tiempo de acceso a memoria es la cantidad de tiempo que
transcurre desde que se solicita una operación (sea de lectura ó escritura) y el tiempo
en que la memoria completa dicha operación. En procesadores de 5 Mhz (80x88,
80x86) el tiempo de acceso a memoria es de aproximadamente 800 ns.
(nanosegundos), en cambio, un procesador de 50 Mhz (80x486) el tiempo es de
aproximadamente 20 ns. El tiempo de acceso a memoria en el procesador 80x486 es
casi 40 veces más rápido que en el caso del procesador 80x86 porque éste último
consume más ciclos de reloj para el acceso a memoria además del incremento en la
velocidad de reloj.
Una memoria cache es un dispositivo sin estados de espera que se encuentra
construida como parte integral del CPU, físicamente se encuentra entre el CPU y los
módulos de memoria RAM, su función es evitar la generación de estados de espera
por parte de los módulos de memoria RAM y así aprovechar al máximo el rendimiento
esperado por el CPU, sin embargo la memoria cache no es un dispositivo perfecto
pues hay ocasiones en que no es posible colocar en memoria cache los datos que
requiere el programa para ejecutarse forzando al sistema a leer dichos datos
directamente de los módulos de memoria RAM y por lo tanto generando estados de
espera, cuando ocurre éste fenómeno se le llama pérdida cache (cache miss), cuando
tienen éxito las operaciones en memoria cache se le llama éxito cache (cache hit). Por
lo general el radio entre éxito y pérdida en memoria cache está entre 85 y 90%. Este
rendimiento disminuye al aumentar la cantidad de memoria cache y por esta razón la
memoria cache es relativamente pequeña, sus valores de almacenamiento oscilan
entre 256 y 512 Kb.
INTERRUPCIONES
Transferencia de datos por interrupción.
Las interrupciones alteran la secuencia normal de un programa para permitir una operación de E/S. Son particularmente útiles con periféricos lentos o en aplicaciones donde la ocurrencia de datos a ser transferidos a la computadora es impredecible como en enlaces de comunicación.
La principal característica es que : El intercambio de datos es iniciado por los dispositivos periféricos.
La implementación de tal sistema consiste en reemplazar el lazo de espera para la transferencia asíncrona con un lazo equivalente en hardware para probar para una interrupción externa.
Durante cada ciclo de máquina el microprocesador checa la presencia de una señal de interrupción.
Para realizar una transferencia por interrupción simple, ocurren generalmente los siguientes pasos:
1. Un dispositivo periférico solicita una interrupción.
2. El microprocesador emite un conocimiento de la interrupción.
3. Se guarda el PC y el programa brinca a una localidad de la memoria que contiene una rutina para procesar la interrupción.
4. El contenido de los registros internos (de trabajo y estatus) son guardados y la transferencia de datos es ejecutada bajo control de software.
La ejecución del programa es regresada a la secuencia pre- interrumpida del programa.
Hay dos métodos de implementar la secuencia antes mencionada.
e. Interrupciones sondeados (polling)
f. Interrupciones vectorizadas
El siguiente diagrama muestra la forma de dar servicio a una interrupción.
El microprocesador Z80 posee un complejo y poderoso sistema de interrupciones, las cuales le sirven para comunicarse con periféricos externos, que pueden ser o no compatibles con el microprocesador Z80.
El microprocesador cuenta con dos entradas para interrupciones externas ; la terminal INT (pin 16) y la NMI (pin 17), de las cuales INT es activa a nivel bajo y NMI en la transición de 1 a 0.
Las líneas de interrupción del microprocesador (INT, NMI) permiten a un dispositivo externo interrumpir el flujo de un programa en el microprocesador, forzando el programa a pasar una localidad especifica de memoria.
Una interrupción es un evento asíncrono ya que puede ocurrir en cualquier momento, y por lo general suspenderá la ejecución del programa en curso.
Hay tres mecanismos de interrupción en el Z80.
1. La solicitud de los buses BUSREQ
2. Interrupción no enmascarable NMI
3. Interrupción usual.
Las interrupciones pueden ser enmascarables y no enmascarables.
Una interrupción enmascarable tiene la característica que si el microprocesador ejecuta una instrucción de deshabilitar interrupción,(DI), cualquier señal de control en la línea de interrupción será ignorado o enmascarada (masked out). El procesador se mantendrá sin hacer caso a la línea de la interrupción enmascarable (EI) sea ejecutada.
Una interrupción no enmascarable, por otro lado no puede ser enmascarable bajo control de programa.
Se dice también que hay interrupciones vectorizadas o interrupciones de localidad fija.
Una interrupción de localidad fija, siempre hará que el programa brinque a una localidad de memoria específica, invariable.
Las interrupciones vectorizadas, puede hacer que el procesador brinque a cualquier número de diferentes localidades dependiendo de la señal en un puerto de interrupción que es interrogado por el procesador siguiendo una interrupción.
La interrupción no enmascarable del Z80 NMI no puede ser vectorizada.
Un NMI hace al procesador brincar a la localidad 0066h en la memoria donde debe empezar la rutina de servicio de la interrupción. La rutina de servicio de la interrupción termina con una instrucción de return, el cual fuerza al microprocesador a regresar exactamente donde estaba el programa principal en el momento de la interrupción.
INTERRUPCIONES ENMASCARABLES
Las interrupciones ordinarias INT también pueden ser “enmascaradas” selectivamente por el programador. Haciendo uso de los flip flops IFF1 y IFF2 a “1” las interrupciones son autorizadas. Poniéndolas a cero (mascarándolos) se prevendrá la detección de INT. La instrucción EI es usada para habilitarlas y DI para deshabilitarlas.
IFF1 y IFF” no son “puestos” en “1” simultáneamente durante la ejecución de las instrucciones EI y DI, las interrupciones son deshabilitadas para prevenir cualquier pérdida de información.
Para que el microprocesador acepte esta interrupción, deben de cumplirse las siguientes condiciones:
1. Que las interrupciones hayan sido habilitadas previamente.
2. Que la entrada Busreq no esté activa.
3. Que la entrada NMI no esté activa.
En la operación normal del Z80 examina la entrada INT en la subida de reloj en el último estado del último ciclo de máquina de cada instrucción y después en cada transferencia o comparación de bloques o entrada y salida de bloques.
Cuando la entrada está en 0 lógico y se cumplen todas las condiciones, el microprocesador inicia un ciclo especial de respuesta a la interrupción (interrupt acknowledge) para avisar al dispositivo que su interrupción fue aceptada.
Durante este ciclo de máquina se activa la señal M1, pero para distinguirlo de un ciclo normal de lectura de código de operación, la señal IOREQ se activa en lugar de la señal Mreq y la señal RD permanece inactiva. IOREQ se utiliza para indicar al dispositivo que puede colocar una palabra de 8 bits en el bus de datos. Este byte le proporciona al microprocesador información de la dirección en que se encuentra la
subrutina de servicio a donde se transferirá el control. Esta información varía dependiendo de la interrupción. Además, durante la interrupción el contenido del PC no se altera y permanece con el último valor que tenía antes de la interrupción.
El Z-80 puede responder a 3 formas de interrupciones enmascarables, dependiendo de cual de los modos de interrupción ha sido seleccionado por el programa del microprocesador.
MODO 0 : En este modo el dispositivo que provoca la interrupción coloca una palabra de 8 bits en bus de datos en lugar de que lo haga la memoria. Esa instrucción es leída por el Z-80 en el ciclo de respuesta a una interrupción y ejecutada inmediatamente después. Normalmente se emplea una instrucción RST n (restart) con lo cual se genera una llamada a subrutina que transfiere el control del programa a una de las 8 direcciones posibles colocadas en los primeros bytes de memoria. Las 8 posibilidades de RST son :
Código (bits 5, 4, 3) Dirección
0 0 0 00h
0 0 1 08h
0 1 0 10h
0 1 1 18h
1 0 0 20h
1 0 1 28h
1 1 0 30h
1 1 1 38h
MODO 1 : Es un modo de interrupción no vectorizada. Una interrupción en la línea INT en este modo, hará brincar a el procesador a una localidad fija ; la 0038h.
MODO 2 : Es un modo de interrupción vectorizada que se habilita con la instrucción IM2. En este modo, la dirección de la rutina de servicio de interrupción es almacenado en dos bytes del espacio de memoria.
El vector de interrupción es una dirección proporcionada por el dispositivo periférico que generó la interrupción y es usado como un apuntador a la dirección de inicio de la subrutina de servicio de interrupción. Cada periférico proporciona 7 bits de la dirección el cual es agregado a la dirección de 8 bits que se encuentra en el registro I. El bit menos significativo del vector de interrupción debe ser cero. El PC se carga automáticamente al STACK ya que el PC es recargado con el contenido de la entrada
de la tabla de interrupciones correspondiente al vector proporcionado por el dispositivo.
LA INTERRUPCION NO ENMASCARABLE.
Este tipo de interrupciones no puede ser inhibida por el programador. Es por esto que se dice que es no enmascarable. Siempre será aceptada por el Z80 hasta que finalice la instrucción en curso, asumiendo que no se ha recibido una requisición de buses (BUSREQ). Si un NMI se recibe durante un BUSREQ se hará 1 el flip flop interno NMI, y será procesador al finalizar el BUSREQ.
El NMI producirá una colocación push automática del contador del programa en el STACK, y brinca a la dirección 0066h : Los dos bytes que representan la dirección 0066h será instalado en el contador de programa. Estos representan la dirección de inicio de la rutina de manejo para el NMI.
Este mecanismo fue diseñado así por rapidez, ya que es usado en casos de emergencia. Por esto, no ofrece la flexibilidad del modo de interrupción enmascarable.
Nótese también que la rutina de interrupción debe haber sido cargada con anterioridad de usar el NMI en la dirección 0066h.
La secuencia de eventos es la siguiente :
PC STACK
IFF1 IFF2
0 IFF1
BRINCA A 0066H
Nótese que el estado del flip flop de interrupción enmascarable es pasado automáticamente al flip flop al flip flop de interrupción #2 IFF2. Luego IFF1 se hace cero para evitar cualquier interrupción posterior. Este comportamiento es importante para evitar que se pierdan interrupciones demás baja prioridad (INT) y simplifica el hardware externo : El estado de la interrupción pendiente INT es conservado internamente por el Z80.
La interrupción NMI es normalmente usado para eventos de alta prioridad tal como reloj de tiempo real o una falla de energía.
El regreso de una interrupción NMI es realizado por la instrucción especial ; RETN : “return from no maskable interrupt”. El contenido de IFF1 es regresado de IFF2 y el contenido de el PC es recargado con la localidad en el STACK. Ya que IFF1 ha sido “reseteado” durante la ejecución del NMI, no se pudo aceptar ningún INT durante el NMI. No hay pérdida de información. Después de que el manejador de interrupción termina, la secuencia es :
IFF2 IFF1
STACK PC
2.3. TIPOS DE MEMORIAS.
Inicialmente podemos clasificar la memoria en tres tipos:
RAM.
ROM.
MEMORIA VIRTUAL.
MEMORIA RAM
Es la memoria de acceso aleatorio (Random Access Memory). Se llama de acceso
aleatorio porque el procesador accede a la información que está en la memoria en
cualquier punto sin tener que acceder a la información anterior y posterior.
Es la memoria que se actualiza constantemente mientras el ordenador está en uso
y que pierde sus datos cuando el ordenador se apaga.
La memoria RAM se clasifica en:
DRAM
SRAM
TAG RAM.
DRAM
Es la memoria de acceso aleatorio dinámica
(Dynamic Random Access Memory). Está organizada en direcciones de memoria
(Addresses) que son reemplazadas muchas veces por segundo.
Es la memoria de trabajo, por lo que a mayor cantidad de memoria, más datos se
pueden tener en ella y más aplicaciones pueden estar funcionando simultáneamente,
y por supuesto a mayor cantidad mayor velocidad de proceso, pues los programas no
necesitan buscar los datos continuamente en el disco duro, el cual es muchísimo más
lento.
La memoria RAM dinámica puede ser de diferentes tipos de acuerdo con su
tecnología de fabricación: FPM, EDO, SDRAM, BEDO y más recientemente RDRAM.
Además, cualquiera de los tipos anteriores puede presentarse en módulos de
memoria SIN PARIDAD, CON PARIDAD o de tipo ECC.
Los módulos de memoria CON PARIDAD (parity) se distinguen porque tienen un
número impar de chips. El chip que hace el número par no es de memoria, sino que
es el chip de paridad, que se utiliza para comprobar el flujo de datos y eliminar los
errores que se pueden producir. Este tipo de módulos se usan especialmente en
ordenadores que funcionan como servidores, por la necesidad que existe de
mantener la integridad de los datos t porque el precio de éstos módulos es muy
superior a los módulos sin paridad, por que sería muy costoso para usuarios
domésticos.
Memoria ROM
Es una memoria de sólo lectura (Read Only Memory) en la que no se puede escribir
como la RAM, y que guarda la información almacenada en ella incluso después de
apagar el equipo. También se puede acceder a este tipo de memoria de forma
aleatoria.
La configuración de la BIOS de la placa base, así como la configuración de los
distintos dispositivos instalados en el equipo se guarda en memoria ROM. A la
información de los dispositivos escrita en la memoria ROM de cada uno de ellos se
llama FIRMWARE.
La ROM estándar se escribe durante el proceso de fabricación de un componente y
nunca puede cambiarse. Sin embargo existen algunos tipos de memoria ROM que
pueden cambiarse:
EPROM:(Erasable Programmable Read-Only Memory) se borra exponiendo la
ROM a una luz ultravioleta. La usan los fabricantes para poder correjir errores
de última hora en la ROM. El usuario no puede modificarla.
EEPROM:(Electrically Erasable Programmable Read-Only Memory) se borra y
se puede reprogramar por medio de una carga eléctrica, pero sólo se puede
cambiar un byte de información de cada vez.
FLASH MEMORY:es un tipo de EEPROM que se puede reprogramar en
bloques. S usa en la BIOS de los equipos, y de ahí que se llamen FLASH
BIOS.
MEMORIA VIRTUAL
Es una manera de reducir el acceso constante a memoria por parte del procesador.
Cuando se está ejecutando un programa, y especialmente si se tienen varias
aplicaciones abiertas, el ordenador tiene que cargar en memoria RAM los valores e
instrucciones de dicho/s programa/s.
CONCLUSION
Lo citado anteriormente a exigido a los fabricantes de memorias, la constante
actualización de las mismas, superándose una y otra vez en velocidad, capacidad y
almacenamiento.
Actualmente el mercado está tomando vigor nuevamente, debido a que han aparecido
procesadores muy rápidos, los cuales trabajan a velocidades de 1 GHz.
Las memorias de definen por su similaridad con almacenes internos en el ordenador.
El término memoria identifica el almacenaje de datos que viene en forma chips, y el
almacenaje de la palabra se utiliza para la memoria que existe en las cintas o los
discos. Por otra parte, el término memoria se utiliza generalmente
como taquigrafía para la memoria física, que refiere a los chips reales capaces de
llevar a cabo datos. Algunos ordenadores también utilizan la memoria virtual, que
amplía memoria física sobre un disco duro.
Cada ordenador viene con cierta cantidad de memoria física, referida generalmente
como memoria principal o RAM. Se puede pensar en memoria principal como arreglo
de celdas de memoria, cada una de los cuales puede llevar a cabo un solo byte de
información.
Un ordenador que tiene 1 megabyte de la memoria, por lo tanto, puede llevar a cabo
cerca de 1 millón de bytes (o caracteres) de la información.
La memoria funciona de manera similar a un juego de cubículos divididos usados para
clasificar la correspondencia en la oficina postal. A cada bit de datos se asigna una
dirección. Cada dirección corresponde a un cubículo (ubicación) en la memoria.
Para guardar información en la memoria, el procesador primero envía la dirección
para los datos. El controlador de memoria encuentra el cubículo adecuado y luego el
procesador envía los datos a escribir.
Para leer la memoria, el procesador envía la dirección para los datos requeridos. De
inmediato, el controlador de la memoria encuentra los bits de información contenidos
en el cubículo adecuado y los envía al bus de datos del procesador.