ES2674546T3 - Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos - Google Patents

Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos Download PDF

Info

Publication number
ES2674546T3
ES2674546T3 ES14778796.4T ES14778796T ES2674546T3 ES 2674546 T3 ES2674546 T3 ES 2674546T3 ES 14778796 T ES14778796 T ES 14778796T ES 2674546 T3 ES2674546 T3 ES 2674546T3
Authority
ES
Spain
Prior art keywords
lock
requested
blocking
block
message
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
ES14778796.4T
Other languages
English (en)
Inventor
Weizhi Xu
Zhimin TANG
Zhimin Zhang
Fenglong SONG
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2674546T3 publication Critical patent/ES2674546T3/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)

Abstract

Un método para implementar una operación mutuamente excluyente de múltiples hilos en un chip, donde el chip comprende una pluralidad de núcleos pequeños y una pluralidad de conjuntos de bloqueo distribuidos en el chip, cada conjunto de bloqueo comprende una pluralidad de bloqueos y cada conjunto de bloqueo se utiliza para gestionar mensajes de bloqueo generados por distintos núcleos pequeños, donde el método comprende: recibir (201) un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo; calcular (202), utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y enviar (203) el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde el mensaje de bloqueo se utiliza para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCIÓN
Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos Campo técnico
La presente invención se refiere al campo de los ordenadores, y en particular, a un método, un aparato y un chip para implementar una operación mutuamente excluyente de múltiples hilos.
Antecedentes
Con el desarrollo de los procesos con semiconductores, una cantidad de transistores que se puede integrar en un chip va en aumento, y para reducir el consumo de energía y la disipación de calor al tiempo que se mejora el rendimiento, un diseñador de arquitecturas presenta un procesador de múltiples núcleos/muchos núcleos en el chip, en paralelo, de grano grueso a nivel de hilo. El procesador de múltiples núcleos/muchos núcleos en el chip hace referencia a un procesador de múltiples núcleos/muchos núcleos integrados en un mismo chip, y comparado con un multiprocesador convencional, el procesador de múltiples núcleos/muchos núcleos en el chip tiene las ventajas de un ancho de banda en el chip más elevado, una distancia de comunicación más reducida y una velocidad de transmisión más rápida, de modo que la eficiencia de la comunicación de datos entre múltiples hilos sea más elevada.
No obstante, cuando se ejecutan múltiples hilos en paralelo, se puede compartir una variable por los múltiples hilos. Para garantizar la corrección de la semántica de ejecución de programas, se utiliza un método para operar múltiples hilos de manera mutuamente excluyente, y el método puede garantizar que cuando los múltiples hilos llevan a cabo una operación de lectura/escritura en la memoria compartida, en un instante, solo un hilo ocupa de manera excluyente la memoria compartida. El rendimiento de la operación mutuamente excluyente es muy importante para un procesador de múltiples núcleos/muchos núcleos en el chip, y afecta directamente a una velocidad de ejecución colaborativa de múltiples hilos.
Una manera de implementar una operación mutuamente excluyente en la técnica anterior incluye: establecer un bit indicador en memoria fuera de un chip, donde un bit indicador 0 identifica que un bloqueo está en ese momento en un estado inactivo, y un bit indicador 1 identifica que el bloqueo está en ese momento en un estado ocupado. El bloqueo es un mecanismo que garantiza que, en un instante, solo una operación de un hilo está protegida en múltiples hilos. Cuando hay una operación mutuamente excluyente, múltiples núcleos pequeños en el procesador de múltiples núcleos/muchos núcleos sondean un mismo bit indicador en la memoria, y solo cuando el bit indicador es 0, es decir, solo cuando el bloqueo está en un estado inactivo, puede el hilo adquirir el bloqueo para ocupar además la memoria con el fin de llevar a cabo una operación de lectura/escritura, y al mismo tiempo, establece el bit indicador a 1. Si se descubre que el bit indicador es 1, se consulta de nuevo al bit indicador después de un período de tiempo. Aunque el método puede implementar la operación mutuamente excluyente, el acceso a un bit indicador fuera del chip por parte de un núcleo pequeño en el chip puede generar un problema de mayores sobrecargas del sistema, y un sondeo constante del bit indicador también puede imponer una gran presión sobre una red en el chip.
Otra manera para implementar una operación mutuamente excluyente en la técnica anterior incluye: procesar de manera centralizada, utilizando un aparato de gestión de la sincronización conectado a múltiples núcleos pequeños mostrado en la figura 1, las solicitudes mutuamente excluyentes de todos los núcleos pequeños en el procesador de múltiples núcleos/muchos núcleos, es decir, gestionar, utilizando el aparato de gestión de la sincronización, un mensaje de aplicación del bloqueo para aplicar un bloqueo y de un mensaje de liberación del bloqueo para liberar un bloqueo que hay en cada núcleo pequeño, y determinar, de acuerdo con un estado de un bloqueo en el aparato de gestión de la sincronización, si obtener un bloqueo o esperar para un bloqueo. El método puede evitar mayores sobrecargas del sistema generadas al acceder a un indicador fuera del chip, y evitar el sondeo del bit indicador, pero debido a que un aparato de gestión de la sincronización gestiona todos los hilos, el aumento de una cantidad de hilos puede provocar un fenómeno de congestión que prolonga un tiempo de espera de los hilos, y reduce una velocidad de ejecución colaborativa de los hilos.
Haciendo referencia a la técnica anterior, el documento de patente china CN 102 567 275 A expone un método y un sistema para el acceso a memoria entre múltiples SO en un procesador de múltiples núcleos, donde el acceso seguro a espacios de memoria entre los múltiples SO en el procesador de múltiples núcleos se lleva a cabo con la ayuda de mecanismos de bloqueo.
Compendio
Las realizaciones de la presente invención proporcionan un método, un aparato y un chip para implementar una operación mutuamente excluyente de múltiples hilos, de modo que se solucione un fenómeno de congestión generado cuando aumenta una cantidad de hilos, y mejore una velocidad de ejecución colaborativa de los hilos.
Para lograr los objetivos anteriores, las realizaciones de la presente invención utilizan las siguientes soluciones técnicas:
5
10
15
20
25
30
35
40
45
50
De acuerdo con un primer aspecto, se proporciona un método para implementar una operación mutuamente excluyente de múltiples hilos, donde el método incluye:
recibir un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo;
calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En una primera manera de implementación posible, de acuerdo con el primer aspecto, el cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado incluye:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
En una segunda manera de implementación posible, de acuerdo con el primer aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad y los números de código de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando el bloqueo solicitado, y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del bloqueo solicitado es un estado inactivo o un estado ocupado; y
el envío del mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
En una tercera manera de implementación posible, de acuerdo con el primer aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad de hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando en ese momento el bloqueo solicitado, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del hilo incluye si el hilo está esperando el bloqueo solicitado o si el hilo no está esperando el bloqueo solicitado; y
el envío del mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
De acuerdo con un segundo aspecto, se proporciona un aparato para implementar una operación mutuamente excluyente de múltiples hilos, donde el aparato incluye una unidad de recepción, una unidad de cálculo y una unidad de envío, donde
la unidad de recepción se configura de modo que reciba un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo;
la unidad de cálculo se configura de modo que calcule utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y
la unidad de envío se configura de modo que envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
5
10
15
20
25
30
35
40
45
50
En una primera manera de implementación posible, de acuerdo con el segundo aspecto, en la que la unidad de cálculo calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado incluye:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
En una segunda manera de implementación posible, de acuerdo con el segundo aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad y los números de código de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando el bloqueo solicitado, y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del bloqueo es un estado inactivo o un estado ocupado; y
en la que la unidad de envío envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
En una tercera manera de implementación posible, de acuerdo con el segundo aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando el bloqueo solicitado, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo solicitado o si el hilo no está esperando el bloqueo solicitado; y
en la que la unidad de envío envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
De acuerdo con un tercer aspecto, se proporciona un chip para implementar una operación mutuamente excluyente de múltiples hilos, donde el chip incluye: un núcleo pequeño, un componente de enrutamiento y un conjunto de bloqueo, donde
el componente de enrutamiento se configura de modo que reciba un mensaje de bloqueo enviado por el núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo;
el componente de enrutamiento se configura además de modo que calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado;
el componente de enrutamiento se configura además de modo que envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo;
el conjunto de bloqueo se configura de modo que reciba el mensaje de bloqueo enviado por el componente de enrutamiento y procese el mensaje de bloqueo.
En una primera manera de implementación posible, de acuerdo con el tercer aspecto, en la que el componente de enrutamiento calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado incluye:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
5
10
15
20
25
30
35
40
45
50
En una segunda manera de implementación posible, de acuerdo con el tercer aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad y los números de código de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando el bloqueo solicitado, y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del bloqueo es un estado inactivo o un estado ocupado; y
en la que el componente de enrutamiento envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
En una tercera manera de implementación posible, de acuerdo con la segunda manera de implementación posible, si el mensaje de bloqueo es un mensaje de aplicación del bloqueo, el mensaje de bloqueo contiene además un número de código del primer hilo; y
que el conjunto de bloqueo se configure además de modo que procese el mensaje de bloqueo incluye de manera específica:
buscar la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo solicitado;
comprobar un estado del bloqueo incluido en la información sobre el bloqueo solicitado;
si el estado del bloqueo solicitado es un estado ocupado, determinar si una cantidad de hilos que esperan el bloqueo solicitado es menor que una cantidad máxima de hilos soportados por el chip;
si la cantidad de hilos que esperan el bloqueo solicitado es menor que la cantidad máxima de hilos soportados por el chip, escribir el número de código del primer hilo en un campo de número de código de los hilos que esperan el bloqueo solicitado, y también actualizar la cantidad de los hilos que esperan el bloqueo; y
si la cantidad de hilos que esperan el bloqueo solicitado no es menor que la cantidad máxima de hilos soportados por el chip, escribir el número de código del primer hilo en la memoria del bloqueo solicitado.
En una cuarta manera de implementación posible, de acuerdo con el tercer aspecto o con la primera manera de implementación posible, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad de hilos que esperan el bloqueo solicitado, un número de código de un hilo que está utilizando en ese momento el bloqueo solicitado, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del hilo incluye si el hilo está esperando el bloqueo solicitado o si el hilo no está esperando el bloqueo solicitado; y
en la que el componente de enrutamiento envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar al conjunto de bloqueo que procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
De acuerdo con un cuarto aspecto, se proporciona un nodo informático, donde el nodo informático incluye el chip para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con cualquiera de los elementos del tercer aspecto.
De acuerdo con un quinto aspecto, se proporciona un sistema informático, donde el sistema informático incluye la memoria y el nodo informático de acuerdo con el cuarto aspecto.
Las realizaciones de la presente invención proporcionan un método, un aparato y un chip para implementar una operación mutuamente excluyente de múltiples hilos, donde el método incluye: recibir un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo
5
10
15
20
25
30
35
40
45
solicitado; y enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En función de las descripciones anteriores, se distribuyen múltiples conjuntos de bloqueo en un chip para gestionar de manera individual un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar un bloqueo que hay en diferentes núcleos pequeños, lo que soluciona de ese modo un fenómeno de congestión generado cuando aumenta una cantidad de hilos, reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
Breve descripción de los dibujos
Para describir las soluciones técnicas en las realizaciones de la presente invención de manera más clara, a continuación, se presentan brevemente los dibujos anexos necesarios para describir las realizaciones de la presente invención. Obviamente, los dibujos anexos en la siguiente descripción muestran simplemente algunas realizaciones de la presente invención, y un experto en la técnica aún puede obtener otros dibujos a partir de estos dibujos anexos sin esfuerzos creativos.
La figura 1 es un diagrama estructural esquemático de un chip para implementar una operación mutuamente excluyente de múltiples hilos en la técnica anterior;
la figura 2 es un método para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 3 es un diagrama estructural esquemático de un chip para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 4 muestra otro método para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 5 muestra otro método más para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 6 muestra un aparato para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 7 muestra un chip para implementar una operación mutuamente excluyente de múltiples hilos de acuerdo con una realización de la presente invención;
la figura 8 muestra un nodo informático de acuerdo con una realización de la presente invención; y la figura 9 muestra un sistema informático de acuerdo con una realización de la presente invención.
Descripción de las realizaciones
A continuación, se describen de manera clara y completa las soluciones técnicas en las realizaciones de la presente invención haciendo referencia a los dibujos anexos en las realizaciones de la presente invención. Obviamente, las realizaciones descritas son algunas, pero no todas, las realizaciones de la presente invención. Todas las demás realizaciones, basadas en las realizaciones de la presente invención, obtenidas por un experto en la técnica sin esfuerzos creativos estarán dentro del alcance de protección de la presente invención.
Realización 1
Esta realización de la presente invención proporciona un método para implementar una operación mutuamente excluyente de múltiples hilos. El método se ejecuta mediante un componente de enrutamiento en un chip, y de manera específica, tal como se muestra en la figura 2, donde el método incluye:
201: Recibir un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño.
El mensaje de bloqueo incluye un mensaje de aplicación del bloqueo y un mensaje de liberación del bloqueo.
De manera específica, con el desarrollo de los procesos con semiconductores, una cantidad de transistores que se puede integrar en un chip va en aumento, y para reducir el consumo de energía y la disipación de calor al tiempo que se mejora el rendimiento, un diseñador de arquitecturas presenta un procesador de múltiples núcleos/muchos núcleos en el chip, en paralelo, de grano grueso a nivel de hilo. El procesador de múltiples núcleos/muchos núcleos en el chip hace referencia a un procesador de múltiples núcleos/muchos núcleos integrado en un mismo chip, donde se integran más núcleos del procesador en el chip del procesador de muchos núcleos que en el procesador de múltiples núcleos. Se considera en general que un procesador con un chip en el que se integran menos de 8
5
10
15
20
25
30
35
40
45
50
pequeños núcleos se denomina procesador de múltiples núcleos, y un procesador con un chip en el que se integran más de 8 pequeños núcleos se denomina un procesador de muchos núcleos.
En los pequeños núcleos del procesador de múltiples núcleos/muchos núcleos, cuando se ejecutan múltiples hilos en paralelo, los múltiples hilos pueden compartir una variable. No obstante, en un instante, solo se permite que un hilo ocupe de manera excluyente la memoria compartida, en caso contrario se pueden desordenar los datos. En la técnica anterior, para solucionar el problema, se introduce un concepto de un bloqueo, donde el bloqueo es un mecanismo que garantiza que, en un instante, solo una operación de un hilo está protegida en múltiples hilos, y la información incluida en el bloqueo identifica un estado de la memoria compartida a la que accede el hilo. Que la memoria compartida tenga permitido el acceso se determina mediante la utilización del estado de la memoria compartida a la que se accede, de modo que cada hilo acceda de manera secuencial a la memoria compartida.
En esta realización de la presente invención, el componente de enrutamiento recibe el mensaje de aplicación del bloqueo enviado por el núcleo pequeño, donde el mensaje de aplicación del bloqueo contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño, encuentra el bloqueo utilizando la dirección de memoria y por último determina un estado del bloqueo solicitado.
Después de finalizar el acceso a la memoria compartida, el componente de enrutamiento recibe un mensaje de liberación del bloqueo enviado por el núcleo pequeño, donde el mensaje de liberación del bloqueo también contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño y libera espacio de la memoria compartida ejecutando el mensaje de liberación del bloqueo, de modo que otros hilos obtengan acceso a la memoria compartida.
202: Calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado.
De manera específica, en esta realización de la presente invención, se distribuyen múltiples conjuntos de bloqueo en un chip, y cada conjunto de bloqueo incluye una cantidad de bloqueos, de modo que se puedan dispersar múltiples bloqueos en los múltiples conjuntos de bloqueos. Cuando la cantidad de hilos aumenta, distintos conjuntos de bloqueo gestionan un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar el bloqueo que hay en cada núcleo pequeño, lo que soluciona de ese modo un fenómeno de congestión que se produce en la técnica anterior, al tiempo que reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
En consecuencia, debido a que hay múltiples conjuntos de bloqueo, después de recibir un mensaje de bloqueo enviado por el núcleo pequeño, el componente de enrutamiento primero necesita calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
El cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado puede incluir de manera específica:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Por ejemplo, hay 4 conjuntos de bloqueo cuyos números de
las direcciones de memoria correspondientes a 5 bloqueos, son de manera individual 0000, 0004, 0008, 000C y 0010;
las direcciones de memoria correspondientes a 5 bloqueos, son de manera individual 0001, 0005, 0009, 000D y 0011;
las direcciones de memoria correspondientes a 5 bloqueos, son de manera individual 0002, 0006, 000A, 000E y 0012; y
las direcciones de memoria correspondientes a 5 bloqueos, son de manera individual 0003, 0007, 000B, 000F y 0013.
Por ejemplo, si la dirección de memoria correspondiente al bloqueo solicitado es 0009 y la cantidad de conjuntos de bloqueo es 4, el resto se puede calcular en primer lugar mediante la siguiente fórmula:
el resto=resto (la dirección de memoria/la cantidad de conjuntos de bloqueo)
=resto(9/4)=1
y a continuación el resto 1 se utiliza como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.

