ES2677709T3 - Habilitación dinámica del multihilo - Google Patents

Habilitación dinámica del multihilo Download PDF

Info

Publication number
ES2677709T3
ES2677709T3 ES15711725.0T ES15711725T ES2677709T3 ES 2677709 T3 ES2677709 T3 ES 2677709T3 ES 15711725 T ES15711725 T ES 15711725T ES 2677709 T3 ES2677709 T3 ES 2677709T3
Authority
ES
Spain
Prior art keywords
mode
thread
configuration
threads
instruction
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
ES15711725.0T
Other languages
English (en)
Inventor
Dan Greiner
Mark Farrell
Damian Leo Osisek
Donald William Schmidt
Fadi Yusuf Busaba
Jeffrey Paul KUBALA
Jonathan David BRADBURY
Lisa Cranton HELLER
Timothy Slegel
Christian Jacobi
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2677709T3 publication Critical patent/ES2677709T3/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

Un sistema informático que comprende: una configuración (102) que comprende un núcleo configurable entre un modo de hilo único (ST) y un modo de multihilo (MT), el modo ST abarca un hilo principal y el modo MT abarca el hilo principal y uno o más hilos secundarios en los recursos compartidos del núcleo; y una facilidad (103) de multihilo configurada para controlar la utilización de la configuración en donde la facilidad de multihilo se adapta para ejecutar en el hilo principal en el modo ST, una instrucción de configuración del modo MT; obtener un número de hilos solicitados desde una ubicación especificada por la instrucción de configuración del modo MT, en donde la instrucción de configuración del modo MT es una instrucción del procesador de señal (SIGP) de un sistema operativo, comprendiendo la instrucción SIGP una orden de configuración MT y una id de hilo máximo especificado por programa (PSMTID) que configura un número de bits para la identificación del hilo asociada con el número de hilos solicitados; habilitar el modo MT para ejecutar los múltiples hilos comprendiendo el hilo principal y el uno o más hilos secundarios en base a determinar que el número de hilos solicitados indica múltiples hilos y ejecutar la orden de configuración de MT con un valor distinto de cero del PSMTID; y mantenerse en el modo ST y evitar la habilitación del modo MT en base a la ejecución de la orden de configuración de MT con un valor cero del PSMTID.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Habilitacion dinamica del multihilo Antecedentes
La presente invencion se relaciona de manera general con un sistema informatico que soporta multiples hilos, y mas espedficamente, a la habilitacion dinamica del multihilo en un sistema informatico.
Segun ha aumentado la velocidad de los sistemas informaticos en las pasadas decadas, no ha existido un aumento proporcional de la velocidad a la que la memoria se puede acceder en dichos sistemas informaticos. Por tanto, cuanto mas rapido es el tiempo de ciclo del procesador, mas pronunciado es el retardo de espera para que los datos sean recogidos de la memoria. Los efectos de dicho retardo han sido mitigados mediantes diversos niveles de almacenamiento en cache, y en los recientes procesadores, mediante el multihilo (MT).
El MT permite que diversos recursos de nucleo de un procesador sean compartidos por una pluralidad de flujos de instrucciones conocidos como hilos. Los recursos de nucleo pueden incluir las unidades de ejecucion, la caches, las memorias intermedias de traduccion anticipada (TLB) y similares, que generalmente se pueden referir de manera colectiva como un nucleo. Durante la latencia causada por un fallo de cache u otro retardo en un hilo, uno o mas hilos pueden utilizar los recursos del nucleo, aumentando asf la utilizacion de los recursos del nucleo. En una implementacion multihilo simultanea (SMT) de procesador super escalar, los multiples hilos pueden ser servidos de manera simultanea por los recursos del nucleo de uno o mas nucleos.
En las plataformas de hardware contemporaneas, el MT normalmente se implementa de una manera que es transparente a un sistema operativo (OS) que se ejecuta en el hardware de MT. Un aspecto de esta caractenstica es que el OS no requiere modificacion para utilizar el hardware MT. Sin embargo, una operacion MT transparente con respecto al OS puede resultar en una alta variabilidad de los tiempos de respuesta, del aprovisionamiento de la capacidad, de la planificacion de la capacidad, y del orden de importancia. Esta variabilidad puede ocurrir ya que el OS no es consciente de si sus tareas tienen el control exclusivo de un nucleo, o si sus tareas se estan ejecutando como hilos que comparten un nucleo. Mediante el diseno, se logra la mayor capacidad de carga de trabajo intensiva de memoria en un hardware con capacidad MT cuando existe una densidad de hilos media cuando los nucleos estan en uso. Una capacidad adicional se puede deber a la explotacion aumentada de la memoria cache proporcionada por el MT. Si un OS no mantiene de manera consistente una alta densidad media de hilos para utilizar los nucleos, entonces no estara disponible la capacidad de rendimiento total adicional proporcionada por el MT. Por ejemplo, si el hardware ejecuta un hilo MT unico por nucleo cuando hay una baja utilizacion de computacion y ejecuta una alta densidad de hilos cuando hay una alta utilizacion computacional, entonces puede ser muy diffcil determinar cuanta capacidad total de computacion MT hay disponible para la carga de trabajo. Esta variabilidad de hardware en la explotacion de los hilos MT puede llevar a una variabilidad en tanto los tiempos de respuesta de transaccion como en el orden de importancia de una manera similar a como se ha descrito anteriormente con respecto a la capacidad.
La solicitud de patente US2004215939A1 se relaciona con un conmutador dinamico de un procesador multihilo entre los modos de hilo unico y de multihilo simultaneos. Un procesador multihilo tiene al menos un hilo hardware entre una pluralidad de hilos hardware que es capaz de ser activado y desactivado de manera selectiva en respuesta a un circuito de control. El circuito de control proporciona de manera adicional la capacidad de controlar como se puede activar un hilo inactivo despues de que el hilo se haya desactivado, por ejemplo, habilitando o deshabilitando la reactivacion en respuesta a una interrupcion.
La solicitud de patente US2008114973A1 se relaciona con un hardware multihilo dinamico y un hardware multihilo particionado. Se usa una funcion de detencion de hardware o una funcion de rendimiento de hardware en un nucleo del procesador para habilitar o deshabilitar un hilo de hardware que comparte el nucleo, en donde el hilo de hardware esta deshabilitado colocando el hilo de hardware en un estado de detencion o un estado de rendimiento, y habilitando otro hilo de hardware para utilizar el nucleo.
Compendio
Las realizaciones incluyen un sistema, un metodo y un producto de programa informatico para la habilitacion dinamica del multihilo. Segun un aspecto, un sistema informatico incluye una configuracion con un nucleo configurable entre un modo de hilo unico (ST) y un modo de multihilo (MT). El modo ST aborda un hilo principal, y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El sistema informatico incluye tambien una facilidad de multihilo configurada para controlar la configuracion para realizar un metodo. El metodo incluye la ejecucion en el hilo principal en el modo ST, de una instruccion de configuracion del modo MT. El numero de hilos solicitados se obtiene de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, el modo MT esta habilitado para ejecutar los multiples hilos incluyendo el hilo principal y el uno o mas hilos secundarios.
5
10
15
20
25
30
35
40
45
Segun otro aspecto, se proporciona un metodo implementado por ordenador para el establecimiento dinamico del multihilo en una configuracion. La configuracion incluye un nucleo configurable entre un modo ST y un modo Mt, donde el modo ST aborda un hilo principal y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El metodo incluye ejecutar en el hilo principal en el modo ST, una instruccion de configuracion del modo MT. El numero de hilos solicitados es obtenido a partir de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indique multiples hilos, el modo MT se habilita para ejecutar los multiples hilos incluyendo el hilo principal y el uno o mas hilos secundarios.
Un aspecto adicional incluye un producto de programa informatico para implementar la habilitacion dinamica del multihilo en una configuracion. La configuracion incluye un nucleo configurable entre un modo ST y un modo MT, donde el modo ST aborda un hilo principal y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El producto de programa informatico incluye un medio de almacenamiento legible por ordenador que tiene instrucciones de programa incrustadas en este, donde el medio de almacenamiento legible por ordenador no es una senal. Las instrucciones de programa son legibles con un circuito de procesamiento para provocar que el circuito de procesamiento realice un metodo. El metodo incluye la ejecucion en el hilo principal en el modo ST en el nucleo de la configuracion, de una instruccion de configuracion del modo MT. El numero de hilos solicitados se obtiene de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, se habilita el modo MT para ejecutar los multiples hilos incluyendo el hilo principal y uno o mas hilos secundarios.
Breve descripcion de las distintas vistas de los dibujos
La materia que es considerada como las realizaciones se senala y reivindica de manera distintiva en las reivindicaciones en la conclusion de la especificacion. Las caractensticas y ventajas anteriores y otras, de las realizaciones seran evidentes de la siguiente descripcion detallada tomada en conjuncion con los dibujos adjuntos en los que:
La FIG. 1A representa un entorno informatico que se puede implementar de acuerdo con una realizacion;
La FIG. 1B representa un entorno informatico que se puede implementar de acuerdo con una realizacion;
La FIG. 2 representa una circuitena de procesamiento de un nucleo que se puede implementar de acuerdo con una realizacion;
La FIG. 3 representa un entorno informatico que se puede implementar de acuerdo con una realizacion;
La FIG. 4 representa un ejemplo de retencion de contexto de hipervisor en un entorno informatico que se puede implementar de acuerdo con una realizacion;
La FIG. 5 representa un flujo de proceso para la habilitacion dinamica del multihilo de acuerdo con una realizacion;
La FIG. 6A representa un ejemplo de un proceso de expansion de la direccion de la CPU de acuerdo con una realizacion;
La FIG. 6B representa un ejemplo de un proceso de contraccion de la direccion de la CPU de acuerdo con una realizacion;
La FIG. 7 representa un flujo de procesos para una orden de configuracion de multihilo de acuerdo con una realizacion;
La FIG. 8 representa un ejemplo de almacenamiento de la informacion de la capacidad de multihilo de acuerdo con una realizacion;
La FIG. 9 representa un flujo de procesos para determinar la capacidad de multihilo de acuerdo con una realizacion;
La FIG. 10 representa un ejemplo de diversas ubicaciones de contexto de hilos de acuerdo con una realizacion;
La FIG. 11 representa un ejemplo de preservacion del registro de multihilo de acuerdo con una realizacion;
La FIG. 12 representa un flujo de procesos para la preservacion del registro de multihilo de acuerdo con una realizacion;
La FIG. 13 representa un ejemplo de restauracion del registro de multihilo de acuerdo con una realizacion;
La FIG. 14 representa un flujo de procesos para la restauracion del registro de multihilo de acuerdo con una realizacion; y
La FIG. 15 representa un medio legible por ordenador segun una realizacion.
5
10
15
20
25
30
35
40
45
50
55
Descripcion detallada
Las realizaciones ejemplares proporcionan la operacion de multihilo en un sistema informatico que soporte un hilo unico y un modo de operacion de multihilo. Como se usa en la presente memoria, un hilo logico se refiere a un flujo de instrucciones unico y su estado asociado. Esto es, en un nivel de arquitectura, cada hilo logico representa una unidad o procesador de procesamiento central (CPU) independiente En un nivel de hardware, un hilo es la ejecucion de un flujo de instrucciones asociado con un hilo logico, combinado con el mantenimiento de ese estado de invitado, cuando el hilo se despacha. Por lo tanto, los terminos “hilo” y “CPU” se pueden usar de manera intercambiable en la presente memoria.
En una realizacion ejemplar, una CPU contiene las facilidades de secuencia y procesamiento para la ejecucion de la instruccion, la accion de interrupcion, las funciones de temporizacion, la carga inicial del programa, y otras funciones relacionadas con la maquina. Una CPU define las funciones logicas, que pueden hacerse corresponder con una variedad de implementaciones ffsicas subyacentes. La CPU, en las instrucciones en ejecucion, puede procesar los numeros enteros binarios y los numeros en punto flotante (por ejemplo, binarios, decimales, y hexadecimales) de longitud fija, los numeros enteros decimales de longitud variable, y la informacion logica de ya sea la longitud fija o variable. El procesamiento puede ser en paralelo o en serie. La anchura de los elementos de procesamiento, la multiplicidad de las rutas cambiantes, y el grado de simultaneidad en la realizacion de los diferentes tipos de aritmetica puede diferir de un modelo de CPU a otro sin afectar a los resultados logicos.
Las instrucciones que ejecuta la CPU pueden incluir un numero de clases de instrucciones, tales como, generales, decimales, de soporte en punto flotante (FPS), de punto flotante binario (BFP), de punto flotante decimal (DFP), de punto flotante hexadecimal (HFP), de control, y/o instrucciones de I/O. Las instrucciones generales se pueden usar en la realizacion de las operaciones y la logica de aritmetica de numeros enteros binarios, derivacion, y otras operaciones no aritmeticas. Las instrucciones decimales operan sobre los datos en formato decimal, Las instrucciones BFP, DFP, y HFP operan sobre datos de formatos BFP, DFP, y HFP respectivamente, mientras que las instrucciones FPS operan sobre datos de punto flotante independientes del formato o convierte de un formato a otro. Se pueden ejecutar instrucciones de control privilegiadas y de I/O cuando la CPU esta en un estado supervisor, y se pueden ejecutar instrucciones de control semi privilegiadas en un estado problematico, sujetas a los mecanismos de autorizacion apropiados.
La CPU proporciona registros que estan disponibles para los programas pero no tienen representaciones direccionables en el almacenamiento principal. Los registros pueden incluir, por ejemplo, una palabra de estado actual del programa (PSW), registros generales, registros de punto flotante y registros de control del punto flotante, registros de vector, registros de control, registros de acceso, un registro de prefijo, un registro programable de la hora del dfa (TOD), y registros para un comparador de reloj y un temporizador de CPU. Este conjunto de registros puede ser referido para el contexto de registros de la arquitectura de la CPU. Cada CPU en una configuracion puede proporcionar acceso a un reloj TOD, que puede ser compartido por todas las CPU en la configuracion. Un codigo de operacion de instruccion puede determinar que tipo de registro se ha de usar en una operacion.
Cada CPU puede tener un atributo de tipo que indique si proporciona un complemento total de las funciones y facilidades (por ejemplo, una CPU general), o si esta destinada a procesar tipos espedficos de cargas de trabajo (por ejemplo, una CPU especial). Una CPU principal es bien una CPU general o una CPU que tiene el mismo tipo que la CPU que ha empezado a seguir una ultima operacion de la carga de programa inicial (IPL) (la CPU IPL). Una CPU secundaria es cualquier CPU distinta de la CPU general que tiene un tipo de CPU que difiere de la CPU IPL.
Una facilidad de multihilo puede estar disponible en un sistema informatico que implementa una arquitectura de soporte. La facilidad de multihilo proporciona soporte para el multihilo para habilitar un grupo de hilos, que puede ser referido tambien como CPU, que comparten un nucleo. Cuando se habilita la facilidad de multihilo, las CPU dentro de un nucleo pueden compartir ciertos recursos de hardware tales como las unidades de ejecucion o las memorias caches. Cuando una CPU en un nucleo esta esperando por los recursos de hardware (normalmente, mientras espera por un acceso de memoria), otras CPU en el nucleo pueden utilizar los recursos compartidos en el nucleo en lugar de mantenerlos inactivos. Cuando la facilidad de multihilo se instala y se habilita, un hilo es smcrono con una CPU que es un miembro de un nucleo. Cuando la facilidad de multihilo no esta instalada, o la facilidad esta instalada pero no habilitada, un nucleo comprende una CPU o hilo unico.
Cuando la facilidad de multihilo esta instalada, puede ser habilitada mediante la ejecucion de una orden de configuracion de un procesador de senal de multihilo (SIGP). En una realizacion ejemplar, cuando la facilidad multihilo esta habilitada, el numero de CPU en una configuracion es aumentado por un multiplo, el valor del cual esta determinado por una identificacion de los hilos maximos especificados por el programa (PSMTID). El numero de CPU en un nucleo puede ser uno mas que el PSMTID. Un numero de CPU correspondiente a este multiplo se agrupa en un nucleo. Cada nucleo del mismo tipo de CPU en una configuracion puede tener el mismo numero de CPU. Cada CPU dentro de un nucleo es del mismo tipo de CPU. Sin embargo, en base al modelo y el tipo de CPU, algunas CPU dentro de un nucleo pueden no estar operativas.
En una realizacion ejemplar, un programa de control, tal como un sistema operativo (OS) habilita de manera explfcita el multihilo para .que este se pueda usar por la configuracion que gestiona el OS. De manera alternativa, un
5
10
15
20
25
30
35
40
45
50
55
60
hipervisor puede habilitar el multihilo y los invitados del hipervisor y sus aplicaciones pueden beneficiarse de manera transparente. Un programa de aplicacion generalmente no es consciente de si se ha habilitado el multihilo. Cuando se habilita el multihilo, las direcciones de CPU de todas las CPU en la configuracion se ajustan para incluir una identificacion de nucleo (o ID de nucleo) en los bits mas a la izquierda de la direccion y una identificacion de hilo (ID de hilo, o TID) en los bits mas a la derecha de la direccion. La ID de nucleo puede ser tambien referida como un valor de direccion de hilo. Las CPU dentro de un nucleo pueden compartir ciertas facilidades de hardware tales como las unidades de ejecucion o las memorias caches de nivel inferior, asf la ejecucion dentro de una CPU de un nucleo puede afectar el rendimiento de otras CPU en el nucleo.
Para gestionar los cambios asociados con el cambio dinamico de uno o mas nucleos de una configuracion entre los modos de hilo unico y de multihilo, se incluyen un numero de caractensticas de soporte. Para mantener la compatibilidad con los programas que no soportan el multihilo, el modo de hilo unico puede ser el modo por defecto despues de un reinicio o una desactivacion. Las realizaciones ejemplares incluyen caractensticas para preservar, comunicar, y restaurar el contexto de los hilos desde el modo de multihilo para soportar el analisis y/o la restauracion del contexto de hilo despues de la transicion desde el modo de multihilo al modo de hilo unico.
Un entorno informatico que puede ser implementado por una realizacion ejemplar puede estar basado, por ejemplo, en la z/Architecture ofrecida por la International Business Machines Corporation, Armonk, Nueva York. La z/ Architecture se describe en una publicacion de IBM® titulada. “Principios de Operacion de la z/Architecture,” Publicacion de IBM N° SA22-7832-09, Agosto del 2012. En un ejemplo, un entorno informatico basado en la z/Architecture incluye un eServer zSeries, ofrecido por la International Business Machines Corporation, Armonk, Nueva York. Un entorno informatico puede incluir, por ejemplo, un complejo procesador con una o mas particiones (por ejemplo particiones logicas) con uno o mas nucleos (por ejemplo nucleos de procesador), y uno o mas niveles de hipervisores como se describe de manera adicional en la presente memoria.
La FIG. 1A muestra un sistema 100 informatico como un ejemplo de un entorno informatico que soporta multihilo (MT). En el ejemplo de la FIG. 1A, el sistema 100 informatico incluye una pluralidad de nucleos 102 de procesador, un subsistema 104 de entrada/salida (I/O), y una memoria 160 de sistema. El subsistema 104 de I/O puede proporcionar acceso a los dispositivos de I/O conocidos en la tecnica. Los nucleos 102 de procesador, tambien referidos simplemente como “nucleos” en la presente memoria, pueden incluir circuitena de procesamiento con elementos de soporte. En el ejemplo de la fIg. 1A, se representan cinco nucleos 102 como el nucleo1 110, el nucleo2 120, el nucleo3 130, el nucleo4 140, y el nucleo5 150; sin embargo, se contempla tambien un mayor y un menor numero de nucleos 102. Una facilidad 103 MT puede ser un componente de hardware de cada uno de los nucleos 102. En este ejemplo, cada uno de los nucleos 102 es capaz de soportar hasta cuatro hilos. Por ejemplo, el nucleo1 110 puede soportar los hilos 111, 112, 113, y 114. . El nucleo2 120 puede soportar los hilos 121, 122, 123, y 124. El nucleo3 130 puede soportar los hilos 131, 132, 133, y 134. El nucleo4 140 puede soportar los hilos 141, 142, 143, y 144. El nucleo5 150 puede soportar los hilos 151, 152, 153, y 154. Observe que no todos los cuatro hilos de cada nucleo 102 pueden estar operativos en cualquier instante. Por ejemplo, en el nucleo 3 130, los hilos 131 y 132 pueden estar operativos mientras que los hilos 133 y 134 se habilitan para estar operativos (representado con el sombreado).
La FIG.1A tambien representa la memoria 160 de sistema del sistema 100 informatico, donde las partes de la memoria 160 del sistema se distribuyen en la particion1 170 logica (LPAR1), la LPAR2 180, y la LPAR3 190. Las LPAR 170, 180, 190 representan los sistemas informaticos virtualizados (tambien conocidos como configuraciones) en las que un sistema operativo tal como Linux™ o el sistema operativo z/OSTM, z/VM, o zTPF de IBM® se pueden ejecutar. La FIG. 1A tambien muestra la distribucion de los nucleos 102 a las LPAR 170, 180, 190. En esta ilustracion, el nucleo1 110 y el nucleo2 120 estan dedicados para su uso por la LPAR1 170. El nucleo 3 130 esta dedicado para su uso por la LPAR2 180, y el nucleo 5 150 esta dedicado para su uso por la LPAR3 190. El nucleo4 140 puede ser compartido entre la LPAR2 180 y la LPAR3 190, pero se muestra como que se asigna a la LPAR2 180 en la FIG. 1A. La LPAR3 190 muestra un ejemplo de dos diferentes tipos de nucleos 102 que se emplean por la particion, donde el nucleo4 140 habilita multiples hilos para ser operativos, pero el nucleo5 150 no habilita multiples hilos para ser operativos en este ejemplo. En el ejemplo de la FIG. 1A, la LPAR1 170 proporciona recursos de procesamiento para el OS 171 y los programas 172, 173, 174, y 175. La LPAR2 180 proporciona recursos de procesamiento para el OS 181 y los programas 182, 183, y 184. La LPAR4 190 proporciona recursos de procesamiento para el OS 191 y los programas 192 y 193.
Bajo el control de un sistema operativo que se ejecuta en una LPAR, los programas se ejecutan en los hilos de un nucleo. En una realizacion ejemplar, un hilo individual ejecuta solo un programa a la vez, sin embargo, un programa que se disena para ser reentrante se puede ejecutar en multiples hilos o nucleos de manera simultanea. Por ejemplo, el programa 172 del OS 171 de la LPAR1 170 se puede estar ejecutando en los hilos 111 y 113 en el nucleo1 110 y en los hilos 121 y 124 del nucleo2 120. Sujeto al control de un OS, los diferentes programas se pueden despachar en el mismo o diferentes hilos, sujeto a las reglas de despacho y a los acuerdos de calidad de servicio.
Tambien residiendo en la memoria 160 del sistema existen diversos niveles de firmware, que incluyen por ejemplo, el Milicodigo 162 y el hipervisor 163 de la LPAR. El Milicodigo 162 se puede incrustar como firmware para soportar
5
10
15
20
25
30
35
40
45
50
55
60
funciones de sistema de nivel inferior. El hipervisor 163 de la LPAR puede ser, por ejemplo, codigo interno de licencia tal como el IBM Processor-Resource / System Manager TM (PR/SMTM). El hipervisor 163 de la LPAR puede establecer las LPAR 170, 180, 190 y puede gestionar el despacho en los nucleos 102. Cuando la facilidad l03 MT se instala en el sistema 100 informatico, el Milicodigo 162 y el hipervisor 163 de la LPAR contienen tambien el codigo 164 y 165 de soporte de la facilidad MT respectivamente. El codigo 164 y 165 de soporte de la facilidad MT se puede considerar parte de la facilidad 103 MT, ya que la logica para soportar el MT se puede distribuir entre el Milicodigo 162, el hipervisor 163 de la LPAR, y los nucleos 102. Aunque no se representa, cada uno de los OS 171, 181, 191 pueden incluir tambien el codigo de soporte de la facilidad MT para habilitar y explotar el MT en sus respectivas LPAR 170, 180, 190.
La FIG. 1B muestra el mismo sistema 100 informatico que la FIG. 1A, excepto que en el entorno informatico de la FIG. 1B, el nucleo4 140 se asigna ahora a la LPAR3 190 en lugar de la LPAR2 180. Observe tambien que a diferencia de la FIG. 1A, donde los hilos 143 y 144 no estaban operativos, en la FIG. 1B, todos los cuatro hilos 141144 estan operativos actualmente cuando la LPAR3 190 se despacha en el nucleo4 140. El despacho y el no despacho de una LPAR en un nucleo 102 es dinamico, y en otros momentos distintos las LPAR (no mostradas) pueden estar operativas en los mismos nucleos 102.
Volviendo ahora a la FIG.2, se muestra de manera general un diagrama de bloques de la circuitena 200 de procesamiento para implementar un nucleo de procesamiento, tal como uno de los nucleos 102 de las FIG. 1A y 1B, de acuerdo con una realizacion. La circuitena 200 de procesamiento es un ejemplo de un circuito de procesamiento que puede soportar uno o mas hilos de manera simultanea en un entorno de MT. La circuitena 200 de procesamiento mostrada en la FIG. 2 incluye una unidad 202 de la interfaz del controlador del sistema que puede acoplar la circuitena 200 de procesamiento a otros procesadores y dispositivos perifericos. La unidad 202 de la interfaz del controlador del sistema se puede conectar tambien a una memoria Dcache 204, que lee y almacena los valores de los datos, una memoria Icache 208, que lee las instrucciones de programa, y una unidad 206 de la interfaz de la memoria cache para la memoria externa, los procesadores, y otros dispositivos perifericos.
La memoria Icache 208 puede proporcionar la carga de flujos de instrucciones en conjuncion con una unidad 210 de busqueda de instrucciones (IFU), que realiza una busqueda previa de las instrucciones y puede incluir capacidades de carga especulativa y prediccion de bifurcacion. Las instrucciones buscadas se pueden proporcionar a una unidad 212 de decodificacion de instrucciones (IDU) para decodificarlas en datos de procesamiento de las instrucciones.
La IDU 212 puede proporcionar las instrucciones a una unidad 214 de salida que puede controlar la salida de las instrucciones a las diversas unidades de ejecucion, tal como una o mas unidades 216 de punto fijo (FXU) para ejecutar las operaciones generales y una o mas unidades 218 de punto flotante (FPU) para ejecutar las operaciones en punto flotante. Las FPU 218 pueden incluir una unidad 220 de punto flotante binaria (BFU), una unidad 222 de punto flotante decimal (DFU), o cualquier otra unidad de punto flotante. La unidad 214 de salida se puede acoplar tambien a una o mas unidades 228 de carga/almacenamiento (LSU) a traves de uno o mas tubos LSU. Los multiples tubos LSU son tratados como unidades de ejecucion para realizar las cargas y los almacenamientos y la generacion de direcciones para las bifurcaciones. Tanto la lSu 228 como la IFU 210 pueden utilizar una memoria 230 intermedia de traduccion anticipada (TLB) para proporcionar las traducciones almacenadas en la memoria intermedia para el operando y las direcciones de instruccion.
La FXU 216 y la FPU 218 se acoplan a los diversos recursos tales como los registros 224 de proposito general (GPR) y los registros 226 en punto flotante (FPR). El GPR 224 y el FPR 226 proporcionan el almacenamiento de los valores de los datos para los valores de los datos cargados y almacenados desde la memoria Dcache 204 mediante una LSU 228.
La circuitena 200 de procesamiento puede incluir tambien contadores y/o temporizadores 250 para ayudar en las acciones de generacion y diagnostico de base de tiempo del sistema. Por ejemplo, los contadores y/o los temporizadores 250 se pueden usar para soportar la opcion hora del dfa, asf como diversas facilidades de diagnostico y medicion.
Volviendo ahora a la FIG. 3, se representa un entorno informatico similar a la FIG. 1A excepto en que en la FIG. 3, se ejecuta un hipervisor 300 de segundo nivel en la LPAR2 180 del sistema 100 informatico. El hipervisor 300 de segundo nivel, por ejemplo, el sistema operativo z/VM de IBM, incluye codigo 301 de soporte MT, similar al codigo 165 de soporte MT proporcionado por el hipervisor 163 (de primer nivel) de la LPAR. El hipervisor 300 de segundo nivel proporciona soporte para una pluralidad de maquinas virtuales 310, 320, y 330 (tambien referido como configuraciones) en las que operan respectivamente los sistemas 311, 321, y 331 operativos de invitado. Los sistemas 311, 321, y 331 operativos de invitado pueden incluir, por ejemplo, Linux™ o el z/OSTM, el z/VM, o el z/TPF de IBM®, o pueden incluir un entorno de desarrollo de invitado tal como el sistema de monitoreo conversacional de IBM (CMS). Cada OS 311, 321, y 331 de invitado puede o no habilitar el multihilo, en cuyo caso el hipervisor 300 de segundo nivel puede ser responsable de despachar los OS 311, 321, 331 de invitado y los programas 312, 313, 322, 323, 332, y 333 asociados usando los recursos de procesamiento ffsicos (nucleos 130, 140, y los hilos 131-134, 141144) que estan disponibles para la LPAR2 180 en la que opera el hipervisor 300 de segundo nivel. Los programas 312, 313, 322, 323, 332, 333 de las diversas maquinas 310, 320, 330 virtuales pueden ejecutarse en los hilos 131134, 141-144 disponibles para los respectivos OS 311, 321, y 331 de invitado. Los OS 311, 321, y 331 de invitado no
5
10
15
20
25
30
35
40
45
50
55
60
necesitan incluir codigo de soporte de MT, ya que pueden beneficiarse del MT de manera transparente si el hipervisor 300 de segundo nivel explota el multihilo.
Volviendo ahora a la FIG. 4, se representa un ejemplo de retencion de contexto de hipervisor en un entorno informatico que se puede implementar de acuerdo con una realizacion. En el ejemplo de la FlG. 4, se representa un numero de estructuras de soporte dentro del hipervisor 163 de la LPAR de las FIG. 1A y 1B. Por ejemplo, las estructuras 410 pueden soportar la LPAR1 170 de la FIG. 1A, que incluye las descripciones de estado y los bloques satelite que almacenan contextos de registro de arquitectura (esto es, contexto de hilos) para los hilos 411, 412, 413, 414, 421, 422, 423, 424 logicos que estan ejecutandose actualmente en los hilos 111, 112, 113, 114, 121, 122, 123, 124 ffsicos como se muestra en la FIG. 1A. Mientras se despachan estos hilos logicos, los hilos ffsicos mantienen el contexto de registro de la arquitectura actual de los hilos. El contexto de registro de la arquitectura se mantendra en las descripciones de estado y los bloques satelite cuando ya no se despachen, Las estructuras 430 pueden soportar la LPAR2 180 de la FIG. 1A, incluyendo las descripciones de estado y los bloques satelite que almacenan el contexto de registro de la arquitectura para los hilos 431, 432, 441,442 logicos que se estan ejecutando actualmente en los hilos 131, 132, 141, 142 ffsicos como se muestra en la FIG. 1A. Las estructuras 450 pueden soportar la LPAR3 190 de la FIG. 1A, incluyendo las descripciones de estado y los bloques satelite que almacenan el contexto de registro de la arquitectura para los hilos 451 logicos que se estan ejecutando actualmente en el hilo 151 ffsico como se muestra en la FIG. 1A. Las estructuras 450 tambien incluyen descripciones de estado y bloques satelite que almacenan el contexto de registro de la arquitectura para los hilos 461, 462, 463 y 464 logicos que no se despachan actualmente en el procesador ffsico (como se muestra con el sombreado). Otras estructuras que soportan las LPAR que no se despachan en los nucleos ffsicos pueden ser conservadas tambien por el hipervisor 163 de la LPAR, tales como las estructuras 470 para una LPAR A (no representada en la FIG. 1A) que incluye las descripciones de estado y las estructuras satelite para los hilos 471, 472, 473, y 474 logicos. Ejemplos adicionales de estructuras incluyen las estructuras 480 que soportan la LPAR B no despachada (no representada en la FIG. 1A) que incluye las descripciones de estado y las estructuras satelite para los hilos 481 y 482 logicos, asf como las estructuras 484 para la LPAR C no despachada (no representada en la FIG. 1A) para el hilo 485 logico.
Aunque se representan un numero de estructuras en el ejemplo de la FIG. 4, se entendera que estructuras adicionales pueden ser soportadas por el hipervisor 163 de la LPAR y tambien en el sistema 100 informatico para gestionar el multihilo. Por ejemplo, las estructuras para soportar multihilo de las maquinas 310, 320, 330 virtuales de la FIG. 3 pueden ser conservadas por el hipervisor 300 de segundo nivel de la FIG. 3.
Volviendo ahora a la FIG. 5, se representa un flujo 500 de proceso para la habilitacion dinamica del multihilo de acuerdo con una realizacion. En el bloque 502, un hilo principal se ejecuta en un modo de hilo unico (ST). En el bloque 504, se busca una instruccion de configuracion del modo multihilo (MT) en el modo ST. Al ejecutar esta instruccion como se representa de manera colectiva en 505, se obtiene un numero de hilos solicitado desde una ubicacion especificada por la instruccion de configuracion del modo MT en el bloque 506. La ubicacion puede ser especificada por un registro de parametro al emitir la instruccion de configuracion del modo MT. La instruccion de configuracion del modo MT puede ser una instruccion del procesador de senal (SIGP) que incluye una orden de configuracion de MT y una id de hilo maximo especificado por el programa (PSMTID) asociado con el numero de hilos solicitados. Un ejemplo de un proceso asociado con una orden de configuracion de MT de una instruccion SIGP se describe de manera adicional en la presente memoria en referencia a la FIG. 7.
Continuando con el proceso 500, en el bloque 508, se realiza la determinacion de si el numero de hilos solicitados indica multiples hilos. Por ejemplo, los multiples hilos pueden ser indicados por un valor mayor que uno. En realizaciones donde un valor de cero indica un hilo unico, un valor de uno o mas de uno puede indicar multiples hilos. En base a la determinacion de que el numero de hilos solicitados no indica multiples hilos, el nucleo se mantiene en el modo ST en el bloque 510, se completa la ejecucion de la instruccion de configuracion del modo MT, y el control vuelve al bloque 502. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, el modo MT se habilita en el bloque 512, y la ejecucion de la instruccion de configuracion del modo mT se completa. En el bloque 514, se ejecutan los multiples hilos incluyendo los hilos principal y uno o mas secundarios. En el bloque 516, si no hay reinicio o desactivacion, el proceso 500 vuelve al bloque 514, en otro caso, en el bloque 518, se deshabilita el modo MT en base a un reinicio o una desactivacion de la configuracion que vuelve al modo ST. Como parte del hecho de deshabilitar el modo MT, el numero de hilos (PSMTID) se conserva en un reinicio sin borrado o se pone a cero en un reinicio con borrado. El proceso 500 vuelve al bloque 502.
Una CPU puede entrar en un estado de carga cuando se activa una clave de carga normal, carga con volcado, carga con borrado, o carga con borrado de lista dirigida. Si se completa una operacion de carga de programa inicial del tipo palabra de comando de canal (CCW) de manera exitosa, la CPU cambia desde el estado de carga al estado de operacion.
Un reinicio de la CPU se puede usar para borrar las indicaciones de comprobacion de equipo y cualquier resultado impredecible en el estado de la CPU con la menor cantidad de informacion destruida. En concreto, se puede usar para borrar las condiciones de comprobacion cuando el estado de la CPU se ha de preservar para su analisis o reanudacion de la operacion. Si un reinicio de la CPU esta provocado por la activacion de la clave de carga normal o de carga con volcado, (a) se puede configurar el modo de arquitectura a un modo por defecto, y (b) si la facilidad de
5
10
15
20
25
30
35
40
45
multihilo esta instalada y habilitada, se deshabilita el multihilo. Cuando el reinicio de la CPU configura el modo por defecto, puede salvar la actual PSW para que la PSW se pueda restaurar.
Un reinicio inicial de la CPU proporciona las funciones de un reinicio de CPU junto con la inicializacion de la actual PSW, el temporizador de la CpU, el comparador de reloj, y otros registros, tales como: la direccion del evento ruptura, la pSw capturada, el control, el control del punto flotante, el prefijo, y los registros programables TOD. El reinicio inicial de la CPU puede configurar el modo de arquitectura al modo por defecto si esta provocado por la activacion de la clave de carga normal o carga con volcado. Las funciones del reinicio inicial de la CPU se pueden realizar para la CPU con el numero mas bajo de un nucleo, y el reinicio de la CPU es realizado por todos las otras CPU en el nucleo. Un reinicio con borrado provoca el reinicio inicial de la CPU y el reinicio del subsistema para ser realizado y, de manera adicional, borra o inicializa todas las ubicaciones de almacenamiento y los registros en todas las CPU en la configuracion, con la excepcion del reloj TOD. El borrado no afecta al almacenamiento externo, tal como los dispositivos de almacenamiento por acceso directo usados por el programa de control para mantener los contenidos de las paginas no direccionables.
Un reinicio del encendido de la CPU provoca que se realice el reinicio inicial de la CPU y se borren los contenidos o los registros generales, los registros de acceso, los registros de control, y los registros de punto flotante a los valores de cero/por defecto con un codigo de bloqueo de comprobacion valido. Se entendera que el borrado o la inicializacion de los estados no necesita que sean valores igual a cero sino que por defecto pueden ser valores distintos de cero en el estado borrado. Si un reinicio del encendido de la CPU establece la configuracion, este puede configurar el modo de arquitectura al modo por defecto, en otro caso, puede configurar el modo de arquitectura al de las CPU ya en configuracion. El reinicio de la CPU, el reinicio de la CPU inicial, el reinicio del subsistema, y el reinicio con borrado se pueden iniciar de manera manual.
En realizaciones ejemplares, cada CPU tiene un numero asignado, llamado su direccion de CPU. Una direccion de CPU identifica de manera unica una CPU dentro de una configuracion. Una CPU esta designada especificando esta direccion en un campo de direccion de CPU de la instruccion SIGP. Una CPU que senaliza una alerta por malfuncionamiento, una senal de emergencia, o una llamada externa puede ser identificada mediante el almacenamiento de esta direccion en el campo de direccion de la CPU con la interrupcion. La direccion de la CPU esta asignada mediante un proceso de definicion de la configuracion y normalmente no se cambia como resultado de los cambios de reconfiguracion. Un programa puede determinar la direccion de una CPU usando una instruccion de direccion de la CPU almacenada. La instruccion de direccion de la CPU almacenada se puede usar tambien para identificar una direccion de CPU mediante la cual se identifica a una CPU en una configuracion de multiprocesamiento.
Cuando se habilita el multihilo, la direccion de la CPU puede incluir una identificacion del nucleo (una ID de nucleo), concatenada con una identificacion de una CPU dentro del nucleo. La identificacion de la CPU dentro de un nucleo es una identificacion de hilo (ID de hilo, o TID). Dentro de una configuracion, todos los nucleos proporcionan el mismo numero de CPU; sin embargo, dependiendo del modelo y el tipo de CPU, algunas CPU en un nucleo pueden no ser operacionales.
Basado en la PSMTID del registro de parametros usado por la orden de configuracion de multihilo del procesador de senal, un numero fijo de bits representa la identificacion de hilo. Este numero de bits es referido como la anchura de la TID.
La ID del nucleo puede estar formada a partir de los bits mas a la derecha de la direccion de la CPU antes de que se habilite el multihilo. La ID de nucleo es desplazada a la izquierda por los bits de ancho de la TID, resultando en los bits mas a la izquierda de la direccion de la CPU despues de que el multihilo este disponible. La ID de hilo tiene el mismo numero de bits de la anchura de la TID, y ocupa los bits mas a la derecha de la direccion de la CPU despues de que se habilite el multihilo. Las ID de hilo se pueden asignar en un intervalo contiguo de numeros. La tabla 1 ilustra un ejemplo de relacion de la PSMTID, la anchura de la TID y los bits de la direccion de la CPU que comprenden la identificacion del nucleo y la identificacion del hilo.
5
10
15
20
25
30
35
40
PSMTID
Anchura de la TID Bits de la Direccion de la CPU
ID del nucleo
ID del hilo
0
0
0-15 -
1
1
0-14 15
2-3
2 0-13 14-15
4-7
3 0-12 13-15
8-15
4 0-11 12-15
16-31
5 0-10 11-15
Tabla 1 - Ejemplo de mapeo de los bits de direccion
En la FIG. 6A se representa la expansion de la direccion como un ejemplo de un proceso 600A de expansion de la direccion de la PCU de acuerdo con una realizacion. En el bloque 602, un hilo principal se puede acceder en el modo ST usando un valor 604 de direccion de nucleo como un numero de bits de la direccion de la CPU. La flecha 606 indica el cambio desde el modo ST al modo MT. En el bloque 608, el hilo principal o uno o mas hilos secundarios se pueden acceder en el modo MT usando un valor 6l0 de direccion expandido. El valor 610 de direccion expandido incluye el valor 604 de la direccion de nucleo desplazado segun un valor 612 de la direccion del nucleo desplazado y concatenado con un valor 614 de la direccion del hilo. El valor 612 de la direccion del nucleo desplazado es una identificacion del nucleo (una ID del nucleo), y el valor 614 de la direccion del hilo es una identificacion del hilo (TID). El valor 612 de la direccion del nucleo desplazado puede ser desplazado mediante una cantidad en base a la maxima identificacion de hilo solicitado, por ejemplo, la PSMTID. Se puede determinar un numero de bits de la TID en el valor 614 de direccion en base a la PSMTID mostrada en la tabla 1 anterior. El valor 614 de la direccion del hilo se puede concatenar a los bits de orden inferior del valor 612 de la direccion del nucleo desplazado para formar el valor 610 de la direccion expandida. Un valor 614 de la direccion del hilo de todo ceros designana el hilo principal, y los valores mayores que cero identifican y direccionan los hilos secundarios.
Al cambiar entre el modo MT y el modo ST, se selecciona bien el valor 604 de la direccion del nucleo (modo ST) o el valor 610 de la direccion expandida (modo MT) para usar como una direccion de la CPU en un respectivo modo ST o MT. El valor 604 de la direccion del nucleo es un ejemplo de una direccion de formato estandar usada en el modo ST, y el nucleo vuelve desde el modo MT al modo ST en base al hecho de deshabilitar el modo MT. En una realizacion ejemplar, solo el hilo principal (esto es, no los hilos secundarios) son accesibles en base al hecho de deshabilitar el modo MT. La FIG. 6b representa un ejemplo de un proceso 600B de contraccion de la direccion de la CPU de acuerdo con una realizacion. La flecha 616 de la FIG. 6B ilustra el cambio desde el modo MT del bloque 608 de vuelta al modo ST del bloque 602, La reversion desde el modo MT al modo ST puede incluir el desplazamiento del valor 610 de la direccion expandida a la derecha y la eliminacion del valor 614 de la direccion del hilo para formar una direccion con formato estandar que incluye el valor 604 de la direccion del nucleo (ID del nucleo) como la direccion de la CPU a partir del valor 612 de la direccion del nucleo desplazado.
Cuando una funcion de reinicio deshabilita el multihilo, (a) la direccion o las direcciones de la CPU o de las CPU que tienen la ID de hilo a cero se desplazan a la derecha el mismo numero de bits de la anchura de la TID usada durante la habilitacion, (b) se insertan los ceros en el numero de bits de la anchura de la TID a la izquierda de la direccion, y (c) la direccion de la CPU se revierte a su formato original no multihilo (esto es, la direccion de formato estandar). Todas las CPU en un nucleo que tienen ID de hilo distinta de cero cuando se habilita el multihilo no son mas operacionales cuando se deshabilita el multihilo.
Cuando el multihilo no esta habilitado, la direccion de la CPU se mantiene sin cambios del valor asignado por el proceso de definicion de la configuracion. En este caso, no existe la identificacion de hilo.
Un numero de ordenes de los procesadores de senal pueden proporcionar las ordenes a las CPU incluyendo, por ejemplo, el inicio, la detenida, la reanudacion, el estado de detencion y almacenamiento, el reinicio inicial de la cPu, el estado del almacenamiento en la direccion, la configuracion de la arquitectura, la deteccion del estado de ejecucion, la configuracion del multihilo, el estado adicional de almacenamiento en la direccion, y similares. Un reinicio inicial de la CPU o un reinicio de la CPU pueden ser iniciado por una instruccion del procesador de senal y no afecta al modo de arquitectura o a las otras CPU. No deshabilita el multihilo, y no provoca el reinicio de la I/O.
Una orden de configuracion de la arquitectura especifica el modo de arquitectura al que se ha de configurar todas las CPU en la configuracion. Las diferencias de arquitectura pueden incluir los diferentes modos de direccionamiento, las definiciones de registros, y las instrucciones soportadas por las CPU. Tras un cambio en el modo de arquitectura,
5
10
15
20
25
30
35
40
45
50
55
la seleccion de los campos de bits de los registros se puede configurar a un estado por defecto (por ejemplo, a cero), las memorias intermedias de traduccion de acceso al registro anticipada (ALB) y las memorias intermedias de traduccion anticipada (TLB) de todas las CPU en la configuracion se borran, y la funcion de serializacion y sincronizacion del punto de control se puede realizar en todas las CPU en la configuracion.
Una orden de deteccion del estado de ejecucion puede indicar si una CPU direccionada esta ejecutandose. En el modo ST, se puede devolver un indicador como estado de ejecucion/no ejecucion. En el modo MT, se puede usar un indicador para identificar si cualquier CPU del nucleo en el que la CPU direccionada es un miembro esta ejecutandose, o todas las CPU del nucleo del que la CPU direccionada es un miembro no estan ejecutandose.
Una orden de configuracion MT habilita la facilidad de multihilo. Las posiciones de los bits de un registro de parametros pueden contener la PSMTID a proporcionar en la configuracion. La PSMTID se puede definir como uno menos que el numero de CPU a hacer direccionables en cada nucleo. Por ejemplo, un valor de 3 en las posiciones de bit designadas indica que un maximo de cuatro hilos se han de proporcionar. Los contenidos de un registro de direcciones de CPU de la instruccion SIGP se pueden ignorar segun se consideren direccionadas todas las CPU en la configuracion. Si se acepta, la orden de configuracion MT es completada por todas las CPU durante la ejecucion de la instruccion .SIGP. Con referencia a la FIG. 7, se representa un proceso 700 para una orden 702 SlGP de configuracion MT Se puede proporcionar una indicacion de error y evitar la habilitacion del modo MT en base a la determinacion de que la orden 702 SIGP de configuracion MT fue emitida con uno o mas de: una orden invalida, un estado incorrecto, y un parametro invalido, como se describe de manera adicional en la presente memoria en referencia al proceso 700 de la FIG. 7.
Si la facilidad de multihilo no esta instalada en el bloque 704 o la CPU no esta habilitada en un modo 708 de arquitectura valido, entonces la orden de configuracion MT no se acepta y se puede devolver una indicacion de orden invalida en los bloques 706 o 710 respectivamente. Si las otras cPu en la configuracion no estan en el estado detenido o de comprobacion detenida en el bloque 712, o si la configuracion esta ya habilitada para el multihilo en el bloque 716, la orden de configuracion MT no se acepta y se puede devolver una indicacion de estado incorrecto en el bloque 714 o 718 respectivamente.
Si la PSMTID es invalida en el bloque 720, entonces la orden de configuracion MT no se acepta y se puede devolver una indicacion de parametro invalido en el bloque 722. Cuando la PSMTID es cero en el bloque 724, la configuracion no esta habilitada para el multihilo, manteniendose en el modo ST, y proporcionando cualquier estado como un codigo de condicion en el bloque 728. En una realizacion ejemplar, cuando la PSMTID es valida y distinta de cero, en el bloque 726, se habilita la configuracion para el multihilo, lo que resulta en una expansion de la direccion de la CPU. Las ALB y las TLB de todas las CPU en la configuracion se borran de sus contenidos, y se realiza una funcion de serializacion y sincronizacion del punto de control en todas las CPU en la configuracion. Se puede proporcionar el estado en el bloque 728 en un codigo de condicion. Tras la finalizacion con exito, todas las CPU distintas a la CPU que ejecuta la orden de configuracion de MT se mantienen en el estado detenido o de comprobacion detenida. Sin embargo, si una CPU estaba en el estado de comprobacion detenida antes de que se habilitase el multihilo, puede ser impredecible si las CPU que tienen ID de hilo distintos de cero en el mismo nucleo se colocan en el estado de detencion o de comprobacion detenida.
Un contexto de hilo se puede referir tambien a un contexto del registro de arquitectura. Que el contexto del registro de arquitectura (esto es, los contenidos de la PSW, el temporizador de la CPU, el comparador de reloj, los registros generales, los registros de punto flotante y el registro de control de punto flotante, los registros de vector, los registros de control, los registros de acceso, el registro de prefijo, y el registro programable TOD, etc.) de cada CPU antes del multihilo este habilitado resulta en que el contexto del registro de arquitectura de la CPU que tiene la TID a cero de cada respectivo nucleo despues del multihilo este habilitado. De manera similar, el contexto del registro de arquitectura de la CPU que tiene la TID a cero de cada nucleo de una configuracion habilitada de MT resulta en que el contexto del registro de arquitectura de cada respectiva CPU cuando el multihilo esta deshabilitado como resultado de la activacion de la tecla de carga normal o carga con volcado.
El contexto del registro de arquitectura de todas las CPU que tienen una identificacion de hilo distinta de cero se puede conservar cuando la facilidad de multihilo se deshabilita como resultado de la activacion de una operacion de clave de carga normal o de carga con volcado. Si posteriormente la facilidad de multihilo se vuelve a habilitar sin la intervencion de un reinicio de borrado, el contexto del registro de arquitectura de todas las CPU que tienen una identificacion de hilo distinta de cero se restaura.
Cuando el multihilo se vuelve a habilitar despues haber sido deshabilitado por la activacion de la clave de carga normal o de carga con volcado. Si el valor de la PSMTID en bits del registro de parametros difiere del usado en la habilitacion anterior, entonces el contexto de registro de la arquitectura de todas las CPU que tiene una ID de hilo distintas de cero puede ser impredecible.
Se puede usar una instruccion de informacion del sistema almacenada para almacenar la informacion sobre un componente o componentes de una configuracion en un bloque de informacion del sistema (SYSIB). El SYSIB puede incluir un campo MT instalado, un campo MT general, un contador total de CPU/nucleos, un contador de CPU/nucleos configurados, un contador de CPU/nucleos de modo de espera, un contador de CPU/nucleos
5
10
15
20
25
30
35
40
45
50
55
60
reservados, y otros campos. El campo de MT instalada puede indicar si la facilidad de multihilo esta instalada y puede tambien indicar la mayor TlD soportada para un primer tipo de nucleo, por ejemplo, un tipo de nucleo especial. El campo general de MT puede indicar la mayor TID soportada para un segundo tipo de nucleo, por ejemplo, un tipo de nucleo general. La mayor TID soportada en el campo de MT general se puede limitar a ser menor o igual que la mayor TID soportada en el campo de MT instalada, El contador de CPU/nucleos totales puede indicar un numero total de CPU generales o nucleos que comprenden CPU generales en la configuracion, ya sea en el estado configurado, de espera, o reservado. El contador de CPU/nucleos configurados puede indicar el numero de CPU generales o nucleos que comprenden CPU generales en el estado configurado, esto es, en la configuracion y listos para ejecutar programas. El contador de CPU/nucleos en espera puede indicar el numero de CPU generales o nucleos que comprenden CPU generales en el estado de espera. El contador de CPU/nucleos reservados puede indicar el numero de CPU generales o nucleos que comprenden CPU generales en el estado reservado, esto es no disponibles para ser usados para ejecutar programas e incapaces de ser llevados al estado configurado.
La FIG. 8 representa un ejemplo de almacenamiento de la informacion de la capacidad multihilo de acuerdo con una realizacion. Un programa que se ejecuta en un hilo, tal como un hilol del nucleo 800A, puede traer la instruccion 830 de INFORMACION DEL SISTEMA DE ALMACENAMIENTO (STSI) de la memoria 801 de una configuracion 850 tal como la LPAR. La ejecucion de la instruccion de STSI puede resultar en el almacenamiento 832 de un bloque de informacion del sistema (SYSIB) 802. En el ejemplo de la FIG. 8, el SYSIB 802 incluye una identificacion 804 de MT instalado que indica si la configuracion 850 soporta el multihilo. El SYSIB 802 incluye tambien una identificacion de hilo maximo del mayor hilo soportado por un nucleo 800A/800B que se puede proporcionar como una TID maxima por nucleo 806 para los nucleos especiales y una TID maxima para los nucleos 808 generales. El SYSIB 802 puede incluir tambien una identificacion 809 de hilo maximo especificado por el programa actual (PSMTID). La PSMTID 809 actual refleja el modo multihilo como habilitado en la configuracion 850 por el programa. La PSMTID 809 puede no definirse si la instruccion 830 STSI se ejecuta en un nivel maquina basico.
Un programa que se ejecuta en un hilo, tal como el hilo2 de un nucleo 800B, puede traer tambien una instruccion 834 LLAMADA DE sErVICIO (SERVC) desde la memoria 801 de la configuracion 850, donde la instruccion especifica un comando de informacion del programa de control del sistema de lectura (informacion SCP de lectura, o RSCPI). La ejecucion del comando RSCPI puede provocar que se almacene en 836 un bloque 810 de control de llamada de servicio (SCCB) en la memoria 801. En una realizacion ejemplar, el SCCB 810 almacenado por la ejecucion del comando RSCPI proporciona informacion similar y adicional que puede no estar disponible en el SYSIB 802. En el ejemplo de la Fig. 8, el SCCB 810 incluye una identificacion 812 de MT instalado que indica si el nucleo 800B soporta multihilo. El SCCB 810 puede incluir una identificacion de hilo maximo del hilo mas alto soportado por el nucleo 800B que se puede proporcionar como la maxima TID para el nucleo 814 para los nucleos especiales y la maxima TID para los nucleos 816 generales. Los valores 812-816 del SCCB 810 son equivalentes a los valores 804-808 que pueden ser accesibles en el SYSIB 802. De manera adicional, el SCCB 810 puede incluir una identificacion de hilo maximo especificado por el programa en la ultima configuracion de un hilo mas alto soportado por el nucleo 800B, que es tambien referido como la identificacion 818 de hilo maximo especificado por el programa en la ultima configuracion (PSMTID). El SCCB 810 puede incluir tambien una mascara de valores del PSMTID aceptables en la orden de configuracion del MT como la mascara 820 que soporta PSMTID. La mascara 820 que soporta PSMTID se puede usar para identificar las CPU/hilos cuando se desean menos que el numero definido por el TID maximo por nucleo 814.
Sera entendido que los nucleos 800A y 800B incluyen otros aspectos que no estan representados en este ejemplo. Ademas, el SYSIB 802 y el SCCB 810 pueden incluir valores adicionales mas alla de los representados en el ejemplo de la FIG. 8.
La FIG. 9 representa un flujo 900 de proceso para determinar la capacidad multihilo de acuerdo con una realizacion. En el bloque 902, el nucleo ejecuta la recuperacion de una instruccion de la informacion de capacidad multihilo (RMTCI), que puede ser, por ejemplo, cualquiera de entre una instruccion SERVC o una instruccion STSI. En el bloque 904, se obtiene la informacion de identificacion de hilo que identifica la capacidad multihilo de una configuracion. En el bloque 906, se almacena la informacion de identificacion del hilo. En el bloque 908, se determina si la configuracion tuvo anteriormente el multihilo habilitado en base a la informacion de identificacion de hilo.
Como se describio anteriormente, la instruccion SERVC se configura para almacenar la informacion de identificacion del hilo en un bloque de respuesta en memoria (por ejemplo, el SCCb 810 de la FIG. 8), y la instruccion STSI se configura para almacenar la informacion de identificacion del hilo en un SYSIB en memoria (por ejemplo, el SYSIB 802 de la FIG. 8). La informacion de hilo obtenida puede incluir una identificacion de MT instalado (por ejemplo, la identificacion 804 o 812 de MT instalado de la FIG. 8) que indica si el nucleo soporta el multihilo. La informacion de hilo obtenida puede incluir tambien una identificacion de hilo maximo de un hilo maximo portado por el nucleo (por ejemplo, valores maximos TID 806, 808, 814 o 816 de la FIG.8). La informacion de hilo obtenida puede incluir tambien una identificacion de hilo maximo especificado por el programa actual (por ejemplo, una PSMTID 809 actual de la FIG. 8) y una identificacion de hilo maximo especificado por el programa en la ultima configuracion (por ejemplo, la PSMTID 818 actual de la FIG. 8). El bloque de respuesta puede incluir una mascara de bits que indica las identificaciones de hilo espedficas que se soportan de manera individual (por ejemplo la mascara 820 que
5
10
15
20
25
30
35
40
45
50
55
60
soporta la PSMTID de la FIG. 8). La determinacion de que la configuracion anteriormente tuvo MT habilitado se puede basar en un valor distinto de cero en la identificacion de hilo maximo especificado por el programa en la ultima configuracion (por ejemplo, la PSMTID de ultima configuracion >0). En una realizacion ejemplar, la configuracion soporta una pluralidad de tipos de nucleos.
En realizaciones ejemplares, los registros y valores tales como los valores de los contadores de programa, que pueden ser incluidos en los registros o gestionados de manera separada, se capturan como contexto de hilo. Cuando se produce la expansion de direccion en el modo MT, resulta accesible el contexto de hilo adicional. Como se describio anteriormente en referencia a la FIG. 6, la direccion de la CPU esta formada por cada nucleo de la configuracion. La direccion de la CPU puede ser revisada por la instruccion de direccion de la CPU almacenada, aparece en otras estructuras, y se usa en varias ordenes SlGP. Cuando no esta habilitado el MT, este esquema de direccionamiento se mantiene sin cambios. Cuando el MT esta habilitado, la direccion de la CPU experimenta un proceso de expansion. Como se describio anteriormente, la parte no habilitada al MT de la direccion de la CPU se puede desplazar a la izquierda los suficientes bits para acomodar la TID. Por ejemplo, si un sistema operativo emite la orden de configuracion MT del SIGP con un valor de la PSMTID de 1, la direccion de la CPU se desplazana a la izquierda 1 bit; si la PSMTID fuera 2 o 3, la direccion de la CPU se desplazana a la izquierda 2 bits, si la PSMTID es 4-7 la direccion de la CPU se desplazana a la izquierda 3 bits, y asf sucesivamente.
Cuando posteriormente se deshabilita el multihilo (como resultado de un reinicio con borrado o un reinicio de la CPU provocado por una operacion de normal de carga), se produce la contraccion de la direccion de la CPU. La direccion de la CPU con MT habilitado se puede desplazar a la derecha el mismo numero de bits PSMTID usados en la orden de configuracion MT del SIGP que habilita el MT, y la parte de la ID de hilo de la direccion desaparece. El contexto de hilo que esta accesible durante el modo MT puede residir en una o mas ubicaciones, tales como el ejemplo representado en la FIG. 10. En el ejemplo de la FIG. 10, una configuracion 1000 incluye un nucleo 1002 y puede incluir otros nucleos (no representados). La memoria 1006 puede incluir la memoria 1005 de configuracion como parte de la configuracion 1000 y la memoria 1007 de servidor/firmware que esta separada de la configuracion 1000. La memoria 1007 servidor/firmware puede incluir un bloque 1008 de descripcion de estado mantenido por un servidor, que puede almacenar un contexto 1010 de hilo para un hilo (por ejemplo, un hilo n en la FIG. 10). Un bloque 1012 satelite se puede anclar al bloque 1008 de descripcion de estado en la memoria 1006 como parte de la memoria 1007 de servidor/firmware, donde el bloque 1012 satelite puede incluir un contexto 1014 de hilo como una alternativa al contexto 1010 de hilo o en combinacion con el contexto 1010 de hilo. Cada hilo puede tener un bloque 1008 de descripcion de estado correspondiente y de manera opcional un bloque 1012 satelite, donde se pueden almacenar el contexto 1010 de hilo o el contexto 1014 de hilo. Como una alternativa adicional, los registros 1016 de contexto hardware se pueden usar para almacenar un contexto 1018 de hilo, por ejemplo, en el nucleo 1002. Los ejemplos del contexto 1010, 1014, y 1018 de hilo se pueden usar en combinacion o de manera separada como opciones de almacenamiento. Las opciones de almacenamiento alternativas se pueden emplear en las realizaciones. Independientemente de donde se mantenga el contexto de hilo, tras la contraccion de la direccion el contexto de hilo no sera mas accesible de manera directa, pero se puede conservar el acceso mediante un programa de volcado.
Cuando el MT esta deshabilitado, el proceso de contraccion de la direccion de la CPU hace que los hilos 1-n de un nucleo no sean mas direccionables; de manera similar, el contexto de hilo que incluye los registros de arquitectura no sera mas visible al programa. Si se deshabilito el MT como resultado de un reinicio de la CPU que resulta de una operacion de carga con borrado, el contexto de registro de los hilos 1-n se conserva; estos datos se pueden inspeccionar posteriormente si la configuracion vuelve al modo MT. El contexto de registro para cada hilo invitado puede ser mantenido por un servidor en el bloque 1008 de descripcion de estado del hilo (o como en el caso de los registros de vectores, en un bloque 1012 satelite anclado en la descripcion de estado) como se representa en la FIG. 10.
La conservacion del contexto de los hilos 1-n durante el proceso de deshabilitar el MT es una caractenstica diagnostica para el estado de los hilos a ser volcados despues de un fallo del OS. Despues de un fallo del OS, un operador puede elegir ejecutar un programa de volcado independiente (SADMP) para capturar la memoria y el contexto de hilo del sistema en el momento del fallo. Sin embargo, la carga del programa SADMP puede provocar que la configuracion vuelva a un modo de arquitectura por defecto con el modo ST habilitado, por lo tanto se deshabilita el MT. Pero, ya que el SADMP es cargado por una operacion de carga sin borrado, el contexto de registro de los hilos 1-n de cada nucleo se conserva. El SADMP puede determinar si el MT estaba habilitado en la configuracion que es volcada examinando los resultados del bloque de respuesta del comando de informacion SCP de lectura del SERVC. Este numero se puede usar posteriormente como entrada a la orden de configuracion MT del SIGP para rehabilitar el MT en el mismo nivel que antes.
La FIG. 11 representa un ejemplo de conservacion del registro de multihilo de acuerdo con una realizacion. Un sistema, tal como el sistema 1100 informatico de la FIG. 11, puede incluir multiples configuraciones 1102 y 1104. En el ejemplo de la FIG. 11, la configuracion 1102 incluye el nucleo 1106 y el nucleo 1108, y la configuracion 1104 incluye el nucleo 1110 y el nucleo 1112. Cada una de las configuraciones 1102 y 1104 se pueden cambiar independientemente entre los modos ST y MT en diferentes momentos. Cada una de las configuraciones 1102 y 1104 del sistema 1100 informatico es configurable con un numero diferente de ID de hilo maximo para soportar
5
10
15
20
25
30
35
40
45
50
55
habilitar de manera simultanea un numero diferente de hilos en cada una de las configuraciones 1102 y 1104. En el ejemplo de la FIG. 11, los nucleos 1106 y 1108 soportan cada uno un maximo de dos hilos mientras la configuracion 1102 esta en el modo 1114 MT, mientras que los nucleos 1110 y 1112 soportan cada uno un maximo de cuatro hilos mientras la configuracion 1104 este en el modo 1116 MT.
Mientras que este habilitado el modo 1114 MT en la configuracion 1102, tanto la TID 0 como la TID 1 son accesibles como contextos de hilo separados, asf como ejemplos separados de contextos 1115 de hilo. En el momento 1118, el modo 1114 MT puede ser deshabilitado por una operacion normal de carga o un reinicio sin borrado para la configuracion 1102 que cambia ambos nucleos 1106 y 1108 en el modo 1120 ST. Debido a la contraccion de la direccion como se describio anteriormente, los registros de la TID0 son accesibles en el modo 1120 ST; sin embargo, los registros de la TID1 que eran accesible en el modo 1114 MT se conservan pero no son mas accesibles. Por ejemplo, los registros de la TID1 se pueden incrustar como el contexto 1010, 1014, o 1018 de hilo de la FIG. 10, donde una direccion que estaba disponible con la expansion de la direccion no es mas accesible despues de la contraccion de la direccion tras cambiar al modo 1120 ST.
Mientras que la configuracion 1104 tenga el modo 1116 MT habilitado, los registros del TID0, TID1, TID2, y TID3 son accesibles como un contexto de hilo separado, tal como ejemplos separados de los contextos 1010, 1014, o 1018 de hilo de la FIg. 10. En este ejemplo, la TID0 representa un hilo principal y la TID1-TID3 representan hilos secundarios que se mantienen de manera separada para cada uno de los nucleos 1110 y 1112. En el momento 1122, el modo 1116 MT puede ser deshabilitado mediante un reinicio con borrado para la configuracion 1104, que cambia ambos nucleos 1110 y 1112 dentro del modo 1124 ST. El reinicio con borrado en el momento 1122 puede borrar todos los registros de la TID0, TID1, TID2, y TID3. Debido a la contraccion de la direccion como se describio anteriormente, los registros de la TID0 son accesibles en el modo 1124 ST; sin embargo, los registros de la TID1, TID2, y TID3 que eran accesibles en el modo 1116 MT se conservan en un estado borrado pero no mas accesible. Como se representa en la FIG. 11, se pueden realizar las operaciones de manera independiente en cada configuracion 1102 y 1104 en los diferentes momentos 1118 y 1122 con los efectos localizados a cada configuracion 1102 y 1104. Por tanto, la configuracion 1102 puede estar en un modo 1120 ST mientras la configuracion 1104 esta en el modo 1116 MT, y los modos ST/MT no necesitan estar alineados para todas las configuraciones del sistema 1100 informatico.
La FIG. 12 representa un flujo 1200 de procesos para la conservacion de registros de multihilo de acuerdo con una realizacion. En el bloque 1202, en base a la determinacion por un nucleo en el modo MT, se ha de deshabilitar el MT en el nucleo, se realiza el cambio desde el modo MT al modo ST. El hilo principal del modo MT se puede mantener como el unico hilo del modo ST. Uno o mas contextos de hilo que incluyen valores de registros accesibles por el programa y valores de contadores del programa de los hilos secundarios se hacen inaccesibles a los programas de aplicacion. En el bloque 1204, en base al cambio, se determina un tipo de operacion (por ejemplo borrado contra no borrado) para bien realizar el borrado de los valores de los registros accesibles por el programa o conservar los valores de los registros accesibles por el programa. En el bloque 1206, en base a la operacion de no borrado, se determinar que los valores de los registros accesibles por el programa se han de conservar. En el bloque 1208, en base a la operacion de borrado, se determina que los registros accesibles por el programa se han de borrar.
Como se describio anteriormente, los valores de los registros accesibles por el programa y los valores de los contadores del programa del contexto de hilo pueden incluir registros de programa de proposito general, registros de punto flotante, registros de control, registros de acceso, un registro de prefijo, y registros programables TOD. Los registros de control pueden incluir un registro de control en punto flotante, controles de instrumentacion en tiempo de ejecucion, controles de medicion de la CPU, y similares. Otros ejemplos de registros que se pueden incluir en el contexto de hilo incluyen una palabra de estado de programa (por ejemplo, que incluye una direccion de contador/instruccion de programa, un codigo de condicion, y otra informacion para controla la secuencia de instrucciones y para determinar el estado de la CPU), registros de vector, un temporizador de la CPU, un comparador de reloj, un registro de direccion de evento de ruptura, y otros registros conocidos en la tecnica. Como se describio anteriormente, la PSMTID se configura en base a una instruccion del procesador de senal ejecutada con exito que provoco que se habilitara el MT. En base al cambio al modo MT, los valores de registro accesibles por el programa se hacen accesibles a los programas de aplicacion en base a los hilos secundarios correspondientes que se vuelven a habilitar. Por ejemplo, el cambio desde el modo 1120 ST de vuelta al modo 1114 MT en la FIG. 11 habilita que los registros de la Tid1 sean accedidos, y la TID1 se puede volver a habilitar. El contexto de hilo se puede mantener en cualquiera de: un bloque de descripcion de estado, un bloque satelite anclado al bloque de descripcion de estado en la memoria, o un registro de contexto, tal como el contexto 1010, 1014, o 1018 de hilo de la FIG. 10.
Un contexto de hilo principal puede incluir unos valores de registro accesibles por el programa y unos valores de contador del programa de un hilo principal, por ejemplo los registros de la TID0 y la TID0 para la configuracion 1104 de la FIG. 11, donde el contexto de hilo principal es accesible para los programas de aplicacion en tanto el modo 1124 ST como el modo 1116 MT. Un contexto secundario de hilo puede incluir los valores de registro accesibles por el programa y los valores del contador del programa de un hilo secundario, por ejemplo los registros de las TlD1- TiD3 y la TID1-TID3 para la configuracion 1104 de la FIG. 11.
5
10
15
20
25
30
35
40
45
50
55
60
La FIG. 13 representa un ejemplo de restauracion del registro de multihilo de acuerdo con una realizacion. El ejemplo de la FIG. 13 incluye un sistema 1300 informatico con una configuracion 1302 unica. La configuracion 1302 incluye el nucleo 1304, el nucleo 1306, y el nucleo 1308. Cada uno de los nucleos 1304-1308 incluye un maximo de cuatro hilos (TID0, TID1, TID2, y TID3) en este ejemplo. En el modo 1310 MT, todos los contextos de los hilos TID0- TID3 estan disponibles en los nucleos 1304-1308. En el momento 1312, el modo 1310 MT puede ser deshabilitado por una operacion normal de carga o un reinicio sin borrado de la configuracion 1302, que cambia los nucleos 13041308 en el modo 1314 ST. En el modo 1314 ST, los registros de la TID0 permanecen accesibles, y los registros del TID1-TID3 estan inaccesibles per se conservan para cada uno de los nucleos 1304- 1308. En el momento 1316, el MT se puede volver a habilitar mediante la ejecucion de una orden de configuracion de MT del SIGP para entrar a un modo 1318 MT reanudado. En el modo 1318 MT reanudado, se restaura el acceso al contexto de los hilos de los registros de la TID1-TID3 para cada uno de los nucleos 1304-1308. Esto habilita la inspeccion de todos los registros de los hilos, incluyendo los registros de la TID1-TID3, mediante un programa de volcado, tal como un programa 1320 de volcado independiente, para salvar la informacion de contexto del hilo para su analisis.
La FIG. 14 representa un flujo 1400 de proceso para la restauracion de un registro multihilo de acuerdo con una realizacion tal como se puede emplear por un programa de volcado independiente (SADMP), tal como el programa 1320 de volcado independiente de la FIG. 13, para capturar el contexto del registro de arquitectura de los hilos que siguen al fallo de un sistema operativo. En el bloque 1405, se carga un programa SADMP a traves de una operacion de carga sin borrado (por ejemplo, una carga normal o una carga con volcado). La operacion de carga sin borrado provoca implfcitamente que la configuracion vuelva al modo ST, tal como al modo 1314 ST para la configuracion 1302 de la FIG. 13. El programa SADMP puede consultar despues si la facilidad MT esta disponible en la configuracion en el bloque 1410 usando la instruccion STSI o SERVC. Si el MT esta instalado, el programa SADMP consulta la configuracion de la identificacion de hilo maximo especificado por el programa en la ultima configuracion del programa (PSMTID) en busca de la configuracion en el bloque 1415. Si el MT nunca se hubo configurado anteriormente para la configuracion, el valor de la PSMTID de la ultima configuracion sera cero. El programa SADMP puede ejecutar entonces la instruccion para volver a habilitar el multihilo en el bloque 1420 cualquiera que fuera la PSMTID de la ultima configuracion (incluso si esta fue cero). Si la consulta en el bloque 1410 revela que el MT no esta instalado, entonces no se hacen intentos para consultar el valor de la PSMTID de la ultima configuracion en el bloque 1415 o para volver a habilitar el MT en el bloque 1420.
El programa SADMP intenta senalizar cada otra CPU (hilo) en la configuracion para salvar su contexto del registro de arquitectura en una ubicacion predefinida en memoria. Si el MT no se habilito anteriormente antes de cargar el SADMP; las direcciones de la PCU son las normales, con el formato no expandido. Si el MT se habilito anteriormente, las direcciones de la CPU tienen el formato expandido que incluye una ID de nucleo y una ID de hilo. El SADMP comienza con una direccion (N) de CPU de cero en el bloque 1425, y determina si la direccion de la CPU representa la CPU sobre la cual el SADMP se esta ejecutando en el bloque 1430. Si es asf, se salta esa CPU/hilo, y N se incremente al siguiente valor en el bloque 1450. Si N difiere de la direccion de la CPU actual, entonces esa CPU/hilo se senaliza para almacenar su contexto de registro de arquitectura en memoria, por ejemplo, mediante la ejecucion de bien una orden para almacenar el estado en la direccion del SIGP o una orden para detenerse y almacenar el estado del SIGP en el bloque 1435. Si la configuracion incluye una facilidad de vector, se puede ejecutar tambien una orden para almacenar el estado adicional en la direccion del SIGP para almacenar los contenidos de los registros de vector de la CPU/hilo. Se toma la determinacion segun si la senal del bloque 1435 fue exitosa en el bloque 1440. Si fue exitosa, el programa SADMP puede salvar el contexto del registro de la CPU/hilo en un archivo de volcado en cinta o disco en el bloque 1445, y el procesamiento continua aumentando N en el bloque 1450. Si la senal del bloque 1435 no fue exitosa (por ejemplo, si el hilo no es operacional) segun se determine por el bloque 1440, entonces se salta, y el procesamiento continua aumentando N en el bloque 1450. El valor de la direccion de CPU usado en la senalizacion (N) es aumentado en el bloque 1450, y se toma la determinacion segun si N es ahora mayor que la direccion de CPU mas alta posible para la configuracion en el bloque 1455. SI N no es mayor que la direccion de la CPU mas alta posible para la configuracion, entonces el procesamiento continua determinando si N representa la CPU/hilo actual bajo la cual el programa SADMP se esta ejecutando en el bloque 1430. Si N es mayor que la direccion mas alta posible de la CPU para la configuracion, entonces la restauracion del contexto del registro de arquitectura y el volcado se completan en el bloque 1460.
Aunque la FIG. 14 se describe con respecto a un nucleo de una configuracion, sera entendido que el flujo 1400 del proceso de la FIG. 14 se puede extender a ejecutarse a traves de la direccion de la CPU maxima a traves de todos los nucleos de una configuracion que incluye multiples nucleos. Se pueden hacer adaptaciones adicionales en las configuraciones para soportar el volcado para un OS que no soporta MT o un programa que es consciente del MT pero no explota el MT. Por ejemplo, se puede realizar un reinicio con borrado antes de cargar un OS que no soporta MT en la configuracion para evitar que un programa de volcado independiente consciente del MT intente volcar cualquier hilo secundario de la configuracion. Como otro ejemplo, un programa que es consciente del MT pero no lo explota, puede emitir una orden de configuracion del MT con una id de hilo maximo correspondiente de cero antes de ejecutar un programa de volcado independiente para la configuracion.
Los efectos y beneficios tecnicos incluyen proporcionar la habilitacion dinamica del multihilo en un sistema informatico que soporte tanto un modo de hilo unico como un modo de operacion de multihilo.
5
10
15
20
25
30
35
40
45
50
55
El sistema descrito en la presente memoria permite al software mitigar la variabilidad del hardware requiriendo al OS que expUcitamente “opte por” explotar el hardware MT. Cuando el OS entiende la naturaleza MT del entorno de ejecucion, el OS tiene la capacidad de gestionar de manera explfcita las densidades de hilos por nucleo (para ser lo mejor de su capacidad, dado un patron de despacho de carga de trabajo). El OS tiene la opcion de mantener altas densidades de hilos incluso cuando los recursos informaticos son menos utilizados, mitigando de este modo mucha de la variabilidad en la capacidad total de computacion que se ve en otras implementaciones MT. Como resultado directo de mantener una alta densidad de hilos, tanto los tiempos de respuesta de transaccion como los aspectos de ordenacion segun importancia pueden ser mas consistentes).
Las realizaciones incluyen un sistema, metodo, y producto de programa informatico para la habilitacion dinamica del multihilo. Segun un aspecto, el sistema informatico incluye una configuracion con un nucleo configurable entre un modo de hilo unico (ST) y un modo de multihilo (MT). El modo ST aborda un hilo principal, y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El sistema informatico incluye tambien una facilidad de multihilo configurada para controlar la configuracion para realizar un metodo. El metodo incluye la ejecucion en el hilo principal en el modo ST, de una instruccion de configuracion del modo MT. El numero de hilos solicitados se obtiene a partir de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, se habilita el modo MT para ejecutar los multiples hilos incluyendo el hilo principal y el uno o mas hilos secundarios,
Segun otro aspecto, se proporciona un metodo implementado por ordenador para la habilitacion dinamica del multihilo en una configuracion. La configuracion incluye un nucleo configurable entre un modo ST y un modo MT, donde el modo ST aborda un hilo principal y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El metodo incluye la ejecucion en el hilo principal en el modo ST, de una instruccion de configuracion del modo MT. El numero de hilos solicitados se obtiene de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, se habilita el modo MT para ejecutar los multiples hilos que incluyen el hilo principal y el uno o mas hilos secundarios.
Un aspecto adicional incluye un producto de programa informatico para implementar la habilitacion dinamica del multihilo en una configuracion. La configuracion incluye un nucleo configurable entre un modo ST y un modo MT, donde el modo ST aborda un hilo principal y el modo MT aborda el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo. El producto de programa informatico incluye un medio de almacenamiento legible por ordenador que tiene instrucciones de programa incrustadas en este, donde el medio de almacenamiento legible por ordenador no es una senal. Las instrucciones de programa son legibles por un circuito de procesamiento para provocar que el circuito de procesamiento realice un metodo. El metodo incluye la ejecucion en el hilo principal en el modo ST en el nucleo de la configuracion, de una instruccion de configuracion del modo MT. El numero de hilos solicitados se obtiene de una ubicacion especificada por la instruccion de configuracion del modo MT. En base a la determinacion de que el numero de hilos solicitados indica multiples hilos, se habilita el modo MT para ejecutar los multiples hilos que incluyen el hilo principal y uno o mas hilos secundarios.
Ademas de la una o mas caractensticas descritas anteriormente, o como una alternativa, se pueden incluir realizaciones adicionales donde la instruccion de configuracion del modo MT es una instruccion del procesador de senal (SIGP) que se puede emitir desde un sistema operativo. La instruccion SIGP puede incluir una orden de configuracion Mt y un programa que especifiquen la id de hilo maximo (PSMTID) asociado con el numero de hilos solicitados.
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, realizaciones adicionales pueden incluir el modo MT en base a la ejecucion de la orden de configuracion de MT con un valor distinto de cero de la PSMTID, y manteniendose en el modo ST y evitando la habilitacion del modo MT en base a la ejecucion de la orden de configuracion MT con un valor de cero de la PSMTID.
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, se pueden incluir realizaciones adicionales donde se proporciona una indicacion de error y se evita la habilitacion del modo MT en base a la determinacion de que la orden de configuracion MT fue emitida con uno o mas de: una orden invalida, un estado incorrecto, y un parametro invalido.
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, se pueden incluir
realizaciones adicionales donde se deshabilita el modo MT en base a un reinicio o una desactivacion de la
configuracion, y se conservan uno o mas contextos de hilos secundarios y el PSMTID de la ultima configuracion para un reinicio sin borrado o se ponen a cero para un reinicio con borrado.
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, se pueden incluir realizaciones adicionales donde la configuracion pasa por defecto al modo ST tras el reinicio o la desactivacion o activacion de la configuracion.
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, se pueden incluir
realizaciones adicionales donde se proporciona un programa de ejecucion con una indicacion de una id de hilo
5
10
15
20
25
30
35
40
45
50
55
maximo en base a la respuesta a una instruccion de llamada de servicio (SERVC) o una instruccion de informacion del sistema de almacenamiento (STSI).
Ademas de la una o mas de las caractensticas descritas anteriormente, o como una alternativa, las realizaciones adicionales pueden incluir una pluralidad de configuraciones, donde cada una de las configuraciones del sistema informatico es configurable con un numero diferente de id de hilo maximo para soportar de manera simultanea la habilitacion de diferentes numeros de hilos en cada una de las configuraciones.
La terminologfa usada en la presente memoria es con el proposito de describir solo realizaciones concretas y no esta destinada a ser limitante de la invencion. Como se usa en la presente memoria, las formas singulares “un”, “uno” y “el” estan destinadas a incluir las formas plurales tambien, a menos que el contexto claramente indique lo contrario. Se entendera ademas que los terminos “comprende” y/o “comprendiendo,” cuando se usan en esta especificacion, especifican la presencia de caractensticas establecidas, numeros enteros, pasos, operaciones, elementos, y/o componentes, pero no excluye la presencia o anadido de uno o mas otras caractensticas, numeros enteros, pasos, operaciones, componentes elementales, y/o grupos del mismo.
Las estructuras, materiales, acciones, y equivalentes correspondientes de todos los medios o pasos mas los elementos de funcion en las reivindicaciones de mas adelante estan destinados a incluir cualquier estructura, material, accion para realizar la funcion en combinacion con otros elementos reivindicados como se reivindica de manera espedfica. La descripcion de la presente invencion se ha presentado con propositos de ilustracion y descripcion, pero no esta destinada a ser exhaustivo o limitado a la invencion en la forma descrita.
La realizacion se eligio y describio para explicar mejor los principios de la invencion y de la aplicacion practica, y para permitir a otros de habilidad ordinaria en la tecnica entender la invencion mediante diversas realizaciones con diversas modificaciones que son adecuadas al uso concreto contemplado.
Las descripciones de las diversas realizaciones de la presente invencion se han presentado con propositos de ilustracion, pero no estan destinadas a ser exhaustivas o limitadas a las realizaciones descritas.
La terminologfa usada en la presente memoria fue elegida para explicar mejor los principios de las realizaciones, la aplicacion practica de la mejora tecnica sobre las tecnologfas encontradas en el mercado, o para permitir a otros de capacidad ordinaria en la tecnica entender las realizaciones descritas en la presente memoria.
Referente ahora a la FIG. 15 se muestra de manera general un producto 1500 de programa informatico de acuerdo con una realizacion que incluye un medio 1502 de almacenamiento legible por ordenador y unas instrucciones 1504 de programa.
La presente invencion puede ser un sistema, un metodo, y/o un producto de programa informatico. El producto de programa informatico puede incluir un medio de almacenamiento legible por ordenador (o un medio) que tiene las instrucciones del programa legible por ordenador en este para provocar que un procesador lleve a cabo los aspectos de la presente invencion.
El medio legible por ordenador puede ser un dispositivo tangible que conserve y almacene instrucciones para su uso por un dispositivo de ejecucion de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, perno no se limita a, un dispositivo de almacenamiento electronico, un dispositivo de almacenamiento semiconductor, o cualquier combinacion adecuada de lo anterior. Una lista no exhaustiva de mas ejemplos espedficos del medio de almacenamiento legible por ordenador incluye lo siguiente; un disquete informatico portatil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable borrable (EPROM o Memoria Flash), una memoria de acceso aleatorio estatica (SRAM), una memoria de solo lectura de disco compacto (CD-ROM), un disco digital versatil (DVD), un unidad de memoria, un disco flexible, un dispositivo codificado mecanicamente tal como tarjetas perforadas o estructuras introducidas en una ranura que tienen instrucciones grabadas en las mismas, y cualquier combinacion adecuada de los anteriores. Un medio de almacenamiento legible por ordenador, como se usa en la presente memoria, no se ha de interpretar como siendo senales transitorias per se, tal como ondas de radio u otras ondas electromagneticas que se propagan libremente, ondas electromagneticas que se propagan a traves de una grna de onda u otro medio de transmision (por ejemplo pulsos de luz que pasan a traves de un cable de fibra optica), o senales electricas transmitidas a traves de un cable.
Las instrucciones de programa legibles por ordenador descritas en la presente memoria se pueden descargar a los respectivos dispositivos de computacion/procesamiento desde un medio de almacenamiento legible por ordenador o a un ordenador externo o a un dispositivo de almacenamiento externo a traves de una red, por ejemplo, Internet, una red de area local, una red de area amplia y/o una red inalambrica. La red puede comprender cables de transmision de cobre, fibras opticas de transmision, transmision inalambrica, enrutadores, cortafuegos, conmutadores, ordenadores puertas de enlace y/o servidores de frontera. Una tarjeta adaptadora de red o una interfaz de red en cada dispositivo de procesamiento informatico recibe instrucciones del programa legible por ordenador desde la red y envfa las instrucciones del programa legible por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del respectivo dispositivo de computacion/procesamiento.
5
10
15
20
25
30
35
40
45
50
Las instrucciones del programa legible por ordenador para llevar a cabo las operaciones de la presente invencion pueden ser instrucciones de ensamblador, instrucciones de la arquitectura del conjunto de instrucciones (ISA), instrucciones maquina, instrucciones dependientes de la maquina, micro codigo, instrucciones de firmware, datos de configuracion de estado, u otra fuente de codigo u objeto de codigo escrito en alguna combinacion de uno o mas lenguajes de programacion, incluyendo un lenguaje de programacion orientado a objetos tal como el Smalltalk, C++ o similares, y lenguajes de programacion convencionales de procedimientos, tales como el lenguaje de programacion “C” o lenguajes de programacion similares. Las instrucciones del programa legible por ordenador se pueden ejecutar completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador o servidor remoto. En el ultimo escenario, el ordenador remoto puede estar conectado al ordenador del usuario a traves de cualquier tipo de red, incluyendo una red de area local (LAN) o una red de area amplia (WAN), o se puede hacer la conexion a un ordenador externo (por ejemplo, a traves de Internet usando un Proveedor de Servicio de Internet). En algunas realizaciones, la circuitena electronica que incluye, por ejemplo, la circuitena de logica programable, la agrupacion de puertas programables en campo (FPGA), o los vectores de logica programable (PLA) puede ejecutar las instrucciones de programa utilizando la informacion de estado de las instrucciones del programa legible por ordenador para personalizar la circuitena electronica, para realizar los aspectos de la presente invencion.
Los aspectos de la presente invencion se describen en la presente memoria con referencia a las ilustraciones de los diagramas de flujo y/o los diagramas de bloques de los metodos, aparatos (sistemas), y productos de programa informatico segun las realizaciones de la invencion. Sera entendido que cada bloque de las ilustraciones del diagrama de flujo y/o de los diagramas de bloques, y las combinaciones de bloques en las ilustraciones de los diagramas de flujo y/o de los diagramas de bloques, pueden ser implementados mediante instrucciones de programas legibles por ordenador.
Estas instrucciones de programas legibles por ordenador se pueden proporcionar a un procesador de un ordenador de proposito general, un ordenador de proposito especial, u otro aparato de procesamiento de datos programable para producir una maquina, de manera tal que las instrucciones, que se ejecutan a traves del procesador del ordenador u otros aparatos de procesamiento de datos programables, crean los medios para implementar las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques. Estas instrucciones legibles por ordenador se pueden almacenar tambien en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable, y/u otros dispositivos para funcionar de una manera concreta, tal que el medio de almacenamiento legible por ordenador que tenga las instrucciones almacenadas en este comprenda un artfculo de fabricacion que incluya las instrucciones que implementan los aspectos de la funcion/accion especificada en el bloque o bloques del diagrama de flujo y/o el diagrama de bloques.
Las instrucciones del programa legible por ordenador se pueden cargar tambien en un ordenador, en otro aparato de procesamiento de datos programable, u otro dispositivo para provocar una serie de pasos operacionales a realizar en el ordenador, otro aparato programables u otro dispositivo para producir un proceso implementado por ordenador, de manera tal que las instrucciones que se ejecutan en el ordenador, otro aparato programable, u otro dispositivo implementen las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques.
Los diagramas de flujo y de bloques en las Figuras ilustran la arquitectura, la funcionalidad, y la operacion de las posibles implementaciones de los sistemas, metodos, y productos de programa informatico segun las diversas realizaciones de la presente invencion. En este respecto, cada bloque en el diagrama de flujo o diagrama de bloques puede representar un modulo, segmento, o parte de las instrucciones, que comprenden una o mas instrucciones ejecutables para implementar la funcion o las funciones logicas especificadas. En algunas realizaciones alternativas, las funciones observadas en el bloque pueden ocurrir fuera del orden observado en las figuras. Por ejemplo, dos bloques mostrados en sucesion pueden, de hecho, ser ejecutados de manera sustancialmente concurrente, o los bloques pueden a veces ejecutarse en el orden contrario, dependiendo de la funcionalidad involucrada. Se debe observar tambien que cada bloque de los diagramas de bloque y/o la ilustracion de los diagramas de flujo, y las combinaciones de los diagramas de bloque y/o la ilustracion de los diagramas de flujo, puede ser implementada por sistemas basados en hardware de proposito especial que realizan las funciones o las acciones o las combinaciones para llevar a cabo especificadas del hardware de proposito especial y de las instrucciones de ordenador.

