MX2012011336A - Reenvio de palabra critica con prediccion adaptiva. - Google Patents

Reenvio de palabra critica con prediccion adaptiva.

Info

Publication number
MX2012011336A
MX2012011336A MX2012011336A MX2012011336A MX2012011336A MX 2012011336 A MX2012011336 A MX 2012011336A MX 2012011336 A MX2012011336 A MX 2012011336A MX 2012011336 A MX2012011336 A MX 2012011336A MX 2012011336 A MX2012011336 A MX 2012011336A
Authority
MX
Mexico
Prior art keywords
timer
interface unit
delay
data
cache
Prior art date
Application number
MX2012011336A
Other languages
English (en)
Inventor
Brian P Lilly
Jason M Kassoff
Hao Chen
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of MX2012011336A publication Critical patent/MX2012011336A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Abstract

En una modalidad, un sistema incluye un controlador de memoria, procesadores y memorias caché correspondientes. El sistema puede incluir fuentes de incertidumbre que previenen la programación precisa de reenvío de datos para operación de carga que falla en las memoria caché del procesador. El controlador de memoria puede proporcionar una pronta respuesta que indica que los datos deben proporcionarse en un ciclo de temporizador subsecuente. Una unidad de interfase entre el controlador de memoria y los procesadores/memorias caché pueden pronosticar un retraso de una pronta respuesta actualmente recibida para los datos correspondientes, y puede preparar especulativamente el reenvío de datos asumiendo que estará disponible como se pronosticó. La unidad de interfase puede monitorizar los retrasos entre la pronta respuesta y el reenvío de los datos, o al menos la porción de retraso que puede variar. En base a los retrasos medidos, la unidad de interfase puede modificar los retrasos pronosticados subsecuentemente.

Description