código son de manera individual 0, 1, 2 y 3, donde en un conjunto de bloqueo cuyo número de código es 0,

en un conjunto de bloqueo cuyo número de código es 1,

en un conjunto de bloqueo cuyo número de código es 2,

en un conjunto de bloqueo cuyo número de código es 3,
5
10
15
20
25
30
35
40
45
50
Como alternativa, en el componente de enrutamiento también se puede almacenar previamente una correspondencia entre el número de código del conjunto de bloqueo y la dirección de memoria correspondiente al bloqueo solicitado. Por ejemplo, si hay 3 conjuntos de bloqueo 1, 2 y 3, la correspondencia almacenada previamente es:
el conjunto de bloqueo 1: un campo de dirección de memoria identificado por un bloqueo es 0000-003F;
el conjunto de bloqueo 2: un campo de dirección de memoria identificado por un bloqueo es 0040-007F; y
el conjunto de bloqueo 3: un campo de dirección de memoria identificado por un bloqueo es 0080-00BF.
Si la dirección de memoria correspondiente al bloqueo solicitado es 0009, el número de código del conjunto de
bloqueo al que pertenece el bloqueo solicitado se puede calcular utilizando el siguiente método:
consultar una tabla de correspondencias para determinar que 0009 está dentro del campo de dirección 0000-003F, que se corresponde con el conjunto de bloqueo 1, de modo que el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado es 1.
Esta realización de la presente invención pretende describir el cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, y no pretende limitar de manera específica cómo calcular el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
203: Enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
De manera específica, después de calcular, al utilizar la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, el envío del mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar que el conjunto de bloqueo procese el mensaje de bloqueo, puede incluir de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado; y
actualizar la información sobre el bloqueo solicitado.
La información sobre el bloqueo solicitado puede incluir: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo, y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
Como alternativa, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo y si el hilo no está esperando el bloqueo.
Esta realización de la presente invención no limita de manera específica la información sobre el bloqueo solicitado.
Esta realización de la presente invención proporciona un método para implementar una operación mutuamente excluyente de múltiples hilos, donde el método incluye: recibir un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En función de las descripciones de la realización anterior, se distribuyen múltiples conjuntos de bloqueo en un chip para gestionar de manera individual un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar un bloqueo que hay en diferentes núcleos pequeños, lo que soluciona de ese modo un fenómeno de congestión generado cuando aumenta una cantidad de hilos, reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
Realización 2
Esta realización de la presente invención proporciona un método para implementar una operación mutuamente excluyente de múltiples hilos. El método se describe tomando un diagrama estructural esquemático de un chip
5
10
15
20
25
30
35
40
45
50
55
mostrado en la figura 3 a modo de ejemplo. El chip incluye núcleos pequeños, componentes de enrutamiento y conjuntos de bloqueo. Cada núcleo pequeño está conectado a un componente de enrutamiento, y los componentes de enrutamiento están interconectados, de modo que formen una red en el chip.
Alrededor del núcleo pequeño se distribuyen múltiples conjuntos de bloqueo, la información incluida en los múltiples bloqueos se almacena en el conjunto de bloqueo, y un componente de enrutamiento está conectado directamente al conjunto de bloqueo. De esta manera, el núcleo pequeño puede interactuar con el conjunto de bloqueo utilizando un componente de enrutamiento conectado al núcleo pequeño.
De manera específica, que el núcleo pequeño envíe un mensaje de aplicación del bloqueo se toma como un ejemplo para la descripción. Tal como se muestra en la figura 4, el método incluye:
401: Un componente de enrutamiento recibe un mensaje de aplicación del bloqueo enviado por un núcleo pequeño, donde el mensaje de aplicación del bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño.
De manera específica, con el desarrollo de los procesos con semiconductores, una cantidad de transistores que se puede integrar en un chip va en aumento, y para reducir el consumo de energía y la disipación de calor al tiempo que se mejora el rendimiento, un diseñador de arquitecturas presenta un procesador de múltiples núcleos/muchos núcleos en el chip, en paralelo, de grano grueso a nivel de hilo. El procesador de múltiples núcleos/muchos núcleos en el chip hace referencia a un procesador de múltiples núcleos/muchos núcleos integrado en un mismo chip, donde se integran más núcleos del procesador en el chip del procesador de muchos núcleos que en el procesador de múltiples núcleos. Se considera en general que un procesador con un chip en el que se integran menos de 8 pequeños núcleos se denomina procesador de múltiples núcleos, y un procesador con un chip en el que se integran más de 8 pequeños núcleos se denomina un procesador de muchos núcleos.
En los pequeños núcleos del procesador de múltiples núcleos/muchos núcleos, cuando se ejecutan múltiples hilos en paralelo, múltiples hilos pueden compartir una variable. No obstante, en un instante, solo se permite que un hilo ocupe de manera excluyente la memoria compartida, en caso contrario se pueden desordenar los datos. En la técnica anterior, para solucionar el problema, se introduce un concepto de un bloqueo, donde el bloqueo es un mecanismo que garantiza que, en un instante, solo un hilo está protegido en múltiples hilos, y la información incluida en el bloqueo identifica un estado de la memoria compartida a la que accede el hilo. Que la memoria compartida tenga permitido el acceso se determina mediante la utilización del estado de la memoria compartida a la que se accede, de modo que cada hilo acceda de manera secuencial a la memoria compartida. La información sobre el bloqueo solicitado puede incluir: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
Como alternativa, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que está utilizando el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo y si el hilo no está esperando el bloqueo.
Esta realización de la presente invención no limita de manera específica la información sobre el bloqueo solicitado.
En esta realización de la presente invención, el componente de enrutamiento recibe el mensaje de aplicación del bloqueo enviado por el núcleo pequeño, donde el mensaje de aplicación del bloqueo contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño, encuentra información sobre el bloqueo utilizando la dirección de memoria y por último determina un estado del bloqueo solicitado.
402: El componente de enrutamiento calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado. De manera específica, en esta realización de la presente invención, se distribuyen múltiples conjuntos de bloqueo en un chip, y cada conjunto de bloqueo incluye una cantidad de bloqueos, de modo que se puedan dispersar múltiples bloqueos en los múltiples conjuntos de bloqueos. Cuando la cantidad de hilos aumenta, distintos conjuntos de bloqueo gestionan un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar el bloqueo que hay en cada núcleo pequeño, lo que soluciona de ese modo un fenómeno de congestión que se produce en la técnica anterior, al tiempo que reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
En consecuencia, debido a que hay múltiples conjuntos de bloqueo, después de recibir un mensaje de bloqueo enviado por el núcleo pequeño, el componente de enrutamiento primero necesita calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
5
10
15
20
25
30
35
40
45
El cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, donde un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado puede incluir de manera específica:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Por ejemplo, hay 4 conjuntos de bloqueo cuyos números de código son de manera individual 0, 1,2 y 3, donde
las direcciones de memoria correspondientes a 5 bloqueos, en un conjunto de bloqueo cuyo número de código es 0, son de manera individual 0000, 0004, 0008, 000C y 0010;
las direcciones de memoria correspondientes a 5 bloqueos, en un conjunto de bloqueo cuyo número de código es 1, son de manera individual 0001, 0005, 0009, 000D y 0011;
las direcciones de memoria correspondientes a 5 bloqueos en un conjunto de bloqueo cuyo número de código es 2 son de manera individual 0002, 0006, 000A, 000E y 0012; y
las direcciones de memoria correspondientes a 5 bloqueos en un conjunto de bloqueo cuyo número de código es 3 son de manera individual 0003, 0007, 000B, 000F y 0013.
Por ejemplo, si la dirección de memoria correspondiente al bloqueo solicitado es 0009 y la cantidad de conjuntos de bloqueo es 4, el resto se puede calcular en primer lugar mediante la siguiente fórmula:
el resto=resto (la dirección de memoria/la cantidad de conjuntos de bloqueo)
=resto(9/4)=1
Y a continuación el resto 1 se utiliza como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Como alternativa, en el componente de enrutamiento también se puede almacenar previamente una correspondencia entre el número de código del conjunto de bloqueo y la dirección de memoria correspondiente al bloqueo solicitado. Por ejemplo, si hay 3 conjuntos de bloqueo 1,2 y 3, la correspondencia almacenada previamente es:
el conjunto de bloqueo 1: un campo de dirección de memoria identificado por un bloqueo es 0000-003F;
el conjunto de bloqueo 2: un campo de dirección de memoria identificado por un bloqueo es 0040-007F; y
el conjunto de bloqueo 3: un campo de dirección de memoria identificado por un bloqueo es 0080-00BF.
Si la dirección de memoria correspondiente al bloqueo solicitado es 0009, el número de código del conjunto de
bloqueo al que pertenece el bloqueo solicitado se puede calcular utilizando el siguiente método:
consultar una tabla de correspondencias para determinar que 0009 está dentro del campo de dirección 0000-003F, que se corresponde con el conjunto de bloqueo 1, de modo que el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado es 1.
Esta realización de la presente invención pretende describir el cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, y no pretende limitar de manera específica cómo calcular el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
403: El componente de enrutamiento envía el mensaje de aplicación del bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de aplicación del bloqueo.
De manera específica, después de calcular, al utilizar la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, el envío del mensaje de aplicación del bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar que el conjunto de bloqueo procese el mensaje de aplicación del bloqueo, puede incluir de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con un estado del bloqueo incluido en la información sobre el bloqueo solicitado, y actualizar la información sobre el bloqueo solicitado.
5
10
15
20
25
30
35
40
La información sobre el bloqueo solicitado puede incluir: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo, y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
Como alternativa, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que está utilizando el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo o si el hilo no está esperando el bloqueo.
Esta realización de la presente invención no limita de manera específica la información sobre el bloqueo solicitado.
404: El conjunto de bloqueo recibe el mensaje de aplicación del bloqueo enviado por el componente de enrutamiento. Después de que el conjunto de bloqueo reciba el mensaje de aplicación del bloqueo, enviado por el componente de enrutamiento, el conjunto de bloqueo comienza a llevar a cabo la operación de procesamiento del mensaje de aplicación del bloqueo, es decir, los pasos 405 a 408.
405: El conjunto de bloqueo busca la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de aplicación del bloqueo.
406: El conjunto de bloqueo determina, de acuerdo con un estado del bloqueo incluido en la información sobre el bloqueo solicitado, si el bloqueo solicitado está ocupado por un segundo hilo.
De manera específica, una estructura interna de un bloqueo, tal como se muestra en la Tabla 1, puede incluir: Dirección: un identificador único de un bloqueo, es decir, una dirección de memoria;
Estado: un estado del bloqueo, que incluye un estado inactivo y un estado ocupado;
Contador: una cantidad de hilos que esperan el bloqueo;
Usuario: un número de código de un hilo que en ese momento utiliza el bloqueo;
Elemento en espera 1, Elemento en espera 2, ..., y Elemento en espera N: los números de código de los hilos que esperan el bloqueo, donde N es una cantidad máxima de hilos soportados por un chip; y
Puntero: la información que indica el próximo hilo en adquirir el bloqueo.
Tabla 1
Dirección
Estado Contador Usuario Elemento en espera Elemento en espera Elemento en espera Puntero
1 2 N
El campo de Estado que representa el estado del bloqueo indica si el bloqueo está ocupado por un segundo hilo.
Si el bloqueo está en el estado ocupado, esto indica que el bloqueo está ocupado por el segundo hilo y lleva a cabo el paso 407.
Si el bloqueo está en el estado inactivo, esto indica que el bloqueo no está ocupado por el segundo hilo y lleva a cabo el paso 408.
Una estructura interna de un bloqueo, tal como se muestra en la Tabla 2, puede incluir:
Dirección: un identificador único de un bloqueo, es decir, una dirección de memoria;
Estado: un estado del bloqueo, que incluye un estado inactivo y un estado ocupado;
Contador: una cantidad de hilos que esperan el bloqueo;
Usuario: un número de código de un hilo que está utilizando el bloqueo;
Máscara de bits de elementos en espera: un vector que indica los estados de todos los hilos en un chip, donde cada bit se puede utilizar para representar un hilo, por ejemplo, el primer bit representa un hilo 1, el segundo bit representa un hilo 2, ..., donde el valor de uno de los bits se puede establecer como sigue: "1" representa que el hilo está esperando el bloqueo y "0" representa que el hilo ya no espera el bloqueo, de modo que se pueda reducir el espacio de almacenamiento; y
Puntero: la información que indica el próximo hilo en adquirir el bloqueo.
5
10
15
20
25
30
35
40
45
50
Tabla 2
Dirección
Estado Contador Usuario Máscara de bits de elementos en espera Puntero
De manera similar, el campo de Estado que representa el estado del bloqueo indica si el bloqueo está ocupado por un segundo hilo.
Si el bloqueo está en el estado ocupado, esto indica que el bloqueo está ocupado por el segundo hilo; y si el bloqueo está en el estado inactivo, esto indica que el bloqueo no está ocupado por el segundo hilo.
El conjunto de bloqueo procesa el mensaje de aplicación del bloqueo de acuerdo con el estado del bloqueo solicitado, en lugar de completar una operación mutuamente excluyente mediante el establecimiento de un bit indicador y sondear constantemente el bit indicador. Por lo tanto, esta realización de la presente invención puede evitar un problema de gran presión sobre la red provocada por el sondeo constante del bit indicador. Asimismo, debido a que el estado del bloqueo es una parte de información incluida en el bloqueo, mientras el bloqueo es una parte del conjunto de bloqueo en el chip, todas las operaciones del método se ejecutan en el chip, lo que evita de ese modo un problema de mayores sobrecargas del sistema generadas por el acceso a un bit indicador fuera del chip.
407: Si el bloqueo solicitado está ocupado por el segundo hilo, el conjunto de bloqueo guarda, en el bloqueo solicitado, un registro de que el primer hilo solicita el bloqueo.
De manera específica, si el bloqueo está en el estado ocupado, esto indica que el bloqueo está ocupado por el segundo hilo, y para la estructura interna del bloqueo mostrada en la Tabla 1, es este caso, el número de código del primer hilo se debería escribir en el campo de Elemento en espera. No obstante, considerando que la cantidad máxima de hilos soportados por el chip es N, en primer lugar se debería determinar si una cantidad de hilos de la solicitud es menor que la cantidad máxima de hilos soportados por el chip, y si Contador<N, el número de código del primer hilo se escribe en el campo de número de código del hilo que espera el bloqueo solicitado, es decir, el campo de Elemento en espera, y además el valor del Contador debería aumentar en 1; y si Contador^N, el número de código del primer hilo se escribe en la memoria identificada por el bloqueo solicitado.
Para la estructura interna del bloqueo mostrada en la Tabla 2, en el vector que indica los estados de todos los hilos en el chip, el estado del primer hilo se debería cambiar a estado en espera, y el valor de Contador se debería aumentar en 1.
408: Si el bloqueo solicitado no está ocupado por el segundo hilo, el conjunto de bloqueo envía, al primer hilo en el núcleo pequeño, un mensaje reconociendo el éxito de la aplicación del bloqueo, y guarda, en el bloqueo solicitado, un registro de que el bloqueo solicitado está ocupado por el primer hilo.
De manera específica, si el bloqueo está en el estado inactivo que indica que el bloqueo solicitado no está ocupado por el segundo hilo, el conjunto de bloqueo envía, al primer hilo en el núcleo pequeño, el mensaje reconociendo el éxito de la aplicación del bloqueo, de modo que el primer hilo acceda a la memoria compartida para ejecutar el código correspondiente, y guarde, además, en el bloqueo solicitado, el registro de que el bloqueo solicitado está ocupado por el primer hilo. Por ejemplo, para la estructura interna del bloqueo mostrada en la Tabla 1, en este caso, el estado del bloqueo se debería actualizar al estado ocupado, y también se escribe el número de código del primer hilo en el campo de número de código del hilo que en ese momento utiliza el bloqueo; y para la estructura interna del bloqueo mostrada en la Tabla 2, en este caso, el estado del bloqueo se debería actualizar al estado ocupado, también se debería escribir el número de código del primer hilo en el campo de número de código del hilo que en ese momento utiliza el bloqueo, y además en el vector que indica los estados de todos los hilos en el chip, donde el estado del primer hilo se actualiza a no estar esperando el bloqueo.
De manera específica, si el mensaje de bloqueo enviado por el núcleo pequeño es un mensaje de liberación del bloqueo, tal como se muestra en la figura 5, el método incluye:
501: Un componente de enrutamiento recibe un mensaje de liberación del bloqueo enviado por un núcleo pequeño, donde el mensaje de liberación del bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño.
De manera específica, después de que el primer hilo adquiera el bloqueo solicitado por el primer hilo para acceder a la memoria compartida, y ejecute el código correspondiente en su totalidad, el componente de enrutamiento recibe además un mensaje de liberación del bloqueo enviado por el núcleo pequeño, donde el mensaje de liberación del bloqueo también contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño y libera espacio de la memoria compartida ejecutando el mensaje de liberación del bloqueo, de modo que otros hilos obtengan acceso a la memoria compartida.
502: El componente de enrutamiento calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado.
5
10
15
20
25
30
35
40
45
50
55
De manera específica, para el método de cálculo de un número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado, utilizando la dirección de memoria del bloqueo solicitado, se puede hacer referencia a la descripción del paso 402, que no se repite en esta realización de la presente invención.
503: El componente de enrutamiento envía el mensaje de liberación del bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de liberación del bloqueo.
504: El conjunto de bloqueo recibe el mensaje de liberación del bloqueo enviado por el componente de enrutamiento.
Después de que el conjunto de bloqueo reciba el mensaje de liberación del bloqueo, enviado por el componente de enrutamiento, el conjunto de bloqueo comienza a llevar a cabo la operación de procesamiento del mensaje de liberación del bloqueo, es decir, los pasos 505 a 508.
505: El conjunto de bloqueo busca la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo que está contenida en el mensaje de liberación del bloqueo. 506: El conjunto de bloqueo elimina un registro guardado de que el bloqueo solicitado está ocupado por el primer hilo.
De manera específica, cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en forma de una cola mostrada en la Tabla 1, después de que el conjunto de bloqueo reciba el mensaje de liberación del bloqueo enviado por el componente de enrutamiento, el estado del bloqueo se debería actualizar al estado inactivo, y se debería borrar el campo de número de código, en la cola, del hilo que en ese momento utiliza el bloqueo.
Cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en una forma mostrada en la Tabla 2, después de que el conjunto de bloqueo reciba el mensaje de liberación del bloqueo enviado por el componente de enrutamiento, el estado del bloqueo se debería actualizar al estado inactivo, también se debería borrar el campo de número de código, en la cola, del hilo que está utilizando el bloqueo y además en el vector que indica los estados de todos los hilos en el chip, se actualiza el estado del primer hilo a no estar esperando el bloqueo.
507: El conjunto de bloqueo determina, de acuerdo con la cantidad de hilos que esperan el bloqueo incluidos en la información sobre el bloqueo solicitado, si en el conjunto de bloqueo existe un tercer hilo que espera el bloqueo solicitado.
De manera específica, cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en una forma mostrada en la Tabla 1, si existe el tercer hilo que espera el bloqueo solicitado se puede determinar de acuerdo con el Contador que representa la cantidad de hilos que esperan el bloqueo. Si Contador>0, esto indica que existe el tercer hilo que espera el bloqueo solicitado, y si Contador=0, esto indica que no existe el tercer hilo que espera el bloqueo solicitado.
De manera similar, cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en una forma mostrada en la Tabla 2, si existe el tercer hilo que espera el bloqueo solicitado también se puede determinar de acuerdo con el Contador que representa la cantidad de hilos que esperan el bloqueo, lo que no se repite en la presente.
508: Si existe el tercer hilo que espera el bloqueo solicitado, el conjunto de bloqueo envía, al tercer hilo, un mensaje reconociendo el éxito de la aplicación del bloqueo, y guarda, en el bloqueo solicitado, un registro de que el bloqueo solicitado está ocupado por el tercer hilo.
De manera específica, cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en una forma mostrada en la Tabla 1, si existe el tercer hilo que espera el bloqueo solicitado, el número de código del tercer hilo se puede determinar de acuerdo con la información que indica un próximo hilo en adquirir el bloqueo, y a continuación el conjunto de bloqueo envía, al tercer hilo, el mensaje reconociendo el éxito de la aplicación del bloqueo, de modo que el tercer hilo acceda a la memoria compartida para ejecutar el código correspondiente, y también guarda además, en el bloqueo solicitado, el registro de que el bloqueo solicitado está ocupado por el tercer hilo. Es decir, en este caso, se debería actualizar el estado del bloqueo al estado ocupado, y también se escribe el número de código del tercer hilo en el campo de número de código del hilo que en ese momento utiliza el bloqueo, y la cantidad de hilos que esperan el bloqueo disminuye en 1. Cuando el bloqueo solicitado se almacena en el conjunto de bloqueo en una forma mostrada en la Tabla 2, un bit del vector en el que está el tercer hilo se puede determinar de acuerdo con la información que indica un próximo hilo en adquirir el bloqueo, y a continuación el conjunto de bloqueo envía, al tercer hilo, el mensaje reconociendo el éxito de la aplicación del bloqueo, de modo que el tercer hilo acceda a la memoria compartida para ejecutar el código correspondiente, y guarda además, en el bloqueo solicitado, el registro de que el bloqueo solicitado está ocupado por el tercer hilo. Es decir, en este caso, se debería actualizar el estado del bloqueo al estado ocupado, y además en el vector que indica los estados de todos los hilos en el chip, se actualiza el estado del tercer hilo a no estar esperando el bloqueo, y la cantidad de hilos que esperan el bloqueo disminuye en 1.
Esta realización de la presente invención proporciona un método para implementar una operación mutuamente excluyente de múltiples hilos, donde el método incluye: recibir un mensaje de bloqueo enviado por un núcleo
5
10
15
20
25
30
35
40
45
50
55
pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En función de las descripciones de la realización anterior, se distribuyen múltiples conjuntos de bloqueo en un chip para gestionar de manera individual un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar un bloqueo que hay en diferentes núcleos pequeños, lo que soluciona de ese modo un fenómeno de congestión generado cuando aumenta una cantidad de hilos, reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
Realización 3
Esta realización de la presente invención proporciona un aparato 60 para implementar una operación mutuamente excluyente de múltiples hilos. De manera específica, tal como se muestra en la figura 6, el aparato 60 incluye una unidad de recepción 61, una unidad de cálculo 62 y una unidad de envío 63.
La unidad de recepción 61 se configura de modo que reciba un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo.
De manera específica, con el desarrollo de los procesos con semiconductores, una cantidad de transistores que se puede integrar en un chip va en aumento, y para reducir el consumo de energía y la disipación de calor al tiempo que se mejora el rendimiento, un diseñador de arquitecturas presenta un procesador de múltiples núcleos/muchos núcleos en el chip, en paralelo, de grano grueso a nivel de hilo. El procesador de múltiples núcleos/muchos núcleos en el chip hace referencia a un procesador de múltiples núcleos/muchos núcleos integrado en un mismo chip, donde se integran más núcleos del procesador en el chip del procesador de muchos núcleos que en el procesador de múltiples núcleos. Se considera en general que un procesador con un chip en el que se integran menos de 8 pequeños núcleos se denomina procesador de múltiples núcleos, y un procesador con un chip en el que se integran más de 8 pequeños núcleos se denomina un procesador de muchos núcleos.
En los pequeños núcleos del procesador de múltiples núcleos/muchos núcleos, cuando se ejecutan múltiples hilos en paralelo, los múltiples hilos pueden compartir una variable. No obstante, en un instante, solo se permite que un hilo ocupe de manera excluyente la memoria compartida; en caso contrario se pueden desordenar los datos. En la técnica anterior, para solucionar el problema, se introduce un concepto de un bloqueo, donde el bloqueo es un mecanismo que garantiza que, en un instante, solo una operación de un hilo está protegida en múltiples hilos, y la información incluida en el bloqueo identifica un estado de la memoria compartida a la que accede el hilo. Que la memoria compartida tenga permitido el acceso se determina mediante la utilización del estado de la memoria compartida a la que se accede, de modo que cada hilo acceda de manera secuencial a la memoria compartida.
La información sobre el bloqueo solicitado puede incluir: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo, y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
Como alternativa, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que está utilizando el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo o si el hilo no está esperando el bloqueo.
Esta realización de la presente invención no limita de manera específica la información sobre el bloqueo solicitado.
En esta realización de la presente invención, la unidad de recepción 61 recibe el mensaje de aplicación del bloqueo, que contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño, enviado por el núcleo pequeño, encuentra el bloqueo utilizando la dirección de memoria y por último determina un estado del bloqueo solicitado.
Después de finalizar el acceso a la memoria compartida, la unidad de recepción 61 recibe un mensaje de liberación del bloqueo, que también contiene la dirección de memoria correspondiente al bloqueo solicitado por el primer hilo en el núcleo pequeño, enviado por el núcleo pequeño, y libera espacio de la memoria compartida ejecutando el mensaje de liberación del bloqueo, de modo que otros hilos obtengan acceso a la memoria compartida.
La unidad de cálculo 62 se configura de modo que calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado.
5
10
15
20
25
30
35
40
45
De manera específica, en esta realización de la presente invención, se distribuyen múltiples conjuntos de bloqueo en un chip, y cada conjunto de bloqueo incluye una cantidad de bloqueos, de modo que se puedan dispersar múltiples bloqueos en los múltiples conjuntos de bloqueos. Cuando aumenta la cantidad de hilos, distintos conjuntos de bloqueo gestionan un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar el bloqueo que hay en cada núcleo pequeño, lo que soluciona de ese modo un fenómeno de congestión que se produce en la técnica anterior, al tiempo que reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
En consecuencia, debido a que hay múltiples conjuntos de bloqueo, después de recibir un mensaje de bloqueo enviado por el núcleo pequeño, el componente de enrutamiento primero necesita calcular, utilizando la dirección de memoria correspondiente al bloqueo solicitado, el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
El cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, donde un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado puede incluir de manera específica:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Por ejemplo, hay 4 conjuntos de bloqueo cuyos números de código son de manera individual 0, 1, 2 y 3, donde
las direcciones de memoria correspondientes a 5 bloqueos, en un conjunto de bloqueo cuyo número de código es 0, son de manera individual 0000, 0004, 0008, 000C y 0010;
las direcciones de memoria correspondientes a 5 bloqueos, en un conjunto de bloqueo cuyo número de código es 1, son de manera individual 0001,0005, 0009, 000D y 0011;
las direcciones de memoria correspondientes a 5 bloqueos en un conjunto de bloqueo cuyo número de código es 2 son de manera individual 0002, 0006, 000A, 000E y 0012; y
las direcciones de memoria correspondientes a 5 bloqueos en un conjunto de bloqueo cuyo número de código es 3 son de manera individual 0003, 0007, 000B, 000F y 0013.
Por ejemplo, si la dirección de memoria correspondiente al bloqueo solicitado es 0009 y:
La cantidad de conjuntos de bloqueo es 4, el resto se puede calcular en primer lugar mediante la siguiente formula: el resto=resto (la dirección de memoria/la cantidad de conjuntos de bloqueo)
=resto(9/4)=1
y a continuación el resto 1 se utiliza como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Como alternativa, en el componente de enrutamiento también se puede almacenar previamente una correspondencia entre el número de código del conjunto de bloqueo y la dirección de memoria correspondiente al bloqueo solicitado. Por ejemplo, si hay 3 conjuntos de bloqueo 1,2 y 3, la correspondencia almacenada previamente es:
el conjunto de bloqueo 1: un campo de dirección de memoria identificado por un bloqueo es 0000-003F;
el conjunto de bloqueo 2: un campo de dirección de memoria identificado por un bloqueo es 0040-007F; y
el conjunto de bloqueo 3: un campo de dirección de memoria identificado por un bloqueo es 0080-00BF.
Si la dirección de memoria correspondiente al bloqueo solicitado es 0009, el número de código del conjunto de
bloqueo al que pertenece el bloqueo solicitado se puede calcular utilizando el siguiente método:
consultar una tabla de correspondencias para determinar que 0009 está dentro del campo de dirección 0000-003F, que se corresponde con el conjunto de bloqueo 1, de modo que el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado es 1.
Esta realización de la presente invención pretende describir el cálculo, utilizando la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, y no pretende limitar de manera específica cómo calcular el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
La unidad de envío 63 se configura de modo que envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo;
5
10
15
20
25
30
35
40
45
50
De manera específica, después del cálculo, al utilizar la dirección de memoria correspondiente al bloqueo solicitado, de un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado, el envío del mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar que el conjunto de bloqueo procese el mensaje de bloqueo, puede incluir de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y actualizar la información sobre el bloqueo solicitado.
Asimismo, que la unidad de cálculo 62 calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado incluye de manera específica:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
De manera específica, para el método con el que la unidad de cálculo 62 calcula un resto dividiendo la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utiliza el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado, se puede hacer referencia a la descripción del paso 202 en la realización 2, que no se repite en esta realización de la presente invención.
Asimismo, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo, y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
En el que la unidad de envío 63 envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar que el conjunto de bloqueo procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y actualizar la información sobre el bloqueo solicitado.
De manera específica, para una estructura interna del bloqueo solicitado se puede hacer referencia a la descripción de la Tabla 1 en la realización 2, que no se repite en esta realización de la presente invención.
Cabe destacar que, el conjunto de bloqueo procesa el mensaje de aplicación del bloqueo de acuerdo con el estado del bloqueo solicitado, en lugar de completar una operación mutuamente excluyente mediante el establecimiento de un bit indicador y sondear constantemente el bit indicador. Por lo tanto, esta realización de la presente invención puede evitar un problema de gran presión sobre la red provocada por el sondeo constante del bit indicador, y el estado del bloqueo es una parte de la información incluida en el bloqueo, mientras que el bloqueo es una parte del conjunto de bloqueo en el chip. Por lo tanto, todas las operaciones del método se ejecutan en el chip, lo que evita de ese modo un problema de sobrecargas del sistema relativamente grandes generadas por el acceso a un bit indicador fuera del chip.
De manera opcional, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que está utilizando el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo y si el hilo no está esperando el bloqueo.
En el que la unidad de envío 63 envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar que el conjunto de bloqueo procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
De manera específica, para una estructura interna del bloqueo solicitado se puede hacer referencia a la descripción de la Tabla 2 en la realización 2, que no se describe de nuevo en esta realización de la presente invención.
5
10
15
20
25
30
35
40
45
50
De manera similar, el conjunto de bloqueo procesa el mensaje de aplicación del bloqueo de acuerdo con el estado del bloqueo solicitado, en lugar de completar una operación mutuamente excluyente mediante el establecimiento de un bit indicador y sondear constantemente el bit indicador. Por lo tanto, esta realización de la presente invención puede evitar un problema de gran presión sobre la red provocada por el sondeo constante del bit indicador, y el estado del bloqueo es una parte de la información incluida en el bloqueo, mientras que el bloqueo es una parte del conjunto de bloqueo en el chip. Por lo tanto, todas las operaciones del método se ejecutan en el chip, lo que evita de ese modo un problema de sobrecargas del sistema relativamente grandes generadas por el acceso a un bit indicador fuera del chip.
Esta realización de la presente invención proporciona un aparato para implementar una operación mutuamente excluyente de múltiples hilos, donde el aparato incluye: una unidad de recepción, una unidad de cálculo y una unidad de envío. La unidad de recepción recibe un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; la unidad de cálculo calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y la unidad de envío envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En función de las descripciones de la realización anterior, se distribuyen múltiples conjuntos de bloqueo en un chip para gestionar de manera individual un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar un bloqueo que hay en diferentes núcleos pequeños, lo que soluciona de ese modo un fenómeno de congestión generado cuando aumenta una cantidad de hilos, reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos, haciendo referencia al aparato para implementar una operación mutuamente excluyente de múltiples hilos.
Realización 4
Esta realización de la presente invención proporciona un chip 70 para implementar una operación mutuamente excluyente de múltiples hilos. De manera específica, tal como se muestra en la figura 7, el chip 70 incluye un núcleo pequeño 71, un componente de enrutamiento 72 y un conjunto de bloqueo 73.
El componente de enrutamiento 72 se configura de modo que reciba un mensaje de bloqueo enviado por el núcleo pequeño 71, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño 71, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo.
El componente de enrutamiento 72 se configura además de modo que calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código del conjunto de bloqueo 73 al que pertenece el bloqueo solicitado.
El componente de enrutamiento 72 se configura además de modo que envíe el mensaje de bloqueo al conjunto de bloqueo 73 correspondiente al número de código.
El conjunto de bloqueo 73 se configura de modo que reciba el mensaje de bloqueo enviado por el componente de enrutamiento 72.
El conjunto de bloqueo 73 se configura además de modo que procese el mensaje de bloqueo.
De manera específica, para el método con el que el conjunto de bloqueo 73 procesa el mensaje de bloqueo se puede hacer referencia a la descripción en la realización 2, que no se repite en esta realización de la presente invención.
Asimismo, que el componente de enrutamiento 72 calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código del conjunto de bloqueo 73 al que pertenece el bloqueo solicitado incluye de manera específica:
calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
Asimismo, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad y los números de código de los hilos que esperan el bloqueo, un número de código de un hilo que en ese momento utiliza el bloqueo y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del bloqueo es un estado inactivo o un estado ocupado.
En el que el componente de enrutamiento 72 envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar que el conjunto de bloqueo procese el mensaje de bloqueo incluye de manera específica:
5
10
15
20
25
30
35
40
45
50
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y actualizar la información sobre el bloqueo solicitado.
De manera específica, para una estructura interna del bloqueo solicitado se puede hacer referencia a la descripción de la Tabla 1 en la realización 2, que no se repite en esta realización de la presente invención.
Asimismo, si el mensaje de bloqueo es un mensaje de aplicación del bloqueo, el mensaje de bloqueo contiene además un número de código del primer hilo.
Que el conjunto de bloqueo 73 se configure además de modo que procese el mensaje de bloqueo incluye de manera específica:
buscar la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo solicitado;
comprobar un estado del bloqueo incluido en la información sobre el bloqueo solicitado;
si el estado del bloqueo solicitado es un estado ocupado, determinar si una cantidad de hilos que esperan el bloqueo solicitado es menor que una cantidad máxima de hilos soportados por el chip;
si la cantidad de hilos que esperan el bloqueo solicitado es menor que la cantidad máxima de hilos soportados por el chip, escribir el número de código del primer hilo en un campo de número de código de los hilos que esperan el bloqueo solicitado, y también actualizar la cantidad de los hilos que esperan el bloqueo; y
si la cantidad de hilos que esperan el bloqueo solicitado no es menor que la cantidad máxima de hilos soportados por el chip, escribir el número de código del primer hilo en la memoria del bloqueo solicitado.
De manera opcional, la información sobre el bloqueo solicitado incluye: la dirección de memoria correspondiente al bloqueo, un estado del bloqueo, una cantidad de hilos que esperan el bloqueo, un número de código de un hilo que está utilizando el bloqueo, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo, donde el estado del hilo incluye si el hilo está esperando el bloqueo.
En el que el componente de enrutamiento 73 envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde solicitar que el conjunto de bloqueo procese el mensaje de bloqueo incluye de manera específica:
enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el conjunto de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y también actualizar la información sobre el bloqueo solicitado.
De manera específica, para una estructura interna del bloqueo solicitado se puede hacer referencia a la descripción de la Tabla 2 en la realización 2, que no se repite en esta realización de la presente invención.
De manera específica, para el método con el que el chip 70 implementa una operación mutuamente excluyente de múltiples hilos se puede hacer referencia a la descripción en la realización 2, que no se repite en esta realización de la presente invención.
Esta realización de la presente invención proporciona un chip para implementar una operación mutuamente excluyente de múltiples hilos, donde el chip incluye: un núcleo pequeño, un componente de enrutamiento y un conjunto de bloqueo. En primer lugar, el componente de enrutamiento recibe un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; a continuación, el componente de enrutamiento calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y posteriormente, el componente de enrutamiento envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
En función de las descripciones de la realización anterior, el chip puede completar de manera independiente el método para una operación mutuamente excluyente de múltiples hilos, y por lo tanto, se puede evitar el problema de sobrecargas del sistema relativamente grandes generadas por acceder a un bit indicador fuera del chip; y también se distribuyen múltiples conjuntos de bloqueo en el chip para gestiona de manera individual un mensaje de aplicación del bloqueo para aplicar un bloqueo y un mensaje de liberación del bloqueo para liberar un bloqueo que son de distintos núcleos pequeños, lo que soluciona de ese modo un fenómeno de congestión generado cuando
5
10
15
20
25
30
35
40
45
50
aumenta una cantidad de hilos, reduce un tiempo de espera de los hilos y mejora una velocidad de ejecución colaborativa de los hilos.
Realización 5
Esta realización de la presente invención proporciona además un nodo informático 80. De manera específica, tal como se muestra en la figura 8, el nodo informático 80 incluye un chip 70 para implementar una operación mutuamente excluyente de múltiples hilos.
El chip 70 se configura de modo que implemente una operación mutuamente excluyente de múltiples hilos, e incluye un núcleo pequeño 71, un componente de enrutamiento 72 y un conjunto de bloqueo 73.
El componente de enrutamiento 72 se configura de modo que reciba un mensaje de bloqueo enviado por el núcleo pequeño 71, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño 71, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo.
El componente de enrutamiento 72 se configura además de modo que calcule, utilizando la dirección de memoria del bloqueo solicitado, un número de código del conjunto de bloqueo 73 al que pertenece el bloqueo solicitado.
El componente de enrutamiento 72 se configura además de modo que envíe el mensaje de bloqueo al conjunto de bloqueo 73 correspondiente al número de código.
El conjunto de bloqueo 73 se configura de modo que reciba el mensaje de bloqueo enviado por el componente de enrutamiento 72.
El conjunto de bloqueo 73 se configura además de modo que procese el mensaje de bloqueo.
De manera específica, se puede hacer referencia al método para que el chip 70 implemente una operación mutuamente excluyente de múltiples hilos en la descripción de la realización 2, que no se repite en esta realización de la presente invención.
Esta realización de la presente invención proporciona un nodo informático, donde el nodo informático incluye: el chip para implementar una operación mutuamente excluyente de múltiples hilos de la realización 4. El chip incluye un núcleo pequeño, un componente de enrutamiento y un conjunto de bloqueo. En primer lugar, el componente de enrutamiento recibe un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; a continuación, el componente de enrutamiento calcula, utilizando la dirección de memoria del bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y posteriormente, el componente de enrutamiento envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo. Después de recibir el mensaje de bloqueo enviado por el componente de enrutamiento, el conjunto de bloqueo procesa el mensaje de bloqueo.
En función de las descripciones de la realización anterior, cuando el nodo informático completa una operación mutuamente excluyente de múltiples hilos, se puede evitar el problema de sobrecargas del sistema relativamente grandes generadas por que un hilo en un procesador de múltiples núcleos/muchos núcleos en el chip accede a un bit indicador fuera de un chip en el interior del nodo informático; y en el chip en el interior del nodo informático también se distribuyen múltiples conjuntos de bloqueo que almacenan una dirección de memoria correspondiente a un bloqueo, de modo que los bloqueos solicitados por los hilos no estén centralizados en un mismo componente en el chip. Por lo tanto, se puede solucionar un problema de congestión, se puede reducir un tiempo de espera de los hilos y se puede mejorar una velocidad de ejecución colaborativa de los hilos.
Realización 6
Esta realización de la presente invención proporciona un sistema informático 90. De manera específica, tal como se muestra en la figura 9, el sistema informático 90 incluye un nodo informático 80 y una memoria 91.
La memoria 91 se configura de modo que interactúe con el nodo informático 80 después de que un conjunto de bloqueo 73 en un chip 70 reciba un mensaje reconociendo el éxito de la aplicación del bloqueo, para completar una operación de lectura/escritura de un hilo.
El nodo informático 80 se configura de modo que implemente una operación mutuamente excluyente de múltiples hilos, e incluye el chip 70 para implementar una operación mutuamente excluyente de múltiples hilos.
El chip 70 incluye un núcleo pequeño 71, un componente de enrutamiento 72 y el conjunto de bloqueo 73.
El componente de enrutamiento 72 se configura de modo que reciba un mensaje de bloqueo enviado por el núcleo pequeño 71, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo
5
10
15
20
25
30
35
40
45
50
55
solicitado por un primer hilo en el núcleo pequeño 71, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo.
El componente de enrutamiento 72 se configura además de modo que calcule, utilizando la dirección de memoria del bloqueo solicitado, un número de código del conjunto de bloqueo 73 al que pertenece el bloqueo solicitado. El componente de enrutamiento 72 se configura además de modo que envíe el mensaje de bloqueo al conjunto de bloqueo 73 correspondiente al número de código.
El conjunto de bloqueo 73 se configura de modo que reciba el mensaje de bloqueo enviado por el componente de enrutamiento 72.
El conjunto de bloqueo 73 se configura además de modo que procese el mensaje de bloqueo.
De manera específica, se puede hacer referencia al método para que el chip 70 implemente una operación mutuamente excluyente de múltiples hilos en la descripción de la realización 2, que no se repite en esta realización de la presente invención.
Esta realización de la presente invención proporciona un sistema informático, donde el sistema informático incluye una memoria y el nodo informático de la realización 5, y la memoria se configura de modo que interactúe con el nodo informático después de que un conjunto de bloqueo en un chip reciba un mensaje reconociendo el éxito de la aplicación del bloqueo, para completar una operación de lectura/escritura de un hilo. El nodo informático incluye un chip para implementar una operación mutuamente excluyente de múltiples hilos. El chip incluye: un núcleo pequeño, un componente de enrutamiento y un conjunto de bloqueo. En primer lugar, el componente de enrutamiento recibe un mensaje de bloqueo enviado por el núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño; a continuación, el componente de enrutamiento calcula, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado; y posteriormente, el componente de enrutamiento envía el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo. Después de recibir el mensaje de bloqueo enviado por el componente de enrutamiento, el conjunto de bloqueo procesa el mensaje de bloqueo. En función de las descripciones de la realización anterior, cuando el sistema informático completa una operación mutuamente excluyente de múltiples hilos, se puede evitar el problema de sobrecargas del sistema más grandes generadas por que un hilo en un procesador de múltiples núcleos/muchos núcleos en el chip accede a un bit indicador fuera de un chip en el interior del sistema informático; y en el chip en el interior del sistema informático también se distribuyen múltiples conjuntos de bloqueo que almacenan una dirección de memoria correspondiente a un bloqueo, de modo que los bloqueos solicitados por los hilos no estén centralizados en un mismo componente en el chip. Por lo tanto, se puede solucionar un problema de congestión, se puede reducir un tiempo de espera de los hilos y se puede mejorar una velocidad de ejecución colaborativa de los hilos.
Cabe destacar que, las realizaciones del aparato descritas anteriormente son simplemente ilustrativas, donde las unidades descritas como componentes individuales pueden o no estar separadas físicamente, y los componentes mostrados como unidades pueden o no ser unidades físicas, es decir, pueden estar ubicados en una posición, o pueden estar distribuidos en múltiples unidades de red. Se pueden seleccionar algunos o todos sus módulos de acuerdo con las necesidades reales para implementar los objetivos de las soluciones de las realizaciones. Además, en los dibujos anexos de las realizaciones del aparato proporcionadas en la presente invención, la relación de conexión entre los módulos representa que los módulos tienen una conexión comunicada, y de manera específica se puede implementar como uno o más buses de comunicación o líneas de señal. Un experto en la técnica entenderá e implementará la presente invención sin esfuerzos creativos.
Por medio de las descripciones anteriores de las maneras de implementación, un experto en la técnica puede entender con claridad que la presente invención se puede implementar mediante software más el hardware general necesario, y sin duda también se puede implementar utilizando un hardware dedicado, tal como un circuito integrado dedicado, una CPU dedicada, una memoria dedicada o un componente dedicado. En general, cualquier función llevada a cabo por un programa informático se puede implementar fácilmente utilizando el hardware correspondiente, y también se pueden utilizar diversas estructuras específicas de hardware para implementar la misma función, tales como un circuito analógico, un circuito digital o un circuito dedicado. No obstante, para la presente invención, en más casos, se prefiere como manera de implementación preferida la implementación mediante programa de software. En función de dicha comprensión, las soluciones técnicas de la presente invención o de la parte que contribuye a la técnica anterior se pueden representar en forma de un producto de software, y el producto de software de ordenador se almacena en un soporte legible de almacenamiento, tal como un disco flexible, una unidad de disco USB, un disco duro portátil, una memoria de solo lectura (ROM, Read-Only Memory), una memoria de acceso aleatorio (RAM, Random Access Memory), un disco magnético, un disco óptico que están en un ordenador, e incluye diversas instrucciones para hacer que un dispositivo informático (que puede ser un ordenador personal, un servidor, un dispositivo de red o similar) ejecute los métodos de las realizaciones de la presente invención.
Las descripciones anteriores son simplemente maneras específicas de implementación de la presente invención, y no pretenden limitar el alcance de protección de la presente invención. Cualquier variación o sustitución ideada fácilmente por un experto en la técnica dentro del alcance técnico expuesto en la presente invención, estará dentro del alcance de protección de la presente invención. Por lo tanto, el alcance de protección de la presente invención 5 estará sujeto al alcance de protección de las reivindicaciones.