Claims (11)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    REIVINDICACIONES
    1. Un sistema informatico que comprende:
    una configuracion (102) que comprende un nucleo configurable entre un modo de hilo unico (ST) y un modo de multihilo (MT), el modo ST abarca un hilo principal y el modo MT abarca el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo; y
    una facilidad (103) de multihilo configurada para controlar la utilizacion de la configuracion en donde la facilidad de multihilo se adapta para
    ejecutar en el hilo principal en el modo ST, una instruccion de configuracion del modo MT;
    obtener un numero de hilos solicitados desde una ubicacion especificada por la instruccion de configuracion del modo MT, en donde la instruccion de configuracion del modo MT es una instruccion del procesador de senal (SIGP) de un sistema operativo, comprendiendo la instruccion SIGP una orden de configuracion MT y una id de hilo maximo especificado por programa (PSMTID) que configura un numero de bits para la identificacion del hilo asociada con el numero de hilos solicitados;
    habilitar el modo MT para ejecutar los multiples hilos comprendiendo el hilo principal y el uno o mas hilos secundarios en base a determinar que el numero de hilos solicitados indica multiples hilos y ejecutar la orden de configuracion de MT con un valor distinto de cero del PSMTID; y
    mantenerse en el modo ST y evitar la habilitacion del modo MT en base a la ejecucion de la orden de configuracion de MT con un valor cero del PSMTID.
  2. 2. El sistema informatico segun la reivindicacion 1, en donde se proporciona una indicacion de error y se evita la habilitacion del modo MT en base a determinar que la orden de configuracion de MT se emitio con uno o mas de: una orden invalida, un estado incorrecto, y un parametro incorrecto.
  3. 3. El sistema informatico segun la reivindicacion 1, en donde el modo MT se deshabilita en base a un reinicio o una desactivacion de la configuracion, y se conservan uno o mas contextos de hilos secundarios y una PSMTID de la ultima configuracion por un reinicio sin borrado o un cero para un reinicio con borrado.
  4. 4. El sistema informatico segun la reivindicacion 3, en donde la configuracion se pone por defecto en el modo ST tras el reinicio o la desactivacion o activacion de la configuracion.
  5. 5. El sistema informatico segun la reivindicacion 1, en donde se proporciona un programa en ejecucion con una indicacion de una id de hilo maximo en base a una respuesta a una instruccion de llamada de servicio (SERVC) o una instruccion de informacion del sistema de almacenamiento (STSI).
  6. 6. El sistema informatico segun la reivindicacion 1, comprendiendo ademas una pluralidad de configuraciones, en donde cada una de las configuraciones del sistema informatico es configurable con un numero diferente de la id de hilo maximo para soportar de manera simultanea un numero diferente de hilos habilitados en cada una de las configuraciones.
  7. 7. Un metodo implementado por ordenador para la habilitacion dinamica del multihilo en una configuracion que comprende un nucleo configurable entre un modo de hilo unico (ST) y un modo de multihilo (MT), abarcando el modo ST un hilo principal y el modo MT abarcando el hilo principal y uno o mas hilos secundarios en los recursos compartidos del nucleo, comprendiendo el metodo:
    ejecutar (502) en el hilo principal en el modo ST, una instruccion de configuracion del modo MT;
    obtener (506) un numero de hilos solicitados desde una ubicacion especificada por la instruccion de configuracion del modo MT, en donde la instruccion de configuracion del modo MT es una instruccion del procesador de senal (SIGP) de un sistema operativo, comprendiendo la instruccion SIGP una orden de configuracion MT y una id de hilo maximo especificado por programa (PSMTID) que configura un numero de bits para la identificacion del hilo asociada con el numero de hilos solicitados;
    habilitar (512) el modo MT para ejecutar los multiples hilos comprendiendo el hilo principal y el uno o mas hilos secundarios en base a determinar que el numero de hilos solicitados indica multiples hilos y ejecutar la orden de configuracion de MT con un valor distinto de cero de la PSMTID; y
    mantenerse (510) en el modo ST y evitar la habilitacion del modo MT en base a la ejecucion de la orden de configuracion de MT con un valor cero de la PSMTID.
  8. 8. El metodo segun la reivindicacion 7, en donde se proporciona una indicacion de error y se evita la habilitacion del modo MT en base a determinar que la orden de configuracion de MT se emitio con uno o mas de: una orden invalida, un estado incorrecto, y un parametro incorrecto.
  9. 9. El metodo segun la reivindicacion 7, en donde el modo MT se deshabilita en base a un reinicio o una desactivacion de la configuracion, y se conservan uno o mas contextos de hilos secundarios y una PSMTID de la ultima configuracion por un reinicio sin borrado o un cero para un reinicio con borrado.
  10. 10. El metodo segun la reivindicacion 7, en donde se proporciona un programa en ejecucion con una indicacion de 5 una id de hilo maximo en base a la respuesta a una instruccion de llamada de servicio (SERVC) o una instruccion de
    informacion del sistema de almacenamiento (STSI).
  11. 11. El metodo segun la reivindicacion 7, comprendiendo ademas una pluralidad de configuraciones, en donde cada una de las configuraciones del sistema informatico es configurable con un numero diferente de id de hilo maximo para soportar de manera simultanea un numero diferente de hilos habilitados en cada una de las configuraciones.
    10 12. Un programa informatico que comprende un codigo de programa informatico almacenado en un medio legible
    por ordenador para, cuando se carga en un sistema informatico y se ejecuta en este, provocar que dicho sistema informatico realice todos los pasos del metodo segun cualquiera de las reivindicaciones 7 a 11.
