Organización y Arquitectura de computadoras

Esta sección esta hecha solamente para hacer un repaso de la materia a rendir, y de paso le puede parecer interesante para leer a alguien, el libro que mas uso es el de Stalling, por lo cual se va a notar la similitud en el contenido. El nivel de los temas tratados es superficial, para mas detalles aconsejo empezar por leer el libro. Todo esto esta colgado también acá

Introducción: Es a veces difícil identificar donde esta la diferencia entre la arquitectura y la
organización de computadores. La arquitectura se refiere a las características del sistema que son visibles al programador, o sea que el programador va a tener que tener en cuenta al momento de programar (ejemplo de esto serian modos de direccionamiento, conjunto de instrucciones, cantidad de bits usados para representas los distintos tipos de datos. La organización en cambio es transparente a el programador, este no se preocupa por estos temas, señales del bus de control, interfaces entre periféricos y computador, tecnología usada en memoria, cantidad de caches, etc. En general lo fabricantes de máquinas producen familias de pc con una misma arquitectura y a medida que pasa el tiempo salen nuevos modelos con la misma arquitectura, pero con una organización diferente, con lo cual logran una compatibilidad de software. Ejemplo de esto serian las PC comunes y una Macintoch, por poseer distinta arquitectura no son compatibles sus software.

Estructura y funcionamiento:
La descripción del sistema se va a ser la la siguiente forma: Se comenzara con una visión muy superficial, para de a poco introducirnos en las capas mas bajas en cuestión de estructura y funcionamiento.

Funciones básicas de un computador:
1. Procesamiento de datos. 2. Almacenamiento de datos. 3. Trasferencia de datos. 4. Control.

Gráficamente seria así:

Gráficamente las funciones serian algo así:

* A) Transferencia de datos. * B) Almacenamiento. * C) Procesamiento de datos almacenados. * D) Entrada o salida de datos con un procesamiento previo.

Estructura del Computador
La representación mas sencilla y superficial de un computador podría ser la siguiente:

El computador es el que vamos a analizar mas en detalle. podemos distinguir 4 componentes principales: . Computador: Entrando un poco mas en el detalle del computador. Las formas que esta se comunica con el entorno exterior se pueden clasificar en 2 grandes grupos: Periféricos y lineas de comunicación.

* MainMemory(Memoria principal): Almacena datos. El componente que vamos a analizar ahora mas en detalle es la CPU: . comúnmente se lo llama procesador. * Input/Output (I/O o entrada y salida): se encarga de la transferencia de datos entre en computador y el entorno externo. * SystemInterconnection (sistema de interconexión): Proporciona comunicación entre las tres partes.* CPU (Central ProsesingUnit): Controla el funcionamiento de la computadora y se encarga del procesamiento de datos.

