MEMORIAS MULTIPUERTO: CONCEPTO CONCEPTO DE MEMORIAS DE DOBLE PUERTO: i RAM QUE PUEDE SER ACCEDIDA SIMULTÁNEAMENTE POR MÁS DE UN SISTEMA. i DISPONIBILIDAD DE CONJUNTOS DE BUSES DE CONTROL, DIRECCIONES Y DATOS. i COMPUESTA POR CELDAS CON DOS ACCESOS REALES A LA CELDA SISTEMAS PREVIOS, ALTERNATIVOS SISTEMA DE E/S (DISCO) CONCESIÓN SOLICITUD CPU SISTEMA DE E/S (DISPLAY) MEMORIA DIRECC. DATOS R/W ARBITRACIÓN PARA MULTIPLEXACIÓN DEL ACCESO, O DMA junio 1999 * No hay conflicto por acacceso (un sistema se para). * Se requieren memoria que trabajen al doble de frecuencia (la velocidad se reduce a la mitad) * Con D.P. se dobla la eficiencia "MEMORIAS MULTIPUERTO" Para describir y estudiar las memorias multipuerto, se van a utilizar, como ejemplo, las memorias de doble puerto. Si bien éstas son un caso particular de las mismas, también es cierto que son las más utilizadas y más extendidas. No obstante, se mostrarán otras memorias de más de dos puertos, como ejemplo de otros tipos de memorias multipuerto. Hay que hacer hincapié en que cada uno de estos conjuntos de buses, acceden a las mismas celdas del array de la memoria. Una memoria de doble puerto (DP) es una memoria RAM a la que se puede acceder simultáneamente desde dos sistemas diferentes, lo que implica que el array de memoria puede ser accedida por dos conjuntos de buses de direcciones, datos y control. Antes de su existencia, el acceso a una memoria por parte de dos sistemas, o más, debía ser realizado por el diseñador, multiplexando el acceso a una memoria RAM de un solo puerto. La multiplexación en el tiempo para utilización del recurso (memoria en este caso) en el tiempo, asegura que no hay conflictos en los accesos (dos sistemas queran hacer uso de un mismo bus para realizar transferencias), no obstante, el tiempo de acceso aumenta, y el rendimiento de la memoria (en lo que se refiere a tiempo de acceso) es inferior a la mitad (de media). Utilizando RAM de DP la eficiencia se dobla, además de que no existen restricciones de acceso, para dos sistemas. Cada uno de los conjuntos de buses controla independientemente, y pueden hacerlo simultáneamente, el acceso a cualquier palabra de memoria. Pueden incluso hacerlo a la misma posición, con ciertas restricciones que posteriormente se estudiarán. Cada uno de los sistemas puede utilizar un reloj (o frecuencia de acceso) diferente, lo que proporciona una sincronización inherente que supone uno de los mayores beneficios, al usar DP para establecer una comunicación entre ellos. 5 MEMORIAS MULTIPUERTO: ESTRUCTURA DIAGRAMA DE BLOQUES (MEMORIA DE DOBLE PUERTO) E/S DE DATOS IZDA. E/S DE DATOS DCHA. DIRECC. DIRECC. R/W DATOS DECOD. DE DIRECCIONES IZDA. MEMORIA RAM DE CELDAS DE DOBLE PUERTO DECOD. DE DIRECCIONES DCHA. R/W CPU O SISTEMA DE E/S DCHA CPU O SISTEMA DE E/S IZDA DATOS ARBITRACIÓN DE ACCESOS * DOS CONJUNTOS DE BUSES COMPLETOS * ACCESO INDEPENDIENTE Y SIMULTÁNEO, INCLUSO A LA MISMA PALABRA EL PRINCIPAL BENEFICIO ES LA SINCRONIZACIÓN INHERENTE QUE PRO-PORCIONA SISTEMAS QUE SE COMUNIQUEN MEDIANTE MEMORIAS M.P. junio 1999 "MEMORIAS MULTIPUERTO" Una memoria de doble puerto está constituida por un único array de celdas de memoria, como la que se mostrará posteriormente, al cual se accede desde dos sistemas de entrada/salida diferentes (uno por cada puerto), previa decodificación de direcciones. Para la decodificación de direcciones y control de acceso existe una lógica independiente para cada uno de los puertos. La forma de acceder/entregar los datos, así como la de suministrar o generar las direcciones, van a depender de cada tipo de memoria en particular, por lo que se presentarán diferentes opciones, que se detallarán en el momento oportuno. En el caso de las memorias asíncronas, que a continuación se estudiarán, incluyen un bloque de arbitración de accesos, evitando así conflictos (accesos simultáneos que puedan poner en peligro la consistencia de los datos), el cual facilita la tarea de diseño e incluye sistemas para implementación de protocolos, que proporcionan a este tipo de memorias una gran potencialidad de aplicación. Esto hace que este tipo de memorias posea una líneas de arbitración, en sus diferentes modos, además de las estándar de datos direcciones y control. En cada tipo de memoria, se incluirá la descripción del patillaje típico de las mismas. 6 MEMORIAS MULTIPUERTO: TIPOS z TIPOS DE MEMORIAS DE MULTIPLE PUERTO: CIRCUITOS DE CONTROL DE ACCESO Y OPERACIÓN * ASÍNCRONAS Acceso aleatorio, sin señal de reloj de sincronismo, controlado por (CE, OE, R/W, xB) * SÍNCRONAS Posibilita los accesos en modo ráfaga “burst”, sincronizados por una señal de reloj externo, captura de direcciones y autoincremento de direcciones junio 1999 DECODIF. Y REGISTRO DE DIRECCIONES CONTADOR "MEMORIAS MULTIPUERTO" Existen dos tipos de memorias DP, memorias asíncronas y memorias síncronas. Las memorias asíncrona, como su propio nombre indica, no están sujetas para la realización de una operación de entrada salida a ninguna temporización rígida, salvo las marcadas por sus propias cronogramas, pero no siguen la secuencia de ningún reloj. La operación de lectura o escritura se realiza bajo el control de las líneas de selección de chip, la habilitación de salida y la operación a realizar. Estas operaciones se pueden dar en cualquier momento, por parte de cualquiera de los puertos. Estas memorias se adaptan perfectamente a sistemas con microprocesadores que trabajan en bus asíncrono. En el caso de las memorias síncronas, además de tener activas las líneas de selección de chip y el resto de las de control en el estado deseado (lectura escritura), la operación no se llevará a cabo hasta que suceda una transición. Las señales que controlan el acceso al dispositivo -selección de chip, sentido de la transferencia, posición a la que se accedeson registradas internamente por el dispositivo, realizándose la captura en el flanco ascendente de la señal de reloj. Por tanto, los accesos están sincronizados con dicho reloj. Otras funciones que este tipo de memorias suele incluir, como captura de señales de direcciones e incremento de las mismas, o almacenamiento en registro de los datos de salida, también se realizan sincronizados por dicha señal de reloj. 7 MEMORIAS MULTIPUERTO: UTILIDADES UTILIDADES: * COMUNICACIÓN Y SINCRONIZACIÓN DE DISPOSITIVOS A TRAVÉS DE MEMORIA, PARA TRANSFERENCIA DE DATOS, A LA VEZ QUE ALMACENA DATOS. * SIMPLIFICACIÓN DEL DISEÑO DE SISTEMAS CON MEMORIA COMPARTIDA. * ACCESOS DMA SIN DETENER LOS ACCESOS DE LA CPU. * REALIZACIÓN DE SISTEMAS DE MEMORIA CACHÉ. * REGISTROS INTERNOS DE CPU´S CON DOS ACCESOS. * ACCESOS SIMULTÁNEOS AL MISMO CHIP. * SISTEMAS DE COMUNICACIONES, SIRVIENDO DE BUFFER Y ADAPTANDO VELOCIDADES * PERMITE ACCESOS E INTERCAMBIO DE DATOS MUY RÁPIDOS Y SENCILLOS EVITAN: * CIRCUITERÍA ESPECIAL PARA REALIZARLAS A PARTIR DE RAM ESTÁNDAR * DETECCIÓN DE CPU EN ACCESOS DMA * MEMORIA LOCAL Y MEMORIA COMPARTIDA (TIEMPOS CRÍTICOS DE ACCESO) junio 1999 "MEMORIAS MULTIPUERTO" Las características de este tipo de memorias RAM permiten que a través de ellas se puedan comunicar diferentes dispositivos, como pueden ser CPU, controladores de disco, de video, impresoras, etc. También pueden usarse para enlazar dos CPU´s que estén desarrollando dos tareas distintas pero relacionadas, y que precisen comunicarse datos o tablas de una a otra. En este tipo de aplicaciones, además de proporcionar una vía de comunicación de muy fácil diseño, sirven también como almacén de datos para ambos sistemas. Además, evitan la necesidad de tener que diseñar circuitos especiales, y en ocasiones complejos, para llevar a cabo estas comunicaciones. En sistemas que necesitan disponer de memoria compartida, dado que utilizan los mismos datos y variables, las memorias de múltiple puerto evitan la saturación del único bus de las memorias convencionales, por el que todas las CPU acceden a la memoria, aumentando el rendimiento (posibilitando accesos más rápidos, puesto que no se depende de que el bus esté ocupado por otro procesador que accede a la memoria), a la vez que evitan tener que diseñar y construir los circuitos de multiplexación y control de acceso a la memoria. Un caso particular son los accesos DMA Tradicionalmente, cuando un dispositivo periférico deseaba realizar una transferencia masiva de datos mediante este tipo de acceso, dejaba en estado de espera a la CPU, dado que no disponía de otro camino posible para acceder a memoria. Como consecuencia de esto, el rendimiento de la CPU se venía reduciendo aproximadamente a la mitad de sus posibilidades. Otra utilidad de este tipo de dispositivos es facilitar el diseño de sistemas con jerarquía de memoria, consiguiendo acelerar el proceso de transferencia de bloques entre memoria central del sistema y el procesador, funcionado de este modo como sistema de memoria caché “look a through”. 8 Las memorias DP son idóneas para implementar registros de CPU segmentadas, puesto que permiten dos accesos simultáneos, haciendo posible que la CPU pueda trabajar por su bus interno, mientras el registro almacena o carga datos en/desde memoria central, por el otro puerto. El último avance de los dispositivos DP ha consistido en la consecución de dispositivos de alta velocidad (síncronos). Éstos posibilitan accesos de muy alta velocidad a dos sistemas con el mínimo coste de retardo e interferencia. Adicionalmente, pueden servir para “bufferear” transferencias entre sistemas con diferente reloj de operación. En resumen, el gran logro de los dispositivos multipuerto ha sido la sencillez que han aportado al diseño de sistemas electrónicos, en ocasiones de alta velocidad de acceso, mejorando notablemente el rendimiento de los sistemas. CÉLULA DE MEMORIA DE DOBLE PUERTO WR 1 LINEA DE DATO (1 BIT) ESCRITURA (WRITE) IZDA. WR 1 WR 0 SELECCIÓN DEL LADO DCHO. ( DECOD. DIRECC.) ESCRITURA (WRITE) DCHA. WR 0 RD RD CELDA RAM “LATCH” LECTURA (READ) IZDA. junio 1999 ACTIVACIÓN LADO DERECHO LINEA DE DATO (1 BIT) SELECCIÓN DEL LADO IZDO. ( DECOD. DIRECC.) ACTIVACIÓN LADO IZQUIERDO LECTURA (READ) DCHA. "MEMORIAS MULTIPUERTO" Cuando se trabaja con este tipo de memorias es habitual colocar el subíndice “I”ó “L” (left) a los terminales de todos los buses del puerto de la izquierda y “D” ó “R” (right) a todos los terminales conectados al puerto de la derecha. Consta, por cada uno de los lados, de una señal de selección procedente de la lógica de selección correspondiente, y que activará 8 de estas celdas (si el tamaño del dato de memoria s es de 8 bits). Estas señales son independientes. Además posee de una línea para indicar si la operación realizada es de lectura o de escritura. En el caso de que la línea de selección esté activada, si se selecciona escritura se cogerá el dato desde la línea de datos (por medio de la línea superior de la figura) y el estado de dicha línea se cargará en el “latch” que constituye la celda de memoria. Si la operación a realizar es la de escritura, el valor acumulado en dicho “latch” se pondrá en la línea de datos. Hay que hacer constar, que en el caso de que se acceda simultáneamente (caso posible) a la celda, si es en lectura no se presenta ningún conflicto, pero si mientras uno de los lados lee el otro intenta escribir, no se puede asegurar cual será el dato de la lectura. Nótese que también es posible que ambos lados accedan en escritura. El conflicto que esto genera se intentará resolver con el sistema de arbitración, como se estudiará. 9 MEMORIAS DE DOBLE PUERTO ASÍNCRONAS (I) MEMORIA DE DOBLE PUERTO ASÍNCRONA POSEE DOS CONJUNTOS COMPLETOS DE BUSES SE PUEDE ACCEDER SIMULTÁNEAMENTE POR AMBOS PUERTOS INCLUSO A LA MISMA POSICIÓN -EXTERNAMENTE PUEDE NO CORRESPONDER LA DIRECCIÓN ACCESOS SIMULTÁNEOS DE LECTURA A LA MISMA POSICIÓN NO PRESENTAN NINGÚN CONFLICTO. ¿¿¿ ESCRITURA-LECTURA / ESCRITURA-ESCRITURA ??? SEÑALES DE ARBITRACIÓN DE ACCESO OPERACIÓN junio 1999 RESULTADO DE LA OPERACIÓN PUERTO IZDO PUERTO DCHO LECTURA LECTURA AMBOS LEEN LECTURA ESCRITURA ESCRITURA LECTURA EL PUERTO QUE ACCEDIÓ MÁS TARDE PUEDE LEER, PERO EL DATO LEÍDO PUEDE NO SER VÁLIDO. SU ESCRITURA ESTÁ BLOQUEADA INTERNAMENTE ESCRITURA ESCRITURA "MEMORIAS MULTIPUERTO" A las celdas de la memoria asíncrona se puede acceder independientemente por ambos puertos, y sin ninguna sincronización. Esto hace que pueda darse el caso en que simultáneamente se está accediendo a la misma posición. Cuando ambos accesos sean en lectura, ambos puertos leerán el mismo dato y la lectura será correcta. En el caso en que uno de los dos puertos acceda en modo escritura, o ambos, se plantearía un problema de coherencia de datos. Si uno de los puertos accede en escritura y simultáneamente el otro accede en lectura, pueden ocurrir dos cosas: si el puerto que accede en escritura es el prioritario para la memoria (realizó el comienzo del acceso antes que el otro -ganador o poseedor del recurso-) se permite la lectura del segundo puerto, pero el dato leído puede ser el antiguo, el nuevo o una mezcla de ambos. No obstante, como se verá en el apartado de arbitración de accesos, se indicará al sistema que está accediendo simultáneamente con el otro puerto y que por tanto la lectura puede no ser válida. En el caso de que el que sea prioritario es el de lectura, aunque externamente se posibilita la lectura por parte del otro puerto, internamente se bloquea el acceso hasta las celdas de acumulación de datos. El dato leído por el puerto es correcto y se envía al puerto que intenta escribir una señal de acceso simultáneo. Cuando se diera la situación de que ambos puertos acceden en escritura a la misma posición, el sistema interno de la memoria bloquea la escritura del puerto que accedió más tarde al recurso (aunque los accesos se solapan, son simultáneos) dando paso a la escritura por parte del otro puerto, e indicando a aquel, mediante la activación de una señal, que su acceso ha sido infructuoso. 10 La solución al problema que presenta el acceso simultáneo a una misma posición, se solventa mediante la lógica y circuitos de arbitración de acceso. Esta arbitración se suele llevar a cabo mediante 4 técnicas diferentes, tres de las cuales cuentan con la ayuda de circuitos incorporados en los propios chip de memorias DP. Se trata de la arbitración por medio de : interrupciones, semáforos, y señal de ocupado. No todas las memorias incorporan los tres sistema. No obstante, a continuación se muestra un ejemplo de memoria que cuenta con todos ellos, y por ende con los terminales: INT#, SEM# y BUSY#. MEMORIAS DE DOBLE PUERTO ASÍNCRONAS (II) EJEMPLO DE MEMORIA DE DOBLE PUERTO ASÍNCRONA junio 1999 "MEMORIAS MULTIPUERTO" 11 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (I) MÉTODOS PARA LA ARBITRACIÓN DE ACCESOS • Van a depender de los recursos que proporcione la propia memoria • Arbitración realizada por el diseñador del sistema • Acceso por división en áreas • Acceso mediante semáforos • Acceso originado por señales de interrupción • Acceso bloqueado por señal de ocupado junio 1999 "MEMORIAS MULTIPUERTO" Con la arbitración de accesos a memoria se pretender dar solución al problema de accesos simultáneos, desde los dos puertos a la misma posición de memoria. La solución a este problema normalmente se realiza en hardware, aunque, como se plantea aquí, existe otra solución que es realizar un reparto de accesos a diferentes zonas en diferente tiempo. Los tres últimos modos de arbitración indicados suelen estar incluidos en la lógica de control de las memorias DP para resolver los problemas de aplicación más comunes: señalización entre procesadores (interrupciones), interacción cuando ambos están usando la misma posición (señal de ocupado) y hardware para asignar temporalmente un bloque de memoria sólo a un puerto (semáforos). En lo que sigue, se pretende mostrar la forma de empleo de esta arbitración, problemas que presenta, las soluciones a los mismos cronogramas implicados. Los cronogramas de escritura y lectura por cada uno de los puertos, sin estar involucradas más señales que las de selección, son similares a los tratados en otras memorias, por lo que no se reincidirá sobre ellos. 12 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (II) ARBITRACIÓN MEDIANTE ÁREAS · Se divide la memoria en dos áreas. · Cada sistema tiene acceso a una de las áreas. · El acceso a cada área se conmuta, entre los sistemas externos, en cada intervalo de tiempo. ZONA A SISTEMA A ZONA A SISTEMA B SISTEMA A ZONA B SISTEMA B ZONA B * Método bueno para intercomunicación entre sistemas, no hay lógica de arbitración * No es eficiente como memoria de datos compartidos junio 1999 "MEMORIAS MULTIPUERTO" Esta forma de arbitración consiste en diseñar los sistemas de tal forma que ambos lados nunca puedan usar la misma dirección al mismo tiempo. Para ello se divide la memoria en dos áreas (estructura realizada por el diseñador del sistema), y temporalmente se asigna a cada puerto un área. Posteriormente se intercambian las áreas y así sucesivamente. Este sistema es bueno en aplicaciones de intercomunicación entre procesadores (se depositan y leen datos en la zona A y se cambia el acceso -por tiempo- a la zona B, se depositan y leen datos y se cambia de nueva a la zona A ). En este caso se consigue el mayor rendimiento que puede alcanzarse con una DP, ya que no existen retardos debidos a la lógica de arbitración. Un caso típico es actualizar una tabla que no se debe pasar al otro procesador (porque no la puede usar hasta que no este completa) y posteriormente que el otro procesador la utilice. En el caso que no se quiera hacer una división por tiempos, los procesadores deberán indicarse mutuamente que su parte ya está procesada, y que ceden esa zona. Este tipo de arbitración en la que ambos procesadores deciden cuando están de acuerdo en el uso de una zona por cada uno se denomina arbitración software. El método de indicar la disponibilidad de intercambio de zonas entre procesadores puede llevarse a cabo haciendo uso de las interrupciones de los sistemas. Para arbitrar un protocolo de esta manera, es necesario intercambiar cuatro mensajes: un procesador A solicita el uso de un recurso; el sistema B responde diciendo que está de acuerdo; cuando A termina de procesar envía un mensaje a B comunicando que puede volver a tomar la zona y B responde con el asentimiento. 13 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (II) ARBITRACIÓN MEDIANTE SEMÁFOROS REALIZADO POR EL DISEÑADOR: · Se asigna capacidad de acceso temporal de un bloque de memoria · Se utiliza una palabra de la propia memoria para almacenar marcas -semáforos- de recurso libre / ocupado. · Cuando se desea acceder a un recurso se consulta su semáforo. · En el caso de que se encuentre libre se marca ocupado y se accede. · Cuando se termina el acceso se marca como libre. 11....11 01....11 01....11 11....11 RECURSO A RECURSO B RECURSO B RECURSO N+1 junio 1999 "MEMORIAS MULTIPUERTO" Para evitar tener que comunicar cuatro mensajes, y su cabecera, para intercambiar el acceso a una zona, puede utilizarse un sistema de semáforos (token). Consiste en utilizar un bit de una palabra de la propia memoria DP para indicar el estado de ocupado/libre del recurso (zona de memoria). Cuando se desea acceder a la zona se consulta el estado del “flag” de semáforo (lectura de la palabra desde el puerto correspondiente), y si está desactivado significa que el otro puerto no tiene posesión de esa zona. Se escribe activado, para que no lo pueda tomar el otro puerto si es que desea acceder en el tiempo en que se esté ocupando, se realiza el acceso, y cuando se termine éste, se vuelve a colocar de nuevo la marca de libre. Para marcar el acceso a diferentes zonas, es suficiente con utilizar un bit por cada una. En cualquier caso, es responsabilidad del programador asignar cada bit a cada zona e implementar el sistema de control. 14 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO(III) · Necesidad de devolver el testigo. · En espera se deben realizar sucesivas consultas. · Ambos sistemas pueden tomar el control (salvo retención de buses). Sistema A lee Procesa, detecta libre y comienza la reserva y posesión Sistema A escribe “L” H Sistema B lee H Procesa, detecta libre y comienza la reserva y posesión L Sistema B escribe “L” L t junio 1999 "MEMORIAS MULTIPUERTO" La utilización de este tipo de semáforos software lleva implícitos unos problemas, que no siempre son fáciles de resolver. En primer lugar se encuentra la necesidad de devolver el testigo (colocar en estado libre) por parte del procesador que ha utilizado el recurso, ya que en otro caso el otro puerto nunca podría acceder a él. Además, si un procesador desea adquirir una zona de memoria que se encuentra marcada como ocupada por el otro puerto, se deberán realizar varias consultas hasta que se detecte que está libre. Existe otro problema más difícil de resolver. Cuando un sistema lee la memoria para saber si el semáforo indica que la zona deseada está libre, debe trasladar el contenido de la memoria al procesador, comprobar, y si está libre, realizar un acceso en escritura para marcar como ocupado. Si en ese transcurso de tiempo el otro puerto realiza la misma operación, como el primer puerto aún no ha marcado como ocupado, también se creerá que es poseedor del recurso (zona de memoria) y lo querrá marcar como ocupado. En este instante ambos procesadores se creen con derechos de realizar accesos a la zona. Tradicionalmente este problema que resulta de utilizar semáforos hardware cuando se accede a un recurso compartido, se ha resuelto mediante instrucciones atómicas (ciclos de lectura-modificación-escritura -RMW- -Test And Set-) en los que un procesador accede a leer con intención de poder escribir después, no cediendo los buses en ese intervalo. Esto solucionaba el problema trabajando con memorias de un sólo puerto, pero en este caso se puede acceder por el otro. 15 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (II) SISTEMA INCORPORADO EN LA MEMORIA: · · · · Recurso a parte de la memoria, no es una posición Lógica interna de semáforos, de D.P. Se marca la solicitud de acceso a un bloque. Se comprueba la concesión Función realizada P. izdo. escribe 0 en el semáforo P. dcho. escribe 0 en el semáforo P. izdo. escribe 1 en el semáforo P. izdo. escribe 0 en el semáforo P. dcho. escribe 1 en el semáforo P. izdo. escribe 1 en el semáforo P. dcho. escribe 0 en el semáforo P. dcho. escribe 1 en el semáforo P. izdo. escribe 0 en el semáforo P. izdo. escribe 1 en el semáforo junio 1999 IO15 / IO0 izda. 1 0 0 1 1 0 1 1 1 0 1 IO15 / IO0 dcha. 1 1 1 0 0 1 1 0 1 1 1 Escribir “L” Leer ¿ L? Si recurso adquirido t Estado Semáforo libre P.izdo.adquiere el control No cambia P.dcho.no adquiere el control P.dcho.adquiere el control No cambia P.izdo.no adquiere el control P.izdo.adquiere el control Semáforo libre P.dcho.adquiere el control Semáforo libre P.izdo.adquiere el control Semáforo libre "MEMORIAS MULTIPUERTO" Para solucionar el problema que presentan los semáforos software y eliminar el tiempo de enviar 4 mensajes para intercambiar el acceso a una zona, algunas memorias DP proporcionan un sistema de semáforos hardware. Este sistema de semáforos, puede estar activado hacia un puerto, hacia el otro o hacia ninguno, pero en ningún caso hacia ambos, para poder asegura que sólo un lado tiene permiso para acceder a la zona de memoria. El funcionamiento de esta arbitración hardware se explica a continuación. La memoria puede ser estructurada “funcionalmente”, por el diseñador del sistema, en varias zonas o áreas. Normalmente, el sistema de semáforos hardware que incorporan las memorias, consta de 8 de éstos, los cuales se pueden solicitar y consultar desde ambos puertos. Cada semáforo se asociará a una determinada zona de memoria. Cuando un procesador quiere utilizar una zona desde su puerto correspondiente, escribe un cero “L”en el semáforo asignado1. A continuación se consulta el semáforo, y si se lee a nivel bajo significa que se ha concedido la posesión de la zona. Cuando se termine su utilización (accesos para los que se requirió) es necesario desactivar el semáforo escribiendo un uno “H” sobre él. Si después de escribir un nivel bajo se lee a nivel alto, significa que por el otro puerto fue solicitado con anterioridad y que se está utilizando la zona a la que representa. 1 Los semáforos se seleccionan por medio de las líneas de direcciones con valores del 0 al 7 -para 8 semáforos,, y con la línea SEM# activada.. En este caso, la memoria no responde como tal, sino que las líneas de datos y direcciones se usan para acceder al semáforo. Del dato leido o escrito sólo es significativo el bit de menor peso. 16 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO(III) MODO DE MANEJO Y LÓGICA DE SEMÁFOROS DATOS DATOS E/S DATOS CPU E/S DATOS R/W DECODIF. DE DIRECCIONES SELECCIÓN DE CELDAS DE MEMORIA DECODIF. DE DIRECCIONES R/W SELECCIÓN DE SEMAFORO CELDAS DE SEMÁFOROS SEMAFORO SEM SEM LADO IZQUIERDO LADO DERECHO SOLICITUD D ESCRITURA DEL SEMÁFORO E CONCESIÓN CPU DIREC. DIREC. SOLICITUD Q Q E LATCH DEL SEMÁFORO DE ARBITRACIÓN ESCRITURA DEL SEMÁFORO CONCESIÓN Nunca pueden activarse ambos lados simultáneamente junio 1999 "MEMORIAS MULTIPUERTO" Los “flag” de semáforo consisten en ocho “latch” DP direccionables individualmente. Se seleccionan por una línea separada de chip enable (SEM) y su dirección se comunica por las tres líneas de direcciones menos significativas. Su escritura y lectura se realiza a través del pin de datos Do. Excepto porque comparten las líneas de datos, direcciones y R/W el sistema de semáforos y el de memoria son completamente independientes (figura). En la figura se muestra la lógica del latch . En ella, ambos flip-flop se encuentran inicialmente a nivel alto, y las dos salidas de concesión también. Si existe una petición simultánea por los dos puertos, y entre ellas transcurre un tiempo inferior a tSPS, marcado por el fabricante, debido al diseño de la lógica interna, solamente uno se activará, pero no puede determinarse cual. Una vez solicitado el semáforo, aunque no haya sido concedido, cuando el otro puerto lo desactive se activará automáticamente, a no ser que voluntariamente se hubiese retirado la solicitud (escribiendo un nivel alto”H“). 17 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO(IV) OPERACIÓN DE LECTURA DEL SEMÁFORO DESPUÉS DE LA ESCRITURA tOHA tAA A0 A2 DIRECC. VÁLIDA DIRECC. VÁLIDA t AW tAC E tHA SEM tSOP t SCE tSD I/O 0 DATOout VÁLIDO DATOin VÁLIDO t SA tHD t PW E R/W tSWRD tSOP OE CICLO DE ESCRITURA tAA Address to data valid tOHA Output hold from address change tACE CE to data valid tDOE OE to data valid tAW Address valid to write end tSCE CE to write end junio 1999 tDOE CICLO DE LECTURA 15 ns MAX 3 ns MIN 15 ns MAX 10 ns MAX 12 ns MIN 12 ns MIN tSA Address setup to write start tSD Data setuo to write end tPWE Write pulse width tHD Data hold from write end tSWRD SEM flag write to read time tSOP SEM Flag update pulse (CE o SEM) 0 ns 10 ns MIN 12 ns MIN 0 ns 5 ns MIN 5 ns MIN "MEMORIAS MULTIPUERTO" Para poder escribir en el semáforo (activación o desactivación), es necesario cumplir los tiempos que el fabricante del dispositivo señala. Así, por ejemplo, para poder acceder a la escritura del semáforo, la señal de CE# (SEM#) debe permanecer activada a nivel “L” al menos un tiempo tSCE. La captura se llevará acabo con el flanco ascendente de SEM o R/W# (la que primero suceda). Además, el pulso de escritura W# debe permanecer activo al menos tPWE. La señal de escritura nunca debe aparecer antes de transcurrido un tiempo tSA desde la aparición de las direcciones, y el tiempo de aparición del flanco de subida de la señal SEM# nunca debe aparecer antes de transcurrido tAW desde las direcciones. Después de escrito un dato, no debe activarse la señal de OE# antes de que transcurra un tiempo inferior a tSWRD, que es el tiempo mínimo que se debe dejar transcurrir desde que se da la orden de captura de un dato en el semáforo, hasta que este se puede consultar. El dato tardará, en aparecer a la salida, como máximo, un tiempo tDOE después de activar OE# y tACE después de activar SEM#. 18 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (V) SOLICITUD DE SEMÁFORO POR AMBOS PUERTOS A0L A2L MATCH R/WL SEM L tSPS A0R A2R MATCH R/WR SEM R tsps SEM Flag contention window 5 ns MIN SI NO SE RESPETA EL TIEMPO TSPS SÓLO SE ACTIVARÁ EL SEMÁFORO EN UN LADO, PERO ES IMPREDECIBLE EN CUAL junio 1999 "MEMORIAS MULTIPUERTO" Supuesto que las direcciones del lado izdo y dcho correspondientes a un semáforo se encuentran activadas y son coincidentes, si se presentan SEML# y SEMR# (ambos en acceso a escritura) separados un tiempo inferior a tSPS, solamente se activará para uno de los dos, pero no se puede determinar cual. 19 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO(VI) ARBITRACIÓN MEDIANTE INTERRUPCIONES · PROVOCA UNA INTERRUPCIÓN PARA INDICAR COMUNICACIÓN, SOLICITUD O ENTREGA DE DATOS. · EVITA CONTINUOS MUESTREOS DE LOS “FLAG”. · ESCRITURA/LECTURA EN LAS POSICIONES MÁS ALTAS PARA GENERAR Y DESACTIVAR INTERRUPCIONES. ESCRITURA LADO IZDO. DIRECC.= 3FF DIRECCIONES LADO IZDO. DIRECC.= 3FE LECTURA LADO IZDO. INTERRUPCIÓN AL LADO IZDO. junio 1999 INTERRUPCIÓN AL LADO DCHO. LECTURA LADO DCHO. DIRECC.= 3FF DIRECC.= 3FE LECTURA LADO DCHO. * Los accesos simultáneos, pueden ser múltiples, y esta opción ralentiza el sistema. * Bueno para comunicación de datos disponibles y comienzo de procesamiento ESCRITURA LADO DCHO. "MEMORIAS MULTIPUERTO" La arbitración mediante interrupciones es una solución software apoyada por el hardware de la DP, que estrictamente no es un método de arbitración, si por esto entendemos que se indique a un procesador que desea acceder a un recurso, que éste está ocupado. Sin embargo, facilita la interfaz entre dos sistemas que deben comunicarse datos y el envió de señales de aviso de fin de utilización del recurso. El sistema de arbitración mediante semáforos resuelve el problema de múltiples envíos de mensajes entre procesadores, pero cuando un procesador desea acceder a una zona y no puede porque el semáforo que la representa indica estado de ocupado, este sistema debe muestrear secuencialmente al mismo para detectar cuando el recurso queda libre. A priori, sería más interesante una opción en la que el procesador no necesitase chequear constantemente el estado del semáforo. El sistema de arbitración de interrupciones hardware, posibilita que el sistema conectado a un puerto pueda interrumpir al otro para indicarle: que ya ha terminado de utilizar el recurso (al que se refiera la interrupción), que le ha depositado datos, que ya ha recogido los datos que le habían transferido, etc. En la figura se representa un diagrama simplificado de la lógica de generación de interrupciones entre los puertos de una memoria DP. En dispositivos con la opción de generación de interrupciones, las dos posiciones de dirección más alta del chip sirven como generadores de interrupción (una para cada puerto). Cuando el puerto izquierdo escribe sobre la posición con dirección más alta de la memoria, se genera -activa- una interrupción al puerto derecho (salida INT#). Para desactivar esa línea de interrupción, es suficiente con que el puerto derecho lea dicha 20 posición. Además, puesto que es necesario en este protocolo reservar esta palabra de memoria para este menester, escribir sobre ella por quien genera la interrupción y leer sobre ella el sistema interrumpido, puede usarse como buzón para pasar mensajes relativos a la causa de la interrupción (comunicación de una determinada variable entre varias, solicitud de datos, etc.), sin coste de tiempo adicional. En el sentido contrario, es decir interrupción desde el lado derecho al izquierdo, el proceso es el mismo pero actuando sobre la penúltima palabra de memoria. Este tipo de protocolo, aunque es bueno para intercomunicación de sistemas y transferencia de bloques de datos, no es el idóneo (al igual que los anteriores), para realizar diseños de memoria de compartida de datos o de instrucciones, en los que continuamente se accede a realizar lectura o escrituras de volumen pequeño (unos pocos bytes). MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (VII) CRONOGRAMAS. ACTIVACIÓN/DESACTIVACIÓN DE INTERRUPCIONES EL LADO IZDO ACTIVA LA INTERRUPCIÓN AL DERECHO t WC DIRECC. LADO IZDO ESCRITURA EN FFF t HA CE I R/W I INTD tINS EL LADO DCHO DESACTIVA LA INTERRUPCIÓN DIRECC. LADO DCHO CE D t RC LECTURA EN FFF t INR R/W D OE D INTD tWC Write cycle time tHA Address hold from write end tRC Read cycle time junio 1999 15 ns MAX 0 ns tINS tINR INT set time INT reset time 15 ns MAX 15 ns MAX 15 ns MAX "MEMORIAS MULTIPUERTO" Como ejemplo de la temporización que es necesario respetar, trabajando con el sistema de interrupciones, se muestra la de la activación y desactivación de la interrupción correspondiente a uno de los puertos, siendo la del otro idénticamente igual a la aquí mostrada. En este caso, es el lado izquierdo el que activa la interrupción del derecho. Tal y como se muestra en el cronograma, la activación de la interrupción se activará, después de haber colocado la dirección, y haber activado la señal de escritura y selección de chip (desde la última de ellas) en un tiempo que nunca será superior a tINS. -retardo máximo de activación-. Para la desactivación, transcurrirá un tiempo desde que se activen: la selección de chip, la señal de lectura y habilitación de salida (la última d e ellas) no superior a tINR.. 21 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (VIII) ARBITRACIÓN MEDIANTE SEÑAL DE OCUPADO “BUSY” · EN ACCESOS ALEATORIOS, SON MÍNIMAS LAS COINCIDENCIAS A LA MISMA POSICIÓN. · DETECTAR COINCIDENCIAS Y ENVIAR SEÑAL DE INHIBICIÓN · NO DEBE COMPROBAR SI SE LE PERMITE EL ACCESO (BUENO PARA ACCESOS DE UN DATO) · EVITA PROTOCOLO DE INTERRUPCIÓN. LÓGICA DE ARBITRACIÓN DE DIRECCIONES Si las direcciones llegan simultáneamente, el diseño del “latch” asegura la activación de uno u otro lado. junio 1999 DIRECCIONES P. IZDO. DIRECCIONES P. DCHO. BUFFERS DE RETARDO COMPARADOR DE DIRECCIONES I COMPARADOR DE DIRECCIONES D CE I CE D I BUSY I INHIBICIÓN DE ESCRITURA A D B BUSY D INHIBICIÓN DE ESCRITURA "MEMORIAS MULTIPUERTO" Es el sistema idóneo para sistemas de datos compartidos, ya que permite el acceso simultáneo por ambos puertos, resolviendo los posibles conflictos que pudieran aparecer. Para llevarlo a cabo se cuenta con dos señales de ocupado (una para cada puerto). Con este tipo de arbitración, los sistemas conectados por ambos puertos acceden libremente a la memoria. No ocurriría ningún tipo de problema, si simultáneamente ambos puertos no acceden a la misma posición. Para dar solución a este caso, las memorias de doble puerto incluyen un sistema que detecta accesos simultáneos a la misma posición y generan un aviso de ocupado (BUSY#) hacia el puerto que accedió más tarde, inhibiendo además la posible escritura de éste en la memoria. En la figura se muestra el esquema del circuito que realiza la función mencionada. Este circuito suele conocerse con el nombre de lógica de arbitración de direcciones hardware. Consiste en dos comparadores de direcciones, dos buffers de retardo y un latch de acoplamiento cruzado. La característica de detectar cuál de las direcciones (una de cada puerto) ha llegado más tarde, la proporcionan los buffers de retardo y los comparadores. Si consideramos que el puerto izquierdo tiene una dirección estable, y en un determinado momento llega la misma dirección por el puerto derecho, ambos comparadores activarán su señal de salida, aunque el comparador de la derecha la activará antes. Esto es debido a que el buffer de retardo del lado izquierdo retarda las líneas de direcciones del puerto de la derecha, y estas no llegan simultáneamente a ambos comparadores. En este caso, el circuito lógico hace que se active la salida “BUSY” para el lado derecho. Si se parte de la situación de direcciones estables en el puerto derecho, y aparecen las mismas 22 direcciones por el lado izquierdo, se presentaría una situación similar a la enunciada, salvo que en este caso el comparador que tarda más en indicar coincidencia de direcciones sería el derecho, y se activaría la señal de “BUSY” para el izquierdo. Las salidas de ocupado pueden presentar únicamente tres estados posibles: ambas a nivel “H”, la derecha a nivel “H” y la izquierda a nivel “L”, y la derecha a nivel “L” y la izquierda a nivel “H”. En el caso de que ambas direcciones apareciesen a la vez, y además fuesen coincidentes, el diseño del “latch” asegura que no se activarán ambas salidas (llevaría a un estado de espera infinito), asegurando que se activaría uno u otro lado, sin poder determinar cual. En función de que los puertos accedan con la misma dirección a realizar operaciones de lectura o escritura, pueden darse varias situaciones. Si ambos puertos acceden en lectura, los dos realizarán la lectura del dato correcto. Si el puerto que llegó antes accede en escritura y el que accedió más tarde en lectura, el primero realiza la escritura correctamente y el segundo realiza la lectura, pero en este caso no se puede garantizar cuál es el dato leído. En el caso de que el puerto que accedió en primer lugar lo hiciese en lectura y el otro en escritura, internamente se bloquea la posibilidad de escritura de éste, y aquel realiza la lectura correctamente. En los tres casos se activa la señal de ocupado hacia el puerto que accedió más tarde. Este sistema es idóneo para conectar la señal “BUSY” e insertar estados de espera en procesadores síncronos, de forma que se detenga automáticamente si la transferencia aún no se puede realizar, o para retardar el reconocimiento de fin de ciclo de bus en procesadores que trabajan en bus asíncrono. MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (IX) CRONOGRAMAS DE ACTIVACIÓN DE “BUSY” DIRECCIONES D, I DIRECCIONES VÁLIDAS COINCIDENTES CE I tPS CE D tBLC BUSYR tBHC t RC ot WC DIRECCIONES I DIR. COINCIDENTES DIR. NO COINCIDENTES tPS DIRECCIONES D BUSYD tPS Port setup for priority tBLC Busy “Low” from CE “Low” tBHC Busy “High” from CE “High” junio 1999 tBLA 5 ns MIN 15 ns MAX 15 ns MAX t BHA tBLA Busy “Low” from address match tBHA Busy “High” from address mismatch 15 ns MAX 15 ns MAX "MEMORIAS MULTIPUERTO" Analizando los cronogramas se observa que existiendo una coincidencia de direcciones en las entradas de los puertos, si se activan las señales de selección de chip por ambos lados, la señal de “BUSY” tarda en aparecer, después de la recepción del último “chip enable” un tiempo máximo de t BLC. La señal de ocupado se activa hacia el puerto que colocó más tarde la señal de habilitación de chip. Para que pueda determinarse a qué puerto se le activa la señal de ocupado, la diferencia en la recepción de las habilitaciones de chip por ambos lados a de ser superior a un tiempo t PS. En el caso en que las señales de habilitación de chip estén activadas por ambos puertos, si ocurre una coincidencia de direcciones en un determinado momento, el tiempo que tarda en activarse la señal de ocupado hacia el puerto que puso más tarde las direcciones es inferior a un tiempo t BLA. Además, para que se pueda determinar que puerto es el que puso más tarde las direcciones, el tiempo entre aparecer las direcciones por un puerto y por el otro ha de ser superior a t PS. El valor típico de t BLC.y t BLA. es muy inferior al indicado por los fabricantes(valor máximo). Este tiempo se suministra para el caso más desfavorable que se puede presentar (aunque tenga muy poca probabilidad de aparecer) que es cuando ambas direcciones o señales de activación de chip aparecen en el mismo instante. En este caso el “latch” de salida de ocupado entra en un estado metaestable hasta que finalmente termina por activar uno de los lados. Los tiempos de acceso en lectura y escritura de una memoria DP son idénticos a los de una memoria RAM estática, pero el hecho de que para poder leer o escribir con 23 seguridad se deba esperar un tiempo similar al de la generación de la señal de “BUSY” (para saber si el acceso es correcto, antes de llevar a cabo la operación), hace que el rendimiento del sistema baje (esto es así con los micros de Motorola o Texas, por ejemplo). El tiempo en que se amplia el ciclo de lectura o escritura es tBLC.(tBLA). No obstante, existen micros en los que la parte activa del ciclo viene determinada por la señal que indica el sentido de la transferencia (p.e. Intel). Esto es así porque el chip está seleccionado y su dirección de memoria estable antes de la parte activa del ciclo. En estos casos, se consigue ganar un tiempo a la demora que se debe introducir. Hay que destacar, que en las últimas generaciones de memorias, con tiempos de acceso muy pequeños (del mismo orden que el retardo de generación de “BUSY”), el tiempo que se consigue ganar no es suficiente como para evitar el retardo del acceso. En el caso en que un puerto acceda a lectura y otro a escritura (siendo prioritaria la escritura), para que pueda ser leído el dato correctamente, después de terminar su operación el puerto de escritura, ha de transcurrir un tiempo t BDD. Desde que se desactive “BUSY”. DIRECC. DIRECC. R/W CS. AS. MRD Tiempo que se gana t1 CS. Micros de Motorola tBLC Micros de Intel MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (X) OPERACIÓN DE LECTURA CON “BUSY” t WC DIRECCIONES MA TCH D t PWE R/W D t HD t SD DATOS IN D VALIDOS t DIRECCIONES PS MATCH I t BLA BUSY t BHA I t DDD DATOS t BDD VALIDOS OUT I t WDD tWA Write cycle time tPWE Write pulse width tSD Data setuo to write end tHD Data hold from write end tWDD Write pulse to data delay junio 1999 15 ns MIN 12 ns MIN 10 ns MIN 0 ns 30 ns MAX tPS Port setup for priority tBLA Busy “Low” from address match tBHA Busy HIGH from address mismatch tBDD Busy HIGH to data valid tDDD Write data valid to read data valid 5 ns MIN 15 ns MAX 15 ns MAX 15 ns MAX 25 ns MAX "MEMORIAS MULTIPUERTO" Analizando los cronogramas, se observa que después de aparecer una coincidencia de direcciones (con una diferencia de al memos tPS.), aparecerá “BUSY” con un retardo t BLA. Después de escribirse los datos, y hasta que sean válidos en la salida, transcurrirá un tiempo máximo de tWDD la anterior activación de la señal d escritura, tDDD desde que se colocaron los datos válidos a la entrada y tBDD es el tiempo máximo que transcurre desde la desactivación de la señal “BUSY”. El problema que presenta “BUSY” es que no permite retener el control de la DP durante varios accesos consecutivos. 24 MEMORIAS D.P. ASÍNCRONAS: ARBITRACIÓN DE ACCESO (XI) CONSIDERACIONES SOBRE LOS DIFERENTES MODOS DE ARBITRACIÓN t Penalización Acceso Accesos diferentes a buscar un dato (BUSY) Accesos a secuencia de datos (semáforo, interrupciones) Baja frecuencia de acceso -y alta velocidad- a bloques grandes aleatoriamente. No requiere intercambiar mensajes. Evita: retardo inherente y lectura escritura. Necesidad de aviso de datos disponibles y/o modificados y petición de datos. Necesidad de comunicar mensajes. Continuar procesando hasta nuevos datos. Evita: muestreos sucesivos a la memoria y esperas innecesarias. Memoria compartida. Accesos a leer y escribir datos pequeños con alta frecuencia. Evita: pedir semáforo y consultar posesión. junio 1999 "MEMORIAS MULTIPUERTO" Una arbitración solo es efectiva cuando el tiempo de latencia que introduce I. Semáforos: comprobación-adquisición del semáforo-acceso a zona de datos II. Interrupción: generación de IRQ cambio de contexto es muy pequeño en comparación con el tiempo de utilización del recurso, es decir con el tamaño del bloque de transferencia. El sistema de semáforos es interesante para aplicaciones que requieran intercambios de información entre sistemas que acceden a una determinada zona o a otras, pero con baja frecuencia -pero alta velocidad de acceso-, y además no requieren intercambiar mensajes con el otro procesador y en sistemas que almacenas tablas compartidas, que en algún momento alguno puede modificar (y por coherencia de datos no se desea que sea accedida durante la actualización), de baja frecuencia de accesibilidad (datos determinados en cada zona). Con este sistema se evitaría el retardo inherente que supone la utilización del sistema de arbitración por “BUSY” y los accesos a lectura y escritura del método de interrupciones,. Además, el acceso de un determinado procesador no tiene porque necesitarse cuando el otro acaba de acceder. El sistema de interrupciones es interesante en sistemas multiprocesador distribuidos, donde un determinado sistema genera variables que debe transmitir a otro, para que las procese y actúe en consecuencia. En este caso, cuando un procesador ha generado datos y los a colocado en la memoria, avisa al otro sistema -mediante interrupción- de que ciertas variables han cambiado y que debe tenerlas en cuenta para procesar. Además, utilizará el buzón -dirección de generación de interrupción- para indicar mensajes, como cuál es la variable que le comunica. También puede utilizarse este sistema para que un 25 procesador solicite datos cuando haya terminado de procesar los que recogió anteriormente. El mecanismo de señal de ocupado, lleva inherente un retardo de acceso que es el que tarda en generarse la señal “BUSY”. No obstante, en sistemas de memoria compartida, donde se accede a leer escribir bloques de datos pequeños, de uno o dos bytes en ocasiones, y con frecuencias de acceso altas, este sistema es más eficiente que cualquiera de los anteriores. MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (II) EXPANSIÓN EN ANCHO DE PALABRA (Nº BITS) * APARECE UN PROBLEMA CON BUSY AL DEBER ACTIVAR VARIOS CHIPS SIMULTÁNEAMENTE. A10L - A 0L D7L - D0L R/W L OE L CE L AL DL R/W L OE L CE L B U S YL DUAL-PORT RAM 2K X 8 IDT7132 * SI LLEGA LA MISMA DIRECCIÓN POR AMBOS PUERTOS??? PUEDE ACTIVARSE UNA SEÑAL BUSY PARA CADA LADO Y BLOQUEAR LOS SISTEMAS INDEFINIDAMENTE +5V D15L - D8L B U S YL junio 1999 A 10R - A0R D7R - D0R R/W R OE R CE R AR DR R/W R OE R CE R BU SYR AL DL R/W L OE L CE L B U S YL DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/W R OE R CE R BU SYR D15R - D8R "MEMORIAS MULTIPUERTO" En el caso de que la expansión que se desee realizar sea de la longitud del dato (nº de bits), aparece un problema que puede llevar al sistema a una espera infinita. Si se conectan las líneas de direcciones de la forma convencional, de manera que ambas memorias se seleccionen simultáneamente, y se utiliza una para almacenar la parte menos significativa del dato y la otra para la parte más significativa, aparentemente todo funcionaría con normalidad. Sin embargo, si se interconectan las salidas de ocupado de ambas memorias -and cableada-, tal como se muestra en la figura, cuando se produjesen dos accesos simultáneos por ambos puertos a la misma posición, podría llegar a suceder que una memoria activase la señal de ocupado hacia un puerto y la otra hacia el otro. Como resultado, al ser las salidas en drenador abierto, se activaría la señal general de ocupado de ambos extremos, lo que sería interpretado por uno y otro puerto como un acceso de su oponente. Si la estrategia para realizar el acceso fuese esperar a que el otor puerto se retire cuando haya completado la operación, la espera por parte de los dos puertos sería infinita BU S YR 26 MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (III) EXPANSIÓN EN EL ANCHO DE PALABRA DE MEMORIA (Nº BITS) · ACTIVAR UNA MEMORIA CON LÍNEA DE BUSY DE LA OTRA · MEMORIAS “SLAVE” A10L - A0L D7L - D0L R/W L OE L CE L B U S YL AL DL R/W L O EL C EL BUSY L DUAL-PORT RAM 2K X 8 IDT7132 A10R - A0R D7R - D0R R/W R OE R CE R B U S YR AR DR R/W R OE R CE R BUSY R A10L - A 0L D7L - D0L R/W L OE L CE L BUSYL +5V DUAL-PORT RAM AR AL DR DL SLAVE R R/W L R/W OE R OE L 2K X 8 CE R CE L IDT7142 BUSYR BUSYL A10R - A0R D7R - D0R R/W R OE R CE R B US YR +5 LOGICA SLAVE LOGICA SLAVE D15 L - D 8L NC junio 1999 AL DL R/WL OE L CE L B U S YL DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/WR OE R CE R BUSYR D15R - D8R D15L - D8L NC DUAL-PORT RAM AL AR DL DR MASTER R/WL R/W R OE L OE R 2K X 8 CE L CE R IDT7132 BUSYL BUSYR "MEMORIAS MULTIPUERTO" La solución al problema planteado es utilizar como lógica de arbitración la de uno solo de los chips, y forzar al otro al mismo estado, a modo de memoria maestra y memoria esclava. Para ello se presentan dos alternativas: la primera consiste en añadir una lógica externa que desactive el puerto del chip “esclavo”, cuando se detecte que el del maestro ha activado la señal de ocupado. De esta manera se evita que se pueda escribir, cuando el otro puerto (en ambas memorias) esté accediendo a las mismas posiciones, con mayor prioridad. La segunda solución utiliza dos tipos de memorias: una “master” y otra “slave”. La memoria esclava incluye internamente la lógica para realizar la desactivacición del chip, en caso de que la maestra active la señal de “BUSY” - el terminal de la señal de ocupado, en este caso, es de entrada, y se conecta directamente al terminal de salida de la memoria maestra. Existen memorias DP que se pueden comportar como maestras y como esclavas, seleccionándose su funcionamiento mediante una señal a nivel “H” o “L” en un terminal al respecto. Este tipo de conexiones con memorias maestras y esclavas acarrea dos inconvenientes, que e analizan a continuación D15R - D8R 27 MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (IV) ACTIVACIÓN DE LA SEÑAL DE ESCRITURA EN AMPLIACIÓN DEL ANCHO DE PALABRA * MEMORIAS ESCLAVA -“SLAVE”-. // MEMORIAS CONVENCIONALES CON LÓGICA DE “SLAVE”. * DEBE RETARDARSE DURANTE EL TIEMPO DE ARBITRACIÓN DE LA “MASTER”. SI EL TIEMPO DE ESCRITURA ES MENOR QUE EL RETARDO DE ARBITRACIÓN DE LA MASTER, EL CICLO DE ESCRITURA PUEDE LLEVARSE A CABO DURANTE EL TIEMPO QUE “BUSY”ESTÉ ACTIVA. T´WC=T PWE + T BLA t R/ W A10 - A0 (L) A (L) D7 - D0 (L) PWE WE (L) t BUSY OE (L) t WH WB CH IP ENABLE (L) tWB RW “High” after busy tWH RW “High” after busy “High” tPWE Write pulse width 0 ns D (R) WE (L) RAMCHIP WE (R) OE (L) CY7C132 OE (R) BUSY (L) DELAY 13 ns MIN 12 ns MIN D15 -D8 (L) Este tipo de expansiones requiere un retardo para todos los accesos. Empeora el rendimiento. junio 1999 DUALPORT CE (L) BUSY (L) A (R) D (L) 2K x 8 MASTER VCC A (L) D (L) CE (R) BUSY (R) WE (R) OE (R) CH IPENABLE (R) BUSY (R) DELAY A (R) DUAL PORT A10 - A0 ( R) D7 - D0 (R) D (R) WE (L) RAM CHIP WE (R) OE (L) CY7C142 OE (R) CE (L) 2K x 8 CE (R) BUSY (L) SLAVE BUSY (R) "MEMORIAS MULTIPUERTO" Uno de los problemas que se ha aludido, es tener que retardar la señal de escritura en la memoria esclava hasta que haya transcurrido un tiempo tal que la señal de “BUSY” de la memoria maestra pudiese haberse activado, en caso de ser necesario. De no hacerlo así, podría iniciarse un ciclo de escritura sobre los chips esclavos antes de que dicha señal haya podido propagarse, máxime considerando los tiempos de t BLA y t BLC, . lo que podría dar lugar a conflictos con los datos del otor puerto. Por tanto, el ciclo de escritura debe retardarse un tiempo similar al que la memoria maestra tarda en activar el pin de salida de ocupado (t BLA y t BLC). Todo esto implica que el rendimiento del sistema empeora por el hecho de realizar un expansión en el nº de bits del dato. Por lo general, no se requiere retardar la señal de escritura hasta un tiempo posterior a la presencia de “BUSY” (t WB =0). Ahora bien, después de desaparecer dicha señal, es neceario prolongar el pulso de escritura al menos un tiempo t WH. D15 - D8 ( R) 28 MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (V) ACCESO DE PROCESADORES CON LONGITUD DE DATO VARIABLE * ACCESO A BYTE DE LA MEMORIA ESCLAVA ??? * SI SE ACTIVA TAMBIÉN LA MAESTRA SE DESTRUYEN DATOS. * NECESARIO REALIZACIÓN DE LÓGICA EXTERNA Y MEMORIAS “MASTER”. DUAL-PORT RAM AR AL DR DL SLAVE R/W R R/W L OE R O EL 2K X 8 C ER C EL IDT7142 B U SY R BUSYL A10L - A0L D7L - D0L R/WL O EL C EL B U SY L A10R - A0R D7R - D0R R/W R O ER CE R B U SY R +5 D15L - D8L junio 1999 DUAL-PORT RAM AL AR DL DR MASTER R/W L R/WR OE L OE R 2K X 8 C EL C ER IDT7132 BUSYL BUS YR D15R - D8R BUSY A LOS PROCESADORES y CE A TODAS LAS MEMORIAS Tamaño datos Tamaño datos CE1 CE2 BUSY1 BUSY2 LOGICA DE SELECCIÓN "MEMORIAS MULTIPUERTO" Son múltiples los procesadores y las aplicaciones, en las que se realizan acceso a memoria con diferente tamaño de datos. En el ejemplo de la memoria que se muestra, no sería posible acceder a la memoria esclava únicamente (dato de tamaño byte), puesto que no se podría acceder con la seguridad de no generar un conflicto.. Para acceder con seguridad sería necesario activar también la memoria maestra para que ésta generara la señal de “BUSY” en caso de coincidencia en el acceso, pero, como se sabe, esto es totalmente imposible si se desea mantener la integridad de de los datos de la memoria, en un sistema de manejo de memoria estructurado en bancos. La solución a este inconveniente es diseñar externamente toda la lógica de accesos y de decodificación a partir de señales maestras. Otra solución es utilizar memorias DP con accesos a bancos independientes (byte bajo y byte alto poseen lineas de selección diferentes) CE1 CE2 BUSY1 BUSY2 29 MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (VI) MEMORIAS CON DOS BANCOS DE ACCESO INDEPENDIENTE D (8..15) UB D (0..7) APARECEN LOS MISMOS PROBLEMAS AL EXPANDIR DE 16 A 32 BITS junio 1999 "MEMORIAS MULTIPUERTO" En estas memorias se puede seleccionar el acceso al dato del byte alto, al del byte bajo o a ambos simultáneamente si se desean manejar datos de 16 bits. Dichas memorias están preparadas para ser conectadas directamente con procesadores que pueden trabajar con tamaño de datos variable. Lo que no es posible discriminar con este tipo de memoria es el acceso por los dos puertos a la misma dirección, realizandose por uno de ellos una transferencia con el byte alto y por el otro con el byte bajo. La lógica de generación de “BUSY” utiliza únicamente las direcciones y la habilitación de chip, pero no la selección del banco de memoria. Los problemas que se resuelven con la utilización de este tipo de chips (retardo de escritura y selección de byte de acceso) vuelven a aparecer cuando se realiza una expansión de 16 a 32 bits. 30 LB MEMORIAS D.P. ASÍNCRONAS DE CUATO PUERTOS EJEMPLO DE MEMORIAS CON MÁS DE DOS PUERTOS junio 1999 "MEMORIAS MULTIPUERTO" 31 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (I) MEMORIA DE DOBLE PUERTO SÍNCRONA POSEE DOS CONJUNTOS COMPLETOS DE BUSES. SE PUEDE ACCEDER SIMULTÁNEAMENTE POR AMBOS PUERTOS. SOLUCIÓN A AL DEMANDA DE DISPOSITIVOS RÁPIDOS CON INTERFAZ SENCILLA. OPERACIONES SINCRONIZADAS POR UN RELOJ EXTERNO. REDUCEN EL TIEMPO DE CICLO Y AUMENTAN EL ANCHO DE BANDA. Selección de posición MODOS DE OPERACIÓN Entrega de datos Se segmentan tacceso Tipo de salida de dato Comunic. Salida directa (Flow.Through) Segmentada (pipelined) MODO NORMAL (direcciones en cada acceso ) X X MODO RÁFAGA (burst) X X de direcciones DIRECC . DIRECC . "MEMORIAS MULTIPUERTO" junio 1999 Las memorias síncronas son al solución a la demanda de dispositivos rápidos con interfaz sencilla. Estas memorias sincronizan su funcionamiento con una señal de reloj externa que proporcionan una mayor velocidad de acceso (reducción del tiempo de ciclo). Esto es así porque segmentan la fase de acceso en dos etapas (captura de dirección y entrega de datos), de manera que puedan trabajar en paralelo, además de que una vez capturada la dirección, el procesador o controlador de la transferencia, puede retirarla del bus e ir preparando otro acceso si fuese necesario. Selección de posición Entrega de datos Se segme ntan DIRECC. t acceso Estas memorias, desde el punto de vista de salida de datos, puede funcionar con salida registrada de datos o con salida directa (sin almacenar). Además, en ambos casos presentan la posibilidad de trabajar en modo ráfaga, transmitiendo o recibiendo una secuencia de datos indicando únicamente la dirección del primero de ellos. Al igual que las memorias asíncronas, soportan accesos simultáneos y diferentes señales de sincronismo para los diferentes puertos. 32 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (II) DIAGRAMA DE BLOQUES DE UNA MEMORIA SÍNCRONA CADA PUERTO TIENE ASOCIADO UN CONJUNTO DE BUSES OPERA SINCRONIZADA CON EL FLANCO DE SUBIDA DE LA SEÑAL DE RELOJ CON FT#/P SE CONTROLA EL MODO DE OPERACIÓN DE SALIDA DE DATOS. CON ADS#, CNTEN#, CNTRST# SE CONTROLA LA CARGA DE DIRECCIONES. LA LÍNEA OE# ES ASÍNCRONA. junio 1999 "MEMORIAS MULTIPUERTO" Cada puerto de la memoria síncrona cuenta con las líneas de direcciones y datos y control, como las vistas en las memorias asíncronas. La única diferencia, es que estas entradas/salidas no tiene validez hasta el flanco ascendente de la señal del reloj de sincronismo. Las señales se capturan en el flanco ascendente de reloj. La única señal que funciona de forma asíncrona es la de habilitación de salidas (OE). La línea Flow through/Pilpeline (FT/P) determina si las salidas de datos son a través de un registro o son salidas directas. Además, cada puerto cuenta con un contador de direcciones que se utiliza en el modo ráfaga para ir incrementando la dirección capturada desde el exterior con cada pulso de reloj. Esto proporciona transferencias de datos a muy alta velocidad. Con los terminales ADS#, CNTEN# y CNTRST#, junto con la señal de reloj, se consigue cargar una dirección externa en el contador, activar al cuenta del contador y ponerlo a cero. 33 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (III) DIFERENCIA ENTRE LOS MODOS SALIDA DIRECTA (FT) Y SEGMENTADA (P) SALIDA SEGMENTADA. EL DATO ES ALMACENADO EN UN REGISTRO ANTES LLEGAR A LAS LÍNEAS DE I/O. (EL PROCESO SE DIVIDE EN DOS ETAPAS QUE FUNCIONAN SIMULTÁNEAS). SALIDA DIRECTA (FT) LOS DATOS VAN DEL ARRAY DE MEMORIA A LAS LÍNEAS DE I/O. LA DIFERENCIA PRINCIPAL:VELOCIDAD EN SALIDA DE DATOS. EN ESCRITURA NO PRESENTAN DIFERENCIA. EXCITACIÓN DE “SENSE” SALIDA: BUFFER O REGISTRO MODO RÁFAGA (BURST) SE COMUNICA SOLAMENTE UNA DIRECCIÓN DE UNA SECUENCIA. LA DIRECCIÓN SE CARGA EN UN CONTADOR ( REGISTRO DE DIRECCIONES). ADS# EL CONTADOR DE DIRECCIONES SE INCREMENTA EN UNA UNIDAD . CNTEN# , CNTRST, EL CONTADOR DE DIRECCIONES SE RESETEA CNTRST#, TANTO EL MODO SALIDA DIRECTA COMO SEGMENTADA PUEDEN TRABAJAR EN MODO RÁFAGA. junio 1999 "MEMORIAS MULTIPUERTO" La diferencia principal entre los modos de funcionamiento FT y P es la relación de datos de salida. En modo segmentado (Pipelined) la salida se pasa a través de un registro, antes de ser puesto en los pines. Esto significa que para obtener el primer dato, en lectura, son necesarios dos ciclos de reloj, uno para almacenarlo y otor para darle salida. Este modo trabaja con la misma estructura que una máquina segmentada. El modo salida directa, la salida va directamente de la celda la etapa del array de memoria a la etapa de excitación de los amplificadores de sense “sense” y de ahí por el “buffer” de salida a los pines de salida. Con el modo segmentado se consiguen mayores velocidades, ya que el proceso de lectura de datos se estructura en dos etapas que trabajan independientemente y en paralelo. En la primera se lleva el dato hasta la entrada del registro que sustituye al “buffer” (etapa de excitación de sense), y en la segunda se le da salida. Aunque presenta una latencia de un ciclo (hasta el segundo ciclo no se obtiene datos en al salida), con los siguientes ciclo va sacando un dato y preparando otro a la entrada del registro, lo que le proporciona una mayor velocidad. Este modo en conjunto con transferencias en ráfaga consigue velocidades muy rápidas . 34 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (IV) t LECTURA: t CE =“H”, CE# =“L” R/W# = “H” DE UN CICLO tCYC FT Clock cycle time -flow-through- 15 ns MIN P Clock cycle time (pipelined) 10 ns MIN CYC , -flow-throughCH CL t , -pipelinedCH CL t , Clock to data valid CD1 CD2 t EL MODO SEGMENTADO INTRODUCE LATENCIA tCH CYC 6,5 ns MIN 4 ns MIN 12 ns MAX 8 ns MAX tCL CLK CE 0 t SC tHC t SW t SA tHW tHA tSC tHC CE 1 R/W ADDRE SS FL OW-THROUGH DAT A OUT PIP E LIN E D DA TA OUT junio 1999 An A n+1 tCD1 An+2 A n+3 tCKHZ tDC Qn Q n+1 Q n+2 tDC 1 Latency tDC tCD2 Qn Q n+1 "MEMORIAS MULTIPUERTO" Para que se pueda proceder a la lectura de datos es necesario que todas las señales de habilitación de chip, la señal de lectura y tener habilitada la salida. La velocidad del modo FT respecto del modo P está en valores de entorno al 85% Hay que hacer constar las señales de las líneas de CE0#, CE1, la señal de R/W# y las direcciones deben cumplir unos tiempos de set-up y de “hold” para que la operación procesad correctamente. En modo FT los datos tardarán en estar listos en la salida un tiempo t CD1, como máximo, transcurrido desde el flanco ascendente de la señal de reloj. Ese dato permanece válido, como máximo, hasta un tiempo t DC después del siguiente flanco ascendente de reloj. En modo P (segmentado), existe una latencia de un ciclo de reloj. Esto es, con el primer flanco ascendente no se genera ninguna salida. Después del segundo flanco, el dato correspondiente al primero (primera dirección) estará presente en la salida en un tiempo máximo ce t CD2. El dato permanecerá válido hasta un tiempo máximo de t DC , después del siguiente flanco ascendente. Debido a que t DC1 es mayor que t DC2, a pesar de que el modo P introduce una latencia de un ciclo, se consiguen rendimientos globales bastante mejores. Estos dos modos pueden utilizarse en modo ráfaga (comunicando una sola dirección y autoincrementando) o introduciendo una dirección encada flanco ascendente de reloj. Qn+2 35 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (V) tSA , tSAD, tSCNA X setup timetHA , tHAD, tHCNA X hold time- EL MODO RÁFAGA + SEGMENTADO CONSIGUE TRABAJAR CON VELOCIDADES DE RELOJ EXTRAORDINARIAMENTE RÁPIDAS 3 ns MIN 0 ns CLK tSA tHA An ADDRESS tSAD tHAD ADS tSAD tHAD tSCN tHCN CNT EN tSCN Flow-thru DATA OUT Pipelined DATA OUT junio 1999 tHCN tCD1 Qx Qn Qn+1 Qn+2 Q n+3 tCD2 Qx-1 Qx Qn Qn+1 "MEMORIAS MULTIPUERTO" Qn+2 Q n+3 36 MEMORIAS DE DOBLE PUERTO SÍNCRONAS (VI) ESCRITURA: NO HAY DIFERENCIAS ENTRE MODOS. DIRECC., CE1#, CE2, WE#, SI ACCEDEN A ESCRIBIR SIMULTÁNEAMENTE NO SE PUEDE GARANTIZR EL RESULTADO. PARA GARANTIZAR EL RESULTADO DE ESCRITURAS SE NECESITA UN TIEMPO ENTRE ACCESOS tCCS. PARA GARANTIZAR LECTURA CORRECTA TRAS ESCRITURA SE PRECISA tCWDD. CLK CNTEN tSA , tSAD, tSCNA setup time- X 3 ns MIN tHA , tHAD, tHCNA hold time- 0 ns X CE0 CE1 tSW tH W A D S R/W ADDRESS An A n+1 A n+2 t SD DAT A I N A n+3 A n+4 tHD D n+2 D n+3 OE junio 1999 "MEMORIAS MULTIPUERTO" En el ciclo de escritura la memoria se comporta igual, independientemente del modo se salida que se tenga seleccionado. Para generar un ciclo de escritura es necesario tener las direcciones presentes, WE#y CE1# y CE2 activos, antes de la llegada del flanco ascendente de la señal de reloj, que es cuando se procede a la escritura en la memoria. Tantos las direcciones como las señales de habilitación de chip y la señal de escritura requieren unos tiempos de establecimiento (set-up) y de mantenimiento (hold), antes y después de la llegada del flanco de reloj, respectivamente. Si los dos puertos acceden a escribir simultáneamente no se puede garantizar el resultado, a no ser que haya transcurrido un tiempo mínimo t CCS entre los flancos de reloj que generan las escrituras (de uno y otro puertos). Si el tiempo fuese más pequeño sería necesaria una lógica externa de arbitración. Si un puerto accede en escritura, y posteriormente el otro accede en lectura, para garantizar que los datos leídos son los correctos ha de transcurrir un tiempo mínimo entre flancos de reloj de tWCDD Al igual que en el ciclo de lectura, para indicar las direcciones se puede utilizar el contador de ráfagas o introducir la dirección con cada flanco de reloj. Otro caso en el que se presenta una latencia de un ciclo, es cuando se cambia de ciclo de lectura a ciclo de escritura. Dado que la lectura va ha invadir con el dato el siguiente ciclo, será necesario dejar transcurrir uno para que los datos de entrada no puedan corromperse con los de salida que aún están en el bus. Esto puede solucionarse desactivando la señal de OE#, siempre y cuando no importe perder la lectura del último dato. 37 MEMORIAS D.P. APLICACIONES (I) APLICACIONES DE MEMORIAS SÍNCRONAS * COMUNICACIÓN. CAMBIO DE DATOS ENTRE DIFERENTES PROCESADORES.EN SISTEMAS QUE REQUIERAN LLEVAR DATOS DE UN DISPOSITIVO A OTRO (LAN, SWITCH) * EN SISTEMAS MULTIPROCESADOR, CUANDO UN PROCESADOR Y EL BUS FUNCIONAN A DISTINTA VELOCIDAD (SE TRANSFIEREN BANCOS DE DATOS.). * APLICACIONES QUE REQUIEREN ANCHOS DE BANDA GRANDES CON SALIDA REGISTRADA. * TRANSFERENCIAS Y ALMACENAMIENTO DE RÁFAGAS DE DATOS (DISPLAYS -PCI-) * TRANSFERENCIAS DMA SIN DETENER EL FUNCIONAMIENTO DE LA CPU MEMORIA COMPARTIDA LAN CONTROLA DOR Y TRANSCEI VER LAN CONTROLA DOR Y TRANSCEI VER DUAL PORT SÍNCRONA BUS DEL PROCESADOR I/ /O CACHÉ “IN LINE” CPU LÓGICA DE CONTROL Control 64x 18 I/O SWITCH 100 Mbps DIR TAG DE CACHÉ D.P. SÍNCRONA DIR SWITCH 10 Mbps BUS DEL SISTEMA junio 1999 "MEMORIAS MULTIPUERTO" El sistema de la figura proporciona un buffereado de muy alta velocidad de paquetes de datos minimizando la congestión (usa menos tiempo el bus -no lo retiene tanto-) y aisla funciones de control críticas. También proporciona un acceso independiente a al CPU y Transceiver. Posibilita que se pueda trabajar con diferentes velocidades de reloj en el bus y la CPU. Puede servir para almacenar buffers y punteros a memoria compartida El sistema de la figura (derecha) realiza un enlace de alta velocidad que sirve de interface entre el bus local del procesador y el del sistema. Elimina problema de arquitecturas con bus compartido. Se puede acceder simultáneamente por ambos puertos a operaciones diferentes (p.e. DMA, caché). Puede conectarse directamente al bus o no, en función de la sobrecarga que el origine. 38 MEMORIAS D.P. APLICACIONES (II) CONSTRUCCIÓN DE MEMORIAS FIFO * LAS MEMORIAS FIFO DE ALTA VELOCIDAD SE CONSTRUYEN A PARTIR DE MEMORIAS DP Y CONTADORES junio 1999 "MEMORIAS MULTIPUERTO" 39 MEMORIAS D.P. APLICACIONES (III) APLICACIONES DE MEMORIAS ASÍNCRONAS * COMUNICACIÓN DE DISPOSITIVOS ASÍNCRONOS A TRAVÉS DE MEMORIA, PARA TRANSFERENCIA DE DATOS, A LA VEZ QUE ALMACENA DATOS. * SIMPLIFICACIÓN DEL DISEÑO DE SISTEMAS CON MEMORIA COMPARTIDA. * REALIZACIÓN DE SISTEMAS DE MEMORIA CACHÉ. * REGISTROS INTERNOS DE CPU´S CON DOS ACCESOS. * ACCESOS SIMULTÁNEOS AL MISMO CHIP. junio 1999 "MEMORIAS MULTIPUERTO" 40 MEMORIAS D.P. APLICACIONES (IV) PROCESA INFORMACIÓN Sensor de infrarrojos Unidad central GENERACIÓN DE VARIABLES PARA EL PROCESO Integración multisensorial ALMACENA EN MEMORIA ESCRIBE MENSAJE EN xFF INDICANDO VARIABLE Visión Dead reckoning Ultrasonidos Generación de trayectorias TIEMPO DE PROCESO CRÍTICO Posicionador absoluto DP Control manual Voz y soplo Interfaz Display + voz RECIBE INTERRUPCIÓN Control de motores SILLA DE RUEDAS LEE EN xFF DESACTIVA INT Y RECOGE MENSAJE ACTUALIZA LA VARIABLE DE PROCESO junio 1999 "MEMORIAS MULTIPUERTO" La unidad central recoge información de los módulos sensoriales y de comando y la procesa. Ésta, en función de la integración de datos que realiza va a determinar el valor de diferentes variable necesarias para un movimiento seguro (puntos a esquivar, puntos por los que pasar, posición y orientación actuales, etc). El módulo de control de trayectorias, a partir de las variables que recibe de la unidad central calcula un camino a seguir y realiza el control del seguimiento del mismo, a partir de la continua estimación de la posición. Por tanto, es necesario que este módulo se encuentre continuamente realizando el lazo de control de la trayectoria. Para comunicar ambos sistemas parece obvio que debe hacerse mediante un método que: una vez disponibles nueva información, se transmita rápidamente par procesar con ella; permita índicar con facilidad cuando hay nuevos datos, facilite la indentificación de esos datos y no requiera tiempo al módulo de control de trayectorias, salvo para recoger datos y así poder procesar inmediatamente con ellos. El sistema idóneo es una comunicación a través de una DP mediante interrupciones y con paso de mensajes, para indicar la variable transferida, a través del buzón. 41 MEMORIAS D.P. APLICACIONES (V) Initial Address and Controls Pipeline Reg CLK Pipeline IDT 7382/81 Reg Pipeline Address Generator 1 Pipeline Reg Address Generator 2 Reg Pipeline Addr IDT6116 SRAM Matrix A I/O Reg Addr IDT6116 SRAM Matrix B I/O Address Generator 3 Pipeline Reg Main Processor Main Memory and Addr IDT6116 SRAM Matrix C I/O Peripherals Data Data Data Pipeline IDT7210 Reg Pipeline Multiplier/Accumulator (MAC) Pipeline junio 1999 Reg "MEMORIAS MULTIPUERTO" Las memorias de cuatro puertos pueden ser usadas para acelerar el proceso de multiplicación de matrices, muy utilizado en algoritmos con DSP´s y en procesamiento de gráficos. En al figura a se muestra una estructura segmentada típica, parar multiplicación de matrices basada en tres memorias SRAM, una para la matriz multiplicando A, otra para la multiplicador B y otra para almacenar el resultado C . Las matrices A y B han sido previamente cargadas en las memorias desde la memoria principal o sistemas periféricos. Una vez realizada la multiplicación, se envía a memoria principal o periféricos. Además de la complejidad del diseño, cuando se están realizando transferencias, la Unidad Aritmética está parada. Este problema se incrementa mucho más cuando se deben realizar una multiplicación ens erie de matrices M1· M2 ·M3 ·M4 .... ·Mn. Si se implementa el sistema con una memoria de 4 puertos se pueden mejorar notablemente las prestaciones del multiplicador de matrices, ya que mientras que se están multiplicando las dos primeras, y almacenando el resultado, se puede ir cargando , en paralelo, una tercera matriz por el cuarto puerto de la memoria, a continuación, se multiplica el resultado por la nueva matriz introducida, y el resultado se guarda en la zona de una de las dos matrices primitivas ya procesadas, y así sucesivamente. Esto es posible porque desde cualquiera de los cuatro puertos se puede acceder a cualquier zona de la memoria De esta manera se evitan los tiempos muertos de transferencias de datos a las memorias de matriz multiplicando y multiplicador desde /hacia la memoria principal 42 MEMORIAS D.P. APLICACIONES (VI) Initial Address and Controls CLK Pipeline Reg IDT 7383/81 Address Generator 1 Pipeline Reg Address Generator 2 Pipeline Reg Pipeline Reg A-P1 A-P2 FourPortô I/O-P1 I/O-P2 Pipeline Reg Address Generator 3 Pipeline Reg Pipeline Reg Address Generator 3 Pipeline Reg Main Processor Main Memory and Peripherals A-P4 A-P3 SRAM IDT7052 I/O-P3 I/O-P4 Data Pipeline Reg IDT7210 Pipeline Reg Multiplier/Accumulator (MAC) Pipeline Reg M1 M1 M1 M2 M2 Unused Unused M3 M4 M3 M junio 1999 "MEMORIAS MULTIPUERTO" 43 MEMORIAS D.P. ASÍNCRONAS: EXPANSIÓN (I) EXPANSIÓN EN Nº DE PALABRAS * EN CADA CASO SE SELECCIONA UN CHIP. A12 -A11 CE I SELECCIÓN DE BLOQUE * BUSY ES INDEPENDIENTE PARA CADA BLOQUE. * SALIDA DE BUSY ES EN DRENADOR ABIERTO (REQUIERE PULLUP). DECODIFICADOR - 74FCT138 MEMORIAS CONVENCIONALES. 1 2 3 BU S Y I junio 1999 DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/WR OER CER B U S YR AL DL R/WL OEL CE L B U S YL DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/WR OE R CE R B U S YR AL DL R/WL OEL CE L B U S YL DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/WR OER CER B U S YR AL DL R/W L OE L CE L B US YL DUAL-PORT RAM 2K X 8 IDT7132 AR DR R/WR OER CER B U S YR +5V A 10 -A 0 D 7 -D 0 R/WD OE D 0 1 2 - 74FCT138 0 * SIMILAR A LA EXPANSIÓN DE AL DL R/W L OE L CE L B US YL A 12 -A11 CE D SELECCIÓN DE BLOQUE DECODIFICADOR A 10 -A 0 D 7 -D0 R/W I R E AD I 3 B U S YD +5V "MEMORIAS MULTIPUERTO" La expansión de memorias DP en nº de palabras es similar a la expansión de memorias convencionales. En este caso, la señal de “busy” la activara cada chip, si procede cuando éste esté seleccionado, por lo que interconectandolas todas (su salida es en drenador abierto) y llevándolas a Vcc mediante una resistencia de pull-up, la expansión estará realizada 44 MEMORIAS DE D.P. SÍNCRONAS: EXPANSIÓN (I) · SIMILAR A LA EXPANSIÓN CONVENCIONAL. CE 0L CE 1L A 0L-A 15L I/O0 -I/O 17 R/WL OE L CLK L CE 0L CE 0R CE 1L CE 1R CY 7C09389 A L 64K x18 A R DL DR junio 1999 A 0R-A 15R CE 1R R/WL OE L R/W R OE R I/O 0 -I/O17 R/WR OE R CLK L CLK R CLK R CE 0L CE 1L AL DL I/O18 -I/O 35 CE 0R A 16 L Vcc A 0L-A 15L I/O 0 -I/O 17 R/ W L OE L CE 0L CE 0R A 16 R Vcc CE 1R CY7C09389 AL 64Kx18 A R DL DR CE 1L A 0R-A 15R R/ W L OE L R/ W R OE R I/O 0 -I/O 17 R/ W R OE R CLK L CLK R CLK R CE 0R CE 0L CE 0R CE 1R CE 1L AR DR R/W L OE L R/W R OE R CLK L CLK R CLK L I/O18 -I/O 35 CE 1R CY7C09389 AL 64Kx18 A R DL DR R/ W L OE L R/ W R OE R CLK L CLK R "MEMORIAS MULTIPUERTO" Es igual que el caso normal de ampliación de memorias. No tiene ninguna línea especial 45