MX2012005183A - Linea de espera de comandos para componente periferico. - Google Patents

Linea de espera de comandos para componente periferico.

Info

Publication number
MX2012005183A
MX2012005183A MX2012005183A MX2012005183A MX2012005183A MX 2012005183 A MX2012005183 A MX 2012005183A MX 2012005183 A MX2012005183 A MX 2012005183A MX 2012005183 A MX2012005183 A MX 2012005183A MX 2012005183 A MX2012005183 A MX 2012005183A
Authority
MX
Mexico
Prior art keywords
command
commands
macro
memory
interface
Prior art date
Application number
MX2012005183A
Other languages
English (en)
Inventor
Douglas C Lee
Diarmuid P Ross
Tahoma M Toelkes
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 MX2012005183A publication Critical patent/MX2012005183A/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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

En una modalidad, un componente periférico configurado para controlar una interfaz externa de un circuito integrado. Por ejemplo, el componente periférico puede ser una unidad de interfaz de memoria tal como una unidad de interfaz de memoria flash. La interfaz interna al componente periférico se puede compartir entre las transferencias de datos hacia/desde la interfaz externa y las comunicaciones de control hacia el componente periférico. El componente periférico puede incluir una línea de espera de comandos configurada para almacenar un conjunto de comandos para llevar a cabo una transferencia en la interfaz. Un circuito de control se puede conectar a la línea de espera de comandos y puede leer los comandos y comunicarse con un controlador de interfaz para hacer una transferencia en la interfaz en respuesta a los comandos. En una modalidad, una memoria macro puede almacenar secuencias de comando a ser llevadas a cabo, en respuesta a un comando macro en la línea de espera de comandos. En una modalidad, una línea de espera de operandos puede almacenar datos de operando para su uso por los comandos.

Description