XOR. aritméticas (suma resta. * ALU (Unidad Aritmético-Lógica): En ella se realizan las operaciones de procesamiento. .OR. etc) * Unidad de Control: Controla el funcionamiento de la CPU.Los principales componentes son los siguientes: * Registros: Proporcionan un almacenamiento interno a la CPU. etc) y logicas (AND. con lo cual controla el funcionamiento del computador.

Un ejemplo de esto es la famosa ENIAC. dicho procesamiento se configuraba antes de empezar por medio de cableado. y del computador salían los resultados. Consumía 140 Kilowatios. la enciclopedia libre .* Interconexiones: Proporcionan comunicación entre los 3 componentes anteriores.php?video=sJnMBnZElqw ENIAC De Wikipedia. Principios de la programación En los primeros computadoras se puede observar aproximadamente el siguiente funcionamiento: Al computador entraban datos. a esos datos se les daba un procesamiento.com/watch. Como se puede apreciar el procesador era para un uso especifico.videos-star. para distraerme un poco vamos a poner algo de ella: Unos datos interesantes: Trabajaba con numeración decimal. Realizaba 5000 sumas por segundo. Pesaba 30 toneladas Poseía 18000 válvulas. Vídeo de YouTube link: http://www.

.

500 conmutadores electromagnéticos y relés.000 condensadores y 5 millones de soldaduras. En 1. ocupaba una superficie de 167 m² y operaba con un total de 17. Ese honor se le debe al Z3 construido en el 1941. a diferencia de otras máquinas computadoras contemporáneas de procesos analógicos. La ENIAC fue construida en la Universidad de Pennsylvania por John PresperEckert y John William Mauchly. Las programadoras de ENIAC Si bien fueron los ingenieros de ENIAC. es decir. utilizaba 1.45 del 2 de octubre de 1955. conectar y reconectar los cables como se hacía. utilizada por el Laboratorio de Investigación Balística del Ejército de los Estados Unidos. y su programa o software.200 diodos de cristal.9 m x 30 m. siendo recientemente restaurada para un museo británico.ENIAC ENIAC es un acrónimo inglés de ElectronicNumericalIntegrator And Computer (Computador e Integrador Numérico Electrónico). que ejecutaba sus procesos y operaciones mediante instrucciones en lenguaje máquina. A las 23. Pesaba 27 Tm. Presentada en público el 15 de febrero de 1946. Prestaciones La computadora podía calcular trayectorias de proyectiles. Era totalmente digital. sufría de apagones cuando la ENIAC entraba en funcionamiento. Mauchly y Eckert. que fue usado para descifrar código alemán durante la Segunda Guerra Mundial y destruido tras su uso para evitar dejar pruebas. tardaba semanas de instalación manual.000 resistencias. Además está relacionada con el Colossus. Pero entre las anécdotas estaba la poco promisoria cifra de un tiempo de rotura de 1 hora.000 interruptores.468 válvulas electrónicas o tubos de vacío. La ENIAC elevaba la temperatura del local a 50ºC. Uno de los mitos que rodea a este aparato es que la ciudad de Filadelfia.500 relés. en esa época. medía 2. La ENIAC podía resolver 5. 10.468 tubos de vacío. pues su consumo era de 160 kW.5 segundos era posible calcular la potencia 5000 de un número de hasta 5 cifras. 7. la ENIAC tenía 17. la ENIAC fue desactivada para siempre.4 m x 0. Físicamente. Este trabajo podía demorar varios días dependiendo del cálculo a realizar. Contenido * 1 Modalidad * 2 Prestaciones * 3 Las programadoras de ENIAC * 4 Enlaces externos Modalidad No fue la primera computadora electrónica de propósito general. de allí el concepto. Para efectuar la s diferentes operaciones era preciso cambiar. lo cual fue el objetivo primario al construirla. 70. 1. cuando requería modificaciones. donde se encontraba instalada. los que pasaron a la historia de la . en las centrales telefónicas. requería la operación manual de unos 6.000 sumas y 360 multiplicaciones en 1 segundo.

Sin embargo. mas dedicaron largas jornadas a trabajar con la máquina utilizada principalmente para cálculos de trayectoria balística y ecuaciones diferenciales y contribuyeron al desarrollo de la programación de computadoras. Muchos registros fotográficos de la época muestran la ENIAC con mujeres de pie frente a ella. En esta época surgió la idea de programa almacenado. las primeras aplicaciones de software y las primeras clases en programación. MarlynWescoffMeltzer. estas mujeres sentaron las bases para que la programación fuera sencilla y accesible para todos. mientras que nunca se le otorgó crédito alguno a estas seis mujeres que se ocuparon de la programación. Hasta la década del 80. se dijo incluso que ellas eran sólo modelos que posaban junto a la máquina ("Refrigerator ladies". crearon el primer set de rutinas. que se le atribuye principalmente al matemático asesor del proyecto Eniac John Von Neumann. Cuando la ENIAC se convirtió luego en una máquina legendaria. KathleenMcNultyMauchly Antonelli. Clasificadas entonces como "subprofesionales". consistía en cambiar las conexiones de todos esos cables que se aprecian en las imágenes. posiblemente por una cuestión de género o para reducir los costos laborales. Ruth LichtermanTeitelbaum y FrancesBilasSpence prácticamente no aparecen en los libros de historia de la computación. este equipo de programadoras destacaba por ser hábiles matemáticas y lógicas y trabajaron inventando la programación a medida que la realizaban. Betty SnyderHolberton. sus ingenieros se hicieron famosos. programar este computador para que realice una tarea determinada.computación. ------------------------------------------------------------------------------------------------------------------------Bueno. cuya historia ha sido silenciada a lo largo de los años y recuperada en las últimas décadas. . hubo seis mujeres que se ocuparon de programar la ENIAC. Jean JenningsBartik. Su trabajo modificó drásticamente la evolución de la programación entre las décadas del 40 y el 50.

Las i as del programa almacenado fue desarrollada al mismo tiempo por Turing (Recomiendo leer la historia de este genio). ¡   .

La idea era la siguiente. en ves de tener un procesador que realiza una sola tarea. proponiendo la EDVAC (ElectronicDiscrete Variable Computer). A la idea de la llamo "La máquina de Von Neumann". bastara solo con leer otro conjunto de ordenes almacenadas en memoria.Pero la primera publicación fue hecha por Neumann en 1945. En este diagrama se ejemplifica el computador realizaba una tarea fija con los datos . y la programación sea cableada. Esta se empezó a d iseñar en la universidad de Princeton en 1946 y fue completado en 1952. y es la base general de los computadores de hoy en día. Con esto para cambiar la tarea que realizara la computadora. de esta manera nace el SOFTWARE. encontrar la forma de cambiar esas conexiones por medio de ordenes almacenadas en memoria junto a los datos.

.En este diagrama vemos ejemplificado que por medio de instrucciones al procesador. la unidad de control manda las señales necesarias por los buses. Hoy en día. Buses Los buses son el mecanismo mas común para la comunicación entre los dispositivos del computador. y el resultado salia por algún dispositivo de E/S. la memoria y los datos provienen de la misma memoria. los datos se mandan a la ALU. esta realizaba las operaciones. y se realiza la operación. Con este avance se logro tener el primer computador de propósito general. La idea es la siguiente. era mas fácil usarlo p ara diversas tareas. se podía hacer que el computador sea de uso general y realizar distintas tareas Como se puede apreciar en la ultima figura. se leía una instrucción. entraban los datos a la ALU. esta pasaba a la unidad de control. a grandes rasgos es similar. dich a unidad realizaba las conexiones correspondientes para que la ALU realizara una tarea determinada. se lee una instrucción. se decodifica.

.Físicamente son conductores por donde viajan señales eléctricas.

Bus de datos: Por estas lineas se transfieren los datos. en secuencia. y así incrementar el desempeño. si dos dispositivos transmiten al mismo tiempo señales las señales pueden distorcionarce y consecuentemente perder información. pueden ser de 8. La cantidad de lineas del bus a medida que pasa el tiempo se va incrementando como uno de los métodos para incrementar la velocidad de transferencia de señales en el computador. Cada linea tiene un uso especifico. 16. Por cada linea se pueden trasmitir señales que representan unos y ceros. memoria y E/S se lo denomina BUS DEL SISTEMA y es que que vamos a detallar ahora. los buses son casi todos esos caminos que se ven en las motherboard de las imágenes anteriores. una detrás de otra. pero en general podemos distinguir 3 grandes grupos de buses. al bus que comunica al procesador. Para poder transmitir 1 byte en 1 sola unidad de tiempo tendríamos que usar 8 lineas al mismo tiempo. 32 o maslineas( no se . se deberán mandar 8 señales. y hay una gran diversidad de implementaciones. de a una señal por unidad de tiempo. en consecuencia se tardaría 8 unidades de tiempo.Bueno. Existen varios tipos de buses que realizan la tarea de interconexión entre las di stintas partes del computador. El bus es un dispositivo en común entre dos o mas dispositivos. Por dicho motivo existe un arbitraje para decidir quien hace uso del bus. Si se desea por ejemplo transmitir 1 byte.

Dentro de la direcciones posibles. * Transferencia reconocida. las combinaciones posibles para identificar una dirección irían del 00000000 al 11111111. * Petición del bus. en general el sistema no usa todas para hacer referencia a la memoria principal. el sistema va a tener que acceder 2 veces a memoria para poder leer la instrucción. Bus de control:Estas líneas son utilizadas para controlar el uso del bus de control y del bus de datos. son 256 combinaciones posibles. * Petición de interrupción. el doble de tiempo en leer instrucciones comparado con un bus de datos de 16 lineas. * Interrupción reconocida. una parte las usa para hacer referencia a los puertos de E/S. Las señales de temporización indican la validez de los datos que están en el bus en un momento dado. * Inicio. lo cual nos indica cuantos datos podemos transferir al mismo tiempo. Se transmiten ordenes y señales de temporización. . si el bus es de 8 lineas por ejemplo. * Lectura de memoria. Por ejemplo si el bus es de 8 lineas y las instrucciones son de 16 bits.realmente en cuanto andan hoy en día). Bus de direcciones:Por estas lineas se envía la dirección a la cual se requiere hacer referencia para una lectura o escritura. * Escritura de E/S. en consecuencia el ancho del bus de datos nos indica la cantidad de direcciones de memoria a la que podemos hacer referencia. y es muy influyente en el rendimiento del sistema. * Lectura de E/S.. * Cesión del bus. las ordenes son muy diversas las mas comunes son: * Escritura en memoria. * Señal de reloj.

disminuye el rendimiento del sistema. y puede emitir algún tipo de señal por el bus de control (señal de interrupción. las jerarquías de buses fueron implementadas cada vez mas. las causantes de esto son varias. pero las mas importantes son el tiempo de sincronización que se necesita para coordinar el uso del bus entre todos los dispositivos. etc). la cual puede llegar a convertirse en un cuello de botella del sistema.Todo elemento que este conectado al bus tiene que saber reconocer si la dirección que esta en el bus de datos le corresponde. Jerarquía de buses: Para mejorar el rendimiento del bus. tiene que reconocer algunas ordenes transmitidas por el bus de control. cuanto mas dispositivos conectamos al bus. una primera aproximación a una jerarquía de bus básica seria la siguiente: . Una de las formas de tratar este problema es implementando jerarquía de buses. En general. y que el bus tiene una capacidad máxima. señal de reconocimiento de alguna petición.

el cual esta muy estrechamente ligado al bus local. serán entregados a una alta velocidad. el controlador de la cache también puede acceder al bus del sistema.Primero tenemos un bus local. con esta implementación. . otro punto a destacar de esta parte es que los accesos a memoria por parte de la cache no van a interrumpir el flujo de datos entre procesador y cache. solo hay un adaptador que los une. entre el bus del sistema y el bus de expansion se encuentra una interfase. al cual esta conectada la memoria y por debajo el bus de expansión. mas lento conectado mediante otro adaptador. la mayor parte de los datos a los que va a acceder el procesador. debajo de este bus tenemos el bus de expansión. hizo que los fabricantes implementaran los buses de alta velocidad. de alta velocidad que conecta el procesador a la cache. También se ve la posibilidad de conectar un dispositivo de entrada salida al bus local. al cual se pueden conectar una amplia diversidad de dispositivos. que están en la cache. El hecho de que cada vez mas salgan al mercado dispositivos que requieren mas velocidad de transmision en los buses. Luego tenemos el bus del sistema. por ejemplo para un dispositivo muy lento conectado al bus de expansión la interfase podría acumular una cierta cantidad de datos y luego transmitirla a través del bus del sistema. que entre las principales tareas esta la de adaptar las velocidades de transmision.

Esta situación de bus de datos y de direcciones dedicados es lo mas común. Tipos de buses: Una clarificación que podemos hacer es según la funcionalidad de este. Un ejemplo común de dedicados serian el bus de datos y el bus de direcciones. cada uno se utiliza solo para una función especifica.Existen varios parámetros y elementos en los buses con los cuales podemos clasificarlos. pero podría llegar a implementarse con un solo bus multiplexado el el tiempo. .. luego se emite por el bus de datos una señal indicando que en el bus se encuentra una dirección valida. Esto funcionaria a grandes rasgos de la siguiente forma: Al comienzo de la transferencia se sitúa en el bus la dirección de donde se quiere leer o a donde se desea escribir. los podríamos dividir en dedicados o multiplexados.

procesador. Todos los métodos que existen en general pueden ser clasificados en 2 grandes grupos: Arbitraje centralizado: Una parte del hardware del sistema denominada controlador del bus se encarga de decidir el uso del bus en cada momento. Arbitraje distribuido: En este esquema no existe un controlador centralizado. en paralelo (datos y dirección). debe existir un método para decidir quien hace uso de el. este ejemplo lo voy a explicar mas detalladamente cuando llegue al la parte de E/S. la cual puede ser leída por todos los dispositivos conectados al bus.A partir de ese momento se dispone de una unidad de tiempo para que los dispositivos identifiquen si es su dirección. ya que solo van a operar con el los módulos de E/S. Método de arbitraje: Por la razón de que en un momento dado solo puede usar el bus un solo dispositivo. En cualquiera de los dos casos lo que se busca es que se decida quien va a tener la posesión del bus en un momento dado. la desventaja son que para poder implementar es forma de operar la circuitería en cada modulo tiene que ser mas compleja. modulo de E/S o memoria. . Ventaja de este método es la reducción de la cantidad de lineas. lo cual ahorra espacio y costos. todo los eventos ocurridos dentro del bus comienzan el principio del ciclo y pueden durar uno mas . Al intervalo transcurrido en la emisión de un uno y un cero se lo llama ciclo de reloj. y que el rendimiento del sistema sera menor por no poder transmitir los datos simultáneamente. Temporización síncrona: Todos los eventos del bus se rigen a través del reloj del computador. En este método de temporización todos van al ritmo del reloj. Una de las líneas del bus transmite continuamente una señal de reloj. Temporización: La temporización clasifica al método utilizado para coordinar los eventos dentro del bus. al cual se lo denomina maestro del bus. en su lugar. el maestro del bus establecerá una comunicación con otro dispositivo (lectura o escritura) al cual se lo denominara esclavo. Según la temporización usada podemos clasificar los buses en 2 grupos. la ventaja esta en que al ser dedicado solo a E/S. este bus se conecta al bus principal mediante algún adaptador. el cual se encarga de conectar solo los dispositivos de E/S. cada dispositivo que hace uso del bus tiene que tener incorporada la logica necesaria para poder interactuar con los demás dispositivos y decidir quien hace uso del bus. Otro tipo de clarificación podría ser según su dedicación física: Podríamos poner como ejemplo el bus de E/S. este dispositivo puede ser un modulo separado o puede estar incorporado al procesador. el rendimiento de este va a ser mejor. simplemente una secuencia de unos y ceros. luego de esto se pone en el mismo bus los datos y se realiza la transferencia en el sentido que lo indique una orden emitida por el bus de control. y no va a haber tanta competencia por el bus.

uno o cero. que seria algo mas constante como el siguiente gráfico. al aumentar la velocidad del ciclo vamos a aumentar la velocidad del sistema. Las lineas solo pueden tener uno de dos estados. en el diagrama anterior podemos apreciar como seria en forma simplificada una lectura de datos a travez del bus. por ejemplo la linea del reloj. y como todas las operaciones se van a realizar al ritmo del reloj. .Bien. Tener en cuenta que hay muchísimas maslineas que no se figuran en el gráfico. La velocidad en el ritmo que se alterna de un uno a un cero en la linea del reloj nos da la velocidad del bus.

pero es menos flexible que la síncrona. este tiene que . El procesador pone en el bus de direcciones la dirección a ser leída y en el bus de control por la linea correspondiente señal de lectura. son los datos solicitados) Todo con este método de temporización empieza o finaliza rigiendose de las señales del reloj. manda otra señal por una linea del bus de control indicando que se le a reconocido su petición (que los datos situados en el bus de datos son validos. envía por una linea del bus de control una señal indicando que desea hacer una lectura. el dispositivo correspondiente a esa dirección reconoce la dirección. Por ejemplo. pone el dato solicitado en el bus de datos y emite una señal (SSYN sincronización del esclavo) por la en bus de control indicando el las señales del bus de datos son validas(son los datos solicitados) La temporización síncrona es mas fácil de implementar y comprobar. si hay uno mas rápido. en general todo evento es disparado por otro evento anterior. y pone en el bus de datos la información solicitada. tras lo cual. en general la mayoría de los eventos tiene un duración de un ciclo. luego de un breve tiempo para que las señales eléctricas se estabilicen. todos tienen que funcionar a la velocidad del reloj.Con referencia al gráfico de un ciclo de lectura de datos. Temporización asíncronica: Acá los eventos no se rigen por la linea del reloj. se manda señal por la linea MSYN (sincronización del maestro) indicando que hay señales validas en el bus de dirección y de control. de distintas velocidades. en el caso de que hubiesen varios dispositivos conectados al bus. el modulo correspondiente reconocerá su dirección. el maestro (el que tiene permiso para el uso del bus) pone en el bus de direcciones la dirección de la cual desea leer su contenido. luego de haber puesto la dirección en las lineas correspondientes.

mayor va a ser la cantidad de direcciones posibles utilizadas para direccionar memoria y dispositivos de E/S. En el segundo diagrama se puede apreciar un periodo nombrado con "Access time". es simplemente la cantidad de lineas que posee. primero se utiliza para transmitir la dirección y luego los datos. se utiliza para proteger los recursos de memoria compartida en si stemas con multiprogramación para mantener la integridad de los datos. Otra operación muy común es la transferencia por bloque. en el mismo bus se trabajaría a distintas velocidades. en este caso el bus esta multiplexado en el tiempo. Tipo de transferencia de datos: Todos los buses permiten la transferencia de datos. seria la lectura del dato. memoria principal. Todo esto es una sola operación. Anchura del bus: La anchura del bus ya lo he explicado. cada transferencia se haría con la velocidad óptima de sus dos partes (maestro-esclavo). Para optimizar el rendimiento existen algunas operaciones combinadas en las cuales se pasa la dirección una sola vez.bajar su velocidad: En cambio con el asíncrono. cada uno funcionaria a su velocidad. etc) y ponerlo en el bus. En el gráfico tenemos ejemplificado una escritura y una lectura. Otra instrucción es "lectura después de escritura" que serviría para comprobar el resultado. ya sea para escritura como para lectura. se pasa al principio de la operaci ón la dirección inicial y luego se realiza lectura o escritura a las siguientes direcciones. cuanto mas ancho el bus de direcciones. por ejemplo "lectura-modificación-escritura". y esta directamente relacionado con el rendimiento del sistema. se le aplica alguna modificación y luego se escribe nuevamente. mayor ya a ser la cantidad de bis que se va a poder transmitir en paralelo. ese tiempo es el necesario para acceder al medio en donde se encuentra el dato (disco rígido. nadie puede acceder al bus en el medio de la operación. la cantidad de direcciones siguientes también es un parámetro que hay que pasar. y cuanto mas ancho el bus de datos. .

.Bien. pero como tienen muchos datos técnico que pueden ser medios pesados. voy a poner algunas imágenes donde se pueden ver distintas implementaciones y velocidades. Nobleza obliga. ahora tendría que enumerar algunos buses en especial. estas diapositivas las tome de las teorías de la catedra de Arquitectura de computadoras de la carrera de Licenciatura en Informática de la Universidad Nacional de La Plata.

.

.

.

.

.

.

.

.

.

.

por lo cual hay que utilizar varias clases en una misma máquina en busca de la combinación lo mas aceptable posible teniendo en cuenta principalmente 3 parámetros: * Velocidad de acceso.Memoria Interna La memoria interna de un computador tiene tan amplia diversidad que provoca un poco extenso estudiarla. . * Capacidad. No existe un tipo de memoria óptima para un computador. * Costo.

En esta pirámide podemos observar lo siguiente: cuanto mas arriba de la pirámide. . tenemos que armar una jerarquía dentro de la máquina con varios de estos tipos de memoria. mas cerca (físicamente) del procesador nos encontramos. Entonces. mayor el costo. cuanto mas arriba menor la capacidad y cuanto mas arriba menor el tiempo de acceso. tratando de lograr que el costo se asemeje a los costos de las memorias de los niveles inferiores. Cuanto mas arriba. Esto se logra utilizando una jerarquía de memorias. el tiempo de acceso se asemeje a los tiempos de las memorias de los niveles superiores y las capacidades se asemejen a las de los niveles inferiores.

Acceso secuencial: Los datos se organizan en unidades llamadas registros. Capacidad: Las memorias internas son las mas pequeñas y se miden en bytes o palabras. 16 y 32 bits. pero en algunos casos se puede direccionar de a nivel de byte. debemos saber un poco mas de sus características y clasificarlas según ellas. Entonces finalizando este punto. Cuando hablamos de memoria interna nos referimos generalmente a la memoria principal. nos vamos a estar refiriendo a dispositivos periféricos a los cuales se accede a través de algún controlador de E/S (discos rígidos. . L a forma de acceder como su nombre lo indica es secuencial. pero no debemos olvidar que existen otras. anteriores al que deseamos acceder. Además de los datos se agrega información que permite distinguir donde comienza un registro y comienza otro y permite la escritura/lectura de los datos. El tiempo de acceso es variable dependiendo de la ubicación del registro deseado. las memorias externas son mayores y se suelen medir en términos de bytes(Kbyte. en general coincide a la longitud de palabra del modulo de memoria. y no nos olvidemos que las unidades direccionables están directamente relacionadas con la anchura del bus de direcciones. teniendo que pasar por todos los registros intermedios. la unidad de transferencia es la cantidad de bits que se pueden lee o escribirá la vez y comúnmente coincide con la unidad de palabra o con la unidad direccionable. Memorias internas y externas. pen-drivers. Vamos a aclarar 2 términos usados comúnmente para que se aclare un poco el tema. Mbytes. el procesador necesita su memoria propia (registros del procesador) y la unidad de control puede llegar a necesitar memoria propia. suele coincidir con con el numero de bits utilizados para representar los números y con la longitud de las instrucciones. lectoras de CD/DVD. Un ejemplo de este tipo de acceso son las cintas magnéticas. por lo general. Métodos de acceso: Esta otra clarificación que podemos hacer varía según al la forma de acceder al dato. etc). Unidad de transferencia: En general la unidad de transferencia es igual al numero de lineas de entrada/salida de datos que posee el modulo de memoria. cintas. hasta llegar al registro deseado. siendo las longitudes mas comunes para las palabras las de 8.Antes de abordar las técnicas de comunicación entre los distintos tipos de memorias. Palabra: Es la unidad natural en que esta organizada la memoria. Para l memoria externa la unidades son mas grandes y se las llaman bloques. Tbytes. pero como siempre hay excepciones. etc). Cundo decimos memoria externa. el acceso se logra mediante un acceso lineal especifico. Unidades direccionables: En muchos sistemas la unidad direccionable es la palabra.

.

Un ejemplo de esto son los discos magnéticos. . cableado físicamente. El tiempo de acceso a cada posición es constante y no depende de accesos anteriores. luego dentro de la vecindad se hace un acceso secuencial contando o esperando alcanzar la posición final. El acceso es directo. sino a toda la vecindad.Un ejemplo de este tipo de acceso es la memoria principal y algunos sistemas de cache. Acceso aleatorio: Cada posición de memoria direccionable tiene una acceso directo para acceder. pero no al dato especifico.Acceso directo: Cada unidad de información en que esta dividida la unidad tiene una dirección única basada en su ubicación física. El tiempo de acceso es variable.

.Un ejemplo de este tipo de acceso son algunos sistemas de cache. La comparación se hace en paralelo con todas las palabras almacenadas en la memoria. cableado físicamente. dichas palabras además de los datos contienen información para identificar a que posición corresponden. Cada palabra de memoria tiene una acceso directo para acceder.Acceso asociativo: Se compara una parte de la dirección a buscar contra una parte de las palabras almacenadas en este tipo de memoria. El tiempo de acceso es constante y no depende de accesos anteriores.

y es requerido para que finalizen las transacciones en las lineas de controlo para regenerar los datos si se trata de lecturas destructivas. para los otros tipos de memoria se utiliza la siguiente relación: . El chip de la izquierda es el procesador mientras que el de la derecha es una memoria caché (se denota por lo regular de la superficie). de ahí que tenga dos chips en un solo procesador. Velocidad de transferencia: Es la velocidad a la cual se pueden transmitir datos desde o hacia memoria. para memorias de tiempo aleatorio esto equivale a la inversa del tiempo de ciclo. el tiempo de acceso es el tiempo que se tarda en ubicar el mecanismo de lectura/escritura en la posición deseada. muchas gracias. Para este cometido implementaron junto al Pentium MMX otro chip que era la memoria caché (256Kb). En memorias de acceso de acceso aleatorio es el tiempo entre que se pone la dirección en el bus y el momento en que el dato ha sido guardado (escritura) o el dato se encuentra disponible (lectura).Este es un Pentium Pro a 200 Mhz. El Pentium Pro fué el primer procesador de intel diseñado específicamente para entornos de servidor. Generalmente este termino se usa con las memorias de tipo aleatorio. Para memorias de otro tipo de acceso. Tiempo de acceso: es el tiempo en que se tarda en la operación de lectura o escritura. Tiempo de ciclo de memoria: Es el tiempo necesario que se requiere para realizar la segunda lectura luego de haber realizado la primera.net.homelinux. Muy buena imagen tomada de http://karman.

por lo cual cuando estos datos se requieran.Estas 3 ultimas características de la memoria son las mas importantes desde el punto de vista del usuario junto a la capacidad. también lo serán en un futuro próximo. la tasa de acierto es aproximadamente del 95%. ‡ Localidad espacial: los elementos cuyas direcciones están cercanas tienden a ser referenciados. primero se busca en la primera cache (rápidamente). se debe tratar de que no se detenga para esperar que lleguen las instrucciones y datos desde la memoria. en este punto para solucionar el tema entra la memoria cache. hay muy altas posibilidades que se requieran otros datos que contiene el bloque guardado en cache. también están las de nivel 2 y nivel 3. cuando se accede a memoria. cuanto mas cerca del CPU. Teniendo el claro este principio. Debido al principio de localidad. Para que quede mas claro el gran beneficio de la cache Supongamos que tenemos 2 niveles de cache L1 (nivel 1) y L2(nivel 2) . sino que todo el conjunto de direcciones lo rodea. mas pequeña pero mas rápida. si no se encuentra ahí. mas cara. el acceso va a ser muy rápido. Debido a los muy buenos algoritmos que manejan las cache. La motivación principal a este tema es la siguiente: La prioridad de todo el sistema es que la CPU e jecute la mayor cantidad de instrucciones. a conjunto extraído se lo llama bloque. una mas lejos que la otra. Jerarquía de memoria: El tema clave de toda la organización de los distintos tipos de memoria esta en obtener una disminución de los accesos a las clases mas lentas de memoria. no se extrae solo el contenido solicitado. podemos podemos dar una aproximación de como se utilizan las cache: Cuando la CPU solicita un el contenido de una dirección. Antes de proseguir debemos conocer a lo que se le llama "Principio de localidad" Principio de localidad de programas y datos ‡ Localidad temporal: los elementos (datos o instrucciones) accedidos recientemente. El bloque extraído se guarda en la cache. Esta memoria puede estar ubicada en distintas partes del computador. El procesador es mucho mas rápido que la memoria principal. Las que están ubicadas en el mismo procesador se las llama de nivel uno (on chip). se va a buscar el dato a memoria. mas rápido es el acceso. y de ese bloque el dato solicitado se manda a la CPU.

La mayor parte del tiempo el procesador recibe datos e instrucciones rápidamente de la cache. .1µs) + (0.05% de las veces.05*(0.0025 % de las veces y a la memoria principal solo el 0.1µs y L2 de 1µs ( 0. L1 tiene un tiempo de acceso de 0. Mas adelante voy a detallar mas su funcionamiento e implementaciones.15µs Estamos teniendo un tiempo de acceso aproximadamente de 0. agregando un nivel mas L3. por lo cual va a estar menos tiempo esperando. a L3 solo tendríamos acceder el 0.95 + 0.1µs + 1µs)= 0.000125. los núcleos de ferrita. A L2 accedemos solo el 0. ya que no se tienen en cuenta muchos factores.Estos cálculos son solo para tener una aproximación. Memoria semiconductora: Antes de empezar con este tema aconsejo leer la muy interesante pagina que habla de la forma mas común de almacenar información en los computadores antiguos.15µs a cada dirección de memoria.

vamos a enumerarlas y dar una breve descripción. Se puede escribir como leer rapidamente en ella. a cada palabra que las componen se la puede acceder directamente. Las dinamicasestan compuestas por celdas que conservan la carga. . el hecho de que tenga carga o no diferencia un uno de un cero. lo acual hace que sean mas pequeñas y economicas. RAM: La mas común. Estas cargas disminuyen gradualmente por lo cual tienen implementadas un sistema de refresco. con lo cual se identifica un uno o un cero.[/align] Hoy en las memorias principales utilizan memoria principas. como un condensador. Todas los tipos de memoria que veremos aca son de acceso aleatorio. el cual cargara periodicamente las celdas con carga. que pueden mantener uno de dos estados mientras esten alimentadas. Se las puede dividir en 2 grupos. Las RAM dinamicas son mas simples y compactas. Las RAM estaticas estas conformadas por puertas bioestables. como los Flip-Flops.[align=center]Diálogo sobre las memorias de anillos de ferrita. o sea que se pierden los datos cuando se apaga el computador. (Random Access Memory) . estaticas y dinamicas. obviamente todas las memorias que vamos a ver en esta parte son pero a esta se la llama asi. es volatil.

los datos bienen grabados ficicamente.ROM: ReadOnlyMemory. como un circuito y no es volatil . solo se pueden leer.

el tema importante es que antes de grabarla hay que borrarla completamente. EPROM: Memoria de solo lectura programable y borrable ópticamente. lo cual se realiza exponiendo la ventanita del chip a rayos ultravioleta.Sonmas costosas que las ROM y PROM.PROM: Son iguales que las ROM pero estas se pueden grabar eléctricamente una vez. que viene tapada con una etiqueta para evitar borrados no intencionados. En la imagen se puede apreciar la ventana. suele tardar unos cuantos minutos en borrarse. No es volátil. No es volátil. . Podría grabarla el fabricante o el posterior comprador con un equipo especial. pero nos da mas ventajas. estas memorias se pueden leer y grabar eléctricamente.

.

Se puede leer tanto como escribir de forma eléctricamente y solo el o los byte direccionados.EEPROM: Memoria de sobre todo lectura programable y borrable eléctricamente. . pero nos dan gran flexibilidad al poder actualizables mediante las lineas de datos. direcciones y control. La escritura demora mucho mas tiempo que la lectura. Son mas costosas y menos densas.

solo se puede borrar a nivel de bloque. otra diferencia es que no permiten borrar a nivel de byte. . La ultima es de 64GB de Samnsung.Flash: Iguales que las EEPROM pero masmasrapidas. Estas 3 imagenes son de memorias flash. las podemos ver comunmente en los pen drivers.

.

.

como salida (lectura) o entrada (escritura). aunque existen muchas tecnologías utilizadas para su implementación.Organización de la memoria semiconductora: El elemento básico de la memoria semiconductora es la celda de memoria. y ot ro para los datos. otra para indicar el tipo de operación (lectura/escritura). los cuales se utilizan para representar un uno o un cero. Lo mas común es que posean tres terminales. . * Pueden leerse para saber su estado. * Presentan 2 estados. todas compartes algunas propiedades. * Puede escribirse en ellas al menos una vez. uno para seleccionar la celda para lectura o escritura.

Por ejemplo una memoria de 16 Mbits podría estar organizado en 1Mpalabras de 16 bits cada una. esto seria que el chip de memoria esta organizado en W palabras de B bits cada una. Una de las características mas importantes de los chips de memoria. Organización típica de una DRAM de 16Mbits en la que se leen/escriben de a 4 bits simultáneamente: . En el otro extremo tenemos la estructura llamada "un bit por chip" en la cual los datos se lee/escriben por bits. en un extremo tenemos una memoria en la cual la organización física es igual a la lógica (igual a como la percibe el procesador).Lógica del chip de memoria: Las memorias semiconductoras vienen encapsuladas. y cada chip contiene una matriz de celdas de memoria. es la cantidad de bits que se pueden leer/escribir simultáneamente. y desarrollare a continuación. Tenemos muchas formas de organizar la memoria.

Lógicamente la matriz esta compuesta por 4 matrices cuadradas de 2048 X 2048 elementos. Para poder seleccionar un elemento particular de cada chip de 2048 X 2048 se necesitan, para poder expresar 2048 combinaciones, necesitamos 11 lineas, por lo cual a cada chip entran 11 lineas para especificar la fila de la matriz y 11 lineas para especificar la columna de la matriz. Como se puede ver en este gráfico, a la DRAM solo entran 11 lineas de datos ( de A0 a A10), esto se debe a que estas lineas dedicadas a especificar la dirección están multiplexadas en el tiempo, primero se pasa la dirección que especifica la fila y luego se pasa la dirección que especifica la columna. De cada chip obtengo un elemento, los 4 de la misma posición relativa dentro de cada uno de los chips. Si el bus de datos del sistema fuera de 16 bits, tendría que tener 4 DRAM conectadas al controlador de memoria para poder leer/escribir una palabra en el bus de datos. Como comentario, el uso de matrices cuadradas y de lineas de direcciones multiplexadas provoca que con

cada linea que se agrega a las lineas de direcciones la capacidad se podria cuadriplicar, por ejemplo con el caso anterior con 11 lineas se obtienen 2048 posibles combinaciones, con 12 lineas 4096, el doble, el doble de filas y el doble de columnas, o sea, el cuadruple de capacidad de direccionamiento con el solo hecho de agregar una lineamas.

En el diagrama anterior se muestra el encapsulado típico de una DRAM de 16Mbits. Ahora, en el ejemplo anterior el chip tenia una entrada/salida de 4 bits, en cambio si cada chip tiene 1 bit de entrada/salida, claramente necesito N chips, donde N es igual a la cantidad de bits por palabra. Para ejemplificar veamos una forma de organizar un modulo de memoria de 256K palabras de 8 bits.

Aclaración: El diagrama anterior tiene un error, en el chip inferi or del gráfico debería decir "Chip #8" En el diagrama podemos apreciar que las lineas de datos no se multiplexan. Cada chip posee 512 X 512 (256K) elementos de 1 bit, al momento de leer una de las 256k palabras de 8 bits, se envía la dirección y se selecciona un bit de cada chip (la misma ubicación en cada chip), cada bit seleccionado de cada chip conformara la palabra.

Memoria Cache:
El objetivo de la memoria cache es obtener un tamaño grande de memoria, con una velocidad tendiendo a

entonces se accede a la memoria principal y se extrae el conjunto próximo a la dirección buscada y se pone en la cache. primero se pasa el bloque a la cache y luego se pasa la palabra a el procesador. si no esta en la cache.la de las memorias mas rápidas y un costo tendiendo a las mas baratas. primero se fija si esta en la cache. entonces la dirección es accedido directam ente de la cache. la otra primero se pasa el bloque de palabras a la cache y luego esta. . pasa la dirección solicitada a el procesador. para aprovechar el principio de proximidad. Este seria el diagrama del del segundo caso. una es que se pasa el bloque de memoria a cache y se pasa la dirección solicitada al procesador en paralelo. si esta. Como ya hemos visto cuando el procesador necesita acceder a una dirección de memoria. se llama fallo o "MISS". al mismo tiempo. se llama acierto o "HIT". En esta parte tenemos dos organizaciones mas comunes.

me imagino que es Registryaddress. se decide en que lugar de la cache se va a alojar el bloque y EN PARALELO se pasa el bloque a la cache y se pasa la palabra al procesador. este seria el primer caso que hacia referencia el párrafo anterior y es la organización que se usa en general en las cache actuales. . un registro donde el procesador pone la dirección a la que quiere hacer referencia. se chequea si la dirección esta en cache.Es este diagrama podemos ver la operación de lectura. si esta se capta la palabra para luego pasarla al procesador. El flujo seria algo así: el procesador pone la dirección requerida en RA. si no esta se accede a memoria. realmente no se bien a que se refiere con RA.

Antes de seguir con las características de la cache vamos a ver un poco mas sobre el principio de localidad. quiere decir que las referencias en un lapso de tiempo hacen referencia a un conjunto de palabras que están próxima físicamente. en el caso de entregar los datos primero a la cache y luego al procesador. estas agrupaciones cambian.En este diagrama se ve como estaría dispuesta la cache con sus lineas de conexión. Este principio establece que las referencias a memoria tienden a formar agrupaciones. el tema es que ese grupo o bloque este en ese periodo de tiempo . y por medio del bus del sistema se accede a la memoria principal. La cache se interpone físicamente entre la memoria y el procesador. si hay un acierto. pero durante periodos cortos de tiempo el procesador hace referencia a algun conjunto en particular. se inhabilitan los dos buffer y el trafico es solo de cache a procesador. se coloca la dirección en el buffer de direcciones. si hay un fallo. luego se transfiere el bloque de da tos a la cache para después esta entregar la palabra al procesador.

se va a hacer referencia a instrucciones contiguas. por lo cual. en general el programa queda confinado a una ventana bastante estrecha de profundidad o nivel de anidamiento de procedimientos. para tener un tiempo de acceso rapido. o sea que la proximainstruccion a captar es la inmediatamente siguiente a la ultima captada. en muchos casos estas unidades de datos se encuentran en posiciones contiguas de memoria. por lo cual se va a estar haciendo referencia a un mismo bloque de datos. durante el periodo que dure la iteracion. * En muchos programas se hecen referencias a estruccturas de datos como secuencia de registros o matrices.en cache. Este tema es muy estudiado por su gran importancia en el rendimiento del computador. por lo cual. . en un periodo corto de tiempo las referencias tienden a localizarce en unos pocos procedimientos. en general la ejecucion de un programa es secuencial. Algunas afirmaciones para ver que la localidad tiene sentido: * Exepto cuando hay instrucciones de salto. y la ventana de profundidad durante la iteracion va a ser pequeña. * Es raro tener una seguencia larga initerrumpida de llamadas a procedimientos con sus retornos correspondientes. * La mayoria de las instruccioes iterativas contienen pocas instrucciones.

mayor puertas implicadas en el direccionamiento de estas. ya que hay muchos datos interesantes. se aprecia como durante un periodo apreciable de tiempo se hace referencia a llamadas que contiene una misma ventana. Igualmente hay otros motivos que nos restringen a tamaños de cache grandes. es imposible predecir un tamaño óptimo. en el se puede observar ventanas de profundidad igual a 5. uno es que cuanto mas grandes las caches. Tamaño de la cache: Lo ideal seria tener una cache lo suficientemente pequeña para que el costo promedio por bit se aproxime al costo de la memoria principal. Estructura de la cache: Vamos a ver algunos criterios básicos de diseño que nos van a servir para clasificarlas y poder diferenciar las distintas arquitecturas de cache. Diversos estudios han llegado a que el tamaño óptimo estaría entre 1K y 512K palabras. ahora para aprovecharlo tendríamos que saber el tamaño óptimo del bloque para pasar de memoria a cache y la cantidad de bloques que tendría que alojar la cache. Función de correspondencia: . para eso seguiré con las características de las cache. y que sea lo suficientemente grande para que la velocidad de acceso promedio se aproxime a la velocidad de la memoria cache. lo cual implica que un mayor el tamaño tiende a cache mas lentas.Este gráfico se basa en las llamadas a procedimiento de un programa con su retorno correspondiente. y la cache depende de eso. Como se vera que no hay duda de los beneficios de tener en cuenta este principio. Como las tareas a realizar por el procesador son muy variables. Mas adelante vos a ampliar esta parte.

La cache consta de C líneas de K palabras cada una. además que necesitamos elegir que bloque se van a almacenar en la cache. debe haber una función de correspondencia que nos indique a que bloque de memoria principal corresponde cada línea de la cache. En todo momento hay un subconjunto de bloques alojado en la cache. estas palabras están agrupadas en M bloques de k palabras cada uno. Pueden utilizarse 3 técnicas de correspondencia: * Directa. * Asociativa por conjuntos. y como hay menos líneas en la cache que bloques en la memoria principal.La memoria principal consta de hasta 2 elevado a la N palabras direccionables de n bits cada una. . * Asociativa.

direccionable de a byte. . Para poder realizar la correspondencia vamos a considerar que la memoria consta de 4M bloques de 4 bytes cada uno.Para explicar las tres técnicas vamos a usar los siguientes elementos: * Cache de 64 Kbyte. para lo cual se necesita una dirección de 24 bits para poder hacer referencia a los 16M de direcciones. * Los datos se transfieren entre memoria y cache en bloques de 4 bytes. por lo cual la cache esta organizada en 16K líneas de 4 bytes cada una. cada bloque de la memoria principal se puede alojar solo en una línea específica de la cache. Correspondencia directa: Es la más simple. * Una memoria principal de 16Mbytes.

y el resto identifica la línea dentro de este conjunto de bloques.La función de correspondencia se implementa tomando la dirección de memoria y dividiéndola en tres. este numero de línea se corresponde con la línea de cache. y va a la cache y busca en ese mismo numero de línea la etiqueta. lo que resta se divide en dos. Debido a este tratamiento cuando se necesita buscar una dirección en cache. . la parte menos significativa identifica la palabra dentro del bloque. la parte mas significativa identifica la etiqueta. el sistema toma de la dirección la parte que identifica la línea. cada etiqueta identifica un conjunto de bloques.

si en esa línea encuentra la etiqueta igual a la etiqueta de la dirección de memoria se ha producido un acierto. el costo es mayor. una sola comparación. para lo cual la lógica de la cache interpreta la dirección de memoria de la siguiente forma: los bits menos significativos sirven para identifi car la palabra dentro de la linea. porque cada bloque se podía ubicar solo en una linea determinada de la cache. mediante circuitería extra se hace la comparación de todas las etiquetas de las lineas de la cache en paralelo. cada posición de la memoria principal se puede alojar solo en una posición de la cache. asiendo que baje la tasa de asierto. En la correspondencia directa la lógica de la cache se dirigía directamente a una linea en particular de la cache. para que la búsqueda tarde lo mismo que en la correspondencia directa. Imaginemos que el procesador hace referencia repetidas veces a dos palabras de bloques de memoria principal diferentes. En el caso de la asociativa. Correspondencia asociativa: Esta correspondencia supera la desventaja de la anterior. entonces recién ahí se usan los bits menos significativos de la dirección para identificar la palabra dentro de la línea de la cache. los bloques de la memoria principal se pueden ubicar en cualquier linea de la cache. Como se puede ver. como un bloque de memoria puede alojarse en cualquier linea de la cache. Es la función más fácil de implementar. Este problema se resuelve con la siguiente función de correspondencia. simultáneamente. La principal desventaja de esta correspondencia es la complejidad de la circuitería requerida. y al resto de los bits se lo llama etiqueta y sirve para identificar si la linea le corresponde al bloque requerido. por lo cual menos costosa pero tiene un problema importante. a los que les corresponde la misma línea dentro de la cache. tendría que comparar cada etiqueta de cada linea de la cache hasta encontrar coincidencia o el final de la cache. en ese caso el sistema estaría cambiando continuamente el bloque dentro de la cache. . Obviamente al ser mas compleja la circuitería.

la lógica de la cache solo tiene que chequear una posición de cada conjunto. Lo mas común son las cache organizadas en 2 conjuntos. y se la llama correspondencias asociativa por . pero de cualquier conjunto.Correspondencia asociativa por conjuntos: Esta correspondencia toma lo bueno de las dos anteriores. la cache se divide en conjuntos y un bloque de memoria principal puede ubicarse solo en una posición.

. Como un bloque de memoria principal solo se puede ubicar en un solo conjunto. la etiqueta a comparar posee menos bits. una comparación por vía. Las de 4 vías producen una leve mejora y mas vías producen muy poca mejora. y además hay que compararla contra menos posiciones de la cache.conjuntos de 2 vías. mejora considerablemente el rendimiento de la asociativa.

. un bloque de memoria principal puede ubicarse en una sola ubicación de cualquiera de los dos conjuntos de la cache.Este gráfico ejemplifica una correspondencia asociativa por conjuntos de 2 vías.

Sign up to vote on this title
UsefulNot useful