ES2286630T3 - Metodo y logica de contabilidd para determinar la utilizacion de recursos de procesador para cada hilo en un procesador de multihilo o simultaneo (smt). - Google Patents
Metodo y logica de contabilidd para determinar la utilizacion de recursos de procesador para cada hilo en un procesador de multihilo o simultaneo (smt). Download PDFInfo
- Publication number
- ES2286630T3 ES2286630T3 ES04727310T ES04727310T ES2286630T3 ES 2286630 T3 ES2286630 T3 ES 2286630T3 ES 04727310 T ES04727310 T ES 04727310T ES 04727310 T ES04727310 T ES 04727310T ES 2286630 T3 ES2286630 T3 ES 2286630T3
- Authority
- ES
- Spain
- Prior art keywords
- processor
- thread
- cycle
- hardware
- resources
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Variable-Direction Aerials And Aerial Arrays (AREA)
Abstract
Un método para contabilizar el tiempo de uso de un procesador que da soporte a la ejecución concurrente de una pluralidad de hilos de hardware y que tiene una pluralidad de recursos usados por dicha pluralidad de hilos de hardware, comprendiendo el método: en cada ciclo de reloj de procesador, determinar el uso relativo de recursos en base a si cada hilo de hardware está o no en un estado particular de ciclo de procesador; y en respuesta a dicha determinación, actualizar una pluralidad de cuentas de uso de recursos de procesador, cada una de ellas asociada a un hilo particular de los hilos de hardware en conformidad con dicho uso relativo de recursos, caracterizado porque dicha actualización se realiza por igual en cada una de dicha pluralidad de dichas cuentas de uso de recursos de procesador en respuesta a la determinación de que ninguno de dicha pluralidad de hilos de hardware se encuentra en dicho estado particular de ciclo.
Description
Método y lógica de contabilidad para determinar
la utilización de recursos de procesador para cada hilo en un
procesador de multihilo simultáneo (SMT).
La presente invención se refiere generalmente a
los procesadores y sistemas informáticos, y más en particular, a un
procesador de multihilo simultáneo (SMT). La presente invención se
refiere también al uso del procesador en sistemas de
contabilidad.
Los procesadores actuales de alta velocidad
incluyen la capacidad de la ejecución simultánea de instrucciones,
la ejecución especulativa y la carga de instrucciones y el
funcionamiento simultáneo de diversos recursos dentro de un
procesador. En particular, se ha considerado deseable gestionar la
ejecución de uno o varios hilos dentro de un procesador, de manera
más de un hilo de ejecución puedan usar el procesador y de tal
manera que los recursos puedan ser gestionados de manera más
efectiva que cuando son típicamente usados por un hilo único.
Los diseños anteriores de procesadores han
tratado el problema de gestionar múltiples hilos mediante un
conmutador de estado de hardware pasando de la ejecución de un hilo
a la ejecución de otro hilo. Los procesadores de este tipo son
conocidos como procesadores multihilo de hardware (HMT), y como
tales pueden proporcionar un conmutador de hardware entre la
ejecución de un hilo o del otro. Un procesador HMT supera las
limitaciones de esperar en un hilo estancado permitiendo que el
hardware conmute la ejecución a otro hilo. No se puede realizar la
ejecución de ambos hilos simultáneamente, sino asignando tramos de
ejecución a cada hilo, cuando el hilo experimenta una condición de
estancamiento como en una falta de memoria caché.
Los procesadores multihilo simultáneos (SMT)
proporcionan un uso todavía más eficiente de los recursos del
procesador, puesto que múltiples hilos pueden usar simultáneamente
los recursos del procesador. Se ejecutan de manera concurrente
hilos múltiples en un procesador SMT de manera que múltiples
unidades de ejecución, tales como unidades de punto flotante,
unidades de instrucción de punto fijo, unidades de almacenamiento de
carga y otras puedan estar realizando tareas independientes para
uno (o más dependiendo de las capacidades de las unidades de
ejecución) de múltiples hilos simultáneamente. También se puede
asignar los recursos de almacenamiento y de registro en una base
por hilo de manera que se evita el conmutador de estado interno
completo del SMT.
La contabilización del uso de tiempo de
procesador es necesaria para la administración de las ventas de
servicios informáticos, así como para la gestión interna no
contable cuando, por ejemplo, algunas operaciones del procesador
son para actividades de investigación y desarrollo que permiten que
el hardware sea capitalizado de manera diferente para fines
fiscales que para otros usos. Se puede dividir un servidor y se
puede poner a disposición de usuarios múltiples el tiempo de
procesador "sobre demanda" o en base a su utilización.
Adicionalmente, el tiempo de procesador puede ser utilizado por los
propietarios o arrendadores de hardware y ser también subcontratado
exteriormente a entidades que paguen por los servicios. Por tanto,
es una necesidad en los modelos de arquitectura y software
informáticos la contabilización precisa del tiempo de ejecución de
procesador. También, el tiempo de uso de procesador, especialmente
en base a hilo, es útil para perfilar programas con vistas a su
optimización.
En los sistemas de procesamiento de hilo único,
la contabilización se hace generalmente de forma directa. Se puede
disponer una cuenta de uso de ciclo de procesador o incluso una
simple medición de tiempo "del reloj de la pared" para
sesiones completas de trabajo, puesto que aunque se ejecuten hilos
múltiples dentro de programas múltiples, no se ejecutan
simultáneamente, sino secuencialmente. Se mantiene un recuento de
tiempos de ciclo hasta que se completa un trabajo y se presenta el
total con fines contables. El tiempo medido está directamente
correlacionado con la utilización de los recursos de procesador.
En una máquina HMT, la tarea es similar en
cuanto a que dentro del hardware del procesador sólo se está
ejecutando un hilo cada vez, y se usan contadores múltiples para
registrar el uso del tiempo de procesador por cada hilo aunque
haciendo funcionar un contador sólo cuando su hilo asociado está
activo. Sin embargo, en un procesador SMT, se puede ejecutar
simultáneamente dos o más hilos dentro de un único núcleo de
procesador y no se determina fácilmente el uso de los recursos por
cada hilo por una simple cuenta de ejecución o medición de
tiempo.
Es por tanto deseable proporcionar un método y
un aparato que pueda contabilizar el uso del tiempo de procesador
en un procesador SMT. Además, es deseable proporcionar un método
para la contabilización del uso de recursos dentro de una
utilización de un procesador SMT entre los hilos que se ejecutan
dentro de un procesador de este tipo.
Se logra el objetivo de contabilizar el uso de
tiempo de procesador dentro de un procesador de multihilo simultáneo
(SMT) mediante un procesador que tiene contadores de utilización de
procesador y un método para la contabilización del uso de tiempo de
procesador.
El procesador incorpora contadores múltiples de
ciclos de uso de procesador, cada uno asociado a cada hilo que se
ejecuta dentro de un procesador para proporcionar un recuento
correspondiente al uso de recursos de procesador por cada hilo. Se
detecta el uso relativo de recursos en base a hilo y se usa para
actualizar los contadores de ciclos. Se puede realizar la detección
de uso de recursos detectando la presencia de un estado particular
de ciclo que indica el procesamiento activo de instrucciones
correspondientes a un hilo. El estado del ciclo es detectado por
muestreo periódicamente, lo cual puede ser en cada ciclo de reloj, y
se incrementan los contadores (o se disminuyen alternativamente) en
conformidad con el estado de ciclo detectado. Se escoge el estado
de ciclo detectado para que sea indicativo del uso relativo de
recursos de procesador por cada hilo.
El estado de ciclo detectado puede ser un
despacho de una instrucción para un hilo. Los ciclos para los cuales
ningún hilo está en el estado particular de ciclo se pueden cargar
por igual a cada hilo, o se puede cargar el ciclo de conformidad
con un último estado de despacho para todos los hilos.
Alternativamente, los ciclos sin indicación se pueden cargar de
conformidad con una prioridad de hilos ordenada, lo cual da una
indicación de uso relativo de recursos por hilo. Los ciclos en los
cuales un hilo está en el estado particular de ciclo y el otro hilo
no lo está, se pueden cargar por entero al hilo que está en el
estado particular de ciclo, disponiendo de esta forma que se cargue
a hilos activos preferentemente que a los hilos pasivos. También se
puede cargar los ciclos de conformidad con unos valores fraccionales
indicativos del número de recursos usados en un ciclo dado por cada
hilo.
El procesador puede ser capaz de funcionar tanto
en modo SMT como en modo de hilo único (ST), y la contabilización
puede responder de manera selectiva al modo seleccionado, cargando
todos los ciclos a un único hilo que se ejecuta en modo ST.
La publicación de la patente de EEUU
2001/0056456 describe una arquitectura simultánea basada en
prioridad que combina la información de prioridad de OS con la
heurística de hilo para proporcionar las prioridades dinámicas para
la selección de las instrucciones de hilo para su procesamiento.
Lo anterior, así como otros objetivos,
características y ventajas de la invención resultarán claras a
partir de la siguiente descripción, más concreta, de la realización
preferida de la invención, como se ilustra en los dibujos
anexos.
Los elementos novedosos considerados
característicos de la invención se establecen en las
reivindicaciones anexas. Se entenderá mejor la propia invención,
así como un modo de uso preferido, los objetivos adicionales y las
ventajas de la misma, haciendo referencia a la siguiente descripción
detallada de una realización ilustrativa cuando se lee
conjuntamente con los dibujos anexos, en los que números de
referencia análogos indican componentes análogos, y:
La Figura 1 es un diagrama de bloques de un
sistema de acuerdo con una realización de la invención.
La Figura 2 es un diagrama de bloques de un
núcleo procesador de acuerdo con una realización de la
invención.
La Figura 3 es un diagrama de bloques de
detalles de las unidades funcionales dentro del núcleo 10 de
procesador de la Figura 2.
La Figura 4 es un diagrama de flujo que
representa un método de acuerdo con una realización de la presente
invención.
Haciendo referencia a continuación a las
figuras, y en particular con referencia a la Figura 1, se representa
un diagrama de bloques de un sistema de acuerdo con una realización
de la presente invención. El sistema incluye un grupo de
procesadores 5 que puede estar conectado a otros grupos de
procesadores por medio de un puente 37 formando un procesador de
escala superior. El grupo de procesadores 5 está conectado a una
unidad L3 de memoria caché 36 a la memoria local de sistema 38 y a
diversos elementos periféricos 34, así como a dos procesadores de
servicios 34A y 34B. Los procesadores de servicios proporcionan
supervisión de defectos, asistencia para la puesta en marcha y
capacidad de ensayo al grupo de procesadores 5 y pueden tener sus
propias rutas de interconexión a otros grupos de procesadores así
como conectarse a todos los procesadores 30A-D.
Dentro del grupo de procesadores 5 está una
pluralidad de procesadores 30A-D, generalmente
fabricados en una unidad única y que incluyen una pluralidad de
núcleos de procesador 10A y 10B acoplados a una memoria caché L2 32
y a un controlador de memoria 4. Los núcleos 10A y 10B proporcionan
la ejecución de instrucciones y el funcionamiento en valores de
datos para las funciones de procesamiento de utilidad general. El
puente 37, así como otros puentes del sistema, proporcionan
comunicación sobre conductores principales anchos con otros grupos
de procesadores y el conductor principal 35 proporciona una conexión
de los procesadores 30A-D, el puente 37, los
periféricos 34, la memoria caché L3 36 y la memoria de sistema local
38. Se puede acoplar otra memoria global de sistema externamente al
puente 37 para el acceso simétrico por todos los grupos de
procesadores.
Los núcleos 10A y 10B de procesador son
procesadores multihilo simultáneos (SMT) capaces de una ejecución
concurrente de múltiples hilos. Además, los núcleos 10A y 10B de
procesador dan soporte a un modo de funcionamiento de hilo único
para una ejecución eficiente de un único hilo cuando las condiciones
de ejecución de programa dictan un funcionamiento de hilo único,
por ejemplo, cuando se debe completar la ejecución de un programa
de alta prioridad en un tiempo conocido, o cuando se conoce que un
hilo de un procesador de multihilo está ocioso. El multihilo
introduce algunas ineficiencias respecto a la ejecución a tiempo
completo de un hilo único, pero por encima de todo existe una
ventaja de eficiencia de sistema, puesto que los hilos
frecuentemente están ociosos esperando que se completen otras
tareas. Por tanto la transición entre el modo de hilo único y de
multihilo proporciona una ventaja para adaptarse a una o varias de
las condiciones anteriormente descritas, y las realizaciones de la
presente invención proporcionan una contabilización del tiempo de
procesador de manera consistente con un procesador que proporciona
contabilización de tiempo en respuesta a tales transiciones.
Haciendo referencia a continuación a la Figura
2, se representan detalles de un núcleo 10 de procesador que tiene
características idénticas a los núcleos de procesador 10A y 10B. Una
unidad 23 de interfaz de conductor principal conecta el núcleo 10
de procesador a otros procesadores SMT y periféricos y conecta la
memoria Dcaché L1 22 para almacenar los valores de los datos, la
memoria Icaché L1 20 para almacenar las instrucciones de programa,
el procesador y otros dispositivos. La memoria Icaché L1 20 para
almacenar las instrucciones de programa y la unidad de interfaz 21
de memoria caché proporciona la carga de las corrientes de
instrucciones conjuntamente con la unidad de captura de instrucción
IFU 16, la cual prealcanza las instrucciones y puede incluir
capacidades de cargado especulativo y de predicción de derivación.
Una unidad de secuencia de instrucciones (ISU) 12 controla la
secuencia de instrucciones emitidas a las diversas unidades internas
como una unidad de punto fijo (FXU) 14 para ejecutar las
operaciones generales y una unidad de punto flotante (FPU) 15 para
ejecutar las operaciones de punto flotante. Las tablas de
terminación global (GCT) 13 encaminan las instrucciones emitidas
por la ISU 12 por medio de etiquetas hasta que la unidad de
ejecución concreta señalada por la instrucción indica que las
instrucciones han completado su ejecución.
La unidad de punto fijo (FXU) 14 y la unidad de
punto flotante (FPU) 15 están acopladas a diversos recursos tales
como registros de uso general (GPR) 18A, registros de punto flotante
(FPR) 18B, registros de condición (CR) 18C, memorias intermedias de
cambio de nombre 18D, registradores de cuenta/registradores de
enlace (CTR/LR) 18E y registradores de excepción (XER) 18F. Los GPR
18A y GPR 18B proporcionan el almacenamiento de los valores de los
datos para los valores de los datos cargados y almacenados
procedentes de la memoria Dcaché L1 22 por la unidad de
almacenamiento de carga (LSU) 19. El CR 18C almacena información
convencional de derivación y las memorias intermedias de cambio de
nombre 18D, (las cuales pueden incluir varias unidades de cambio de
nombre asociadas a las diversas unidades internas de ejecución)
proporcionan el almacenamiento de los datos operativos y de los
resultados para las unidades de ejecución. El XER 18F almacena
información de excepción de derivación y de punto fijo y el CTR/LR
18E almacena información del enlace de derivación e información de
cuenta para la ejecución de la derivación de programa. El GPR 18A,
el FPR 18B, el CR 18C, las memorias intermedias de cambio de nombre
18D, el CTR/LR 18E y el XER 18F son recursos que incluyen algunos
registros fijos (en la arquitectura) que almacenan la información
durante la ejecución de un programa y deben estar dispuestos como
un conjunto fijo para cada hilo que se ejecuta, otros registros sin
arquitectura dentro de los recursos anteriores son libres para uso
de cambio de nombre. La lógica de control 11 está acoplada a
diversas unidades de ejecución y a los recursos dentro del núcleo
10 de procesador, y se usa para proporcionar un control dominante
de las unidades de ejecución y de los recursos. Una unidad de
interfaz 25 de SCOM/XSCOM proporciona una conexión a los
procesadores 34A-B externos de servicios.
Haciendo ahora referencia a la Figura 3, se
representan detalles de los bloques funcionales dentro del núcleo
10 de procesador. La ISU 12 indica a la lógica de control 11 cuando
se despachan las instrucciones para los hilos particulares que se
ejecutan con el núcleo 10 de procesador. La lógica de control 11
actualiza los contadores de semiciclos 42A y 42B selectivamente,
dependiendo de si las instrucciones fueron despachadas por la ISU
12 para un hilo asociado a un contador dado (el hilo 0 para el
contador de semiciclos 42A y el hilo 1 para el contador de
semiciclos 42B) en un ciclo dado, como fue detectado por un circuito
44 de detección de despacho. Las salidas de los contadores de
semiciclos 42A y 42B son bloqueadas por unos cerrojos 43A y 43B que
están acoplados al contador 47 de ciclos de base de tiempos. En
cada octavo ciclo de procesador del contador 47 de base de tiempos,
se proporciona las salidas de los cerrojos 43A y 43B para
incrementar los contadores de uso por hilo 41A y 41B,
proporcionando una actualización de los contadores de uso por hilo
41A y/o 41B cada 8 ciclos de procesador en los que está activo el
contador 47 de ciclos de la base de tiempos (lo cual evitará que se
carguen a los hilos activos operaciones especiales en las que la
base de tiempos está inactiva). El contador de ciclos 47 de la base
de tiempos restablece los cerrojos 43A y 43B después del incremento.
La acción anteriormente descrita proporciona cuentas a las salidas
de los contadores de uso de los hilos 41A y 41B que son fracciones
del contador de la base de tiempos para el procesador y pueden ser
usadas directamente para calcular el uso relativo de recursos por
hilo en un valor de "tiempo de uso".
De acuerdo con realizaciones alternativas de la
invención, se puede usar otros estados particulares de ciclo por la
lógica de control 11 y la ISU 12 (u otra unidad de ejecución dentro
del núcleo 10 de procesador) para disparar una actualización del
contador de semiciclos 42A y/o 42B en cada ciclo, pero se escoge la
instrucción de disparo en la ilustración a título de ejemplo de la
invención, puesto que el despacho de la instrucción proporciona un
mecanismo para medir el comienzo de cada actividad de procesamiento
que usa el núcleo 10 de procesador, en vez del avance o terminación
de tales actividades, los cuales dependen de la eficiencia de
código. Por ejemplo, un programa codificado de manera ineficiente
puede generar muchas predicciones de derivación incorrectas y las
consiguientes precapturas y salidas espontáneas, que usan recursos
críticos de procesador mientras se generan pocas terminaciones. Por
tanto el uso de terminaciones de instrucción en vez de despachos de
instrucción podría generar una medición más baja del tiempo de uso
de procesador porque el hilo ejecuta un código ineficiente. Por
tanto, el uso del despacho de instrucción como el evento
desencadenante concreto para actualizar los contadores de
semiciclos 41A y 41B proporciona una estimación del uso de recursos
de procesador que no "recompensa" un código ineficiente.
Aunque los modelos de contabilización anteriores
hayan sido capaces de asignar esencialmente todo el tiempo de
núcleo 10 de procesador a un hilo concreto, debido a la falta de
ejecución simultánea de hilos en un procesador dado, en un
procesador SMT, la "facturación" del uso de tiempo de
procesador en base a hilos debe ser distribuida entre los dos o más
hilos que pueden estar ejecutándose simultáneamente dentro del
núcleo 10 de procesador. Cuando la ISU 12 no está despachando
instrucciones para cualquier hilo que esté usando el núcleo 10 de
procesador, todavía es necesario contabilizar el uso del núcleo 10
de procesador por todos los hilos. Puede que los hilos no comiencen
un nuevo trabajo en la forma de instrucciones despachadas, sino que
estén todavía conectándose al núcleo 10 de procesador o pueden
estar activos en fases de la ejecución distintas del despacho de
instrucciones. Por ejemplo, un hilo puede estar causando largas
secuencias de precaptura y otro hilo puede estar realizando una
larga operación de punto flotante. Se está usando los recursos de
procesador y las unidades de ejecución enteramente por ambos hilos,
aunque sólo un pequeño número de terminaciones de instrucción
estaría asociado con los intervalos de procesamiento según el
ejemplo anterior. Otro estado concreto de instrucción indica que
preferibles a las terminaciones son las capturas, que
proporcionarían unas cuentas de uso más desviadas hacia el uso de
la IFU 16 y de la memoria L1 Icaché 20, en vez del uso de las
unidades de ejecución que incluyen la FXU 14, la FPU 15 y sus
recursos asociados.
Por tanto, la realización descrita aquí a título
de ejemplo proporciona un mecanismo para contabilizar todos los
ciclos de núcleo 10 de procesador en base a una estimación de la
unidad de ejecución y al uso de recursos, aun cuando no ocurra
despacho en un ciclo dado (o en las realizaciones alternativas,
otros estados concretos de ciclo o usos de recursos detectados por
la lógica de control 11). En los ciclos en los que no se produce
ningún despacho de instrucciones para ningún hilo, el ciclo se
contabiliza según una división en partes iguales del valor del
ciclo para cada hilo que se ejecuta dentro del núcleo 10 del
procesador (incluyendo los hilos ociosos que no hayan sido
descargados del núcleo 10 de procesador y que todavía están atando
recursos del procesador). Pero, en una realización alternativa o
comportamiento que se puede seleccionar de la lógica de control 11,
la lógica de control 11 puede recordar el último estado de despacho
y puede usarlo en su lugar para actualizar el contador de
semiciclos 42A y/o 42B. Otra alternativa es que la lógica de control
use las prioridades relativas de los hilos establecidas en el
núcleo 10 de procesador para dividir de manera transaccional el
valor de ciclo de reloj usado para actualizar el contador de
semiciclos 42A y/o 42B. a fin de asignar adecuadamente un ciclo en
el cual no se produce despacho alguno para ningún hilo.
De manera similar, cuando se despachan
instrucciones en un ciclo dado para más de un hilo, se contabiliza
el ciclo por división en partes iguales del valor del ciclo para
cada hilo para el cual se haya despachado instrucciones. O,
nuevamente, la lógica de control 11 puede usar las prioridades
relativas de hilo establecidas en el núcleo 10 de procesador para
dividir fraccionalmente el valor de ciclo de reloj usado para
actualizar el contador de semiciclos 42A y/o 42B a fin de asignar
adecuadamente un ciclo en el cual se producen despachos para todos
los hilos.
Por tanto, en la metodología de la división en
partes iguales (y no la prioridad o el esquema de ciclo precedente
recogido como alternativas anteriormente), en un núcleo de
procesador que da soporte a la ejecución de uno o dos hilos, se
contabiliza un valor de un medio a cada hilo para los ciclos en los
cuales no se produce despacho de instrucciones alguno o en los
ciclos en los cuales se produce un despacho de instrucciones para
cada hilo. En los ciclos en los cuales se produce un despacho de
instrucciones para uno solo de los hilos, se factura al hilo para
el cual tuvo lugar el despacho de instrucciones la totalidad del
ciclo. La lógica de control 11 detecta uno de cuatro estados
potenciales: ninguno de los hilos despacha, despacha el hilo 0,
despacha el hilo 1 o despachan ambos hilos, y actualiza el contador
de semiciclos 42A del hilo 0 y el contador de semiciclos 42B del
hilo 1 en conformidad con la distribución de facturación de ciclos
anteriormente descrita.
Puesto que el valor de distribución más bajo
anteriormente descrito corresponde a una asignación de incrementos
de semiciclo, se actualiza los contadores de semiciclos 42A y 42B
con un incremento (o decremento) de 1 para la asignación del
semiciclo o de 2 para la del ciclo entero. En la práctica, cada uno
de los contadores de uso 41A y 41B de hilo son actualizados en un
octavo de la posible velocidad de despacho de instrucciones para el
área de chip, razones de potencia y sincronización (o debido a la
velocidad del contador 47 de ciclos de la base tiempo que se
escogió como 1/8 del tiempo de ciclo del procesador por las mismas
razones), de manera que los contadores de semiciclos de 4 bits 42A
y 42B que no forman parte de los contadores de uso de hilo "de la
arquitectura" proporcionan una cuenta de uso efectivo de 8 ciclos
por rebosamiento (puesto que se asignará un valor de dos al
incremento total de los contadores de semiciclos 42A y 42B). Los
contadores de semiciclos 42A y 42B rebosan en la parte de los
contadores de uso de hilo 41A y 41B que son leídos por la unidad de
punto fijo 14 cuando una rutina de contabilidad (programa) recupera
la información de uso de tiempo de ciclo de procesador. Los
contadores de semiciclos 42A y 42B se realizan como sumadores que
suman dos subcuentas para una asignación de ciclo completo o una
subcuenta para una asignación de un semiciclo.
En una realización alternativa de la presente
invención, la unidad 40 de uso de tiempo de ciclo del procesador
usa una suma para incrementar (o una resta para disminuir) los
contadores 41A y 41B de uso de hilo. El valor sumado es determinado
por el circuito de detección de despacho 44 que detecta que se están
haciendo despachos múltiples para un hilo dado, y el subcontador
asociado es incrementado en (recibe la suma de) un valor
proporcional a la relación del número de instrucciones despachadas
para el hilo respecto al número de instrucciones despachadas para
todos los hilos correspondientes al ciclo. Por ejemplo, cuando el
núcleo 10 de procesador está ejecutando dos hilos y en un ciclo
dado se despachan 3 instrucciones para el primer hilo y se despacha
una instrucción para el segundo hilo, se asigna un valor de ¾ al
contador de uso de hilo correspondiente al primer hilo y se asigna
¼ al contador de uso de hilo correspondiente al segundo hilo. Si no
se realiza despacho alguno en un ciclo dado, se asigna todavía el
ciclo a partes iguales entre los hilos.
Haciendo referencia a la Figura 4, se representa
un método de acuerdo con una realización de la presente invención
en un diagrama de flujo. El método representado es para contabilizar
dentro de un procesador SMT que tiene una unidad de modo SMT y ST y
es capaz de ejecutar simultáneamente múltiples hilos en modo SMT. Si
el procesador se encuentra en el modo ST (decisión 50), el contador
de ciclos de hilo para el hilo que se ejecuta es actualizado en un
valor de 1 ciclo cada ciclo (etapa 51). Si el procesador se
encuentra en el modo SMT (decisión 50) si sólo está despachando un
hilo (decisión 52), el contador de ciclo de hilo asociado es
actualizado en un valor de 1 ciclo (etapa 53). Si todos los hilos
están despachando (decisión 54), se actualizan por igual los
contadores de ciclos de hilo para todos los hilos según una
fracción de ciclo determinada por el número de hilos o según el
número de despachos emitidos (o de recursos usados) para cada hilo
(etapa 55). Si no hay hilos que estén despachando, se puede
actualizar los contadores de ciclos de hilo por igual, o en
proporción al último muestreo de despachos, o en proporción a su
prioridad (etapa 57). Finalmente, si no hay hilos despachando, se
puede actualizar los contadores de ciclos de hilo análogamente por
igual, o en proporción al último muestreo de despachos, o en
proporción a su prioridad (etapa 58).
Aunque se ha mostrado particularmente la
invención y se ha descrito haciendo referencia a la realización
preferida de la misma, se entenderá por los expertos en la técnica
que se puede hacer en la misma los cambios de forma y detalles
antes indicados y otros.
Claims (8)
1. Un método para contabilizar el tiempo de uso
de un procesador que da soporte a la ejecución concurrente de una
pluralidad de hilos de hardware y que tiene una pluralidad de
recursos usados por dicha pluralidad de hilos de hardware,
comprendiendo el método:
en cada ciclo de reloj de procesador, determinar
el uso relativo de recursos en base a si cada hilo de hardware está
o no en un estado particular de ciclo de procesador; y
en respuesta a dicha determinación, actualizar
una pluralidad de cuentas de uso de recursos de procesador, cada
una de ellas asociada a un hilo particular de los hilos de hardware
en conformidad con dicho uso relativo de recursos,
caracterizado porque dicha actualización se realiza por igual
en cada una de dicha pluralidad de dichas cuentas de uso de
recursos de procesador en respuesta a la determinación de que
ninguno de dicha pluralidad de hilos de hardware se encuentra en
dicho estado particular de ciclo.
2. El método de la reivindicación 1, en el que
dicho estado particular de ciclo es un estado que indica el despacho
de una instrucción para un hilo de hardware.
3. El método de cualquiera de las
reivindicaciones 1 ó 2, en el que en respuesta a dicha determinación
que establece que uno o varios de dicha pluralidad de hilos de
hardware están en dicho estado particular de ciclo, dicha
actualización se realiza por igual en cada una de dicha pluralidad
de cuentas de uso de recursos de procesador asociadas a dicho uno o
varios hilos de hardware.
4. El método de cualquiera de las
reivindicaciones 1 a 3, en el que dicha actualización se realiza
fraccionalmente en cada uno de dicha pluralidad de dichas cuentas
de uso de recursos de procesador en conformidad con un número
determinado de recursos usados por dicho hilo de hardware asociado
desde un intervalo anterior de dichos intervalos periódicos, en
respuesta a que dicha determinación establezca adicionalmente que
ninguno de dicha pluralidad de hilos de hardware está en dicho
estado particular de ciclo.
5. El método de cualquiera de las
reivindicaciones 1 a 4, en el que dicha actualización se realiza
fraccionalmente en cada en cada uno de dicha pluralidad de dichas
cuentas de uso de recursos de procesador en conformidad con un nivel
de prioridad de dicho hilo de hardware asociado, en respuesta a que
dicha determinación de que ninguno de dicha pluralidad de hilos de
hardware está en dicho estado particular de ciclo.
6. El método de cualquiera de las
reivindicaciones 1 a 5, en el que dicho procesador tiene un modo de
funcionamiento de hilo único y un modo de funcionamiento multihilo y
además comprende:
determinar si dicho procesador está en dicho
modo de funcionamiento de hilo único; y
en respuesta a determinar que dicho procesador
está en dicho modo de funcionamiento de hilo único, realizar dicha
actualización de tal manera que se atribuya cada ciclo de procesador
a un hilo único que ejecuta dentro de dicho procesador.
7. Un procesador que da soporte a la ejecución
concurrente de una pluralidad de hilos de hardware, comprendiendo
dicho procesador:
una pluralidad de recursos usada por dicha
pluralidad de hilos de hardware;
una unidad de control de instrucciones acoplada
a dicha pluralidad de recursos, donde dicha unidad de control de
instrucciones controla un número de recursos usados por dicho
procesador cada ciclo de reloj de procesador;
una pluralidad de contadores de ciclo de uso de
recursos de procesador, cada uno de ellos asociado a un hilo
concreto de dicha pluralidad de hilos de hardware, y
un circuito lógico acoplado a dicha unidad de
control de instrucciones y dichos contadores de ciclos de uso de
recursos de procesador, en el que dicho circuito lógico actualiza
cada uno de dichos contadores de ciclos de uso de recursos de
procesador en conformidad con una determinación del uso relativo por
dicho hilo de hardware asociado, y donde dicho circuito lógico
determina si un hilo de hardware concreto está o no en un estado
particular de ciclo y caracterizado porque dicha lógica de
control actualiza por igual cada uno de dichas cuentas de uso de
recursos de procesador en respuesta a la determinación de que ningún
hilo de dicha pluralidad de hilos está en dicho estado particular
de ciclo.
8. El procesador de la reivindicación 7, en el
que dicha lógica de control determina además un número de recursos
para los cuales cada hilo de hardware está en un estado particular
de ciclo.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US422025 | 2003-04-23 | ||
| US10/422,025 US7657893B2 (en) | 2003-04-23 | 2003-04-23 | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2286630T3 true ES2286630T3 (es) | 2007-12-01 |
Family
ID=33298778
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES04727310T Expired - Lifetime ES2286630T3 (es) | 2003-04-23 | 2004-04-14 | Metodo y logica de contabilidd para determinar la utilizacion de recursos de procesador para cada hilo en un procesador de multihilo o simultaneo (smt). |
Country Status (14)
| Country | Link |
|---|---|
| US (3) | US7657893B2 (es) |
| EP (1) | EP1616259B1 (es) |
| JP (1) | JP4536717B2 (es) |
| KR (1) | KR100754153B1 (es) |
| CN (1) | CN100458727C (es) |
| AT (1) | ATE364204T1 (es) |
| BR (1) | BRPI0409710B1 (es) |
| CA (1) | CA2518468C (es) |
| DE (1) | DE602004006858T2 (es) |
| ES (1) | ES2286630T3 (es) |
| IL (1) | IL171706A (es) |
| MX (1) | MXPA05011307A (es) |
| TW (1) | TWI291131B (es) |
| WO (1) | WO2004095282A1 (es) |
Families Citing this family (74)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AP1224A (en) | 1998-03-19 | 2003-11-14 | Bristol Myers Squibb Co | Biphasic controlled release delivery system for high solubility pharmaceuticals and method. |
| US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
| US7197652B2 (en) * | 2003-12-22 | 2007-03-27 | International Business Machines Corporation | Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring |
| US9323571B2 (en) * | 2004-02-06 | 2016-04-26 | Intel Corporation | Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor |
| US7555753B2 (en) * | 2004-02-26 | 2009-06-30 | International Business Machines Corporation | Measuring processor use in a hardware multithreading processor environment |
| US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
| US7603673B2 (en) * | 2004-10-28 | 2009-10-13 | Intel Corporation | Method and system for reducing context switch times |
| US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
| CA2538503C (en) * | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
| US8245230B2 (en) * | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
| US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
| US20060212853A1 (en) * | 2005-03-18 | 2006-09-21 | Marvell World Trade Ltd. | Real-time control apparatus having a multi-thread processor |
| US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
| JP4276201B2 (ja) * | 2005-03-31 | 2009-06-10 | 富士通株式会社 | Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム |
| US8713286B2 (en) | 2005-04-26 | 2014-04-29 | Qualcomm Incorporated | Register files for a digital signal processor operating in an interleaved multi-threaded environment |
| US7313673B2 (en) * | 2005-06-16 | 2007-12-25 | International Business Machines Corporation | Fine grained multi-thread dispatch block mechanism |
| US7945625B2 (en) * | 2005-07-12 | 2011-05-17 | Microsoft Corporation | Automated moderation of discussion lists |
| US7937706B2 (en) * | 2005-08-22 | 2011-05-03 | Runtime Design Automation, Inc. | Method and system for performing fair-share preemption |
| DE102005054848A1 (de) * | 2005-11-15 | 2007-05-24 | Alexander Mekyska | Verfahren zur Verrechnung von Systemkosten |
| US7610293B2 (en) * | 2006-10-11 | 2009-10-27 | Oracle International Corporation | Correlation of resource usage in a database tier to software instructions executing in other tiers of a multi tier application |
| US7634561B2 (en) * | 2006-10-26 | 2009-12-15 | International Business Machines Corporation | Application usage metering management system |
| US7340378B1 (en) | 2006-11-30 | 2008-03-04 | International Business Machines Corporation | Weighted event counting system and method for processor performance measurements |
| US8140885B2 (en) * | 2007-02-14 | 2012-03-20 | International Business Machines Corporation | Accounting for microprocessor resource consumption |
| US8621468B2 (en) * | 2007-04-26 | 2013-12-31 | Microsoft Corporation | Multi core optimizations on a binary using static and run time analysis |
| US7908493B2 (en) * | 2007-06-06 | 2011-03-15 | International Business Machines Corporation | Unified management of power, performance, and thermals in computer systems |
| KR101077514B1 (ko) | 2007-06-19 | 2011-10-28 | 후지쯔 가부시끼가이샤 | 캐시 제어장치 및 제어방법 |
| EP2159685B1 (en) * | 2007-06-20 | 2013-08-21 | Fujitsu Limited | Processor |
| EP2159687B1 (en) | 2007-06-20 | 2012-12-05 | Fujitsu Limited | Arithmetic unit |
| JP5043560B2 (ja) * | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
| US8122449B2 (en) * | 2007-09-07 | 2012-02-21 | International Business Machines Corporation | Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel |
| US7559061B1 (en) * | 2008-03-16 | 2009-07-07 | International Business Machines Corporation | Simultaneous multi-threading control monitor |
| US9106592B1 (en) * | 2008-05-18 | 2015-08-11 | Western Digital Technologies, Inc. | Controller and method for controlling a buffered data transfer device |
| JP5326374B2 (ja) * | 2008-06-19 | 2013-10-30 | 富士通セミコンダクター株式会社 | プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 |
| US8161493B2 (en) | 2008-07-15 | 2012-04-17 | International Business Machines Corporation | Weighted-region cycle accounting for multi-threaded processor cores |
| US8285973B2 (en) | 2008-08-04 | 2012-10-09 | International Business Machines Corporation | Thread completion rate controlled scheduling |
| US8055477B2 (en) * | 2008-11-20 | 2011-11-08 | International Business Machines Corporation | Identifying deterministic performance boost capability of a computer system |
| KR101543326B1 (ko) * | 2009-01-05 | 2015-08-10 | 삼성전자주식회사 | 시스템 온 칩 및 그 구동 방법 |
| US8230440B2 (en) * | 2009-03-06 | 2012-07-24 | International Business Machines Corporation | System and method to distribute accumulated processor utilization charges among multiple threads |
| JP5463076B2 (ja) * | 2009-05-28 | 2014-04-09 | パナソニック株式会社 | マルチスレッドプロセッサ |
| US8527796B2 (en) * | 2009-08-24 | 2013-09-03 | Intel Corporation | Providing adaptive frequency control for a processor using utilization information |
| US9672132B2 (en) * | 2009-11-19 | 2017-06-06 | Qualcomm Incorporated | Methods and apparatus for measuring performance of a multi-thread processor |
| US8453146B2 (en) * | 2009-12-23 | 2013-05-28 | Intel Corporation | Apportioning a counted value to a task executed on a multi-core processor |
| FR2957433B1 (fr) * | 2010-03-11 | 2016-01-15 | Bull Sas | Procede de configuration d'un systeme informatique, programme d'ordinateur et systeme informatique correspondants |
| US10169187B2 (en) | 2010-08-18 | 2019-01-01 | International Business Machines Corporation | Processor core having a saturating event counter for making performance measurements |
| US20120079500A1 (en) * | 2010-09-29 | 2012-03-29 | International Business Machines Corporation | Processor usage accounting using work-rate measurements |
| US8719561B2 (en) | 2010-11-29 | 2014-05-06 | International Business Machines Corporation | Automatic configuration sampling for managing configuration parameters of a computer system |
| JP5542700B2 (ja) | 2011-01-05 | 2014-07-09 | 株式会社日立製作所 | Smtプロセッサにおけるプロセッサ使用率の算出方法 |
| US8868886B2 (en) | 2011-04-04 | 2014-10-21 | International Business Machines Corporation | Task switch immunized performance monitoring |
| US9342432B2 (en) | 2011-04-04 | 2016-05-17 | International Business Machines Corporation | Hardware performance-monitoring facility usage after context swaps |
| GB2489708B (en) * | 2011-04-05 | 2020-04-15 | Advanced Risc Mach Ltd | Thread selection for multithreaded processing |
| CN102955716B (zh) * | 2011-08-19 | 2016-05-18 | 苏州简约纳电子有限公司 | 一种多线程处理器和处理方法 |
| US20130055033A1 (en) | 2011-08-22 | 2013-02-28 | International Business Machines Corporation | Hardware-assisted program trace collection with selectable call-signature capture |
| US9027141B2 (en) * | 2012-04-12 | 2015-05-05 | Netflix, Inc. | Method and system for improving security and reliability in a networked application environment |
| US9021493B2 (en) | 2012-09-14 | 2015-04-28 | International Business Machines Corporation | Management of resources within a computing environment |
| US9207944B1 (en) | 2013-03-15 | 2015-12-08 | Google Inc. | Doubling thread resources in a processor |
| JP6142709B2 (ja) * | 2013-07-23 | 2017-06-07 | 富士通株式会社 | 計測方法、計測プログラム、携帯情報端末、及びその制御方法 |
| US9535746B2 (en) | 2013-12-19 | 2017-01-03 | International Business Machines Corporation | Honoring hardware entitlement of a hardware thread |
| US9760465B2 (en) | 2014-01-02 | 2017-09-12 | International Business Machines Corporation | Assessment of processor performance metrics by monitoring probes constructed using instruction sequences |
| US10102004B2 (en) * | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
| US9594660B2 (en) * | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
| US9804846B2 (en) * | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
| CN106250238A (zh) * | 2016-07-27 | 2016-12-21 | 李媛媛 | 负载均衡在多核芯片中的应用方法及系统 |
| CN106250237A (zh) * | 2016-07-27 | 2016-12-21 | 李媛媛 | 电子芯片中的功率分配方法及系统 |
| CN108628639B (zh) | 2017-03-21 | 2021-02-12 | 华为技术有限公司 | 处理器和指令调度方法 |
| CN109308220B (zh) * | 2017-07-26 | 2021-12-14 | 华为技术有限公司 | 共享资源分配方法及装置 |
| US10558497B2 (en) | 2017-08-28 | 2020-02-11 | International Business Machines Corporation | Prevention and resolution of a critical shortage of a shared resource in a multi-image operating system environment |
| US10558499B2 (en) | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
| CN108196882A (zh) * | 2017-12-29 | 2018-06-22 | 普强信息技术(北京)有限公司 | 一种针对神经网络计算的加速方法及装置 |
| CN108986253B (zh) * | 2018-06-29 | 2022-08-30 | 百度在线网络技术(北京)有限公司 | 用于多线程并行处理的存储数据方法和装置 |
| US10977075B2 (en) * | 2019-04-10 | 2021-04-13 | Mentor Graphics Corporation | Performance profiling for a multithreaded processor |
| US11436043B2 (en) | 2019-11-13 | 2022-09-06 | International Business Machines Corporation | Operating system code patching during live migration |
| CN112316419B (zh) * | 2020-11-03 | 2022-06-28 | 腾讯科技(深圳)有限公司 | 应用程序的运行方法、装置、设备及可读存储介质 |
| CN112579299B (zh) * | 2020-12-28 | 2022-11-18 | 北京紫光展锐通信技术有限公司 | 资源调度方法、电子设备及存储介质 |
| FR3131644B1 (fr) * | 2021-12-30 | 2024-09-06 | Thales Sa | Système et procédé de surveillance du fonctionnement d'un calculateur |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS56153457A (en) * | 1980-04-28 | 1981-11-27 | Mitsubishi Electric Corp | Measuring device for computer load |
| JP3169597B2 (ja) * | 1990-05-16 | 2001-05-28 | エヌイーシーソフト株式会社 | マルチタスク実行時間アカウント方法とその機構 |
| US5210872A (en) * | 1991-06-28 | 1993-05-11 | Texas Instruments Inc. | Critical task scheduling for real-time systems |
| US5247675A (en) * | 1991-08-09 | 1993-09-21 | International Business Machines Corporation | Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system |
| JP2682770B2 (ja) * | 1992-05-15 | 1997-11-26 | 富士通株式会社 | 仮想計算機システムのcpu制御方式 |
| US5809268A (en) * | 1995-06-29 | 1998-09-15 | International Business Machines Corporation | Method and system for tracking resource allocation within a processor |
| US5838976A (en) * | 1995-11-28 | 1998-11-17 | Hewlett-Packard Co. | System and method for profiling code on symmetric multiprocessor architectures |
| US5812844A (en) * | 1995-12-07 | 1998-09-22 | Microsoft Corporation | Method and system for scheduling the execution of threads using optional time-specific scheduling constraints |
| US5822602A (en) * | 1996-07-23 | 1998-10-13 | S3 Incorporated | Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity |
| US5761091A (en) * | 1996-12-10 | 1998-06-02 | Bgs Systems, Inc. | Method and system for reducing the errors in the measurements of resource usage in computer system processes and analyzing process data with subsystem data |
| US5835705A (en) * | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
| US5784616A (en) * | 1997-05-02 | 1998-07-21 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation |
| US6658447B2 (en) * | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
| US6487578B2 (en) * | 1997-09-29 | 2002-11-26 | Intel Corporation | Dynamic feedback costing to enable adaptive control of resource utilization |
| US6549930B1 (en) * | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
| US6175814B1 (en) * | 1997-11-26 | 2001-01-16 | Compaq Computer Corporation | Apparatus for determining the instantaneous average number of instructions processed |
| US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
| US6205519B1 (en) * | 1998-05-27 | 2001-03-20 | Hewlett Packard Company | Cache management for a multi-threaded processor |
| US7216348B1 (en) * | 1999-01-05 | 2007-05-08 | Net2Phone, Inc. | Method and apparatus for dynamically balancing call flow workloads in a telecommunications system |
| IL144294A0 (en) * | 1999-01-29 | 2002-05-23 | Univ Illinois | P53 inhibitors and therapeutic use of the same |
| US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
| US7028298B1 (en) * | 1999-09-10 | 2006-04-11 | Sun Microsystems, Inc. | Apparatus and methods for managing resource usage |
| US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
| WO2001055917A1 (en) * | 2000-01-27 | 2001-08-02 | Morphics Technology Inc. | Improved apparatus and method for multi-threaded signal processing |
| US20020194251A1 (en) * | 2000-03-03 | 2002-12-19 | Richter Roger K. | Systems and methods for resource usage accounting in information management environments |
| US6957432B2 (en) * | 2000-03-21 | 2005-10-18 | Microsoft Corporation | Real-time scheduler |
| US7086053B2 (en) * | 2000-06-12 | 2006-08-01 | Sun Microsystems, Inc. | Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension |
| JP3884237B2 (ja) * | 2001-02-16 | 2007-02-21 | 株式会社リコー | マルチスレッドのプロファイル方法、プロファイル装置及びコンピュータ・プログラム |
| US7114163B2 (en) * | 2001-03-07 | 2006-09-26 | Hardin David S | Software component model for time sensitive embedded applications |
| US7036123B2 (en) * | 2001-04-25 | 2006-04-25 | Sun Microsystems, Inc. | System using fair-share scheduling technique to schedule processes within each processor set based on the number of shares assigned to each process group |
| US7454600B2 (en) * | 2001-06-22 | 2008-11-18 | Intel Corporation | Method and apparatus for assigning thread priority in a processor or the like |
| US6965982B2 (en) * | 2001-06-29 | 2005-11-15 | International Business Machines Corporation | Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread |
| US6954846B2 (en) * | 2001-08-07 | 2005-10-11 | Sun Microsystems, Inc. | Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode |
| NZ534314A (en) * | 2002-01-30 | 2005-04-29 | Real Entpr Solutions Dev B | Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor |
| US7024543B2 (en) * | 2002-09-13 | 2006-04-04 | Arm Limited | Synchronising pipelines in a data processing apparatus |
| US7657893B2 (en) * | 2003-04-23 | 2010-02-02 | International Business Machines Corporation | Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor |
-
2003
- 2003-04-23 US US10/422,025 patent/US7657893B2/en not_active Expired - Fee Related
-
2004
- 2004-04-01 TW TW093109113A patent/TWI291131B/zh not_active IP Right Cessation
- 2004-04-14 MX MXPA05011307A patent/MXPA05011307A/es active IP Right Grant
- 2004-04-14 JP JP2006506116A patent/JP4536717B2/ja not_active Expired - Fee Related
- 2004-04-14 AT AT04727310T patent/ATE364204T1/de not_active IP Right Cessation
- 2004-04-14 DE DE602004006858T patent/DE602004006858T2/de not_active Expired - Lifetime
- 2004-04-14 CN CNB2004800016428A patent/CN100458727C/zh not_active Expired - Lifetime
- 2004-04-14 WO PCT/GB2004/001586 patent/WO2004095282A1/en not_active Ceased
- 2004-04-14 ES ES04727310T patent/ES2286630T3/es not_active Expired - Lifetime
- 2004-04-14 BR BRPI0409710A patent/BRPI0409710B1/pt active IP Right Grant
- 2004-04-14 EP EP04727310A patent/EP1616259B1/en not_active Expired - Lifetime
- 2004-04-14 KR KR1020057017727A patent/KR100754153B1/ko not_active Expired - Fee Related
- 2004-04-14 CA CA002518468A patent/CA2518468C/en not_active Expired - Fee Related
-
2005
- 2005-11-01 IL IL171706A patent/IL171706A/en not_active IP Right Cessation
-
2009
- 2009-10-15 US US12/579,540 patent/US8209698B2/en not_active Expired - Fee Related
-
2012
- 2012-04-30 US US13/459,398 patent/US9003417B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP4536717B2 (ja) | 2010-09-01 |
| DE602004006858D1 (de) | 2007-07-19 |
| MXPA05011307A (es) | 2006-01-30 |
| KR20060002842A (ko) | 2006-01-09 |
| CA2518468A1 (en) | 2004-11-04 |
| BRPI0409710A (pt) | 2006-05-02 |
| US7657893B2 (en) | 2010-02-02 |
| CN100458727C (zh) | 2009-02-04 |
| EP1616259B1 (en) | 2007-06-06 |
| ATE364204T1 (de) | 2007-06-15 |
| IL171706A (en) | 2011-03-31 |
| US20120216210A1 (en) | 2012-08-23 |
| TW200504596A (en) | 2005-02-01 |
| US20040216113A1 (en) | 2004-10-28 |
| US9003417B2 (en) | 2015-04-07 |
| CA2518468C (en) | 2008-09-30 |
| BRPI0409710B1 (pt) | 2020-01-14 |
| US20100037233A1 (en) | 2010-02-11 |
| KR100754153B1 (ko) | 2007-09-03 |
| TWI291131B (en) | 2007-12-11 |
| CN1985242A (zh) | 2007-06-20 |
| US8209698B2 (en) | 2012-06-26 |
| WO2004095282A1 (en) | 2004-11-04 |
| DE602004006858T2 (de) | 2008-02-14 |
| EP1616259A1 (en) | 2006-01-18 |
| JP2006524380A (ja) | 2006-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2286630T3 (es) | Metodo y logica de contabilidd para determinar la utilizacion de recursos de procesador para cada hilo en un procesador de multihilo o simultaneo (smt). | |
| Radojković et al. | On the evaluation of the impact of shared resources in multithreaded COTS processors in time-critical environments | |
| US8161493B2 (en) | Weighted-region cycle accounting for multi-threaded processor cores | |
| JP5186178B2 (ja) | プロセッサ性能計測のための重み付けされたイベント計数方法、プロセッサ、および重み付け性能カウンタ回路(プロセッサ性能計測のための重み付けされたイベント計数システムおよび方法) | |
| US9336055B2 (en) | Apparatus and method for predicting processing performance | |
| JP2004054932A (ja) | ハードウェアベースの使用量計測装置 | |
| KR100992209B1 (ko) | 데이터 처리 시스템 상에서 소프트웨어 제품의 사용량을 측정하는 방법 | |
| US20050154861A1 (en) | Method and data processing system having dynamic profile-directed feedback at runtime | |
| Eyerman et al. | Per-thread cycle accounting in SMT processors | |
| CN106104487A (zh) | 跟踪多线程计算机系统中的利用率的硬件计数器 | |
| US6530042B1 (en) | Method and apparatus for monitoring the performance of internal queues in a microprocessor | |
| TW448409B (en) | Methodology for emulation of multi-threaded processes in a single-threaded operating system | |
| CN1403912A (zh) | 在实时系统中测量中央处理器任务占用率的方法和装置 | |
| CN105843731B (zh) | 计算机系统及通过计算机系统执行的性能监控方法 | |
| JPH11288435A (ja) | 人材割当支援システム | |
| ES2389894T3 (es) | Equipo de extracción de tiempo de CPU | |
| US8296552B2 (en) | Dynamically migrating channels | |
| JP2003271401A (ja) | 負荷監視機能を有するマイクロプロセッサ | |
| KR101266421B1 (ko) | 클라우드 시스템에서 가상 머신의 에너지 기반 과금 및 스케줄링 장치 및 방법 | |
| TW201140449A (en) | Apportioning a counted value to a task executed on a multi-core processor | |
| US20250130836A1 (en) | Mechanism for fine-grained device power attribution to software entities | |
| Kalla et al. | Probabilistic Monte Carlo simulations for static branch prediction | |
| Shivam et al. | Model-driven placement of compute tasks and data in a networked utility | |
| Snavely | Symbiotic jobscheduling on hardware multithreaded architectures |