REENVÍO DE PALABRA CRÍTICA CON PREDICCIÓN ADAPTIVA CAMPO DE LA INVENCIÓN Esta invención está relacionada al campo de procesadores, y más particularmente, al reenvío de palabra crítica de un llenado de bloque de memoria caché en procesadores y conjunto de circuitos relacionados.
ANTECEDENTES DE LA INVENCIÓN Los procesadores típicamente implementan operaciones de carga y almacenamiento para datos de acceso en memoria. Las cargas especifican lecturas de ubicaciones de memoria para proporcionar datos al procesador, y los almacenamientos especifican escrituras a ubicaciones de memoria que utilizan datos proporcionados desde el procesador. Dependiendo de la arquitectura de conjunto de instrucción implementada por el procesador, las cargas y almacenamientos pueden ser instrucciones explícitas especificadas en la arquitectura de conjunto de instrucción, las operaciones implícitas en una instrucción que especifica una operación de memoria, o una combinación de las mismas.
Con el fin de reducir la latencia en memoria para cargas y almacenamientos, los procesadores implementan típicamente una o más memorias caché a la cual los procesadores accesan antes de ingresar al sistema de memoria principal. Las memorias caché almacenan datos accesados recientemente en unidades de bloques en memoria caché. Los bloques en memoria caché pueden ser de diversos tamaños en varios procesadores, tal como de 32 bytes, 64 bytes, 128 bytes. Los bloques están alineados típicamente en memoria al límite natural de sus tamaños.
Por consiguiente, si una carga pierde una memoria caché, el bloque en memoria caché que contiene la carga de datos es leída desde la memoria y transferida a la memoria caché. Al tiempo que se almacena el bloque de memoria caché en la memoria caché reducirá la latencia para otros accesos que llegan a la memoria caché, el rendimiento del procesador es a menudo impactado pesadamente por la espera de carga de datos. Típicamente, un bloque en memoria caché es transferido utilizando transmisiones de datos múltiples en la interconexión de la memoria al procesador. Para reducir la latericia para la carga de datos, la carga de datos es suministrada en la primera transferencia del bloque en memoria caché, y después son transferidos los datos restantes. El procesador y memorias caché pueden estar diseñadas para reenviar la carga de datos al objetivo mientras esperan que sea proporcionado el bloque en memoria caché. En algunos casos, un controlador de memoria puede estar diseñado para proporcionar una respuesta indicando que los datos están a punto de ser transferidos (por ejemplo, algún número de ciclos de ciclos de temporizador antes de que sean transferidos los datos) de manera que la memoria caché/procesador pueda programar el reenvío de los datos. Dichos controladores de memoria proporcionan la respuesta un número fijo de ciclos de temporizador antes de transferir los datos y garantizar que los datos serán transferidos en el ciclo de temporizador identificado. Por tanto, el reenvío es programado de manera precisa.
SUMARIO DE LA INVENCIÓN En una modalidad, un sistema incluye un controlador de memoria y uno o más procesadores y memorias caché correspondientes. El sistema puede incluir fuentes de incertidumbre que previenen la programación precisa de reenvío de datos para una operación de carga que se pierde en las memorias caché del procesador. El controlador de memoria puede proporcionar una pronta respuesta que indique que los datos deben ser proporcionados en un ciclo de temporizador subsecuente. Sin embargo, el ciclo actual del temporizador en el cual son reenviados los datos varía debido a las incertidumbres en el sistema. Una unidad de ¡nterfase entre el controlador de memoria y las memorias caché/procesadores puede predecir un retraso de una pronta respuesta actualmente recibida para los datos correspondientes, y puede preparar de manera especulativa el reenvío de datos asumiendo que estará disponible como se predijo. Si la predicción es correcta, los datos pueden ser reenviados con baja latencia. Si la predicción es incorrecta, los datos pueden ser reenviados con una latencia más alta. La unidad de interfase puede monitorear los retrasos entre la pronta respuesta y el reenvío de los datos, o al menos la porción del retraso que puede variar. En base a los retrasos medidos, la unidad de interfase puede modificar los retrasos pronosticados subsecuentemente. Por tanto, la unidad de interfase puede adaptar el retraso pronosticado a los retrasos actuales que se están experimentando en el sistema con el tiempo, ajustándose para las incertidumbres.
En una modalidad, las incertidumbres pueden incluir, por ejemplo: retrasos inciertos de sincronización en cruces de dominio de temporizador asincrono; dudas en retrasos de secuencia dentro del controlador de memoria, las memorias caché, y/o los procesadores; y cambios en una o más de las frecuencias de temporizador debido a cambios en los modos de operación del sistema (por ejemplo, modos de energía baja de entrada y salida, etc.). Las fuentes de incertidumbre pueden varias de sistema en sistema. Adaptando el retraso pronosticado a los retrasos actuales que están siendo experimentados, la ruta de reenvío para los datos puede estar lista más frecuentemente para reenvío, reduciendo la latencia promedio para carga de datos en memoria caché evita situaciones en algunas modalidades.
BREVE DESCRIPCIÓN DE LAS FIGURAS La siguiente descripción detallada hace referencia a las figuras acompañantes, las cuales están ahora brevemente descritas.
La figura 1 , es un diagrama en bloque de una modalidad de un circuito integrado.
La figura 2, es un diagrama en bloque de una modalidad de una unidad de interfase mostrada en la figura 1.
La figura 3, es un diagrama en flujo que ilustra operación de una modalidad de un monitoreo de retraso mostrado en la figura 2.
La figura 4, es un diagrama en flujo que ilustra en mayor detalle una modalidad de una porción del diagrama de flujo mostrado en la figura 3.
La figura 5, es una diagrama en flujo que ilustra la operación de una modalidad de un circuito de control de reenvío de palabra crítica en respuesta a una indicación de pronta respuesta.
La figura 6, es un diagrama en bloque de una modalidad de una maquina de estado que puede ser implementada por una modalidad del circuito de control de reenvío de palabra crítica.
La figura 7, es un diagrama de tiempo que ilustra la operación de una modalidad del reenvío de palabra crítica.
La figura 8, es un diagrama en bloque de una modalidad de un sistema.
La figura T, es un diagrama en bloque de otra modalidad de una unidad de interfase mostrada en la figura 1.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Aunque la invención es susceptible de varias modificaciones y formas alternativas, las modalidades específicas de la misma están mostradas como vía de ejemplo en las figuras y serán en la presente descritas a detalle. Se debe entender, sin embargo, que las figuras y descripción detallada de las mismas no se pretende que limiten la invención a la forma particular descrita, sino lo contrario, la intención es cubrir todas las modificaciones, equivalentes y alternativas que caigan dentro del espíritu y alcance de la presente invención conforme se definió en las reivindicaciones adjuntas. Los encabezados utilizados en la presente son con propósitos de organización únicamente y no se pretende que sean utilizados para limitar el alcance de la descripción. Como se utilizó a lo largo de esta solicitud, la palabra "puede" es utilizada en un sentido permisivo (es decir, significa que tiene el potencial para), en lugar de un sentido mandatorio (es decir, significa que debe). De manera similar, las palabras "incluye", "incluyendo", e "incluye" significa que incluye, pero no está limitado a.
Varias unidades, circuitos, u otros componentes pueden estar descritos como "configurado para" llevar a cabo una tarea o tareas. En dichos contextos, "configurado para" es una recitación amplia de estructura que generalmente significa "que tiene un conjunto de circuitos que" llevan a cabo la tarea o tareas durante la operación. Como tal, la unidad/circuito/componente pueden ser configurados para llevar a cabo la tarea incluso cuando la unidad/circuito/componente no esté actualmente encendido. En general, el conjunto de circuitos que forma la estructura correspondiente a "configurado para" puede incluir circuitos de hardware. Similarmente, varias unidades/circuitos/componentes pueden estar descritos como que llevan a cabo una tarea, tareas, para conveniencia en la descripción. Dichas descripciones deben ser interpretadas como que incluye la frase "configurada para".
Enumerando una unidad/circuito/componente que está configurado para llevar a cabo una o más tareas está expresamente intencionado no para invocar 35 U.S.A. 112, párrafo seis interpretación para esa unidad/circuito/componente.
Regresando ahora a la figura 1 , se muestra un diagrama en bloque que ilustra una modalidad de un circuito integrado 10 acoplado a una memoria 12. En la modalidad ilustrada, el circuito integrado 10 incluye uno o más procesadores 14A-14B, una memoria caché 16 nivel dos (L2), una unidad de interfase 18, y un controlador de memoria 20. Una porción del procesador 14B está ilustrada en mayor detalle en la figura 1 para incluir un archivo registrador 22 y una memoria caché de datos 24. El procesador 14A puede ser similar. El controlador de memoria 20 está configurado para acoplarse a la memoria 12, y puede estar acoplado a la unidad de interfase 18 mediante una interfase. Como se ilustró en la figura 1 , la interfase puede incluir una petición, datos de escritura y datos de lectura, y una pronta respuesta. La unidad de interfase 18 también está acoplada a la memoria caché 16 L2 vía un enlace de escritura etiquetado "registros" Y un enlace de lectura que incluye una petición de lectura y datos de lectura. La unidad de interfase 18 está además acoplada a la memoria caché 16 L2 por medio de señalización de arbitraje que incluye arb de lectura (Read Arb), otorgamiento (Gnt), y Cancelación (Cxcl). Los procesadores 14A-14B están acoplados a la memoria caché 16 L2 por medio de interfases que pueden incluir petición, datos de escritura, datos de lectura. Un limite de dominio de temporizador también está ilustrado en la figura 1 como línea punteada 26.
Los procesadores 14A-14B pueden estar configurados para ejecutar operaciones de carga y almacenamiento (más brevemente aquí referido como cargas y almacenamientos), y puede estar configurado para detectar fallas de memoria caché en sus memorias caché locales (por ejemplo la memoria caché de datos 24 en el procesador 14B y una memoria caché similar en el procesador 14A). Para cargas, los procesadores 14A-14B pueden estar configurados para transmitir una petición de llenado en memoria caché a la memoria caché 16 L2 para leer el bloque en memoria caché faltante. Para fallas de almacenamiento en algunas modalidades los procesadores 14A-14B pueden también estar configurados para transmitir peticiones de llenado en memoria caché. En otras modalidades, los procesadores 14A-14B pueden estar configurados para transmitir lo almacenado para actualizar la memoria caché 16 L2 y/o la memoria 12, pero puede no transmitir un llenado en memoria caché para leer el bloque en memoria caché faltante. Los procesadores 14A-14B pueden estar configurados para asignar un identificador (por ejemplo un identificador de transacción, o TID) para cada petición de llenado en memoria caché y alguna otra transacción iniciada por los procesadores 14A-14B. El TID puede ser transmitido con las peticiones, datos, etc. de una transacción para identificar la transmisión como parte de la misma transacción.
Como se ilustró en la figura 1, la interfase entre el procesador 14B y la memoria caché 16 L2 puede incluir un enlace de petición (por ejemplo, dirección, orden, etc.) y enlaces de lectura/escritura de datos. Los enlaces de lectura/escritura de datos pueden ser enlaces unidireccionales separados como se mostró, o puede estar combinado como un enlace de datos bidireccional. Puede haber también un enlace de respuesta para transmitir respuestas coherentes, en algunas modalidades (no mostradas en la figura 1). Otras modalidades pueden utilizar otras interfases, tal como interfases de paquete, para transmitir peticiones, respuestas, y datos. La interfase al procesador 14A puede ser similar a la interfase al procesador 14B.
Los procesadores 14A-14B, puede estar configurado para transmitir la dirección del bloque en memoria caché en la petición de llenado en memoria caché. La dirección puede incluir los bits menos importantes de la carga para la cual la falla en memoria caché fue detectada, la cual identifica la palabra a la cual la carga está tratando de tener acceso dentro de la línea de memoria caché. Por consiguiente, la memoria caché 16 L2 y el controlador de memoria 20 (para fallas en memoria caché L2) pueden ser proporcionados con la información que identifica cual porción del bloque en memoria caché debe ser regresado inicialmente, para permitir el renvfo de la carga de datos. Una palabra puede ser la cantidad de datos que son accesados por la carga (por ejemplo un número de bytes contiguos). En algunas arquitecturas de conjunto de instrucción, las cargas pueden estar definidas que accesan una variedad de tamaños de datos. La palabra puede ser una de tamaños de datos, y otros tamaños de datos pueden ser expresados en términos de la palabra (por ejemplo, media palabra, para una carga que accesa la mitad de una palabra, palabra, doble parada para una carga que accesa dos palabras adyacentes, etc.) La palabra que fue accesada por la carga es a menudo referida como la "palabra crítica" del bloque en memoria caché que es suministrada para un llenado en memoria caché, debido a que la palabra es la palabra más importante en el bloque en memoria caché para el actual desempeño del procesador. Esto es, hasta que la palabra crítica es proporcionada, el procesador es estancado en la carga (y cualquier operación dependiente de la carga también están estancadas). El procesador puede ser configurado para ejecutar especulativamente otras, operaciones no dependientes en algunas modalidades, pero la palabra crítica es necesaria para completar la carga y las operaciones dependientes de la misma.
Como se ilustró en la figura 1 , el enlace de datos de lectura puede estar acoplado a la memoria caché de datos 24 para escribir el bloque en memoria caché dentro de la memoria caché, y puede estar acoplado al archivo registrador 22 para escribir la palabra critica en el archivo registrador 22. Puede haber multiplexión (multiplexación)u otra conmutación para seleccionar la palabra crítica de los datos leídos para que sean escritos en el archivo registrador 22 (no mostrado en la figura 1). Puede haber también reducción para la secuencia de los datos de enlace de datos de lectura a la memoria caché de datos 24 y/o el archivo registrador 22.
Un bloque en memoria caché puede ser transferido desde el controlador de memoria 20 a la unidad de inferíase 18 como transmisiones múltiples en la inferíase. Cada transmisión puede ser referido en la presente como un ritmo de datos. Por ejemplo un bloque en memoria caché de 32 bytes puede ser transmitido como 4 ritmos de 8 bytes. El tamaño de un ritmo puede variar de modalidad a modalidad. Los ritmos más largos pueden ser transmitidos en enlaces de datos más amplios, y por tanto menos ritmos pueden ser requeridos para transmitir un bloque en memoria caché. Por otra parte, los enlaces de datos más amplios pueden ser más caros en términos de interconexión (cableado) para que sean proporcionados en el circuito integrado 10 (o contactos en el circuito integrado, en otras modalidades). Por consiguiente, el tamaño del ritmo puede variar de modalidad en modalidad en base a balances de rendimiento/diseño. El tamaño del ritmo puede variar también en diferentes puntos. Por ejemplo, los ritmos transferidos entre la memoria caché 16 L2 y la unidad de interfase 18, y los ritmos transferidos entre los procesadores 14A-14B y la memoria caché 16 L2, puede variar en tamaño con respecto a los ritmos entre la unidad de interfase 18 y el controlador de memoria 20 (y puede variar en tamaño con respecto una a la otra también).
La memoria caché 16 L2 puede estar configurada para checar un impacto para la petición de llenado en memoria caché desde el procesador 14B, y puede estar configurado de vuelta al bloque en memoria caché (con la palabra critica en el ritmo inicial) al procesador 14B cuando un impacto en memoria caché es detectado. Los impactos en memoria caché en la memoria caché 16 L2 no necesitan proceder a la unidad de interfase 18. La memoria caché 16 L2 puede incluir brincar u otra reducción para peticiones recibidas desde los procesadores 14A-14B, y puede también incluir brincar/reducir para que las fallas en memoria caché L2 sean transmitidas a la unidad de interfase 18 (no mostrada en la figura 1).
En la modalidad ilustrada, la memoria caché 16 L2 puede incluir una interfase de enlace de escritura (mostrado genéricamente como "registros" en la figura 1) para la unidad de interfase 18 y una interfase de enlace de lectura para la unidad de interfase 18 que incluye los enlaces de petición de lectura y lectura de datos mostrados en la figura 1. Otras modalidades pueden utilizar una interfase de enlace simple para lecturas y escrituras (o múltiples interfases de enlace que puede transmitir cada uno ambas, lectura y escritura), u otros tipos de interfases tal como interfases en paquete. La interfase entre la memoria caché 16 L2 y la unidad de interfase 18 puede también incluir arbitraje de manera que la unidad de interfase 18 puede arbitrar para renvío de datos al procesador 14B como se mencionó previamente y se describe en mayor detalle más adelante. La unidad de interfase 18 puede estar configurada para arbitrar para reenviar la palabra crítica y reenviar un bloque en memoria caché para un llenado en memoria caché. La memoria caché 16 L2 también puede servir para los datos encontrados en la memoria caché L2 a los procesadores 14A-14B, y por lo tanto el arbitraje entre los datos encontrados de la memoria caché L2 y las transmisiones de datos de la unidad de interfase 18 puede proporcionar acceso a enlaces del procesador apropiadamente entre los recurso de datos competentes.
En el caso de falla en memoria caché L2, la memoria caché 16 L2 puede estar configurada para transmitir la petición de lectura a la unidad de interfase 18. La unidad de interfase 18 puede estar configurada para transmitir subsecuentemente la petición sobre la interfase al controlador de memoria 20. Detalles adicionales de una modalidad de la unidad de interfase 18 son discutidas más adelante con relación a la figura 2. La interfase incluye un enlace de petición, un enlace de datos de escritura, y enlace de datos de lectura en la modalidad ilustrada (aunque un enlace de datos de lectura/escritura bidireccional puede ser utilizada en otras modalidades, y todavía otras modalidades pueden implementar interfases de paquete) En la modalidad ilustrada la transmisión de una petición de la unidad de interfase 18 al controlador de memoria 20 puede incluir cruzar un límite de dominio de temporizador ilustrado por medio de la línea punteada 26 en la figura 1. Esto es, el conjunto de circuitos encima de la línea 26 (los procesadores 14A-14B, la memoria caché 16 L2, y una porción de la unidad de interfase 18) pueden estar eri un dominio de temporizador y el controlador de memoria 20 e interfase del mismo pueden estar en un dominio de temporizador diferente. Los temporizadores dentro de un dominio de temporizador pueden ser sincrónicos, y por tanto la relación de bordes subiendo y bajando del temporizador pueden ser determinantes (con asignación para ruido y vibración). El conjunto de circuito dentro de un dominio de temporizador puede ser desplazado en la misma frecuencia y fase (es decir lógicamente el mismo temporizador) o diferentes frecuencias pero de fase bloqueada una con otra. Por otra parte, temporizadores en diferentes dominios de temporizador pueden ser asincronos uno al otro. Puede no haber relación de fase determinista entre los temporizadores en diferentes dominios de temporizador. Los temporizadores pueden estar en diferentes frecuencias, y las frecuencias pueden no tener ninguna dependencia una con la otra. Los temporizadores en un dominio pueden cambiar frecuencias independientemente de, y sin ninguna señalización u otra notificación a, el otro dominio de temporizador. Por consiguiente, la unidad de interfase 18 puede incluir conjunto de circuito de sincronización para transmitir información de forma segura (peticiones, datos, etc.) desde un dominio de temporizador a otro. El conjunto de circuito de sincronización puede incluir cualquier circuito que pueda- capturar información en un dominio temporizador de manera correcta (por ejemplo cumplir con los requerimientos de temporizador en el dominio de recurso de temporizador), y transmitir la información en el otro dominio de temporizador correctamente (por ejemplo cumplir con los requerimientos de temporizador) en el dominio de temporizador de recepción). Los almacenadores intermedios primero en entrar, primero en salir (FIFO) son utilizados como un ejemplo más adelante, pero cualquier conjunto de circuitos de sincronización pueden ser utilizados. El dominio de temporizador por encima del límite de dominio de temporizador 26 en la figura 1 está referido en la presente como dominio de temporizador del procesador, y el dominio de temporizador por debajo del límite de dominio de temporizador está referido como dominio de temporizador de la memoria. Los temporizadores correspondientes para cada dominio pueden estar referidos como temporizador(es) del procesador y temporizador(es) de memoria, respectivamente. Similarmente, los ciclos del temporizador en el dominio de temporizador determinado puede estar referido como ciclos de temporizador del procesador y ciclos de temporizador de memoria, respectivamente. Un ciclo de temporizador puede ser un periodo del temporizador correspondiente.
El controlador de memoria 20 puede estar configurado para leer datos para el bloque de memoria caché, lectura de oscilación incluye la palabra críticaantes de los otros datos. El controlador de memoria 20 puede estar configurado para transmitir la oscilación incluyendo la palabra crítica antes de las otras oscilaciones del bloque de memoria caché. La oscilación que incluye la palabra crítica puede estar también referida en la presente como la palabra crítica, por brevedad.
La unidad de interfase 18 puede recibir la palabra crítica, y puede estar configurada para transmitir una petición de arbitraje (Read Arb) para que la memoria caché 16 L2 reenvíe la palabra critica. La petición Read Arb puede también identificar cual procesador 4A-1 B está siendo solicitada. La memoria caché 16 L2 puede estar configurada para arbitrar entre la unidad de interfase 18 y los datos de un impacto en memoria caché en la memoria caché16 L2 para determinar cuales datos se van a transmitir sobre el enlace de datos de lectura al procesador 14B ( y puede arbitrar similarmente para el procesador 14A). Si la memoria caché 16 L2 otorga la petición a la unidad de interfase 18, la memoria caché 16 puede estar configurada para transmitir una concesión a la unidad de interfase 18. Adicionalmente, la memoria caché 16 L2 puede preparar una ruta de renvío 28 desde el enlace de datos de lectura de la unidad de interfase 18 al enlace de datos de lectura al procesador 14B. La ruta 28 puede incluir multiplexación u otra conmutación, y puede incluir también almacenador, si se desea. La unidad de interfase 18 puede estar configurada para transmitir los datos. Generalmente, una ruta de renvfo puede incluir cualquier combinación de cableado, almacenamiento, multiplexación, y/u otro conjunto de circuito que pueda transmitir datos desde una fuente a un destino.
El controlador de memoria 20 puede también estar configurado para regresar una pronta respuesta para llenado de memoria caché, indicando que la palabra crítica se espera sea reenviada en un ciclo de temporizador de memoria que es subsecuente al ciclo de temporizador de memoria en el cual es transmitida una pronta respuesta (el "ciclo de temporizador de pronta respuesta"). La pronta respuesta puede incluir el TID del lleno de memoria caché, identificando la transacción para la cual la pronta respuesta se está proporcionando. El número de ciclos de temporizador de memoria entre el ciclo de temporizador subsecuente y el ciclo de temporizador de pronta respuesta puede variar de modalidad en modalidad. Generalmente, el número de ciclos de temporizador de memoria puede ser seleccionado para proporcionar tiempo para la unidad de interfase 18, la memoria caché 16 L2, y que los procesadores 14A-14B se preparen para el renvío de datos. Uno o más ciclos de temporizador del procesador puede ser utilizado para preparar la ruta de renvío. Por ejemplo, los ciclos de temporizador del procesador para transmitir la petición, arbitrar, regresar la concesión, y de hecho preparar la ruta se pueden necesitar. De esta manera, el retraso en el renvío de la palabra crítica puede ser reducida como se comparó con el caso del que no hay pronta respuesta y el arbitraje para la L2 es llevada a cabo cuando la palabra crítica es recibida. Sin embargo, si los datos no están listos para ser reenviados al momento de que se recibe la concesión (por ejemplo, debido a las varias incertidumbres más adelante), la unidad de interfase 18 puede cancelar la transmisión de datos y puede esperar la palabra crítica antes de arbitrar nuevamente para la ruta de renvío. El controlador de memoria 20 puede estar configurado para regresar la pronta respuesta después de la lectura de lleno de memoria caché ha pasado los puntos de ordenamiento en el controlador de memoria 20 y se ha programado para transmisión a la memoria 12. El controlador de memoria 20 puede incluir una ruta de derivación para regresar los datos leídos en el ciclo indicado por la pronta respuesta, en una modalidad. En una modalidad, el conjunto de circuitos de capa física que interfasa la memoria 12 puede estar configurada para ajustar dinámicamente la latencia de regreso de datos para rastrear la operación de la memoria 12. En dicha una modalidad, el conjunto de circuito de capa física puede estar configurado para suministrar retroalimentación al conjunto de circuito de lógica del controlador de memoria indicando el retraso actual. El controlador de memoria 20 puede utilizar la retroalimentación para ajustar la entrega de la pronta respuesta de regreso.
El número de ciclos de temporizador de memoria entre la pronta respuesta y la palabra crítica también puede seleccionarse para permitir la preparación de la ruta de datos cuando está operando el temporizador del procesador en su frecuencia soportada más baja mientras que la memoria está operando en su frecuencia soportada más alta.
En otras configuraciones de frecuencia de temporizador, la pronta respuesta puede ser proporcionada antes que esa de otra forma puede necesitar ser proporcionada, pero la pronta respuesta puede ser utilizable en cualquier configuración de frecuencias de temporizador.
Adicionalmente, el número de ciclos de temporizador de memoria entre la pronta respuesta y los datos correspondientes puede ser seleccionado para proporcionar a la unidad de inferíase 18 alguna flexibilidad para arbitrar la memoria caché 16 L2. La unidad de interferencia 18 puede variar la temporización de petición de arbitraje (como se comparó con la transmisión de la pronta respuesta) para contar varias fuentes de incertidumbre en el retraso entre la pronta respuesta y los datos correspondiente. La unidad de inferíase 18 puede adaptar el arbitraje del temporizador de petición en base a los retrasos ya experimentados en el sistema, más cercanamente coincidiendo la preparación de la ruta de renvío a la llegada de la palabra crítica y por tanto puede tener éxito más frecuentemente en el renvío de palabra crítica con retraso más corto.
Como se mencionó anteriormente, hay fuentes de incertidumbre en el retraso de la pronta respuesta a los datos correspondiente. Las incertidumbres pueden incluir incertidumbres en los cruces de dominio de temporizador asincrono, por ejemplo, Dependiendo de la relación de fase de los bordes de captura de los temporizadores al momento en que llegan los datos, el retraso puede ser diferente por un ciclo de temporizador del procesador en varios puntos a tiempo.
Adicionalmente, los cambios en la frecuencia de temporizador de cualquier temporizador puede ser una fuente de incertidumbre hasta que la unidad de interfase 18 se haya ajustado al nuevo retraso (conforme se midió en ciclos de temporizador del procesador). La secuencia se estanca dentro y fuera de los procesadores 14A-14B, la memoria caché 16 L2, la unidad de interfase 18 y/o el controlador de memoria 20 puede ser una fuente de incertidumbre, como puede ser el retraso de arbitraje en la memoria caché 16 L2.
Por consiguiente, la unidad de interfase 18 puede estar configurada para monitorear el retraso experimentado en operaciones previas de renvío de palabra crítica. La unidad de interfase 18 puede estar configurada para predecir el retraso que puede ser experimentado por una operación actual de renvio de palabra critica, en base a retrasos experimentados previamente. Esto es, la unidad de interfase 18 puede adaptar el retraso pronosticado en base a retrasos recientemente experimentados. Por consiguiente, con el tiempo, la unidad de interfase 18 puede llevar a cabo de manera más precisa el renvío de palabra crítica conforme la unidad de interfase 18 se adapta a las incertidumbres.
Los procesadores 14A-14B pueden implementar cualquier arquitectura de conjunto de instrucción. En varias modalidades, los procesadores 14A-14B pueden implementar cualquier microarquitectura, incluyendo súper-escalar o escalar, súper-secuencia o secuencia, fuera de orden o en orden, especulativamente o no especulativamente, etc. Varias modalidades pueden emplear técnicas de micro-codificación o no, conforme se desee. La memoria caché de datos 24 puede tener cualquier capacidad y configuración (por ejemplo, conjunto asociativo, mapeo directo, etc.). El número de procesadores 14A-14B incluido en una modalidad determinada puede variar, incluyendo modalidades con un procesador o más de dos. El fichero registro 22 puede incluir almacenamiento que corresponde a cualquier número de registradores. Por ejemplo el fichero registro 22 puede incluir al menos tantos registradores como el número de registradores de propósito general especificados en la arquitectura de conjunto de instrucción implementada por los procesadores 14A-14B. En una modalidad, el fichero registro 22 puede incluir un número más grande de registradores que el número de registradores de propósito general para soportar cambio de nombre del registro, registradores temporales para uso de micro-código, etc.
La memoria caché 16 L2 puede tener cualquier capacidad y configuración como se desee. La memoria caché 16 L2 puede incluir la memoria caché 24, o puede ser exclusiva o no exclusiva. Otras modalidades pueden no incluir la memoria caché 16 L2 (y los procesadores 14A-14B pueden estar acoplados directamente a la unidad de interfase 18). En todavía otras modalidades puede incluir niveles adicionales de jerarquía.
El controlador de memoria 20 puede incluir conjunto de circuito configurado para recibir peticiones de memoria y configurado para la interfase con la memoria 12 para completar las peticiones. En varias modalidades, el controlador de memoria 20 puede estar configurado a la interfase para cualquier tipo de memoria, por ejemplo memoria de acceso aleatorio estático (SRAM) o varios tipos de RAM dinámica (DRAM) tal como DRAM síncrono (SDRAM), DRAM de tasa de transferencia de datos doble (DDR, DDR2, DDR3, DDR4, etc.)energía baja DDR(LPDDR2,etc.) DRAM, RAMBUS DRAM, etc.
En la modalidad ilustrada, los procesadores 14A-14B, la memoria caché 16 L2, la unidad de interfase 18, y el controlador de memoria 20 están todos integrados en un substrato semiconductor simple como el circuito integrado 10. Otras modalidades pueden implementar otros niveles de integración y/o componentes discretos. El circuito integrado 10 puede ser también conjunto de circuito periférico integrado para formar un sistema en una implementación de chip (SOC). Por ejemplo, el SOC puede incluir además conjunto de circuito de procesamiento de video y/o audio, interfases periféricas y/o periféricas en-chip para acoplarse a perifércas sin-chip, etc. Aunque un límite de dominio de temporizador 26 está ilustrado en la figura 1 , otras modalidades pueden incluir múltiples límites de dominio de temporizador.
En una modalidad, los procesadores 14A-14B pueden ser un ejemplo de un medio de procesador; la memoria caché 16 L2 puede ser un ejemplo de un medio de almacenamiento; la unidad de interfase 18 puede ser un ejemplo de un medio de interfase; y el controlador de memoria 20 puede ser un ejemplo de un medio controlador de memoria. Cada medio puede ser un medio para proporcionar las operaciones antes descritas para el componente correspondiente. En general, cualquier conjunto de circuito de lógica secuencial y/o combinatoria que lleve a cabo las operaciones específicas puede ser utilizado.
Pasando a la figura 2, un diagrama en bloque de una modalidad de la unidad de ¡nterfase 18 es mostrada. En la modalidad ilustrada, la unidad de interfase 18 incluye una fila de escritura 30, una fila de petición de lectura 32, una fila de datos leídos 34, un circuito de arbitraje (Arb) 36 L2, un circuito de control de petición 38, un contador 40, un circuito de control de reenvío de palabra crítica 42, un circuito de monitoreo de retraso 44, y FIFOs asincronos (async)46A, 46B, 46C, Y 46D. La fila de escritura 30 está acoplada para recibir operaciones de escritura de la memoria caché 16 L2 y está acoplada a FIFOs async 46A-46B y el circuito de control de petición 38. La fila de petición de lectura 32 está acoplada para recibir las peticiones de lectura de memoria caché 16 L2 y está acoplada al circuito de control de petición 38 y el FIFO async 46B. El contador 40 está acoplado al FIFO async 46B. La fila de datos de lectura 34 está acoplado a la interfase de datos de lectura a la memoria caché 16 L2, el circuito Arb 36 L2, y el asyn FIFO 46c. El Circuito Arb 36 L2 está acoplado a la interfase de arbitraje a la memoria caché 16 L2 (Read Arb, Gnt.y Cxcl) y el circuito de control de renvío de palabra crítica 42. El circuito de control de renvío de palabra crítica 42 está acoplado al circuito de monitoreo de retraso 44 y el FIFO async 46D. El circuito de monitoreo de retraso 44 está acoplado al FIFO async 46C-46D. El FIFO async 46A está acoplado al enlace datos de escritura al controlador de memoria 20. El FIFO async 46B está acoplado al enlace de petición para el controlador de memoria 20 y a los FIFO async 46C-46D. El FIFO async 46C está acoplado al enlace de datos de lectura del controlador de memoria 20, y el FIFO async 46D está acoplado para recibir las indicaciones de pronta respuesta desde el controlador de memoria 20 (a través del FIFO async 46D) y puede estar configurado para determinar especulativamente cuando arbitrar la memoria caché 16 L2 con el fin de reenviar la palabra crítica que corresponde a las prontas respuestas recibidas. Muy particularmente, el circuito de control de reenvío de palabra crítica 42 puede estar configurado para generar una petición para arbitrar los ciclos de temporizador del procesador de la ruta de reenvío 28N después de que se recibió la pronta respuesta, en donde N es un íntegro positivo (mayor que cero). El número de ciclos de temporizador "N" puede ser seleccionado para alinear el otorgamiento de la ruta de reenvío al ciclo de temporizador en el cual está disponible la palabra critica para reenvío, de manera que se puede reducir el retraso a la palabra crítica. Muy particularmente, el tamaño de N puede ser el retraso calculado por el circuito de monitoreo de retraso 44 o puede ser derivado del retraso. El circuito de control de reenvío de palabra crítica 42 puede señalar el circuito Arb 36 L2 con la petición para arbitraje y el circuito Arb36 L2 puede transmitir la Lectura Arb en respuesta.
En una modalidad, el circuito de control de reenvío de palabra crítica 42 puede estar configurado para rastrear múltiples prontas respuestas concurrentemente. Por ejemplo, el circuito de control de reenvío de palabra crítica 42 puede incluir múltiples instancias de una máquina de estado u otro conjunto de circuitos lógico, cada instancia asignable para rastrear una pronta respuesta por separado. El circuito de control de reenvío de palabra crítica 42 puede estar configurado para asignar una maquina de estado inactivo a una pronta respuesta cuando es recibida la pronta respuesta.
El controlador de memoria 20 puede proporcionar palabra crítica, similar a otros datos de lectura, a la unidad de interfase 18 y la unidad de interfase 18 puede sincronizar los datos en el dominio de temporizador del procesador utilizando FIFO async 46C. Los datos pueden ser proporcionados a la fila de datos de lectura 34 para almacenamiento, y puede estar disponible para reenviar desde la fila de datos de lectura 34 en el enlace de datos de lectura a la memoria caché 16 L2. En algunas modalidades la palabra crítica puede rodear la fila de datos de lectura 34 y puede estar disponible para reenviar antes un ciclo de temporizador del procesador.
El circuito de monitoreo de retraso 44 puede estar configurado para medir los retrasos entre las prontas respuestas y los datos correspondientes conforme son proporcionados desde el FIFO async 46D y 46C respectivamente para detectar los retrasos que están siendo experimentados (en términos de ciclos de temporizador del procesador ). Cuando los retrasos medidos difieren de los retrasos medidos anteriormente, el circuito de monitoreo de retraso 44 puede estar configurado para modificar el retraso proporcionado al circuito de control de reenvío de palabra crítica 42. El circuito de monitoreo de retraso puede adaptar el retraso, pero puede no fijar inmediatamente el retraso igual al retraso actualmente medido, en una modalidad. En su lugar, el circuito de monitoreo de retraso 44 puede modificar el retraso para que sea más cercano al retraso medido actualmente. Con el tiempo, si el retraso actualmente medido permanece estable, el retraso del circuito de monitoreo de retraso 44 puede acercarse al retraso actualmente medido. Por otra parte, un pequeño cambio en el retraso actualmente medido puede no impactar demasiado el retraso proporcionado al circuito de control de reenvío de palabra crítica 42. Aunque el circuito de monitoreo de retraso 44 puede medir el retraso desde la pronta respuesta a la recepción actual de los datos, varias modalidades pueden medir cualquier porción del retraso entre la pronta respuesta y el reenvío de palabra crítica, o puede incluso medir todo del retraso.
En la modalidad ilustrada, el contador 40 puede ser aumentado cada ciclo del temporizador del dominio de temporizador del procesador y puede servir como una marca de tiempo para los datos de lectura y prontas respuestas. El valor actual del contador puede ser escrito al FIFO async 46B cada ciclo del temporizador (junto con una petición de lectura o escritura desde la fila de petición de lectura 32 o la fila de escritura 30, si la hay), y puede ser proporcionada en la salida del FIFO async 46B como una entrada al FIFO async 46C y 46D. La marca de tiempo puede ser escrita al FIFO async 46C-46D (junto con los datos de lectura y datos de pronta respuesta, respectivamente, si los hay). El circuito de monitoreo de retraso 44 puede recibir las marcas de tiempo y TID del FIFO async 46C-46D. El circuito de monitoreo de retraso 44 puede tomar la diferencia en las marcas de tiempo para el mismo TID como una medida del retraso. Otras modalidades pueden medir el retraso en otras formas. Adicionalmente, otras modalidades pueden utilizar otro conjunto de circuito de sincronización para sincronizar la marca de tiempo al dominio de temporizador de memoria (es decir, en lugar de utilizar el FIFO async 46B. Por ejemplo, la figura 9 es un diagrama en bloque de otra modalidad de la unidad de interfase 18. En la modalidad de la figura 9, el contador 40 está acoplado a un codificador GRAY 160. El codificador gray 160 puede estar configurado para codificar el valor del contador y proporcionar el valor codificado gray a un sincronizador 162. El sincronizador 162 puede estar configurado para sincronizar el valor codificado gray al dominio de temporizador de memoria. La salida del sincronizador 162 está acoplada a un decodificador gray 162, el cual está acoplado para proporcionar la marca de tiempo al FIFO async 46C-46D. El decodificador gray 164 puede decodificar el valor del contador codificado gray y suministrar él valor conforme a la marca de tiempo al FIFO async 46C-46D. Generalmente, una codificación gray puede estar diseñad de manera que únicamente un bit del valor cambie cada vez que aumenta el valor. La codificación gray puede asegurar que, incluso si hay variación en la temporización de la sincronización de bits sobre el límite de dominio del temporizador 26, es mostrado un valor válido en el dominio de temporizador de memoria. El conjunto de circuito de sincronización de la figura 9 puede ser utilizado, por ejemplo en implementaciones en las cuales el FIFO async 46B es escrito únicamente cuando una nueva petición va a ser transmitida al controlador de memoria 20. Esto es, el valor de contador puede ser continuamente sincronizado al dominio de temporizador de memoria mientras que el FIFO async 46B puede sincronizar únicamente peticiones válidas al dominio de temporizador de memoria (lo cual puede no ocurrir cada ciclo del temporizador).
El FIFO async 46A-46D puede servir como los circuitos de sincronización en la presente modalidad, sincronizando la transmisión de información sobre el limite de dominio de temporizador 26. Generalmente, un FIFO async puede incluir una memoria arreglada con múltiples entradas; un puntero de escritura en el dominio de temporizador de fuente que señale a una de las entradas a la cual la siguiente información debe ser escrita desde el dominio de temporizador fuente; y un puntero de lectura en el dominio de temporizador de recepción el cual señale a otra de las entradas desde la cual la siguiente información se va a leer en el dominio de temporizador. Asegurando que el puntero de lectura y puntero de escritura no apunten a la misma entrada (y en algunos casos asegurar que una o más entradas están entre el puntero de lectura y escritura), la información en una entrada se puede asegurar que es estable en la entrada antes de ser leída en respuesta al puntero de lectura.
En la modalidad ilustrada el FIFO async 46A-46B puede estar configurado para sincronizar datos de escritura salientes y peticiones de lectura/escritura (respectivamente) al controlador de memoria 20. Muy particularmente, las peticiones de lectura pueden estar en la fila de espera de peticiones de lectura 32 y peticiones de escritura y datos pueden estar en la fila de espera en la fila de escritura 30 cuando son recibidos de la memoria caché 16 L2. El circuito de control de petición 38 puede estar configurado para monitorear la fila de espera de escritura 30 y la fila de espera de petición de lectura 32, y puede estar configurado para seleccionar peticiones que van a ser transmitidos al controlador de memoria 20. Las peticiones seleccionadas pueden ser escritas al FIFO async 46B desde la fila de espera 30ó 32. Una entrada ejemplar en la fila de espera de petición de lectura 32 es mostrada e incluye un campo de dirección (Addr) que almacena las direcciones de la petición, varios atributos en un campo de atributo (Attr), y un campo ID de transacción (TID) que almacena el TID asignado a la petición. Las entradas de la fila de espera de escritura puede ser similar, pero puede también incluir un campo de datos para los datos (o puede haber una fila de espera de datos de escritura separada). La dirección de petición, atributos, y TID están ilustrados como un campo de petición (Req) en una entrada ejemplar en el FIFO async 46B, junto con la marca de tiempo del contador 40 como se discutió previamente. Los datos de escritura y TID etán ilustrados en una entrada ejemplar del FIFO async 46A también.
El FIFO async 46C.46D puede estar configurado para sincronizar datos entrantes de lectura y prontas respuestas, respectivamente, desde el controlador de memoria 20. Una entrada ejemplar en el FIFO async 46C ilustra los datos leídos (Data)y campos TID, asi como campo de marca de tiempo(TS) capturando la marca de tiempo del FIFO async 46B. Los datos del FIFO async 46C pueden ser escritos para la fila de espera de datos de lectura 34 para su transmisión a la memoria caché 16 L2. Una entrada de fila de espera de datos de lectura ejemplar ilustra un campo de datos (Data) y campo TID (TID. El FIFO async 46D ilustra una entrada ejemplar que incluye el TID de la lectura para la cual se proporcionó la pronta respuesta, asi como campo de marca de tiempo (TS).
En una modalidad, las filas de espera 30, 32 y 34 pueden ser ejemplos de un medio de fila de espera; el circuito de control arb 36 L2 puede ser un ejemplo de un medio de arbitraje; el circuito de control de reenvío de palabra crítica 42 puede ser un ejemplo de un medio de reenvío de palabra crítica; el circuito de monitoreo de retraso 44 puede ser un ejemplo de un medio de monitoreo; el contador 40 puede ser un ejemplo de un medio de conteo; el circuito de control de petición 38 puede ser un ejemplo de un medio de control de petición; y el FIFO async 46A-46D pueden ser ejemplos de un medio de sincronización. Cada medio puede ser un medio para proporcionar las operaciones antes descritas para el componente correspondiente. En general, cualquier conjunto de circuito de lógica secuencial y/o combinatoria que lleve a cabo las operaciones especificadas puede ser utilizado.
Se nota que otras modalidades de la unidad de ¡nterfase 18 puede tener diferentes interfases para la memoria caché 16 L2 y7o controlador de memoria 20 y puede tener otras diferencias internamente. Por ejemplo, en una modalidad, las interfases de datos de escritura y petición de escritura a la memoria caché 16 L2 puede ser separada, y la interfase de arbitraje a la L2 pueden ser utilizas ambas para lecturas (como se describió previamente) y escritura (para extraer los datos de escritura). En una modalidad, la petición de escritura y de escritura pueden ser transmitidas al controlador de memoria 20 en interfases separadas, y puede haber separados FIFO async para peticiones de escritura y lectura. Puede haber también interfases de respuesta de escritura y datos de escritura separadas para el controlador de memoria 20, y separados FIFO async para estas interfases. Cualquier configuración puede ser utilizada en varias modalidades.
Regresando ahora a la figura 3, un diagrama en flujo es mostrado ilustrando operación de una modalidad del circuito de monitoreo de retraso 44 para medir retrasos y ajusfar el retraso proporcionado al circuito de control de reenvío de palabra 42en base a los retrasos medidos. Aunque los bloques están mostrados en un orden particular para mejor entendimiento, se pueden utilizar otros órdenes. Los bloques pueden llevarse a cabo en paralelo en lógica combinatorial implementada por el circuito de monitoreo de retraso 44. Los bloques, combinaciones de bloques y/o diagramas de flujo como un todo puede ser secuenciado sobre múltiples ciclos de temporizador. El circuito de monitoreo de retraso 44 puede estar configurado para implementar la operación mostrada en la figura 3.
Si el circuito de monitoreo de retraso 44 recibe una pronta respuesta (bloque de decisión 50, "si"), el circuito de monitoreo de retraso 44 puede capturar el TI D y marca de tiempo del FIFO async 46D (bloque 52). El circuito de monitoreo de retraso 44 puede estar configurado para rastrear más de una respuesta pronta concurrentemente. Por tanto, el circuito de monitoreo de retraso 44 puede incluir recursos para capturar hasta M TIDs y marcas de tiempo, en donde M es un íntegro positivo mas grande que cero.
Si una palabra crítica es recibida en el FIFO async 46C (bloque de decisión 54 "si"), el circuito de monitoreo de retraso 44 puede comparar el TID de la palabra crítica al TID capturado para prontas respuestas. Si el TID concuerda con uno de los TIDs de la palabra crítica (bloque de decisión 56, "si"), el circuito de monitoreo de retraso puede determinar el retraso medido y puede ajusfar el retraso de salida para el circuito de control de reenvío de palabra crítica 42 si el retraso medido y el retraso de salida difiere (bloque 58).
La figura 4, es un diagrama en flujo que ilustra una modalidad del bloque 58 mostrado en la figura 3. Mientras que los bloques están mostrados en un orden particular para fácil entendimiento, otros órdenes pueden ser utilizados. Los bloques pueden ser llevados a cabo en paralelo en lógica combinatorial implementada por el circuito de monitoreo de retraso 44. Los bloques, combinaciones de bloques, y/o el diagrama en flujo como un todo puede ser secuenciado sobre múltiples ciclos del temporizador. El circuito de monitoreo de retraso 44 puede estar configurado para implementar la operación mostrada en la figura 4.
El circuito de monitoreo de retraso 44 puede calcular el retraso medido conforme a la diferencia entre la marca de tiempo de la palabra crítica y la marca de tiempo de pronta respuesta a partir de la comparación de TID (Bloque 60). El circuito de monitoreo de retraso 44 puede calcular un error como el retraso medido del bloque 60 menor que la salida de retraso actual para el circuito de control de reenvío de palabra crítica 42 (bloque 62). Por consiguiente, el error es positivo si el retraso medido es mayor que el retraso de salida actual, y negativo si el retraso medido es menor que el retraso de salida actual. El circuito de monitoreo de retraso 44 puede añadir ½ de error al retraso de salida actual para generar el nuevo retraso de salida (bloque 64). Por tanto, el nuevo retraso puede ser movido ½ del camino entre el retraso de salida actual y el retraso medido. Otras modalidades pueden utilizar otros mecanismos de ajuste, incluyendo diferentes fracciones de error.
Regresando ahora a la figura 5, un diagrama en flujo es mostrado ilustrando operación de una modalidad del circuito de control de reenvío de palabra crítica 42. Aunque los bloques estánmostrados en un orden particular para fácil entendimiento, otros órdenes pueden ser utilizados. Los bloques pueden ser llevados a cabo en paralelo en lógica combinatorial implementada por el circuito de control de reenvío de palabra crítica 42. Los bloques, combinaciones de bloques, y/o el diagrama en flujo como uno solo puede ser secuenciada sobre múltiples ciclos de temporizador. El control de reenvío de palabra crítica 42 puede estar configurado para implementar la operación mostrada en la figura 5.
Si el circuito de control de reenvío de palabra crítica 42 recibe una pronta respuesta (bloque de decisión 70 "si"), y una maquina de estado está disponible para causar especulativamente la petición de arbitraje L2 conforme a un retraso pronosticado (bloque de decisión 72, "si"), el circuito de control de reenvío de palabra crítica 42 puede asignar una maquina de estado a la transición (bloque74). Cualquier número de máquinas de estado pueden ser implementadas en varias modalidades, y varios mecanismos de asignación pueden ser utilizados. Por ejemplo, un esquema de primero en llegar-primer atendido, puede ser utilizado en el cual las máquinas de estado son asignadas a las primeras operaciones de reenvío de palabra crítica que lleguen. En otras modalidades, una o más páginas de estado pueden estar reservadas para cada procesador 14A-14B, de manera que al menos un reenvío de palabra crítica para cada procesador 14A-14B puede ser manejado. Las máquinas de estado restantes, si las hay pueden ser asignadas primero en llegar-primer atendido,. En algunas modalidades, el número de máquinas de estado puede ser igual a un número máximo de peticiones de memoria caché llena, de manera que cada petición puede ser monitorizada.
La figura 6, es un diagrama en bloque de una modalidad de una máquina de estado que puede ser implementada por el circuito de control de reenvío de palabra crítica 42 para generar especulativamente una petición de arbitraje para que la memoria caché 16 L2 reenvíe la palabra crítica en base a un retraso pronosticado. Como se mencionó anteriormente, puede haber múltiples instancias de la máquina de estado para rastrear múltiples oportunidades de reenvío de palabra crítica concurrentemente. El circuito de control de reenvío de palabra crítica 42 puede incluir conjunto de circuitos que implementa la máquina de estado. En general, la máquina de estado puede permanecer en un estado determinado hasta que se detecte una condición que ocasiones que la máquina de estado deje el estado (por ejemplo por medio de las flechas ilustradas en la figura 6).
La máquina de estado puede comenzar en un estado inactivo 80, en reinicio o cuando la máquina de estado ha completado su operación para un reenvío de palabra crítica. Cuando la máquina de estado es asignada en respuesta a una pronta respuesta (bloque 74, figura 5), la máquina de estado puede cambiar a la espera para estado de petición 82. La máquina de estado puede permanecer en la espera para el estado de petición 82 hasta que ya sea el tiempo pronosticado haga que la petición expire, o que la palabra crítica llegue y esté disponible para reenvío. Si la palabra crítica llega antes de que el tiempo pronosticado expire, entonces la petición para arbitraje para la ruta de reenvío puede hacerse no especulativamente. En cualqúier caso, la máquina de estado puede cambiar al estado de petición elegible 84.
El tiempo pronosticado puede derivarse del retraso de salida del circuito de monitoreo de retraso 44. Por ejemplo, el tiempo pronosticado puede ser menor que el tiempo de retraso por el número de ciclos entre la petición de arbitraje y la concesión para la unidad de interfase 18 (por ejemplo 3 ciclos de temporizador en esta modalidad). Alternativamente, ciclos adicionales de temporizador de retraso de secuencia puede estar incluidos en la diferencia entre el tiempo pronosticado y el tiempo de retraso de salida. En general, el tiempo pronosticado puede ser menos que el tiempo de retraso por el número de ciclos del temporizador que pueden ser ahorrados mediante la petición especulativa de ruta de reenvío para la palabra crítica. En algunas modalidades, puede ser más benéfico sobrestimar el retraso (de manera que los datos lleguen justo antes de que la ruta de reenvío esté lista) que desestimar el retraso (de manera que la ruta de reenvío está disponible antes que los datos). Por ejemplo, si la ruta de reenvío está disponible y la palabra critica no está lista para reenvío, la unidad de interfase18 puede cancelar el reenvío y re-arbitrar cuando los datos estén disponibles, perdiendo el retraso ahorrado por arbitrar especulativamente.
En el estado elegible de petición 84, el circuito de control de reenvío de palabra crítica 42 puede generar la petición para el circuito Arb 36 L2 para arbitrar la ruta de reenvío especulativamente. Cuando es enviada la petición arb de lectura, la máquina de estado puede cambiar al estado de espera para concesión 86, en donde la máquina de estado permanece hasta que la memoria caché 16 L2 concede la petición de arbitraje. La máquina de estado puede entonces cambiar al estado de listo para palabra crítica 88. Si la palabra crítica está disponible para reenvío, la máquina de estado puede cambiar al estado de reenvío de palabra crítica 90 para reenviar la palabra crítica. En una modalidad, la máquina de estado puede permanecer en el estado 90 hasta el punto en el cual la petición de lectura pudiera haber sido sacada de la fila de espera en la unidad de interfase 18 si el lleno de memoria caché se hubiera completado, para prevenir la salida de la fila de espera. Subsecuentemente, cuando el bloque de memoria caché es proporcionado, los datos pueden ser escritos a la memoria caché 16 L2 y la memoria caché de datos 24 que utilice la misma ruta. Después de que se ha prevenido la salida de la fila de espera, el reenvío de palabra crítica se completa y la máquina de estado puede cambiar a un estado inactivo 80. En otras modalidades, una serie de estados secuenciales puede ser utilizado después del estado de palabra critica 90 para rastrear el progreso de la salida de la fila de espera y reprimir la salida de la fila de espera antes de regresar al estado inactivo 80.
Por otra parte, si la palabra critica no está lista cuando la máquina de estado alcanza el estado 88, la máquina de estado puede cancelar el reenvío (Cxcl a la memoria caché 16 L2), y puede cambiar al estado de espera de datos 92. La máquina de estado puede cambiar del estado 92 al estado 84 cuando la palabra crítica sea recibida, y puede reenviar la palabra critica sin especular. Alternativamente, en otras modalidades, la máquina de estado puede únicamente manejar peticiones especulativas para reenvío de palabra crítica. El circuito Arb 36 L2 puede arbitrar para la palabra crítica cuando ésta llegue si falla la especulación. En dicha una modalidad, el estado 92 puede ser eliminado y la máquina de estado puede regresar al estado inactivo 80 del estado 88 si la palabra critica no está lista para ser reenviada.
En algunas modalidades, puede haber cambios adicionales también. Por ejemplo, en una modalidad en la cual la máquina de estado también maneja reenvío de palabra crítica no especulativa, la máquina de estado puede cambiar del estado inactivo 80 al estado elegible de petición 84 si llega la palabra crítica.
La figura 7, es un diagrama de temporización que ilustra ciclos de temporizador del procesador (delimitado por líneas punteadas) para ejemplo de reenvío de palabra crítica. Los estados de la máquina de estado son mostrados para cada ciclo de temporizador sobre la etiqueta SM. La operación entre la unidad de interfase 18 y la memoria caché 16 está ilustrada sobre la etiqueta L2, y la operación en el procesador está ilustrada sobre la etiqueta P.
En el primer ciclo de temporizador la máquina de estado está en el estado inactivo 80 y la pronta respuesta recibida ocasiona que la máquina de estado sea asignada (flecha 100). La máquina de estado cambia al estado de espera para petición 82 (W4R en la figura7) y comienza a contar el tiempo pronosticado para hacer la petición especulativa. En el quinto ciclo de temporizador, el tiempo pronosticado expira (flecha 102) y la máquina de estado cambia al estado elegible de petición 84(Req E1 en la figura 7). La petición arb de lectura es transmitida en el sexto ciclo de temporizador (flecha 106), y la máquina de estado cambia al estado de espera para concesión 86 (W4G en la figura 7). La memoria caché L2 arbitra en el séptimo ciclo de temporizador y transmite la concesión a la unidad de interfase 18 en el octavo ciclo de temporizador (flecha 108). La máquina de estado cambia al estado de listo para palabra critica 88, y la palabra critica está disponible en el almacenador de lectura 35 para reenvío (flecha 110). La palabra critica es transmitida en la ruta de reenvío, y la máquina de estado cambia al estado de reenvío de palabra critica 90 (F. CW en la figura 7) en el décimo ciclo de temporizador. Este ciclo de temporizador también es el ciclo de temporizador en el cual I petición de arbitraje de lectura no especulativa sería normalmente enviada (flecha punteada 112). Por consiguiente, el retraso ahorrado en esta modalidad puede ser una diferencia entre los ciclos de temporizador correspondientes a las flechas 106 y 112 en esta modalidad, o 4 ciclos de temporizador en el ejemplo ilustrado.
Varios ciclos de temporizador transcurren en esta modalidad para la detección de impacto de búsqueda en memoria caché L2, lo cual no se lleva a cabo para reenvío de palabra crítica. Sin embargo, en este ejemplo, la misma secuencia es utilizada para reenviar la palabra crítica y por tanto los datos fluyen a través de estas etapas de secuencia. Los datos son reenviados a través de L2 (datos a L2, referencia numérica 114) y después al procesador (datos a P, referencia numérica 116). La máquina de estado puede entonces regresar al estado inactivo.
Regresando a la figura 8, se muestra un diagrama en bloque de una modalidad de un sistema 150. En la modalidad ilustrada, el sistema 150 incluye al menos una instancia del circuito integrado 10 acoplado a la memoria externa 12. El circuito integrado 10 está acoplado a uno o más periferias 154 y la memoria externa 12. Un suministro de energía 156 también se proporciona el cual proporciona los voltajes al circuito integrado 152 asi como uno o más voltajes de suministro a la memoria 12 y lo las periferias 154. En algunas modalidades, más de una instancia del circuito integrado 10 puede ser incluido (y más de una memoria externa 12 puede ser incluida también).
Las periferias 154 pueden incluir cualquier conjunto de circuito deseado, dependiendo del tipo de sistema 150. Por ejemplo, en una modalidad, el sistema 150 puede ser un dispositivo móvil (por ejemplo, asistente digital personal (PDA), teléfono inteligente, etc.) y las periferias 154 pueden incluir dispositivos para varios tipos de comunicación inalámbrica, tal como wifi, Bluetooth, celular, sistema de posicionamiento global GPS, etc. Las periferias 154 pueden también incluir almacenamiento adicional, que incluye almacenamiento RAM, almacenamiento de estado sólido, o almacenamiento en disco. Las periferias 154 pueden incluir dispositivo de interfase de usuario tal como una pantalla de visualización, que incluye pantallas de visualización táctiles o pantallas de visualización multitáctiles, teclados u otros dispositivos de entrada, micrófonos, altavoces, etc. En otras modalidades, el sistema 150 puede ser cualquier tipo de sistema de cómputo (por ejemplo computadora personal de escritorio, laptop, estación de trabajo, net top etc.) Diversas variaciones y modificaciones serán aparentes para los expertos en la técnica una vez que se comprendan todas las variaciones y modificaciones.

Claims (14)

NOVEDAD DE LA INVENCIÓN Habiendo descrito el presente invento, se considera como una novedad y, por lo tanto, se reclama como propiedad lo contenido en las siguientes REIVINDICACIONES:
1. Una unidad de interfase acoplada para recibir una indicación desde un controlador de memoria que los datos que correspondan a una petición de lectura sean transmitidos en un ciclo de temporizador futuro, en donde la unidad de interfase caracterizada porque comprende: Un circuito de control configurado para generar una petición para reenviar los datos a un fuente de la petición de lectura, en donde el circuito de control está configurado para generar N peticiones de ciclos de temporizador después de recibir la indicación del controlador de memoria para permitir el reenvío de los datos cundo los datos sean subsecuentemente recibidos en el ciclo de temporizador futuro en donde N es un íntegro positivo pronosticado a partir de retrasos previos; y un circuito de monitoreo de retraso configurado para monitorizar retraso para al menos una porción del tiempo de la indicación para en reenvío de los datos correspondientes, en donde el circuito de monitoreo de retraso está configurado para modificar N adaptivamente para contar ¡ncertidumbres en el retraso.
2. La unidad de interfase de conformidad con la reivindicación 1 , caracterizada porque el circuito de monitoreo de retraso y el circuito de control operan conforme a un primer temporizador y en donde N es medido en ciclos de temporizador del primer temporizador y en donde el controlador de memoria está configurado para operar conforme a un segundo temporizador que es asincrono al primer temporizador, en donde una causa de incertidumbre en el retraso incluye una sincronización de un segundo dominio de temporización asociado con el segundo temporizador para un primer dominio de temporizador asociado con un primer temporizador.
3. La unidad de interfase de conformidad con la reivindicación 2, caracterizada porque otra causa de incertidumbre de retraso es un cambio en la frecuencia de temporización de al menos uno del primer y el segundo temporizados
4. La unidad de interfase de conformidad con la reivindicación 1 , caracterizada porque una causa de incertidumbre de retraso es un estancamiento en la secuencia a la fuente de petición de lectura.
5. La unidad de interfase de conformidad con cualquiera de las reivindicaciones 1 hasta cracterizadas porque además comprenden: Uno o más almacenadores intermedios primero en entrar, primero en salir (FIFO) configurados para llevar a cabo la sincronización; y un contador configurado para aumentar conforme al primer temporizador; en donde la unidad de interfase está configurada para sincronizar un valor del contador para el segundo dominio de temporizador y a través de los almacenadores FIFO del segundo dominio de temporizador al primer dominio de temporizador, en donde una diferencia en el valor del contador recibido de los almacenadores FIFO concurrente con la indicación y el valor recibido de los almacenadores FIFO concurrente con los datos es una medida del retraso.
6. Un circuito integrado, caracterizado porque comprende: Uno o más procesadores, cada procesador que comprende una memoria caché de datos y configurada para generar operaciones de lectura en respuesta a fallas en la memora caché; un segundo nivel de memoria caché acoplada a los procesadores y configurada para transmitir operaciones de lectura que fallan en el segundo nivel de memoria caché para la unidad de interferencia de conformidad con la reivindicación 1 ; y en donde la unidad de interfase está acoplada al segundo nivel de memoria caché y al controlador de memoria, en donde la unidad de interfase está configurada para transmitir las operaciones al controlador de memoria y en donde la unidad de interfase está acoplada para recibir una pronta respuesta del controlador de memoria y en donde la unidad de interfase está configurada para predecir el ciclo de temporizador futuro en el cual una palabra critica de un bloque de memoria caché estará disponible para reenvío de una determinada operación de lectura en respuesta a una pronta respuesta que corresponde a la operación de lectura determinada.
7. El circuito integrado de conformidad con la reivindicación 6, caracterizado porque la unidad de interfase está configurada para predecir un primer número de ciclos de temporizador de retraso y en donde la unidad de interfase está configurada para determinar una diferencia entre el primer número y un segundo número de ciclos de temporizador detectados mediante el monitoreo de retraso, y en donde la unidad de interfase está configurada para modificar el primer número por una mitad del diferente para generar predicciones subsecuentes.
8. El circuito integrado de conformidad con la reivindicación 6, caracterizado porque la unidad de interfase está configurada para arbitrar especulativamente para la ruta de reenvío del segundo nivel de memoria caché en respuesta a la predicción.
9. Un método caracterizado porque comprende: Recibir, en una unidad de interfase, una indicación de un controlador de memoria de que una palabra inicial de un lleno de bloque de memoria caché está pronosticado para ser suministrado; la unidad de interfase que pronostica un ciclo de temporizador subsecuente en el cual una petición para reenviar la palabra inicial a un procesador de que inició el llenado de bloque de memoria caché va a generarse con el fin de transmitir la palabra inicial en el caso de que la palabra inicial sea proporcionada como esperada conforme a la indicación de controlador de memoria; el monitoreo de un retraso actual para al menos una porción de tiempo de la ihdicación a la palabra inicial; y modificar adaptivamente la predicción en respuesta al retraso actual.
10. El método de conformidad con la reivindicación 9, caracterizado porque además comprende: Generar la petición en el ciclo de temporizador subsecuente; recibir una concesión en respuesta a la petición; detectar que la palabra inicial es proporcionada como pronosticada por el controlador de memoria; y reenviar la palabra inicial en respuesta a la concesión.
11. El método de conformidad con la reivindicación 9, caracterizado porque comprende: Recibir, en la unidad de interfase, una segunda indicación del controlador de memoria de que una segunda palabra inicial de un segundo llenado de bloque de memoria caché es pronosticado que se va a proporcionar; la unidad de interfase que pronostica un segundo ciclo de temporizador subsecuente en el cual una segunda petición para reenviar la segunda palabra inicial al procesador que inició el segundo llenado de bloque de memoria caché se va a generar con el fin de transmitir la palabra inicial en el caso que la segunda palabra inicial sea proporcionada como pronosticada por el controlador de memoria; . generar la segunda petición en el segundo ciclo de temporizador subsecuente; recibir una segunda concesión en respuesta a la segunda petición; detectar que la segunda palabra inicial o es proporcionada como se pronosticó; y transmitir una cancelación en respuesta a la segunda concesión.
12. El método de conformidad con la reivindicación 11 , caracterizado porque además comprende: Recibir subsecuentemente la segunda palabra inicial; generar una tercera petición en respuesta para recibir la segunda palabra inicial; recibir un tercer otorgamiento en respuesta a la tercera petición; y reenviar la segunda palabra inicial en respuesta a la que se recibe.
13. El método de conformidad con la reivindicación 9, caracterizado porque además comprende: Recibir, en la unidad de interfase, una segunda indicación del controlador de memoria que una segunda palabra inicial de un segundo llenado de bloque de memoria caché está pronosticado que se va a proporcionar; la unidad de interfase que pronostica un segundo ciclo de temporizador subsecuente en el cual una segunda petición para reenviar la segunda palabra inicial al procesador que inició el segundo llenado de bloque de memoria caché se va a generar con el fin de transmitir la palabra inicial en el caso de que la segunda palabra inicial sea proporcionada como pronosticada por el controlador de memoria; recibir la segunda palabra inicial antes de que sea pronosticada; generar la segunda petición en respuesta a la recepción de la segunda palabra inicial; recibir una segunda concesión en respuesta a la segunda petición; reenviar la segunda palabra inicial al procesador en respuesta a la concesión.
14. El método de conformidad con la reivindicación 9, caracterizado porque además comprende: Monitorizar los retrasos entre indicaciones respectivas del controlador de memoria y palabras iniciales correspondientes; y modificar la predicción de ciclo de temporizador subsecuente conforme a los retrasos.
MX2012011336A 2010-06-01 2011-05-26 Reenvio de palabra critica con prediccion adaptiva. MX2012011336A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/791,387 US8713277B2 (en) 2010-06-01 2010-06-01 Critical word forwarding with adaptive prediction
PCT/US2011/038171 WO2011153072A1 (en) 2010-06-01 2011-05-26 Critical word forwarding with adaptive prediction

Publications (1)

Publication Number Publication Date
MX2012011336A true MX2012011336A (es) 2012-11-30

Family

ID=44504142

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012011336A MX2012011336A (es) 2010-06-01 2011-05-26 Reenvio de palabra critica con prediccion adaptiva.

Country Status (10)

Country Link
US (1) US8713277B2 (es)
EP (1) EP2539824A1 (es)
JP (1) JP5621041B2 (es)
KR (1) KR101417558B1 (es)
CN (1) CN102822810B (es)
AU (1) AU2011261655B2 (es)
BR (1) BR112012024958A2 (es)
MX (1) MX2012011336A (es)
TW (1) TWI451252B (es)
WO (1) WO2011153072A1 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9251874B2 (en) * 2010-12-21 2016-02-02 Intel Corporation Memory interface signal reduction
WO2013080289A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法
GB2497525A (en) 2011-12-12 2013-06-19 St Microelectronics Ltd Controlling shared memory data flow
WO2013103339A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Bimodal functionality between coherent link and memory expansion
US8982644B1 (en) * 2012-02-24 2015-03-17 Marvell Israel (M.I.S.L.) Ltd. Method and apparatus for memory control
US8612650B1 (en) * 2012-03-13 2013-12-17 Western Digital Technologies, Inc. Virtual extension of buffer to reduce buffer overflow during tracing
US10089126B2 (en) 2013-03-21 2018-10-02 Vmware, Inc. Function exit instrumentation for tail-call optimized code
US8996853B2 (en) 2012-06-29 2015-03-31 Vmware, Inc. Probing the boot sequence of a computer system
US9146758B2 (en) * 2012-06-29 2015-09-29 Vmware, Inc. Simultaneous probing of multiple software modules of a computer system
US9678816B2 (en) 2012-06-29 2017-06-13 Vmware, Inc. System and method for injecting faults into code for testing thereof
KR102025251B1 (ko) 2012-10-31 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법
US10592278B2 (en) * 2013-03-15 2020-03-17 Facebook, Inc. Defer heavy operations while scrolling
US9122570B2 (en) * 2013-09-03 2015-09-01 Nanya Technology Corp. Data pattern generation for I/O training and characterization
US9625971B2 (en) * 2014-01-10 2017-04-18 Taiwan Semiconductor Manufacturing Company, Ltd. System and method of adaptive voltage frequency scaling
US20150331608A1 (en) * 2014-05-16 2015-11-19 Samsung Electronics Co., Ltd. Electronic system with transactions and method of operation thereof
US10509589B2 (en) 2014-09-15 2019-12-17 Adesto Technologies Corporation Support for improved throughput in a memory device
US9541949B2 (en) * 2014-09-22 2017-01-10 Intel Corporation Synchronization of domain counters
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9658963B2 (en) * 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US10048893B2 (en) * 2015-05-07 2018-08-14 Apple Inc. Clock/power-domain crossing circuit with asynchronous FIFO and independent transmitter and receiver sides
KR20170094815A (ko) 2016-02-11 2017-08-22 삼성전자주식회사 비휘발성 메모리, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 읽기 방법
GB2548845B (en) * 2016-03-29 2019-11-27 Imagination Tech Ltd Handling memory requests
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10055351B1 (en) * 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US11196587B2 (en) 2016-11-23 2021-12-07 DeGirum Corporation Permutated ring network
US10164758B2 (en) 2016-11-30 2018-12-25 Taiwan Semicondcutor Manufacturing Co., Ltd. Read-write data translation technique of asynchronous clock domains
US10380034B2 (en) * 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
US10476656B2 (en) * 2018-04-13 2019-11-12 DeGirum Corporation System and method for asynchronous, multiple clock domain data streams coalescing and resynchronization
US10691632B1 (en) 2019-03-14 2020-06-23 DeGirum Corporation Permutated ring network interconnected computing architecture
US11757612B2 (en) 2021-10-29 2023-09-12 Hewlett Packard Enterprise Development Lp Communicating management traffic between baseboard management controllers and network interface controllers

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308656A (ja) * 1987-06-10 1988-12-16 Fujitsu Ltd ブロックアクセス制御装置
GB2226666B (en) * 1988-12-30 1993-07-07 Intel Corp Request/response protocol
JPH0810445B2 (ja) * 1990-09-21 1996-01-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 動的バス調停方法及び装置
US5371880A (en) 1992-05-13 1994-12-06 Opti, Inc. Bus synchronization apparatus and method
JP2729343B2 (ja) * 1992-08-28 1998-03-18 三菱電機株式会社 複数個の処理装置を有する情報処理システムおよびこの情報処理システムにおいて用いられる制御装置ならびに処理装置
US5875462A (en) 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US5933610A (en) 1996-09-17 1999-08-03 Vlsi Technology, Inc. Predictive arbitration system for PCI bus agents
US6018792A (en) 1997-07-02 2000-01-25 Micron Electronics, Inc. Apparatus for performing a low latency memory read with concurrent snoop
US6049845A (en) * 1997-11-05 2000-04-11 Unisys Corporation System and method for providing speculative arbitration for transferring data
JPH11203864A (ja) * 1998-01-14 1999-07-30 Mitsubishi Electric Corp 同期型半導体記憶装置
JP2000029822A (ja) 1998-07-15 2000-01-28 Matsushita Electric Ind Co Ltd ブリッジ装置
US6272601B1 (en) 1999-05-20 2001-08-07 International Business Machines Corporation Critical word forwarding in a multiprocessor system
US6393553B1 (en) * 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6519685B1 (en) 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US6647464B2 (en) 2000-02-18 2003-11-11 Hewlett-Packard Development Company, L.P. System and method utilizing speculative cache access for improved performance
WO2001093052A2 (en) 2000-05-31 2001-12-06 Broadcom Corporation Multiprotocol computer bus interface adapter and method
US6745297B2 (en) 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US6725337B1 (en) 2001-05-16 2004-04-20 Advanced Micro Devices, Inc. Method and system for speculatively invalidating lines in a cache
US6571321B2 (en) 2001-07-27 2003-05-27 Broadcom Corporation Read exclusive for fast, simple invalidate
US7287126B2 (en) 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7111153B2 (en) 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US20050172091A1 (en) * 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
JP2006040167A (ja) * 2004-07-29 2006-02-09 Sharp Corp バス調停回路、情報処理装置、並びに、そのプログラムおよび記録媒体
US7174403B2 (en) 2005-02-24 2007-02-06 Qualcomm Incorporated Plural bus arbitrations per cycle via higher-frequency arbiter
US7434007B2 (en) 2005-03-29 2008-10-07 Arm Limited Management of cache memories in a data processing apparatus
US20070083715A1 (en) 2005-09-13 2007-04-12 International Business Machines Corporation Early return indication for return data prior to receiving all responses in shared memory architecture
US7536514B2 (en) 2005-09-13 2009-05-19 International Business Machines Corporation Early return indication for read exclusive requests in shared memory architecture
US7478190B2 (en) 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures
JP2008083845A (ja) * 2006-09-26 2008-04-10 Hitachi Ltd ストレージ装置及びストレージシステム並びにデータ読出し方法
US7702858B2 (en) 2007-06-05 2010-04-20 Apple Inc. Latency reduction for cache coherent bus-based cache
US8006042B2 (en) 2007-11-26 2011-08-23 Globalfoundries Inc. Floating point bypass retry
US8090967B2 (en) * 2008-05-23 2012-01-03 Intel Corporation Power state transition initiation control of memory interconnect based on early warning signal, memory response time, and wakeup delay
US20100005214A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation Enhancing bus efficiency in a memory system

Also Published As

Publication number Publication date
KR101417558B1 (ko) 2014-07-08
CN102822810B (zh) 2015-09-16
WO2011153072A1 (en) 2011-12-08
BR112012024958A2 (pt) 2016-07-12
CN102822810A (zh) 2012-12-12
TWI451252B (zh) 2014-09-01
JP2013532325A (ja) 2013-08-15
US20110296110A1 (en) 2011-12-01
AU2011261655B2 (en) 2013-12-19
AU2011261655A1 (en) 2012-10-11
US8713277B2 (en) 2014-04-29
TW201211766A (en) 2012-03-16
JP5621041B2 (ja) 2014-11-05
EP2539824A1 (en) 2013-01-02
KR20120131196A (ko) 2012-12-04

Similar Documents

Publication Publication Date Title
MX2012011336A (es) Reenvio de palabra critica con prediccion adaptiva.
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
US8656198B2 (en) Method and apparatus for memory power management
CN109716314B (zh) 用于控制数据传输的装置、存储器控制器、存储器模块和方法
US20210073152A1 (en) Dynamic page state aware scheduling of read/write burst transactions
US8161242B2 (en) Adaptive spill-receive mechanism for lateral caches
US8572322B2 (en) Asynchronously scheduling memory access requests
US10275352B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
US20120059958A1 (en) System and method for a hierarchical buffer system for a shared data bus
CN112088368A (zh) 动态的每存储体和全存储体刷新
CN111684427A (zh) 高速缓存控制感知的存储器控制器
CN114902197B (zh) 非易失性双列直插式存储器模块的命令重放
US8627021B2 (en) Method and apparatus for load-based prefetch access
WO2019099099A1 (en) Speculative hint-triggered activation of pages in memory
KR20230017865A (ko) Dram을 위한 리프레시 관리
CN114902187A (zh) 非易失性存储器模块的错误恢复

Legal Events

Date Code Title Description
FG Grant or registration