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 PDF

Info

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
Application number
ES09252700T
Other languages
English (en)
Inventor
Justin J Song
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of ES2701739T3 publication Critical patent/ES2701739T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing 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.
Figure imgf000004_0001
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.
Figure imgf000005_0001
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)

REIVINDICACIONES
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.
ES09252700T 2008-12-09 2009-11-30 Reasignación de hilos basada en software para el ahorro de energía Active ES2701739T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法

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) 電力効率の優れたプロセッサアーキテクチャ