ARQUITECTURA EN RACIMO QUE PERCIBE LAS VARIACIONES
ANTECEDENTES La presente descripción se refiere generalmente al campo de la electrónica. Más en particular, una realización de la invención se refiere a una arquitectura en grupo o racimo, que percibe las variaciones.
Típicamente, se establece una frecuencia de reloj de un procesador de acuerdo con el retardo del recorrido o camino crítico (el peor de los casos), más unos márgenes de seguridad debidos a la magnitud del procedimiento (P) de fabricación de los semiconductores, de la tensión de funcionamiento (V), de la temperatura (T) y de las variaciones (PVTI) en los vectores o valores (I) de entrada. En general, las variaciones relacionadas con la PVTI se incrementan con el factor de escala de la tecnología y, como secuencia de ello, los márgenes de seguridad se están convirtiendo en una componente más dominante a la hora de determinar un reloj de un procesador.
También, a medida que crece la magnitud de las variaciones de PVTI, los márgenes de seguridad pueden tener un impacto creciente en el rendimiento de un procesador. En primer lugar, la verificación del circuito puede resultar más compleja, puesto que las variaciones pueden transformar caminos no críticos en un camino crítico. En segundo lugar, la frecuencia del reloj puede tener que ajustarse en valores inferiores para garantizar la corrección de los resultados del procesamiento o tratamiento, lo que puede tener una repercusión en los costes. Por ejemplo, puede ser necesario desechar las partes con un rendimiento bajo, lo cual puede incrementar los costes.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La descripción detallada se proporciona con referencia a las figuras que se acompañan. En las figuras, el dígito o dígitos situado(s) más a la izquierda de un cierto número de referencia identifican la figura en la que aparece por primera vez el número de referencia. El uso de los mismos números de referencia en diferentes figuras indica elementos similares o idénticos.
La Figura 1 ilustra un diagrama de bloques de una
arquitectura en grupo o racimo de acuerdo con una realización.
La Figura 2 ilustra un diagrama de flujo de un método para ajustar una señal de reloj de un dominio de reloj en respuesta a las una o más variaciones, de acuerdo con una realización. La Figura 3 ilustra un diagrama de bloques de una etapa de canal de comunicación dedicado o exclusivo de un procesador, de acuerdo con una realización.
La Figura 4 ilustra un diagrama de flujo de un método para determinar si volver a llevar a cabo o no uno o más consumidores de una instrucción realizada especulativamente, de acuerdo con una realización. Las Figuras 5 y 6 ilustran diagramas de bloques de sistemas de computación de acuerdo con varias realizaciones de la invención.
La Figura 7 ilustra un diagrama de bloques de un sistema de computación, de acuerdo con una realización.
DESCRIPCIÓN DETALLADA
En la siguiente descripción se exponen numerosos detalles específicos con el fin de proporcionar una comprensión exhaustiva de diversas realizaciones. Sin embargo, varias realizaciones de la invención pueden llevarse a la práctica sin los detalles específicos. En otros casos, no se han descrito en detalle métodos, procedimientos, componentes y circuitos bien conocidos, al objeto de no entorpecer la comprensión de las realizaciones particulares de la invención.
Algunas de las realizaciones que se explican aquí son capaces de proporcionar una arquitectura en grupo o racimo (por ejemplo, una arquitectura con múltiples dominios de reloj) que percibe una o más variaciones de PVTI, tal como las arquitecturas que se exponen haciendo referencia a las Figuras 1 -7. Más concretamente, la
Figura 1 ilustra un diagrama de bloques de una arquitectura en racimo 100 de acuerdo con una realización. En una realización, la arquitectura
100 puede representar componentes lógicos dentro de un procesador o de un cierto número de procesadores (tales como los que se han expuesto con referencia a las Figuras 5 y 6). La arquitectura 100 puede incluir uno o más dominios, tales como un dominio de caché 100 de segundo nivel, un dominio 104 de terminal frontal o anterior, y uno o más dominios de terminal posterior 106, cuyas frecuencias de reloj pueden ajustarse en
respuesta a las variaciones detectadas basándose en datos de sensor y/o en el número de errores detectados en el dominio de reloj dado. Esto puede reducir las variaciones por racimo (o por dominio de reloj). Las variaciones pueden consistir en una o más de las variaciones en el procedimiento de fabricación de un semiconductor, en la variación de la tensión de funcionamiento, en la variación de la temperatura y/o en la variación en el vector o valor de entrada. Asimismo, cada uno de los dominios (por ejemplo, los 102, 104 y 106) pueden incluir, en diversas realizaciones, más o menos componentes que los que se muestran en la Figura 1.
El dominio de caché de segundo nivel (L2) 102 puede incluir una memoria caché de L2 108 (por ejemplo, para almacenar instrucciones que incluyen datos), uno o más sensores de L2 1 10, y un controlador de frecuencia de L2 1 12. Los sensores de L2 1 10 pueden corresponder a uno o más componentes del dominio de caché de L2 102 (por ejemplo, la memoria caché de L2 108) para detectar una o más variaciones dentro del dominio 102. Como se muestra en la Figura 1 , los sensores de L2 1 10 están acoplados al controlador de frecuencia de L2 1 12 para informar al controlador de frecuencia de L2 1 12 de cualesquiera variaciones presentes en el dominio de caché de L2 102. Las variaciones pueden detectarse también basándose en el número de errores detectados dentro del dominio de caché de L2 102. El controlador de frecuencia de L2 1 12 puede utilizar las variaciones detectadas para ajustar una señal de reloj para los componentes del dominio de caché de L2 102. Por lo tanto, el controlador de frecuencia de L2 1 12 puede habilitar a los componentes del dominio de caché de L2 102 para que se ajusten a las variaciones cambiantes. En una realización, la memoria caché de L2 108 puede ser compartida por una pluralidad de núcleos de un procesador de múltiples núcleos, tal como los que se exponen con referencia a las Figuras 5 y 6. También, la memoria caché de L2 108 puede haberse sacado de la misma oblea o fragmento que los núcleos de procesador. En consecuencia, en diversas realizaciones de la invención, un procesador puede incluir los dominios 104 y 106, y puede incluir o no la memoria caché de L2 108.
Como se muestra en la Figura 1 , el dominio de terminal frontal o anterior 104 puede incluir uno o más sensores 1 14 de terminal anterior, un controlador de frecuencia 1 16 de terminal anterior, un
registro de almacenamiento intermedio para reordenación 1 18, una unidad de redenominación y encaminamiento 120, una memoria caché de seguimiento 122, una unidad de descodificación 124, un dispositivo de secuenciación 126 y/o una unidad de predicción de rama 128. En una realización, el dominio de terminal anterior 104 puede incluir otros componentes, tales como una unidad de recuperación y carga de instrucciones, o similar. Los sensores de terminal anterior 1 14 pueden corresponder a uno o más componentes del dominio de terminal anterior 104 con el fin de detectar una o más variaciones dentro del dominio de extremo anterior 104. Los sensores 1 14 están acoplados al controlador de frecuencia 1 16 con el fin de informar al controlador de frecuencia 1 14 de cualesquiera variaciones que se presenten en el dominio de terminal anterior 104. Las variaciones pueden ser detectadas también basándose en el número de errores detectados dentro del dominio de terminal anterior 104. El controlador de frecuencia 1 16 de terminal anterior puede servirse de las variaciones detectadas para ajustar una señal de reloj para los componentes del dominio de terminal anterior 104. En consecuencia, el controlador de frecuencia 1 16 puede habilitar a los componentes del dominio de terminal anterior 104 para que se adapten a las variaciones cambiantes.
Los dominios de terminal posterior 106 pueden incluir uno o más de entre un dominio de caché de primer nivel (L l ) 128 y uno o más dominios de ejecución 130- 1 a 130-N. El dominio de caché de L2 128 puede incluir una memoria caché de L l 132 (por ejemplo, con el fin de almacenar datos que incluyen instrucciones), uno o más sensores de L l 134, y un controlador de frecuencia de L l 136. Los sensores de L l 134 pueden corresponder a uno o más componentes del dominio de caché de L l 128 (por ejemplo, la memoria caché de L l 132), a fin de detectar una o más variaciones dentro del dominio 128. Como se muestra en la Figura 1 , los sensores de L l 134 están acoplados al controlador de frecuencia de L l 136 para informar al controlador de frecuencia 136 de cualesquiera variaciones presentes en el dominio de caché de L l 128. Las variaciones pueden detectarse también basándose en el número de errores detectados dentro del dominio de caché de L l 128. El controlador de frecuencia de L l 136 puede utilizar las variaciones detectadas para ajustar una señal de reloj para los componentes del dominio de caché de L l 128. En
consecuencia, el controlador de frecuencia de L l 136 puede habilitar a los componentes del dominio de caché de Ll 128 para que se adapten a las variaciones cambiantes.
Los dominios de ejecución 130- 1 a 130-N pueden consistir en cualquier unidad de ejecución o realización adecuada, tal como una unidad de ejecución de enteros y/o una unidad de ejecución de coma flotante. Los dominios de ejecución 130- 1 a 130-N pueden comprender, cada uno de ellos, una cola de emisión ( 138- 1 a 138-N, respectivamente), un archivo de registros ( 140- 1 a 140-N, respectivamente), un controlador de frecuencia de dominio de ejecución ( 142- 1 a 142-N, respectivamente), uno o más sensores de dominio de ejecución ( 144- 1 a 144-N, respectivamente), y/o una unidad de ejecución ( 146- 1 a 146-N, respectivamente).
En una realización, cada uno de los dominios 102, 104 y 106 puede incluir uno o más registro(s) de almacenamiento intermedio de estructura de "primero en entrar-primero en salir" (FIFO -"first-in, first- out") 148, con el fin de sincronizar la comunicación entre los diversos dominios de reloj (por ejemplo, entre los dominios 102, 104 y/ó 106). En una realización, los registros de almacenamiento intermedio FIFO 148 pueden regularse temporalmente por medio de señal de reloj, utilizando el reloj del dominio de recepción (por ejemplo, el reloj que es generado por el respectivo controlador de frecuencia).
La arquitectura 100 (y, en una realización, tal como la que se muestra en la Figura 1 , los dominios de terminal posterior 106) puede incluir una interconexión o bus 150 para facilitar la comunicación entre los diversos componentes de la arquitectura 100. Por ejemplo, una vez que se ha ejecutado con éxito una instrucción (por ejemplo, por parte de los dominios de ejecución 130- 1 a 130-N), la orden o exhortación de la instrucción puede ser comunicada al ROB 1 18 (por ejemplo, a través de la interconexión 150) para retirar esa instrucción. De manera adicional, los dominios situados dentro del terminal posterior (por ejemplo, los dominios 128 y 130- 1 a 130-N) pueden comunicarse a través de la interconexión 150. Por ejemplo, puede producirse una comunicación entre unidades de ejecución ( 130- 1 a 130-N) para las instrucciones de conversión de tipo.
La Figura 2 ilustra un diagrama de flujo de un método 200
para ajustar una señal de reloj de un dominio de reloj en respuesta a las una o más variaciones, de acuerdo con una realización. En una realización, las operaciones del método 200 pueden llevarse a cabo por medio de uno o más componentes de un procesador, tales como los componentes expuestos con referencia a la Figura 1 .
Haciendo referencia a las Figuras 1 -2, uno o más sensores (por ejemplo, los sensores 1 10, 1 14, 136 y/ó 144- 1 a 144-N) pueden detectar variaciones (tales como las variaciones explicadas en relación con la Figura 1 ) dentro de un dominio de reloj (por ejemplo, los dominios 102, 104 y/ó 106), en la operación 202. Estos sensores pueden consistir en uno o más sensores de temperatura, sondas de debilitamiento de la tensión, y/o osciladores de anillo. En la operación 204, un controlador de frecuencia (tal como los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N) pueden detectar uno o más errores en la regulación de la secuencia temporal dentro del dominio de reloj (por ejemplo, los dominios 102, 104 ó 106, respectivamente), como se explicará adicionalmente con referencia a las Figuras 3 y 4. En una realización, las operaciones 202 y 204 pueden llevarse a cabo simultáneamente. Además, en una realización, cada uno de los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N puede incluir un contador de errores (por ejemplo, para contar el número de errores detectados dentro de un dominio de reloj correspondiente) y un contador de ciclos (no mostrado). Puede utilizarse cualquier mecanismo de almacenamiento adecuado para realizar en la práctica el contador de errores y el contador de ciclos, tal como un registro de soporte físico o hardware, y/o una variable almacenada en una memoria compartida (por ejemplo, la memoria caché de L2 108 y/o la memoria caché de Ll 132). Los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N pueden también tener acceso a un valor de umbral que puede indicar el número de errores permisibles para un dominio dado (expresado, por ejemplo, como un porcentaje de los errores de regulación de la secuencia temporal). El valor de umbral puede ser almacenado en cualquier mecanismo de almacenamiento adecuado, tal como un registro de soporte físico y/o una variable almacenada en una memoria compartida (por ejemplo, la memoria caché de L2 108 y/o la memoria caché de Ll 132).
También, el valor de umbral puede ser programable en una realización.
Basándose en la comparación de los valores del contador de errores y del contador de ciclos con respecto al valor de umbral (en la operación 206) y/o las variaciones detectadas (en la operación 202), los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N pueden generar una señal de reloj para sus respectivos componentes de dominio, la cual es ajustada (208) de acuerdo con las variaciones detectadas en un dominio respectivo (por ejemplo, en los dominios 102, 104 ó 106, respectivamente). Por ejemplo, los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N pueden incrementar la frecuencia de su pulso de reloj generado si el error de regulación de la secuencia temporal dentro del dominio de reloj respectivo (por ejemplo, los dominios 102, 104 ó 106, respectivamente) es más bajo que el valor de umbral (206). Y a la inversa, los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N pueden reducir la frecuencia de su pulso de reloj generado en el caso de que el error en la regulación de la secuencia temporal dentro del respectivo dominio de reloj (por ejemplo, los dominios 102, 104 ó 106, respectivamente) exceda del valor de umbral (206). Tras la operación 208, el método 200 puede retomar las operaciones 202 y 204 para continuar detectando variaciones dentro del dominio de reloj.
De acuerdo con ello, en una realización, cada dominio (por ejemplo, los dominios 102, 104 y 106) puede estar marchando a una frecuencia de reloj que puede ser diferente de la frecuencia de reloj de los otros dominios. Esto puede permitir que cada dominio se adapte a las variaciones cambiantes que se producen a lo largo de la vida de un producto, por ejemplo, para mitigar el problema de envejecimiento asociado a los dispositivos semiconductores, y/o reducir los costes de verificación. Esto puede reducir, también, el impacto de las variaciones dentro de un mismo fragmento y puede mejorar el rendimiento, al adaptar la frecuencia de cada dominio a las variaciones dinámicas que puede experimentar ese dominio. Por otra parte, cada dominio puede tener una sensibilidad diferente a los diversos errores; así pues, un controlador de frecuencia diferente para cada dominio puede optimizar el rendimiento global de una arquitectura ( 100). Además, en una realización, los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142- N pueden generar su pulso de reloj basándose en una misma señal de
reloj de referencia. Por ejemplo, los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N pueden ajustar la frecuencia de un reloj de referencia (por ejemplo, un reloj extensivo a todo el sistema), en una realización. En consecuencia, los dominios ( 102- 106) pueden ser dependientes de una señal de reloj de referencia. Alternativamente, es posible utilizar diferentes relojes de referencia por parte de los controladores de frecuencia 1 12, 1 16, 136 y 142- 1 a 142-N, con el fin de generar su respectivo pulso de reloj de dominio.
La Figura 3 ilustra un diagrama de bloques de una etapa 300 de canal de comunicación dedicado o exclusivo de un procesador, de acuerdo con una realización. La etapa 300 de canal de comunicación dedicado puede utilizarse para llevar a cabo instrucciones de manera especulativa, por ejemplo, para incrementar el rendimiento y/o reducir la latencia. En una realización, cada una de las actuaciones 146- 1 a 146-N de la Figura 1 puede incluir una o más de las etapas 300 de canal de comunicación dedicado. La etapa 300 de canal de comunicación dedicado puede incluir una lógica de entrada 302, una lógica de tratamiento 304 y una lógica de comparación 306. La lógica de comparación 306 puede incluir adicionalmente una lógica de selección 308 (que puede ser un multiplexador en una realización), una primera unidad de almacenamiento 310, una segunda unidad de almacenamiento 312 y una lógica 314 de detección de errores.
La lógica de entrada 302 puede recibir datos de entrada (incluyendo instrucciones) que han de ser procesados o tratados por la lógica de tratamiento 304, y los valores de salida producidos por la lógica de tratamiento pueden ser almacenados en la primera unidad de almacenamiento 310, a través de una lógica de selección 308, y en la segunda unidad de almacenamiento 3 12. En una realización de la invención, la primera unidad de almacenamiento 310 y la segunda unidad de almacenamiento 312 son circuitos biestables de retención. Además, los primer y segundo circuitos biestables de retención (310 y 312, respectivamente) pueden almacenar un valor lógico presentado en sus entradas con el suficiente tiempo de establecimiento y tiempo de espera como para ser retenido por una señal de reloj. Por otra parte, los primer y segundo circuitos biestables de retención (310 y 312, respectivamente) pueden suministrar como salida un valor lógico cuando se disparan por
medio de una señal de reloj, y mantener, tras ello, su valor almacenado para su recepción por parte de un circuito subsiguiente, hasta que es presentado un nuevo valor a los circuitos biestables de retención con el suficiente tiempo de establecimiento y de espera como para ser retenido por medio de una señal de reloj.
En una realización, los circuitos biestables de retención (3 10 y 312) son disparados por los bordes de subida y de caída de una señal de reloj (o viceversa), tales como los generados por los controladores de frecuencia 142- 1 a 142-N de la Figura 1. Por ejemplo, como se muestra en la Figura 3, los bordes de señal de reloj 318 y 320 pueden ser utilizados para sincronizar las unidades de almacenamiento 310 y 312. Por ejemplo, los bordes 318 y 320 pueden ser los bordes de subida y de caída de la misma señal de reloj, o viceversa.
En una realización, la primera unidad de almacenamiento 310 almacena la salida de la lógica de tratamiento 304 y proporciona la salida a una etapa subsiguiente de canal de comunicación dedicado, de tal manera que la etapa subsiguiente de canal de comunicación dedicado puede procesar o tratar especulativamente la salida de la lógica de tratamiento 304. La segunda unidad de almacenamiento 312 puede almacenar la salida más reciente de la lógica de tratamiento 304, la cual, en algunas realizaciones, puede corresponder a la salida correcta o esperada (por ejemplo, la salida de retardo del peor de los casos).
Por otra parte, la lógica 314 de detección de errores puede comparar los valores almacenados en la primera unidad de almacenamiento 310 y en la segunda unidad de almacenamiento 312, con el fin de detectar la aparición de un error en la salida de la etapa 300 de canal de comunicación dedicado. La lógica 314 de detección de errores puede también proporcionar una señal de error a la lógica de selección 308. En consecuencia, mientras no sea detectado ningún error en la salida de la etapa de canal de comunicación dedicado, la lógica de selección 308 proporciona la salida de la lógica de tratamiento 304 a la primera unidad de almacenamiento 310. Sin embargo, si se detecta un error en la salida de la etapa 300 de canal de comunicación dedicado, la lógica de selección 308 suministra el valor almacenado en la segunda unidad de almacenamiento 312 a la primera unidad de almacenamiento 310, en una realización.
Como se muestra en la Figura 3, la lógica 3 14 de detección de errores puede proporcionar su señal de error generada a la cola de emisión 138 (la cual puede ser una de las colas de emisión 138- 1 a 138-N de la Figura 1 ). Esta cola de emisión 138 puede incluir una lógica de repetición 322, que provoque una nueva ejecución de una o más instrucciones de consumidor correspondientes, si la salida especulativa es diferente de la salida esperada. Asimismo, la lógica 314 de detección de errores puede proporcionar su señal de error generada al controlador de frecuencia 142 (que puede ser uno de los controladores de frecuencia 142- 1 a 142-N de la Figura 1 ), a fin de permitir al controlador de frecuencia 142 determinar el error de regulación de la secuencia temporal dentro del dominio de reloj (tal y como se ha explicado en relación con la operación 204 de la Figura T).
En una realización, un procesador que incluye la etapa 300 de canal de comunicación dedicado puede sacar partido del retardo en el caso habitual, reteniendo valores especulativamente. Cuando se presentan las condiciones del peor de los casos, los errores son detectados y es posible volver a llevar a cabo uno o más de los consumidores (puesto que los consumidores se han emitido basándose en el retardo del caso habitual), con el fin de proporcionar un resultado correcto. Cuando el número de errores se encuentra por encima de un valor de umbral (tal y como se ha expuesto en relación con la operación 206 de la Figura T), la frecuencia del dominio dado puede ser reducida.
La Figura 4 ilustra un diagrama de flujo de un método 400 para determinar, de acuerdo con una realización, si se han de llevar de nuevo a cabo uno o más consumidores de una instrucción ejecutada especulativamente. En una realización, las operaciones del método 400 pueden ser llevadas a cabo por uno o más componentes de un procesador, tales como los componentes que se han expuesto con referencia a las Figuras 1 -3.
Haciendo referencia a las Figuras 1 -4, la lógica 314 de detección de errores puede comparar una salida especulativa de una etapa de canal de comunicación dedicado (por ejemplo, un valor almacenado en la unidad de almacenamiento 310) con una salida esperada procedente de la etapa de canal de comunicación dedicado (por ejemplo, un valor almacenado en la unidad de almacenamiento 312), en la operación 402.
Si existe coincidencia (en la operación 404), el método 400 puede retomar la operación 402 para comparar los siguientes valores. En caso contrario, la lógica 314 de detección de errores puede generar, en la operación 406, un error (que puede ser comunicado al controlador de frecuencia 142 y/o a la cola de emisión 138). En la operación 408, la cola de emisión 138 (y, en una realización, la lógica de repetición 322) puede volver a emitir uno o más consumidores de la instrucción que corresponde al error.
En una realización, la cola de emisión 138 puede emitir una instrucción para su realización, por parte de la correspondiente unidad de ejecución (por ejemplo, una de las unidades 146- 1 a 146-N), cuando todos los operadores de la fuente están listos. En una realización, la cola de emisión 138 guardar esa instrucción durante un número de ciclos seleccionado, en el caso de que la instrucción que produce las fuentes se lleve a cabo incorrectamente (por ejemplo, cuando la lógica 3 14 de detección de errores genera un error para la instrucción en una de las etapas de la unidad de ejecución). Además, la lógica de repetición 322 puede generar una señal para solicitar la reejecución de todas las instrucciones que dependen de la instrucción que ha generado el error (consumidores). Por lo tanto, en una realización, una vez que se han utilizado, las instrucciones se guardan en la cola de emisión 138 hasta que se garantiza que todas sus fuentes respectivas son correctas.
La Figura 5 ilustra un diagrama de bloques de un sistema de computación 500 de acuerdo con una realización de la invención. El sistema de computación 500 puede incluir una o más unidades centrales de procesamiento (CPUs- "central processing unit(s)") 502 ó procesadores conectados a una red de interconexión (o bus) 504. Los procesadores 502 pueden consistir en cualquier procesador adecuado, tal como un procesador de propósito general, un procesador de red (que trata los datos comunicados a través de una red 503 de computadoras), o similar (incluyendo un procesador de computadora de conjunto de instrucciones reducido (RISC -"reduced instruction set computer") o una computadora de conjunto de instrucciones complejo (CISC -"complex instruction set computer")). Además, los procesadores 502 pueden tener un diseño de núcleo único o múltiple.
El procesador 502 con un diseño de núcleo múltiple puede
integrar diferentes tipos de núcleos de procesador en el mismo fragmento de circuito integrado (IC -"integrated circuit"). También, los procesadores 502 con un diseño de núcleo múltiple pueden realizarse en la práctica como procesadores múltiples simétricos o asimétricos. En una realización, uno o más de los procesadores 502 pueden utilizar las realizaciones que se han explicado con referencia a las Figuras 1 -4. Por ejemplo, uno o más de los procesadores 502 pueden incluir uno o más núcleos con dominios de reloj múltiples, así como controladores de frecuencia y/o sensores de variación independientes. Asimismo, las operaciones explicadas en relación con las Figuras 1 -4 pueden ser realizadas por uno o más de los componentes del sistema 500.
Puede haberse acoplado también un conjunto de chips 506 a la red de interconexión 504. El conjunto de chips 506 puede incluir un bloque de control de memoria (MCH -"memory control hub") 508. El MHC 508 puede incluir un controlador de memoria 510 que está acoplado a una memoria 512. La memoria 512 es capaz de almacenar datos en secuencias de instrucciones que son ejecutadas por la CPU 502 ó por cualquier otro dispositivo incluido en el sistema de computación 500. En una realización de la invención, la memoria 512 puede incluir uno o más dispositivos de almacenamiento volátiles (o memoria), tales como memoria de acceso aleatorio (RAM -"random access memory"), RAM dinámica (DRAM), DRAM sincrónica (SDRAM), RAM estática (SRAM), o similares. Puede también utilizarse una memoria no volátil, tal como un disco duro. Es posible acoplar dispositivos adicionales a la red de interconexión 504, tales como múltiples CPUs y/o múltiples memorias de sistema.
El MCH 508 puede incluir también una interfaz de gráficos 514, acoplada a un dispositivo acelerador de gráficos 516. En una realización de la invención, la interfaz de gráficos 514 puede acoplarse al dispositivo acelerador de gráficos 516 a través de una puerta de gráficos acelerados (AGP -"accelerated graphics port"). En una realización de la invención, puede haberse acoplado un dispositivo de presentación visual (tal como un dispositivo de presentación visual de panel plano) a la interfaz de gráficos 514 a través de, por ejemplo, un convertidor de señal que traduce una representación digital de una imagen almacenada en un dispositivo de almacenamiento, tal como una
memoria de vídeo o una memoria de sistema, a señales de presentación visual que son interpretadas y presentadas visualmente por el dispositivo de presentación visual. Las señales de presentación visual producidas por el dispositivo de presentación visual pueden pasar a través de varios dispositivos de control antes de ser interpretadas por el dispositivo de presentación visual y presentadas visualmente de forma subsiguiente por éste.
Una interfaz 518 de bloques puede acoplar el MCH 508 con un bloque de control de entrada / salida (ICH -"input / output control hub") 520. El ICH 520 puede proporcionar una interfaz a los dispositivos de entrada / salida (I/O) acoplados al sistema de computación 500. La ICH 520 puede estar acoplada a un bus 522 a través de un puente (o controlador) periférico 524, tal como un puente o pasarela de interconexión de componentes periféricos (PCI -"peripheral component interconnect"), un controlador de bus en serie universal (USB - "universal serial bus"), o similar. El puente 524 puede proporcionar un recorrido o camino para los datos entre la CPU 502 y los dispositivos periféricos. Es posible utilizar otros tipos de topologías. Asimismo, pueden acoplarse múltiples buses al ICH 520, por ejemplo, a través de múltiples puentes o controladores. Por otra parte, otros periféricos que se acoplan al ICH 520 pueden incluir, en diversas realizaciones de la invención, dispositivo(s) electrónico(s) de accionamiento integrado(s) (IDE -"integrated drive electronics") o dispositivo(s) de accionamiento de disco duro para interfaces de sistemas informáticos pequeños (SCSI - "small computer system interface"), acceso(s) o puerta(s) de USB, un teclado, un ratón, puerta(s) en paralelo, puerta(s) en serie, dispositivo(s) de accionamiento de disco flexible, dispositivo(s) de soporte de salida digital (por ejemplo, interfaz de vídeo digital (DVI -"digital video interface")), o similares. El bus 522 puede estar acoplado a un dispositivo de audio
526, a uno o más dispositivos 528 de accionamiento de disco duro, y a un dispositivo 530 de interfaz de red (que está acoplado a la red 503 de computadoras). Es posible acoplar otros dispositivos al bus 522. Asimismo, pueden acoplarse diversos componentes (tales como el dispositivo 530 de interfaz de red) al MCH 508 en algunas realizaciones de la invención. Además, el procesador 502 y el MCH 508 pueden
combinarse para formar un único chip o circuito integrado. Por otra parte, el dispositivo acelerador de gráficos 516 puede disponerse incluido dentro del MCH 508 en otras realizaciones de la invención.
Por otra parte, el sistema de computación 500 puede incluir memoria (o almacenamiento) volátil y/o no volátil. Por ejemplo, la memoria no volátil puede incluir uno o más de los siguientes: memoria de sólo lectura (ROM -"read only memory"), ROM programable (PROM -"programmable ROM"), PROM susceptible de borrarse (EPROM - "erasable PROM"), ROM programable y susceptible de borrarse eléctricamente (EEPROM -"electrically EPROM"), un dispositivo de accionamiento de disco duro (por ejemplo, el 528), un disco flexible, una ROM de disco compacto (CD-ROM), un disco versátil digital (DVD - "digital versatile disk"), una memoria de inscripción por impulsos, un disco magneto-óptico u otros tipos de medios no volátiles y susceptibles de leerse por la máquina que sean adecuados para el almacenamiento de instrucciones y/o datos electrónicos.
La Figura 6 ilustra un sistema de computación 600 que se ha dispuesto en una configuración de punto a punto (PtP -"point-to-point"), de acuerdo con una realización de la invención. En concreto, la Figura 6 muestra un sistema en el que están interconectados procesadores, memoria y dispositivos de entrada / salida, a través de un cierto número de interfaces de punto a punto. Las operaciones explicadas con referencia a las Figuras 1 -5 pueden llevarse a cabo por uno o más de los componentes del sistema 600. Tal como se ilustra en la Figura 6, el sistema 600 puede incluir varios procesadores, de los cuales se muestran tan solo dos procesadores, 602 y 604, en aras de la claridad. Los procesadores 602 y 604 pueden incluir, cada uno de ellos, un bloque controlador de memoria local (MCH -"memory controller hub") 606 y 608, a fin de acoplarse a unas memorias 610 y 612. Las memorias 610 y/o 61 2 son capaces de almacenar diversos datos, tales como los expuestos con referencia a la memoria 512.
Los procesadores 602 y 604 pueden consistir en cualquier procesador adecuado, tal como los que se han expuesto con referencia a los procesadores 502 de la Figura 5. Los procesadores 602 y 604 pueden intercambiar datos a través de una interfaz de punto a punto (PtP),
utilizando circuitos de interfaz de PtP 616 y 618, respectivamente. Los procesadores 602 y 604 pueden intercambiar, cada uno de ellos, datos con un conjunto de chips 620 a través de interfaces de PtP individuales 622 y 624, utilizando circuitos de interfaz de punto a punto 626, 628, 630 y 632. El conjunto de chips 620 puede también intercambiar datos con un circuito de gráficos de alto rendimiento 634, a través de una interfaz de gráficos de alto rendimiento 636, con el uso de un circuito de interfaz de PtP 637.
Es posible proporcionar al menos una realización de la invención dentro de los procesadores 602 y 604. Por ejemplo, puede ubicarse dentro de los procesadores 602 y 604 uno o más de los dominios de reloj expuestos con referencia a la Figura 1. Sin embargo, pueden existir otras realizaciones de la invención en otros circuitos, unidades lógicas o dispositivos dentro del sistema 600 de la Figura 6. Por otra parte, pueden distribuirse otras realizaciones de la invención a través de diversos circuitos, unidades lógicas o dispositivos que se ilustran en la Figura 6.
El conjunto de chips 620 puede estar acoplado a un bus 640 con el uso de un circuito de interfaz de PtP 641. El bus 640 tiene tener, acoplados a él, uno o más dispositivos, tales como un puente de bus 642 y dispositivos de entrada / salida (I/O) 643. El puente de bus 643 puede estar acoplado, a través de un bus 644, a otros dispositivos, tales como un teclado / ratón 645, dispositivos de comunicación 646 (tales como módems, dispositivos de interfaz de red o similares, que pueden estar acoplados a la red 503 de computadoras), un dispositivo de entrada / salida de audio, y/o un dispositivo 648 de almacenamiento de datos. El dispositivo 648 de almacenamiento de datos puede almacenar un código 649 que puede ser llevado a cabo o ejecutado por los procesadores 602 y/o 604. La Figura 7 ilustra un diagrama de bloques de un sistema de computación 700 de acuerdo con una realización. El sistema de computación 700 puede incluir uno o más dominios 702- 1 a 702-M. Cada uno de los dominios 702- 1 a 702-M puede incluir varios componentes, si bien, en aras de la claridad, tan solo se ilustran componentes de muestra con referencia al dominio 702- 1 . Como se ilustra en la Figura 7, cada dominio puede incluir uno o más sensores 704, un controlador de
frecuencia 706 y una lógica 708. Los sensores 704 pueden detectar variaciones (tales como las expuestas con referencia a la Figura 1 ) dentro del dominio correspondiente. En una realización, los sensores 704 pueden estar acoplados a uno o más componentes del grupo o racimo correspondiente (por ejemplo, la lógica 708 dentro del dominio 702- 1 ). El controlador de frecuencia 706 puede estar acoplado a los sensores 704 y a la lógica 708, y utilizar variaciones detectadas y/o errores en la regulación de la secuencia temporal para ajustar la frecuencia de la señal de reloj que se utiliza para el dominio de reloj correspondiente, tal y como se ha explicado en relación con las Figuras 1 -4. Por tanto, es posible regular temporalmente mediante señal de reloj diversos componentes de la lógica 708, por medio de una señal de reloj que se genera (o se ajusta en frecuencia) por el controlador de frecuencia 706. En una realización, cada uno de los dominios 702- 1 a 702-M puede incluir uno o más registros de almacenamiento intermedio 148 con estructura de FIFO, al objeto de sincronizar la comunicación entre los diversos dominios de reloj (tal y como se ha expuesto en relación con la Figura 1 ). La lógica 708 puede proporcionar una capacidad funcional de computación adecuada, tal como el tratamiento de los datos, el almacenamiento de los datos, la comunicación de los datos, o similar. En consecuencia, el sistema de computación 700 puede proporcionarse en la forma de cualquier dispositivo de computación adecuado, tal como una asistente digital personal (PDA- "personal digital assistant"), un teléfono móvil, una computadora portátil, una computadora de sobremesa, una computadora de servidor (incluyendo un servidor que utiliza módulos en estructura de hojas, también denominado "servidor en hojas"), una estación de trabajo, o similar. Por otra parte, el sistema de computación 700 puede incluir uno o más componentes de los sistemas 500, de la Figura 5, y/ó 600, de la Figura 6, en diversas realizaciones. En diversas realizaciones de la invención, las operaciones aquí explicadas, por ejemplo, con referencia a las Figuras 1 -7, pueden llevarse a la práctica como dispositivos físicos o hardware (por ejemplo, circuitos lógicos), programación o software, programación instalada de forma fija en el hardware, o bien combinaciones de los mismos, los cuales pueden proporcionarse en la forma de un producto de programa informático, por ejemplo, que incluya un medio legible por la máquina o
legible por una computadora y que tenga almacenadas en el mismo instrucciones (o procedimientos de programación) que se utilicen para programar una computadora para llevar a cabo un procedimiento que se ha expuesto aquí. El medio legible por la máquina puede incluir cualquier dispositivo de almacenamiento adecuado, tal como los que se han explicado con respecto a las Figuras 1 -7.
De manera adicional, dicho medio legible por computadora puede ser descargado como un producto de programa informático, de tal manera que el programa puede ser transferido desde una computadora distante (por ejemplo, un servidor) a una computadora que lo solicita (por ejemplo, un cliente) por medio de señales de datos incorporadas a una onda portadora o a otro medio de propagación, a través de un enlace de comunicación (por ejemplo, un módem o conexión de red). En consecuencia, se entenderá aquí que una onda portadora comprende un medio legible por la máquina.
La referencia que se hace aquí a "una de las realizaciones" o a "una realización" significa que un rasgo, estructura o característica concreta que se ha descrito en relación con la realización, puede ser incluida en al menos una implementación. Las ocasiones en que aparece la expresión "en una realización", en diversos lugares de la Memoria, pueden referirse o no, todas ellas, a la misma realización.
Asimismo, pueden utilizarse en la descripción y en las reivindicaciones los términos "acoplado" y "conectado", conjuntamente con sus derivados. En algunas realizaciones de la invención, "conectado" puede utilizarse para indicar que dos o más elementos están en contacto físico o eléctrico directo uno con otro. "Acoplado" puede significar que dos o más elementos están en contacto físico o eléctrico directo. Sin embargo, "acoplado" puede significar también que dos o más elementos pueden no encontrarse en contacto directo uno con otro, pero pueden cooperar o interactuar aún uno con otro.
Así pues, si bien se han descrito realizaciones de la invención en un lenguaje específico para las características estructurales y/o actuaciones metodológicas, ha de comprenderse que la materia objeto de las reivindicaciones puede no estar limitada a las características o actuaciones concretas que se han descrito. En lugar de ello, las características y actuaciones concretas se han descrito como formas de
muestra o ilustrativas de la puesta en práctica de la materia objeto de las reivindicaciones.