ES15711725.0T 2014-03-27 2015-03-19 Habilitación dinámica del multihilo Active ES2677709T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201414226881 2014-03-27
US14/226,881 US9354883B2 (en) 2014-03-27 2014-03-27 Dynamic enablement of multithreading
PCT/EP2015/055746 WO2015144544A1 (en) 2014-03-27 2015-03-19 Dynamic enablement of multithreading

Publications (1)

Publication Number Publication Date
ES2677709T3 true ES2677709T3 (es) 2018-08-06

Family

ID=52727120

Family Applications (1)

Application Number Title Priority Date Filing Date
ES15711725.0T Active ES2677709T3 (es) 2014-03-27 2015-03-19 Habilitación dinámica del multihilo

Country Status (15)

Country Link
US (2) US9354883B2 (es)
EP (1) EP3123328B1 (es)
JP (1) JP6501789B2 (es)
KR (1) KR101884540B1 (es)
CN (1) CN106133694B (es)
AU (1) AU2015238632B2 (es)
CA (1) CA2940905C (es)
ES (1) ES2677709T3 (es)
IL (1) IL247857B (es)
PT (1) PT3123328T (es)
RU (1) RU2662403C2 (es)
SG (1) SG11201606091UA (es)
TW (1) TWI594184B (es)
WO (1) WO2015144544A1 (es)
ZA (1) ZA201604938B (es)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11088923B2 (en) 2019-06-19 2021-08-10 International Business Machines Corporation Multi-stage authorization

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
KR20180003302A (ko) 2016-06-30 2018-01-09 엘지디스플레이 주식회사 백플레인 기판과 이의 제조 방법 및 이를 적용한 유기 발광 표시 장치
KR101769304B1 (ko) 2016-08-18 2017-08-18 현대자동차주식회사 엔진마운트의 노즐판
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10282208B2 (en) * 2017-07-14 2019-05-07 International Business Machines Corporation Cognitive thread management in a multi-threading application server environment
US11157286B2 (en) * 2018-05-07 2021-10-26 Micron Technology, Inc. Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor
US11579944B2 (en) * 2018-11-14 2023-02-14 Intel Corporation System, apparatus and method for configurable control of asymmetric multi-threading (SMT) on a per core basis
CN110032407B (zh) 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684993A (en) 1993-01-04 1997-11-04 Microsoft Corporation Segregation of thread-specific information from shared task information
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5799188A (en) 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US6418460B1 (en) 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
US5872963A (en) 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6104700A (en) 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6487578B2 (en) * 1997-09-29 2002-11-26 Intel Corporation Dynamic feedback costing to enable adaptive control of resource utilization
US6272625B1 (en) 1997-10-08 2001-08-07 Oak Technology, Inc. Apparatus and method for processing events in a digital versatile disc (DVD) system using system threads and separate dormant/awake counter threads and clock driven semaphores
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6061710A (en) 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6401155B1 (en) 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US6542991B1 (en) 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
AU2597401A (en) * 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6981180B1 (en) 2000-03-16 2005-12-27 Akamai Technologies, Inc. Method and apparatus for testing request-response service using live connection traffic
US6757811B1 (en) 2000-04-19 2004-06-29 Hewlett-Packard Development Company, L.P. Slack fetch to improve performance in a simultaneous and redundantly threaded processor
US6792525B2 (en) 2000-04-19 2004-09-14 Hewlett-Packard Development Company, L.P. Input replicator for interrupts in a simultaneous and redundantly threaded processor
US6658654B1 (en) 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US7073173B1 (en) 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
EP1256877A1 (en) 2001-05-10 2002-11-13 Hewlett-Packard Company, A Delaware Corporation Manufacture of computer systems
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
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
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7185338B2 (en) * 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
CN1720503A (zh) * 2002-10-15 2006-01-11 沙桥技术有限公司 在多线程处理器中用于高速线程间中断的方法和设备
US7533012B2 (en) 2002-12-13 2009-05-12 Sun Microsystems, Inc. Multi-user web simulator
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7290261B2 (en) * 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7360062B2 (en) * 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US20050071422A1 (en) 2003-09-25 2005-03-31 International Business Machines Corporation Method, system, and computer program product for an automation tool adapter for use with multiple different automation tools
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7210073B1 (en) 2003-12-31 2007-04-24 Precise Software Solutions Ltd. Workflows for performance management methodology
US20050183065A1 (en) 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US7426731B2 (en) 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US20050251649A1 (en) 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7216223B2 (en) 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
US7607141B2 (en) * 2004-05-03 2009-10-20 Microsoft Corporation Systems and methods for support of various processing capabilities
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7565659B2 (en) * 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
JP4956891B2 (ja) 2004-07-26 2012-06-20 富士通株式会社 演算処理装置,情報処理装置および演算処理装置の制御方法
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
JP4504132B2 (ja) 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US8621458B2 (en) 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8015566B2 (en) 2005-01-13 2011-09-06 Lenovo (Singapore) Pte. Ltd. Attributing energy consumption to individual code threads in a data processing system
US7317907B2 (en) 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US20060242389A1 (en) * 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US8010969B2 (en) 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
JP4963018B2 (ja) 2005-08-15 2012-06-27 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法およびスケジューリング装置
US8402224B2 (en) 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
US8275942B2 (en) 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US9323578B2 (en) 2006-01-19 2016-04-26 International Business Machines Corporation Analyzing wait states in a data processing system
US7577826B2 (en) 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management
CN100571167C (zh) 2006-02-24 2009-12-16 国际商业机器公司 Web服务业务流程的单元测试的方法和设备
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8136111B2 (en) 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US7634642B2 (en) 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
US8839271B2 (en) 2006-10-11 2014-09-16 International Business Machines Corporation Call stack sampling to obtain information for analyzing idle states in a data processing system
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8117478B2 (en) 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
US7584346B1 (en) 2007-01-25 2009-09-01 Sun Microsystems, Inc. Method and apparatus for supporting different modes of multi-threaded speculative execution
US8156496B2 (en) 2007-01-31 2012-04-10 Hewlett-Packard Development Company, L.P. Data processing system and method
US9195462B2 (en) 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
CN101042640A (zh) 2007-04-24 2007-09-26 上海华龙信息技术开发中心 一种带有位扩充和位压缩单元的数字信号处理器
US20080270658A1 (en) 2007-04-27 2008-10-30 Matsushita Electric Industrial Co., Ltd. Processor system, bus controlling method, and semiconductor device
EP2159687B1 (en) 2007-06-20 2012-12-05 Fujitsu Limited Arithmetic unit
WO2009076654A1 (en) 2007-12-12 2009-06-18 University Of Washington Deterministic multiprocessing
US8544006B2 (en) 2007-12-19 2013-09-24 International Business Machines Corporation Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict
CN101216725B (zh) 2008-01-04 2011-04-27 东南大学 利用堆栈深度进行多线程预测的动态功耗控制方法
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US8117602B2 (en) 2008-04-01 2012-02-14 Kaspersky Lab, Zao Method and system for monitoring execution performance of software program product
US8495662B2 (en) 2008-08-11 2013-07-23 Hewlett-Packard Development Company, L.P. System and method for improving run-time performance of applications with multithreaded and single threaded routines
WO2010036983A1 (en) 2008-09-25 2010-04-01 Rockliffe Systems, Inc. (Dba Mailsite) Personal information management data synchronization
US7873816B2 (en) 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
US20100135179A1 (en) 2008-11-28 2010-06-03 International Business Machines Corporation Communication device
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US8572581B2 (en) 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8346509B2 (en) 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
US9672132B2 (en) 2009-11-19 2017-06-06 Qualcomm Incorporated Methods and apparatus for measuring performance of a multi-thread processor
US8612978B2 (en) 2009-12-10 2013-12-17 Oracle America, Inc. Code execution utilizing single or multiple threads
US8615644B2 (en) 2010-02-19 2013-12-24 International Business Machines Corporation Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition
US8381216B2 (en) 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management
US20110283286A1 (en) 2010-05-11 2011-11-17 Dell Products L.P. Methods and systems for dynamically adjusting performance states of a processor
JP5505501B2 (ja) 2010-06-22 2014-05-28 富士通株式会社 マルチコアプロセッサシステム、制御プログラム、および制御方法
US8392473B2 (en) 2010-09-07 2013-03-05 Microgen Aptitude Limited Fast hierarchical enrichment
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
US8677361B2 (en) 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8418177B2 (en) 2010-10-01 2013-04-09 Microsoft Corporation Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8489787B2 (en) 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
US20120137295A1 (en) 2010-11-30 2012-05-31 Alcatel-Lucent Canada Inc. Method for displaying cpu utilization in a multi-processing system
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
JP5713029B2 (ja) 2011-02-10 2015-05-07 富士通株式会社 スケジューリング方法、設計支援方法、およびシステム
US9213551B2 (en) 2011-03-11 2015-12-15 Oracle International Corporation Return address prediction in multithreaded processors
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
GB2489708B (en) 2011-04-05 2020-04-15 Advanced Risc Mach Ltd Thread selection for multithreaded processing
US8695010B2 (en) 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
CA2759365A1 (en) 2011-11-24 2013-05-24 Ibm Canada Limited - Ibm Canada Limitee Identification of thread progress information
US9075610B2 (en) 2011-12-15 2015-07-07 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
US9720744B2 (en) 2011-12-28 2017-08-01 Intel Corporation Performance monitoring of shared processing resources
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
CN102566974B (zh) 2012-01-14 2014-03-26 哈尔滨工程大学 基于同时多线程的取指控制方法
US8930950B2 (en) * 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US8966232B2 (en) 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US20130283280A1 (en) 2012-04-20 2013-10-24 Qualcomm Incorporated Method to reduce multi-threaded processor power consumption
US9075735B2 (en) 2012-06-21 2015-07-07 Breakingpoint Systems, Inc. Systems and methods for efficient memory access
US9208044B2 (en) 2012-06-25 2015-12-08 Infosys Limited Methods for simulating message-oriented services and devices thereof
US9529719B2 (en) 2012-08-05 2016-12-27 Advanced Micro Devices, Inc. Dynamic multithreaded cache allocation
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
CN102902512B (zh) * 2012-08-31 2015-12-16 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
CN103488684B (zh) 2013-08-23 2016-12-28 国家电网公司 基于缓存数据多线程处理的电力可靠性指标快速计算方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11088923B2 (en) 2019-06-19 2021-08-10 International Business Machines Corporation Multi-stage authorization