LÍNEA DE ESPERA DE COMANDOS PARA COMPONENTE PERIFÉRICO ANTECEDENTES CAMPO DE LA INVENCIÓN Esta invención está relacionada con el campo de circuitos integrados, y más particularmente, con el procesamiento de comandos en un componente periférico en un circuito integrado.
DESCRIPCIÓN DE LA MATERIA RELACIONADA En un controlador de interfaz periférica que tiene un ancho de banda de datos relevante, uno de los retos que pueden ocurrir es el de proporcionar la entrada de control al controlador de interfaz periférica que transfiere los datos entre el controlador de interfaz periférica y la memoria se usa para proporcionar la entrada de control del procesador externo (ej., mediante una serie de escrituras para controlar registros en el controlador de interfaz periférico) . Mientras que las transferencias de datos están sucediendo, la memoria a la interfaz periférica puede ser saturada con las transferencias de datos. De conformidad, las entradas de control para arreglar el siguiente conjunto de transferencias de datos, pueden ser efectivamente bloqueadas hasta que se completen las transferencias de datos actuales. Durante el tiempo que las entradas de control están siendo proporcionadas, la interfaz periférica externa controlada por el controlador de interfaz periférico puede ser inactivada.
Un mecanismo para la reducción de la contención en la periferia de la interfaz de memoria, es el de incluir in procesador en el controlador de interfaz periférica, ejecutando un programa para controlar el hardware del controlador de interfaz periférica. Sin embargo, dicho mecanismo es costoso en un número de maneras: en términos monetarios, al adquirir el procesador (ya sea como un componente discreto o como propiedad intelectual que puede ser incorporada al diseño del controlador de interfaz periférica) ; en términos del espacio que ocupa el controlador de interfaz periférica cuando se incluye el procesador; y en términos de energía consumida por el procesador. Adicionalmente, el programa a ser ejecutado es almacenado en el sistema de memoria, y por lo tanto, las recuperaciones de instrucciones pueden competir con las transferencias de datos en la periferia a la memoria de interfaz .
BREVE DESCRIPCIÓN DE LA INVENCIÓN En una modalidad, un circuito integrado incluye un componente periférico configurado para controlar una interfaz externa del circuito integrado. Por ejemplo, el componente periférico puede ser una unidad de interfaz de memoria flash. La interfaz interna al componente periférico puede ser compartida entre transferencias de datos hacia/desde la interfaz externa y las comunicaciones de control al componente periférico. El componente periférico puede incluir una linea de espera de comandos configurada para almacenar un conjunto de comandos para llevar a cabo una transferencia en la interfaz. Un circuito de control puede ser conectado a la linea de espera de comandos y puede leer los comandos y comunicarse con un controlador de interfaz para hacer una transferencia en la interfaz en respuesta a los comandos.
En una modalidad, los comandos en la linea de espera de comandos pueden ser descargados a la linea de espera de comandos en los momentos en los que las transferencias de datos no están sucediendo en la interfaz interna. Los comandos pueden estar disponibles en la linea de espera de comandos para llevar a cabo la siguiente transferencia, por ejemplo, cuando se completa la transferencia actual. Las interfaces internas y externas pueden ser usadas de manera eficiente, en algunas modalidades, aún al enfrentar la contención entre las transferencias de datos y las transferencias de control en la interfaz interna.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La siguiente descripción detallada hace referencia a los dibujos que se acompañan, que ahora serán brevemente descritos.
La Figura 1 es un diagrama de bloque de una modalidad de un circuito integrado, una memoria, y una memoria flash.
La Figura 2 es un diagrama de bloque de una modalidad de una interfaz de memoria flash ilustrada en la Figura 1.
La Figura 3 es un diagrama de flujo que ilustra la operación de una modalidad de un circuito de control de una interfaz de memoria flash ilustrada en la Figura 2, en respuesta a la recepción de una operación de escritura.
La Figura 4 es una tabla que ilustra una modalidad de comandos soportados por el circuito de control de la interfaz de la memoria flash.
La Figura 5 es un diagrama de flujo que ilustra la operación de una modalidad del circuito de control de la interfaz de la memoria flash mostrada en la Figura 2, en respuesta a la lectura de un comando del búfer de primer orden (FIFO por sus siglas en inglés) .
La Figura 6 es un diagrama de bloque de un ejemplo de uso de una memoria macro.
La Figura 7 es un diagrama de flujo que ilustra la operación de una modalidad de código de interfaz de memoria flash ejecutado por una modalidad de un procesador mostrado en la Figura 1.
La Figura 8 es un diagrama de bloque de una modalidad de un sistema, incluyendo el aparato ilustrado en la Figura 1.
La Figura 9 es un diagrama de bloque de una modalidad de un medio de almacenamiento accesible por computadora .
Mientras que la invención es susceptible a varias modificaciones y formas alternativas, sus modalidades especificas se muestran a manera de ejemplo en los dibujos, y serán descritas a detalle. Debe entenderse, sin embargo, que los dibujos y la descripción detallada no pretenden limitar la invención a la forma divulgada en particular, sino que al contrario, la intención es la de amparar todas las modificaciones, equivalentes y alternativas que caen dentro del espíritu y alcance de la presente invención, según se define en las reivindicaciones que se adjuntan. Los encabezados aquí utilizados son únicamente para fines organizacionales y no pretenden usarse para limitar el alcance de la descripción. Como se usa a través de esta solicitud, la palabra "podría (n) " o "puede (n)" se usan en sentido permisivo (ej., quiere decir que tienen el potencial para), en lugar del sentido obligatorio (ej . , que significa debe) . De manera similar, las palabras "incluye", "incluyendo" y "que incluye", significa que incluyen, pero no está limitado a.
Varias unidades, circuitos u otros componentes pueden ser descritos como "configurado/a ( s ) para" desempeñar una tarea o tareas. En tales contextos, "configurado/a ( s ) para", es una amplia recitación de estructura que generalmente quiere decir "tienen circuitos que" llevan a cabo la tarea o tareas durante la operación. Como tal, la unidad/circuito/componente, se pueden configurar para desempeñar la tarea, aún cuando la unidad/circuito/componente no está encendida. En general, los circuitos que forman la estructura correspondiente a "configurado/a (s) para" pueden incluir circuitos de hardware y/o instrucciones de programa de almacenamiento de memoria ejecutables para implementar la operación. La memoria puede incluir memoria volátil tal como memoria de acceso aleatorio estática o dinámica y/o memoria no volátil, tal como almacenamiento en disco magnético u óptico, memoria flash, memorias de sólo lectura programables , etc. De manera similar, varias unidades/circuitos/componentes pueden describirse como que desempeñan una tarea o tareas, para conveniencia de la descripción. Tales descripciones deberán interpretarse como que incluyen la frase "configurado/a (s) para". Al mencionar una unidad/circuito/componente que está configurada para desempeñar una o más tareas, se pretende, expresamente, no evocar el 35 de U.S.C. (Código Estadounidense) § 112, párrafo seis, para la interpretación de dicha unidad/circuito/componente .
DESCRIPCIÓN DETALLADA DE LAS MODALIDADES Haciendo mención a la Figura 1, un diagrama de bloque de una modalidad de un circuito integrado (10) conectado a una memoria externa (12) y uno o más dispositivos de memoria flash (28A-28B) se muestran. En la modalidad ilustrada, el circuito integrado (10) incluye un controlador de memoria (14), una unidad de interfaz de sistema (SIU) (16), un conjunto de componentes periféricos tales como componentes (18A-18B) , una unidad de interfaz de memoria flash (30), un controlador central DMA (CDMA) (20), un procesador (22) incluyendo una caché de nivel 1 (Ll) (24), una caché de nivel 2 (L2) (26), un procesador (IOP) de entrada/salida (I/O) (32). El controlador de memoria (14) está conectado a una interfaz de memoria a la que la memoria (12) se puede conectar, y está conectado al SIU (16). El controlador CDMA (20), la caché L2 (26) y el procesador (22) (a través de la caché L2 (26)), también están conectados al SIU (16) en la modalidad ilustrada. La caché L2 (26) está conectada al procesador (22) y el CDMA está conectado a los componentes (18A-18B), la unidad de interfaz de memoria flash (30), y el IOP (32). Uno o más componentes periféricos (18A-18B) se pueden conectar también a las interfaces externas también, tal como el componente periférico (18A) . En otras modalidades, otros componentes se pueden directamente conectar al SIU (16) (ej . , otros componentes periféricos).
El controlador CDMA (20) puede configurarse para desempeñar operaciones de DMA entre la memoria (12), varios componentes periféricos (18A-18B) , y/o la unidad de interfaz de memoria flash (30) . Varias modalidades pueden incluir cualquier número de componentes periféricos y/o unidades de interfaz de memoria flash (30) conectados a través del controlador de CDMA (20) . El procesador (22) (y más particularmente, las instrucciones ejecutadas por el procesador (22) ) pueden programar el controlador de CDMA (20) de varias maneras. Por ejemplo, los descriptores de DMA pueden ser escritos a la memoria (12), describiendo las operaciones de DMA a ser desempeñadas, y el controlador de CDMA (20) puede incluir registros que son programables para ubicar los descriptores de DMA en la memoria (12) . Se pueden crear múltiples descriptores para un canal DMA, y las operaciones de DMA descritas en los descriptores pueden ser desempeñadas como se especificó. De manera alternativa, el controlador de CDMA (20) puede incluir registros que son programables para describir las operaciones de DMA a ser desempeñadas, y la programación del controlador de CDMA (20) puede incluir la escritura de los registros.
Generalmente, una operación de DMA puede ser una transferencia de datos de una fuente a un objetivo que es desempeñada por hardware separado de un procesador que ejecuta instrucciones. El hardware puede ser programado usando instrucciones ejecutadas por el procesador, pero la transferencia, por si misma, es desempeñada por el hardware independiente de la ejecución de instrucción en el procesador. Al menos uno de la fuente y objetivo pueden ser una memoria. La memoria puede ser la memoria del sistema (ej . , la memoria (12)), los dispositivos de memoria flash (28A-28B) , o puede ser una memoria interna en el circuito integrado (10), en algunas modalidades. Algunas operaciones de DMA pueden tener una memoria como una fuente y un objetivo (ej., una operación de DMA entre la memoria (12) y los dispositivos de memoria flash (28A-28B) , o una operación de copiado de un bloque de la memoria (12) a otro) . Otras operaciones de DMA pueden tener un componente periférico como una fuente u objetivo. El componente periférico puede estar acoplado a una interfaz externa en la que los datos de DMA van a ser transferidos o en la que los datos de DMA van a ser recibidos. Por ejemplo, el componente periférico (18A) se puede conectar a una interfaz en la que los datos de DMA van a ser transferidos en la que los datos de DMA van a ser recibidos. Por lo tanto, una operación de DMA puede incluir el controlador de CDMA (20) que lee datos desde la fuente y escribe datos en el destino. Los datos pueden fluir a través del controlador de CDMA (20) como parte de la operación de DMA. Particularmente, los datos DMA para una lectura de DMA de la memoria (12) pueden fluir a través del controlador de la memoria (14), sobre el SIU (16), a través del controlador CDMA (20), hacia el componente periférico (18A-18B) o la unidad de interfaz de memoria flash (30) (y posiblemente en la interfaz a la que el componente periférico está conectado, si aplica) . Los datos que un DMA escribe en la memoria pueden fluir en la dirección opuesta.
En una modalidad, las instrucciones ejecutadas por el procesador (22) y/o el IOP (32) , pueden también comunicarse con los componentes periféricos (18A-18B) y la unidad de interfaz de memoria flash (30) usando operaciones de lectura y/o escritura referidas como operaciones programadas de- entrada/salida (PIO). Las operaciones PIO pueden tener una dirección que está asignada por el circuito integrado (10) a un componente periférico (18A-18B) o a la unidad de interfaz de memoria flash (30) (y más particularmente, a un registro u otra fuente legible/escribible en el componente) . La asignación de la dirección puede ser fijada en el espacio para la dirección, o puede ser programable. Alternativamente, la operación PIO puede ser transmitida en un modo que sea distinguible de las operaciones de lectura/escritura de memoria (ej . , usando un comando diferente codificando las operaciones de lectura/escritura de memoria en el SIU (16), usando una señal de banda lateral o señal de control para indicar memoria vs. PIO, etc.). La transmisión PIO puede aún incluir la dirección, que puede identificar el componente periférico (18A-18B) o la unidad de memoria flash (30) (y el recurso direccionado) dentro de un espacio para dirección PIO, para tales implementaciones .
En una modalidad, las operaciones PIO pueden usar la misma interconexión que el controlador de CDMA (20), y pueden fluir a través del controlador de CDMA (20) , para los componentes periféricos (18A-18B) y la unidad de interfaz de memoria flash (30). Por lo tanto, una operación de PIO puede ser emitida por el procesador (22) hacia el SIU (16) (a través de la caché L2 (26), en esta modalidad), al controlador de CDMA (20), y a la unidad de interfaz de memoria flash/componente periférico objetivo. Similarmente, el IOP (32) puede emitir operaciones PIO al controlador CDMA (20) , que puede transmitir la operación PIO a través de la misma interconexión a los componentes periféricos (18A-18B) o la unidad de interfaz de memoria flash (30) .
De conformidad, las transferencias de datos para una operación de DMA desde/hacia un componente periférico (18A-18B) o la unidad de interfaz de memoria flash (30) pueden entrar en conflicto con las operaciones PIO de/hacia el mismo componente periférico (18A-18B) o la unidad de interfaz de memoria flash (30) . Por ejemplo, la unidad de interfaz de memoria flash (30) puede ser programada mediante operaciones PIO para desempeñar transferencias de memoria de/hacia los dispositivos de memoria flash (28A-28B) . Para las operaciones de escritura, el controlador de CDMA (20) puede DMA los datos a ser escritos a la unidad de interfaz de memoria flash (30) . Para las operaciones de lectura, el controlador de CDMA (20) puede DMA los datos a ser leídos desde la unidad de interfaz de memoria flash (30) . En una modalidad, los dispositivos de memoria flash (28A-28D) pueden soportar una página de transferencia de datos hacia/desde los dispositivos. El tamaño de la página depende del dispositivo, y puede no ser el mismo que el tamaño de la página usada para la traducción de la dirección virtual-a-fisica para la memoria (12). Por ejemplo, los tamaños de las páginas de 512 bytes, 2048 bytes, y 4096 bytes, son frecuentemente usados. De conformidad, una página puede ser la unidad de transferencia de datos para el dispositivo de la memoria, en este contexto.
La unidad de interfaz de memoria flash (30) puede ser programada para desempeñar una transferencia de página de datos, y la unidad de CDMA (20) puede desempeñar las operaciones de DMA para transferir los datos. Si múltiples páginas se van a transferir, se pueden usar operaciones adicionales de PIO para programar la unidad de interfaz de memoria flash (30) para llevar a cabo la siguiente transferencia. Sin embargo, las operaciones de DMA pueden desbloquear efectivamente las operaciones PIO adicionales hasta que se complete la página actual. Por lo tanto, el tiempo que pasa desde que se programa la unidad de interfaz de memoria flash (30) hasta la siguiente página, puede resultar en tiempo inactivo en la interfaz para los dispositivos de memoria flash.
En una modalidad, la unidad de interfaz de memoria flash (30) puede soportar una linea de espera de comandos. Los comandos para programar la unidad de interfaz de memoria flash (30) para un conjunto de páginas a ser transferidas, pueden ser puestos en linea de espera en la linea de espera de comandos. Una vez que las operaciones de DMA para la primer página dan inicio, los datos para programar la unidad de interfaz de memoria flash (30) para las páginas subsecuentes, pueden ser ya almacenada en la linea de espera de comandos. De conformidad, puede que no haya conflictos entre las operaciones PIO para programar la unidad de interfaz de memoria flash (30) y las operaciones DMA para transferir los datos. La utilización en la interfaz a los dispositivos de memoria flash (28A-28B) , puede incrementarse debido a la capacidad para procesar los comandos de la linea de espera de comandos para configurar el controlador de memoria flash (30) para que la siguiente página sea transferida mientras la unidad CDMA (30) completa las operaciones DMA para la página actual.
En una modalidad, la unidad de interfaz de memoria flash (30) puede soportar una memoria macro para almacenar uno o más macros . Una macro puede ser una secuencia de dos o más comandos que pueden ser invocados mediante un comando de macro. Por ejemplo, el comando de macro se puede escribir en la linea de espera de comandos, y puede invocar la macro cuando el comando de macro es desempeñado por la unidad de interfaz de memoria flash (30). Las macros que implementan secuencias frecuentemente usadas de comandos, pueden ser descargadas a la memoria macro, y por lo tanto, menos comandos necesitan ser descargados subsecuentemente. Esto es, los comandos de macro pueden escribirse en la linea de espera de comandos, en lugar de escribir repetidamente los comandos que están almacenados en la macro. En una modalidad, el comando de macro puede especificar una dirección de inicio de la macro, y un número de palabras en la macro. Una vez que el número de palabras ha sido leído de la macro y los comandos correspondientes han sido desempeñados, el siguiente comando en la línea de espera de comandos después del comando de la macro, puede ser desempeñado. De conformidad, los comandos devueltos se pueden evitar en la macro, permitiendo macros más densas en una modalidad. Otras modalidades pueden usar la dirección de inicio y un número de comandos como operandos. Aún otras modalidades, pueden implementar un comando devuelto y el comando de macro puede incluir la dirección de inicio, (pero no conteo de palabras/comandos) como un operando. En una modalidad, el comando de macro puede también incluir un operando de conteo de ciclos. El operando de conteo de ciclos puede especificar un número de iteraciones de la macro que deben ser desempeñadas. Por lo tanto, el desempeño del comando de la macro puede incluir la lectura del número de palabras que empiezan en la dirección de inicio y desempeñar los comandos, iterado el número de veces de conteo de ciclos, antes de proceder con el siguiente comando en la línea de espera de comandos después del comando de macro.
Los comandos en la linea de espera de comandos y/o los comandos en la memoria macro, pueden usar operandos para controlar su operación. En algunos casos, los operandos se pueden almacenar en la linea de espera de comandos. En otros casos, los operandos se pueden almacenar en una linea de espera de comandos. Los comandos en la linea de espera de comandos o en la memoria macro, pueden especificar que la unidad de interfaz de memoria flash (30) carga los operandos desde la linea de espera de operandos y opera en los operandos. La linea de espera de operandos puede ser usada con una macro para proporcionar datos específicos al instante para la macro genérica (ej . , direcciones de memoria flash, activaciones de chip, etc. ) . De manera similar, la línea de espera de operandos puede suministrar operandos para los comandos en la línea de espera de comandos.
Una transferencia de memoria, como se usa aquí, puede referirse a la transferencia de datos hacia/desde un dispositivo de memoria (vía la interfaz al dispositivo de memoria) . Por lo tanto, una transferencia de memoria hacia/desde los dispositivos de memoria flash (28A-28B) puede darse durante la interfaz entre los dispositivos de memoria flash (28A-28B) y la unidad de interfaz de memoria flash (30). Similarmente, una transferencia de memoria de/a la memoria (12), puede darse en la interfaz entre la memoria (12) y el controlador de la memoria (14). La transferencia de memoria puede ocurrir usando un protocolo definido por los dispositivos de la memoria. Adicionalmente, un comando se puede referir a uno o más bytes de datos que se interpretan por el hardware en el componente periférico (ej., la unidad de interfaz de memoria flash (30)) como si especificara una operación en particular a ser llevada a cabo por el hardware.
Generalmente, un componente periférico puede ser cualquier circuito que se desee se incluya en el circuito integrado (10) con el procesador. Un componente periférico puede tener una funcionalidad e interfaz definidas por las que otros componentes del circuito integrado (10) se pueden comunicar con el componente periférico. Por ejemplo, los componentes periféricos pueden incluir componentes de video tales como controladores de pantalla, procesadores de gráficos, etc.; componentes de audio tales como procesadores de señales digitales, mezcladoras, etc.; componentes de red tales como controlador de acceso de medios Ethernet (MAC) o un controlador de fidelidad inalámbrica (WiFi) ; controladores para comunicarse en varias interfaces tales como una vía de transmisión de serie universal (USB) , interconector de componente periférico (PCI), o sus variantes tales como el PCI exprés (PCIe), interfaz periférica serial (SPI), interfaz de memoria flash, etc. La unidad de interfaz de memoria flash (30) puede ser un ejemplo de un componente periférico, y las propiedades generales de un componente periférico aquí descritas, se pueden aplicar a la unidad de interfaz de memoria flash (30) .
El procesador (22) puede implementar cualquier arquitectura de conjunto de instrucciones, y puede ser configurado para ejecutar instrucciones definidas en dicha arquitectura de conjunto de instrucciones. El procesador (22) puede usar cualquier microarquitectura, incluyendo arquitectura escalar, superescalar, canalizada, supercanalizada, fuera de orden, en orden, especulativa, no especulativa, etc., o sus combinaciones. El procesador (22) puede incluir circuitos, y opcionalmente puede implementar técnicas de microcodificación . En la modalidad ilustrada, el procesador (22) puede incluir una caché Ll (24) para almacenar datos e instrucciones para el uso por parte del procesador (22) . Puede haber datos Ll e instrucciones caché separados. La(s) cachés(s) Ll puede (n). tener cualquier capacidad y organización (configuración asociativa, asignación directa, etc.). En la modalidad ilustrada, una caché L2 (26) también se proporciona. La caché L2 (26) puede tener cualquier capacidad y organización, similar a la(s) caché(s) Ll .
De manera similar, el IOP (32) puede implementar cualquier arquitectura de conjunto de instrucciones, y se puede configurar para ejecutar instrucciones definidas en esa arquitectura de conjunto de instrucciones. La arquitectura de conjunto de instrucciones implementada por el IPO (32) no necesita ser la misma arquitectura de conjunto de instrucciones implementada por el procesador (22) . En una modalidad, el IPO (32) puede ser un procesador de desempeño más bajo, o de más bajo poder, que el procesador (22). El IPO (32) puede manejar varias cuestiones de interfaz 1/0 (configurando componentes periféricos para desempeñar las operaciones deseadas, ciertos errores de manejo, etc.). El IPO (32) puede ejecutar instrucciones para escribir comandos en la linea de espera de comandos en la unidad de interfaz de memoria flash (30) , escribir macros en la memoria macro en la unidad de interfaz de memoria flash (30), y/o escribir operandos en la linea de espera de operandos en la interfaz de memoria flash (30) . El IPO (32) puede, además, ejecutar instrucciones que sirvan para otros componentes periféricos (18A-18B) . Por lo tanto, el procesador (22) puede llevar a cabo otras tareas de cómputo, o puede ser apagado para conservar la energía si no existen otras tareas de cómputo a ser desempeñadas. El IOP (32) puede usar cualquier microarquitectura, incluyendo la escalara, superescalar , canalizada, supercanalizada, fuera de orden, en orden especulativa, no especulativa, etc., o sus combinaciones. El IPO (32) puede incluir circuitos, y puede implementar opcionalmente técnicas de microcodificación .
El SIU (16) puede ser una interconexión en la cual el controlador de memoria (14), el procesador (22) (mediante la caché L2 (26)), la caché L2 (26), y el controlador CDMA (20) , se pueden comunicar. El SIU (16) puede implementar cualquier tipo de interconexión (ej., una vía de transmisión, una interfaz de paquete, vínculos de punto a punto, etc.). El SIU (16) puede ser una jerarquía de interconexiones, en algunas modalidades.
El controlador de memoria (14) puede ser configurado para recibir solicitudes de memoria de la unidad de interfaz del sistema (16). El controlador de memoria (14) puede ser configurado para acceder a la memoria (12) para completar las solicitudes (escribiendo datos recibidos a la memoria (12) para una solicitud de escritura, o proporcionando datos de la memoria (12) en respuesta a una solicitud de lectura) usando la interfaz definida para la memoria adjunta (12). El controlador de memoria (14) se puede configurar a la interfaz con cualquier tipo de memoria (12), tal como la memoria dinámica de acceso aleatorio (DRAM) , DRAM sincrónica (SDRAM) , (SRAM) , etc. La memoria se puede arreglar como bancos múltiples de memoria, tal como módulos de memoria dual en linea (DIMMs) , módulos de memoria sencilla en linea (SIMMs) , etc. En una modalidad, una o más tarjetas de memoria se fijan al circuito integrado (10) con configuración de paquete en paquete (POP) o tarjeta en tarjeta (COC) .
La memoria (12) puede incluir uno o más dispositivos de memoria. Generalmente, un dispositivo de memoria puede ser cualquier componente que esté diseñado para almacenar datos de acuerdo con una dirección proporcionada con los datos en una operación de escritura, y para suministrar dichos datos cuando se usa la dirección en una operación de lectura. Cualquiera de los ejemplos de tipos de memoria mencionados anteriormente, se pueden implementar en un dispositivo de memoria, y los dispositivos de memora flash (28A-28B) pueden ser también dispositivos de memoria. Un dispositivo de memoria puede ser una tarjeta, múltiples tarjetas conectadas a un sustrato tal como una tarjeta de circuitos de impresión (ej . , SIMM o DIMM, o directamente conectadas a una tarjeta de circuitos a la que el IC (10) está conectado), etc.
La unidad de interfaz de memoria flash (30) puede incluir circuitos configurados para recibir solicitudes de lectura y escritura para los dispositivos de memoria flash (28A-28B) , y configurados para hacer interfaz con los dispositivos de memoria flash (28A-28B) para completar las solicitudes de lectura/escritura. En una modalidad, las solicitudes de lectura/escritura pueden ser enviadas desde el controlador CDMA (20) . La unidad de interfaz de memoria flash (30) puede ser programable mediante uno o más registros de control (ver la Figura 2 descrita más abajo) para desempeñar transferencias de memoria de/hacia los dispositivos de memoria flash (28A-28B) (ej . , mediante operaciones de PIO) . Los dispositivos de memoria flash (28A-28B) pueden ser uña memoria flash, un tipo de memoria no volátil que es conocida en la materia. En otras modalidades, se pueden usar otras formas de memoria no volátil. Por ejemplo, la SRAM con respaldo de batería, varios tipos de ROMs programables , tales como los ROMs eléctricamente-borrables programables (EEPROMs), etc., pueden usarse. Aún en otras modalidades, la memoria volátil se puede usar de manera similar a la memoria (12).
Mientras que la presente modalidad describe usando la linea de espera de comandos (FIFO), la memoria macro, y/o la línea de espera de operandos (FIFO) en la unidad de interfaz de memoria flash (30) , otras modalidades pueden implementar las características en cualquier componente periférico, con cualquier tipo de memoria o interfaz periférica.
Se hace notar que otras modalidades pueden incluir otras combinaciones de componentes, incluyendo los subconjuntos o superconj untos de los componentes mostrados en la Figura 1, y/u otros componentes. Mientras que una instancia de un componente dado se puede mostrar en la Figura 1, otras modalidades pueden incluir una o más instancias del componente dado.
Haciendo referencia ahora a la Figura 2, un diagrama de bloque de una modalidad de la unidad de interfaz de memoria flash (30) se muestra. En la modalidad ilustrada, la unidad de interfaz de memoria flash (30) incluye un comando (FIFO) (40), una interfaz de memoria flash (FMC) (48), un conjunto de registros de control de FMC (50), búferes de datos (52A-52B) , y una unidad de corrección/revisión de errores (ECC) (54). El comando FIFO (40), el circuito de control FMI (42), la memoria macro (44), el operando FIFO (46), y los búferes (52A-52B) , están todos conectados a una interfaz interna del controlador de CDMA (20) . El circuito de control FMI (42) está, además, conectado al comando FIFO (40), la memoria macro (44), el operando FIFO (46) , y los registros de control de FMC (50) . Los registros de control de FMC (50) están, además, conectados al FMC (48), que está conectado a una interfaz externa a los dispositivos de memoria flash. El FMC (48) está, además, acoplado a los búferes (52A-52B) . La unidad ECC (54) también está conectada a los búferes (52A-52B) .
El circuito de control de FMI (42) puede configurarse para recibir operaciones PIO del controlador de CDMA (20) . Algunas operaciones PIO se pueden dirigir al comando FIFO (40), la memoria macro (44), o el operando FIFO (46) . Por ejemplo, las escrituras PIO se pueden usar para escribir comandos en el comando FIFO (40), para descargar macros a la memoria macro (44), o para escribir operandos en el operando FIFO (46). Las direcciones se pueden asignar a cada uno de los FIFO (40), la memoria macro (44), y el operando FIFO (46), que se puede usar en los operandos PIO para direccionar el recurso deseado. Por ejemplo, los FIFOs (40 y 46) pueden tener sólo una dirección asignada ya que pueden operar a manera de primer orden. Una escritura PIO a la dirección puede hacer que el circuito de control FMI (42) almacene los datos proporcionados con la escritura en la siguiente entrada abierta en el FIFO (40 ó 46) . Esto es, los datos pueden adjuntarse a la cola del FIFO (40 ó 46), en donde los comandos u operandos son eliminados de la cabeza del FIFO (40 ó 46). La memoria macro (44) puede tener un rango de direcciones asignado a la misma, ej . , una dirección por palabra de la memoria macro (44) . Las escrituras PIO a las direcciones pueden almacenar las palabras de los datos proporcionados en la palabra direccionada de la memoria macro (44).
El circuito de control FMI (42) puede procesar los comandos en el comando FIFO (40) para programar varios registros de control FMC (50) para hacer que el FMC (48) desempeñe una transferencia de memoria particular hacia/desde los dispositivos de memoria flash (28A-28B) . En una modalidad, el FMC (48) está configurado para recibir control de relativamente bajo nivel mediante los registros de control de FMC (50), incluyendo dirección, activaciones de tarjeta, comandos de transferencia, etc. Los comandos en el comando FIFO (40) pueden ser interpretados por el circuito de control FMI (42) y los registros de control FMC correspondientes (50) pueden ser escritos por el circuito de control FMI (42) . Similarmente, los comandos para esperar un evento pueden interpretarse por el circuito de control FMI para leer uno o más de los registros de control FMC (50) para detectar el evento. También puede haber señales de control directas entre el circuito de control FMI (42) al FMC (48), en algunas modalidades (no mostradas en la Figura 2) , que pueden ser activadas por el circuito de control FMI (42) en respuesta a los comandos y/o monitoreadas por el circuito de control FMI (42) en respuesta a comandos.
El circuito de control FMI (42) se puede configurar para leer los comandos del comando FIFO (40) en la orden escrita. Más generalmente, una linea de espera de comandos puede estar soportada (ej., el comando FIFO (40) puede no estar construido específicamente como un FIFO, de forma tal que cada entrada en la línea de espera puede ser concurrentemente visible para el circuito de control FMI (42)). Similarmente, el operando FIFO (46) puede ser una línea de espera de operando, y el circuito de control FMI (42) puede leer operandos del operando FIFO (46) en respuesta a los comandos en la línea de espera de comandos o la memoria macro (44) en el orden en el que fueron escritos los operandos.
Como se mencionó previamente, un comando macro puede estar en el comando FIFO (40), y el circuito de control FMI (42) puede desempeñar comandos de la memoria macro (44) en respuesta al comando macro. En otras modalidades, el comando macro puede ser transmitido como una operación PIO al circuito de control FMI (42) . Aún en otras modalidades, los comandos macro pueden ser encontrados en el comando FIFO (40) o en operaciones PIO. El comando macro puede incluir una dirección de inicio en la memoria macro y un conteo de palabras indicando el número de palabras a ser leídas de la memoria macro (44). El circuito de control FMI (42) puede desempeñar los comandos en la macro antes de leer el siguiente comando en el comando FIFO (40) . Las palabras en la macro pueden incluir operandos además de los comandos, en una modalidad. Otras modalidades pueden usar un conteo de comandos en lugar de un conteo de palabras . Como se menciona anteriormente, el comando de la macro puede también incluir un conteo de ciclos y la macro puede ser iterada el número de veces indicada por el conteo de ciclos.
La lectura de palabras del comando FIFO (40) y el operando FIFO (46) pueden incluir el circuito de control FMI (42) al borrar aquellas palabras del FIFO. La lectura de palabras de la memoria macro (44), por otra parte, puede no involucrar el borrado de las palabras, para que las macros puedan ser desempeñadas repetitivamente.
El FMC (48) puede desempeñar transferencias de memoria en respuesta al contenido de los registros de control FMC (50), escribiendo los datos leídos de los dispositivos de memoria flash (28A-28B) a los búferes (52A-52B) o escribiendo los datos leídos de los búferes (52A-52B) a los dispositivos de memoria flash (28A-28B) . Los búferes (52A-52B) se pueden usar a manera de ping-pong, en la que uno de los búferes (52A-52B) se llena con los datos, mientras que el otro se drena. Por ejemplo, las lecturas de los dispositivos de memora (28A-28B) pueden incluir el FMC (48) llenando uno de los búferes (52A-52B) mientras que el otro búfer (52A-52B) está siendo drenado por el controlador CDMA (20) que desempeña operaciones DMA a la memoria (12) . Las escrituras a los dispositivos de memoria flash (28A-28B) pueden incluir el controlador de CDMA (20) llenando uno de los búferes (52A-52B) con datos, mientras que el FMC (48) drena el otro búfer (52A-52B) . La unidad ECC (54) puede generar datos ECC para escrituras a los dispositivos de memoria flash (28A-28B) , y puede revisar los datos de ECC para lecturas de los dispositivos de memoria flash (28A-28B) .
Haciendo referencia ahora a la Figura 3, se muestra un diagrama de flujo ilustrando la operación de una modalidad del circuito de control FMI (42) en respuesta a la recepción de una operación PIO . del controlador CDMA (20) . Mientras que se muestran los bloques en una orden particular para facilidad de entendimiento, otras órdenes pueden ser usadas. Los bloques se pueden desempeñar en paralelo en lógica combinatoria en el circuito de control FMI (42). Por ejemplo, los bloques de decisión ilustrados en la Figura 3 pueden ser independientes y pueden ser desempeñados en paralelo. Los bloques, combinaciones de bloques y/o el diagrama de flujo en su totalidad pueden ser canalizados durante múltiples ciclos del reloj . El circuito de control FMI (42) se puede configurar para implementar la operación ilustrada en la Figura 3.
Si la escritura PIO es direccionada al comando FIFO (40) (bloque de decisión (60), pestaña "si")/ el circuito de control FMI (42) se puede configurar para actualizar la siguiente entrada en el comando FIFO (40) con los datos de la escritura PIO (bloque 62) . Esto es, los datos de la escritura PIO pueden ser adjuntados a la cola del comando FIFO (40) . Si la escritura PIO está direccionada a la memoria macro (bloque de decisión (64), pestaña "si"), el circuito de control FMI (42) se puede configurar para actualizar la entrada direccionada en la memoria macro (44) con los datos de la escritura PIO (bloque 66) . Si la escritura PIO está direccionada al operando FIFO (46) (bloque de decisión 68, pestaña "si") , el circuito de control FMI (42) se puede configurar para actualizar la siguiente entrada en el operando FIFO (46) con los datos de la escritura PIO (bloque (70) ) . Esto es, los datos de la escritura PIO pueden adjuntarse a la cola del operando FIFO (46) . Si la escritura PIO es direccionada a un registro dentro del los registros de control de FMC (50) (u otros registros en la unidad de interfaz de memoria flash (30), en varias modalidades, bloque de decisión (72), pestaña "si"), el circuito de control FMI (42) se puede configurar para actualizar los registros de direcciones (bloque (74)).
Haciendo referencia a la Figura 4, se muestra una tabla (76) ilustrando un conjunto ejemplar de comandos que pueden ser soportados por una modalidad de la unidad de interfaz de memoria flash (30), y más particularmente, por el circuito de control FMI (42) . Otras modalidades pueden soportar cualquier otro conjunto de comandos, incluyendo subconj untos de los comandos mostrados en la Figura 4, subconjuntos de los comandos y otros comandos, y/o un superconj unto de los comandos y otros comandos. La tabla incluye una columna de "comandos" que lista cada comando, una columna de "operandos" que indica los operandos para un comando dado, y una columna de "palabras" que indica el número de palabras en el comando FIFO (40) que están ocupadas por el comando.
El formato de los comandos puede variar de modalidad a modalidad. Por ejemplo, en una modalidad, cada comando puede incluir un byte de código de operación que identifica el comando dentro del conjunto de comandos (esto es, cada entrada en la tabla (76) puede identificarse mediante una codificación diferente de código de operación) . Los bytes remanentes en la palabra o palabras que forman el comando, se pueden usar para especificar operandos para el comando. Los comandos se pueden almacenar en el comando FIFO (40) o la memoria macro (44), en varias modalidades.
Los comandos de direcciones (addrO a addr7 en la tabla (76) ) se pueden usar para emitir bytes de direcciones en la interfaz a los dispositivos de memoria flash (28A-28B) (más sucintamente referidos como la interfaz de memoria flash) . El dígito después de "addr" indica el número de bytes de dirección transmitidos, iniciando con el byte 0 de la dirección en la interfaz de memoria flash. El circuito de control FMI (42) puede ser configurado para estar pausado hasta que los bytes de direcciones se han transmitido antes de desempeñar el siguiente comando, en una modalidad. Los comandos addrX pueden ser equivalentes a la programación de los siguientes registros de control FMC (50), en una modalidad: uno o más registros de direcciones con los bytes de direcciones, y la programación de un número de transferencias y modo de lectura/escritura en uno o más registros en respuesta al modo de lectura/escritura, el FMC (48) puede transmitir los bytes de direcciones en la interfaz de memoria flash y puede señalar una dirección que se interrumpió en un registro de estado dentro de los registros de control FMC (50) . Adicionalmente, los comandos addrX pueden incluir, además, la espera y limpieza y una dirección que se interrumpió en el registro de estado. El comando addrO puede diferir de los comandos addrl hasta addr7 en que los registros de direcciones y el registro de numero de transferencia de dirección no están programados. En su lugar, estos registros pueden ser preprogramados usando otros comandos tal como los comandos load_next_word (descargar_siguiente_palabra) o load_from_fifo (cargar_desde_fifo) descritos más adelante.
El comando "cmd" se puede usar para enviar un comando de interfaz de memoria flash hacia afuera en la interfaz de memoria flash. En una modalidad, los comandos de interfaz de memoria flash son de un byte. De conformidad, el operando del comando "cmd" puede ser el byte de comando y puede ser transmitido en la interfaz de memoria flash. El circuito de control FMI (42) se puede configurar para hacer pausa hasta que el comando "cmd" sea completado en la interfaz de memoria flash. El comando "cmd" puede ser equivalente a la programación de un registro de comando en los registros de control FMC (50) con el byte de comando; la configuración de un bit de modo de comando en otro registro de control FMC (50) ; y la espera y la limpieza de una "cmd" que se interrumpió en un registro de estado dentro de los registros de control de FMC (50) . En respuesta a la configuración del bit de modo de comando, el FMC (48) puede configurarse para transmitir el bite de comando en la interfaz de memoria flash y puede esciribir el "cmd" que se interrumpió al registro de estado .
El comando enable_chip (activar_tarj eta) puede usarse para escribir un registro de activar tarjeta de los registros de control (50), que pueden hacer que el FMC (48) active las señales activación de tarjeta en la interfaz de memoria flash con base en el operando de activación de tarjeta.
El comando xfer_page ( transíerir_página) se puede usar para iniciar una transferencia de página hacia/desde los dispositivos de memoria flash (28A-28B) . En respuesta al comando xfer_page, el circuito de control FMI (42) puede configurarse para establecer un bit de arranque en un registro de control FMC (50) y esperar y limpiar un bit de página que se interrumpió en otro registro de control FMC (50) . En respuesta al bit de arranque, el FMC (48) se puede configurar para desempeñar la transferencia de página especificada, y establecer la página que se interrumpió a su complementación .
Puede haber varios comandos de sincronización soportados por el circuito de control FMI (42) . Generalmente, un comando de sincronización se puede usar para especificar un evento que el circuito de control FMI (42) es para monitorear, y puede provocar que el circuito de control FMI (42) espere a que suceda el caso (ej., esperar hasta que el circuito de control FMI (42) detecte el evento) antes de desempeñar el siguiente comando. Por lo tanto, la sincronización de comandos puede ayudar a asegurar la temporización correcta. Por ejemplo, se pueden preprogramar múltiples transferencias de páginas, y los comandos de sincronización se pueden usar para retrasar la programación de los registros de control de FMC (50) para la siguiente página hasta que los registros ya no sean necesarios para la página actual (ej., después de que el último dato de la página es cargado en el búfer (52A-52B) para su lectura) .
En la modalidad de la Figura 4, los comandos de sincronización pueden incluir wait_for_rdy (espera_a_listo) , pause (pausa), timed_wait (temporizado_esperar ) , y wait_for_int (esperar_por_int ) . El comando wait_for_rdy se puede usar para monitorear el estado de los dispositivos de memoria flash (28A-28B) durante una transferencia de página. El comando wait_for_rdy puede incluir la espera y limpieza del que "se interrumpió" especifico (ej., página hecha) en el registro de estado de los registros de control de FMC (50); encubrir un byte de estado en el registro de estado con el operando encubierto, y comparar el byte de estado encubierto con el operando de condición. Si el byte de estado encubierto es igual al operando de condición, el circuito de control FMI (42) se puede configurar para desempeñar el siguiente comando. De otra manera, el circuito de control FMI (42) puede señalar una interrupción (ej . , al IOP (32) o al procesador (22), en varias modalidades) y puede detener el desempeño de comandos adicionales hasta que el IOP (32) /procesador (22) de servicie a la interrupción.
El comando pause puede usarse para pausar el desempeño del comando por el circuito de control FMI (42).
El circuito de control FMI (42) puede dejar de desempeñar comandos hasta que específicamente, un software que se ejecuta en el IPO ( 32 ) /procesador (22) le quite la pausa, escribiendo un bit de activación especificado en uno de los registros de control de FMC (50) .
El circuito de control FMI (42) puede configurarse para pausar y continuar después de un número de ciclos de reloj mediante el comando timed_wait. El número de ciclos de reloj se especifica como el operando del comando timed_wait . En algunas modalidades, el comando timed_wait se puede usar para desacelerar la unidad de interfaz de memoria flash (30), debido a que el desempeño posible usando el comando FIFO (40), la memoria macro (44) y el operando FIFO (46), puede exceder la tasa a la que las actividades se pueden desempeñar por los dispositivos de memoria flash (28A-28B) .
El comando wait_for_int puede usarse para hacer que el circuito de control FMI (42) espere un valor de interrupción especificado. Los operandos pueden especificar la interrupción (irq) que se debe esperar, y el estado del bit de irq a ser esperado (ej., configurado o limpiado), usando el operando "bit".
El comando send_interrupt (enviar_interrumpir ) puede usarse para enviar una interrupción especificada al IPO (32) o procesador (22) . El operando del comando send_interrupt puede especificar un código de interrupción para que escriba un registro de código de interrupción de los registros de control FMC (50), lo que puede hacer que se envié la interrupción.
Los comandos load_next_word (cargar_siguiente_palabra) y load_from_fifo (descargar_desde_fifo) , se pueden usar para programar varios registros en los registros de control FMC (50) . Uno de los operandos de estos comandos es la dirección de registro del registro de control a ser escrito. En respuesta al comando load_next_word, el circuito de control FMI (42) puede leer la siguiente palabra del comando FIFO (40) y escribir la palabra en el registro direccionado . En respuesta al comando load_from_fifo, el circuito de control FMI (42) se puede configurar para leer la palabra en el encabezado del operando FIFO (46) y escribir la palabra en el registro direccionado.
El comando macro se puede usar para hacer que el circuito de control FMI (42) lea los comandos de la memoria macro (44). El comando macro incluye un operando de dirección, un operando de longitud, y un operando de conteo de ciclos. La dirección puede identificar la primer palabra a ser leída de la memoria macro (44), y la longitud puede identificar la longitud de la macro (ej., en términos de número de comandos o número de palabras) . En una modalidad, la longitud es el número de palabras. El conteo de ciclos puede indicar un número de iteraciones de la macro a ser desempeñada. En una modalidad, el operando de conteo de ciclo puede ser uno menos del número de iteraciones (ej., un conteo de ciclos de cero es una iteración, un conteo de ciclos de uno son dos iteraciones, etc.). Una vez que una macro está completa, se puede leer el siguiente comando FIFO (42) (ej., puede no haber ningún comando de "retorno" en la macro) .
El comando poli (escrutar) puede ser para escrutar cualquier registro en los registros de control FMC (50) para un valor especificado (después de encubrir el valor leído del registro usando el campo de encubrimiento) . El circuito de control FMI (42) puede escrutar el registro hasta que se detecte el valor especificado, después proceder al siguiente comando.
Como se hace notar en la descripción anterior, el circuito de control FMI (42) puede monitorear varias interrupciones registradas en uno o más registros de estado dentro de los registros de control de FMI (50) como parte del desempeño de ciertos comandos. El circuito de control FMI (42) puede limpiar la interrupción y completar el comando correspondiente. En la ausencia de comandos en el comando FIFO (40), las interrupciones pueden, al contrario, ser enviadas al IOP ( 32 ) /procesador (22) (si está activado) . De conformidad, las operaciones de escritura PIO a los registros de control FMC (50) y las interrupciones al IOP ( 32 ) /procesador (22) pueden ser otro mecanismo para desempeñar transferencias de memoria hacia/desde los dispositivos de memoria flash (28A-28B) .
Haciendo referencia ahora a la Figura 5, se muestra un diagrama de flujo que ilustra la operación de una modalidad del circuito de control FMI (42) para procesar un comando. Mientras que se muestran los bloques en un orden particular para facilidad de entendimiento, se pueden usar otros órdenes. Los bloques pueden desempeñarse en paralelo en lógica combinatoria en el circuito de control FMI (42). Bloques, combinaciones de bloques, y/o el diagrama de flujo en su totalidad, se pueden canalizar durante ciclos de reloj múltiples. El circuito de control FMI (42) puede configurarse para implementar la operación ilustrada en la Figura 5.
El circuito de control FMI (42) se puede configurar para leer un comando del comando FIFO (40) (bloque 80) . Si el comando no es un comando macro (bloque de decisión (82), pestaña "no"), el circuito de control FMI (42) se puede configurar para desempeñar el comando (bloque 84). Una vez que el comando se completa, el circuito de control FMI (42) se puede configurar para revisar un conteo de palabras usado para determinar si una macro ha llegado a su fin. Si el comando no es parte de una macro, el conteo de palabras puede ser cero (bloque de decisión (86), pestaña "no") . El circuito de control FMI se puede configurar para revisar el conteo de ciclos asociado con el comando macro. Si el comando no es parte de una macro, el conteo de ciclos puede ser cero (bloque de decisión (95), pestaña "no") . El circuito de control FMI (42) puede ser configurado para determinar si hay otro comando válido en el comando FIFO (40) (bloque de decisión (88)). Esto es. El circuito de control FMI (42) se puede configurar para determinar si el comando FIFO (40) está vacio. Si hay otro comando válido (bloque de decisión 88, pestaña "yes"), el circuito de control (42) se puede configurar para leer y procesar el siguiente comando. De otra manera, el circuito de procesamiento de comandos del circuito de control FMI (42), puede ser desactivado hasta que otro comando válido sea escrito en el comando FIFO (40) (bloque de decisión (88) , pestaña "no") .
Si el comando es un comando macro (bloque de decisión (82), pestaña "si"), el circuito de control FMI (42) se puede configurar para inicializar el conteo de palabras al operando de longitud del comando macro, y para inicializar el conteo de ciclos al operando del conteo de ciclos del comando macro (bloque 90) . El circuito de control FMI (42) también puede leer un comando de la memoria macro (44) (bloque 92). Específicamente, en este caso, el circuito de control FMI (42) puede leer la primera palabra de la dirección en la memoria macro (44) proporcionada como el operando de dirección del comando macro. El circuito de control FMI (42) se puede configurar para llevar a cabo la reducción del conteo de palabras y para leer el siguiente comando de la memoria macro (44) (ej., al incrementar la dirección) (bloques (94) y (96)). El circuito de control FMI (42) se puede configurar para procesar el siguiente comando (regresando al bloque de decisión (82) en el diagrama de flujo de la Figura 5) . Si el conteo de palabras es cero (bloque de decisión (86) , pestaña "no"), el circuito de control FMI (42) se puede configurar para revisar el conteo de ciclos. Si el conteo de ciclos es mayor a cero (bloque de decisión (95), pestaña "si"), otra iteración de la macro debe desempeñarse. El circuito de control FMI (42) puede reducir el conteo de ciclos (bloque (97)), reinicializar el conteo de palabras y la dirección de la macro (bloque (99) ) , y leer el siguiente comando de la memoria macro (44) (ej . , el primer comando de la macro) (bloque 96) . Si tanto el conteo de palabras como el conteo de ciclos son cero (bloque de decisión (86) y (88), pestañas "no"), la macro está completa y el circuito de control FMI (42) puede buscar el siguiente comando válido en la linea de espera de comandos (40) (bloque de decisión ( 88 ) ) .
Se hace notar que, debido a que cada comando es revisado por ser un comando macro, los comandos macros se pueden almacenar en la memoria macro (44) también. De conformidad, las macros pueden ser "anidadas", aunque la última macro a ser desempeñada regresa al comando FIFO (40), por lo que no hay anidamiento verdadero, en el sentido de que las macros no regresan a las macros que las llamaron .
Haciendo referencia a la Figura 6, se muestra un diagrama de bloque de un ejemplo de un uso de macros para llevar a cabo una escritura de página múltiple a un dispositivo de memoria flash (28A ó 28B) . Se muestra un contenido de la memoria macro (44), incluyendo tres secciones de comandos. Entre la dirección de la memoria macro (0) y (N-l), las palabras de la macro (100) para completar una escritura a la página previa, se almacenan. Entre la dirección de la memoria macro (N) y (N+M-l), ( ) palabras de la macro (102) para iniciar una escritura a una página siguiente, se almacenan. Entre la dirección de la memoria macro (N+M) y (N+M+P-l) , p palabras de la macro (104) se almacenan para terminar una última página de una escritura a memoria.
Un conjunto de comandos en el comando FIFO (40) se ilustran en la Figura 6, con un encabezado de FIFO en la parte superior del comando FIFO (42) y los subsecuentes comandos en el FIFO procediendo en orden hacia abajo del comando FIFO (40), como se ilustra en la Figura 6. El primer comando es macro N,M. El comando llama a la macro (104), empezando con la palabra N, y desempeña M palabras (ej . , la macro (102) como se ilustra en la Figura 6). Por lo tanto, la escritura a la primera página se inicia. Las escrituras de página subsecuentes se pueden desempeñar usando los comandos macro 0, N+M. Estos comandos hacen que la macro (100) y la macro (102) se desempeñen. La escritura a la página previa se puede completar (macro (100) ) y la escritura a la página siguiente se puede iniciar (macro (102)). La última página se puede escribir usando el comando macro 0, N+M+P. Este comando hace que las macros (100), (102) y (104) se desempeñen, completando la escritura de la segunda a la última página 8macro (100)), desempeñando la escritura a la última página (macro (102)) y completando la escritura a la última página y cerrando el dispositivo de memoria flash (28A o 28B) (macro (104)). En este ejemplo, el operando de conteo de ciclos de cada comando macro es cero (una iteración) . Sin embargo, en otro ejemplo, mostrado por debajo del primer ejemplo en la Figura 6, el operando de conteo de lupas puede ser usado para hacer los comandos en la linea de espera de comandos, aún más eficientes. El conteo de ciclos del comando macro ?, para la primera página y el comando macro 0, N+M+P para la última página, aún puede ser cero, especificando una iteración. Sin embargo, las páginas de en medio de la escritura pueden todas lograrse usando un comando macro (macro 0, N+ ) con un operando de conteo de ciclos igual al conteo de páginas (C) menos 3. El conteo de ciclos es de C-3 para contar para la primera y última página, asi como el hecho de que el operando de conteo de ciclos es uno menos del número deseado de iteraciones en esta modalidad. Como lo ilustran las macros (100), (102) y (104), mediante el arreglo cuidadoso de las macros en la memoria macro (44), pueden resultar macros densas y eficientes. Las macros pueden usar comandos load_from_fifo para usar diferentes operandos para cada operando de escritura de página, y los operandos para cada página pueden ser cargados en el operando FIFO (46), antes de iniciar los comandos en el comando FIFO (40) .
Los comandos incluidos en la macro (102) pueden establecer la dirección a ser escrita, activaciones de tarjetas, etc. Los comandos incluidos en la macro (100) pueden incluir xfer_page para transferir la página previa a la memoria, y los comandos para revisar errores y sincronizar la transferencia de la siguiente página (que se puede inicializar mediante la macro (102)). La macro (104) puede incluir el comando final xfer_page, asi como comandos para revisar errores y para cerrar el dispositivo de memoria flash que fue objeto de escritura, desactivando la página/región activa y/o desempeñando cualquier otra operación según se especifique para el dispositivo de memoria flash.
Haciendo referencia ahora a la Figura 7, se muestra un diagrama de flujo que ilustra la operación de un código flash a ser ejecutado por el IOP (32) y/o el procesador (22). Mientras que se muestran los bloques en un orden particular para facilidad de entendimiento, se pueden usar otros órdenes. El código flash puede incluir instrucciones las cuales, al ser ejecutadas por el IOP (32) y/o el procesador (22), pueden implementar la operación ilustrada en la Figura 7.
El código flash se puede ejecutar en cualquier momento durante la operación del circuito integrado (10) . Por ejemplo, el código flash puede ejecutarse para inicializar la unidad de interfaz de memoria flash (30) . El código flash también se puede ejecutar en cualquier momento que la memoria flash (30) haya sido desactivada, pero va a ser accedida, para reconfigurar los macros en la memoria macro (4 ), etc .
El código flash puede descargar cualquier macro deseada a la memoria macro (44) (bloque (110)). Si las macros ya almacenadas en la memoria macro (44) son las macros deseadas, o si no hay macros deseadas, el bloque (110) se puede saltar. El código flash también puede descargar cualquier operando a ser usado por los comandos o las macros (bloque (112)), y el bloque (112) se puede saltar si no hay operandos por descargar. El código flash puede descargar los comandos a ser desempeñados (bloque (114)), y el desempeño del comando puede iniciar en la unidad de interfaz de memoria flash (30). Si los comandos adicionales están listos para ser descargados (bloque de decisión (116) , pestaña "si") , el código flash puede descargar los comandos adicionales (bloque (114)). Si nuevos operandos o macros están listos para ser descargados (bloque de decisión (118), pestaña "si"), el código flash puede regresar a los bloques (110) y/o (112) para descargarlos .
Sistema y Medios de Almacenamiento Accesibles por Computadora Haciendo referencia en seguida a la Figura 8, se muestra un diagrama de bloque de una modalidad de un sistema (150) . En la modalidad ilustrada, el sistema (150) incluye al menos una instancia de un circuito integrado (10) (de la Figura 1) conectado a uno o más periféricos (154) y una memoria externa (158). La memoria externa (158) puede incluir la memoria (12) . Una fuente de poder 8156) también está provista, la que suministra los suministros de voltaje a los circuitos integrados (10), asi como uno o más suministros de voltajes a la memoria (158) y/o periféricos (154). En algunas modalidades, no más de una instancia del circuito integrado (10) se puede incluir (y más de una memoria externa (158) se puede incluir también).
Los periféricos (154) pueden incluir cualquier circuito deseado, dependiendo del tipo de sistema (150). Por ejemplo, en una modalidad, el sistema (150) puede ser un dispositivo móvil (ej . , asistente digital personal (PDA), teléfono inteligente, etc.), y los periféricos (154) pueden incluir dispositivos de varios tipos de comunicación inalámbrica, tales como red inalámbrica, Bluetooth, celular, sistema de posicionamiento global, etc. Los periféricos (154) también pueden incluir almacenamiento adicional, incluyendo almacenamiento RAM, almacenamiento en estado sólido, o almacenamiento en disco. Los periféricos (154) pueden incluir dispositivos de interfaz de usuario tales como una pantalla de despliegue, incluyendo pantallas de despliegue táctiles o pantallas de despliegue multitáctiles , teclados u otros dispositivos de entrada, micrófonos, bocinas, etc. En otras modalidades, el sistema (150) puede ser cualquier tipo de sistema de cómputo (ej . , computadora de escritorio personal, computadora portátil, estación de trabajo, red, etc.).
La memoria externa (158) puede incluir cualquier tipo de memoria. Por ejemplo, la memoria externa (158) puede ser SRAM, RAM dinámica (DRAM) tal como DRAM sincrónica (SDRAM), tasa de datos doble (DDR, DDR2, DDR3, etc.), SDRAM, RAMBUS DRAM, etc. La memoria externa (158) puede incluir uno o más módulos de memoria en los que se montan los dispositivos de memoria, tales como módulos de memoria sencilla en linea (SIMMs), módulos de memoria dual en linea (DIMMs), etc.
Haciendo referencia ahora a la figura 9, se muestra un diagrama de bloque de un medio de almacenamiento accesible por computadora (200) . Hablando de manera general, un medio de almacenamiento accesible por computadora puede incluir cualquier medio de almacenamiento accesible por una computadora durante su uso, para proporcionar instrucciones y/o datos a la computadora. Por ejemplo, un medio de almacenamiento accesible por computadora, puede incluir medios de almacenamiento tales como medios magnéticos u ópticos, ej . , discos (fijos o removióles), cintas, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW o Blu-Ray. Los medios de almacenamiento pueden, además, incluir medios de memoria volátil o no volátil, tales como RAM (ej., RAM dinámica sincrónica (SDRAM), DRAM Rambus (RDRAM), RAM estática (SRAM), etc.), ROM, memoria flash, memoria no volátil (ej., memoria Flash) accesible mediante una interfaz periférica tal como la interfaz de vía de transmisión de serie universal (USB) , una interfaz de memoria flash (FIM), una interfaz periférica serial (SPI), etc. Los medios de almacenamiento pueden incluir sistemas microelectromecánicos (MEMS) , asi como medios de almacenamiento accesibles mediante un medio de comunicación tal como una red y/o un vinculo inalámbrico. El medio de almacenamiento accesible por computadora (200) en la Figura 5, puede almacenar códigos flash (202), que pueden incluir códigos por el IOP (32) y/o el procesador (22). El código flash (202) puede incluir instrucciones que, al ejecutarse, implementan la operación descrita anteriormente con respecto a la Figura 7. Generalmente, el medio de almacenamiento accesible por computadora (200) puede almacenar cualquier conjunto de instrucciones que, al ser ejecutadas, implementan una porción o toda la operación mostrada en la Figura 7. Más aún, el medio de almacenamiento accesible por computadora (200) puede almacenar una o más macros (204) a descargarse a la memoria macro (44), uno o más operandos a descargarse al operando FIFO (36), y/o uno o más comandos a descargarse al comando FIFO (40) . Un medio de transporte puede incluir medios de almacenamiento accesibles por computadora, asi como medios de transmisión tales como transmisión alámbrica o inalámbrica .
Numerosas variaciones y modificaciones serán aparentes para los expertos en la materia, una vez que la anterior divulgación sea apreciada en su totalidad. Se pretende que las siguientes reivindicaciones sean interpretadas para abarcar todas esas variaciones y modificaciones .

