ES2880268T3 - Colas de mensajes en soporte físico para una comunicación dentro de un grupo de cómputo - Google Patents
Colas de mensajes en soporte físico para una comunicación dentro de un grupo de cómputo Download PDFInfo
- Publication number
- ES2880268T3 ES2880268T3 ES13737064T ES13737064T ES2880268T3 ES 2880268 T3 ES2880268 T3 ES 2880268T3 ES 13737064 T ES13737064 T ES 13737064T ES 13737064 T ES13737064 T ES 13737064T ES 2880268 T3 ES2880268 T3 ES 2880268T3
- Authority
- ES
- Spain
- Prior art keywords
- queuing
- hmq
- coprocessor
- queue
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the program performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7889—Reconfigurable logic implemented as a co-processor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Mobile Radio Communication Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Retry When Errors Occur (AREA)
- Logic Circuits (AREA)
Abstract
Un dispositivo para facilitar la comunicación entre una pluralidad de nodos (105-1, 105-M) de un grupo de cómputo, comprendiendo el dispositivo un coprocesador (115-M) de un nodo particular (105-M) de dicha pluralidad de nodos (105-1, 105-M), comprendiendo el coprocesador (115-M): un circuito de puesta en cola; estando acoplado dicho circuito de puesta en cola a una memoria (120-M) de dicho nodo particular (105-M); siendo dicho circuito de puesta en cola un circuito cableado o un ASIC programado de manera persistente o una FPGA programada de manera persistente configurado para: recibir (520), desde otro nodo (105-1) de dicha pluralidad de nodos (105-1, 105-M), una instrucción de puesta en cola que comprende una clave con un código (210) de clave irreversible cifrada derivado de un secreto básico, en donde: la clave identifica una cola particular (300, 140-M) en dicha memoria (120-M), habiendo sido creada la clave previamente en dicho nodo particular (105-M) y enviada desde dicho nodo particular (105-M) a dicho otro nodo (105- 1), y la instrucción de puesta en cola incluye una carga útil que ha de almacenarse en la cola particular (300, 140-M); autenticar (530) la instrucción de puesta en cola, comprendiendo el desciframiento del código (210) de clave irreversible cifrada el uso de dicho secreto básico almacenado en dicho coprocesador (115-M) y la determinación de si el código (210) de clave irreversible es válido; y poner en cola (590) una entrada (332-1, 332-2) de cola, en la que se almacena dicha carga útil, en la cola particular (300, 140-M) identificada por la instrucción recibida de puesta en cola en respuesta a la recepción (520) de dicha instrucción de puesta en cola si la instrucción de puesta en cola fue autenticada con éxito.
Description
DESCRIPCIÓN
Colas de mensajes en soporte físico para una comunicación dentro de un grupo de cómputo
La presente solicitud reivindica prioridad con respecto a la solicitud de patente estadounidense n° 13/783.307, presentada el 27 de febrero de 2013, que reivindica prioridad con respecto a la solicitud provisional estadounidense n° 61/709.142, presentada el 2 de octubre de 2012.
Campo de la invención
La presente invención versa sobre el uso de circuitos especializados para enviar y recibir mensajes de uno o más nodos en un grupo de cómputo.
Antecedentes
Los sistemas de bases de datos distribuyen porciones de una base de datos entre varios nodos en un grupo para mejorar el rendimiento y aportar escalabilidad. Los grupos se configuran en una de dos maneras: como grupos de memoria coherente o como grupos de cómputo.
Los nodos de un grupo de memoria coherente comparten memoria física. Compartir memoria física permite a cada nodo del grupo comunicarse muy rápidamente. Enviando y recibiendo mensajes entre dos nodos en un grupo de memoria compartida, un nodo escribirá datos a la memoria compartida y el otro nodo leerá los datos de la memoria compartida. Desgraciadamente, los grupos de memoria coherente son muy costosos de construir y hay un límite de tamaño de la memoria compartida que puede estar almacenada en un grupo de memoria coherente.
Los nodos de un grupo de cómputo no comparten memoria física. La comunicación entre los nodos de un grupo de cómputo puede llevarse a cabo a través de mensajes habitualmente distribuidos en un subsistema de E/S. Un subsistema de E/S puede incluir un enlace de E/S, un mecanismo de sincronización y un hilo servidor en el nodo receptor para procesar los mensajes entrantes. Además, puede ser necesario que los nodos de cómputo reensamblen los mensajes entrantes y almacenen los mensajes reensamblados en la memoria principal de un nodo. Tal subsistema de E/S incurre en una penalización de rendimiento que aumenta la latencia de los mensajes y limita el caudal de procesamiento de mensajes.
Brewer et al.: “Remote Queues: Exposing Message Queues for Optimization and Atomicity”, 7th annual ACM Symposium on Parallel Algorithms and Architectures, Santa Bárbara, 7 de julio de 1995, vol. Simp. 6, páginas 42-53, da a conocer una pluralidad de nodos en una red, teniendo cada nodo un procesador de cómputo que está soportado por un procesador de mensajes. Cuando ha de despacharse un mensaje, el procesador de cómputo de un nodo de despacho solicita al procesador de mensajes del nodo de despacho que transmita el mensaje al procesador de mensajes de un nodo receptor que pone en cola el mensaje recibido. En respuesta a una solicitud de interrogación del procesador de cómputo del nodo receptor, el procesador de mensajes del nodo receptor extrae de la cola el mensaje recibido y proporciona el mensaje al procesador de cómputo.
El documento EP 2423843 A1 versa sobre la configuración o programación de una FPGA. El documento menciona técnicas convencionales para configurar o programar una FPGA que incluyen cifrar los datos de configuración y almacenar los datos cifrados en una unidad de memoria dentro de la FPGA o en un dispositivo de almacenamiento externo conectado operativamente con la FPGA. El documento divulga, además, el uso de un protocolo complejo de Menezes-Qu-Vanstone de curvas elípticas (protocolo EC-MQV, por sus siglas en inglés) como protocolo de acuerdo de claves para calcular una clave de sesión.
Los planteamientos descritos en esta sección son planteamientos que podrían seguirse, pero no necesariamente planteamientos que se hayan concebido o seguido con anterioridad. Por lo tanto, a no ser que se indique algo distinto, no debería suponerse que cualquiera de los planteamientos descritos en esta sección pueda ser considerado técnica anterior meramente en virtud de su inclusión en esta sección.
Sumario de la invención
La invención está definida por las reivindicaciones independientes, teniendo debidamente en cuenta cualquier elemento que sea equivalente a un elemento especificado en las reivindicaciones. Las reivindicaciones dependientes se refieren a características opcionales de algunos elementos de la invención.
Breve descripción de los dibujos
La presente invención está ilustrada a título de ejemplo, y no de limitación, en las figuras de los dibujos adjuntos, y en las cuales números de referencia semejantes se refieren a elementos similares y en las cuales:
la Figura 1 es un diagrama de bloques que ilustra un nodo en un sistema de múltiples HMQ que emplea un coprocesador de HMQ para recibir mensajes de otros nodos del grupo de cómputo, según una realización de la invención;
la Figura 2 es un diagrama de bloques de una RKEY de HMQ, según una realización;
la Figura 3 es un diagrama de bloques de una cola de mensajería en soporte físico, según una realización de la invención;
la Figura 4 es un diagrama de flujo que ilustra la inicialización de una HMQ, según una realización;
la Figura 5 es un diagrama de flujo que ilustra la autenticación de una instrucción, según una realización;
la Figura 6 es un diagrama de flujo que ilustra la puesta en cola de forma atómica de un mensaje en una HMQ, según una realización;
la Figura 7 es un diagrama de flujo que ilustra la lectura de un mensaje almacenado en una entrada particular y la extracción de la entrada de la cola, según una realización;
la Figura 8 ilustra un sistema informático en el que se puede implementar una realización.
Descripción detallada
En la siguiente descripción, con fines explicativos, se presentan numerosos detalles específicos para proporcionar una comprensión cabal de la presente invención. Sin embargo, será evidente que la presente invención puede ser puesta en práctica sin estos detalles específicos. En otros casos, se presentan estructuras y dispositivos muy conocidos en forma de diagrama de bloques para evitar ofuscar innecesariamente la presente invención.
Visión general
La comunicación entre nodos en un grupo de cómputo que no comparten memoria física se lleva a cabo pasando mensajes a través de un subsistema de E/S. La tara para cada nodo que usa el subsistema de E/S es elevada. Cada nodo puede incluir un mecanismo de sincronización, un hilo en el nodo receptor preparado para recibir conexiones y otros hilos para procesar y reensamblar mensajes. Frecuentemente, un nodo receptor también mantiene una cola separada en memoria para cada nodo en el subsistema de E/S que envía mensajes al nodo receptor. Tal tara conlleva una penalización del rendimiento, que aumenta la latencia y limita el caudal de procesamiento de mensajes.
Se presenta un sistema eficiente para el envío y la recepción de mensajes entre nodos en un grupo de cómputo al que se denomina en el presente documento sistema de múltiples HMQ. El sistema de múltiples HMQ proporciona funcionalidad para las copias de memoria y el paso de mensajes. Cada nodo en el sistema de múltiples HMQ incluye una cola de mensajes en soporte físico (“HMQ”, por sus siglas en inglés), un coprocesador de colas de mensajes en soporte físico (“coprocesador de HMQ”) y un enlace de comunicaciones que conecta cada coprocesador de HMQ a los otros coprocesadores de HMQ en el sistema de múltiples HMQ.
Una HMQ comprende una cabecera y una carga útil. La cabecera en una HMQ comprende metadatos relativos al estado de la HMQ y punteros en entradas o direcciones particulares de la carga útil. El coprocesador de HMQ almacena entradas de la carga útil en función de las instrucciones que recibe el coprocesador de HMQ. Cada entrada de la carga útil también puede contener indicadores relativos al estado de esa entrada particular.
Los coprocesadores de HMQ envían instrucciones a otros coprocesadores de HMQ y reciben instrucciones procedentes de los mismos. El coprocesador receptor de HMQ asigna una entrada en la HMQ diana incrementando atómicamente un puntero de asignación en la cabecera de la HMQ. La entrada asignada se llena con un mensaje entrante y se pone un indicador especial de finalización en la entrada. El coprocesador de HMQ es capaz de enviar, recibir, autenticar, pone en cola, sincronizar y reensamblar mensajes entrantes sin intervención adicional de soporte lógico.
Gracias al coprocesador de HMQ, los mensajes en el sistema de múltiples HMQ se intercambian a una velocidad mayor y con menor latencia. Una mensajería más rápida permite un mayor rendimiento del sistema de múltiples HMQ y del grupo de cómputo. Además, la HMQ puede reducir el consumo de memoria en comparación con las aplicaciones genéricas de mensajería al almacenar mensajes de múltiples procedencias en la misma HMQ, eliminando la necesidad de colas por procedencia.
El coprocesador de HMQ
Los coprocesadores de HMQ son circuitos especializados. La expresión “circuitos especializados” se refiere a circuitos digitales que realizan un conjunto de funciones y que bien están cableados para realizar el conjunto de funciones o bien están programados de forma persistente para realizar el conjunto de funciones. Los circuitos programados de forma persistente incluyen circuitos integrados para aplicaciones específicas (ASIC, por sus siglas en inglés) o matrices de puertas programables in situ (FPGA, por sus siglas en inglés) electrónicos digitales. Los circuitos especializados no incluyen un procesador de uso general que esté configurado para realizar funciones ejecutando un conjunto de instrucciones o programa de soporte lógico que pueda residir en la memoria.
En cambio, la expresión “soporte lógico” se refiere a un conjunto de instrucciones o a un programa ejecutado por circuitos digitales que llevan a cabo un conjunto expansivo de funciones en un procesador de uso general. Un soporte lógico no está ni cableado ni programado de forma persistente para realizar funciones específicas. Aunque puede usarse un soporte lógico para implementar una funcionalidad expansiva, el soporte lógico normalmente se ejecuta con más lentitud y requiere más tara que las funciones realizadas por circuitos especializados. Por conveniencia de la expresión, cuando se dice que un soporte lógico realiza una acción, se están ejecutando instrucciones en un procesador de uso general para llevar a cabo la acción.
Los coprocesadores de HMQ procesan un conjunto limitado de instrucciones. Por ejemplo, un coprocesador de HMQ puede procesar, sin limitación de ningún tipo, las siguientes instrucciones sin ejecutar un soporte lógico: Copiar, Copiar y señalizar, Llenar, Almacenar, Suma atómica, O atómica, Envío atómico de mensajes sin solicitud, Interrumpir, Sincronizar y Ausencia de operación.
Los coprocesadores de HMQ envían instrucciones a otros coprocesadores de HMQ, y reciben instrucciones de los mismos, sin la ayuda de soporte lógico. Por ejemplo, un primer coprocesador de HMQ puede ordenar a un segundo coprocesador de HMQ que almacene un mensaje. El segundo coprocesador de HMQ autentica la orden, asigna una entrada en la HMQ diana, y almacena la carga útil en la HMQ diana. La entrada asignada se llena con el mensaje entrante asociado con una instrucción y se pone un indicador especial de finalización en la entrada. El coprocesador de HMQ lleva a cabo estas operaciones sin ayuda de soporte lógico.
Como se describe en el presente documento, el coprocesador de HMQ puede, sin limitación de ningún tipo, enviar instrucciones a otros coprocesadores de HMQ, recibir instrucciones de otros coprocesadores de HMQ, autenticar las instrucciones recibidas, poner entradas en cola en una HMQ, sincronizar los mensajes recibidos, reensamblar los mensajes entrantes y notificar errores, sin intervención del soporte lógico.
El sistema de múltiples HMQ
La Figura 1 es un diagrama de bloques que ilustra un sistema 100 de múltiples HMQ, según una realización. El sistema de múltiples HMQ mueve datos de una ubicación de memoria a otra ubicación de memoria. Por ejemplo, el coprocesador 115-1 de HMQ puede ordenar al coprocesador 115-M que almacene un mensaje en memoria 120-M en el nodo 105-M. En la realización ilustrada en la Figura 1, el sistema 100 de múltiples HMQ incluye, sin limitación de ningún tipo, los nodos 105-1 a 105-M (colectivamente, “nodos 105”), incluyendo los nodos 105 los coprocesadores 115-1 a 115-M de HMQ (colectivamente, “coprocesadores 115 de HMQ”), respectivamente.
En la realización ilustrada en la Figura 1, los coprocesadores 115 de HMQ están situados en los propios chips de los procesadores 110-1 a 110-M (colectivamente, “procesadores 110”), respectivamente. En otra realización, los coprocesadores 115 de HMQ son núcleos situados en los procesadores 110, respectivamente. El coprocesador 115 de HMQ puede estar situado en la misma placa — pero no en el mismo chip— que los procesadores 115, respectivamente. Alternativamente, los coprocesadores 115 de HMQ pueden estar situados en otro lugar y estar meramente acoplados comunicativamente con los procesadores 110, respectivamente.
El coprocesador 115-1 de HMQ está acoplado comunicativamente con: el bus 150-1; la memoria 120-1; el soporte lógico 130-1; la HMQ 140-1; y otros coprocesadores 115 de HMQ. Cada una de las HMQ 140-1 a 140-M (colectivamente, “HMQ 140”) es una instancia de la HMQ 300. Además, los coprocesadores 115 de HMQ están conmutativamente acoplados a través de los enlaces 160-1 a 160-M (denominados colectivamente “enlaces 160”), respectivamente, y del conmutador 170. Sin embargo, en otras realizaciones, los coprocesadores de HMQ pueden estar directamente conectados o acoplados comunicativamente a través de otros medios, conocidos por los expertos en la técnica.
Como se ha expuesto anteriormente, el soporte lógico 130-1 a 130-M, colectivamente 130, se refiere a un conjunto de instrucciones o programa almacenado en nodos 105, respectivamente, y ejecutado en procesadores 110 de uso general, respectivamente. El soporte lógico 130-1 a 130-M (colectivamente, “soporte lógico 130”), no está cableado o programado de forma persistente para llevar a cabo funciones específicas. Por conveniencia de la expresión, cuando se dice que el soporte lógico 130 realiza una acción, se están ejecutando instrucciones que comprenden el soporte lógico 130 en un procesador 110, respectivamente, para realizar la acción.
Claves de acceso remoto a HMQ (“RKEY de HMQ”)
El coprocesador de HMQ puede no estar limitado por un sistema operativo y puede tener un acceso ilimitado a la memoria. Puede enviarse una RKEY de HMQ con cada instrucción y designar a qué HMQ debería acceder un coprocesador de HMQ. Además, una RKEY de HMQ puede incluir la ubicación y el tamaño de la memoria asignada para la correspondiente HMQ, y restringir que el coprocesador de HMQ acceda a memoria asignada para la HMQ. Por tanto, es importante garantizar que una RKEY de HMQ sea válida y que no ha sido falsificada o alterada. Para garantizar que el coprocesador de HMQ escribe en un espacio autorizado en memoria, el coprocesador de HMQ valida la RKEY de HMQ enviada con cada instrucción. Por ejemplo, puede crearse una RKEY de HMQ para cada HMQ en cada nodo del sistema de múltiples HMQ. Cada una de las múltiples HMQ asignadas en el mismo nodo puede tener una RKEY única de HMQ, que designa a la HMQ particular a la que debería acceder el coprocesador de HMQ para una instrucción dada.
La Figura 2 es un diagrama de bloques de la RKEY 200 de HMQ, según una realización. La RKEY 200 puede incluir, sin limitación de ningún tipo, la clave irreversible 210, el tamaño 220, la dirección 230 y permisos 240.
La RKEY 200 de HMQ comprende un certificado otorgado por el propietario de un bloque de memoria física a un usuario remoto. Por ejemplo, usando la realización ilustrada en la Figura 1, el soporte lógico 130-M puede autorizar que el nodo 105-1 acceda a un bloque específico en la memoria 120-M enviando al nodo 105-1 una instancia de la RKEY 200 de HMQ, generada por el soporte lógico 130-M. Cuando el coprocesador 115-1 de HMQ envía una instrucción al coprocesador 115-M de HMQ, el coprocesador 115-1 de HMQ también puede enviar una copia de la anterior instancia recibida de la RKEY 200 de HMQ. El coprocesador 115-M de HMQ puede validar la RKEY de HMQ para garantizar que la instrucción no fue enviada desde un coprocesador autorizado de HMQ y que está siendo almacenada en una memoria debidamente asignada. Alternativamente, el soporte lógico 130-1 puede enviar una instrucción al coprocesador 115-M de HMQ directamente, o a través del coprocesador 115-1 de HMQ. El tamaño de la RKEY de HMQ puede tener una longitud de 16 bytes; sin embargo, no se requiere que la RKEY de HMQ tenga una longitud de 16 bytes. Puede ser preferible una RKEy de HMQ menor para reducir el espacio ocupado en memoria y la congestión de la red; sin embargo, una RKEY de HMQ mayor puede permitir una clave irreversible mayor y más segura.
La clave irreversible 210 es una clave irreversible cifrada derivada de un secreto básico. La clave irreversible 210 también puede derivarse, sin limitación de ningún tipo, de los parámetros: tamaño 220, dirección 230 y permisos 240. Cada uno de los coprocesadores 115 de HMQ contiene el secreto básico, generado por el soporte lógico 130-1 a 130-M, respectivamente, para descifrar la irreversible 210 tras la recepción de una instancia de la RKEY 200 de HMQ. También pueden implementarse otros modelos de seguridad que usen cifrado por clave pública/clave privada, claves irreversibles, semillas, secretos o códigos.
El tamaño 220 es el tamaño de la región a la que una RKEY de HMQ está autorizada a acceder. La dirección 230 contiene la dirección física de la región a la que el generador de RKEY de HMQ (por ejemplo, el soporte lógico 140-M) está autorizado a acceder. Alternativamente, la dirección 230 puede contener solamente un número que identifica una HMQ específica en memoria, sin que sea la dirección de memoria de la HMQ. Además, la RKEY 200 de HMQ puede identificar bloques de control del coprocesador por sus siglas en inglés) de HMQ en lugar de una dirección de destino.
Los permisos 240 son los permisos que se dan al presentador (por ejemplo, el coprocesador 115-1 de HMQ). Por ejemplo, la RKEY de HMQ puede dar permiso para escribir un mensaje en una HMQ específica, pero no para leer de la HMQ. En una realización, los permisos 240 pueden incluir, sin limitación de ningún tipo, la capacidad de lectura y escritura y la actualización de la memoria intermedia.
La cola de mensajes en soporte físico (“HMQ”)
La Figura 3 es un diagrama de bloques de una HMQ 300, según una realización. La HMQ 300 comprende una cabecera 310 y una carga útil 330. Aunque la Figura 3 ilustra una realización, otras realizaciones pueden omitir, reordenar, modificar cualquiera de los elementos mostrados y/o añadir a los mismos. La cabecera 310 comprende metadatos relativos al estado de la HMQ 300 y apunta a direcciones particulares dentro de la carga útil 330. La cabecera 310 puede incluir, sin limitación de ningún tipo, el tamaño de la carga útil 330, el número de entadas 332-1 a 332-N (denominadas colectivamente entradas 332) y el tamaño de cada entrada 332-1 a 332-N. La cabecera 310 también puede incluir, sin limitación de ningún tipo, un indicador 311 de habilitación, un indicador 312 de falta de preparación, un indicador 313 de error, un campo reservado 314, un área 315 de destinatario y un indicador 316 de interrupción. La cabecera 310 también puede incluir, sin limitación de ningún tipo, un puntero principal 320 y un puntero 322 de asignación. Por ejemplo, cada una de las HMQ 140 es una instancia de la HMQ 300. Cada uno de los coprocesadores 115 de h Mq y del soporte lógico 130-1 a 130-M, que asignan instancias de la HMQ 300, tiene acceso, respectivamente, a las HMQ 140.
El tamaño de las entradas es el tamaño de cada una de las entradas 332. En una realización, tamaño de la entrada es 64 bytes. Alternativamente, el tamaño de la entrada puede ser una potencia de dos; sin embargo, también pueden ser adecuados otros tamaños. Además, el tamaño de la carga útil y el tamaño de la entrada, almacenados en la cabecera 310, es de cuatro bytes cada uno de ambos. En otra realización, el tamaño de la entrada puede ser cero para indicar que las entradas 332 pueden ser de cualquier tamaño.
El indicador 311 de habilitación designa si una instancia de HMQ 300 está habilitada o inhabilitada. En una realización, el indicador 311 de habilitación es de un byte. Por ejemplo, si el indicador 311 de habilitación está puesto a cero, entonces la HMQ 300 está inhabilitada, pero, si no, la HMQ 300 está habilitada.
El indicador 312 de falta de preparación se copia al primer byte de una entrada particular para indicar que la entrada particular no es válida. En una realización, el indicador 312 de falta de preparación es de un byte. Por ejemplo, si se recibe una instrucción de almacenar un mensaje que supera la longitud de la entrada 332-1, entonces el valor almacenado en el indicador 312 de falta de preparación se copia al primer byte de la entrada 332-1, indicando que la entrada no es válida.
El indicador 313 de error se copia al primer byte de la entrada para indicar que hubo un error en el procesamiento de una instrucción. En una realización, el indicador 313 de errores de un byte. Por ejemplo, si la HMQ 140-1 está llena, el coprocesador 115-1 de HMQ puede poner el indicador 313 de error a 1 para indicar que no puede poner en cola ningún mensaje nuevo.
El campo reservado 314 almacena el desplazamiento entre la cabecera 310 y la carga útil 330. En una realización, el campo reservado 314 es de cuatro bytes y es cero si no hay desplazamiento alguno entre la cabecera 310 y la carga útil 330. Alternativamente, el campo reservado 314 es un puntero a la carga útil 330. Por ejemplo, si la cabecera 310 y la carga útil 330 no fueran contiguas, el campo reservado 314 puede comprender la dirección de la carga útil 330 en la memoria 120-1.
El área 315 de destinatario está disponible para ser usada por un procesador de HMQ en el mismo nodo. En una realización, el área 315 de destinatario es de 32 bytes. Por ejemplo, el coprocesador 115-1 de HMQ puede usar el área 315 de destinatario para reensamblar fragmentos de 16 bytes de un mensaje (presentado con mayor detalle infra).
El indicador 316 de interrupción indica si debería generar una interrupción tras un envío de una entrada sin solicitud realizado con éxito. En una realización, el indicador 316 de interrupción es un solo bit y está puesto a cero para indicar que debería generarse una interrupción tras envío de una entrada sin solicitud realizado con éxito. Por ejemplo, cuando el coprocesador 115-1 de HMQ escribe con éxito la entada 332-1 en la carga útil 330, el coprocesador 115-1 de HMQ envía una interrupción al procesador 110-1.
El puntero principal 320 es un puntero actualizado atómicamente y apunta a la siguiente entrada de la carga útil 330 que está lista para ser leída. En una realización, el puntero principal 320 es un múltiplo de 64 bytes y está desplazado con respecto al final de la cabecera 310. Por ejemplo, si el puntero principal 320 tiene un valor de cero, entonces el puntero principal 320 está apuntando efectivamente a la entrada 332-1 de la carga útil 330.
El puntero 322 de asignación es un puntero actualizado atómicamente. En una realización, el puntero 322 de asignación es un múltiplo de 64 bytes y está desplazado con respecto al final de la cabecera 310. Por ejemplo, si el puntero 322 de asignación tiene un valor de cero, entonces el puntero 322 de asignación está apuntando efectivamente a la entrada 332-1 de la carga útil 330. Si el puntero principal 320 es igual al puntero 322 de asignación, la carga útil 330 se considera vacía. Sin embargo, si el puntero principal 320 menos el puntero 322 de asignación es igual a uno, entonces la carga útil 330 se considera llena.
Además, en otras realizaciones, la cabecera 310 puede incluir otros indicadores o valores necesarios para realizar eficientemente las funciones descritas en el presente documento. Los indicadores y los punteros pueden almacenarse en uno o más bits, campos de bits o bytes.
Según la realización de la Figura 3, la carga útil 330 incluye, sin limitación de ningún tipo, las entradas 332, cada una de las cuales contiene indicadores 334-1 a 334-N de señal (denominados colectivamente “ indicadores 334 de señal”), respectivamente. Cada entrada de las entradas 332 puede ser de un tamaño fijo, y la suma del tamaño de las entradas 332 puede ser igual al tamaño de la carga útil almacenado en la cabecera 310. Por ejemplo, en la realización de la Figura 3, cada una de las entradas 332 tiene una longitud de 64 bytes, y el tamaño de la carga útil 330 es 64 veces N bytes.
Los indicadores 334 de señal pueden usarse para indicar que no se han leído entradas particulares 332; que hubo un error escribiendo la entrada; o que la entrada no está lista. Por ejemplo, la entrada 332-1 en la HMQ 140-1 puede ser el último byte de la entrada 332-1 y puede estar puesta a uno para indicar que hay un mensaje válido almacenado en la entrada 332-1, pero que no ha sido leído. En una realización, los indicadores 334 de señal se almacenan en el último byte en cada una de las entradas 332, respectivamente. En otra realización, los indicadores 334 de señal son el primer byte en cada una de las entradas 332, respectivamente.
Inicialización de la HMQ
La Figura 4 es un diagrama de flujo que ilustra la inicialización de una HMQ, según una realización. Aunque la Figura 4 ilustra etapas ejemplares según una realización, otras realizaciones pueden omitir, reordenar, modificar cualquiera de las etapas mostradas y/o añadir a las mismas. Aunque esta realización describe la inicialización de una HMQ por el soporte lógico para recibir atómicamente mensajes de múltiples nodos en un sistema de múltiples HMQ, otras realizaciones pueden incluir muchas otras etapas en función de la aplicación y del dispositivo.
Como se muestra en la Figura 4, usando la realización ilustrada en la Figura 1 como ejemplo, en la etapa 410, el soporte lógico 130-1 asigna la HMQ 140-1, que es una instancia de la HMQ 300. Por ejemplo, la asignación de la HMQ 140-1 comprende asignar la cabecera 310 y la carga útil 330 de manera contigua. Sin embargo, en otras realizaciones, la cabecera 310 y la carga útil 330 pueden no ser contiguas.
En la etapa 420, el soporte lógico 130-1 inicializa la cabecera 310 de la HMQ 140-1. Por ejemplo, la inicialización de la cabecera 310 puede incluir, sin limitación de ningún tipo, poner el indicador 311 de habilitación a uno, poner el indicador 312 de falta de preparación a uno, poner el indicador 313 de error a cero, poner el campo reservado 314 a
uno, asignar 32 bytes para el área 315 de destinatario, poner el indicador 316 de interrupción a cero, poner el puntero principal 320 a cero y configurar el puntero 322 de asignación.
En la etapa 430, el soporte lógico 130-1 crea una instancia de la RKEY 200 de HMQ. La creación de una instancia de la RKEY 200 de HMQ puede incluir, sin limitación de ningún tipo, el soporte lógico 130-1; configurar el tamaño 220 para que sea el tamaño de la carga útil 330, asignado en la etapa 410; designar que la dirección 230 sea la dirección de la carga útil 330. La etapa 430 puede incluir además, sin limitación de ningún tipo, generar un secreto básico; almacenar el secreto básico en el coprocesador 115-1 de HMQ; y generar una clave irreversible 210 en función del secreto básico, del tamaño 220, de la dirección 230 y de los permisos 240.
En la etapa 440, el soporte lógico 130-1 envía una instancia de la RKEY 200 de HMQ, creada a partir de la etapa 430, a todos los nodos 105 del sistema 100 de múltiples HMQ, que autoriza a los nodos 105 a enviar instrucciones al coprocesador 115-1 de HMQ y a almacenar datos en la HMQ 140-1.
En la etapa 450, los indicadores 334 de señal pueden ser configurados para indicar que el coprocesador de HMQ puede escribir en cada entrada respectiva. Por ejemplo, la puesta de los indicadores 334 de señal a cero puede indicar al coprocesador 115-1 de HMQ que el coprocesador de HMQ es libre de empezar a escribir en las respectivas entradas 332 en la HMQ 140-1.
Autenticación de instrucciones en un sistema de múltiples HMQ
La Figura 5 es un diagrama de flujo que ilustra la autenticación de una instrucción, según una realización, usando el sistema 100 de múltiples HMQ como ejemplo.
En la etapa 510 de la Figura 5, el coprocesador 115-1 de HMQ envía al coprocesador 115-M de HMQ una instrucción y una copia de una RKEY de HMQ que el nodo 105-1 recibió del soporte lógico 130-M durante la inicialización de la HMQ 140-M. En la etapa 520, el coprocesador 115-M de HMQ recibe la instrucción y la RKEY de HMQ procedentes de la etapa 510. El coprocesador 115-1 de HMQ puede iniciar el envío de una instrucción. Además, el coprocesador 115-M de HMQ puede ser el coprocesador de HMQ tanto emisor como receptor.
En la etapa 530 de la Figura 5, el coprocesador 115-M de HMQ valida la RKEY de HMQ enviada por el coprocesador 115-1 de HMQ. Dado que la RKEY de HMQ está cifrada en función de la dirección 230, una RKEY de Hm Q puede ser válida si la dirección 230 no ha sido alterada. Por ejemplo, como se ha expuesto anteriormente, el coprocesador 115-M de HMQ tiene una copia del secreto básico, que fue generado por el soporte lógico 130-M durante la inicialización de la HMQ 140-M (etapa 430). El coprocesador 115-M de HMQ descifra la clave irreversible 210 de la RKEY de HMQ. Si la clave irreversible 210 es válida, entonces la dirección 230 es válida, y el coprocesador 115-M de HMQ prosigue a la etapa 540; sin no, el coprocesador 115-M de HMQ prosigue a la etapa 595.
En la etapa 540 de la Figura 5, para impedir que se escriba un mensaje que comience dentro de los límites de la HMQ 140-M asignada, pero termina fuera de los límites de la HMQ 140-M asignada, el coprocesador 115-M de HMQ realiza una comprobación para garantizar que el tamaño del mensaje no supere el tamaño 220 de la RKEY de HMQ. Si el tamaño del mensaje que ha de escribirse supera el tamaño 220 de la RKEY de HMQ, entonces el coprocesador 115-M de HMQ aborta, y prosigue a la etapa 595; si no, el coprocesador de HMQ prosigue a la etapa 590. Como se ha descrito anteriormente, el coprocesador 115-M de HMQ no está limitado por un sistema operativo y no hay restricción en cuanto adónde
puede tener un acceso ilimitado a la memoria en la memoria 120-M puede escribir el coprocesador 115-M de HMQ. Por ejemplo, los coprocesadores 115 de HMQ pueden abortar tal instrucción para impedir una escritura no autorizada en la memoria 120-1.
En la etapa 590 de la Figura 5, el coprocesador 115-M de HMQ pone en cola la entrada 332-1 en función de la instrucción recibida por el procesador 115-M de HMQ. Por ejemplo, el coprocesador 115-M de HMQ puede usar el procedimiento de puesta en cola ilustrado en la Figura 6.
En la etapa 595 de la Figura 5, el coprocesador 115-M de HMQ rechaza la instrucción y devuelve un error al coprocesador 115-1 de HMQ. En otra realización, el coprocesador 115-M de HMQ puede simplemente rechazar la instrucción y no devolver ningún error al coprocesador 115-1 de HMQ.
Puesta de mensajes en cola en la HMQ
Cuando el coprocesador 115-M de HMQ recibe una instrucción para poner en cola de manera atómica un mensaje en la HMQ 140-M, el coprocesador 115-M de HMQ introduce atómicamente el mensaje en la HMQ 140-M, que está designada en la RKEY de HMQ enviada con la instrucción. El mensaje es almacenado atómicamente manteniendo el puntero 322 de asignación atómica.
La Figura 6 es un diagrama de flujo que ilustra una puesta en cola de manera atómica de un mensaje en la HMQ 140-M, según una realización. Aunque la Figura 6 ilustra etapas ejemplares según una realización, otras realizaciones pueden omitir, reordenar, modificar cualquiera de las etapas mostradas y/o añadir a las mismas. Aunque esta
realización describe la puesta en cola de manera atómica de un mensaje en una HMQ, otras realizaciones pueden incluir muchas otras etapas en función de la aplicación y del dispositivo.
En la etapa 600 de la Figura 6, continuando con el ejemplo anterior en lo que antecede el coprocesador 115-M de HMQ recibe y autentica una instrucción para poner en cola de manera atómica un mensaje en la HMQ 140-M.
En la etapa 610, el coprocesador 115-M de HMQ determina si la HMQ 140-M está llena. El coprocesador 115-M de HMQ determina que la HMQ 140-M designada está llena en función del puntero principal 320, del puntero 322 de asignación y del tamaño de una entrada en la HMQ 140-M. Si la HMQ 140-M está llena, el coprocesador 115-M de HMQ prosigue a la rama afirmativa, etapa 695, y, si no, el coprocesador 115-M de HMQ prosigue a la rama negativa, etapa 620. En una realización, si el puntero 322 de asignación es igual a la cantidad del puntero principal 320 menos el tamaño de una entrada, entonces la HMQ 140-M está llena. En otra realización, el puntero principal 320 y el puntero 322 de asignación son múltiplos del tamaño de la entrada; así, si el puntero principal 320 menos el puntero 322 de asignación es igual a uno, entonces la HMQ 140-M está llena. Obsérvese que, en la realización descrita en la Figura 3, las entradas 332 son del mismo tamaño fijo; sin embargo, en otras realizaciones, el tamaño de las entradas 332 puede no ser igual o de tamaño fijo.
En la etapa 620, el coprocesador 115-M de HMQ actualiza el puntero 322 de asignación atómica para que apunte a la siguiente entrada de la carga útil 330. Por ejemplo, si el puntero 322 de asignación almacena un múltiplo del tamaño de la entrada, entonces el puntero 322 de asignación simplemente se incrementa en uno, módulo el número de entradas 332 en la carga útil 330.
En la etapa 630, el coprocesador 115-M de HMQ ejecuta la instrucción para poner en cola de manera atómica un mensaje almacenando el mensaje en la entrada 332-1, a la que apunta el puntero 322 de asignación atómica. Por ejemplo, el coprocesador 115-M de HMQ puede inicializar la entrada 332-1 configurando el indicador 334-1 de señal para que indique que la entrada 332-1 no está lista para ser leída. Después de escribir el mensaje en la entrada 332 1, el coprocesador 115-M de HMQ puede poner a cero el indicador 224-1 de señal, para indicar que la entrada 332-1 está completa y que el coprocesador 115-M de HMQ ya no escribe en ella. El coprocesador 115-M de HMQ, prosigue entonces a la etapa 640.
En la etapa 640, el coprocesador 115-M de HMQ determina si está puesto el indicador 316 de interrupción. Entonces, si lo está, el coprocesador 115-M de HMQ prosigue a la etapa 650. En la etapa 650, el coprocesador 115-M de HMQ envía una interrupción al sistema operativo en el nodo 105-M que indica que se puesto en cola un nuevo mensaje. Por ejemplo, el coprocesador 115-M de HMQ envía al procesador 110-M una interrupción con el valor almacenado en el indicador 316 de interrupción. Además, el coprocesador 115-M de HMQ puede escribir en la memoria intermedia L3 en el procesador 110-M, indicando que se ha puesto en cola un mensaje.
El coprocesador 115-M de HMQ prosigue a la etapa 690 si, en la etapa 640, la interrupción no está puesta, o después de la etapa 650. En la etapa 690, el coprocesador de HMQ da aviso al remitente — por ejemplo, el coprocesador 115 1 de HMQ— de que la instrucción recibida ha sido ejecutada. En otra realización, en la etapa 690, el coprocesador 115-M de HMQ no envía ningún aviso al remitente — por ejemplo, el coprocesador 115-1 de HMQ— , sino que, en vez de ello, el coprocesador 115-M de HMQ meramente aguarda a recibir otra instrucción.
En la etapa 695, el coprocesador 115-M de HMQ no ejecuta una instrucción para almacenar un mensaje en la HMQ 140-M y devuelve un error al remitente —por ejemplo, el coprocesador 115-1 de HMQ—. En otra realización, el coprocesador 115-M de HMQ no devuelve un error al coprocesador 115-1 de HMQ, sino que, en vez de ello, meramente rechaza la instrucción recibida y aguarda a recibir una nueva instrucción. En otra realización adicional, el coprocesador 115-M de HMQ aguarda una cantidad de tiempo particular y vuelve a intentar almacenar la instrucción recibida del coprocesador 115-1 de HMQ, volviendo a la etapa 610.
Extracción de una entrada de una HMQ
La Figura 7 es un diagrama de flujo que ilustra la lectura de un mensaje almacenado en una entrada particular y la extracción de la entrada de la cola, según una realización. Aunque la Figura 7 ilustra etapas ejemplares según una realización, otras realizaciones pueden omitir, reordenar, modificar cualquiera de las etapas mostradas y/o añadir a las mismas. Aunque esta realización describe la lectura de un mensaje almacenado en una entrada particular y la extracción de la entrada de la cola, otras realizaciones pueden incluir muchas otras etapas en función de la aplicación y del dispositivo.
En la etapa 700 de la Figura 7, continuando a partir del ejemplo anterior, el soporte lógico 130-M recibe una interrupción que indica que ha sido puesta en cola una entrada 332-1. En otra realización, el soporte lógico 130-M interroga al coprocesador 115-M de HMQ para determinar si se ha puesto en cola una nueva entrada. Si el coprocesador 115-M de HMQ está vacío, el soporte lógico 130-M puede no intentar leer una entrada.
En la etapa 710 de la Figura 7, el soporte lógico 130-M verifica el indicador 334-1 de señal de la entrada 332-1 a la que apunta el puntero principal 320, para garantizar que el mensaje almacenado en la entrada 332-1 está listo para ser leído. Si la entrada 332-1 está lista para ser leída, entonces el soporte lógico 130-M prosigue a la rama afirmativa,
etapa 720; si no, el soporte lógico 130-M prosigue a la rama negativa, etapa 795. En otra realización, la memoria intermedia L3 en el procesador 110-M puede contener la dirección de la entrada lista para ser leída.
En la etapa 720 de la Figura 7, el mensaje en la entrada 332-1 es leído por el soporte lógico 130. El soporte lógico prosigue a continuación a la etapa 790. Por ejemplo, el soporte lógico 130 puede copiar la entrada 332-1 a otro lugar en la memoria, o en un fichero, o en una interfaz de conexión de fichero.
En la etapa 790 de la Figura 7, el soporte lógico 130-M actualiza el puntero principal 320 para que apunte a la siguiente entrada de la carga útil 330. Por ejemplo, si el puntero principal 320 es un múltiplo del tamaño de la entrada, entonces el puntero principal 320 se incrementa en uno, módulo el número de entradas 332 en la carga útil 330. En otra realización, el soporte lógico 130-M actualiza atómicamente el puntero principal 320 a la dirección de la siguiente entrada de la carga útil 330. El soporte lógico 130-M también puede actualizar el indicador 334-1 de señal para que indique que la entrada 332-1 fue leída y está libre.
En la etapa 795, el soporte lógico 130-M puede detener su intento de lectura de la entrada 332-1 a la que apunta el puntero principal 320. En otra realización, el soporte lógico 130-M puede volver a la etapa 710. Alternativamente, el soporte lógico 130-M puede aguardar una cantidad de tiempo particular y volver a la etapa 710.
Sincronización de los mensajes recibidos
Las instrucciones enviadas a un coprocesador de HMQ pueden ser sincronizadas. Por ejemplo, el coprocesador 115-M de HMQ puede notificar al coprocesador 115-1 de HMQ que la instrucción que el coprocesador 115-1 de HMQ envió se ejecutó con éxito, y puede terminar la conexión entre los coprocesadores 115-1 y 115-M de HMQ una vez que la instrucción ha sido ejecutada.
Las instrucciones pueden ser procesadas en serie por el coprocesador 115-M de HMQ. Por ejemplo, las instrucciones que se reciben mientras el coprocesador 115-M de HMQ está ocupado pueden ser puestas en cola para su ejecución subsiguiente. Por ejemplo, el coprocesador de HMQ puede tener un indicador de serie, que, si está puesto a uno, ejecute las instrucciones en serie.
Las instrucciones también pueden ser obligadas a ser ejecutadas de forma condicional tras la finalización de una instrucción previa con éxito. En consecuencia, cada instrucción puede tener un indicador condicional. Por ejemplo, si una segunda instrucción es condicional con respecto a una primera instrucción, el indicador condicional de la segunda instrucción puede ser configurado de modo que la segunda instrucción pueda ser ejecutada si la primera instrucción se ejecuta sin errores.
Reensamblaje de mensajes
Para evitar la congestión del sistema de múltiples HMQ, se puede segmentar un mensaje asociado con una instrucción. El coprocesador receptor de HMQ puede reensamblar el mensaje antes de ejecutar la instrucción. Obsérvese que el receptor puede recibir los fragmentos en un orden diferente de aquel en el que se enviaron los fragmentos. Así, el coprocesador de HMQ puede no meramente reensamblar los fragmentos para una instrucción y un mensaje particulares, sino que también puede ordenar los fragmentos antes del reensamblaje. En una realización, la porción del mensaje puede ser segmentada en fragmentos. Alternativamente, tanto la instrucción como el mensaje pueden ser segmentados en fragmentos.
Por ejemplo, usando la realización ilustrada en la Figura 1, el coprocesador 115-1 de HMQ puede enviar una instrucción al coprocesador 115-M de HMQ con un mensaje que tiene 128 bytes. En vez de enviar todo el mensaje de 128 bytes de una sola vez, el coprocesador 115-1 de HMQ segmenta el mensaje en fragmentos de 16 bytes, asigna a cada fragmento un número, y envía cada fragmento numerado al coprocesador 115-M de HMQ. El coprocesador 115-M de HMQ reensambla los fragmentos numerados en orden en función del número de los fragmentos, y luego ejecuta la instrucción recibida y almacena el mensaje reensamblado acompañante.
Notificación de errores
Un coprocesador receptor de HMQ puede estar configurado para generar errores particulares, o devolver errores particulares a un coprocesador remitente de HMQ. Por ejemplo, si se produce un error mientras el coprocesador 115-M de HMQ está procesando una instrucción enviada desde el coprocesador 115-1 de HMQ, entonces el coprocesador 115-M de HMQ puede generar uno o más errores particulares, y también puede devolver los uno o más errores al coprocesador 115-1 de HMQ.
Un coprocesador de HMQ puede generar errores incluyendo, sin limitación alguna, la validación de la RKEY de HMQ; una cola que cruza un límite de página o una región de la RKEY de HMQ; el tamaño de un mensaje no es igual al tamaño de la entrada especificado en la cabecera 310; el indicador 311 de habilitación está puesto a cero o no coincide con un valor previsto; el tamaño del mensaje no es una potencia de dos; el tamaño de la carga útil 330 no es un múltiplo del tamaño del mensaje; el puntero 322 de asignación no se encuentra en el intervalo de cero a número de entradas 332; o la HMQ 300, o específicamente la carga útil 330, está llena. Además, si se genera un error mientras
se intenta escribir en la entrada 332-1, puede escribir en el indicador 334-1 de señal un valor que represente un error particular. Además, también se puede poner el indicador 313 de error si se genera un error.
Descripción general del soporte físico
Según una realización, las técnicas descritas en el presente documento son implementadas por uno o más dispositivos informáticos de uso especial. Los dispositivos informáticos de uso especial pueden estar cableados para llevar a cabo las técnicas, o pueden incluir digital dispositivos electrónicos tales como uno o más circuitos integrados para aplicaciones específicas (ASIC) o matrices de puertas programables in situ (FPGA) que están programados de forma persistente para llevar a cabo las técnicas, o pueden incluir uno o más procesadores de soporte físico de uso general programados para llevar a cabo las técnicas de acuerdo con instrucciones de programa en soporte lógico inalterable, memoria, otro almacenamiento o una combinación de los mismos. Tales dispositivos informáticos de uso especial también pueden combinar lógica cableada hecha a medida, ASIC o FPGA con programación a medida para lograr las técnicas. Los dispositivos informáticos de uso especial pueden ser sistemas de ordenadores de sobremesa, sistemas de ordenadores portátiles, dispositivos de mano, dispositivos de red o cualquier otro dispositivo que incorpore lógica cableada y/o programada para implementar las técnicas.
Por ejemplo, la Figura 8 es un diagrama de bloques que ilustra un sistema informático 800 en el que puede implementarse una realización de la invención. El sistema informático 800 incluye un bus 802 u otro mecanismo de comunicación para comunicar información, y un procesador 804 de soporte físico de acoplado con el bus 802 para procesar información. El procesador 804 de soporte físico puede ser, por ejemplo, un microprocesador de uso general.
El sistema informático 800 también incluye una memoria principal 806, tal como una memoria de acceso aleatorio (RAM, por sus siglas en inglés) u otro dispositivo de almacenamiento dinámico, acoplado al bus 802 para almacenar información e instrucciones que ha de ejecutar el procesador 804. La memoria principal 806 también puede ser usada para almacenar variables temporales u otra información intermedia durante la ejecución de las instrucciones que han de ser ejecutadas por el procesador 804. Tales instrucciones, cuando están almacenadas en un soporte de almacenamiento no transitorio accesible al procesador 804, convierten el sistema informático 800 en una máquina de uso especial que está hecha a medida para llevar a cabo las operaciones especificadas en las instrucciones.
El sistema informático 800 incluye, además, una memoria 808 de solo lectura (ROM, por sus siglas en inglés) u otro dispositivo de almacenamiento estático acoplado al bus 802 para almacenar información estática e instrucciones para el procesador 804. Se proporciona un dispositivo 810 de almacenamiento, tal como un disco magnético, un disco óptico o una unidad de estado sólido y se lo acopla al bus 802 para almacenar información e instrucciones.
El sistema informático 800 puede estar acoplado a través del bus 802 a un dispositivo 812 de visualización, tal como un tubo de rayos catódicos (CRT, por sus siglas en inglés), para mostrar información un usuario del ordenador. Hay un dispositivo 814 de entrada, que incluye claves alfanuméricas y otras, acoplado al bus 802 para comunicar información e indicar selecciones al procesador 804. Otro tipo de dispositivo de entrada de usuario es un control 816 del cursor, tal como un ratón, una bola de mando o teclas de dirección del cursor para comunicar información de dirección e indicar selecciones al procesador 804 y para controlar el movimiento del cursor en el dispositivo 812 de visualización. Este dispositivo de entrada normalmente tiene dos grados de libertad en dos ejes: un primer eje (por ejemplo, x) y un segundo eje (por ejemplo, y), que permite al dispositivo especificar posiciones en un plano.
El sistema informático 800 puede implementar las técnicas descritas en el presente documento usando lógica cableada hecha a medida, uno o más ASIC o FPGA, soporte lógico inalterable y/o lógica de programa que, en combinación con el sistema informático, hacen o programan el sistema informático 800 sea una máquina de uso especial. Según una realización, las técnicas del presente documento son efectuadas por el sistema informático 800 en respuesta a la ejecución por parte del procesador 804 de una o más secuencias de una o más instrucciones contenidas en la memoria principal 806. Tales instrucciones pueden ser leídas y puestas en la memoria principal 806 a partir de otro soporte de almacenamiento, tal como el dispositivo 810 de almacenamiento. La ejecución de las secuencias de instrucciones contenidas en la memoria principal 806 hace que el procesador 804 realice las etapas de proceso descritas en el presente documento. En realizaciones alternativas, pueden usarse circuitos cableados en lugar de instrucciones de soporte lógico o en combinación con las mismas.
La expresión “soportes de almacenamiento” usada en el presente documento se refiere a cualquier soporte no transitorio que almacene datos y/o instrucciones que hagan que una máquina opere de una forma específica. Tales soportes de almacenamiento comprenden soportes no volátiles y/o soportes volátiles. Los soportes no volátiles incluyen, por ejemplo, discos ópticos, discos magnéticos o unidades de estado sólido, como el dispositivo 810 de almacenamiento. Los soportes volátiles incluyen memoria dinámica, como la memoria principal 806. Formas comunes de soportes de almacenamiento incluyen, por ejemplo, un disquete, un disco flexible, un disco duro, una unidad de estado sólido, una cinta magnética o cualquier otro soporte magnético de almacenamiento de datos, un CD-ROM, cualquier otro soporte óptico de almacenamiento de datos, cualquier soporte físico con patrones de agujeros, una RAM, una PROM y una EPROM, una FLASH-EPROM, NVRAM y cualquier otro chip o cartucho de memoria.
Los soportes de almacenamiento son distintos de los soportes de transmisión, pero pueden ser usados en conjunción con los mismos. Los soportes de transmisión participan en la transferencia de información entre soportes de
almacenamiento. Por ejemplo, los soportes de transmisión incluyen cables coaxiales, hilo de cobre y fibra óptica, incluyendo los hilos que comprenden el bus 802. Los soportes de transmisión también pueden adoptar la forma de ondas acústicas o lumínicas, tales como las generadas durante las comunicaciones de datos por ondas de radio e infrarrojos.
Puede haber implicadas formas diversas de soportes para el transporte de una o más secuencias de una o más instrucciones al procesador 804 para su ejecución. Por ejemplo, las instrucciones pueden estar inicialmente transportadas en un disco magnético o una unidad de estado sólido de un ordenador remoto. El ordenador remoto puede cargar las instrucciones en su memoria dinámica y enviar las instrucciones por una línea telefónica usando un módem. Un módem local al sistema informático 800 puede recibir los datos por la línea telefónica y usar un transmisor infrarrojo para convertir los datos en una señal infrarroja. Un detector infrarrojo puede recibir los datos transportados en la señal infrarroja y circuitos apropiados pueden poner los datos en el bus 802. El bus 802 transporta los datos a la memoria principal 806, desde la cual el procesador 804 recupera y ejecuta las instrucciones. Las instrucciones recibidas por la memoria principal 806 pueden almacenarse opcionalmente en el dispositivo 810 de almacenamiento ya sea antes o después de su ejecución por el procesador 804.
El sistema informático 800 también incluya una interfaz 818 de comunicaciones acoplada al bus 802. La interfaz 818 de comunicaciones proporciona un acoplamiento bidireccional de comunicaciones de datos con un enlace 820 de red que está conectado a una red local 822. Por ejemplo, la interfaz 818 de comunicaciones puede ser una tarjeta de red digital de servicios integrados (RDSI), un módem de cable, un módem de satélite o un módem para proporcionar una conexión de comunicación de datos a un correspondiente tipo de línea telefónica. Como ejemplo adicional, la interfaz 818 de comunicaciones puede ser una tarjeta de red de área local (LAN, por sus siglas en inglés) para proporcionar una conexión de comunicación de datos a una LAN compatible. También pueden implementarse enlaces inalámbricos. En cualquier implementación de ese tipo, la interfaz 818 de comunicaciones envía y recibe señales eléctricas, electromagnéticas u ópticas que transportan flujos de datos digitales que representan diversos tipos de información.
El enlace 820 de red normalmente proporciona a otros dispositivos de datos una comunicación de datos a través de una o más redes. Por ejemplo, el enlace 820 de red puede proporcionar una conexión a través de la red local 822 a un ordenador central 824 o a equipos de red operados por un proveedor 826 de servicios de Internet (ISP, por sus siglas en inglés). El ISP 826, a su vez, proporciona servicios de comunicaciones de datos a través de la red mundial de comunicaciones de paquetes de datos ahora comúnmente denominada “Internet” 828. Tanto la red local 822 como Internet 828 usan señales eléctricas, electromagnéticas u ópticas que transportan flujos de datos digitales. Las señales a través de las diversas redes y las señales en el enlace 820 de red y a través de la interfaz 818 de comunicaciones, que transportan los datos digitales hacia y desde el sistema informático 800, son ejemplos de soportes de transmisión.
El sistema informático 800 puede enviar mensajes y recibir datos, incluyendo código de programa, a través de la red o las redes, del enlace 820 de red y de la interfaz 818 de comunicaciones. En el ejemplo de Internet, un servidor 830 podría transmitir un código solicitado para un programa de aplicación a través de Internet 828, de un ISP 826, de la red local 822 y de la interfaz 818 de comunicaciones.
El código recibido puede ser ejecutado por el procesador 804 cuando es recibido, y/o ser almacenado en el dispositivo 810 de almacenamiento y otro almacenamiento no volátil para su ejecución posterior.
En la memoria descriptiva precedente, se han descrito realizaciones de la invención con referencia a numerosos detalles específicos que pueden variar de una implementación a otra. En consecuencia, la memoria descriptiva y los dibujos han de ser considerados en un sentido ilustrativo, no restrictivo. El único indicador exclusivo del alcance de la invención, y que los solicitantes pretenden que sea el alcance de la invención, es el alcance literal y equivalente del pliego de reivindicaciones que emanan de esta solicitud, en la forma específica en la que se presentan tales reivindicaciones, incluyendo cualquier corrección subsiguiente.
Claims (15)
1. Un dispositivo para facilitar la comunicación entre una pluralidad de nodos (105-1, 105-M) de un grupo de cómputo, comprendiendo el dispositivo un coprocesador (115-M) de un nodo particular (105-M) de dicha pluralidad de nodos (105-1, 105-M), comprendiendo el coprocesador (115-M):
un circuito de puesta en cola;
estando acoplado dicho circuito de puesta en cola a una memoria (120-M) de dicho nodo particular (105-M);
siendo dicho circuito de puesta en cola un circuito cableado o un ASIC programado de manera persistente o una FPGA programada de manera persistente configurado para:
recibir (520), desde otro nodo (105-1) de dicha pluralidad de nodos (105-1, 105-M), una instrucción de puesta en cola que comprende una clave con un código (210) de clave irreversible cifrada derivado de un secreto básico, en donde:
la clave identifica una cola particular (300, 140-M) en dicha memoria (120-M), habiendo sido creada la clave previamente en dicho nodo particular (105-M) y enviada desde dicho nodo particular (105-M) a dicho otro nodo (105 1), y
la instrucción de puesta en cola incluye una carga útil que ha de almacenarse en la cola particular (300, 140-M);
autenticar (530) la instrucción de puesta en cola, comprendiendo el desciframiento del código (210) de clave irreversible cifrada el uso de dicho secreto básico almacenado en dicho coprocesador (115-M) y la determinación de si el código (210) de clave irreversible es válido; y
poner en cola (590) una entrada (332-1, 332-2) de cola, en la que se almacena dicha carga útil, en la cola particular (300, 140-M) identificada por la instrucción recibida de puesta en cola en respuesta a la recepción (520) de dicha instrucción de puesta en cola si la instrucción de puesta en cola fue autenticada con éxito.
2. El dispositivo de la Reivindicación 1, incluyendo dicho dispositivo un chip de circuitos integrados que incluye, separado de dicho circuito de puesta en cola, un procesador (110-M), estando acoplado dicho procesador (110-M) a dicho circuito de puesta en cola.
3. El dispositivo de la Reivindicación 1 o la Reivindicación 2 en donde dicho circuito de puesta en cola está configurado, además, para ejecutar en serie instrucciones de puesta en cola.
4. El dispositivo de cualquiera de las Reivindicaciones 1-3 en donde dicha carga útil incluida en dicha instrucción de puesta en cola se recibe en una pluralidad de fragmentos, y estando configurado además dicho circuito de puesta en cola para reensamblar dicha pluralidad de fragmentos en respuesta a la recepción de dicha instrucción de puesta en cola y dicha pluralidad de fragmentos.
5. El dispositivo de la Reivindicación 4 en donde dicha pluralidad de fragmentos se recibió en un orden diferente en el que se envió dicha pluralidad de fragmentos.
6. El dispositivo de cualquiera de las Reivindicaciones 1-5 en donde un código válido (210) de clave irreversible indica que la identificación de la cola particular (300, 140-M) por la clave es válida.
7. Un procedimiento para facilitar la comunicación entre una pluralidad de nodos (105-1, 105-M) de un grupo de cómputo, en donde un nodo particular (105-M) de dicha pluralidad de nodos (105-1, 105-M) comprende un coprocesador (115-M), incluyendo el procedimiento:
transmitir, desde otro nodo (105-1) de dicha pluralidad de nodos (105-1, 105-M), una instrucción particular de puesta en cola a un circuito de puesta en cola de dicho coprocesador (115-M) de dicho nodo particular (105-M), la instrucción particular de puesta en cola, que es una instrucción de puesta en cola de una entrada (332-1, 332-N) de cola en una cola particular (300, 140-M) almacenada en una memoria (120-M) de dicho nodo particular (105-M), estando acoplada dicha memoria (120-M) a dicho circuito de puesta en cola, identificando dicha instrucción particular de puesta en cola dicha cola particular (300, 140-M);
en donde dicho circuito de puesta en cola es un circuito cableado o un ASIC programado de manera persistente o una FPGA programada de manera persistente configurado para:
recibir (520), desde dicho otro nodo (105-1) de dicha pluralidad de nodos (105-1, 105-M), dicha instrucción particular de puesta en cola que comprende una clave con un código (210) de clave irreversible cifrada derivado de un secreto básico, en donde:
la clave identifica una cola particular (300, 140-M) en dicha memoria (120-M), habiendo sido creada la clave previamente en dicho nodo particular (105-M) y enviada desde dicho nodo particular (105-M) a dicho otro nodo (105 1), y
la instrucción de puesta en cola incluye una carga útil que ha de almacenarse en la cola particular (300, 140-M);
autenticar (530) la instrucción de puesta en cola, comprendiendo el desciframiento del código (210) de clave irreversible cifrada el uso de dicho secreto básico almacenado en dicho coprocesador (115-M) y la determinación de si el código (210) de clave irreversible es válido; y
en respuesta a la recepción de la instrucción de puesta en cola, poner en cola (590) una entrada de cola, en la que se almacena dicha carga útil, en la cola particular (300, 140-M) identificada por la instrucción recibida de puesta en cola si la instrucción de puesta en cola fue autenticada con éxito.
8. El procedimiento de la Reivindicación 7 en donde dicho circuito de puesta en cola está situado en un chip de circuitos integrados que incluye, separado de dicho circuito de puesta en cola, un procesador (110-M), estando acoplado dicho procesador (110-M) a dicho circuito de puesta en cola.
9. El procedimiento de la Reivindicación 7 o la Reivindicación 8 que, además, comprende la recepción (700) de una interrupción en respuesta a la puesta en cola de dicha entrada (332-1, 332-N) de cola.
10. El procedimiento de cualquiera de las Reivindicaciones 7-9 que, además, comprende extraer una entrada (332-1, 332-N) de cola de dicha cola particular (300, 140-M).
11. El procedimiento de la Reivindicación 10 en donde extraer una entrada (332-1, 332-N) de cola de dicha cola particular (300, 140-M) comprende establecer un valor (334-1, 334-N) en dicha entrada (332-1, 332-N) de cola para indicar que la entrada (332-1, 332-N) de cola ha sido leída.
12. El procedimiento de la Reivindicación 10 en donde extraer una entrada (332-1, 332-N) de cola de dicha cola (300, 140-M) comprende establecer atómicamente (790) un puntero para que apunte a una entrada (332-1, 332-N) de cola que no ha sido leída.
13. El procedimiento de la Reivindicación 10 en donde extraer una entrada (332-1, 332-N) de cola de dicha cola particular (300, 140-M) comprende copiar dicha entrada (332-1, 332-N) de cola en memoria (120-M).
14. El procedimiento de cualquiera de las Reivindicaciones 7-13 en donde un código válido (210) de clave irreversible indica que la identificación de la cola particular (300, 140-M) por la clave es válida.
15. Un sistema que comprende medios para llevar a cabo el procedimiento mencionado en una cualquiera de las Reivindicaciones 7-14.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201261709142P | 2012-10-02 | 2012-10-02 | |
| US13/778,307 US9158810B2 (en) | 2012-10-02 | 2013-02-27 | Hardware message queues for intra-cluster communication |
| PCT/US2013/048110 WO2014055145A1 (en) | 2012-10-02 | 2013-06-27 | Hardware message queues for intra-cluster communication |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2880268T3 true ES2880268T3 (es) | 2021-11-24 |
Family
ID=50386190
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES13737064T Active ES2880268T3 (es) | 2012-10-02 | 2013-06-27 | Colas de mensajes en soporte físico para una comunicación dentro de un grupo de cómputo |
Country Status (6)
| Country | Link |
|---|---|
| US (10) | US9292569B2 (es) |
| EP (6) | EP2904513B1 (es) |
| JP (1) | JP6320393B2 (es) |
| CN (7) | CN104662538B (es) |
| ES (1) | ES2880268T3 (es) |
| WO (6) | WO2014055137A1 (es) |
Families Citing this family (139)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
| US9021224B2 (en) * | 2011-06-30 | 2015-04-28 | Hitachi, Ltd. | Method and apparatus for enhanced computer security |
| US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
| EP2788901A1 (en) | 2011-12-08 | 2014-10-15 | Oracle International Corporation | Techniques for maintaining column vectors of relational data within volatile memory |
| US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
| US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
| US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
| US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
| US9087095B2 (en) * | 2012-06-21 | 2015-07-21 | International Business Machines Corporation | Processing columns in a database accelerator while preserving row-based architecture |
| US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
| US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
| US10102028B2 (en) | 2013-03-12 | 2018-10-16 | Sas Institute Inc. | Delivery acknowledgment in event stream processing |
| US9679084B2 (en) | 2013-03-14 | 2017-06-13 | Oracle International Corporation | Memory sharing across distributed nodes |
| EP2973139B1 (en) * | 2013-03-15 | 2020-04-22 | Intel Corporation | Security co-processor boot performance |
| US10108539B2 (en) | 2013-06-13 | 2018-10-23 | International Business Machines Corporation | Allocation of distributed data structures |
| US20160210237A1 (en) * | 2013-07-30 | 2016-07-21 | Nec Corporation | Storage device, data access method, and program recording medium |
| US9836519B2 (en) | 2013-09-20 | 2017-12-05 | Oracle International Corporation | Densely grouping dimensional data |
| US9990398B2 (en) * | 2013-09-20 | 2018-06-05 | Oracle International Corporation | Inferring dimensional metadata from content of a query |
| US9740718B2 (en) | 2013-09-20 | 2017-08-22 | Oracle International Corporation | Aggregating dimensional data using dense containers |
| US9378232B2 (en) | 2013-09-21 | 2016-06-28 | Oracle International Corporation | Framework for numa affinitized parallel query on in-memory objects within the RDBMS |
| US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
| WO2015065449A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Cache controller for non-volatile memory |
| US20150161678A1 (en) * | 2013-12-05 | 2015-06-11 | Turn Inc. | Dynamic ordering of online advertisement software steps |
| US9313029B2 (en) * | 2013-12-15 | 2016-04-12 | Cavium, Inc. | Virtualized network interface for remote direct memory access over converged ethernet |
| US9306916B2 (en) * | 2013-12-25 | 2016-04-05 | Cavium, Inc. | System and a method for a remote direct memory access over converged ethernet |
| US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
| DE102014207476A1 (de) * | 2014-04-17 | 2015-10-22 | Robert Bosch Gmbh | Verfahren zur Auswahl einer von mehreren Warteschlangen |
| US9715345B2 (en) * | 2014-04-25 | 2017-07-25 | Micron Technology, Inc. | Apparatuses and methods for memory management |
| US10838893B2 (en) * | 2014-05-30 | 2020-11-17 | Apple Inc. | Methods for mitigating system interrupts for an electronic device |
| US9122651B1 (en) | 2014-06-06 | 2015-09-01 | Sas Institute Inc. | Computer system to support failover in an event stream processing system |
| US9356986B2 (en) * | 2014-08-08 | 2016-05-31 | Sas Institute Inc. | Distributed stream processing |
| WO2016064397A1 (en) * | 2014-10-23 | 2016-04-28 | Hewlett Packard Enterprise Development Lp | Admissions control of a device |
| WO2016068942A1 (en) | 2014-10-30 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Encryption for transactions in a memory fabric |
| WO2016068941A1 (en) | 2014-10-30 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Secure transactions in a memory fabric |
| US9678812B2 (en) | 2014-12-22 | 2017-06-13 | International Business Machines Corporation | Addressing for inter-thread push communication |
| US9766890B2 (en) * | 2014-12-23 | 2017-09-19 | International Business Machines Corporation | Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread |
| US10255336B2 (en) | 2015-05-07 | 2019-04-09 | Datometry, Inc. | Method and system for transparent interoperability between applications and data management systems |
| US9749319B2 (en) * | 2015-05-20 | 2017-08-29 | Google Inc. | Address validation using signatures |
| US11449452B2 (en) | 2015-05-21 | 2022-09-20 | Goldman Sachs & Co. LLC | General-purpose parallel computing architecture |
| CN113641627A (zh) * | 2015-05-21 | 2021-11-12 | 高盛有限责任公司 | 通用并行计算架构 |
| US10025823B2 (en) | 2015-05-29 | 2018-07-17 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
| US10594779B2 (en) | 2015-08-27 | 2020-03-17 | Datometry, Inc. | Method and system for workload management for data management systems |
| US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
| JP6515771B2 (ja) * | 2015-10-07 | 2019-05-22 | 富士通コネクテッドテクノロジーズ株式会社 | 並列処理装置及び並列処理方法 |
| US9823871B2 (en) | 2015-10-09 | 2017-11-21 | Oracle International Corporation | Performance of coprocessor assisted memset() through heterogeneous computing |
| US10678792B2 (en) | 2015-10-23 | 2020-06-09 | Oracle International Corporation | Parallel execution of queries with a recursive clause |
| US10642831B2 (en) | 2015-10-23 | 2020-05-05 | Oracle International Corporation | Static data caching for queries with a clause that requires multiple iterations to execute |
| US10783142B2 (en) | 2015-10-23 | 2020-09-22 | Oracle International Corporation | Efficient data retrieval in staged use of in-memory cursor duration temporary tables |
| CN105426271B (zh) * | 2015-12-22 | 2018-09-21 | 华为技术有限公司 | 对分布式存储系统的锁管理的方法和装置 |
| US10146681B2 (en) * | 2015-12-24 | 2018-12-04 | Intel Corporation | Non-uniform memory access latency adaptations to achieve bandwidth quality of service |
| CN105677812A (zh) * | 2015-12-31 | 2016-06-15 | 华为技术有限公司 | 一种数据查询方法及数据查询装置 |
| US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
| US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
| US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
| US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
| US10599488B2 (en) | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
| US10853125B2 (en) * | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
| CN106354480B (zh) * | 2016-08-24 | 2019-01-29 | 长沙中部芯空微电子研究所有限公司 | 一种mpp型异构高速mcu系统 |
| US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
| US10558659B2 (en) | 2016-09-16 | 2020-02-11 | Oracle International Corporation | Techniques for dictionary based join and aggregation |
| US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
| US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
| US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
| US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
| US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
| US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
| US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
| US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10606487B2 (en) * | 2017-03-17 | 2020-03-31 | International Business Machines Corporation | Partitioned memory with locally aggregated copy pools |
| US12105716B2 (en) * | 2017-06-23 | 2024-10-01 | Xilinx, Inc. | Parallel compute offload to database accelerator |
| US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
| US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
| US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
| US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
| US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
| US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
| CN107835203B (zh) * | 2017-08-09 | 2020-07-10 | 平安壹钱包电子商务有限公司 | 消息分组投递的方法、装置、存储介质及终端 |
| US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
| US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
| US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
| US10445098B2 (en) * | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
| US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
| US10664396B2 (en) * | 2017-10-04 | 2020-05-26 | Intel Corporation | Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes |
| CN107766526B (zh) * | 2017-10-26 | 2020-04-28 | 中国人民银行清算总中心 | 数据库访问方法、装置及系统 |
| CN107886692B (zh) * | 2017-10-30 | 2020-08-25 | 皖西学院 | 一种生物工程用传感器LoRa无线网络通讯系统 |
| US10452547B2 (en) | 2017-12-29 | 2019-10-22 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
| US10467139B2 (en) | 2017-12-29 | 2019-11-05 | Oracle International Corporation | Fault-tolerant cache coherence over a lossy network |
| US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
| US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
| US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
| CN110110004B (zh) * | 2018-01-30 | 2023-05-30 | 腾讯科技(深圳)有限公司 | 一种数据操作方法、装置和存储介质 |
| US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
| US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
| US10649777B2 (en) * | 2018-05-14 | 2020-05-12 | International Business Machines Corporation | Hardware-based data prefetching based on loop-unrolled instructions |
| CN108776934B (zh) * | 2018-05-15 | 2022-06-07 | 中国平安人寿保险股份有限公司 | 分布式数据计算方法、装置、计算机设备及可读存储介质 |
| US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
| US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
| US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
| US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
| EP3846026A4 (en) * | 2018-09-21 | 2021-11-03 | Huawei Technologies Co., Ltd. | DATA EXTRACTION PROCESS AND DEVICE |
| CN111399905B (zh) * | 2019-01-02 | 2022-08-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
| JP7146611B2 (ja) * | 2018-12-18 | 2022-10-04 | 株式会社日立製作所 | カラムストアデータベースシステム及びデータベース処理高速化方法 |
| US11294869B1 (en) * | 2018-12-19 | 2022-04-05 | Datometry, Inc. | Expressing complexity of migration to a database candidate |
| US11204898B1 (en) | 2018-12-19 | 2021-12-21 | Datometry, Inc. | Reconstructing database sessions from a query log |
| US11403291B1 (en) | 2018-12-20 | 2022-08-02 | Datometry, Inc. | Static emulation of database queries for migration to a different database |
| CN113168147B (zh) * | 2018-12-29 | 2024-07-09 | 阿里巴巴集团控股有限公司 | 使用硬件加速高效地扫描数据库的系统和方法 |
| US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
| US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
| US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
| US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
| US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
| US11487674B2 (en) * | 2019-04-17 | 2022-11-01 | Rankin Labs, Llc | Virtual memory pool within a network which is accessible from multiple platforms |
| CN110113395B (zh) * | 2019-04-19 | 2021-11-09 | 新华三云计算技术有限公司 | 共享文件系统维护方法及装置 |
| US11372773B2 (en) | 2019-05-28 | 2022-06-28 | Rankin Labs, Llc | Supporting a virtual memory area at a remote computing machine |
| US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
| US20220245150A1 (en) * | 2019-07-31 | 2022-08-04 | Sindice Limited T/A Siren | Semantic caching of semi-join operators in shared-nothing and log-structured databases |
| US11222018B2 (en) | 2019-09-09 | 2022-01-11 | Oracle International Corporation | Cache conscious techniques for generation of quasi-dense grouping codes of compressed columnar data in relational database systems |
| US12118041B2 (en) * | 2019-10-13 | 2024-10-15 | Thoughtspot, Inc. | Query execution on compressed in-memory data |
| CN111061760B (zh) * | 2019-10-30 | 2020-12-15 | 中科驭数(北京)科技有限公司 | 关系型数据库管理系统中的窗口聚合方法、查询方法及装置 |
| US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
| US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
| US11755355B2 (en) | 2020-11-25 | 2023-09-12 | Nxp Usa, Inc. | Systems and methods for assigning domain identifiers to remote peripheral devices using a hypervisor |
| US20220166762A1 (en) * | 2020-11-25 | 2022-05-26 | Microsoft Technology Licensing, Llc | Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith |
| JP7777138B2 (ja) | 2020-12-31 | 2025-11-27 | アナログ ディヴァイスィズ インク | エッジデバイスのための鍵無効化 |
| US11741073B2 (en) | 2021-06-01 | 2023-08-29 | Alibaba Singapore Holding Private Limited | Granularly timestamped concurrency control for key-value store |
| US11829291B2 (en) | 2021-06-01 | 2023-11-28 | Alibaba Singapore Holding Private Limited | Garbage collection of tree structure with page mappings |
| US12373440B2 (en) * | 2021-06-01 | 2025-07-29 | Alibaba Innovation Private Limited | High-performance key-value store |
| US11755427B2 (en) | 2021-06-01 | 2023-09-12 | Alibaba Singapore Holding Private Limited | Fast recovery and replication of key-value stores |
| CN113342480B (zh) * | 2021-06-23 | 2022-02-22 | 海光信息技术股份有限公司 | 一种事务处理系统、事务处理方法及主机系统 |
| CN113420033B (zh) * | 2021-08-17 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
| US12056048B2 (en) | 2021-11-11 | 2024-08-06 | Samsung Electronics Co., Ltd. | System and method for management of electronic memory |
| US12462070B2 (en) * | 2021-12-28 | 2025-11-04 | Ati Technologies Ulc | Software assisted acceleration in cryptographic queue processing |
| US11927634B2 (en) | 2022-04-01 | 2024-03-12 | Samsung Electronics Co., Ltd | Systems and methods for database scan acceleration |
| US20230359624A1 (en) * | 2022-05-09 | 2023-11-09 | Samsung Electronics Co., Ltd. | Systems and methods for processing database queries via a computational storage device |
| US12554507B2 (en) | 2023-04-11 | 2026-02-17 | Samsung Electronics Co., Ltd. | Systems and methods for processing formatted data in computational storage |
| US12353916B2 (en) | 2023-04-11 | 2025-07-08 | Samsung Electronics Co., Ltd. | Systems and methods for processing functions in computational storage |
| US20250291940A1 (en) * | 2024-03-15 | 2025-09-18 | Intel Corporation | Apparatus and method for trusted access to expansion memory by multiple potentially heterogeneous compute nodes |
Family Cites Families (138)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| USRE34052E (en) | 1984-05-31 | 1992-09-01 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
| US4817140A (en) | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
| US5133053A (en) | 1987-02-13 | 1992-07-21 | International Business Machines Corporation | Interprocess communication queue location transparency |
| US5604899A (en) | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
| US5423010A (en) | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
| US5483624A (en) * | 1992-03-27 | 1996-01-09 | Monarch Marking Systems, Inc. | Programmable hand held labeler |
| JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
| DE69424597T2 (de) | 1993-06-17 | 2001-03-01 | Sun Microsystems, Inc. | Erweiterbares Dateiensystem |
| US5581705A (en) * | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
| US5564056A (en) * | 1994-03-01 | 1996-10-08 | Intel Corporation | Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming |
| DE19515020A1 (de) * | 1994-07-01 | 1996-01-04 | Hewlett Packard Co | Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren |
| JP3518034B2 (ja) | 1995-03-30 | 2004-04-12 | 三菱電機株式会社 | ソート方法並びにソート処理装置並びにデータ処理装置 |
| US5684977A (en) | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
| CA2146171C (en) | 1995-04-03 | 2000-01-11 | Bernhard Schiefer | Method for estimating cardinalities for query processing in a relational database management system |
| KR0175499B1 (ko) * | 1996-09-11 | 1999-04-01 | 양승택 | 다중태그 구조의 계층 상호연결망에서의 브로드캐스트 전송방법 |
| JPH10154160A (ja) * | 1996-09-25 | 1998-06-09 | Sharp Corp | 並列データ検索処理装置 |
| US6148377A (en) | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
| JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
| US6151688A (en) | 1997-02-21 | 2000-11-21 | Novell, Inc. | Resource management in a clustered computer system |
| US5822748A (en) * | 1997-02-28 | 1998-10-13 | Oracle Corporation | Group by and distinct sort elimination using cost-based optimization |
| US6047081A (en) | 1997-10-24 | 2000-04-04 | Imation Corp. | Image processing software system having configurable communication pipelines |
| US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
| US20010049780A1 (en) | 1998-03-27 | 2001-12-06 | Shreekant Thakkar | Method and apparatus for performing integer operations in response to a result of a floating point operation |
| US6230240B1 (en) | 1998-06-23 | 2001-05-08 | Hewlett-Packard Company | Storage management system and auto-RAID transaction manager for coherent memory map across hot plug interface |
| EP1046100A1 (en) | 1998-08-06 | 2000-10-25 | Trimedia Technologies, Inc. | Data processor and method of processing data |
| JP3583657B2 (ja) | 1998-09-30 | 2004-11-04 | 株式会社東芝 | 中継装置及び通信装置 |
| US6633891B1 (en) | 1998-11-24 | 2003-10-14 | Oracle International Corporation | Managing replacement of data in a cache on a node based on caches of other nodes |
| US6434545B1 (en) * | 1998-12-16 | 2002-08-13 | Microsoft Corporation | Graphical query analyzer |
| JP2000261674A (ja) | 1999-03-09 | 2000-09-22 | Fujitsu Ltd | 画像伸長装置 |
| US6295571B1 (en) | 1999-03-19 | 2001-09-25 | Times N Systems, Inc. | Shared memory apparatus and method for multiprocessor systems |
| US6826522B1 (en) | 1999-06-21 | 2004-11-30 | Pts Corporation | Methods and apparatus for improved efficiency in pipeline simulation and emulation |
| US6349310B1 (en) | 1999-07-06 | 2002-02-19 | Compaq Computer Corporation | Database management system and method for accessing rows in a partitioned table |
| US6671797B1 (en) | 2000-02-18 | 2003-12-30 | Texas Instruments Incorporated | Microprocessor with expand instruction for forming a mask from one bit |
| US6697919B2 (en) | 2000-06-10 | 2004-02-24 | Hewlett-Packard Development Company, L.P. | System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system |
| US7383424B1 (en) * | 2000-06-15 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Computer architecture containing processor and decoupled coprocessor |
| JP2004507835A (ja) | 2000-08-14 | 2004-03-11 | リー,ジャエ−ハク | 多機能pda |
| US6898693B1 (en) * | 2000-11-02 | 2005-05-24 | Intel Corporation | Hardware loops |
| US6917987B2 (en) * | 2001-03-26 | 2005-07-12 | Intel Corporation | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
| US6745174B2 (en) | 2001-03-29 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method of executing before-triggers in an active database |
| US7013353B2 (en) | 2001-03-30 | 2006-03-14 | Intel Corporation | Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem |
| US20020188830A1 (en) | 2001-06-01 | 2002-12-12 | Brian Boles | Bit replacement and extraction instructions |
| US6789143B2 (en) | 2001-09-24 | 2004-09-07 | International Business Machines Corporation | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries |
| US6748499B2 (en) * | 2001-11-15 | 2004-06-08 | International Business Machines Corporation | Sharing memory tables between host channel adapters |
| US6854032B2 (en) * | 2001-12-04 | 2005-02-08 | Sun Microsystems, Inc. | System for accessing a region of memory using remote address translation and using a memory window table and a memory region table |
| US6757790B2 (en) * | 2002-02-19 | 2004-06-29 | Emc Corporation | Distributed, scalable data storage facility with cache memory |
| JP2003308334A (ja) * | 2002-04-15 | 2003-10-31 | Nippon Telegr & Teleph Corp <Ntt> | 情報検索方法及び装置、情報検索プログラム、情報検索プログラムを記録した記録媒体 |
| US7249118B2 (en) | 2002-05-17 | 2007-07-24 | Aleri, Inc. | Database system and methods |
| US7197647B1 (en) | 2002-09-30 | 2007-03-27 | Carnegie Mellon University | Method of securing programmable logic configuration data |
| US6842848B2 (en) | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
| US20060098649A1 (en) * | 2004-11-10 | 2006-05-11 | Trusted Network Technologies, Inc. | System, apparatuses, methods, and computer-readable media for determining security realm identity before permitting network connection |
| US7730292B2 (en) | 2003-03-31 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions for directing results to selected subword locations of data processor result register |
| US20040260182A1 (en) | 2003-06-23 | 2004-12-23 | Zuluaga Andres F. | Intraluminal spectroscope with wall contacting probe |
| US7006021B1 (en) * | 2003-06-27 | 2006-02-28 | Cypress Semiconductor Corp. | Low power serializer circuit and method |
| US7047252B2 (en) | 2003-12-02 | 2006-05-16 | Oracle International Corporation | Complex computation across heterogenous computer systems |
| US7664938B1 (en) | 2004-01-07 | 2010-02-16 | Xambala Corporation | Semantic processor systems and methods |
| US7698552B2 (en) * | 2004-06-03 | 2010-04-13 | Intel Corporation | Launching a secure kernel in a multiprocessor system |
| JP2006004274A (ja) * | 2004-06-18 | 2006-01-05 | Nippon Telegr & Teleph Corp <Ntt> | 対話処理装置、対話処理方法及び対話処理プログラム |
| US7516121B2 (en) * | 2004-06-23 | 2009-04-07 | Oracle International Corporation | Efficient evaluation of queries using translation |
| US20060075236A1 (en) * | 2004-09-30 | 2006-04-06 | Marek James A | Method and apparatus for high assurance processing |
| US20060095690A1 (en) | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method, and storage medium for shared key index space for memory regions |
| US7814104B2 (en) | 2005-05-04 | 2010-10-12 | Oracle International Corporation | Techniques for partition pruning |
| US7725595B1 (en) * | 2005-05-24 | 2010-05-25 | The United States Of America As Represented By The Secretary Of The Navy | Embedded communications system and method |
| US7877379B2 (en) * | 2005-09-30 | 2011-01-25 | Oracle International Corporation | Delaying evaluation of expensive expressions in a query |
| US8817029B2 (en) | 2005-10-26 | 2014-08-26 | Via Technologies, Inc. | GPU pipeline synchronization and control system and method |
| GB0524720D0 (en) * | 2005-12-05 | 2006-01-11 | Imec Inter Uni Micro Electr | Ultra low power ASIP architecture II |
| US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
| US8024797B2 (en) * | 2005-12-21 | 2011-09-20 | Intel Corporation | Method, apparatus and system for performing access control and intrusion detection on encrypted data |
| US8255922B1 (en) * | 2006-01-09 | 2012-08-28 | Oracle America, Inc. | Mechanism for enabling multiple processes to share physical memory |
| US8049760B2 (en) | 2006-02-06 | 2011-11-01 | Via Technologies, Inc. | System and method for vector computations in arithmetic logic units (ALUs) |
| US20080010417A1 (en) * | 2006-04-28 | 2008-01-10 | Zeffer Hakan E | Read/Write Permission Bit Support for Efficient Hardware to Software Handover |
| US7509460B2 (en) * | 2006-05-04 | 2009-03-24 | Sun Microsystems, Inc. | DRAM remote access cache in local memory in a distributed shared memory system |
| US7783862B2 (en) | 2006-08-07 | 2010-08-24 | International Characters, Inc. | Method and apparatus for an inductive doubling architecture |
| US20080065835A1 (en) * | 2006-09-11 | 2008-03-13 | Sun Microsystems, Inc. | Offloading operations for maintaining data coherence across a plurality of nodes |
| US8533216B2 (en) | 2006-10-30 | 2013-09-10 | Teradata Us, Inc. | Database system workload management method and system |
| US7660793B2 (en) | 2006-11-13 | 2010-02-09 | Exegy Incorporated | Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors |
| JP5379693B2 (ja) * | 2006-11-13 | 2013-12-25 | アイ・ピー・リザブワー・エル・エル・シー | コプロセッサを使った構造化データおよび非構造化データの高性能の統合、処理および探索の方法およびシステム |
| US20080162876A1 (en) | 2006-12-28 | 2008-07-03 | International Business Machines Corporation | dedicated hardware processor for structured query language (sql) transactions |
| US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
| US7792822B2 (en) * | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
| US8032499B2 (en) | 2007-05-21 | 2011-10-04 | Sap Ag | Compression of tables based on occurrence of values |
| US7769729B2 (en) | 2007-05-21 | 2010-08-03 | Sap Ag | Block compression of tables with repeated values |
| US20090037700A1 (en) | 2007-07-30 | 2009-02-05 | Clear Falls Pty Ltd | Method and system for reactively assigning computational threads of control between processors |
| US7882210B2 (en) | 2007-08-02 | 2011-02-01 | Sap Ag | Dynamic agent formation for efficient data provisioning |
| WO2009031303A1 (ja) * | 2007-09-05 | 2009-03-12 | Tohoku University | 固体撮像素子及び撮影装置 |
| US20090070786A1 (en) | 2007-09-11 | 2009-03-12 | Bea Systems, Inc. | Xml-based event processing networks for event server |
| HUE042697T2 (hu) | 2007-09-24 | 2019-07-29 | Hasso Plattner Inst Fuer Digital Engineering Ggmbh | ETL kisebb nulla redundancia rendszer és eljárás OLTP adatok jelentésére |
| CN100495404C (zh) * | 2007-11-22 | 2009-06-03 | 中国人民解放军国防科学技术大学 | 基于流处理的生物序列数据库搜索多层次加速方法 |
| US7991794B2 (en) | 2007-12-18 | 2011-08-02 | Oracle International Corporation | Pipelining operations involving DML and query |
| CN101227689B (zh) * | 2007-12-27 | 2011-01-19 | 华为技术有限公司 | 信息上报方法及装置 |
| US7769726B2 (en) | 2007-12-31 | 2010-08-03 | Sap, Ag | Method for verification of data and metadata in a data repository |
| US8258952B2 (en) * | 2008-03-14 | 2012-09-04 | The Invention Science Fund I, Llc | System for treating at least one plant including a treatment apparatus and an electronic tag interrogator |
| US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
| US8732386B2 (en) * | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
| US20090289861A1 (en) * | 2008-05-20 | 2009-11-26 | Infineon Technologies Ag | Radio frequency communication devices and methods |
| JP2010003266A (ja) * | 2008-06-23 | 2010-01-07 | Nippon Telegr & Teleph Corp <Ntt> | クエリ生成装置及び方法及びプログラム及びコンピュータ読取可能な記録媒体 |
| US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
| US8626725B2 (en) * | 2008-07-31 | 2014-01-07 | Microsoft Corporation | Efficient large-scale processing of column based data encoded structures |
| US8108361B2 (en) | 2008-07-31 | 2012-01-31 | Microsoft Corporation | Efficient column based data encoding for large-scale data storage |
| US8275815B2 (en) | 2008-08-25 | 2012-09-25 | International Business Machines Corporation | Transactional processing for clustered file systems |
| US20100088309A1 (en) * | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
| US8725707B2 (en) | 2009-03-26 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Data continuous SQL process |
| US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
| US8285709B2 (en) | 2009-05-12 | 2012-10-09 | Teradata Us, Inc. | High-concurrency query operator and method |
| US9304767B2 (en) * | 2009-06-02 | 2016-04-05 | Oracle America, Inc. | Single cycle data movement between general purpose and floating-point registers |
| US8789173B2 (en) * | 2009-09-03 | 2014-07-22 | Juniper Networks, Inc. | Protecting against distributed network flood attacks |
| US8356185B2 (en) * | 2009-10-08 | 2013-01-15 | Oracle America, Inc. | Apparatus and method for local operand bypassing for cryptographic instructions |
| US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
| US8270967B1 (en) * | 2010-02-09 | 2012-09-18 | Sprint Spectrum, L.P. | Overriding a most-recently-used (MRU) table for system acquisition |
| US20110196900A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
| US8856593B2 (en) * | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
| US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
| CN101944077B (zh) * | 2010-09-02 | 2011-10-19 | 东莞市泰斗微电子科技有限公司 | 一种主处理器和协处理器之间的通讯接口及其控制方法 |
| CN201804331U (zh) * | 2010-09-21 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种基于协处理器的重复数据删除系统 |
| US8260803B2 (en) * | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
| US8938644B2 (en) | 2010-12-03 | 2015-01-20 | Teradata Us, Inc. | Query execution plan revision for error recovery |
| US8972746B2 (en) | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
| FR2969156B1 (fr) | 2010-12-21 | 2013-02-08 | Chryso | Polymere comportant une fonction hydrolysable utilisable comme fluidifiant |
| US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
| US8666970B2 (en) | 2011-01-20 | 2014-03-04 | Accenture Global Services Limited | Query plan enhancement |
| JP5971635B2 (ja) * | 2011-01-25 | 2016-08-17 | エヌエックスピー カナダ インコーポレイテッド | ベクトルユニット共有の装置および方法 |
| US20120303633A1 (en) | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
| CN102184365B (zh) * | 2011-06-07 | 2013-05-29 | 郑州信大捷安信息技术股份有限公司 | 基于SoC芯片外部数据安全存储系统及存取控制方法 |
| US8756363B2 (en) | 2011-07-07 | 2014-06-17 | Oracle International Corporation | Efficient storage of memory version data |
| US8572441B2 (en) | 2011-08-05 | 2013-10-29 | Oracle International Corporation | Maximizing encodings of version control bits for memory corruption detection |
| US8601473B1 (en) * | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
| US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
| EP2788901A1 (en) | 2011-12-08 | 2014-10-15 | Oracle International Corporation | Techniques for maintaining column vectors of relational data within volatile memory |
| US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
| US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
| CN104126166A (zh) | 2011-12-23 | 2014-10-29 | 英特尔公司 | 用于执行使用掩码的向量打包一元编码的系统、装置和方法 |
| CN104094218B (zh) | 2011-12-23 | 2017-08-29 | 英特尔公司 | 用于执行写掩码寄存器到向量寄存器中的一系列索引值的转换的系统、装置和方法 |
| WO2014033606A2 (en) | 2012-08-31 | 2014-03-06 | Pradeep Varma | Systems and methods of memory and access management |
| US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
| US8954391B2 (en) * | 2012-10-15 | 2015-02-10 | Oracle International Corporation | System and method for supporting transient partition consistency in a distributed data grid |
| US9043559B2 (en) | 2012-10-23 | 2015-05-26 | Oracle International Corporation | Block memory engine with memory corruption detection |
| US9244829B2 (en) | 2012-12-20 | 2016-01-26 | Oracle International Corporation | Method and system for efficient memory region deallocation |
| US9471590B2 (en) * | 2013-02-12 | 2016-10-18 | Atlantis Computing, Inc. | Method and apparatus for replicating virtual machine images using deduplication metadata |
| US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
-
2013
- 2013-02-26 US US13/778,013 patent/US9292569B2/en active Active
- 2013-02-26 US US13/778,009 patent/US9063974B2/en active Active
- 2013-02-27 US US13/778,307 patent/US9158810B2/en active Active
- 2013-03-07 US US13/789,524 patent/US9251272B2/en active Active
- 2013-03-14 US US13/828,555 patent/US10223116B2/en active Active
- 2013-03-15 US US13/839,525 patent/US9372813B2/en active Active
- 2013-03-15 US US13/838,542 patent/US9400821B2/en active Active
- 2013-06-14 EP EP13733171.6A patent/EP2904513B1/en active Active
- 2013-06-14 JP JP2015534471A patent/JP6320393B2/ja active Active
- 2013-06-14 CN CN201380049816.7A patent/CN104662538B/zh active Active
- 2013-06-14 CN CN201810434459.0A patent/CN108664596B/zh active Active
- 2013-06-14 WO PCT/US2013/045873 patent/WO2014055137A1/en not_active Ceased
- 2013-06-14 CN CN201380049301.7A patent/CN104662534B/zh active Active
- 2013-06-14 EP EP13734557.5A patent/EP2904514B1/en active Active
- 2013-06-14 WO PCT/US2013/045881 patent/WO2014055138A1/en not_active Ceased
- 2013-06-27 CN CN201380051875.8A patent/CN104704491B/zh active Active
- 2013-06-27 EP EP13737064.9A patent/EP2904515B1/en active Active
- 2013-06-27 ES ES13737064T patent/ES2880268T3/es active Active
- 2013-06-27 WO PCT/US2013/048110 patent/WO2014055145A1/en not_active Ceased
- 2013-07-22 US US13/947,674 patent/US9557997B2/en active Active
- 2013-09-30 EP EP13777395.8A patent/EP2904521B1/en active Active
- 2013-09-30 WO PCT/US2013/062718 patent/WO2014055443A1/en not_active Ceased
- 2013-09-30 CN CN201380057680.4A patent/CN104769591B/zh active Active
- 2013-10-01 CN CN201380051672.9A patent/CN104756091B/zh active Active
- 2013-10-01 WO PCT/US2013/062880 patent/WO2014055526A1/en not_active Ceased
- 2013-10-01 EP EP13777400.6A patent/EP2904499B1/en active Active
- 2013-10-01 CN CN201380057937.6A patent/CN104769561B/zh active Active
- 2013-10-01 EP EP13783718.3A patent/EP2904500B1/en active Active
- 2013-10-01 WO PCT/US2013/062859 patent/WO2014055512A1/en not_active Ceased
-
2015
- 2015-05-11 US US14/709,302 patent/US9542443B2/en active Active
- 2015-12-10 US US14/964,805 patent/US10055224B2/en active Active
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2880268T3 (es) | Colas de mensajes en soporte físico para una comunicación dentro de un grupo de cómputo | |
| US11138132B2 (en) | Technologies for secure I/O with accelerator devices | |
| US11269786B2 (en) | Memory data protection based on authenticated encryption | |
| US10142101B2 (en) | Hardware enforced one-way cryptography | |
| US8953792B2 (en) | Combining key control information in common cryptographic architecture services | |
| US10284372B2 (en) | Method and system for secure management of computer applications | |
| CN111971674A (zh) | 加密货币钱包及加密货币账户管理 | |
| US20160261404A1 (en) | Methods and systems for obfuscating data and computations defined in a secure distributed transaction ledger | |
| CA2902291A1 (en) | Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor | |
| CN114391239B (zh) | 对抗共存攻击的系统和方法 | |
| WO2001061912A1 (en) | Packet processor | |
| CN110287654A (zh) | 使用硬件信任根的媒体客户端装置鉴权 | |
| CN102411694B (zh) | 加密装置及存储器系统 | |
| US10715332B2 (en) | Encryption for transactions in a memory fabric | |
| CN115516454B (zh) | 硬件安全模块和系统 | |
| CN108769010A (zh) | 节点受邀注册的方法和装置 | |
| CN113940027B (zh) | 用于加速证书提供的系统和方法 | |
| US11881940B2 (en) | Method and system for providing secure message | |
| US20170213054A1 (en) | Secure transactions in a memory fabric | |
| US11494520B2 (en) | Reconfigurable device bitstream key authentication | |
| WO2020000491A1 (zh) | 一种文件存储方法、装置及存储介质 | |
| CA3036118A1 (en) | Padding for creating a message digest | |
| JP2021090151A (ja) | ストレージシステムおよびストレージシステムのデータ保護方法 | |
| US11042610B1 (en) | Enabling integrity and authenticity of design data | |
| CN116134421A (zh) | 向多瓦片处理系统流式传输数据 |