Also Published As

Publication number Publication date
AU2015238632B2 (en) 2018-04-26
EP3123328A1 (en) 2017-02-01
US20150277918A1 (en) 2015-10-01
US9354883B2 (en) 2016-05-31
WO2015144544A1 (en) 2015-10-01
PT3123328T (pt) 2018-07-23
US9459875B2 (en) 2016-10-04
CA2940905C (en) 2022-08-16
KR101884540B1 (ko) 2018-08-01
CA2940905A1 (en) 2015-10-01
RU2662403C2 (ru) 2018-07-25
KR20160104660A (ko) 2016-09-05
CN106133694A (zh) 2016-11-16
CN106133694B (zh) 2019-05-17
IL247857B (en) 2019-06-30
ZA201604938B (en) 2019-02-27
JP2017509081A (ja) 2017-03-30
JP6501789B2 (ja) 2019-04-17
TW201610839A (zh) 2016-03-16
TWI594184B (zh) 2017-08-01
US20150339120A1 (en) 2015-11-26
RU2016127225A (ru) 2018-04-28
RU2016127225A3 (es) 2018-04-28
AU2015238632A1 (en) 2016-08-04
EP3123328B1 (en) 2018-06-06
IL247857A0 (en) 2016-11-30
SG11201606091UA (en) 2016-08-30

Similar Documents

Publication Publication Date Title
ES2677709T3 (es) Habilitación dinámica del multihilo
ES2673903T3 (es) Expansión y contracción de direcciones en un sistema informático de subprocesamiento múltiple
US9804847B2 (en) Thread context preservation in a multithreading computer system
US9454372B2 (en) Thread context restoration in a multithreading computer system
EP3123327B1 (en) Multithreading capability information retrieval