Claims (18)

REIVINDICACIONES
1. Un aparato para controlar una interfaz externa en un circuito integrado, el aparato comprendiendo: un controlador configurado para comunicarse con la interfaz externa; una linea de espera de comandos configurada para almacenar una pluralidad de comandos que provocan una transferencia en la interfaz externa; una memoria macro configurada para almacenar una pluralidad de comandos, caracterizada porque la pluralidad de comandos en la línea de espera de comandos son removidos de la línea de espera de comandos, en respuesta al desempeño de la pluralidad de comandos, y caracterizada porque la segunda pluralidad de comandos permanece en la memoria macro, aún cuando la segunda pluralidad de comandos ha sido llevada a cabo, y caracterizada porque al menos una de la pluralidad de comandos en la línea de espera de comandos es un comando macro que hace que los comandos en la memoria macro se lleven a cabo, y caracterizada porque el comando macro especifica una dirección de un primer comando que va a ser ejecutado y un número de palabras a ser leídas iniciando con el primer comando; y un circuito de control conectado a la línea de espera de comandos y al controlador, caracterizado porque el circuito de control está configurado para leer la pluralidad de comandos de la linea de espera de comandos, y está configurado para iniciar las operaciones correspondientes en el controlador para llevar a cabo la transferencia, y caracterizado porque el circuito de control está configurado para leer el número de palabras de la memoria macro, en respuesta al comando macro, y desarrollar subsecuentemente el siguiente comando en la linea de espera de comandos después del comando macro, sin requerir un comando de regreso en la memoria macro, en donde la segunda pluralidad de comandos excluye a los comandos de regreso de regresar a la linea de espera de comandos .
2. El aparato según la reivindicación 1, comprendiendo, además, una pluralidad de registros de control conectados al controlador y al circuito de control, caracterizado porque el controlador está configurado para comunicarse a la interfaz externa, en respuesta a un contenido de la pluralidad de los registros de control, y caracterizado porque la pluralidad de comandos incluye uno o más comandos que hacen que el circuito de control actualice uno o más de la pluralidad de registros de control .
3. El aparato según la reivindicación 2, caracterizado porque el circuito de control está configurado para recibir una operación en una interfaz interna dentro del circuito integrado, en donde la operación indica una actualización directa de una de la pluralidad de registros de control, y caracterizado porque el circuito de control está configurado para actualizar uno de los registros de control, en respuesta a la recepción de la operación.
4. El aparato según la reivindicación 3, caracterizado porque el circuito de control está, además, configurado para recibir la pluralidad de comandos en la interfaz interna, y caracterizado porque el circuito de control está configurado para escribir la pluralidad de comandos en la linea de espera de comandos en respuesta a la recepción de la pluralidad de comandos.
5. El aparato según la reivindicación 1, caracterizado porque la interfaz externa es una interfaz de memoria, y caracterizado porque la pluralidad de comandos incluyen un primer comando que hace que el controlador active una dirección a uno o más dispositivos de memoria que están conectados a la interfaz de memoria.
6. El aparato según la reivindicación 5, caracterizado porque la pluralidad de comandos incluyen un segundo comando que hace que el controlador active una o más señales de activación de tarjeta para el uno o más dispositivos de memoria.
7. El aparato según la reivindicación 5, caracterizado porque la pluralidad de comandos incluye un segundo comando que hace que el controlador transfiera una página de datos entre el circuito integrado y uno o más dispositivos de memoria.
8. El aparato según la reivindicación 5, caracterizado porque la interfaz de memoria es una interfaz de memoria flash.
9. El aparato según la reivindicación 1, caracterizado porque el comando macro especifica, además, un operando de conteo de ciclos que indica un número de iteraciones de la segunda pluralidad de comandos que van a llevarse a cabo.
10. El aparato según la reivindicación 9, caracterizado porque la segunda pluralidad de comandos incluye un segundo comando macro que especifica una segunda dirección de un segundo comando en la memoria macro, y un segundo número de palabras a ser leídas, y caracterizado porque el circuito de control está configurado para regresar a la línea de espera de comandos subsecuente para desempeñar comandos en el segundo número de palabras que empiezan con el segundo comando.
11. El aparato según la reivindicación 10, caracterizado porque el aparato incluye una línea de espera de comandos configurada para almacenar datos de operando accesibles por comandos en la linea de espera de comandos y en la memoria macro.
12. Un método que comprende: la lectura de una pluralidad de comandos de una linea de espera de comandos en una unidad de interfaz de memoria de un circuito integrado, caracterizado porque la unidad de interfaz de memoria incluye, además una memoria macro que almacena una segunda pluralidad de comandos, caracterizado porque la pluralidad de comandos en la linea de espera de comandos son removidos de la linea de espera de comandos en respuesta al desempeño de la pluralidad de comandos, y caracterizado porque la segunda pluralidad de comandos permanece en la memoria macro, aún cuando la segunda pluralidad de comandos en la linea de espera de comandos es un comando macro que hace que los comandos en la macro se lleven a cabo, y caracterizado porque el comando macro especifica una dirección de un primer comando en la memoria macro que debe ejecutarse y un número de palabras a leerse, empezando con el primer comando; la lectura del número de palabras de la memoria macro en respuesta al comando macro y el subsecuente desempeño del siguiente comando en la linea de espera de comandos, después del comando macro, sin requerir un comando de regreso en la memoria macro, en donde la segunda pluralidad de comandos excluye a los comandos de regreso para su regreso a la linea de comandos; y hacer que un controlador se comunique en una interfaz externa del circuito integrado con uno o más dispositivos de memoria conectados a la interfaz externa, en respuesta a la pluralidad de comandos en la linea de espera de comandos, caracterizado porque la pluralidad de comandos provoca una transferencia de memoria entre el uno o más dispositivos de memoria y el circuito integrado, en donde una transferencia de memoria comprende una o más páginas de datos.
13. El método según la reivindicación 12, caracterizado porque la pluralidad de comandos incluye un primer comando que hace que el controlador transmita una dirección al uno o más dispositivos de memoria, un segundo comando que hace que el controlador transmita un conjunto de activaciones de tarjeta al uno o más dispositivos de memoria, y al menos un tercer comando que hace que el controlador transfiera una página de datos.
14. El método según la reivindicación 12, caracterizado porque la pluralidad de comandos comprende un primer comando que hace que el controlador transmita un comando correspondiente al uno o más dispositivos de memoria en la interfaz, el comando correspondiente definido en un protocolo de interfaz de memoria para el uno o más dispositivos de memoria.
15. El método según la reivindicación 14, caracterizado porque el uno o más dispositivos de memoria comprenden uno o más dispositivos de memoria flash, y caracterizado porque el comando correspondiente comprende un byte de comando definido en una interfaz de memoria flash soportado por el uno o más dispositivos de memoria flash
16. El método según la reivindicación 12, caracterizado porque el comando macro especifica, además, un operando de conteo de ciclos que indica un número de iteraciones de la segunda pluralidad de comandos, que se van a llevar a cabo.
17. El método según la reivindicación 16, caracterizado porque la segunda pluralidad de comandos incluye un segundo comando macro que especifica una segunda dirección de un segundo comando en la memoria macro, y un segundo número de palabras a ser leídas, y caracterizado porque el método incluye, además, el regreso a la línea de espera de comandos subsecuente al desempeño de comandos en el segundo número de palabras, empezando con el segundo comando .
18. El método según la reivindicación 17, comprendiendo, además, el acceso a datos de operando de una linea de espera de operandos para comandos en la linea de espera de comandos, y en la memoria macro.
MX2012005183A 2009-11-10 2010-11-08 Linea de espera de comandos para componente periferico. MX2012005183A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/615,587 US8131889B2 (en) 2009-11-10 2009-11-10 Command queue for peripheral component
PCT/US2010/055769 WO2011059897A1 (en) 2009-11-10 2010-11-08 Command queue for peripheral component