Claims (10)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    REIVINDICACIONES
    1. Un método para implementar una operación mutuamente excluyente de múltiples hilos en un chip, donde el chip comprende una pluralidad de núcleos pequeños y una pluralidad de conjuntos de bloqueo distribuidos en el chip, cada conjunto de bloqueo comprende una pluralidad de bloqueos y cada conjunto de bloqueo se utiliza para gestionar mensajes de bloqueo generados por distintos núcleos pequeños, donde el método comprende:
    recibir (201) un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo;
    calcular (202), utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y
    enviar (203) el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde el mensaje de bloqueo se utiliza para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
  2. 2. El método de acuerdo con la reivindicación 1, donde el paso de calcular un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado comprende:
    calcular un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
  3. 3. El método de acuerdo con la reivindicación 1, donde el paso de calcular un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado comprende:
    determinar, el número de código del conjunto de bloqueo, de acuerdo con una correspondencia entre el número de código del conjunto de bloqueo y la dirección de memoria correspondiente al bloqueo solicitado.
  4. 4. El método de acuerdo con cualquiera de las reivindicaciones 1-3, donde la información sobre el bloqueo solicitado comprende: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad y los números de código de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que en ese momento utiliza el bloqueo solicitado, y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del bloqueo solicitado es un estado inactivo o un estado ocupado; y
    el paso de enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código comprende:
    enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado; y
    actualizar la información sobre el bloqueo solicitado.
  5. 5. El método de acuerdo con cualquiera de las reivindicaciones 1-3, donde la información sobre el bloqueo solicitado comprende: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad de hilos que esperan el bloqueo solicitado, un número de código de un hilo que en ese momento utiliza el bloqueo solicitado, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del hilo comprende si el hilo está esperando el bloqueo solicitado o si el hilo no está esperando el bloqueo solicitado; y
    el paso de enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código comprende:
    enviar el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y actualizar la información sobre el bloqueo solicitado.
  6. 6. Un aparato (60) para implementar una operación mutuamente excluyente de múltiples hilos en un chip, donde el chip comprende una pluralidad de núcleos pequeños (71) y una pluralidad de conjuntos de bloqueo (73) distribuidos en el chip, cada conjunto de bloqueo comprende una pluralidad de bloqueos y cada conjunto de bloqueo se utiliza para gestionar mensajes de bloqueo generados por distintos núcleos pequeños, donde el aparato comprende una unidad de recepción (61), una unidad de cálculo (62) y una unidad de envío (63), donde
    la unidad de recepción se configura de modo que reciba un mensaje de bloqueo enviado por un núcleo pequeño, donde el mensaje de bloqueo contiene una dirección de memoria correspondiente a un bloqueo solicitado por un
    5
    10
    15
    20
    25
    30
    35
    primer hilo en el núcleo pequeño, y donde el mensaje de bloqueo es un mensaje de aplicación del bloqueo o un mensaje de liberación del bloqueo;
    la unidad de cálculo se configura de modo que calcule, utilizando la dirección de memoria correspondiente al bloqueo solicitado, un número de código de un conjunto de bloqueo al que pertenece el bloqueo solicitado; y
    la unidad de envío se configura de modo que envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, donde el mensaje de bloqueo se utiliza para solicitar al conjunto de bloqueo que procese el mensaje de bloqueo.
  7. 7. El aparato de acuerdo con la reivindicación 6, donde la unidad de cálculo se configura de modo que:
    calcule un resto al dividir la dirección de memoria correspondiente al bloqueo solicitado por una cantidad de todos los conjuntos de bloqueo, y utilizar el resto como el número de código del conjunto de bloqueo al que pertenece el bloqueo solicitado.
  8. 8. El aparato de acuerdo con la reivindicación 6, donde la unidad de cálculo se configura de modo que:
    determine, el número de código del conjunto de bloqueo, de acuerdo con una correspondencia entre el número de código del conjunto de bloqueo y la dirección de memoria correspondiente al bloqueo solicitado.
  9. 9. El aparato de acuerdo con cualquiera de las reivindicaciones 6-8, donde la información sobre el bloqueo solicitado comprende: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad y los números de código de los hilos que esperan el bloqueo solicitado, un número de código de un hilo que en ese momento utiliza el bloqueo solicitado, y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del bloqueo es un estado inactivo o un estado ocupado; y
    donde la unidad de envío se configura de modo que:
    envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado; y
    actualice la información sobre el bloqueo solicitado.
  10. 10. El aparato de acuerdo con cualquiera de las reivindicaciones 6-8, donde la información sobre el bloqueo solicitado comprende: la dirección de memoria correspondiente al bloqueo solicitado, un estado del bloqueo solicitado, una cantidad de hilos que esperan el bloqueo solicitado, un número de código de un hilo que en ese momento utiliza el bloqueo solicitado, un vector que indica los estados de todos los hilos en un chip y la información que indica el próximo hilo en adquirir el bloqueo solicitado, donde el estado del hilo comprende si el hilo está esperando el bloqueo solicitado o si el hilo no está esperando el bloqueo solicitado; y
    donde la unidad de envío se configura de modo que:
    envíe el mensaje de bloqueo al conjunto de bloqueo correspondiente al número de código, para solicitar, después de que el componente de bloqueo encuentre la información sobre el bloqueo solicitado de acuerdo con la dirección de memoria correspondiente al bloqueo solicitado que está contenida en el mensaje de bloqueo, al conjunto de bloqueo procesar el mensaje de bloqueo de acuerdo con la información sobre el bloqueo solicitado, y
    actualice la información sobre el bloqueo solicitado.
