"MÉTODO DE CONTROL DE FLUJO PARA MEJORAR LA TRANSFERENCIA DE DATOS MEDIANTE UNA MATRIZ DE CONMUTACIÓN"
CAMPO DE LA INVENCIÓN El campo técnico se encuentra relacionado en términos generales con circuitos integrados (JC integrated cirouits) de sistema monochip (SoC - System-on-chip) . Más particularmente, el campo técnico involucrado es un método para mejorar la utilización del bus en un I'-. de SoC.
ANTECEDENTES DE LA INVENCIÓN El termino IC de monochip (SoC) se utiliza nara referirse a un sis ema en el cual se encuentran mtegí
todas las funciones deseadas y/o necesarias y se nan fabricado en una sola boquilla o substrato. Como tal, un IC ele SoC generalmente incluye diversos bloques funcionnles de circuitería, tales como, por ejemplo, microprocesadoi es , procesadores de señales digitales, arreglos de memorias, memorias temporales, etcétera. Tales bloques funcionales de la circuí tena algunas veces son referidos como núcleos. Cada uno de los núcleos se conecta eléct icamente a un tm.; del si stema dentro del IC de SOC con los cuales intercambian datos unos con otros y con cualquier otvo dispositivo conectado al bus.
Más particularmente, en un IC de SoC, un núcleo que emite una solicitud de acceso (sea para escribir datos o para leer datos) a otro núcleo es referida diferentemente como un núcleo iniciador, iniciador, o bus maestro. El núcleo al que el iniciador o maestro desea acceder, es decir, el núcleo que recibe los datos de escritura o que proporciona los datos de lectura, es referido como el objetivo o esclavo. Con objeto de evitar la contención del bus, lo cual es un conflicto que ocurre cuando dos o más núcleos intentan colocar los datos en o recuperar los datos del bus, se incorpora un controlador del bus dentro del IC de SoC. El controlador del bus incluye típicamente un arbitro que selecciona a cuál maestro se le concede el acceso a un esclavo en algún momento determinado. Consecuentemente, asegurándose de que solamente un maestro accede a un esclavo determinado en cualquier acceso o ciclo de transferencia de datos determinado, se evita la conexión del bus y las colisiones de datos en el bus. Este planteamiento proporciona los maestros con acceso secuencial a los esclavos, es decir, los maestros dan vueltas para acceder a los esclavos. Tal acceso secuencial es relativamente lento e ineficiente, y puede afectar adversamente el rendimiento del sistema. Los controladores de bus de tipo matriz de
conmutación se utilizan algunas veces para incrementar la utilización del bus y consecuentemente mejorar el rendimiento del sistema. Cada esclavo y cada maestro se conecta con el controlador del bus de la matriz de conmutación por las líneas de bus maestro o esclavo respectivas. Consecuentemente, las matrices de conmutación les proporcionan a los maestros acceso paralelo a los esclavos, es decir, diferentes maestros pueden acceder simul áneamente a esclavos diferentes y respectivos, y viceversa. Sin embargo, la contención del bus no se evita completamente por el uso de controladores de bus de tipo matriz de conmutación. Puede ocurrir contención del bus y/o colisiones de datos en un IC de SoC que tiene una matriz de conmutación cuando, por ejemplo, un maestro intenta acceder a dos o más esclavos. Dado que cada maestro se conecta a la matriz de conmutación por una sola línea de bus correspondiente, puede ocurrir una colisión de datos cuando dos o más esclavos se preparan simultáneamente para regresar los datos a y/o responder una solicitud de maestro solicitante individual. Además, un maestro que realiza una secuencia de solicitudes puede requerir que las respuestas o terminaciones regresen en el mismo orden en que se realizaron las solicitudes. Con objeto de evitar las colisiones de datos, así como también par asegurar la orden de terminación de
solicitud de un maestro, la matriz de conmutación incluye típicamente la lógica para retrasar o direccionar las solicitudes y/o una cola de solicitudes o memoria temporal para almacenar los datos o respuestas. La lógica cié direccionamiento asegura que solamente se coloque un conjunto de datos en el bus al bloquear o retrasar las demás respuestas hasta que se haya completado exitosamente la respuesta anterior. La cola de respuestas o memoria temporal puede almacenar solicitudes provenientes de loa maestros, típicamente de la manera primero en entrar primero en salir, y evita las colisiones de datos al mantener los datos en la cola hasta que el bus se prepara para recibir los datos y el esclavo se prepara para enviar los datos o el bus o el maestro se prepara para recibir los datos. La cola de respuesta también puede mantener una respuesta o datos para una solicitud más reciente mientras espera que otro esclavo complete una respuesta o regrese datos para una solicitud más vieja con objeto de mantener el orden del programa de la solicitud del maestro. Sin embargo, retrasar o colocar en la cola una o más solicitudes pendientes hasta que se complete exitosamente una solicitud anterior desperdicia la capacidad del bus, particularmente cuando el retraso para completar la solicitud anterior se debe a que un esclavo que no se encuentra listo para colocar los datos
solicitados en el bus a o un maestro que aún ?o se encuentra listo para recibir datos provenientes del bus. En tales situaciones, el bus no esta siendo utilizado para transferir datos sino que está esperando a hacerlo. En otras palabras, en tales situaciones, el bus no es el cuello de botella. Consecuentemente, el bus podría, mientras tanto, utilizarse más eficientemente para transferir datos que se encuentran disponibles y listos para procesarse en lugar de permanecer inactivos mientras el sistema espera que otros núcleos completen una solicitud o transferencia de datos anterior. Por lo tanto, lo que se requiere en la materia es un método y aparato para mejorar la utilización del bus en un circuito integrado de sistema monochip.
BREVE DESCRIPCIÓN DE LA INVENCIÓN Se proporciona un circuito integrado (IC) de sistema monochip (SoC) que tiene una utilización mejorada del bus y una transferencia de datos mas eficiente. También se proporciona un método para mejorar la utilización del bus y la transferencia de datos. En una modalidad, se proporciona un IC de SoC que tiene un consolador de bus. Los maestros interconectados con el controlador de bus emiten solicitudes de datos y reciben los datos solicitados en respuesta a las
solicitudes. Los esclavos interconectados con el controlador de bus reciben las solicitudes de dalos y proporcionan los datos solicitados a los maestros solicitantes. Las señales de control emitidas por el controlador de bus le indican a cada esclavo cuáles maestros no se encuentran listos para recibir los ciatos que solicito de cada esclavo. Los esclavos retrasan la transferencia de datos a cualesquier maestros que no se encuentran listos para los datos solicitados, y les proporcionan datos a diferentes maestros que se encuentran listos para recibir los datos que les solicitaron a los esclavos . Cuando se le solicita a un esclavo retrasar una transferencia de datos particular, el esclavo puede proceder a transferir otros datos, incrementando asi la utilización del bus y la eficiencia de la transferencia de datos, ayudando a evitar la contención del bus y colisiones de datos. Ademas, puede reducirse la necesidad de memorias temporales/registros de almacenamiento en el controlador de bus del IC de SoC y, consecuentemente, también puede reducirse el tamaño y consumo de energía del controlador del bus.
BREVE DESCRIPCIÓN DE LOS DIBUJOS Las características y ventajas anteriormente mencionadas y otras, y la manera para lograrlas, se volverán aparentes y se comprenderán mejor para refeiencia a la siguiente descripción de una modalidad en conjunt-> con los dibujos acompañantes, en los cuales: La Figura 1 es un diagrama de bloques de una modalidad de un circuito integrado de sistema monochip; y La Figura 2 es un diagrama de sincronización que ilustra una modalidad de un método para mejora: la utilización del bus en un circuito integrado de sistema monochip . Los caracteres de referencia correspondientes indican las partes correspondientes a lo largo de las diversas vistas. Las ej emplificaciones expuestas en la presente ilustran una modalidad preferida, en una forma, y tales ejemplificaciones no se consideran limitantes al alcance de este documento ni a las reivindicaciones de ninguna manera.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Refiriéndose ahora a los dibujos y particularmente a la Figura 1, se muestra una modalidad de un circuito integrado (IC) de sistema monochip (SoC) 10. El 1C de SoC J 0 incluye un substrato 12 sobre el que se
fabrica toda la circuitería del IC de SoC 10. El IC de SoC 10 incluye una pluralidad de bloques de circuitería para ejecutar dive sas funciones. Más particularmente, el IC de SoC 10 incluye una pluralidad de maestros 14A, 14B, 14C, .., y 14N (colectivamente referidos en la presente como maestros 14) y una pluralidad de esclavos 16A, 16B, 16C, y 16N (colectivamente referidos en la presente como dispositivos esclavos 16) . Los maestros 14 y esclavos 16 se encuentran configurados como dispositivos convencionales de maesl ro y esclavo, tales como, por ejemplo, microprocesadores y arreglos de memoria, respectivamente. Cada uno de Jos maestros 14 se mterconectan con el controlador del bus 20 mediante un bus separado y correspondiente 22A, 22B, 22 , , y 22N (algunas veces referido en la presente como el bus maestro a controlador 22 o simplemente el bus maestro 22) . De manera similar, cada uno de los esclavos 16 se interconecta con el controlador de bus 20 mediante un bus separado y correspondiente 24A, 24B, 24C, .. y 24N (algunas veces referido en la presente como el bus esclavo a controlador 22 o simplemente el bus esclavo 24) . Los maestros 14 y los esclavos 16 también se interconectan típicamente mediante otro bus o líneas de señales con o" ros núcleos (ninguna de las cuales se muestra) dentro de IC de SoC 10. Cada uno de los maestros 14 incluye
preferentemente memorias temporales de maestro respetivas 32A, 32B, 32C, . , y 32N, y de manera similar cada uno de los esclavos 16 incluyen preferentemente memorias temporales de esclavo respectivas 34A, 34B, 34C, , y 34N. El controlador del bus 20, ademas de ejecutar las funciones de un controlador del bus de tipo de conmutador convencional, incluye la circuiteria lógica 40 que emite las señales de control 50A, 50B, 50C, , 50N (referida colectivamente en la presente como señales de control) a los esclavos 16A, 16B, 16C, , y 16N, respectivamente. Generalmente, las señales de control 50 les indican a los esclavos 16 la disponibilidad de cada maestro 14 para recibir los ciatos. Mas particularmente, las señales cié control 50 le indican a cada esclavo 16 si un maestro 14 se encuentra listo y es capaz de recibir datos provenientes del esclavo particular. Consecuentemente, desde el punto opuesto de la vista, las señales de control 50 le indic m cada esclavo 16 cuando se encuentra "ocupado" un maestro 14 o de otra manera cuando no es capaz de recibir los datos solicitados y/o completa una transferencia de datos especifica. Las señales de control 50 pueden compartirse o transmitirse de punto a punto desde los esclavos 16 del controlador del bus 20. Cada señal de control 50A, 50B, 50C, , y 50K es dependiente de al menos parte del status o estado operat ivo
de los maestros 14. Cuando un maestro 14 se encuentra preparado para recibir datos que le ha solicitado a uno de los esclavos 16, el controlador 20 emite una señal de control correspondiente 50 al esclavo identificado 16 que indica la disponibilidad del maestro solicitante 14 para recibir los datos solicitados (referidos en lo sucesivo como señal de control "lista") . Inversamente, cuando un maestro 14 no se encuentra preparado para recibir datos que le ha solicitado a un de los esclavos 16 identificados, tal como, por ejemplo, cuando el maestro solicitante 14 está recibiendo los datos anteriormente solicitados desde uno de los esclavos 16 diferentes o de otra manera se encuentra "ocupado", el controlador 20 emite una señal de control 50 al esclavo identificado 16 que le indica al maestro solicitante 14 que no se encuentra preparado ara recibir los datos solicitados con anterioridad (referidos en la presente como una señal de control que "no se encuentra lista" u "ocupada") . Las señales de control 50 aseguran que solamente uno de los esclavos 16 coloque datos para un solo maestro solicitante en el bus de esclavo a control 24 y, consecuentemente, en el bus de controlador a maestre 22 durante cualquier ciclo de lectura determinado. Consecuentemente, las señales de control 50 evitan las colisiones de datos que pudiesen ocurrir de otro modo en el
bus de controlador a maestro 22 cuando dos o mas esclavos 16 le han proporcionado al controlador 20 datos destinaos para el mismo maestro solicitante 14. Ademas, cuando un maestro solicitante ha indicado que no se encuentra listo para recibir los datos solicitados provenientes de un esclavo particular, las señales de control 50 le ordenan al esclavo, si está preparado, a llevar a cabo una transferencia de datos diferente hacia un maestro solicitante diferente. Consecuentemente, el esclavo no permanece inac tivo esperando a que el maestro se encuentre "listo" para recibir los datos. Más bien, el esclavo realiza una transferencia de datos diferente hacia un maestro solicitante diferente que se encuentra "listo" para recibir los datos. Al ejecutar una operación de transferencia de datos diferente en lugar de esperar a completar la operación de transferencia de datos retrasada, se mejoran la eficiencia con la cual se procesan los datos por el bus y consecuentemente la utilización del bus. Esto también puede reducir la latencia general de las solicitudes daao que otras respuestas pueden bloquearse detrás de una respuesta que el controlador puede ser incapaz de aceptar debido a la contención del bus. Un proceso de transferencia de datos a manera de ejemplo que ilustra Ja operación del SoC 10 y el método
para mejorar la utilización del bus en un circuito integrado de sistema monochip se muestra en la Figura 2 y se describe a continuación. En el tiempo o el maestro 14A emite al controlador del bus 20 mediante la solicitud MORO del bus maestro 22A para leer datos provenientes del esclavo 16A. También, durante el tiempo t0, el maestro 14B mediante el bus maestro 22B emite al controlador de bus 20 la solicitud MIRO a fin de leer también los datos provenientes del esclavo 16A. En el tiempo i, el maestro 14A emite al controlador de bus 20 mediante el bus maestro 22A la solicitud MOR 7 a f n de leer datos del esclavo 163. Consecuentemente, dos maestros (maestros 14A y 14B) están solicitando datos del mismo esclavo (esclavo 16A) y un maestro (maestro 14A) ha solicitado datos de dos diferentes esclavos (esclavos 16A y 16B) . También en el tiempo ti, el controlador de bus 20 le pasa al esclavo 16A mediante el bus esclavo 24A la solicitud MORO emitida por el maestro 14A en el tiempc t() para los datos provenientes del esclavo 16A. De manera similar, en el tiempo £ el controlador de bus 20 le pasa al esclavo 16A mediante el bus esclavo 24A la solicitud MI RO emitida por el maestro 14B en el tiempo o para datos provenientes del esclavo 16A. También en el tiempo t , A controlador de bus 20 Je pasa al esclavo 16B mediante eJ bus esclavo 24B la solicitud MORÍ emitida por el maestro 14
en el tiempo t para datos provenientes del esclavo 16 . Las señales de control 50A y SOB, se muestran en la Figura 2, establecidas ínicialmente en el tiempo t0 en un valor o condición por default, tal como, por ejemplo "lista" y consecuentemente indicar que todos los maestros 14 se encuentran listos para recibir los datos. Fn el tiempo t_, , el controlador de bus 20 emite o actualiza ias señales de control 50 para permitir la transferencia de al menos un conjunto de datos solicitados. Mas particularmente, la señal de control 50B se actualiza para indicar que el maestro 14A se encuentra preparado para recibirlos datos que solicito con anterioridad del esclavo 16B. Dado que en este ejemplo las señales ele control c 0 se inicia lizaron a un estado "listo", no hay cambio ei la señal de control 50B. Inversamente, las señales de control 50A, 50C, , y 50N se actualizan para indicarle a los esclavos 16A, 16C, , y 16N, respectivamente, ese maestro 14A se encuentra "ocupado" preparándose para o se encuentra en proceso ié recibir datos. Por razones de brevedad y claridad, solamente se muestran las señales de control 50A y 50B en la Figura 2. Ademas, por las mismas razones, aunque el experto en la materia reconocerá que cada señal de control 50 es de hecho una pluralidad de señales, la Figura 2 muestra solamente una linea de señal para cada señal de control y anota la
condición pertinente o estado de esa linea de señal con relación a los maestros 14. En el tiempo t , cada uno le los esclavos 6A v 16B se encuentra preparado para transferir datos al maestro 14A que el maestro 14A solicito con anterioridad. Mas particularmente, en el tiempo t el esclavo 1 A se encuentra preparado para transferirle al maestro 14? __os datos asociados con la solicitud MORO y el esclavo 16B se encuentra preparado para proporcionarle al maestro 14A los datos asociados con la solicitud MORÍ . Aunque los esclavos 16A y 16B se encuentran ambos preparados para proporcionarle los datos al maestro 14A, se la da prioridad al esclavo 16B por las señales de control 50 emitidos por eJ controlador 20, como se describió con anterioridad. Debe obseivaise particularmente que la prioridad relativa entre los esclavos 16 que se encuentran en cualquier ciclo de lectura determinado preparados para proporcionarle datos a un solo maestro 14 se predetermina de acuerdo con cualquier método preferido conocido por el experto en la materia. La prioridad, por ejemplo, se establece arbitrariamente de acuerdo con la importancia pronosticada o anticipada de los datos que puede proporcionar un esclavo en particular a la luz del circuito o aplicación especifico o por algún otro criterio deseable. El esclavo 16A intenta en el tiempo t regresarle
al maestio 14A los datos asociados con la solicitud MORO pero se imposibilita hacerlo por la señal de control r OA ia cual le indica al esclavo 16A, como se describió con anterioridad, que el maestro 14A se encuentra "ocupado". En sistemas de IC de SoC de la técnica anterior, tal situación daría como resultado una colisión de datos en el bus maestro 22A cuando el esclavo 16A intentase regresarle los datos al maestro 14A, solicitándole al controlador 20 colocar en memoria temporal los datos a regresar, o al esclavo 16A que retrase la transferencia de los nemas datos solicitados a cualquiera de los maestros 14 hasta que el esclavo 16A sea capaz de completar la transferenci de datos asociados con la solicitud MORO al maestro 14A. En cambio, y como se describe más particularmente en lo sucesivo, el esclavo 16A transfiere otros datos solicitados a otros maestros solicitantes 14 y consecuentemente utiliza mas eficientemente los buses 22 y 24 y lleva a cabo una transferencia de datos mas eficiente. También en el tiempo t , el esclavo 16B comienza la transferencia de datos al maestro 14A asociado coi la solicitud MOR l . Esta transferencia de datos se incorpora al menos en parte por el controlador 20 establecienat la señal de control 50B para indicar en el tiempo t3 que el maestro 14A se encuentra "listo" para recibir los datos provenientes del esclavo 16B y para establecer las señc.Us
de control 50A, 50C, ., y 50N a fin indicar que el maestro 14A se encuentra "ocupado" y consecuentemente no esta listo para recibir los datos provenientes de los esclavos 16A, 16C, , y 16N. Los datos asociados con la solicitud MORÍ se regresan del esclavo 16B al controlador de bus 20 mediante el bus esclavo 24B y del controlador de bus 'X al maestro 14A, mediante el bus de maestro 22A del tiempo t,t al tiempo t . Debe observarse particularmente que en el método de transferencia de datos anteriormente descrito, es decir, generalmente de un esclavo 16 a un controlador de bus 20 mediante un bus esclavo 24 correspondiente y del controlador de bus 20 a un maestro 14 mediante un bus maestro correspondiente 22, el controlador de bus 20 actúa esencialmente como una matriz de conmutación que simplemente establece una conexión entre el maestro y el esclavo. Los datos a transferirse permanecen almacenados en o dentro de las memorias temporales 34 de los esclavos 16 en lugar de almacenarse en el controlador 20. La necesidad de colocar en memoria temporal o almacenar los registros dentro del controlador de bus 20, por lo tanto, se reduce substancialmente . Adicionalmente, el control pdor de bus 20 es capaz de reducirse en tamaño y consumir menos potencia que los controladores de bus convencionales que requieren un numero significativo de registros de
almacenamiento/memorias temporales . Como se observa con anterioridad, en lugar de forzar a un esclavo 16 y una porción de los buses 22 y/o 24 a permanecer inactivos hasta que un maestro solicitante 14 se encuentre "listo" para recibir datos, el IC de SoC 10 y el método para mejorar la utilización de bus en un circuito integrado de sistema monochip descrito en la presente le permiten a un esclavo transferir otros datos solicitados a otros maestros solicitantes 14 y consecuentemente utilizan mas eficientemente los buses 22 y 24 y logran una transferencia de datos más eficiente. Este aspectc se ilustra en la Figura 2 cuando el esclavo 16A, en lugai de retrasar la transferencia de todos los datos hasta el maestro 14A se encuentra listo para recibir los datos asociados con la solicitud retrasada MORO, comienza en eJ tiempo t5 transfiriéndole al maestro 14B los d< tes asociados con la solicitud MIRO . La transferencia de ios datos asociados con la solicitud MIRO es habilitada por la señal de control 50A que le indica al esclavo 16A que, aunque el maestro 14A se encontraba "ocupado", el maestro 14B reencontraba "listo" para recibir datos. Consecuentemente, al retrasar la transferencia de datos en el tiempo t¡\ desde el esclavo 16A hasta el maest ro 14A y permitiéndole al esclavo 16A en el tiempo t>, comer i: la transferencia de datos al maestro 14B, se evita ua
colisión de datos en el bus de maestro al controlador 22A en el tiempo t4 y se incrementa la utilización del bus de maestro a controlador 22A y el bus de esclavo a controlador 24A en el tiempo t4 incrementando consecuentemente Ja eficiencia de la transferencia de datos. El esclavo 16A completa en el tiempo t<t la transferencia de los datos asociados con la solicitud MI RO al maestro 14B. De acuerdo con lo anterior, en el tiempo tío las señales de control 50 son actualizadas por el controlador 20 para indicarles a los esclavos 16 que el maestro 14B nuevamente se encuentra "listo" para recibir los datos (no se muestra en la Figura 2) . En el ejemplo representado gráficamente, no se transfiere ningún ciato adicional al maestro 14B. En el tiempo ts, el esclavo 16B completa la transferencia de datos asociados con la solicitud MORÍ al maestro 14A. De acuerdo con lo anterior, en el tiempo X las señales de control 50 son actualizadas por el controlador 20 para indicarles a los esclavo 16 que el maestro 14A nuevamente se encuentra "listo" para recibir los datos. En el tiempo ts, las señales de control 50 son actualizadas nuevamente por el controlador 20 a fin de indicar que el maestro 14A nuevamente está preparándose para o que se encuentra en proceso de recibir los datos. Más particularmente, en el tiempo t8 las señales de control
50 son actualizada-, por el controlador 20 de manera tal que la señal de control 50A le indica al esclavo 16A q le el maestro 14A se encuentra "listo" para recibir los datos asociados con la solicitud MORO y las señales de control 50B, 50C, , y 50N son actualizadas para indicarle al maestro 14A que se encuentra "ocupado". Después de ello, en el tiempo t9, comienza la transferencia de datos del esclavo 16A al maestro 14A asociados con la solicitud MORO . Aunque la descripción anterior es referida como un diseño preferido, el diseño preferido puede modifuarse adicionalmente dentro del espíritu y alcance de esta descripción. Por lo tanto, esta solicitud pretende cubrir cualesquier variaciones, usos, o adaptaciones del a.seru preferido utilizando posprincipios generales descritos en la presente. Ademas, esta solicitud pretende cubrir tales desviaciones de la presente descripción dentro de la practica común o conocida en las materias relevantes y se encuentra dentro de los limites de las reivindicaciones anexas .