Publications (1)

Publication Number Publication Date
MX2012005183A true MX2012005183A (es) 2012-06-08

Family

ID=43530829

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012005183A MX2012005183A (es) 2009-11-10 2010-11-08 Linea de espera de comandos para componente periferico.

Country Status (11)

Country Link
US (3) US8131889B2 (es)
EP (1) EP2330596B1 (es)
JP (1) JP5329515B2 (es)
KR (1) KR101248246B1 (es)
CN (1) CN102053930B (es)
AU (1) AU2010319715B2 (es)
BR (1) BR112012011096B1 (es)
HK (1) HK1158356A1 (es)
MX (1) MX2012005183A (es)
TW (1) TWI472923B (es)
WO (1) WO2011059897A1 (es)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US20130179614A1 (en) * 2012-01-10 2013-07-11 Diarmuid P. Ross Command Abort to Reduce Latency in Flash Memory Access
US8918680B2 (en) 2012-01-23 2014-12-23 Apple Inc. Trace queue for peripheral component
US9513912B2 (en) 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
KR101988287B1 (ko) 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US8954632B2 (en) * 2012-12-31 2015-02-10 Silicon Laboratories Inc. System method for regulating an input/output interface by sampling during a time duration associated with I/O states
EP2965318B1 (en) * 2013-03-07 2018-05-02 Charles I. Peddle High speed flash controllers
KR102254099B1 (ko) 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
KR102643467B1 (ko) 2016-05-31 2024-03-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107564563B (zh) * 2016-06-30 2020-06-09 华邦电子股份有限公司 存储器装置及其操作方法
CN106528458B (zh) * 2016-11-01 2020-09-08 广东浪潮大数据研究有限公司 一种接口控制器、基板管理控制器及安全系统
WO2018100363A1 (en) * 2016-11-29 2018-06-07 Arm Limited Memory address translation
CN108829446A (zh) * 2018-06-04 2018-11-16 张剑飞 基于蓝牙hid实现外设宏功能的方法
CN112015527B (zh) * 2019-05-29 2024-03-22 闪迪技术有限公司 管理从提交队列获取和执行命令
US11093244B2 (en) 2019-08-28 2021-08-17 Micron Technology, Inc. Command delay
US11163490B2 (en) * 2019-09-17 2021-11-02 Micron Technology, Inc. Programmable engine for data movement
CN111221756B (zh) * 2019-11-13 2023-06-30 北京中航通用科技有限公司 一种上位机高效下行数据传输的方法
US20220327074A1 (en) * 2021-04-13 2022-10-13 SK Hynix Inc. PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
KR102668564B1 (ko) 2021-06-01 2024-05-24 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102518317B1 (ko) * 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US11789658B2 (en) 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same
US20240030401A1 (en) * 2022-07-21 2024-01-25 Enevate Corporation Systems and methods for thermal curing of water soluble polymers for silicon dominant anodes

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790887A (en) * 1996-02-15 1998-08-04 International Business Machines Corporation Method and apparatus for processing programmed input/output (PIO) operations in a computer system
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5822244A (en) 1997-09-24 1998-10-13 Motorola, Inc. Method and apparatus for suspending a program/erase operation in a flash memory
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JPH11242632A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd メモリ装置
US6330656B1 (en) * 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US6981073B2 (en) * 2001-07-31 2005-12-27 Wis Technologies, Inc. Multiple channel data bus control for video processing
KR100448905B1 (ko) * 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
FR2863076B1 (fr) * 2003-11-28 2006-02-03 Bull Sa Systeme cryptographique haut debit a architecture modulaire.
US7181584B2 (en) 2004-02-05 2007-02-20 Micron Technology, Inc. Dynamic command and/or address mirroring system and method for memory modules
US7493426B2 (en) * 2005-01-31 2009-02-17 International Business Machines Corporation Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control
KR20080017982A (ko) * 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
JP2008117505A (ja) 2006-11-03 2008-05-22 Spansion Llc 半導体装置およびその制御方法
KR100843136B1 (ko) 2006-11-14 2008-07-02 삼성전자주식회사 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법
US7627744B2 (en) 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8533678B2 (en) * 2007-07-13 2013-09-10 Digi International Inc. Embedded device program debug control
KR100921787B1 (ko) 2007-11-01 2009-10-15 주식회사 이스트후 낸드 플래시 메모리 제어장치
US8151100B2 (en) * 2008-02-06 2012-04-03 Broadcom Corporation Operating system for a computing device with handheld and extended computing units
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US8850103B2 (en) 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component

