ES2701739T3 - Reasignación de hilos basada en software para el ahorro de energía - Google Patents
Reasignación de hilos basada en software para el ahorro de energía Download PDFInfo
- Publication number
- ES2701739T3 ES2701739T3 ES09252700T ES09252700T ES2701739T3 ES 2701739 T3 ES2701739 T3 ES 2701739T3 ES 09252700 T ES09252700 T ES 09252700T ES 09252700 T ES09252700 T ES 09252700T ES 2701739 T3 ES2701739 T3 ES 2701739T3
- Authority
- ES
- Spain
- Prior art keywords
- core
- logical processor
- state
- processor
- thread
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
Abstract
Un método que comprende: en base a la información del estado de energía en un primer procesador lógico de un primer núcleo (510, 670) y un primer procesador lógico de un segundo núcleo (515, 680), reasignar el trabajo del primer procesador lógico del primer núcleo al primer procesador lógico del segundo núcleo; poner el primer procesador lógico del primer núcleo en un estado de suspensión profundo; poner el primer núcleo en el estado de suspensión profundo; y poner el primer procesador lógico del segundo núcleo en un segundo estado de energía.
Description
DESCRIPCIÓN
Reasignación de hilos basada en software para el ahorro de energía
Antecedentes
La gestión térmica y energética se está volviendo más compleja que nunca en todos los segmentos de los sistemas basados en ordenadores. Mientras que en el dominio de los servidores es el coste de la electricidad el que impulsa la necesidad de sistemas de energía baja, en sistemas móviles la vida de la batería y las limitaciones térmicas hacen estos problemas relevantes. La gestión de un sistema basado en ordenadores para un rendimiento máximo con un consumo de potencia mínimo se puede lograr reduciendo la energía de todo o parte del sistema informático cuando esté inactivo o, por lo contrario, no sea necesario.
Un estándar de gestión energética para ordenadores es el estándar de Interfaz Avanzada de Configuración y Energía (ACPI), p. ej., Rev. 3.0b, publicado el 10 de octubre de 2006, que define una interfaz que permite al sistema operativo (SO) controlar elementos de hardware. Muchos sistemas operativos modernos utilizan el estándar ACPI para llevar a cabo la gestión térmica y energética de los sistemas informáticos. Una implementación ACPI permite a un núcleo estar en diferentes estados de ahorro de energía (también denominados estados de energía baja o estados de inactividad) denominados en general como los estados así llamados C1 a Cn.
Cuando el núcleo está activo, este ejecuta un estado así llamado C0, pero cuando el núcleo está inactivo, el SO intenta mantener un equilibrio entre la cantidad de energía que puede ahorrar y la sobrecarga de entrar y salir a/de un estado dado. Por tanto, C1 representa el estado de energía baja que tiene el mínimo ahorro de energía pero que se puede activar y desactivar casi de manera inmediata (por tanto, se denomina estado de “energía baja superficial” o de “inactividad superficial”), mientras que los estados de energía baja profundos (p. ej., C3, C6 o C7) representan un estado de energía donde el consumo de potencia estacionario puede ser despreciable, dependiendo de la implementación de silicio, aunque el instante para entrar en este estado y responder a una actividad (es decir, de vuelta a activo C0) es relativamente largo. Cabe destacar que diferentes procesadores pueden incluir diferentes números de estados C de núcleo, cada uno asignado a un estado C de ACPI. Es decir, los estados C de múltiples núcleos se pueden asignar al mismo estado C de ACPI.
La política de estados C de los SO actuales puede no proporcionar los resultados de rendimiento más eficientes debido a que la política de estados C de los SO actuales puede no considerar las actividades de otros núcleos en el mismo paquete. En particular, la política de estados C de los SO actuales puede no beneficiarse de las eficiencias que se podría obtener mediante una gestión y un seguimiento más cercanos de los estados de energía de los diversos hilos que se ejecutan en diferentes núcleos del mismo paquete. Es decir, un hilo de hardware de un núcleo puede estar en un estado de energía baja profundo, mientras que otro hilo de hardware del núcleo puede estar activo. De acuerdo con la política de estados C de los SO actuales, un núcleo no puede entrar en un estado de energía baja profundo a menos que todos los hilos en el núcleo estén en un estado de energía baja profundo. Si múltiples núcleos experimentan esta condición, entonces ninguno de los núcleos puede entrar en un estado de energía baja profundo (incluso si múltiples hilos de hardware están inactivos).
El documento US 2008/0250260 A1 analiza un aparato de procesamiento de información que incluye una CPU, que incluye una pluralidad de procesadores de instrucciones, una unidad de monitorización que monitoriza un entorno operativo de suministro de energía y una unidad de ahorro de energía que controla el número de procesadores de instrucciones operativos dispuestos en la CPU, de acuerdo con el entorno operativo de suministro de energía obtenido mediante la monitorización con la unidad de monitorización.
Descripción breve de los dibujos
La figura 1 es un diagrama de bloques que ilustra al menos un ejemplo de un sistema para llevar a cabo las técnicas expuestas.
La figura 2 es un diagrama de bloques de flujo de datos que representa unas vistas anterior y posterior de un ejemplo de reasignación de acuerdo con al menos un ejemplo.
La figura 3 es un diagrama de flujo de control y datos que ilustra al menos un ejemplo de un método para llevar a cabo el salto de hilos basado en software para el ahorro de energía en un sistema de muestra que incluye dos núcleos de hilos dobles.
La figura 4 es un diagrama de flujo que ilustra al menos una realización de un método para llevar a cabo el salto de hilos basado en software para el ahorro de energía.
La figura 5 es un diagrama de bloques de un sistema de acuerdo con al menos una realización de la presente invención.
La figura 6 es un diagrama de bloques de un sistema de acuerdo con al menos otra realización de la presente invención.
La figura 7 es un diagrama de bloques de un sistema de acuerdo con al menos otra realización de la presente invención.
Descripción detallada
La invención se define de acuerdo con el método de la reivindicación independiente 1, el sistema de la reivindicación independiente 8 y las instrucciones legibles por máquina de la reivindicación 15, a las cuales el lector debería hacer referencia ahora. Las realizaciones específicas se definen en las reivindicaciones dependientes.
Los ejemplos llevan a cabo con precisión y en tiempo real una reasignación lógica basada en software de hilos a núcleos, lo que “intercambia” de manera efectiva los hilos inactivos al mismo núcleo, de modo que el núcleo pueda entrar en un estado de energía baja. De manera más específica, un sistema operativo puede llevar a cabo una reasignación lógica y extracción de tareas para extraer tareas desde un contexto de hilo de hardware en un núcleo hacia otro contexto de hilo de hardware en un núcleo diferente. Si un contexto de hilo de hardware está listo para realizar la transición a un estado de energía baja, el sistema operativo puede entonces determinar si cualesquiera otros contextos de hilos en el paquete están también en un estado de energía baja. A continuación, el sistema operativo puede llevar a cabo una reasignación lógica basada en software para intercambiar uno o más de los contextos de hilos de energía baja al mismo núcleo que el primer hilo de energía baja y, si es conveniente, intercambiar un hilo activo desde ese núcleo a otro núcleo. Cuando se ha completado el intercambio de modo que todos los contextos de hilos asignados a un núcleo particular estén en un estado de energía baja, el propio núcleo se puede poner en un estado de energía baja. Tal como se utiliza en la presente, el término “hilo” se refiere a un hilo de software. Las expresiones “CPU lógica”, “procesador lógico”, “contexto de hilo de hardware” y “unidad de hilos” se utilizan de manera intercambiable en al presente para hacer referencia a un contexto de hilo de hardware en el que se puede ejecutar un hilo de software. Al menos una realización de un contexto de hilo de hardware se describe con más detalle a continuación en relación con la figura 2 (véase el análisis de LP0 y LP1). Para dicha realización, una unidad de hilos puede comprender una parte de un núcleo, por ejemplo, un procesador lógico SMT (de ejecución multihilo simultánea) de un núcleo multihilo SMT. No obstante, en otras realizaciones, una unidad de hilos puede comprender, por ejemplo, un núcleo completo de un solo hilo.
En al menos una realización, las realizaciones del sistema de intercambio analizado en la presente se pueden utilizar juntamente con mecanismos del SO existente, con el fin de lograr la planificación de tareas en aquellos núcleos para los que se producirá el coste mínimo (en términos de energía y/o tiempo). Las realizaciones se pueden desarrollar en el código del kernel del SO juntamente con la política de estados C y planificación del SO. Como alternativa, una o más realizaciones se pueden desarrollar en el firmware de la plataforma con una interfaz a los mecanismos de política de estados C y de planificación del SO.
Cabe destacar que los estados C de núcleo del procesador descritos en la presente son para un procesador a modo de ejemplo, tal como aquellos basados en la arquitectura IA-32 y la arquitectura IA-64, comercializados por Intel Corporation, Santa Clara, CA, aunque las realizaciones se pueden utilizar igualmente con otros procesadores. Mostrado a continuación en la Tabla 1 hay una designación a modo de ejemplo de los estados C de núcleo disponibles en una realización, y la tabla 2 asigna estos estados C de núcleo a los estados de ACPI correspondientes. No obstante, se debe sobreentender que el alcance de la presente invención no está limitado por este respecto.
Haciendo referencia ahora a la figura 1, se muestra un diagrama de bloques de un sistema 10 que emplea un mecanismo de intercambio para migrar hilos desde un procesador lógico en un núcleo hasta un procesador lógico diferente en un núcleo diferente, basado en la información del estado de energía, de acuerdo con al menos una realización. Tal como se muestra en la figura 1, el sistema 10 incluye un paquete de procesadores 20 que tiene una pluralidad de núcleos de procesadores 250 - 25 n-1 (de manera genérica núcleo 25). El número de núcleos puede variar en diferentes implementaciones, desde paquetes de doble núcleo a paquetes de muchos núcleos que incluyen un número potencialmente grande de núcleos. La naturaleza opcional de los núcleos adicionales se indica en la figura 1 mediante líneas discontinuas. Cada núcleo 25 puede incluir diversas estructuras lógicas y de control para llevar a cabo operaciones sobre los datos en respuesta a instrucciones. Aunque únicamente se ilustra un paquete 20, los métodos y mecanismos descritos se pueden emplear en sistemas informáticos que incluyan también múltiples paquetes.
En al menos una realización, uno o más de los núcleos 25 pueden soportar múltiples contextos de hilos de hardware por núcleo (véase, p. ej., el sistema 250 de la figura 2, en el que cada núcleo 252 soporta dos contextos de hilos de hardware por núcleo). Dicha realización no se debería tomar como limitante, ya que alguien experto en la técnica sobreentenderá que cada núcleo puede soportar más de dos contextos de hilos de hardware.
La figura 1 ilustra que un sistema informático 10 puede incluir elementos adicionales. Por ejemplo, además del hardware en paquete 20, el sistema 10 también puede incluir una capa de firmware 30, que puede incluir una BIOS (sistema básico de entrada y salida). El sistema informático 10 también puede incluir una interfaz térmica y de energía 40. En al menos una realización, la interfaz térmica y de energía 40 es una interfaz de hardware/software tal como la que se define mediante el estándar de Interfaz Avanzada de Configuración y Energía (ACPI), p. ej., Rev.
3.0b, publicado el 10 de octubre de 2006, mencionado anteriormente. La especificación de ACPI describe los
registros de plataformas, las tablas ACPI, p. ej., 42, y el funcionamiento de una BIOS de ACPI. La figura 1 muestra estos componentes de ACPI colectivamente de manera lógica como una capa entre el hardware en paquete 20 y el firmware 30, por un lado, y un sistema operativo (“SO”) 50 por otro.
El sistema operativo 50 de la figura 1 se puede configurar de modo que interactúe con la interfaz térmica y de energía 40, con el fin de dirigir la gestión energética del paquete 20. En consecuencia, la figura 1 ilustra un sistema 10 capaz de utilizar una interfaz ACPI 40 para llevar a cabo la gestión de energía y configuración dirigida por el sistema operativo (OSPM).
Por tanto, el sistema operativo 50 puede incluir la lógica (software, firmware, hardware o una combinación) para llevar a cabo la función de OSPM. En al menos una realización, un módulo lógico de OSPM puede ser código del sistema que es parte del kernel del SO 51. El kernel del SO 51 también puede incluir un módulo lógico de planificación (no se muestra).
El SO 50 también puede incluir un controlador de ACPI (no se muestra) que establece el enlace entre el sistema operativo o la aplicación y el hardware del PC. El controlador puede facilitar las llamadas a ciertas funciones de ACPI de la BIOS, acceso a los registros de ACPI y la lectura de las tablas de ACPI 42.
A modo de ejemplo, la Tabla 1 a continuación muestra los estados C de núcleo y sus descripciones, junto con el consumo de potencia estimado y las latencias de salida para estos estados, haciendo referencia a un procesador ejemplar que tiene una potencia térmica de diseño (TDP) de 95 vatios (W). Obviamente, se debe sobreentender que esto es únicamente un ejemplo, y que las realizaciones no están limitadas por este respecto. La Tabla 1 también muestra los estados C de paquete y sus descripciones, la latencia de salida estimada y el consumo de potencia estimado.
La Tabla 1 ilustra que los estados C de núcleo C0 y núcleo C1 son estados de energía de latencia relativamente baja, mientras que los estados C profundos (p. ej., núcleo C3, núcleo C6 y núcleo C7) son estados de latencia alta. Cada unidad de hilos SMT (o “procesador lógico”) de un núcleo también puede estar asociado con uno de los estados C ilustrados en la Tabla 1. El estado C asociado con un procesador lógico se puede denominar en la presente como “estado C de hilo”.
La Tabla 2 muestra una asignación, a modo de ejemplo, de los estados C de núcleo de un procesador, a modo de ejemplo, a los estados C de ACPI. Cabe destacar de nuevo que esta asignación es únicamente a modo de ejemplo y que las realizaciones no están limitadas por este respecto.
Cabe destacar que los estados C de paquete no están soportados por ACPI; por lo tanto, no se proporcionan asignaciones ACPI en la Tabla 2 para estados C de paquete citados anteriormente en la Tabla 1.
Volviendo ahora a la figura 2 para un análisis breve con el fin de ilustrar las ineficiencias de energía que se pueden producir cuando el kernel del SO (véase 51 de la figura 1) lleva a cabo las técnicas conocidas que no proporcionan la migración de los hilos de energía baja al mismo núcleo.
La figura 2 ilustra un sistema 250 con un paquete 20 que incluye dos núcleos, 2520 y 2521. Obviamente, mientras el paquete 20 ilustra únicamente dos núcleos, esta simplificación tiene solo fines ilustrativos. Alguien experto en la técnica reconocerá que un paquete 20 puede incluir cualquier número de núcleos sin alejarse del alcance de las realizaciones descritas y reivindicadas en la presente.
Los núcleos 2520 y 2521 mostrados en la figura 2 son núcleos multihilo. Es decir, la figura 2 ilustra que cada núcleo 252 es un núcleo de ejecución multihilo simultánea (“SMT”) de doble hilo, donde cada núcleo 252 mantiene un estado de la arquitectura independiente (T0, T1) para cada uno de los dos contextos de hilos de hardware LP0, LP1, pero donde ciertos recursos diferentes 220, 222, 224 son compartidos por los dos contextos de hilos de hardware LP0, LP1. Tal como se ha mencionado anteriormente, para dicho ejemplo cada contexto de hilo de hardware LP (o “CPU lógica” o “procesador lógico”) puede tener un estado C independiente.
Si se permite a un contexto de hilo de hardware realizar una transición a un estado C de hilo profundo sin tomar en consideración el hilo total y el estado C de núcleo para el paquete 20, se pueden producir ineficiencias tanto de energía como de rendimiento. Este inconveniente se ilustra en el ejemplo “Antes” del sistema 250A de la figura 2. A modo de ejemplo, se supone que el hilo de hardware LP0 del núcleo 0, 2520, está en un estado C activo (p. ej., C0) pero el hilo de hardware LP1 del núcleo 0, 2520, está en un estado C de núcleo profundo (p. ej., C6). De acuerdo con la política actual de estados C, el núcleo C02520 no puede entrar en un estado C de núcleo profundo debido a que uno de sus hilos de hardware LP0 no está en un estado C de hilo profundo. Tal como se ha mencionado anteriormente la política actual de estados C dicta que un núcleo únicamente puede entrar en un estado C de núcleo profundo si todos los contextos de hardware de ese núcleo están en un estado C de hilo profundo.
La figura 2 ilustra una situación similar con el núcleo 1, 2521 en el ejemplo “Antes”, se supone que un hilo de hardware LP2 del núcleo 1, 2521, está en un estado C de hilo superficial (p. ej., C1) y que el otro hilo de hardware LP3 del núcleo 1, 2521, está en un estado C de hilo profundo (p. ej., C6). En consecuencia, el núcleo 12521 no puede entrar en un estado C de núcleo profundo debido a que uno de sus hilos de hardware LP0 no está en un estado C de hilo profundo.
En el ejemplo “Antes” ilustrado en la figura 2, cada núcleo tiene n contextos de hilo y hay un total de n contextos de hilo en un estado C de hilo profundo. No obstante, ninguno de los núcleos puede entrar en un estado C de núcleo profundo debido al requisito de la política de que ningún núcleo puede entrar en un estado C de núcleo profundo a menos que todos los contextos de hilo SMT en el núcleo estén en un estado C de hilo profundo.
Consultando la Tabla 1, uno puede observar que el ejemplo mostrado para el sistema 250A en la figura 2 conduce a un consumo de potencia innecesario. La Tabla 1 ilustra que un núcleo en un estado de energía C-6 utiliza aproximadamente cero vatios (0 W). Por tanto, una utilización eficiente del estado de energía C-6 de núcleo puede proporcionar unos beneficios energéticos significativos. No obstante, tal como se ilustra en la figura 2, hay dos contextos de hilo SMT, LP1 y LP3, en un estado C de hilo profundo para el paquete 20. Debido a que estos contextos de hilo están en núcleos diferentes, ninguno de los núcleos, el núcleo 0, 2520, o el núcleo 1,2521, puede entrar en un estado C de núcleo profundo. Es decir, el núcleo 02520 está en un estado de núcleo C0 debido a que uno de sus contextos de hilos de hardware, LP0, está en un estado C de hilo activo (p. ej., C0). Por tanto, el consumo de potencia del núcleo 02520 es 4.9 W. De manera similar, el núcleo 12521 no puede entrar en un estado C de núcleo profundo debido a que uno de sus contextos de hilos de hardware, LP0, está en un estado C de hilo de inactividad superficial (C1). El núcleo 1252 está en el estado de núcleo C1. Por tanto, el consumo de potencia del núcleo 12521 es de 2.4 W. El consumo de potencia total del sistema 250A en el ejemplo “Antes” de la figura 2 es 4.9 2.4 = 7.3 W.
El ejemplo “Después” del sistema 250B de la figura 2 ilustra que estas ineficiencias de energía se pueden evitar mediante una reasignación basada en software de los hilos de software a contextos de hilos de hardware, de
acuerdo con al menos una realización de la presente invención. Esta reasignación aprovecha el beneficio energético del estado de núcleo C-6 mediante la asignación de n hilos de hardware (en este caso n=2) al mismo núcleo de ejecución SMT de n vías, donde todos los n hilos están en el estado de hilo C-6.
El ejemplo “Después” de la figura 2 ilustra que se puede llevar a cabo una reasignación, de acuerdo con al menos una realización de la invención, con el fin de lograr un intercambio de hilos de software entre los contextos de hilos de hardware. La figura 2 muestra que, en el sistema 250B, el hilo de software de LP1 se ha reasignado a LP2, y viceversa. Por tanto, en el ejemplo “Después”, ambos contextos de hilos de hardware LP0 y LP1 del núcleo 0 del sistema 250B están en el estado C6. En consecuencia, el núcleo 02520 se ha puesto en el estado C de núcleo C6 mucho más eficiente energéticamente. Por el contrario, los hilos que están en estados superficiales se han asignado a los contextos de hilos de hardware del núcleo 12521. Por tanto, el núcleo 2521 está en el estado C C0 activo. La utilización de potencia de los dos núcleos 2520 y 2521 del sistema 250B es: 4.9 W 0 W = 4.9 W. En consecuencia, la diferencia en la utilización de potencia entre los núcleos del sistema “Antes” 250A y el sistema “Después” 250B es de 7.3 W - 4.9 W = 2.4 W. Esto representa un ahorro de energía de un 33% debido al intercambio.
Cabe destacar que el intercambio ilustrado en la figura 2 se lleva a cabo en el software y permite un intercambio de un subconjunto de hilos de un núcleo SMT multihilo. Por el contrario, los sistemas de salto de núcleo basado en hardware actuales copian todos los estados de un primer núcleo a otro núcleo. Esto se hace, en algunos casos, para equilibrar la carga o uniformizar los puntos calientes en el núcleo. Dichos planteamientos de salto de núcleo basado en hardware se pueden utilizar para conmutar trabajo desde un núcleo de un solo hilo a otro, o para conmutar todo el trabajo para todos los hilos de un núcleo multihilo a otro núcleo multihilo. No obstante, dichos planteamientos de salto de núcleo basado en hardware son mecanismos relativamente gruesos que no permiten una asignación de grano más fino de un subconjunto de hilos de un núcleo a otro. Un problema que se debe resolver cuando se intercambia un subconjunto de hilos de un núcleo a otro es la tarea muy compleja de “desenredar” los recursos compartidos (véase, p. ej., los recursos de ejecución compartidos 220 y las memorias cachés compartidas 222 de la figura 2) de modo que se pueda transferir el estado del hardware específico del hilo al nuevo núcleo. Dicha operación puede ser extremadamente compleja en sistemas de salto de núcleo basado en hardware conocidos. Otro inconveniente del salto de núcleo basado en hardware es que los planteamientos conocidos transfieren la ejecución de los hilos de un núcleo a otro únicamente cuando el hardware pasa a estar inactivo. El tiempo que se tarda en esperar que los recursos de hardware pasen a estar inactivos puede dar como resultado una oportunidad perdida para ahorrar energía.
Para resolver estas y otras dificultades con el salto de núcleo basado en hardware, el inventor ha ideado un planteamiento de software, denominado en la presente como “salto de hilo”. El planteamiento es un planteamiento de reasignación basada en software que reasigna los hilos entre los procesadores lógicos de diferentes núcleos en un paquete, con el fin de lograr un ahorro de energía.
Las realizaciones de salto de hilo descritas en la presente se pueden llevar a cabo en el software (tal como, p. ej., el código del kernel de un sistema operativo) sin que se requiera ningún cambio de hardware subyacente. El salto de hilo resuelve la dificultad de desenredar recursos por hilo, cuando se transfiere solo un subconjunto de hilos de un núcleo a otro núcleo. Una razón para esto es que, en lugar de esperar para que los hilos de hardware pasen a estar inactivos, las realizaciones del mecanismo de salto de hilo (tal como, p. ej., la descrita a continuación en relación con las figuras 3 y 4) utilizan un planteamiento de software para suspender la ejecución del hilo de software que se debe expulsar a otro núcleo. Una vez suspendido, el hilo de software se asigna a un nuevo procesador lógico en un núcleo de procesador diferente, y el planificador del SO extrae una tarea para el hilo receptor, la tarea a realizar en el procesador lógico recién asignado. Este procesamiento se contrapone a la planificación de hilos del SO tradicional, que no se activa mediante un cambio en el estado C de hilo y no conlleva una reasignación lógica del hilo de software a un contexto de hilo de hardware en un núcleo diferente.
La figura 3 es un diagrama de flujo de datos que ilustra con más detalle las operaciones de un mecanismo de reasignación basado en software de acuerdo con al menos una realización. La figura 3 ilustra que, en la operación 1, la OSPM ha determinado que un contexto de hilo de hardware (“X”) está listo para entrar en un estado de inactividad profundo. Antes de que el kernel del SO ponga el contexto de hilo de hardware en un estado inactivo, este lleva a cabo un procesamiento (analizado con más detalle a continuación en relación con la figura 4) para determinar si en su lugar sería más eficiente una extracción de tarea basada en software con el fin de extraer la tarea de algún otro contexto de hilo en el contexto de hilo X. Este procesamiento incluye la operación 2, donde se determina si el(los) contexto(s) de hilo de hardware hermano en el mismo núcleo 352 que el X está/n en un estado de inactividad profundo. Si no lo están, podría no ser eficiente, desde un punto de vista de la energía, poner X en un estado de inactividad profundo, ya que el núcleo 352 no puede entrar en el estado de inactividad profundo de acuerdo con la política de estados C en curso, a menos que todos sus contextos de hardware estén inactivos. Tal como se utiliza en la presente, un contexto de hilo de hardware “hermano” hace referencia a los demás contextos de hilo de hardware, además del contexto particular que está listo para entrar en un estado de inactividad profundo, en un único núcleo. Para las realizaciones que tienen núcleos de doble hilo, el número de hermanos para cualquier contexto de hilo de hardware es uno. Para realizaciones que tienen núcleos con más de 2 contextos de hilo de hardware por núcleo, el número de hermanos puede ser mayor de uno.
Si se determina en la operación 2 que uno o más del (de los) contexto(s) de hilo hermano para X no están en un estado de inactividad profundo, entonces el sistema operativo determina si cualquier otro núcleo incluye un contexto de hilo de hardware que ya está en un estado de inactividad profundo. Por tanto, en las operaciones 3 y 4, se evalúa el estado de energía de los contextos de hilo en otros núcleos.
Para mayor facilidad de ilustración y análisis, la figura 3 ilustra dos núcleos 352, 353, con dos contextos de hilo por núcleo: W, X para el núcleo 0 e Y, Z para el núcleo 1, respectivamente. No obstante, alguien experto en la técnica reconocerá que las realizaciones del mecanismo de salto de hilo descrito en la presente se pueden aplicar a cualquier número de núcleos en los que cada uno tenga cualquier número de contextos de hilo de hardware.
En la operación 3, se determina si cualquier otro contexto de hardware en un núcleo activo está en un estado de inactividad profundo. Con una finalidad ejemplar, la figura 3 ilustra que, en la operación 3, se determina que el contexto de hilo de hardware Y está en un estado de inactividad profundo. Tras descubrir un contexto de hilo de inactividad profundo Y para un núcleo activo 353, se evalúa el estado de energía de uno o más de los otros contextos de hilo en el núcleo 353. En la figura 3, se determina en la operación 4 que el contexto de hilo Z está activo. Por tanto, con una finalidad de ahorro de energía sería más eficiente poner el contexto de hilo Z en el estado de inactividad profundo y extraer la tarea en curso de Z al contexto de hilo de hardware X.
En consecuencia, en la operación 5 se lleva a cabo una reasignación. Esta reasignación se lleva a cabo en el software. El kernel del SO ejecuta una operación de suspensión para suspender la tarea que se ejecuta en curso en el procesador lógico Z. Los procesadores lógicos se reasignan de modo que el hilo asociado con el contexto de hilo de hardware Z se reasigne al procesador lógico Y. Esta reasignación incluye la transferencia de los datos de contexto de la tarea que se ejecuta mediante el procesador lógico Z en el núcleo 1353 al procesador lógico Y en el núcleo 0252. La ejecución de la tarea se reinicia posteriormente, pero en el contexto de hardware Y en lugar de Z. En la operación 6, el procesador lógico Z se pone mediante el kernel del SO en un estado de inactividad profundo. Como todos los contextos de hilo de hardware del núcleo 1 están ahora en el estado de inactividad profundo, el núcleo 353 entra en el estado de inactividad profundo en la operación 7.
La figura 4 es un diagrama de flujo que muestra al menos una realización de un método 400 para llevar a cabo un intercambio tal como se ilustra en la figura 3 y tal como se ilustra en el ejemplo “Después” del sistema 250B de la figura 2. En al menos una realización, el método 400 ilustrado en la figura 4 se puede llevar a cabo mediante un kernel del SO (véase, p. ej., 51 de la figura 1). La figura 4 ilustra que el método 400 proporciona el salto de hilo para intercambiar una tarea de software a un contexto de hilo de hardware en un núcleo en respuesta a una transición inminente del estado de energía de un contexto de hilo de hardware en otro núcleo.
La figura 4 ilustra que el método 400 comienza en el bloque de inicio 402. El bloque de inicio 402 se puede activar en respuesta a una determinación por parte de la lógica OSPM (no se muestra) del kernel (p. ej., 51 de la figura 1) que un procesador lógico (LP X) en uno de los núcleos (núcleo 0) de un sistema debería ponerse en un estado C de hilo profundo.
Desde el bloque de inicio 402, el procesamiento continúa en el bloque 404. En el bloque 404, se determina si el otro (los otros) contexto(s) de hilo de hardware en el núcleo 0 están en un estado C de hilo profundo. Para una realización que tiene dos contextos de hilo de hardware por núcleo, se determina en el bloque 404 si el otro núcleo está en un estado C de hilo profundo. En todas las realizaciones que incluyen n contextos de hilo de hardware por núcleo, donde n>2, el procesamiento en el bloque 404 determina si todos los demás contextos de hilo de hardware además de LP X en el núcleo 0 están en un estado C de hilo profundo. Si esto es así, no es necesario intercambio alguno y es adecuado poner todo el núcleo en un estado C de núcleo profundo, después de poner X en un estado C de hilo profundo, y el procesamiento continúa en el bloque 418. En caso contrario, el procesamiento continúa en el bloque 406.
En el bloque 406, se ha determinado por medio del procesamiento en el bloque 404 que no se dan las condiciones para poner el núcleo local de X en un estado C de núcleo profundo. Debido a que aún se podría lograr un beneficio de ahorro de energía si cualquier otro núcleo es un contexto de hilo casi en condiciones de estado C profundo, en el bloque 406 se determina si otro núcleo además del núcleo 0 tiene un contexto de hilo de hardware en un estado C de hilo profundo. Obviamente, otros núcleos que ya están en un estado C de núcleo profundo tendrán contextos de hilo en un estado C de hilo profundo, de modo que en el bloque 406 se lleva a cabo una evaluación únicamente en los núcleos que no están ya en un estado C de núcleo profundo.
Si no se identifican contextos de hilo en otro núcleo en el bloque 406, entonces el procesamiento continúa al bloque opcional 415 o al bloque 416, dependiendo de la realización. El procesamiento continúa en el bloque opcional 415 para las realizaciones que incluyen más de dos núcleos en un paquete. La naturaleza opcional del bloque 415 se indica mediante las líneas discontinuas en la figura 4. En el bloque 415, se determina si hay núcleos adicionales que se deben evaluar para buscar hilos potenciales a intercambiar a LP X. Para una realización de doble núcleo, el bloque 415 es opcional no es necesario llevarlo a cabo. Si en el bloque 415 se determina que se deben evaluar núcleos adicionales, el procesamiento vuelve al bloque 406. En caso contrario, el procesamiento continúa en el
bloque 416. En el bloque 416, se produce el procesamiento del estado C normal, no hay una ganancia de eficiencias adicionales mediante salto de hilo.
Si en lugar de esto, en el bloque 406 se determina que un contexto de hilo de hardware (LP Y) en otro núcleo (núcleo 1) está en un estado C de hilo profundo, entonces el procesamiento continúa al bloque opcional 407 o al bloque 408, dependiendo de la realización. El procesamiento continúa en el bloque opcional 407 para las realizaciones que incluyen más de dos procesadores lógicos por núcleo y continúa en el bloque 408 para realizaciones que incluyen únicamente dos procesadores lógicos por núcleo. La naturaleza opcional del bloque 407 se indica en la figura 4 con líneas discontinuas.
En el bloque 407, se determina si un intercambio de trabajo entre los dos núcleos daría como resultado que el nuevo núcleo tuviera más procesadores lógicos en un estado de hilo de inactividad profundo de los que tendría el núcleo 0 si se pusiera LP X en un estado de hilo de inactividad profundo en el núcleo 0. Si esto es así, el procesamiento continúa en el bloque 408 con el fin de proseguir con el procesamiento del intercambio. Si esto no es así, no hay ganancia de eficiencias debido al intercambio, así que por el contrario el procesamiento continúa en el bloque, el bloque opcional 415 (parar realizaciones con más de dos procesadores lógicos por núcleo) o en el bloque 416. En el bloque 408, se determina si cualquier contexto de hilo de hardware (LP Z) en el otro núcleo (núcleo 1) está en un estado activo. Si esto es así, entonces se produce la situación de que un núcleo, diferente del núcleo local de LP X, tiene al menos un contexto de hilo de hardware en un estado C profundo y al menos otro contexto de hilo de hardware en un estado activo. Por tanto, esto sería conveniente, desde un punto de vista del ahorro de energía, para consolidar los contextos de hilo de hardware de inactividad profundo en el mismo núcleo, aunque también es verdad que el trabajo en curso del LP Z activo se debería extraer a otro contexto de hilo de hardware antes de que el LP Z realice la transición al estado C de hilo de inactividad profundo. En consecuencia, el procesamiento continúa en el bloque 410. No obstante, si en el bloque 408 se determina que ningún hermano en el otro núcleo está en un estado activo, entonces no se debería producir la extracción de la tarea, y el procesamiento continúa en el bloque 414. En este caso, el núcleo hermano ya está en un estado C de hilo profundo o en algún otro estado no activo (tal como, p. ej., un estado de inactividad superficial C1).
En el bloque 410, se lleva a cabo la extracción de tareas de software. Es decir, la tarea que se ejecuta en ese momento en LP Z se suspende temporalmente y se mueve a LP X. Para hacerlo, una entidad de software, tal como el sistema operativo (y, más en particular, el planificador de un SO) provoca la suspensión de la tarea activa de LP Z. El trabajo asociado con la tarea activa de LP Z se asigna a continuación al núcleo local de LP X. El estado necesario de LP X para comenzar a ejecutar la tarea de LP Z se mueve al núcleo de LP X. La manera de transferir el estado del contexto entre núcleos en el bloque 410 depende de la implementación y se puede llevar a cabo de diversas maneras. En al menos una realización, por ejemplo, los datos de contexto de Lp Z se copian en una sección adecuada de memoria o jerarquía de memoria (p. ej., en una memoria caché) a la cual tiene acceso LP X. El puntero a instrucciones es parte del estado que se transfiere, de modo que LP X, cuando reinicia la ejecución, comenzará la ejecución en la siguiente instrucción que habría ejecutado Lp Z. Después de que se lleve a cabo la extracción de tarea en el bloque 410 la operación continúa en el bloque 414.
En el bloque 414, la reasignación lógica de LP X y LP Z se intercambia por software. Es decir, la ID de la CPU lógica asociada con LP X se intercambia por LP Z y, de manera similar, la ID de CPU lógica asociada con LP Z se intercambia por LP X. La operación del hilo activo que estaba corriendo anteriormente en LP Z se reinicia posteriormente en LP X. A continuación, el procesamiento continúa en el bloque 417, donde LP Z entra en el estado de inactividad profundo.
Desde el bloque 417, el procesamiento continúa al bloque 420. En el bloque 420 se determina si todos los procesadores lógicos en el núcleo local de LP Y están ahora en estados de suspensión profundos. Si no lo están, el procesamiento finaliza en el bloque 422.
Si se determina en el bloque 420 que todos los procesadores lógicos del núcleo local de LP Y están ahora en un estado C de hilo profundo, en ese caso el núcleo entra en un estado C de núcleo profundo. A continuación, el procesamiento finaliza en el bloque 422.
Las realizaciones se pueden implementar en muchos tipos diferentes de sistemas. Haciendo referencia ahora a la figura 5, se muestra un diagrama de bloques de un sistema 500 de acuerdo con una realización de la presente invención. Tal como se muestra en la figura 5, el sistema 500 puede incluir uno o más elementos de procesamiento 510, 515, que están acoplados a un concentrador de controladora de la memoria gráfica (GMCH) 520. La naturaleza opcional de los elementos de procesamiento adicionales 515 se indica en la figura 5 con líneas discontinuas.
Cada elemento de procesamiento puede ser un único núcleo o, como alternativa, puede incluir múltiples núcleos. De manera opcional, los elementos de procesamiento pueden incluir otros elementos en el chip además de los núcleos de procesamiento, tal como el controlador de memoria integrado y/o la lógica de control de E/S integrada. Además, en al menos una realización, el(los) núcleo(s) de los elementos de procesamiento pueden ser multihilo ya que estos pueden incluir más de un contexto de hilo de hardware por núcleo.
La figura 5 ilustra que el GMCH 520 puede estar acoplado a una memoria 540 que, por ejemplo, puede ser una memoria de acceso aleatorio dinámica (DRAM). En al menos una realización, la memoria 540 puede incluir las instrucciones o el código que comprende un sistema operativo (p. ej., 50 de la figura 1).
El GMCH 520 puede ser un circuito integrado auxiliar, o una parte de un circuito integrado auxiliar. El GMCH 520 se puede comunicar con el(los) procesador(es) 510, 515 y controlar la interacción entre el(los) procesador(es) 510, 515 y la memoria 540. El GMCh 520 también puede actuar como una interfaz de bus acelerado entre el(los) procesador(es) 510, 515 y otros elementos del sistema 500. En al menos una realización, el GMCH 520 se comunica con el(los) procesador(es) 510, 515 a través de un bus multipunto, tal como un bus frontal (FSB) 595. Asimismo, el GMCH 520 está acoplado a una pantalla 540 (tal como una pantalla de panel plano). El GMCH 520 puede incluir un acelerador gráfico integrado. El GMCH 520 está acoplado además a un concentrador de controladora (ICH) de entrada/salida (E/S) 550, el cual se puede utilizar para acoplar diversos dispositivos periféricos al sistema 500. En la realización de la figura 5 se muestra, por ejemplo, un dispositivo gráfico externo 560, que puede ser un dispositivo gráfico discreto acoplado al ICH 550, junto con otro dispositivo periférico 570.
Como alternativa, en el sistema 500 también pueden estar presentes elementos de procesamiento adicionales o diferentes. Por ejemplo, el(los) elemento(s) de procesamiento adicional(es) 515 puede(n) incluir procesador(es) adicional(es) que son iguales al procesador 510, procesador(es) adicional(es) que son heterogéneos o asimétricos al procesador 510, aceleradores (tal como, p. ej., aceleradores gráficos o unidades de procesamiento digital de señales (DSP)), matrices de puertas programables o cualquier otro elemento de procesamiento. Puede haber diversas diferencias entre los recursos físicos 510, 515 en términos de un espectro de métricas de calidad que incluyen características de arquitectura, microarquitectura, térmicas, de consumo de potencia y similares. Estas diferencias se pueden manifestar de manera efectiva por sí mismas como una asimetría y heterogeneidad entre los elementos de procesamiento 510, 515. En al menos una realización, los diversos elementos de procesamiento 510, 515 pueden residir en el mismo encapsulado del chip.
Haciendo referencia ahora a la figura 6, se muestra un diagrama de bloques de una segunda realización del sistema 600 de acuerdo con una realización de la presente invención. Tal como se muestra en la figura 6, el sistema multiprocesador 600 es un sistema de interconexión de punto a punto, e incluye un primer elemento de procesamiento 670 y un segundo elemento de procesamiento 680 acoplados a través de una interconexión de punto a punto 650. Tal como se muestra en la figura 6, cada uno de los elementos de procesamiento 670 y 680 pueden ser procesadores multinúcleo, que incluyen un primer y segundo núcleo de procesador (es decir, los núcleos de procesador 674a y 674b y los núcleos de procesador 684a y 684b).
Como alternativa, uno o más elementos de procesamiento 670, 680 pueden ser un elemento distinto a un procesador, tal como un acelerador o una matriz de puertas programables.
Aunque se muestra con únicamente dos elementos de procesamiento 670, 680, se debe sobreentender que el alcance de la presente invención no está limitado por ello. En otras realizaciones, pueden estar presentes uno o más elementos de procesamiento adicionales en un procesador dado.
El primer elemento de procesamiento 670 puede incluir además un concentrador de controladora de la memoria (MCH) 672 y unas interfaces de punto a punto (P-P) 676 y 678. De manera similar, el segundo elemento de procesamiento 680 puede incluir un MCH 682 y unas interfaces P-P 686 y 688. Tal como se muestra en la figura 6, los MCH 672 y 682 acoplan los procesadores a las memorias respectivas, en concreto a una memoria 642 y una memoria 644, que pueden ser partes de una memoria principal conectada localmente a los procesadores respectivos.
El primer elemento de procesamiento 670 y el segundo elemento de procesamiento 680 pueden estar acoplados a un circuito integrado auxiliar 690 a través de las interconexiones P-P 676, 686 y 684, respectivamente. Tal como se muestra en la figura 6, el circuito integrado auxiliar 690 incluye unas interfaces P-P 694 y 698. Asimismo, el circuito integrado auxiliar 690 incluye una interfaz 692 para acoplar el circuito integrado auxiliar 690 con un motor gráfico de alto rendimiento 648. En una realización, el bus 649 se puede utilizar para acoplar el motor gráfico 648 al circuito integrado auxiliar 690. Como alternativa, una interconexión de punto a punto 649 puede acoplar estos componentes. A su vez, el circuito integrado auxiliar 690 puede estar acoplado a un primer bus 616 a través de una interfaz 696. En una realización, el primer bus 616 puede ser un bus de interconexión de componentes periféricos (PCI), o un bus tal como un bus PCI Express u otro bus de interconexión de E/S de tercera generación, aunque el alcance de la presente invención no está limitado por esto.
Tal como se muestra en la figura 6, diversos dispositivos de E/S 614 pueden estar acoplados al primer bus 616, junto con un puente de bus 618 que acopla el primer bus 616 a un segundo bus 620. En una realización, el segundo bus 620 puede ser un bus de pocos pines (LPC). Diversos dispositivos pueden estar acoplados al segundo bus 620 que incluyen, por ejemplo, un teclado/ratón 622, dispositivos de comunicación 626 y una unidad de almacenamiento de datos 628, tal como una unidad de disco u otro dispositivo de almacenamiento masivo que puede incluir el código 630, en una realización. El código 630 puede incluir instrucciones para llevar a cabo realizaciones de uno o más de los métodos descritos anteriormente. Además, una E/S de audio puede estar acoplada al segundo bus 620. Cabe
destacar que son posibles otras arquitecturas. Por ejemplo, en lugar de la arquitectura de punto a punto de la figura 6, un sistema puede implementar un bus multipunto u otra arquitectura de este tipo.
Haciendo referencia ahora a la figura 7, se muestra un diagrama de bloques de una tercera realización del sistema 700 de acuerdo con una realización de la presente invención. Elementos iguales en las figuras 6 y 7 tienen los mismos números de referencia, y se han omitido ciertos aspectos de la figura 6 en la figura 7 con el fin de evitar complicar otros aspectos de la figura 7.
La figura 7 ilustra que los elementos de procesamiento 670, 680 pueden incluir una memoria y una lógica de control de E/S (“CL”) integradas 672 y 682, respectivamente. En al menos una realización, la CL 672, 682 puede incluir la lógica del concentrador de controladora de la memoria (MCH), tal como el descrito anteriormente en relación con las figuras 5 y 6. Además, la CL 672, 682 también puede incluir la lógica de control de E/S. La figura 7 ilustra que no solo las memorias 642, 644 están acopladas a la CL 672, 682, sino también que los dispositivos de E/S 714 también están acoplados a la lógica de control 672, 682. Los dispositivos de E/S antiguos 715 están acoplados al circuito integrado auxiliar 690.
Las realizaciones de los mecanismos expuestos en la presente se pueden implementar en el hardware, software, firmware o en una combinación de dichos planteamientos de implementación. Las realizaciones de la invención se pueden implementar como programas informáticos que se ejecutan en sistemas programables que comprenden al menos un procesador, un sistema de almacenamiento de datos (que incluye una memoria volátil y no volátil y/o unos elementos de almacenamiento), al menos un dispositivo de entrada y al menos un dispositivo de salida.
El código de programa, tal como el código 630 ilustrado en la figura 6, se puede aplicar para introducir datos con el fin de llevar a cabo las funciones descritas en la presente y generar una información de salida. Por ejemplo, el código de programa 630 puede incluir un sistema operativo que está codificado para llevar a cabo las realizaciones de los métodos ilustrados en las figuras 2, 3 y 4. En consecuencia, las realizaciones de la invención también incluyen los medios que son accesibles por máquina y utilizables por el ordenador, los medios que contienen las instrucciones para llevar a cabo las operaciones de un método o que contienen los datos de diseño, tal como la HDL, que define las características de estructuras, circuitos, aparatos, procesadores y/o sistema descritos en la presente. Dichas realizaciones también se pueden denominar productos de programas informáticos.
Dichos medios de almacenamiento accesibles por máquina y utilizables por un ordenador pueden incluir, sin carácter limitante, unas disposiciones tangibles de partículas fabricadas o formadas mediante una máquina o dispositivo, que incluyen medios de almacenamiento tales como discos duros, cualquier otro tipo de disco que incluye los discos flexibles, discos ópticos, discos compactos con memorias de solo lectura (CD-ROM), discos compactos regrabables (CD-RW) y discos magnéticos y ópticos, dispositivos semiconductores tales como memorias de solo lectura (ROM), memorias de acceso aleatorio (RAM) tales como memorias de acceso aleatorio dinámicas (DRAM), memorias de acceso aleatorio estáticas (SRAM), memorias de solo lectura programables y borrables (EPROM), memorias flash, memorias de solo lectura programable y borrable eléctricamente (EEPROM), tarjetas magnéticas u ópticas, o cualquier otro tipo de medios utilizables por un ordenador adecuados para almacenar instrucciones electrónicas.
La información de salida se puede aplicar a uno o más dispositivos de salida, de una manera conocida. Para la finalidad de esta aplicación, un sistema de procesamiento incluye cualquier sistema que tenga un procesador, tal como, por ejemplo, un procesador digital de señales (DSP), un microcontrolador, un circuito integrado de aplicación específica (As iC) o un microprocesador.
Los programas se pueden implementar en un lenguaje de programación orientado a objetos o procedimental de alto nivel para comunicarse con un sistema de procesamiento. Los programas también se pueden implementar, si se desea, en lenguaje ensamblador o máquina. De hecho, los mecanismos descritos en la presente no están limitados en su alcance por ningún lenguaje de programación particular. En cualquier caso, el lenguaje puede ser un lenguaje compilado o interpretado.
En la presente se ofrecen realizaciones de métodos, aparatos y sistemas para reasignar unidades de hilos y redistribuir el trabajo entre los hilos en núcleos diferentes para consolidar los hilos inactivos en el mismo núcleo. Aunque se han mostrado y descrito realizaciones particulares de la presente invención, será obvio para aquellos que son expertos en la técnica que se pueden realizar numerosos cambios, variaciones y modificaciones sin alejarse del alcance de las reivindicaciones adjuntas. Las reivindicaciones adjuntas engloban dentro de su alcance todos de dichos cambios, variaciones y modificaciones que están dentro del alcance de la presente invención.
Claims (15)
1. Un método que comprende:
en base a la información del estado de energía en un primer procesador lógico de un primer núcleo (510, 670) y un primer procesador lógico de un segundo núcleo (515, 680), reasignar el trabajo del primer procesador lógico del primer núcleo al primer procesador lógico del segundo núcleo;
poner el primer procesador lógico del primer núcleo en un estado de suspensión profundo;
poner el primer núcleo en el estado de suspensión profundo; y
poner el primer procesador lógico del segundo núcleo en un segundo estado de energía.
2. El método de la reivindicación 1, donde dicha reasignación se basa además en la información del estado de energía de un segundo procesador lógico del primer núcleo (510, 670).
3. El método de la reivindicación 1, donde dicha reasignación se basa además en la información del estado de energía de un segundo procesador lógico del segundo núcleo (515, 680); y/o donde dicha información del estado de energía de dicho primer procesador lógico de dicho primer núcleo (510, 670) comprende además si el primer procesador lógico del primer núcleo está listo para entrar en el estado de suspensión profundo.
4. El método de la reivindicación 2, donde dicha información del estado de energía de dicho segundo procesador lógico de dicho primer núcleo (510, 670) comprende, además:
si el segundo procesador lógico del primer núcleo está en el estado de suspensión profundo.
5. El método de la reivindicación 3, donde dicha información del estado de energía de dicho segundo procesador lógico de dicho segundo núcleo (515, 680) comprende, además:
si el segundo procesador lógico del segundo núcleo (515, 680) están en el estado de suspensión profundo.
6. El método de la reivindicación 1, donde dicha reasignación se lleva a cabo en el software; y de manera opcional, donde dicha reasignación se lleva a cabo mediante un sistema operativo (51); y de manera opcional, donde dicha reasignación comprende además llevar a cabo una conmutación de contexto basada en software.
7. El método de la reivindicación 1, donde los procesadores lógicos residen en el mismo encapsulado de chip (20); y/o donde la reasignación comprende además la reasignación de un identificador de hilo del primer procesador lógico del primer núcleo (510, 670) a un primer procesador lógico del segundo núcleo (515, 680), y reasignar un identificador de hilo de un segundo procesador lógico del segundo núcleo al primer procesador lógico del primer núcleo.
8. Un sistema (500, 600) que comprende:
un encapsulado de chip (20) que incluye un primer procesador lógico de un primer núcleo (510, 670) y un primer procesador lógico de un segundo núcleo (515, 680);
un módulo planificador (51) acoplado con el encapsulado de chip, donde el módulo planificador reasigna, basado en la información del estado de energía relacionada con el primer procesador lógico del primer núcleo y el primer procesador lógico del segundo núcleo, el trabajo del primer procesador lógico del primer núcleo al primer procesador lógico del segundo núcleo; y
un módulo de energía acoplado con el módulo planificador, donde el módulo de energía pone el primer procesador lógico del primer núcleo en un estado de suspensión profundo, pone el primer núcleo en el estado de suspensión profundo y pone el primer procesador lógico del segundo núcleo en un segundo estado de energía.
9. Un sistema (500, 600) según se reivindica en la reivindicación 8, donde dicho módulo planificador (51) y dicho módulo de energía son módulos de software; y/o los núcleos residen en un mismo encapsulado de chip (20); y/o dicho primer núcleo comprende además un controlador de memoria integrado.
10. El sistema (500, 600) de la reivindicación 8, donde dicha reasignación está basada además en la información del estado de energía de un segundo procesador lógico del primer núcleo (510, 670).
11. El sistema (500, 600) de la reivindicación 8, donde dicha reasignación está basada además en la información del estado de energía de un segundo procesador lógico del segundo núcleo (515, 680); y/o donde dicha información del estado de energía de dicho primer procesador lógico de dicho primer núcleo (510, 670) comprende además si el primer procesador lógico del primer núcleo está listo para entrar en el estado de suspensión profundo.
12. El sistema (500, 600) de la reivindicación 8, donde dicha información del estado de energía de dicho segundo procesador lógico de dicho primer núcleo (510, 670) comprende, además:
si el segundo procesador lógico del primer núcleo está en el estado de suspensión profundo.
13. El sistema (500, 600) de la reivindicación 8, donde dicha información del estado de energía de dicho segundo procesador lógico de dicho segundo núcleo (515, 680) comprende, además:
si el segundo procesador lógico del segundo núcleo está en el estado de suspensión profundo.
14. El sistema (250, 500, 600) de la reivindicación 8, donde el módulo planificador (51) se configura además de modo que reasigne un identificador de hilo del primer procesador lógico del primer núcleo al primer procesador lógico del segundo núcleo (515, 680), y reasigne un identificador de hilo de un segundo procesador lógico del segundo núcleo (515, 680) al primer procesador lógico del primer núcleo (510, 670).
15. Unas instrucciones legibles por máquina dispuestas en un soporte legibles por ordenador que, cuando se ejecutan mediante un ordenador, hacen que el ordenador lleve a cabo el método según se reivindica en una de las reivindicaciones 1 a 7.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/316,014 US8954977B2 (en) | 2008-12-09 | 2008-12-09 | Software-based thread remapping for power savings |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2701739T3 true ES2701739T3 (es) | 2019-02-25 |
Family
ID=42209231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES09252700T Active ES2701739T3 (es) | 2008-12-09 | 2009-11-30 | Reasignación de hilos basada en software para el ahorro de energía |
Country Status (4)
Country | Link |
---|---|
US (2) | US8954977B2 (es) |
EP (1) | EP2207092B1 (es) |
CN (2) | CN104699225B (es) |
ES (1) | ES2701739T3 (es) |
Families Citing this family (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799687B2 (en) | 2005-12-30 | 2014-08-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including optimizing C-state selection under variable wakeup rates |
US8024590B2 (en) * | 2007-12-10 | 2011-09-20 | Intel Corporation | Predicting future power level states for processor cores |
JP5531679B2 (ja) * | 2010-03-04 | 2014-06-25 | 日本電気株式会社 | Smt対応cpuを有する情報処理装置の消費電力低減方法、消費電力低減装置及び消費電力低減プログラム |
WO2011130604A1 (en) * | 2010-04-16 | 2011-10-20 | Massachusetts Institute Of Technology | Execution migration |
WO2011134716A1 (en) * | 2010-04-26 | 2011-11-03 | International Business Machines Corporation | Managing a multiprocessing computer system |
US8510749B2 (en) | 2010-05-27 | 2013-08-13 | International Business Machines Corporation | Framework for scheduling multicore processors |
US8381002B2 (en) * | 2010-06-23 | 2013-02-19 | International Business Machines Corporation | Transparently increasing power savings in a power management environment |
US8943334B2 (en) | 2010-09-23 | 2015-01-27 | Intel Corporation | Providing per core voltage and frequency control |
US8448006B2 (en) | 2010-10-19 | 2013-05-21 | International Business Machines Corporation | Performing virtual and/or physical resource management for power management |
US8983536B2 (en) | 2010-10-22 | 2015-03-17 | Google Technology Holdings LLC | Resource management in a multi-operating environment |
US8990602B2 (en) | 2010-12-21 | 2015-03-24 | Intel Corporation | Apparatus, method, and system for early deep sleep state exit of a processing element |
US8775836B2 (en) * | 2010-12-23 | 2014-07-08 | Intel Corporation | Method, apparatus and system to save processor state for efficient transition between processor power states |
US9069555B2 (en) | 2011-03-21 | 2015-06-30 | Intel Corporation | Managing power consumption in a multi-core processor |
US8910177B2 (en) * | 2011-04-14 | 2014-12-09 | Advanced Micro Devices, Inc. | Dynamic mapping of logical cores |
US8793515B2 (en) | 2011-06-27 | 2014-07-29 | Intel Corporation | Increasing power efficiency of turbo mode operation in a processor |
US8769316B2 (en) | 2011-09-06 | 2014-07-01 | Intel Corporation | Dynamically allocating a power budget over multiple domains of a processor |
US8688883B2 (en) | 2011-09-08 | 2014-04-01 | Intel Corporation | Increasing turbo mode residency of a processor |
US8914650B2 (en) | 2011-09-28 | 2014-12-16 | Intel Corporation | Dynamically adjusting power of non-core processor circuitry including buffer circuitry |
US8954770B2 (en) | 2011-09-28 | 2015-02-10 | Intel Corporation | Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin |
US9074947B2 (en) | 2011-09-28 | 2015-07-07 | Intel Corporation | Estimating temperature of a processor core in a low power state without thermal sensor information |
TWI454905B (zh) | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
US8832478B2 (en) | 2011-10-27 | 2014-09-09 | Intel Corporation | Enabling a non-core domain to control memory bandwidth in a processor |
US9026815B2 (en) | 2011-10-27 | 2015-05-05 | Intel Corporation | Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor |
US8943340B2 (en) | 2011-10-31 | 2015-01-27 | Intel Corporation | Controlling a turbo mode frequency of a processor |
US9158693B2 (en) | 2011-10-31 | 2015-10-13 | Intel Corporation | Dynamically controlling cache size to maximize energy efficiency |
WO2013079988A1 (en) * | 2011-11-28 | 2013-06-06 | Freescale Semiconductor, Inc. | Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor |
US9239611B2 (en) | 2011-12-05 | 2016-01-19 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including balancing power among multi-frequency domains of a processor based on efficiency rating scheme |
US8972763B2 (en) | 2011-12-05 | 2015-03-03 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state |
US9052901B2 (en) | 2011-12-14 | 2015-06-09 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including configurable maximum processor current |
US9098261B2 (en) | 2011-12-15 | 2015-08-04 | Intel Corporation | User level control of power management policies |
US9075610B2 (en) * | 2011-12-15 | 2015-07-07 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation |
US9372524B2 (en) | 2011-12-15 | 2016-06-21 | Intel Corporation | Dynamically modifying a power/performance tradeoff based on processor utilization |
US9396041B2 (en) * | 2012-02-01 | 2016-07-19 | Google Technology Holdings LLC | Optimization of resource usage in a multi-environment computing system |
US9268596B2 (en) | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
US9436245B2 (en) | 2012-03-13 | 2016-09-06 | Intel Corporation | Dynamically computing an electrical design point (EDP) for a multicore processor |
US9323316B2 (en) | 2012-03-13 | 2016-04-26 | Intel Corporation | Dynamically controlling interconnect frequency in a processor |
CN104169832B (zh) | 2012-03-13 | 2017-04-19 | 英特尔公司 | 提供处理器的能源高效的超频操作 |
WO2013147849A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Dynamically measuring power consumption in a processor |
CN103376877B (zh) * | 2012-04-26 | 2017-12-01 | 深圳市中兴微电子技术有限公司 | 一种多核处理器时钟控制装置及控制方法 |
US10185566B2 (en) | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
WO2014004222A1 (en) * | 2012-06-29 | 2014-01-03 | Intel Corporation | Instruction and logic to test transactional execution status |
US9569279B2 (en) | 2012-07-31 | 2017-02-14 | Nvidia Corporation | Heterogeneous multiprocessor design for power-efficient and area-efficient computing |
DE102013108041B4 (de) * | 2012-07-31 | 2024-01-04 | Nvidia Corporation | Heterogene Mehrprozessor-Anordnung für ein leistungseffizientes und flächeneffizientes Rechnen |
US8943252B2 (en) | 2012-08-16 | 2015-01-27 | Microsoft Corporation | Latency sensitive software interrupt and thread scheduling |
US8984313B2 (en) | 2012-08-31 | 2015-03-17 | Intel Corporation | Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator |
US9063727B2 (en) | 2012-08-31 | 2015-06-23 | Intel Corporation | Performing cross-domain thermal control in a processor |
US9342122B2 (en) | 2012-09-17 | 2016-05-17 | Intel Corporation | Distributing power to heterogeneous compute elements of a processor |
US9423858B2 (en) | 2012-09-27 | 2016-08-23 | Intel Corporation | Sharing power between domains in a processor package using encoded power consumption information from a second domain to calculate an available power budget for a first domain |
KR20140044596A (ko) * | 2012-10-05 | 2014-04-15 | 삼성전자주식회사 | 멀티 코어 프로세서를 구비한 컴퓨팅 시스템 및 그것의 로드 밸런싱 방법 |
KR101764657B1 (ko) * | 2012-10-26 | 2017-08-03 | 인텔 코포레이션 | 자동화된 선택적 전력 사이클링을 통한 컴퓨팅 서브시스템 하드웨어 복구 |
US9146609B2 (en) * | 2012-11-20 | 2015-09-29 | International Business Machines Corporation | Thread consolidation in processor cores |
US9575543B2 (en) | 2012-11-27 | 2017-02-21 | Intel Corporation | Providing an inter-arrival access timer in a processor |
US9183144B2 (en) | 2012-12-14 | 2015-11-10 | Intel Corporation | Power gating a portion of a cache memory |
US9405351B2 (en) | 2012-12-17 | 2016-08-02 | Intel Corporation | Performing frequency coordination in a multiprocessor system |
US9292468B2 (en) | 2012-12-17 | 2016-03-22 | Intel Corporation | Performing frequency coordination in a multiprocessor system based on response timing optimization |
US9075556B2 (en) | 2012-12-21 | 2015-07-07 | Intel Corporation | Controlling configurable peak performance limits of a processor |
US9235252B2 (en) | 2012-12-21 | 2016-01-12 | Intel Corporation | Dynamic balancing of power across a plurality of processor domains according to power policy control bias |
KR20150098649A (ko) | 2012-12-22 | 2015-08-28 | 퀄컴 인코포레이티드 | 비-휘발성 메모리의 이용을 통한 휘발성 메모리의 전력 소비 감소 |
US10007323B2 (en) | 2012-12-26 | 2018-06-26 | Intel Corporation | Platform power consumption reduction via power state switching |
US9164565B2 (en) | 2012-12-28 | 2015-10-20 | Intel Corporation | Apparatus and method to manage energy usage of a processor |
US9081577B2 (en) | 2012-12-28 | 2015-07-14 | Intel Corporation | Independent control of processor core retention states |
US9335803B2 (en) | 2013-02-15 | 2016-05-10 | Intel Corporation | Calculating a dynamically changeable maximum operating voltage value for a processor based on a different polynomial equation using a set of coefficient values and a number of current active cores |
US9367114B2 (en) | 2013-03-11 | 2016-06-14 | Intel Corporation | Controlling operating voltage of a processor |
US9250901B2 (en) * | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
US9395784B2 (en) | 2013-04-25 | 2016-07-19 | Intel Corporation | Independently controlling frequency of plurality of power domains in a processor system |
US9377841B2 (en) | 2013-05-08 | 2016-06-28 | Intel Corporation | Adaptively limiting a maximum operating frequency in a multicore processor |
US9823719B2 (en) | 2013-05-31 | 2017-11-21 | Intel Corporation | Controlling power delivery to a processor via a bypass |
US9348401B2 (en) | 2013-06-25 | 2016-05-24 | Intel Corporation | Mapping a performance request to an operating frequency in a processor |
US9471088B2 (en) | 2013-06-25 | 2016-10-18 | Intel Corporation | Restricting clock signal delivery in a processor |
US9348407B2 (en) | 2013-06-27 | 2016-05-24 | Intel Corporation | Method and apparatus for atomic frequency and voltage changes |
US9600346B2 (en) * | 2013-07-10 | 2017-03-21 | International Business Machines Corporation | Thread scheduling across heterogeneous processing elements with resource mapping |
US9430014B2 (en) * | 2013-07-18 | 2016-08-30 | Qualcomm Incorporated | System and method for idle state optimization in a multi-processor system on a chip |
US9377836B2 (en) | 2013-07-26 | 2016-06-28 | Intel Corporation | Restricting clock signal delivery based on activity in a processor |
US9495001B2 (en) | 2013-08-21 | 2016-11-15 | Intel Corporation | Forcing core low power states in a processor |
US10386900B2 (en) | 2013-09-24 | 2019-08-20 | Intel Corporation | Thread aware power management |
US9594560B2 (en) | 2013-09-27 | 2017-03-14 | Intel Corporation | Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain |
US20150095614A1 (en) * | 2013-09-27 | 2015-04-02 | Bret L. Toll | Apparatus and method for efficient migration of architectural state between processor cores |
US9405345B2 (en) | 2013-09-27 | 2016-08-02 | Intel Corporation | Constraining processor operation based on power envelope information |
US9494998B2 (en) | 2013-12-17 | 2016-11-15 | Intel Corporation | Rescheduling workloads to enforce and maintain a duty cycle |
US9389675B2 (en) | 2013-12-19 | 2016-07-12 | International Business Machines Corporation | Power management for in-memory computer systems |
US9459689B2 (en) | 2013-12-23 | 2016-10-04 | Intel Corporation | Dyanamically adapting a voltage of a clock generation circuit |
US9323525B2 (en) | 2014-02-26 | 2016-04-26 | Intel Corporation | Monitoring vector lane duty cycle for dynamic optimization |
US9665153B2 (en) | 2014-03-21 | 2017-05-30 | Intel Corporation | Selecting a low power state based on cache flush latency determination |
US10108454B2 (en) | 2014-03-21 | 2018-10-23 | Intel Corporation | Managing dynamic capacitance using code scheduling |
US11200058B2 (en) * | 2014-05-07 | 2021-12-14 | Qualcomm Incorporated | Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media |
US20150355942A1 (en) * | 2014-06-04 | 2015-12-10 | Texas Instruments Incorporated | Energy-efficient real-time task scheduler |
US10417149B2 (en) | 2014-06-06 | 2019-09-17 | Intel Corporation | Self-aligning a processor duty cycle with interrupts |
US9760158B2 (en) | 2014-06-06 | 2017-09-12 | Intel Corporation | Forcing a processor into a low power state |
US9513689B2 (en) | 2014-06-30 | 2016-12-06 | Intel Corporation | Controlling processor performance scaling based on context |
US9606602B2 (en) | 2014-06-30 | 2017-03-28 | Intel Corporation | Method and apparatus to prevent voltage droop in a computer |
US9785481B2 (en) * | 2014-07-24 | 2017-10-10 | Qualcomm Innovation Center, Inc. | Power aware task scheduling on multi-processor systems |
US9575537B2 (en) | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
US9760136B2 (en) | 2014-08-15 | 2017-09-12 | Intel Corporation | Controlling temperature of a system memory |
US9671853B2 (en) | 2014-09-12 | 2017-06-06 | Intel Corporation | Processor operating by selecting smaller of requested frequency and an energy performance gain (EPG) frequency |
US10339023B2 (en) | 2014-09-25 | 2019-07-02 | Intel Corporation | Cache-aware adaptive thread scheduling and migration |
US9977477B2 (en) | 2014-09-26 | 2018-05-22 | Intel Corporation | Adapting operating parameters of an input/output (IO) interface circuit of a processor |
US9684360B2 (en) | 2014-10-30 | 2017-06-20 | Intel Corporation | Dynamically controlling power management of an on-die memory of a processor |
US9703358B2 (en) | 2014-11-24 | 2017-07-11 | Intel Corporation | Controlling turbo mode frequency operation in a processor |
US10048744B2 (en) | 2014-11-26 | 2018-08-14 | Intel Corporation | Apparatus and method for thermal management in a multi-chip package |
US9710043B2 (en) | 2014-11-26 | 2017-07-18 | Intel Corporation | Controlling a guaranteed frequency of a processor |
US20160147280A1 (en) | 2014-11-26 | 2016-05-26 | Tessil Thomas | Controlling average power limits of a processor |
KR102347657B1 (ko) * | 2014-12-02 | 2022-01-06 | 삼성전자 주식회사 | 전자 장치 및 이의 공유 캐시 메모리 제어 방법 |
US10877530B2 (en) | 2014-12-23 | 2020-12-29 | Intel Corporation | Apparatus and method to provide a thermal parameter report for a multi-chip package |
US20160224098A1 (en) | 2015-01-30 | 2016-08-04 | Alexander Gendler | Communicating via a mailbox interface of a processor |
US9639134B2 (en) | 2015-02-05 | 2017-05-02 | Intel Corporation | Method and apparatus to provide telemetry data to a power controller of a processor |
US10234930B2 (en) | 2015-02-13 | 2019-03-19 | Intel Corporation | Performing power management in a multicore processor |
US9910481B2 (en) | 2015-02-13 | 2018-03-06 | Intel Corporation | Performing power management in a multicore processor |
US9874922B2 (en) | 2015-02-17 | 2018-01-23 | Intel Corporation | Performing dynamic power control of platform devices |
US9842082B2 (en) | 2015-02-27 | 2017-12-12 | Intel Corporation | Dynamically updating logical identifiers of cores of a processor |
US9710054B2 (en) | 2015-02-28 | 2017-07-18 | Intel Corporation | Programmable power management agent |
US9652027B2 (en) * | 2015-04-01 | 2017-05-16 | Microsoft Technology Licensing, Llc | Thread scheduling based on performance state and idle state of processing units |
US9760160B2 (en) | 2015-05-27 | 2017-09-12 | Intel Corporation | Controlling performance states of processing engines of a processor |
US9710041B2 (en) | 2015-07-29 | 2017-07-18 | Intel Corporation | Masking a power state of a core of a processor |
US10089155B2 (en) * | 2015-09-22 | 2018-10-02 | Advanced Micro Devices, Inc. | Power aware work stealing |
US10001822B2 (en) | 2015-09-22 | 2018-06-19 | Intel Corporation | Integrating a power arbiter in a processor |
US9983644B2 (en) | 2015-11-10 | 2018-05-29 | Intel Corporation | Dynamically updating at least one power management operational parameter pertaining to a turbo mode of a processor for increased performance |
US9910470B2 (en) | 2015-12-16 | 2018-03-06 | Intel Corporation | Controlling telemetry data communication in a processor |
US10037227B2 (en) * | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
US10216245B2 (en) | 2015-12-22 | 2019-02-26 | Cray Inc. | Application ramp rate control in large installations |
US10146286B2 (en) | 2016-01-14 | 2018-12-04 | Intel Corporation | Dynamically updating a power management policy of a processor |
US10289188B2 (en) | 2016-06-21 | 2019-05-14 | Intel Corporation | Processor having concurrent core and fabric exit from a low power state |
US10324519B2 (en) | 2016-06-23 | 2019-06-18 | Intel Corporation | Controlling forced idle state operation in a processor |
US10281975B2 (en) | 2016-06-23 | 2019-05-07 | Intel Corporation | Processor having accelerated user responsiveness in constrained environment |
CN106200868B (zh) * | 2016-06-29 | 2020-07-24 | 联想(北京)有限公司 | 多核处理器中共享变量获取方法、装置及多核处理器 |
CN106201726A (zh) * | 2016-07-26 | 2016-12-07 | 张升泽 | 多内核芯片线程分配方法及系统 |
US10379596B2 (en) | 2016-08-03 | 2019-08-13 | Intel Corporation | Providing an interface for demotion control information in a processor |
US10423206B2 (en) | 2016-08-31 | 2019-09-24 | Intel Corporation | Processor to pre-empt voltage ramps for exit latency reductions |
US10234920B2 (en) | 2016-08-31 | 2019-03-19 | Intel Corporation | Controlling current consumption of a processor based at least in part on platform capacitance |
US10379904B2 (en) | 2016-08-31 | 2019-08-13 | Intel Corporation | Controlling a performance state of a processor using a combination of package and thread hint information |
US10775859B2 (en) * | 2016-09-23 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Assignment of core identifier |
US10168758B2 (en) | 2016-09-29 | 2019-01-01 | Intel Corporation | Techniques to enable communication between a processor and voltage regulator |
WO2018129708A1 (en) * | 2017-01-13 | 2018-07-19 | Alibaba Group Holding Limited | Determining processor utilization of multiprocessing system |
US10429919B2 (en) | 2017-06-28 | 2019-10-01 | Intel Corporation | System, apparatus and method for loose lock-step redundancy power management |
EP3673344A4 (en) | 2017-08-23 | 2021-04-21 | INTEL Corporation | SYSTEM, DEVICE AND METHOD FOR ADAPTIVE OPERATING VOLTAGE IN A FIELD-PROGRAMMABLE GATE ARRAY (FPGA) |
US20190068466A1 (en) * | 2017-08-30 | 2019-02-28 | Intel Corporation | Technologies for auto-discovery of fault domains |
US20190073243A1 (en) * | 2017-09-07 | 2019-03-07 | Alibaba Group Holding Limited | User-space spinlock efficiency using c-state and turbo boost |
US10620266B2 (en) | 2017-11-29 | 2020-04-14 | Intel Corporation | System, apparatus and method for in-field self testing in a diagnostic sleep state |
US10620682B2 (en) | 2017-12-21 | 2020-04-14 | Intel Corporation | System, apparatus and method for processor-external override of hardware performance state control of a processor |
EP3676704A4 (en) * | 2017-12-26 | 2020-09-30 | Samsung Electronics Co., Ltd. | METHOD AND SYSTEM FOR PREDICTING OPTIMUM NUMBER OF WIRES FOR AN APPLICATION PERFORMING ON AN ELECTRONIC DEVICE |
CN111712793B (zh) * | 2018-02-14 | 2023-10-20 | 华为技术有限公司 | 线程处理方法和图形处理器 |
US10620969B2 (en) | 2018-03-27 | 2020-04-14 | Intel Corporation | System, apparatus and method for providing hardware feedback information in a processor |
US10739844B2 (en) | 2018-05-02 | 2020-08-11 | Intel Corporation | System, apparatus and method for optimized throttling of a processor |
US10955899B2 (en) | 2018-06-20 | 2021-03-23 | Intel Corporation | System, apparatus and method for responsive autonomous hardware performance state control of a processor |
US10976801B2 (en) | 2018-09-20 | 2021-04-13 | Intel Corporation | System, apparatus and method for power budget distribution for a plurality of virtual machines to execute on a processor |
US10860083B2 (en) | 2018-09-26 | 2020-12-08 | Intel Corporation | System, apparatus and method for collective power control of multiple intellectual property agents and a shared power rail |
US11656676B2 (en) | 2018-12-12 | 2023-05-23 | Intel Corporation | System, apparatus and method for dynamic thermal distribution of a system on chip |
CN109947569B (zh) * | 2019-03-15 | 2021-04-06 | Oppo广东移动通信有限公司 | 绑定核心的方法、装置、终端及存储介质 |
US11256657B2 (en) | 2019-03-26 | 2022-02-22 | Intel Corporation | System, apparatus and method for adaptive interconnect routing |
US11048549B2 (en) * | 2019-04-04 | 2021-06-29 | Google Llc | Transferral of process state and/or components in computing environments |
US11442529B2 (en) | 2019-05-15 | 2022-09-13 | Intel Corporation | System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor |
US11422849B2 (en) * | 2019-08-22 | 2022-08-23 | Intel Corporation | Technology for dynamically grouping threads for energy efficiency |
US11698812B2 (en) | 2019-08-29 | 2023-07-11 | Intel Corporation | System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor |
US11366506B2 (en) | 2019-11-22 | 2022-06-21 | Intel Corporation | System, apparatus and method for globally aware reactive local power control in a processor |
US11132201B2 (en) | 2019-12-23 | 2021-09-28 | Intel Corporation | System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit |
US11921564B2 (en) | 2022-02-28 | 2024-03-05 | Intel Corporation | Saving and restoring configuration and status information with reduced latency |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089558B2 (en) * | 2001-03-08 | 2006-08-08 | International Business Machines Corporation | Inter-partition message passing method, system and program product for throughput measurement in a partitioned processing environment |
US6985951B2 (en) * | 2001-03-08 | 2006-01-10 | International Business Machines Corporation | Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment |
US7065659B2 (en) * | 2002-06-28 | 2006-06-20 | Microsoft Corporation | Power management architecture for defining component power states under a global power state and maintaining a power state floor for a specified component if a power state for the specified component under a new global power state is below the power state floor |
US20050060590A1 (en) | 2003-09-16 | 2005-03-17 | International Business Machines Corporation | Power-aware workload balancing usig virtual machines |
JP4800837B2 (ja) | 2006-05-22 | 2011-10-26 | 株式会社日立製作所 | 計算機システム、その消費電力低減方法、及びそのプログラム |
JP2008257578A (ja) | 2007-04-06 | 2008-10-23 | Toshiba Corp | 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法 |
-
2008
- 2008-12-09 US US12/316,014 patent/US8954977B2/en active Active
-
2009
- 2009-11-30 ES ES09252700T patent/ES2701739T3/es active Active
- 2009-11-30 EP EP09252700.1A patent/EP2207092B1/en active Active
- 2009-12-08 CN CN201510118010.XA patent/CN104699225B/zh active Active
- 2009-12-08 CN CN200910258390.1A patent/CN102163072B/zh not_active Expired - Fee Related
-
2014
- 2014-12-24 US US14/582,757 patent/US20150135189A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN102163072A (zh) | 2011-08-24 |
EP2207092B1 (en) | 2018-09-26 |
CN104699225A (zh) | 2015-06-10 |
CN104699225B (zh) | 2018-06-08 |
US8954977B2 (en) | 2015-02-10 |
US20100146513A1 (en) | 2010-06-10 |
US20150135189A1 (en) | 2015-05-14 |
EP2207092A3 (en) | 2013-07-03 |
EP2207092A2 (en) | 2010-07-14 |
CN102163072B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2701739T3 (es) | Reasignación de hilos basada en software para el ahorro de energía | |
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
US9032126B2 (en) | Increasing turbo mode residency of a processor | |
Jeong et al. | Balancing DRAM locality and parallelism in shared memory CMP systems | |
US8489904B2 (en) | Allocating computing system power levels responsive to service level agreements | |
JP6197196B2 (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
US10185566B2 (en) | Migrating tasks between asymmetric computing elements of a multi-core processor | |
US20090320031A1 (en) | Power state-aware thread scheduling mechanism | |
US8205200B2 (en) | Compiler-based scheduling optimization hints for user-level threads | |
KR101476568B1 (ko) | 코어 마다의 전압 및 주파수 제어 제공 | |
Bower et al. | The impact of dynamically heterogeneous multicore processors on thread scheduling | |
Sridharan et al. | Holistic run-time parallelism management for time and energy efficiency | |
BRPI0907774B1 (pt) | Programação de encadeamento ciente de energia e uso dinâmico de processadores | |
TW201337771A (zh) | 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統 | |
BR102014006299A2 (pt) | método para inicializar um sistema heterogêneo e apresentar uma vista simétrica do núcleo | |
Tan et al. | Combating the reliability challenge of GPU register file at low supply voltage | |
Narayan et al. | MOCA: Memory object classification and allocation in heterogeneous memory systems | |
Wu et al. | vprobe: Scheduling virtual machines on numa systems | |
US20120272210A1 (en) | Methods and systems for mapping a function pointer to the device code | |
Ye et al. | Energy-efficient memory management in virtual machine environments | |
Li | Power Management for GPU-CPU Heterogeneous Systems | |
Sheikh | Cache-Aware Energy-Efficient Scheduling on Multicore Real-Time Systems | |
Aruli et al. | A REVIEW ON TRENDS IN MULTICORE PROCESSOR BASED ON CACHE AND POWER DISSIPATION | |
JP2017021811A (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
JP2016201139A (ja) | 電力効率の優れたプロセッサアーキテクチャ |