Unidad 1 arquitectura
Upcoming SlideShare
Loading in...5
×
 

Unidad 1 arquitectura

on

  • 1,504 views

 

Statistics

Views

Total Views
1,504
Views on SlideShare
1,504
Embed Views
0

Actions

Likes
0
Downloads
77
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Unidad 1 arquitectura Unidad 1 arquitectura Document Transcript

  • Apuntes de arquitectura de computadorasUnidad 1 Modelo de arquitecturas de cómputo.1.1 Modelos de arquitecturas de cómputo.1.1.1 Arquitecturas Clásicas.Estas arquitecturas se desarrollaron en las primeras computadoras electromecánicas y de tubos devacío. Aun son usadas en procesadores empotrados de gama baja y son la base de la mayoría de lasarquitecturas modernasArquitectura Mauchly-Eckert (Von Newman)Esta arquitectura fue utilizada en la computadora ENIAC. Consiste en una unidad central de procesoque se comunica a través de un solo bus con un banco de memoria en donde se almacenan tanto loscódigos de instrucción del programa, como los datos que serán procesados por este.Esta arquitectura es la más empleada en la actualidad ya, que es muy versátil. Ejemplo de estaversatilidad es el funcionamiento de los compiladores, los cuales son programas que toman comoentrada un archivo de texto conteniendo código fuente y generan como datos de salida, el códigomaquina que corresponde a dicho código fuente (Son programas que crean o modifican otrosprogramas). Estos datos de salida pueden ejecutarse como un programa posteriormente ya que se usa lamisma memoria para datos y para el código del programa. Bus principal Memoria Principal Procesador Almacena Unidad de el programa y Control los datos ALU Registros Entrada y salida Figura 1.1.1.2 Diagrama a bloques de la arquitectura Von Newman.La principal desventaja de esta arquitectura, es que el bus de datos y direcciones único se convierte enun cuello de botella por el cual debe pasar toda la información que se lee de o se escribe a la memoria,obligando a que todos los accesos a esta sean secuenciales. Esto limita el grado de paralelismo(acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeño de la computadora.Este efecto se conoce como el cuello de botella de Von NewmanEn esta arquitectura apareció por primera vez el concepto de programa almacenado. Anteriormente la
  • secuencia de las operaciones era dictada por el alambrado de la unidad de control, e cambiarlaimplicaba un proceso de recableado laborioso, lento(hasta tres semanas) y propenso a errores. En estaarquitectura se asigna un código numérico a cada instrucción. Dichos códigos se almacenan en lamisma unidad de memoria que los datos que van a procesarse, para ser ejecutados en el orden en que seencuentran almacenados en memoria. Esto permite cambiar rápidamente la aplicación de lacomputadora y dio origen a las computadoras de propósito generalMas a detalle, el procesador se subdivide en una unidad de control (C.U.), una unidad lógica aritmética(A.L.U.) y una serie de registros. Los registros sirven para almacenar internamente datos y estado delprocesador. La unidad aritmética lógica proporciona la capacidad de realizar operaciones aritméticas ylógicas. La unidad de control genera las señales de control para leer el código de las instrucciones,decodificarlas y hacer que la ALU las ejecute.Arquitectura HarvardEsta arquitectura surgió en la universidad del mismo nombre, poco después de que la arquitectura VonNewman apareciera en la universidad de Princeton. Al igual que en la arquitectura Von Newman, elprograma se almacena como un código numérico en la memoria, pero no en el mismo espacio dememoria ni en el mismo formato que los datos. Por ejemplo, se pueden almacenar las instrucciones endoce bits en la memoria de programa, mientras los datos de almacenan en 8 bits en una memoria aparte. Bus de Bus de programa Procesador datos Memoria de datos Unidad de Memoria de Control programa ALU Registros Entrada y salida Figura 1.1.1.2 Diagrama a bloques de la arquitectura HarvardEl hecho de tener un bus separado para el programa y otro para los datos permite que se lea el códigode operación de una instrucción, al mismo tiempo se lee de la memoria de datos los operados de lainstrucción previa. Así se evita el problema del cuello de botella de Von Newman y se obtiene un mejordesempeño.En la actualidad la mayoría de los procesadores modernos se conectan al exterior de manera similar a ala arquitectura Von Newman, con un banco de memoria masivo único, pero internamente incluyenvarios niveles de memoria cache con bancos separados en cache de programa y cache de datos,buscando un mejor desempeño sin perder la versatilidad.1.1.2 Arquitecturas Segmentadas.Las arquitecturas segmentadas o con segmentación del cauce buscan mejorar el desempeño realizandoparalelamente varias etapas del ciclo de instrucción al mismo tiempo. El procesador se divide en varias
  • unidades funcionales independientes y se dividen entre ellas el procesamiento de las instrucciones. Paracomprender mejor esto, supongamos que un procesador simple tiene un ciclo de instrucción sencilloconsistente solamente en una etapa de búsqueda del código de instrucción y en otra etapa de ejecuciónde la instrucción. En un procesador sin segmentación del cauce, las dos etapas se realizarían de manerasecuencial para cada una de la instrucciones, como lo muestra la siguiente figura. B1 E1 B2 E2 B3 E3 Figura 1.1.2.1 Búsqueda y ejecución en secuencia de tres instrucciones en un procesador sin segmentación del causeEn un procesador con segmentación del cause, cada una de estas etapas se asigna a una unidadfuncional diferente, la búsqueda a la unidad de búsqueda y la ejecución a la unidad de ejecución. Estasunidades pueden trabajar en forma paralela en instrucciones diferentes. Estas unidades se comunicanpor medio de una cola de instrucciones en la que la unidad de búsqueda coloca los códigos deinstrucción que leyó para que la unidad de ejecución los tome de la cola y los ejecute. Esta cola separece a un tubo donde las instrucciones entran por un extremo y salen por el otro. De esta analogíaproviene el nombre en ingles: Pipelining o entubamiento. En general se divide al procesadorsegmentado en una unidad independiente por cada etapa del ciclo de instrucción. Unidad de Unidad de Cola de Instrucciones Búsqueda ejecución Figura 1.1.2.3 Comunicación entre las unidades en un procesador con segmentación de cauce.Completando el ejemplo anterior, en un procesador con segmentación, la unidad de búsquedacomenzaría buscando el código de la primera instrucción en el primer ciclo de reloj. Durante elsegundo ciclo de reloj, la unidad de búsqueda obtendría el código de la instrucción 2, mientras que launidad de ejecución ejecuta la instrucción 1 y así sucesivamente. La siguiente figura muestra esteproceso. B1 B2 B3 B3 Unidad de búsqueda E1 E2 E3 Unidad de ejecución Figura 1.1.2.3 Búsqueda y ejecución en secuencia de tres instrucciones en un
  • procesador con segmentación del causeEn este esquema sigue tomando el mismo numero de ciclos de reloj (el mismo tiempo), pero como setrabaja en varias instrucciones al mismo tiempo, el número promedio de instrucciones por segundo semultiplica. En teoría, el rendimiento de un procesador segmentado mejora con respecto a uno nosegmentado en un factor igual al numero de etapas independientes. Sin embargo, la mejora en elrendimiento no es proporcional al numero de segmentos en el cauce debido a que cada etapa no toma elmismo tiempo en realizarse, además de que se puede presentar competencia por el uso de algunosrecursos como la memoria principal. Otra razón por la que las ventajas de este esquema se pierden escuando se encuentra un salto en el programa y todas las instrucciones que ya se buscaron y seencuentran en la cola, deben descartarse y comenzar a buscar las instrucciones desde cero a partir de ladirección a la que se salto. Esto reduce el desempeño del procesador y aún se investigan maneras depredecir los saltos para evitar este problema. Espera Espera Búsqueda Ejecución Figura 1.1.2.4 Consecuencias de la competencia por un recurso1.1.3 Arquitecturas de multiprocesamiento.Cuando se desea incrementar el desempeño más aya de lo que permite la técnica de segmentación delcauce (limite teórico de una instrucción por ciclo de reloj), se requiere utilizar más de un procesadorpara la ejecución del programa de aplicación.Las CPU de multiprocesamiento se clasifican de la siguiente manera: ● SISO – (Single Instruction, Single Operand ) computadoras independientes ● SIMO – (Single Instruction, Multiple Operand ) procesadores vectoriales ● MISO – (Multiple Instruction, Single Operand ) No implementado ● MIMO – (Multiple Instruction, Multiple Operand ) sistemas SMP, ClustersProcesadores vectoriales – Son computadoras pensadas para aplicar un mismo algoritmo numérico auna serie de datos matriciales, en especial en la simulación de sistemas físicos complejos, tales comosimuladores para predecir el clima, explosiones atómicas, reacciones químicas complejas, etc., dondelos datos son representados como grandes números de datos en forma matricial sobr los que se deben seaplicar el mismo algoritmo numérico.En los sistemas SMP (Simetric Multiprocesesors), varios procesadores comparten la misma memoriaprincipal y periféricos de I/O, Normalmente conectados por un bus común. Se conocen comosimétricos, ya que ningún procesador toma el papel de maestro y los demás de esclavos, sino que todostienen derechos similares en cuanto al acceso a la memoria y periféricos y ambos son administrados porel sistema operativo.
  • Los Clusters son conjuntos de computadoras independientes conectadas en una red de área local o porun bis de interconexión y que trabajan cooperativamente para resolver un problema. Es clave en sufuncionamiento contar con un sistema operativo y programas de aplicación capaces de distribuir eltrabajo entre las computadoras de la red.1.2 Análisis de los componentes.1.2.1 CPU.1.2.1.1 Arquitecturas.Ademas de las arquitecturas clásicas mencionadas anteriormente, en la actualidad han aparecidoarquitecturas híbridas entre la Von Newman y la Harvard, buscando conservar la flexibilidad, peromejorando el rendimiento.El cambio más importante de los últimos años en diseño de las computadoras de los últimos años se diodurante los años 1980, con la aparición de la corriente de diseño conocida como computadoras deconjunto reducido de instrucciones (RISC, por sus siglas en ingles). Esta escuela pretende aplicar unenfoque totalmente distinto al tradicional hasta entonces, que paso a conocerse como computadoras deconjunto complejo de instrucciones (CISC) para diferenciarla de la nueva tendencia.La tendencia tradional, representada por las arquitecturas CISC (Complex Instruction Set Computers)se caracterizan por tener un número amplio de instrucciones y modos de direccionamiento. Seimplementan instrucciones especiales que realizan funciones complejas, de manera que unprogramador puede encontrar con seguridad, una instrucción especial que realiza en hardware lafunción que el necesita. El número de registros del CPU es limitado, ya que las compuertas lógicas delcircuito integrado se emplean para implementar las secuencias de control de estas instruccionesespeciales.Al investigar las tendencias en la escritura de software científico y comercial al inicio de los 80, ya sepudo observar que en general ya no se programaba mucho en ensamblador, sino en lenguajes de altonivel, tales como C. Los compiladores de lenguajes de alto nivel no hacían uso de las instruccionesespeciales implementadas en los procesadores CISC, por lo que resultaba un desperdicio de recursosemplear las compuertas del circuito de esta forma. Por lo anterior, se decidió que era mejor emplearestos recursos en hacer que las pocas instrucciones que realmente empleaban los compiladores seejecutaran lo más rápidamente posible. Así surgió la escuela de diseño RISC (Reduced Instruction SetComputers) donde solo se cuenta con unas pocas instrucciones y modos de direccionamiento, pero sebusca implementarlos de forma muy eficiente y que todas las instrucciones trabajen con todos losmodos de direccionamiento. Ademas, se observo que una de las tareas que tomaban más tiempo enejecutarse en lenguajes de alto nivel, era el pasar los parámetros a las subrutinas a través de la pila.Como la forma más rápida de hacer este paso es por medio de registros del CPU, se busco dotarlo conun amplio número de registros, a través de los cuales se pueden pasar dichos parámetros.1.2.1.2 Tipos.Los CPUs modernos pueden clasificarse de acuerdo a varias características, tales como: el tamaño delALU o del Bus de conexión al exterior (8, 16, 32, 64 bits),si tienen cauce segmentado o nosegmentado, si con tipo CISC o RISC, Von Newan o Harvard y si solo tienen instrucciones enteras oimplementan también instrucciones de punto flotante
  • 1.2.1.3 Características.Las características más importantes a considerar al escoger un CPU para usarlo en una aplicación, son:•Modelo del programador (Conjunto de registros que el programador puede utilizar), forman el modelomental del CPU que el programador utiliza al programar en ensamblador.•Conjunto de instrucciones que puede ejecutar el CPU•Modos de direccionamiento que pueden usarse para obtener los operandos de las instrucciones.•Ciclo de instrucción (el conjunto de pasos que realiza el CPU para procesar cada instrucción)•Buses de interconexión, usados para que el CPU lea y escriba a la memoria y a los dispositivos deentrada y salida.1.2.1.4 Funcionamiento.Debido a la gran variedad de CPU disponibles comercialmente, se explicara el funcionamiento de ununidad central de proceso imaginaria muy simple, pero que resume el funcionamiento básico de lamayoría de los CPUs. Este CPU es similar a las primeras computadoras existentes en los años 1950s.Esta computadora contara con una memoria de 4096 palabras de 16 bits cada una. Esto corresponde aun bus de direcciones de 12 bits y un bus de datos de 16 bits). En cada localidad de memoria se podráalmacenar un entero de 16 bits o el código de una instrucción, también de 16 bits.Todos los CPU tienen como función principal la ejecución de un programa acorde a la aplicación delmismo. Un programa es un conjunto de instrucciones almacenadas de acuerdo al orden en que debenejecutarse. Por lo tanto, toda computadora debe ser capaz de procesar las instrucciones de su programaen un ciclo de instrucción, consistente en un número de etapas que varia con cada CPU, pero quetradicionalmente han sido tres:1-Búsqueda del código de Instrucción. Esta consiste en leer de la memoria cual será la siguienteinstrucción a ejecutar, la cual esta almacenada en forma de un código numérico que indica cual detodas las operaciones que puede realizar el CPU sera la siguiente y con que operandos se ejecutara.2- Decodificación. Consiste en tomar el código numérico e identificar a cual de las operaciones quepuede realizar el CPU corresponde dicho código. El proceso contrario, la codificación, consiste enconociendo la instrucción, determinar el número que la va a representar. Esta etapa usualmente serealiza con un decodificador binario.3- Ejecución. En esta etapa se lleva a cabo la operación sobre los datos que se vallan a procesar. Engeneral, la unidad de control (CU) genera las señales de control necesarias para llevar los datos a lasentradas de la Unidad Aritmética Lógica, la cual efectuará las operaciones aritméticas y lógicas.Posteriormente, la unidad de control generara las señales de control necesarias para transferir la salidade la Unidad Aritmética Lógica al registro donde serán almacenados los resultados para su usoposterior.
  • Búsqueda de la Instrucción Decodificación de la Instrucción Ejecución de la Instrucción Figura 1.2.1.4.1 Ciclo de instrucciónEs importante recordar que cada instrucción del programa se almacena en memoria como un númerobinario. Este número se conoce como código de instrucción, y usualmente se divide en al menos doscampos: un código de operación (Opcode) y un número que representa al operando u operandos de lainstrucción. En el caso de la computadora imaginaria que estamos estudiando, se almacena cadainstrucción en una de las 4096 palabras de memoria de 16 bits cada una. Se utiliza un formato de unsolo operando, con un segundo operando en el acumulador cuando es necesario. Los cuatro bits mássignificativos de los dieciséis bits de la palabra se dedican a almacenar el código de operación. Losdoce bits menos significativos se dedican a almacenar la dirección del operando. Código de Instrucción Operación Operando 1 Operando 2 Operando único Codigo de Operación Figura 1.2.1.4.2 Codificación de las instruccionesLa siguiente tabla resume los códigos de operación de la computadora de ejemplo.Código de Operación Instrucción Operación0h LOAD (Carga) ACC<-[M]1h STORE (Almacena) [M]<-ACC2h ADD (Suma) ACC<-ACC+[M]3h ADC (Suma con Acarreo) ACC<-ACC+[M]+C4h SUB (Resta) ACC<-ACC+-M]
  • 5h OR (Or Bit a Bit) ACC<-ACC or [M]6h AND (And bit a Bit) ACC<-ACC and [M]7h XOR (Xor Bit a Bit) ACC<-ACC xor [M]8h SHL (Corrimiento a la Izquierda) ACC<-ACC << 19h SHR (Corrimiento a la derecha) ACC<-ACC >> 1Ah BRA Bifurcación o salto PC<-MBh BRZ (Bifurca si es Cero) Si Z==1 => PC<-MCh BRC (Bifurca si hay Acarreo) Si Z==1 => PC<-MDh BRO (Bifurca si hay Sobreflujo) Si Z==1 => PC<-MEh LDI (Carga Constante Inmediata) ACC <-[PC]; PC<-PC+1Fh STOP Detener la ejecución Tabla 1.2.1.4.1 Códigos de operación para la computadora de ejemploLas partes del CPU de la computadora imaginaria son:ACC – Acumulador, se usará para almacenar uno de los operandos y el resultado de varias de lasinstruccionesMAR – (Memory Address Register) Registro de dirección de memoria, selecciona a que localidad dememoria se va a leer o a escribir.MBR – (Memory Bus Register) Registro de bus de memoria. A través de él se lee y se escriben losdatos.PC – (Program Counter) El contador de programa almacena la dirección de la siguiente instrucción abuscar. Por esta razón también es conocido como apuntador de instrucciones.IR - Registro de instrucción, guarda el código de la instrucción que se esta ejecutando.Flags – Registro de Banderas, agrupa a todas las banderas de la ALU en un registro, en el caso denuestra computadora imaginaria, las banderas disponibles serán: Z – Bandera de Cero, se pone en unocuando todos los bits del resultado son cero; O – Sobreflujo, se pone en uno cuando el resultado de laultima operación se sale de el rango de los números de 16 bits con signo; C – Acarreo, se enciendecuando el resultado de la ultima operación se sale del rengo de los números de 16 bits sin signo.
  • Contenido Dir. XXXXh 000h Banderas XXXXh 001h MAR 2023h 002h Acumulador 4024h 003h BUS ... PC XXXXh 022h MBR 1234h 023h IR 4567h 024h ... XXXXh FFFh CPU Memoria Figura 1.2.1.4.2 Diagrama a bloques del CPU a estudiarComo se explico anteriormente, el funcionamiento del CPU se basa en los pasos del ciclo deinstrucción, consistentes en búsqueda, decodificación y ejecución de la instrucción. Comenzaremosrevisando los pasos correspondientes a la búsqueda de la instrucción.El registro PC contiene la dirección de la localidad de memoria que contiene el código de instrucciónde la siguiente instrucción a ejecutar. Como la etapa de búsqueda consistirá básicamente en leer estecódigo y almacenarlo en el registro IR para su posterior uso en las etapas de decodificación yejecución, el contenido de PC se copia al MAR para poder leer esa localidad de memoria. Se lee lamemoria y el resultado de dicha lectura se copia del MBR al IR. Finalmente, se incrementa el PC paraque en el siguiente ciclo de instrucción se lea la instrucción de la localidad de memoria consecutiva.Resumiendo estas operaciones en lenguaje de transferencia de registros:MAR<-PCIR<-[MAR]PC<-PC+1En la etapa de decodificación simplemente se separan los códigos de operación de los operandos. Porejemplo, la instrucción LOAD 023h se codificaría como 0023h, siendo 0h el código de operación y023h el operando. Además, la unidad de control deberá identificar que al opcode 0 corresponde a lainstrucción LOAD para que en la siguiente etapa se realicen las operaciones correspondientes a estainstrucción.En cuanto a la etapa de ejecución, los pasos realizados en esta etapa varían dependiendo del código deoperación leído en la etapa de búsqueda. Por ejemplo, si el código leído es un 0, que corresponde conuna instrucción LOAD, la etapa de ejecución consistirá en copiar la parte de la dirección del operandoen el registro MAR para poder leer la localidad en donde se encuentra el operando. Se lee el operandode memoria y el dato leído se copia del MBR al acumulador. Resumiendo dichas operaciones enlenguaje de transferencia de registros se tiene:MAR<-IR(M) //IR(M) representa los bits del registro IR que almacenan la dirección del operandoACC<-MBR
  • Para el código de operación 2, correspondiente a la instrucción ADD, también se transfiere la direccióndel operando al MAR y se lee el contenido de la memoria, pero en vez de enviarse directamente delMBR al acumulador, se envía al ALU para que se sume con el contenido del acumulador yposteriormente se almacene el resultado de la suma en el acumulador. Resumiendo en lenguaje detransferencia de registros:MAR<-IR(M) //IR(M) representa los bits del registro IR que almacenan la dirección del operandoACC<-ACC+MBRLa columna operación de la Tabla 1.2.1.4.1 proporciona un resumen el lenguaje de transferencia deregistros de las operaciones correspondientes a cada código de operación.1.2.2 Memoria.Una memoria es un dispositivo que puede mantenerse en por lo menos dos estados estables por uncierto periodo de tiempo. Cada uno de estos estados estables puede utilizarse para representar un bit. Aun dispositivo con la capacidad de almacenar por lo menos un bit se le conoce como celda básica dememoria.Un dispositivo de memoria completo se forma con varias celdas básicas y los circuitos asociados parapoder leer y escribir dichas celdas básicas, agrupadas como localidades de memoria que permitanalmacenar un grupo de N bits. El número de bits que puede almacenar cada localidad de memoria esconocido como el ancho de palabra de la memoria. Coincide con el ancho del bus de datos. Uno de loscircuitos auxiliares que integran la memoria es el decodificador de direcciones. Su función es la deactivar a las celdas básicas que van a ser leídas o escritas a partir de la dirección presente en el bus dedirecciones. Tiene como entradas las n lineas del bus de direcciones y 2N lineas de habilitación delocalidad, cada una correspondiente a una combinación binaria distinta de los bits de direcciones. Porlo tanto, el número de localidades de memoria disponibles en un dispositivo (T) se relaciona con elnúmero de lineas de dirección N por T= 2N .1.2.2.1 Arquitecturas.Desde hace unas decenas de años, los procesadores han estado aumentando su velocidad de operación aun paso mucho más rápido que las memorias, lo que ha llevado a la situación en que los procesadoresactuales operan mucho más rápidamente que la memoria principal de las computadoras. Esto hace queel procesador tenga que quedarse detenido por varios ciclos de reloj (estados de espera) cada vez quetiene que leer o escribir a la memoria principal.Para aliviar un poco esta situación conservando el precio de la computadora razonablemente bajo, se haorganizado a la memoria como una jerarquía de diversos niveles con distintos tamaños y velocidades.Hay que recordar que la memoria más rápida es mucho más cara que la más lenta y que por lo tanto, esmenor la cantidad de memoria de este tipo que se puede usar. Esta estructura jerárquica se ilustra en lafigura 1.2.2.1. De esta manera, la mayor parte de la capacidad de almacenamiento de la maquina seencuentra en el disco duro, que tiene un costo por Gbyte muy bajo, pero que también es muy lentodebido a que hay que mover piezas mecánicas para leer o escribir en él. En seguida se encuentra lamemoria principal, que normalmente es del tipo RAM dinámica. Es en esta memoria donde sealmacenan los programas para que los pueda ejecutar el procesador, así como los datos con quetrabajan dichos programas. Con el objetivo de mejorar la velocidad del procesador al ejecutar ciclos yal leer repetidamente datos de uso común, se coloca una pequeña cantidad de memoria RAM estáticaentre el procesador y la memoria principal. Esta memoria es conocida como memoria cache y guardauna copia de una pequeña región de la memoria principal, para que si se requiere volver a leer los datosalmacenados en esta región de memoria, no se tenga que esperar a que se lea la memoria principal, que
  • es mucho más lenta que la cache y que el procesador. Finalmente, en la cima de la jerarquía, seencuentran los registros del procesador que aunque son muy pocos, son los que se pueden leer yescribir más rápidamente. Menor tamaño, Mayor Velocidad Registros del procesador Memoria Cache Memoria principal Disco Duro Menor velocidad, mayor tamaño Figura 1.2.2.1 Jerarquía de memoria en un procesador Moderno1.2.2.2 Tipos.Los diversos tipos de memorias se clasifican como memorias volátiles y memorias no volátiles. Lasmemorias volátiles pierden la información que almacenan al momento en que se les desconecta laenergía, mientras que las no volátiles conservan su contenido aunque no estén alimentadas.Las memorias volátiles son conocidas desde las primeras computadoras como memorias de accesoaleatorio (RAM), ya que en esa época las memorias volátiles eran de acceso secuencial. Dentro de lasmemorias volátiles se encuentran las subclases RAM Dinámica y RAM Estática.Las memorias no volátiles conservan sus datos a pesar de que en este conectadas el voltaje delalimentación. De hecho pueden conservar sus datos por un periodo de tiempo relativamente largo,usualmente entre cien y 200 años. Conforme evolucionado la tecnología, se han desarrollado diversasfamilias de rumores no volátiles, entre las cuales se encuentran: la memoria de solo lectura (ROM -Read only Memory), la memoria de solo lectura programable (PROM -Programable Read onlyMemory), la memoria de solo lectura programable y borrable (EPROM - Erasable Read only Memory),la memoria de solo lectura programable y borrable eléctricamente (EEPROM Electricaly Erasable Read
  • only Memory) y la memoria flash.1.2.2.3 Características.En cuanto a las memorias volátiles, la memoria RAM dinámica es muy rápida pero muy cara. Encontraste, la memoria RAM estática es muy barata pero muy lenta.En general, las memorias no volátiles son baratas y su precio depende sobre todo de su capacidad dealmacenamiento. Algunas de estas tecnologías son consideradas obsoletas y por lo tanto casi no sonutilizadas en actualidad.1.2.2.4 Funcionamiento.El tipo más común de memorias volátiles es la RAM dinámica, que utiliza la capacitancia parásita delos transistores MOSFET con los que esta construida para almacenar un bit. Como solo se requiere deun transistor por celda de memoria, esta memoria es muy económica, pero debido al tiempo que tomacargar la gran capacitancia de los transistores con los que esta construida, es muy lenta. S e le c c ió n d e r e n g lo n C a p a c ita n c ia I/O d e p a r á s ita C o lu m n a Figura 1.2.2.4.1 - Estructura de una celda de RAM Dinámica mostrando la capacitancia parásita en donde se almacenan el dato.El otro tipo de memoria RAM utilizado en la actualidad, es la RAM estática. Esta memoria seconstruye con el mismo tipo de transistores con los que se construyen los procesadores, por lo quepueden operar a una velocidad similar a la del procesador. Sin embargo, como se requieren alrededorde 8 transistores por bit, el costo de esta memoria es mucho más alto que el de la RAM dinámica.
  • I/O de columna Selección de renglon Figura 1.2.2.4.2 Estructura de una celda de RAM Estática a nivel de transistores.En cuanto a las memorias no volátiles, En cuanto a las memorias no volátiles, históricamente hanexistido varios tipos. Los primeros sólo podían ser leídos, por lo que fueron conocidos como memoriasde solo lectura (ROM - Read Only Memory). A pesar de que los tipos más modernos permiten que sucontenido se ha modificado por el usuario, aún son conocidos como memorias de solo lectura.En las memorias de solo lectura originales (ROM), el almacenar en uno o un cero, depende de si elfabricante colocó o no un diodo físicamente en el circuito de la memoria. De esta manera, el contenidode la memoria queda establecido por el fabricante desde el momento de su construcción y no es posibleque el usuario no modifique. Sin embargo, este tipo de memoria es aún muy usada debido a que es muyeconómica y por lo tanto, ideal para la producción en masa de muchos artefactos de consumo masivo. CE A2 A1 A0 Salida 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 X X X HZ Figura 1.2.2.4.3 – Estructura de una memoria ROM de 8x1 bits y la tabla con el contenido de cada celda. Solo hay ceros en las columnas con un diodo conectado.Con el objetivo de hacer a la memoria de solo lectura un dispositivo más versátil, algunos fabricantesde memorias sustituyeron a los diodos por fusibles semiconductores que el usuario podía quemarusando un programador especial. Esto permitió a los usuarios tener dispositivos de memoria de sololectura cuyo contenido ellos mismos podían programar, por lo que estos dispositivos fueron conocidos
  • como memorias de solo lectura programables (PROM - Programable Read Only Memory). El únicoinconveniente que presentaban estas memorias era que si se necesitaba hacer un pequeño cambio, debíadescartarse a la memoria ya programada y utilizar un dispositivo nuevo en blanco.Este problema pudo eliminarse al sustituir los fusibles semiconductores por transistores con unacompuerta flotante que les permitía almacenar una carga eléctrica por un tiempo muy grande. Estacompuerta flotante permite almacenar una carga eléctrica que reduce el voltaje que debe ser aplicado ala compuerta principal para hacer que el rector conduzca. De esta manera, aplicando un voltaje deprueba a la compuerta principal y observando si el transistor conduce, se puede saber si un transistor notiene carga en su compuerta flotante (está borrado o almacena un uno) o sí (estaba programado oalmacena un cero).La primera generación de dispositivos que utilizó esta tecnología, conocidos como memorias de sololectura programables y borrables (EPROM), podían grabarse eléctricamente aplicando un voltaje másalto de lo normal a la compuerta principal. Sin embargo, para eliminar la carga tendría que aplicarseuna luz ultravioleta intensa al dispositivo, lo cual eliminaba la carga almacenada en la compuertaflotante. Para realizar este proceso de borrado era necesario retirar al dispositivo del circuito deaplicación y colocarlo en el borrador de luz ultravioleta por aproximadamente media hora .En la segunda generación de dispositivos de memoria que utilizaban transistores con compuertasflotante se logró eliminar la carga eléctricamente, con lo que dichos dispositivos se volvieron másversátiles. Los dispositivos de esta generación se conocieron como memorias de solo lecturaprogramables y borrables eléctricamente (EEPROM). Como cada byte de la memoria podía ser borradode forma independiente, requerían de muchos circuitos auxiliares para permitir este tipo de borrado, loque aumentaba su costo.Para la tercera generación, se buscó reducir el costo de los dispositivos reduciendo la cantidadescircuitos auxiliares necesarios para el borrado. Esto se logró permitiendo únicamente el borrado debloques de memoria de tamaño relativamente grande. También se buscó almacenar más de un bit porcelda de memoria controlando la cantidad de carga almacenada en cada celda, de manera que con ochovoltajes discretos se pueden representar las ocho combinaciones correspondientes a tres bits. Losdispositivos de esta generación son conocidos como memorias FLASH.1.2.3 Dispositivos de I/O.1.2.3.1 Arquitecturas.1.2.3.2 Tipos.1.2.3.3 Características.1.2.3.4 Funcionamiento.