Also Published As

Publication number Publication date
KR101248246B1 (ko) 2013-03-27
CN102053930B (zh) 2014-06-25
TW201131368A (en) 2011-09-16
WO2011059897A1 (en) 2011-05-19
CN102053930A (zh) 2011-05-11
TWI472923B (zh) 2015-02-11
BR112012011096B1 (pt) 2020-09-24
US20110113167A1 (en) 2011-05-12
BR112012011096A2 (pt) 2017-09-19
KR20110052510A (ko) 2011-05-18
HK1158356A1 (en) 2012-07-13
EP2330596A1 (en) 2011-06-08
JP2011146035A (ja) 2011-07-28
US8396994B1 (en) 2013-03-12
US20120124243A1 (en) 2012-05-17
AU2010319715B2 (en) 2014-06-05
EP2330596B1 (en) 2013-07-31
JP5329515B2 (ja) 2013-10-30
US8332543B2 (en) 2012-12-11
US8131889B2 (en) 2012-03-06
US20130080660A1 (en) 2013-03-28
AU2010319715A1 (en) 2012-05-17

Similar Documents

Publication Publication Date Title
MX2012005183A (es) Linea de espera de comandos para componente periferico.
TWI493350B (zh) 用於周邊組件之高優先權命令佇列
CN104520932B (zh) 闪存存储器控制器
KR100708128B1 (ko) 낸드 플래시 메모리 제어 장치 및 방법
US20130179614A1 (en) Command Abort to Reduce Latency in Flash Memory Access
KR20170029775A (ko) 메모리 시스템 및 그 동작 방법
US8918680B2 (en) Trace queue for peripheral component
JP2006309757A (ja) メモリーに送るコマンドの選択方法、メモリーコントローラー、コンピュータシステム
KR20130107070A (ko) Ssd 콘트롤러 및 그의 제어 방법
US6549991B1 (en) Pipelined SDRAM memory controller to optimize bus utilization
US8117427B2 (en) Motherboard, storage device and controller thereof, and booting method
JP2009037639A (ja) ストリーミングidメソッドによるdmac発行メカニズム
US8677033B2 (en) Method for initializing registers of peripherals in a microcontroller
CN110908717B (zh) 指令处理方法及使用所述方法的存储控制器
EA038978B1 (ru) Устройство прямого отображения адресов данных, располагающихся во внешнем последовательном пзу, в адресное пространство микропроцессорного ядра, компьютерная система и способ передачи данных

Legal Events

Date Code Title Description
FG Grant or registration