ES14778796.4T 2013-04-01 2014-01-21 Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos Active ES2674546T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310112333.9A CN104102549B (zh) 2013-04-01 2013-04-01 一种实现多线程互斥操作的方法、装置和芯片
CN201310112333 2013-04-01
PCT/CN2014/070959 WO2014161377A1 (zh) 2013-04-01 2014-01-21 一种实现多线程互斥操作的方法、装置和芯片

Publications (1)

Publication Number Publication Date
ES2674546T3 true ES2674546T3 (es) 2018-07-02

Family

ID=51657548

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14778796.4T Active ES2674546T3 (es) 2013-04-01 2014-01-21 Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos

Country Status (5)

Country Link
US (2) US9798591B2 (es)
EP (2) EP2983089B1 (es)
CN (1) CN104102549B (es)
ES (1) ES2674546T3 (es)
WO (1) WO2014161377A1 (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094993B (zh) * 2015-08-18 2018-06-19 华为技术有限公司 一种多核处理器、数据同步的方法及装置
KR101716862B1 (ko) * 2016-10-04 2017-03-15 (주)볼트마이크로 영상데이터 관리 장치 및 방법
US10565024B2 (en) 2016-10-19 2020-02-18 Oracle International Corporation Generic concurrency restriction
CN108990422B (zh) 2017-03-31 2021-07-20 华为技术有限公司 一种锁分配的方法、装置和计算设备
CN108572876B (zh) * 2018-03-07 2020-11-20 北京神州绿盟信息安全科技股份有限公司 一种读写锁的实现方法及装置
FR3086426B1 (fr) * 2018-09-26 2021-10-29 Commissariat Energie Atomique Gestionnaire de verrous pour architecture multicoeurs
CN117171102B (zh) * 2023-09-07 2024-01-26 山东九州信泰信息科技股份有限公司 一种多线程无锁高速写文件的方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175861A (en) * 1988-10-14 1992-12-29 Nec Corporation Lock processing system
US7173929B1 (en) * 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
US6973549B1 (en) * 2001-12-10 2005-12-06 Incipient, Inc. Locking technique for control and synchronization
US7739245B1 (en) * 2002-09-30 2010-06-15 Symantec Operating Corporation Block locking in a multi-node environment
US20070124545A1 (en) * 2005-11-29 2007-05-31 Anton Blanchard Automatic yielding on lock contention for multi-threaded processors
US20070150897A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Methods and apparatus for detecting deadlock in multithreading programs
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
KR100922965B1 (ko) * 2006-10-10 2009-10-22 삼성전자주식회사 네트워크온칩 장치와 이를 위한 동작 주파수 제어 방법
US8086437B2 (en) * 2008-04-02 2011-12-27 Microsoft Corporation Modeling and simulating software contention
CN101908034B (zh) * 2010-06-28 2012-05-23 中国科学院计算技术研究所 众核处理器片上同步方法和其系统
CN102567275B (zh) * 2010-12-08 2014-01-08 中国科学院声学研究所 一种多核处理器上多个操作系统间内存访问的方法及系统
CN102141974A (zh) * 2011-04-11 2011-08-03 复旦大学 一种多核处理器核间通信方法及其电路结构
CN102591722B (zh) * 2011-12-31 2014-06-25 龙芯中科技术有限公司 片上网络多核处理器多线程的资源分配处理方法和系统

Also Published As

Publication number Publication date
US9798591B2 (en) 2017-10-24
EP3379421B1 (en) 2022-11-30
EP2983089A1 (en) 2016-02-10
US20170351557A1 (en) 2017-12-07
US20160019100A1 (en) 2016-01-21
EP2983089B1 (en) 2018-03-21
EP2983089A4 (en) 2016-02-10
US10331499B2 (en) 2019-06-25
WO2014161377A1 (zh) 2014-10-09
EP3379421A1 (en) 2018-09-26
CN104102549B (zh) 2017-12-15
CN104102549A (zh) 2014-10-15

Similar Documents

Publication Publication Date Title
ES2674546T3 (es) Método, aparato y chip para implementar una operación mutuamente excluyente de múltiples hilos
Giannoula et al. Syncron: Efficient synchronization support for near-data-processing architectures
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
ES2573284T3 (es) Gestores híbridos de criterios de memoria caché con escritura doble / escritura simple, y sistemas y procedimientos relacionados
TWI318737B (en) Method and apparatus for predicting early write-back of owned cache blocks, and multiprocessor computer system
US8850081B2 (en) Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning
JP5917782B2 (ja) プロセッサベースのシステムにおける異種メモリアクセス要求をサポートするための、異種メモリシステム、ならびに関連する方法およびコンピュータ可読媒体
US11061742B2 (en) System, apparatus and method for barrier synchronization in a multi-threaded processor
ES2689125T3 (es) Gestor físico de barrera de sincronización entre procesos múltiples
BR112016005365B1 (pt) Hospedeiro, dispositivo e método de funcionamento de um hospedeiro de cartão multimídia embutido (emmc)
US10579413B2 (en) Efficient task scheduling using a locking mechanism
US11748174B2 (en) Method for arbitration and access to hardware request ring structures in a concurrent environment
EP3803663B1 (en) Watchdog timer hierarchy
US10346345B2 (en) Core mapping
JPWO2008155806A1 (ja) バリア同期方法、装置、及びマルチコアプロセッサ
JP4931828B2 (ja) ライン・アクセスおよびワード・アクセスの結合を用いてメモリをアクセスするためのシステムおよび方法
KR20150099434A (ko) 인터럽트가능 저장 익스클루시브
JP2012252490A (ja) マルチプロセッサおよびそれを用いた画像処理システム
TW200525365A (en) Optimization of SMI handling and initialization
CN107624178B (zh) 快速归零的机柜式架构(rsa)和共享存储器控制器(smc)技术
US11194744B2 (en) In-line memory module (IMM) computing node with an embedded processor(s) to support local processing of memory-based operations for lower latency and reduced power consumption
Li et al. Efficient and truly passive MPI-3 RMA using InfiniBand atomics
US8935700B2 (en) Efficient lock hand-off in a symmetric multiprocessor system
Maniotis et al. A novel chip-multiprocessor architecture with optically interconnected shared L1 optical cache memory
WO2021077364A1 (zh) 数据处理方法、装置、电子设备及计算机可读存储介质