[go: up one dir, main page]

ES2830355T3 - Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware - Google Patents

Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware Download PDF

Info

Publication number
ES2830355T3
ES2830355T3 ES16890896T ES16890896T ES2830355T3 ES 2830355 T3 ES2830355 T3 ES 2830355T3 ES 16890896 T ES16890896 T ES 16890896T ES 16890896 T ES16890896 T ES 16890896T ES 2830355 T3 ES2830355 T3 ES 2830355T3
Authority
ES
Spain
Prior art keywords
hardware acceleration
data
address
processing
computer device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES16890896T
Other languages
English (en)
Inventor
Jian He
Xiaoke Ni
Yu Liu
Jinshui Liu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2830355T3 publication Critical patent/ES2830355T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

Un dispositivo de ordenador (40), donde el dispositivo de ordenador (40) comprende una unidad central de procesamiento, un CPU (401), una unidad de aceleración de hardware (403) y un adaptador de red (404), donde el adaptador de red (404) tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA, y donde el adaptador de red (404) se configura para recibir datos sobre los que se debe realizar el procesamiento de aceleración de hardware y una dirección de mapeo de datos que son enviados por otro dispositivo de ordenador, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento del CPU (401) y que se obtiene realizando el procesamiento de entrada/salida de mapeo de memoria, MMIO, sobre una dirección de memoria intermedia de datos del conjunto de aceleración de datos (403); el adaptador de red (404) se configura además para enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware (403), donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware (403) es el espacio de almacenamiento de datos que corresponde a la dirección de memoria intermedia de datos de la unidad de aceleración de hardware (403); la unidad de aceleración de hardware (403) se configura para realizar el procesamiento de aceleración de hardware sobre los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, para obtener los datos después del procesamiento de aceleración de hardware, y caracterizado porque: la unidad de aceleración de hardware (403) comprende recursos de aceleración de hardware que se dividen en recursos compartidos y privados, donde los recursos compartidos se asignan para su uso por parte de otros dispositivos de ordenador, excepto el dispositivo de ordenador (40), y donde los recursos privados se asignan para el uso por parte del dispositivo de ordenador (40), y la unidad de aceleración de hardware (403) se configura para ajustar dinámicamente la división de los recursos compartidos y los recursos privados en base a los requerimientos de demanda de los recursos de aceleración de hardware.

Description

DESCRIPCIÓN
Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware
CAMPO TÉCNICO
La presente invención se refiere al campo de las tecnologías de información y, en particular, a un procedimiento, dispositivo y sistema para el procesamiento de aceleración de hardware.
ANTECEDENTES
En un clúster de computación actual, una cantidad cada vez mayor de aplicaciones de un módulo de aceleración de hardware tiene un requisito cada vez mayor sobre el rendimiento del módulo de aceleración de hardware. Cuando un módulo de aceleración de hardware de señal no cumple con el requisito, es posible que sea necesario instalar más módulos de aceleración de hardware. Sin embargo, en un clúster grande, los módulos de aceleración de hardware de diferentes nodos tienen una carga diferente.
En un sistema informático existente, a medida que aumentan las cantidades de procesamiento de varios servicios, el uso de solo un CPU para procesar servicios se vuelve cada vez menos capaz de cumplir con un requisito de rendimiento de la aplicación. El CPU suele procesar el rendimiento del sistema optimizando una arquitectura de software, y esto es difícil y limitado en un intervalo de mejora. Actualmente, la mejora del rendimiento del hardware es una forma común de mejora del rendimiento del sistema en la industria. Algunos motores de aceleración de hardware prácticos generalmente se construyen en un servidor de centro de datos según una situación de servicio a fin de ayudar al núcleo del procesador a funcionar, y ejecutar estos motores no consume un recurso de CPU. Estos motores de aceleración de hardware incluyen, pero no se limitan a, los siguientes: un motor de distribución de paquetes inteligente, cifrado de hardware, compresión/descompresión de hardware, procesamiento de aceleración de gráficos y similares.
El documento US 2013318277 A1 describe un sistema que puede incluir una pluralidad de módulos XIMM conectados a un bus de memoria en un primer servidor, teniendo cada uno de los módulos XIMM respectivamente un módulo esclavo DMA conectado al bus de memoria y un árbitro para la programación de tareas, con los módulos XIMM proporcionando una base de datos en la memoria; y una unidad central de procesamiento (CPU) en el primer servidor, el cual se conecta a los módulos XIMM mediante el bus de memoria, con el CPU dispuesto para procesar y dirigir consultas estructuradas a la pluralidad de módulos XIMM.
El documento US 2015288624 A1 describe un procedimiento en un nodo de red que incluye un host y un acelerador, incluye mantener una cola de trabajo que almacena elementos de trabajo, una cola de notificaciones que almacena notificaciones de los elementos de trabajo e índices de control para agregar a y eliminar de la cola de trabajo y la cola de notificaciones, respectivamente, los elementos de trabajo y las notificaciones. La cola de notificaciones reside en el acelerador y al menos algunos de los índices de control residen en el host. Los mensajes se intercambian entre una red y el nodo de la red usando la cola de trabajo, la cola de notificaciones y los índices de control.
Para evitar desperdiciar recursos de aceleración de hardware, los recursos de aceleración de hardware o los motores de aceleración de hardware generalmente se distribuyen en diferentes nodos de servicio (por ejemplo, dispositivos de ordenador, como servidores). Sin embargo, cuando los recursos de aceleración de hardware se comparten o se convocan mutuamente entre múltiples nodos, la unidad central de procesamiento (CPU, central processor unit) y los recursos de memoria en los nodos generalmente deben consumirse para copiar datos, lo que provoca la ocupación y el consumo del CPU y los recursos de memoria.
SUMARIO
La presente invención se define en las reivindicaciones independientes. Las realizaciones específicas están definidas en las reivindicaciones dependientes. Las realizaciones que no caen dentro del alcance de las reivindicaciones son ejemplos para comprender la presente invención. En el dispositivo de ordenador, una dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de un CPU y que se obtiene al realizar el procesamiento Mm IO sobre una dirección de memoria intermedia de datos de una unidad de aceleración de hardware, y un adaptador de red tiene una función RDMA o DMA. Por lo tanto, según la función RDMA o DMA, cuando se envían datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de direccionamiento del CPU, el adaptador de red puede enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware. De esta manera, el adaptador de red no necesita enviar los datos recibidos en los cuales se debe realizar el procesamiento de aceleración de hardware a una memoria correspondiente al espacio de direccionamiento del CPU, y, a continuación, el CPU no necesita enviar los datos en los que el procesamiento de aceleración de hardware debe realizarse desde la memoria al espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware. El consumo de recursos se reduce cuando el CPU del dispositivo de ordenador recibe y reenvía los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, y, además, se ahorra espacio de almacenamiento de la memoria del dispositivo de ordenador.
La unidad de aceleración de hardware puede ser un dispositivo de hardware autónomo independiente del CPU o puede ser un módulo de función de aceleración de hardware integrado en el CPU o el adaptador de red.
El adaptador de red puede recibir los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos al mismo tiempo, o primero recibir la dirección de mapeo de datos y, a continuación, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, o recibir primero los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y, a continuación, la dirección de mapeo de datos.
Opcionalmente, la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware es una dirección de memoria intermedia de un registro de direcciones base BAR de la unidad de aceleración de hardware. Opcionalmente, la unidad de aceleración de hardware realiza el procesamiento MMIO en la dirección de la memoria intermedia de datos del conjunto de aceleración del hardware, para mapear la dirección de la memoria intermedia de datos al espacio de direccionamiento del CPU. Específicamente, un controlador de la unidad de aceleración de hardware puede mapear la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware al espacio de direccionamiento del CPU mediante el procesamiento MMIO.
Opcionalmente, un sistema de entrada/salida básico (BIOS, Basic Input/Output System) del dispositivo de ordenador obtiene una dirección base y una longitud del espacio de direcciones BAR del registro BAR de la unidad de aceleración de hardware en una etapa de inicio, reserva una dirección en el espacio de direccionamiento del CPU según la dirección base y la longitud del espacio de direcciones BAR y reserva un espacio de direcciones igual a la longitud del espacio de direcciones BAR. Una vez que el dispositivo de ordenador entra en la etapa de inicio de un sistema operativo (OS, Operating System), el controlador de la unidad de aceleración de hardware lee una dirección base y una longitud del espacio de dirección BAR del espacio de configuración de la unidad de aceleración de hardware, y, a continuación, convoca una función de mapeo MMIO proporcionada por el OS para mapear la dirección base y un espacio de direcciones BAR correspondiente al espacio de direccionamiento del CPU. De esta manera, al acceder a una dirección en el espacio de direccionamiento, el CPU puede acceder a una dirección de la memoria intermedia de la unidad de aceleración de hardware, es decir, acceder a una dirección de la memoria intermedia en el espacio de direcciones BAR de la unidad de aceleración de hardware. Debido a que el CPU accede a la unidad de aceleración de hardware accediendo al espacio de direccionamiento, el CPU puede usar una instrucción igual a la de leer y escribir en la memoria para acceder a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware. Esto puede reducir la dificultad del diseño del programa y la complejidad de la interfaz.
Opcionalmente, la unidad de aceleración de hardware puede presentarse como un dispositivo PCIe, es decir, una unidad de aceleración de hardware que sigue un estándar de protocolo PCIe. Cuando la unidad de aceleración de hardware no es un dispositivo PCIe (como un acelerador integrado en el CPU), la unidad de aceleración de hardware generalmente tiene una dirección de CPU a la que se puede acceder directamente. Por ejemplo, un dispositivo de aceleración de hardware conectado directamente al CPU mediante una interfaz de velocidad de datos doble (DDR, velocidad de datos doble) tiene un espacio de direcciones al que puede acceder el CPU. Esto puede implementar un efecto técnico similar al obtenido después de que el dispositivo PCIe realiza el mapeo MMIO.
Opcionalmente, si el dispositivo de aceleración de hardware no es compatible con el mapeo de MMIO, el controlador y la lógica de hardware del dispositivo de aceleración de hardware deben modificarse para mapear la dirección de la memoria intermedia de datos del dispositivo de aceleración de hardware en un modo MMIO.
Opcionalmente, cuando la dirección de memoria intermedia de datos de la unidad de aceleración de hardware se mapea al espacio de direccionamiento del CPU en el modo MMIO, algunas direcciones de la memoria intermedia de datos se pueden seleccionar y mapear al espacio de direccionamiento del CPU, y algunas pueden no estar mapeadas. La dirección de memoria intermedia de datos en la que se realiza el procesamiento MMIO y que se mapea al espacio de direccionamiento del CPU puede ser usada por un CPU de otro dispositivo de ordenador para solicitar un recurso de aceleración de hardware correspondiente, es decir, un recurso de aceleración de hardware compartido. Para una dirección de memoria intermedia de datos en la que no se realiza ningún mapeo MMIO, se permite que el procesamiento de aceleración de hardware sea realizado por un programa de aplicación del dispositivo de ordenador usando el CPU del dispositivo de ordenador, es decir, un recurso de aceleración de hardware privado.
Opcionalmente, la división del recurso de hardware compartido y el recurso de hardware privado se puede ajustar dinámicamente para cumplir con diferentes requisitos reales y mejorar la flexibilidad de uso de los recursos de aceleración de hardware.
Opcionalmente, un recurso de la unidad de aceleración de hardware puede dividirse en múltiples colas, y diferentes colas procesan por separado datos diferentes. Este modo de división puede realizarse mediante software o mediante hardware lógico. En el modo de división de software, el software de gestión que se ejecuta en la unidad de aceleración de hardware proporciona una interfaz de programación unificada, y para todas las partes solicitantes que requieren acceso a la unidad de aceleración de hardware, el CPU del dispositivo de ordenador debe convocar a la interfaz de programación del software de gestión para obtener una descripción de recurso correspondiente y controlar una cola correspondiente según la descripción del recurso correspondiente. La división de hardware consiste en dividir un recurso de la unidad de aceleración de hardware con respecto a la lógica del hardware. Por ejemplo, la unidad de aceleración de hardware se divide en varios conjuntos lógicos de hardware y cada conjunto lógico de hardware es independiente. Cuando se requiere acceso a un recurso de aceleración de hardware, la parte que solicita la aceleración de hardware solo necesita solicitar uno o más conjuntos lógicos de hardware. Esto puede evitar una colisión de asignación de un recurso de dispositivo de aceleración de hardware.
El dispositivo de ordenador puede enviar la dirección de mapeo de datos de la unidad de aceleración de hardware a un nodo de gestión, y el nodo de gestión es un dispositivo conectado al dispositivo de ordenador. El otro dispositivo de ordenador puede obtener la dirección de mapeo de datos de la unidad de aceleración de hardware en el dispositivo de ordenador desde el nodo de gestión.
Opcionalmente, después de completar el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, la unidad de aceleración de hardware determina si enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador, y al determinar enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador, envía directamente los datos obtenidos después del procesamiento de aceleración de hardware al adaptador de red. En consecuencia, el adaptador de red envía los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador.
Se puede implementar un modo de determinación según una dirección de destino (es decir, la dirección de destino se encuentra en el otro dispositivo de ordenador) o un identificador preestablecido (es decir, un identificador que identifica que los datos obtenidos después del procesamiento de aceleración provienen del otro dispositivo de ordenador) de los datos obtenidos después del procesamiento de aceleración.
Al enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador, el adaptador de red puede enviar los datos recibidos, obtenidos después de que la unidad de aceleración de hardware realice el procesamiento de aceleración, a otro dispositivo de ordenador en un modo RDMA.
Opcionalmente, el adaptador de red puede enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador mediante una operación de ENVÍO/ESCRITURA en un protocolo RDMA. Opcionalmente, el adaptador de red puede enviar los datos obtenidos después del procesamiento de aceleración de hardware según una dirección de destino del siguiente salto de los datos obtenidos después del procesamiento de aceleración de hardware. Al especificar un destino del siguiente salto, los datos obtenidos después del procesamiento de aceleración de hardware pueden devolverse directamente a un dispositivo de ordenador solicitante, o pueden enviarse a otro dispositivo de ordenador, implementando así un procesamiento de datos flexible.
Cuando se requiera que el conjunto de procesamiento de aceleración de hardware realice el procesamiento de aceleración de hardware, el otro dispositivo de ordenador necesita obtener un permiso para controlar la unidad de aceleración de hardware. Para evitar aún más el consumo de recursos del CPU, opcionalmente, la unidad de aceleración de hardware realiza el procesamiento MMIO sobre una dirección de registro de control de la unidad de aceleración de hardware, para mapear la dirección del registro de control al espacio de direccionamiento del CPU. De esta manera, el otro dispositivo de ordenador puede enviar directamente, a la unidad de aceleración de hardware, usando el adaptador de red, la dirección de registro de control obtenida de la unidad de aceleración de hardware en la que se realiza el procesamiento MMIO.
La dirección de registro de control de la unidad de aceleración de hardware puede ser una dirección de registro de control en la BAR de la unidad de aceleración de hardware.
Opcionalmente, el espacio de direcciones BAR de la unidad de aceleración de hardware puede incluir además una dirección de bloqueo. La dirección de bloqueo también se mapea al espacio de direccionamiento del CPU del dispositivo de ordenador cuando el espacio de direcciones BAR de la unidad de aceleración de hardware se mapea al espacio de direccionamiento del CPU del dispositivo de ordenador.
El dispositivo de aceleración de hardware incluye un conjunto de procesamiento de aceleración de hardware y un adaptador de red, es decir, el adaptador de red puede enviar directamente datos sobre los cuales se debe realizar el procesamiento de aceleración de hardware al conjunto de procesamiento de aceleración de hardware para su procesamiento. Se elimina la participación de un CPU y una memoria para implementar el uso compartido de recursos de aceleración de hardware, lo que ahorra aún más recursos de hardware. Además, no se necesita que ningún otro dispositivo además del CPU y la memoria se ejecute en un servidor para implementar el procesamiento de aceleración de hardware. Esto reduce aún más el consumo de otro dispositivo de hardware o recurso de hardware del servidor, provocado por la configuración del servidor, mejorando así además la utilización de recursos.
En el dispositivo de ordenador, el procesamiento de aceleración de hardware se solicita mediante el uso de una dirección de mapeo de datos, y la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de un CPU y que se obtiene al realizar el procesamiento MMIO sobre una dirección de memoria intermedia de una unidad de aceleración de hardware. Por lo tanto, otro dispositivo de ordenador puede enviar directamente datos sobre los cuales se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos correspondiente a la dirección de memoria intermedia de datos que es de la unidad de aceleración de hardware y que tiene una relación de mapeo con una dirección en el espacio de direccionamiento del CPU. De esta manera, no se necesita que un CPU y una memoria del otro dispositivo de ordenador participen en el envío de los datos sobre los que se debe realizar el procesamiento de aceleración de hardware. El consumo de recursos se reduce cuando el CPU del otro dispositivo de ordenador recibe y reenvía los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, y se ahorra espacio de almacenamiento de la memoria del otro dispositivo de ordenador.
Opcionalmente, el CPU puede enviar los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware al otro dispositivo de ordenador usando el adaptador de red en un modo RDMA.
Opcionalmente, el adaptador de red envía los datos recibidos, obtenidos después del procesamiento de aceleración de hardware, a la memoria del dispositivo de ordenador. Un programa de aplicación que se encuentra en el dispositivo de ordenador y que solicita el procesamiento de aceleración de hardware puede obtener desde la memoria, usando el CPU, los datos obtenidos después de que la unidad de aceleración de hardware realiza el procesamiento de aceleración de hardware.
Opcionalmente, el adaptador de red puede enviar los datos obtenidos después de que la unidad de aceleración de hardware realice el procesamiento de aceleración a la memoria en un modo DMA.
Opcionalmente, el CPU puede enviar una instrucción de procesamiento de aceleración de inicio a la unidad de aceleración de hardware, para indicar a la unidad de aceleración de hardware que realice el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware. Opcionalmente, el CPU se configura además para: obtener una dirección de registro de control de la unidad de aceleración de hardware e implementar el control sobre la unidad de aceleración de hardware según la dirección de registro de control obtenida de la unidad de aceleración de hardware.
Opcionalmente, el CPU puede controlar un recurso de aceleración de hardware de la unidad de aceleración de hardware de manera que obtenga una cola de la unidad de aceleración de hardware.
Un modo de división de recursos de hardware se implementa como se indica a continuación: un recurso de la unidad de aceleración de hardware 403 se divide en múltiples colas y diferentes colas que procesan por separado datos diferentes. El recurso de la unidad de aceleración de hardware se divide en varias colas y diferentes colas procesan datos diferentes por separado. Este modo de división puede realizarse mediante software o mediante hardware lógico. En el modo de división de software, el software de gestión que se ejecuta en la unidad de aceleración de hardware proporciona una interfaz de programación unificada, y para todas las partes solicitantes que requieren acceso a la unidad de aceleración de hardware, el CPU del dispositivo de ordenador debe convocar a la interfaz de programación del software de gestión para obtener una descripción de recurso correspondiente y controlar una cola correspondiente según la descripción del recurso correspondiente. La división de hardware consiste en dividir un recurso de la unidad de aceleración de hardware con respecto a la lógica del hardware. Por ejemplo, la unidad de aceleración de hardware se divide en varios conjuntos lógicos de hardware y cada conjunto lógico de hardware es independiente. Cuando es necesario acceder a un recurso de aceleración de hardware, solo es necesario solicitar uno o más conjuntos lógicos de hardware. Esto puede evitar una colisión de asignación de un recurso de dispositivo de aceleración de hardware. Opcionalmente, el CPU puede obtener además una dirección de bloqueo de la unidad de aceleración de hardware, y la dirección de bloqueo es una dirección de bloqueo en una BAR de la unidad de aceleración de hardware. Opcionalmente, la dirección de bloqueo es una dirección obtenida al realizar el procesamiento MMIO en la dirección de bloqueo en la BAR de la unidad de aceleración de hardware y, a continuación, mapear la dirección de bloqueo al espacio de direccionamiento de un CPU de un dispositivo de ordenador en el que se encuentra la unidad de aceleración de hardware.
Opcionalmente, el CPU puede usar un modo de bloqueo, o puede usar un modo de algoritmo sin bloqueo, como comparar e intercambiar (CAS, Compare and Swap). Cuando se usa el modo de bloqueo, es decir, una operación de espera ocupada, si un dispositivo de ordenador (como un CPU 301) que solicita un recurso de aceleración de hardware no puede obtener un recurso de aceleración de hardware, el dispositivo de ordenador sigue intentando obtener un recurso de aceleración de hardware hasta que se obtenga un recurso disponible. El CAS también es un algoritmo sin bloqueo integrado en el RDMA. El CAS tiene tres operandos: un valor de memoria V, un antiguo valor esperado A y un nuevo valor B que debe cambiarse. El valor de memoria V se cambia a B solo cuando el valor esperado A es igual al valor de memoria V; de lo contrario, no se realiza ninguna operación. Cuando diferentes CPU o subprocedimientos de CPU de varios dispositivos de ordenador intentan usar CAS para actualizar una misma variable al mismo tiempo, solo un CPU o subprocedimiento puede actualizar un valor de variable mientras que las otras CPU o subprocedimientos fallan. Un hilo fallido recibe una notificación del fallo de la contención en lugar de suspenderse y puede volver a intentarlo. Al usar una operación de este tipo, solo una parte en disputa (como un CPU o un hilo) puede obtener un recurso cuando existe una disputa, a fin de resolver un problema de contención de recursos. Para la apropiación de un recurso de la unidad de aceleración de hardware, el CPU puede usar el modo de bloqueo o el modo de CAS para evitar una colisión de asignación de un recurso de un dispositivo de aceleración de hardware.
Opcionalmente, el CPU obtiene la dirección de mapeo de datos de la unidad de aceleración de hardware según una solicitud de aceleración de hardware de un programa de aplicación del dispositivo de ordenador, o el CPU obtiene la dirección de mapeo de datos de la unidad de aceleración de hardware según una instrucción de un conjunto de adaptación del primer dispositivo de ordenador, donde la instrucción del conjunto de adaptación es una instrucción obtenida después de que el conjunto de adaptación convierte una solicitud de aceleración de hardware de un programa de aplicación del dispositivo de ordenador.
De esta manera, en una implementación específica, el programa de aplicación del dispositivo de ordenador no necesita modificar una interfaz, y se obtiene información, como la dirección de mapeo de datos de la unidad de aceleración de hardware y la dirección de una calculadora de control mediante, usando el conjunto de adaptación. El conjunto de adaptación puede presentarse como un dispositivo de aceleración de hardware o una unidad de aceleración de hardware para el programa de aplicación, de modo que el programa de aplicación del dispositivo de ordenador no percibe que el procesamiento de aceleración del hardware está implementado en otro dispositivo de ordenador.
En el sistema para implementar el procesamiento de aceleración de hardware, una dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de un CPU y que se obtiene al realizar el procesamiento MMIO sobre una dirección de memoria intermedia de datos de una unidad de aceleración de hardware, y un adaptador de red tiene una función RDMA o DMA. Por lo tanto, según la función RDMA o DMA, cuando se envían datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de direccionamiento del CPU, el adaptador de red puede enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware. De esta manera, el adaptador de red no necesita enviar los datos recibidos en los cuales se debe realizar el procesamiento de aceleración de hardware a una memoria correspondiente al espacio de direccionamiento del segundo CPU, y, a continuación, el segundo CPU no necesita enviar los datos en los que el procesamiento de aceleración de hardware debe realizarse desde la memoria al espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware. El consumo de recursos se reduce cuando la segunda CPU del segundo dispositivo de ordenador recibe y reenvía los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, y se ahorra espacio de almacenamiento de la memoria del segundo dispositivo de ordenador.
Opcionalmente, el sistema para el procesamiento de aceleración de hardware puede incluir además un nodo de gestión, y el nodo de gestión se configura para obtener direcciones de mapeo de datos de una unidad de aceleración de hardware del primer dispositivo de ordenador y/o el segundo dispositivo de ordenador. Después de que el nodo de gestión almacena una dirección de mapeo de datos de una unidad de aceleración de hardware de cada dispositivo de ordenador, el nodo de gestión puede ser usado por otro dispositivo de ordenador para obtener información relacionada, a fin de compartir un recurso de aceleración de hardware.
Opcionalmente, el nodo de gestión puede ser un dispositivo independiente, como un servidor, o puede ser un chip con función de almacenamiento, dispuesto en el primer dispositivo de ordenador o en el segundo dispositivo de ordenador. Opcionalmente, el conjunto de gestión puede obtener y almacenar activamente la dirección de mapeo de datos de la unidad de aceleración de hardware de cada dispositivo de ordenador, o puede recibir una dirección de mapeo de datos de una unidad de aceleración de hardware enviada por un dispositivo de ordenador.
Opcionalmente, el nodo de gestión puede efectuar adicionalmente una autenticación según una norma prestablecida, y una dirección de mapeo de datos correspondientes de una unidad de aceleración de hardware se puede obtener solo para una aplicación autenticada. Además, un recurso de aceleración de hardware puede asignarse según un estado ocupado/no disponible del recurso de aceleración de hardware de cada dispositivo de ordenador, y un recurso de aceleración de hardware relacionado puede liberarse según una norma prestablecida, a fin de implementar una asignación y un uso adecuados del recurso de aceleración de hardware.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Para describir las soluciones técnicas en las realizaciones de la presente invención o en la técnica anterior de manera más clara, lo siguiente describe brevemente los dibujos adjuntos requeridos para describir las realizaciones o la técnica anterior. Aparentemente, los dibujos adjuntos en la siguiente descripción muestran solo algunas realizaciones de la presente invención, y un experto en la técnica puede obtener otros dibujos de estos dibujos adjuntos sin esfuerzos creativos.
La FIG. 1 es un diagrama estructural esquemático de un sistema para implementar la aceleración de software en la técnica anterior;
la FIG. 2(a) es un diagrama estructural esquemático de un escenario de aplicación de un procedimiento para el procesamiento de aceleración de hardware según una realización de la presente invención;
la FIG. 2(b) es un diagrama estructural esquemático de otro escenario de aplicación de un procedimiento para el procesamiento de aceleración de hardware según una realización de la presente invención;
la FIG. 3 es un diagrama de flujo esquemático de un procedimiento para implementar un procesamiento de aceleración de hardware según una realización de la presente invención;
la FIG. 4 es un diagrama estructural esquemático de un dispositivo de aceleración de hardware según una realización de la presente invención;
la FIG. 5(a) es un diagrama estructural esquemático de un primer sistema para implementar el procesamiento de aceleración de hardware según una realización de la presente invención;
la FIG. 5(b) es un diagrama estructural esquemático de un segundo sistema para implementar el procesamiento de aceleración de hardware según una realización de la presente invención;
la FIG. 5(c) es un diagrama estructural esquemático de un tercer sistema para implementar un procesamiento de aceleración de hardware según una realización de la presente invención; y
la FIG. 5(d) es un diagrama estructural esquemático de un cuarto sistema para implementar un procesamiento de aceleración de hardware según una realización de la presente invención;
DESCRIPCIÓN DE LAS REALIZACIONES
Lo siguiente describe claramente y completamente las soluciones técnicas en las realizaciones de la presente invención con referencia a los dibujos adjuntos en las realizaciones de la presente invención. Aparentemente, las realizaciones descritas son una parte en lugar de todas las realizaciones de la presente invención. Todas las demás realizaciones obtenidas por un experto en la materia basándose en las realizaciones de la presente invención sin esfuerzos creativos estarán dentro del alcance de protección de la presente invención.
Con referencia a la FIG. 1, la FIG. 1 es un diagrama estructural esquemático de un sistema para implementar la aceleración de hardware en la técnica anterior. Como se muestra en la FIG. 1, un dispositivo de ordenador 10 incluye una unidad central de procesamiento (CPU, Central Processing Unit) 101, una memoria 102, una unidad de aceleración de hardware 103 y un adaptador de red 104; un dispositivo de ordenador 20 incluye un CPU 201, una memoria 202, una unidad de aceleración de hardware 203 y un adaptador de red 204. El adaptador de red 104 está conectado al adaptador de red 204 a través de una red, a fin de implementar la comunicación entre el dispositivo de ordenador 10 y el dispositivo de ordenador 20.
Los conjuntos de aceleración de hardware de la FIG. 1, como la unidad de aceleración de hardware 103 y la unidad de aceleración de hardware 203, tienen una función de aceleración de hardware. La aceleración de hardware es usar un módulo de hardware para reemplazar el software que se ejecuta en un CPU para que funcione, a fin de aprovechar al máximo una característica inherente de velocidad rápida del hardware. Por lo general, la aceleración de hardware tiene una mayor eficiencia que un algoritmo de software, puede compartir la carga de algunos servicios de CPU y puede implementar el procesamiento de aceleración en los servicios de CPU cuya carga se comparte. Las funciones de aceleración de hardware comunes incluyen, entre otras: la distribución inteligente de paquetes, la compresión/descompresión de hardware, el cifrado de hardware, el procesamiento de aceleración de gráficos y similares. Teniendo en cuenta los costos, por lo general, no todas las funciones de aceleración de hardware están configuradas en un dispositivo de ordenador. Por ejemplo, en el dispositivo de ordenador 101, sólo se configura la unidad de aceleración de hardware 103 que tiene una función de cifrado de hardware, y en el dispositivo de ordenador 201, sólo se configura la unidad de aceleración de hardware 203 con procesamiento de aceleración de gráficos.
Cuando la unidad de aceleración de hardware 203 necesita realizar un procesamiento de aceleración en un servicio procesado por un programa de aplicación del dispositivo de ordenador 10, el programa de aplicación envía datos sobre los cuales se debe realizar el procesamiento de aceleración de hardware a la unidad de aceleración de hardware 203 usando el CPU 101. El CPU 101 envía en primer lugar los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al adaptador 204 de red usando el adaptador 104 de red. El adaptador de red 204 envía una solicitud de aceleración recibida y los datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de direccionamiento del CPU 201, es decir, a la memoria 202. Después de recibir una solicitud de inicio de procesamiento de aceleración de hardware enviada por el CPU 101, el CPU 201 reenvía los datos sobre los cuales se debe realizar el procesamiento de aceleración de hardware a la unidad de aceleración de hardware 203. Después de realizar el procesamiento de aceleración en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, la unidad de aceleración de hardware 203 devuelve los datos obtenidos después del procesamiento de aceleración al CPU 201, es decir, a la memoria 202 correspondiente al espacio de direccionamiento del CPU 201. El CPU 201 envía, usando el adaptador de red 204, los datos obtenidos después del procesamiento de aceleración al adaptador de red 104 según una dirección de destino (es decir, un espacio de almacenamiento del dispositivo 101 de ordenador) de los datos obtenidos después del procesamiento de aceleración. El CPU 101 devuelve, al programa de aplicación solicitante, los datos que recibe el adaptador de red 104 y que se obtienen después de que la unidad de aceleración de hardware 203 realiza el procesamiento de aceleración. El adaptador de red 104 envía, en un modo de acceso directo remoto a memoria (RDMA, Remote Direct Memory Access), la solicitud de aceleración y los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al adaptador de red 204. Alternativamente, el adaptador de red 204 puede enviar los datos obtenidos después del procesamiento de aceleración al adaptador de red 104 en el modo RDmA.
En el procedimiento de procesamiento de aceleración anterior, cuando el programa de aplicación del dispositivo de ordenador 10 necesita usar un recurso de aceleración de hardware del dispositivo de ordenador 20 para realizar el procesamiento de aceleración de hardware, el CPU 201 del dispositivo de ordenador 20 necesita almacenar los datos recibidos por el adaptador de red 204 en la memoria correspondiente al espacio de direccionamiento, para enviarlos a la unidad de aceleración de hardware 203; y necesita almacenar los datos obtenidos después de que el conjunto 203 de aceleración de hardware realice el procesamiento de aceleración en la memoria correspondiente al espacio de direccionamiento, para enviarlos al adaptador 204 de red. En el procedimiento anterior de copiar y enviar datos, el CPU 201 necesita almacenar, copiar y transferir una solicitud y datos relacionados con la aceleración del hardware, lo que provoca la ocupación y el desperdicio de recursos del CPU 210 y la memoria 202.
Las realizaciones de la presente invención proporcionan un procedimiento y un dispositivo para implementar la aceleración de hardware, a fin de resolver un problema en la técnica anterior de que los recursos de CPU y memoria se ocupan y consumen cuando diferentes dispositivos de ordenador comparten un recurso de aceleración de hardware. Un dispositivo de aceleración de hardware suele tener dos modos de implementación: uno es un dispositivo de hardware autónomo independiente de un CPU y el otro es un módulo de función de aceleración de hardware integrado en un CPU o un adaptador de red. Cuando el dispositivo de aceleración de hardware es independiente del CPU, el dispositivo de aceleración de hardware suele ser un dispositivo PCIe o un dispositivo de interconexión de componentes periféricos (PCI, interconexión de componentes periféricos). Por ejemplo, cuando el dispositivo de aceleración de hardware realiza una interacción de datos usando un bus PCIe, el dispositivo de aceleración de hardware se presenta como un dispositivo PCIe; o cuando el dispositivo de aceleración de hardware realiza una interacción de datos usando un bus PCI, el dispositivo de aceleración de hardware se presenta como un dispositivo PCI. Esta realización de la presente invención usa, para la descripción, un ejemplo en el que el dispositivo de aceleración de hardware es el dispositivo PCIe. Para un dispositivo de aceleración de hardware en otro modo de implementación, como el dispositivo PCI o el módulo de función de aceleración de hardware integrado en el CPU o el adaptador de red, se puede hacer referencia al siguiente modo de implementación en la que el dispositivo de aceleración de hardware se presenta en una forma de dispositivo PCIe, y los detalles no se describen de manera repetida.
Por lo general, un programa de aplicación de un dispositivo de ordenador accede y usa un dispositivo de aceleración de hardware. Cuando el programa de aplicación del dispositivo de ordenador requiere que el dispositivo de aceleración de hardware realice el procesamiento de aceleración en un procedimiento de procesamiento de servicio, se ejecuta una instrucción relacionada con la aceleración de hardware usando el CPU. El CPU envía datos sobre los que se debe realizar el procesamiento de aceleración de hardware al dispositivo de aceleración de hardware mediante el uso de una interfaz proporcionada por el dispositivo de aceleración de hardware y recibe datos que se obtienen después del procesamiento de aceleración y que son devueltos por el dispositivo de procesamiento de aceleración de hardware.
El programa de aplicación procesa un servicio usando el CPU. En la aplicación práctica, varios programas de aplicación convocan a diferentes dispositivos de aceleración de hardware ejecutando diferentes tareas para implementar el procesamiento de aceleración de hardware. Por lo tanto, para una descripción clara de las soluciones técnicas proporcionadas en las realizaciones de la presente invención, en las realizaciones de la presente invención, se describe un procedimiento en el que los diversos programas de aplicación implementan el procesamiento de aceleración de hardware usando un c Pu mediante un ejemplo en el que el CPU inicia una solicitud de aceleración de hardware y recibe los datos obtenidos después del procesamiento de aceleración de hardware.
La FIG. 2(a) es un diagrama estructural esquemático de un escenario de aplicación de un procedimiento para el procesamiento de aceleración de hardware según una realización de la presente invención. Como se muestra en la FIG. 2(a), un dispositivo de ordenador 30 incluye un CPU 301, una memoria 302, una unidad de aceleración de hardware 303 y un adaptador de red 304; y un dispositivo de ordenador 40 incluye un CPU 401, una memoria 402, una unidad de aceleración de hardware 403 y un adaptador de red 404. El CPU 301, la memoria 302, la unidad de aceleración de hardware 303 y un adaptador de red 304 se conectan usando un bus interno del dispositivo de ordenador 30; el CPU 401, la memoria 402, la unidad de aceleración de hardware 403 y el adaptador de red 404 están conectados usando un bus interno del dispositivo de ordenador 40. El adaptador de red 304 del dispositivo de ordenador 30 y el adaptador de red 404 del dispositivo de ordenador 40 están conectados a través de una red, para implementar la conexión y la comunicación entre el dispositivo de ordenador 30 y el dispositivo de ordenador 40.
Cabe señalar que, en la FIG. 2(a), la unidad de aceleración de hardware 303 y la unidad de aceleración de hardware 403 pueden implementarse usando el dispositivo de aceleración de hardware anterior, o pueden implementarse usando otro dispositivo o módulo con una función de aceleración de hardware. Además, la FIG.2(a) es solo un ejemplo para ilustrar la estructura y la composición de un dispositivo de ordenador. En una implementación específica, el dispositivo de ordenador 30 y el dispositivo de ordenador 40 pueden incluir además otro componente, tal como un disco duro o una tarjeta gráfica. Esta realización de la presente invención no constituye ninguna limitación sobre otra composición y estructura incluida además por el dispositivo de ordenador 30 y el dispositivo de ordenador 40 en una implementación específica.
En la FIG.2(a), la unidad de aceleración de hardware 303 y la unidad de aceleración de hardware 403 tienen diferentes funciones de aceleración de hardware. Por ejemplo, la unidad de aceleración de hardware 303 puede ser una unidad de aceleración de hardware con una función de comprimir/descomprimir un hardware, y la unidad de aceleración de hardware 403 puede ser una unidad de aceleración de hardware con una función de procesamiento de aceleración de gráficos. Cuando el CPU 301 del dispositivo de ordenador 30 necesita usar la unidad de aceleración de hardware 403 para realizar el procesamiento de aceleración de gráficos, el CPU 301 necesita convocar a la unidad de aceleración de hardware 403 para realizar el procesamiento de aceleración de hardware. En una implementación específica, la unidad de aceleración de hardware 303 y la unidad de aceleración de hardware 403 pueden tener la misma función de aceleración de hardware. Sin embargo, cuando el CPU 301 necesita convocar a la unidad de aceleración de hardware 403 del dispositivo de ordenador 40 para realizar el procesamiento de aceleración de hardware, se puede usar un modo de implementación proporcionado en esta realización de la presente invención para su implementación. Esta realización de la presente invención no constituye ninguna limitación en el modo de implementación de una función específica de una unidad de aceleración de hardware.
En la FIG.2(a), el adaptador de red 404 es un adaptador de red que tiene una función RDMA, o puede ser un adaptador de red que tiene una función de acceso directo a memoria (DMA, Direct Memory Access); y el adaptador de red 304 también puede ser un adaptador de red que tenga la función RDMA o DMA. Cuando el dispositivo de ordenador 30 debe enviar datos al dispositivo de ordenador 40 en un modo RDMA, el CPU 301 envía la información de dirección de los datos a enviar al adaptador de red 304, y el adaptador de red 304 lee los datos correspondientes de espacio de almacenamiento de datos correspondiente a la información de la dirección según la información de la dirección de los datos a enviar, y envía los datos correspondientes al adaptador de red 404. Cuando el adaptador de red 404 del dispositivo de ordenador 40 recibe datos en el modo RDMA, el adaptador de red 404 recibe los datos que se van a almacenar y la información de dirección de los datos que se van a almacenar. El adaptador de red 404 almacena directamente, según la información de dirección de los datos a almacenar, los datos recibidos a almacenar en el espacio de almacenamiento de datos que es del dispositivo de ordenador 40 y que corresponde a la información de dirección de datos a almacenar. Normalmente, la información de dirección de los datos a almacenar, recibidos por el adaptador de red 404, es información de dirección en el espacio de direccionamiento del CPU 401. Cabe señalar que, el adaptador de red 404 puede recibir los datos a almacenar y la información de dirección de los datos a almacenar al mismo tiempo, o recibir primero la información de dirección de los datos a almacenar y, a continuación, los datos a almacenar, o primero recibir los datos a almacenar y, a continuación, la información de dirección de los datos a almacenar.
Con referencia a una arquitectura de hardware mostrada en la FIG. 2(a), una realización de la presente invención proporciona un procedimiento para implementar el procesamiento de aceleración de hardware. Cuando un programa de aplicación del dispositivo de ordenador 30 necesita usar la unidad de aceleración de hardware 403 del dispositivo de ordenador 40 para implementar una función de aceleración de hardware, como se muestra en la FIG. 3, el procedimiento para implementar el procesamiento de aceleración de hardware según esta realización de la presente invención incluye las siguientes etapas.
Etapa 300: el CPU 301 del dispositivo de ordenador 30 obtiene una dirección de mapeo de datos de la unidad de aceleración de hardware 403 del dispositivo de ordenador 40, donde la dirección de mapeo de datos es una dirección obtenida después de realizar el procesamiento de entrada y salida de mapeo de memoria (MMIO, del inglés Memory Mapping I/O) sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware 403. El espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403 es el espacio de almacenamiento de datos en el que la unidad de aceleración de hardware 403 almacena datos sobre los que se debe realizar el procesamiento de aceleración de hardware. Realizar el procesamiento MMIO en la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403 es mapear la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403 al espacio de direccionamiento del CPU 401.
Etapa 302: el CPU 301 envía, según la dirección de mapeo de datos obtenida de la unidad de aceleración de hardware 403, datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware 403 al adaptador de red 404.
Opcionalmente, en la etapa 302, el CPU 301 puede enviar los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware 403 al adaptador de red 404 usando el adaptador de red 304 en el modo RDMA.
Etapa 304: el adaptador de red 404 envía, según la dirección de mapeo de datos recibidos de la unidad de aceleración de hardware 403, los datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware a la unidad de aceleración de hardware 403.
Debido a que el adaptador de red 404 es un adaptador de red que tiene la función RDMA, según un protocolo RDMA, el adaptador de red 404 envía los datos recibidos al espacio de direccionamiento del CPU 401 después de recibir los datos. En esta etapa, una dirección que es de los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y que es recibida por el adaptador de red 404 es la dirección de mapeo de datos de la unidad de aceleración de hardware 403. La dirección de mapeo de datos es una dirección obtenida mapeando la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403 al espacio de direccionamiento del CPU 401. Por lo tanto, cuando se envían los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de direccionamiento del CPU 401 según el protocolo RDMA, el adaptador de red 404 envía directamente los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos que es de la unidad de aceleración de hardware 403 y que tiene una relación de mapeo con una dirección en el espacio de direccionamiento del CPU 401. De esta manera, el adaptador de red 404 no necesita enviar los datos sobre los que se debe realizar el procesamiento de aceleración de hardware a la memoria 402 correspondiente al espacio de direccionamiento del CPU 401 y, a continuación, el CPU 401 no necesita enviar los datos en los que el procesamiento de aceleración de hardware debe realizarse desde la memoria 402 al espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403. El consumo de recursos se reduce cuando el CPU 401 recibe y reenvía los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, y se ahorra espacio de almacenamiento de la memoria 402.
Etapa 306: la unidad de aceleración de hardware 403 realiza el procesamiento de aceleración de los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, y envía los datos obtenidos después del procesamiento de aceleración al adaptador de red 404.
Después de completar el procesamiento de aceleración de los datos, la unidad de aceleración de hardware 403 se activa para enviar los datos obtenidos después del procesamiento de aceleración al CPU 401, es decir, a la memoria 402 correspondiente al espacio de direccionamiento del CPU 401, y el CPU 401 envía los datos obtenidos después del procesamiento de aceleración desde la memoria 402 al adaptador de red 404. En esta realización de la presente invención, al devolver los datos obtenidos después del procesamiento de aceleración, la unidad de aceleración de hardware 403 puede determinar si enviar los datos obtenidos después del procesamiento de aceleración al dispositivo de ordenador 30. Un modo de determinación puede implementarse según una dirección de destino (es decir, la dirección de destino está ubicada en el dispositivo de ordenador 30) o un identificador preestablecido (es decir, un identificador que identifica que los datos obtenidos después del procesamiento de aceleración provienen del dispositivo de ordenador 30) de los datos obtenidos después del procesamiento de aceleración. Cuando se determina enviar los datos al dispositivo de ordenador 30, los datos obtenidos después del procesamiento de aceleración se envían directamente al adaptador de red 404. Debido a que los datos obtenidos después del procesamiento de aceleración son enviados directamente por la unidad de aceleración de hardware 403 al adaptador de red 404 en lugar de la memoria 402 correspondiente al espacio de direccionamiento del CPU 401, el consumo de recursos del CPU 401 y la memoria 402 se reduce adicionalmente.
Etapa 308: el adaptador de red 404 envía los datos recibidos, obtenidos después de que la unidad de aceleración de hardware 403 realiza el procesamiento de aceleración, al dispositivo de ordenador 30.
Específicamente, el adaptador de red 404 puede enviar los datos recibidos, obtenidos después de que la unidad de aceleración de hardware 403 realiza el procesamiento de aceleración, al adaptador de red 304 en el modo RDMA, el adaptador de red 304 envía los datos recibidos, obtenidos después del procesamiento de aceleración, a la memoria 302 y el programa de aplicación que solicita el procesamiento de aceleración de hardware puede obtener de la memoria 302 usando el CPU, los datos obtenidos después de que la unidad de aceleración de hardware 404 realice el procesamiento de aceleración. Alternativamente, el adaptador de red 304 puede enviar los datos obtenidos después de que la unidad de aceleración de hardware 404 realiza el procesamiento de aceleración a la memoria 302 en un modo de acceso directo a memoria (DMA, Direct Memory Access).
La dirección de mapeo de datos es una dirección obtenida después de que se realiza el procesamiento MMIO en la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403. La dirección de la memoria intermedia de datos de la unidad de aceleración de hardware 403 es normalmente una dirección de memoria intermedia (memoria intermedia) en el espacio de direccionamiento de un registro de direcciones base (BAR, Base Address Register) de la unidad de aceleración de hardware 403.
En esta realización de la presente invención, la realización del procesamiento MMIO en la dirección de memoria intermedia de datos de la unidad de aceleración de hardware 403 y el mapeo de la dirección de la memoria intermedia de datos al espacio de direccionamiento del CPU 401 puede ser como se indica a continuación:
después de que el dispositivo de ordenador 40 esté encendido y se haya iniciado, un sistema de entrada/salida básico (BIOS, Basic Input/Output System) del dispositivo de ordenador 40 obtiene una dirección base y una longitud del espacio de direcciones BAR del registro bAr de la unidad de aceleración de hardware 403 en una etapa de inicio, reserva una dirección en el espacio de direccionamiento del CPU según la dirección base y la longitud del espacio de direcciones BAR y reserva un espacio de direcciones con una longitud igual a la longitud del espacio de direcciones BAR. Cuando el dispositivo de ordenador 40 carga un controlador de la unidad de aceleración de hardware 403 después de entrar en la etapa de arranque de un sistema operativo (OS, Operating System), el controlador de la unidad de aceleración de hardware 403 lee una dirección base y una longitud del espacio de direcciones BAR del espacio de configuración de la unidad de aceleración de hardware 403, y, a continuación, convoca una función de mapeo de MMIO proporcionada por el OS para mapear la dirección base y un espacio de direcciones BAR correspondiente al espacio de direccionamiento del CPU 301. De esta manera, al acceder a una dirección en el espacio de direccionamiento, el CPU 401 puede acceder a una dirección de la memoria intermedia de la unidad de aceleración de hardware 403, es decir, acceder a una dirección de la memoria intermedia en el espacio de direcciones BAR.
El MMIO se especifica en un estándar PCIe, es decir, un espacio de direcciones de un dispositivo PCIe se mapea al espacio de direccionamiento de un CPU. Al acceder al espacio de direcciones del dispositivo PCIe, el CPU accede al dispositivo PCIe mediante el acceso al espacio de direccionamiento. Debido a que el CPU accede al dispositivo PCIe mediante el acceso al espacio de direccionamiento, el CPU puede usar una instrucción similar a la de leer y escribir una memoria para acceder a una dirección de memoria intermedia de datos (por ejemplo, una dirección de memoria intermedia) del dispositivo PCIe. Esto puede reducir la dificultad del diseño del programa y la complejidad de la interfaz.
Cuando la unidad de aceleración de hardware no es un dispositivo PCIe (como un acelerador integrado en el CPU), la unidad de aceleración de hardware normalmente tiene una dirección a la que puede acceder directamente el CPU. Por ejemplo, un dispositivo de aceleración de hardware conectado directamente al CPU mediante una interfaz DDR tiene un espacio de direcciones al que puede acceder el CPU. Esto puede implementar un efecto técnico similar al obtenido después de que el dispositivo PCIe realiza el mapeo MMIO.
Si el dispositivo de aceleración de hardware 403 no admite el mapeo de MMIO, el controlador y la lógica de hardware del dispositivo de aceleración de hardware 403 deben modificarse para mapear la dirección de memoria intermedia del dispositivo de aceleración de hardware 403 externamente en un modo MMIO. La modificación del controlador y la lógica de hardware de la unidad de aceleración de hardware 403 para mapear la dirección de la memoria intermedia del dispositivo de aceleración de hardware 403 externamente en el modo MMIO puede implementarse según un modo de implementación en la técnica anterior y los detalles no se describen de manera repetida en esta realización de la presente invención.
En esta realización de la presente invención, el espacio de direcciones BAR de la unidad de aceleración de hardware 403 puede incluir además una dirección de registro de control. La dirección del registro de control también se mapea al espacio de direccionamiento del CPU 301 cuando el espacio de direcciones BAR de la unidad de aceleración de hardware 403 se mapea al espacio de direccionamiento del CPU 301. De esta manera, el dispositivo de ordenador 30 puede obtener la dirección del registro de control de la unidad de aceleración de hardware 403, implementando así el control sobre la unidad de aceleración de hardware 403.
Opcionalmente, el espacio de direcciones BAR de la unidad de aceleración de hardware 403 puede incluir además una dirección de bloqueo. La dirección de bloqueo también se mapea al espacio de direccionamiento del CPU 301 cuando el espacio de direcciones BAR de la unidad de aceleración de hardware 403 se mapea al espacio de direccionamiento del CPU 301. De esta manera, el dispositivo de ordenador 30 puede implementar un control exclusivo relacionado sobre la unidad de aceleración de hardware 403 según la dirección de bloqueo de la unidad de aceleración de hardware 403.
Como un modo de implementación opcional, antes de la etapa 300, la solución técnica proporcionada en esta realización de la presente invención incluye, además:
obtener, mediante el CPU 301, la dirección del registro de control del espacio de direcciones BAR de la unidad de aceleración de hardware 403, donde la dirección del registro de control es una dirección obtenida después del mapeo MMIO; y
acceder, mediante el CPU 301, a la unidad de aceleración de hardware 403 según la dirección de registro de control obtenida del espacio de direcciones BAR de la unidad de aceleración de hardware 403, para obtener control sobre la unidad de aceleración de hardware.
Después de obtener el control sobre la unidad de aceleración de hardware 403, el CPU 301 puede implementar el control exclusivo sobre la unidad de aceleración de hardware 403, eliminando así la ocupación de la unidad de aceleración de hardware 403 por otra parte que solicita la aceleración de hardware. Por lo tanto, se puede asegurar un procesamiento suave de aceleración de hardware, y se puede evitar el consumo de recursos y la reducción de la eficiencia causada por la preferencia de la unidad de aceleración de hardware 403 por parte de múltiples partes que solicitan la aceleración de hardware.
En esta realización de la presente invención, una manera en la que el CPU 301 implementa el control exclusivo sobre la unidad de aceleración de hardware 403, eliminando así la ocupación de la unidad de aceleración de hardware 403 por otra parte que solicita la aceleración de hardware puede incluir un modo de división de recursos de hardware o un modo de operación de bloqueo.
El modo de división de recursos de hardware se implementa como se indica a continuación: un recurso de la unidad de aceleración de hardware 403 se divide en múltiples colas y diferentes colas que procesan por separado datos diferentes. Es decir, el recurso de la unidad de aceleración de hardware 403 se divide en múltiples colas, cada cola procesa datos diferentes y los recursos de las colas son mutuamente independientes sin interferencia. Este modo de división puede realizarse mediante software o mediante hardware lógico. En un modo de división de software típico, el software de gestión que se ejecuta en la unidad de aceleración de hardware 403 proporciona una interfaz de programación unificada, y para todas las partes solicitantes que requieren acceso a la unidad de aceleración de hardware 403, el CPU 401 debe convocar a la interfaz de programación del software de gestión para obtener una descripción de recurso correspondiente y controlar una cola correspondiente según la descripción del recurso correspondiente. La división de hardware consiste en dividir un recurso de la unidad de aceleración de hardware 403 con respecto a la lógica del hardware. Por ejemplo, la unidad de aceleración de hardware se divide en varios conjuntos lógicos de hardware y cada conjunto lógico de hardware es independiente. Cuando se requiere acceso a un recurso de aceleración de hardware, la parte que solicita la aceleración de hardware solo necesita solicitar uno o más conjuntos lógicos de hardware. De esta manera, el CPU 301 puede solicitar diferentes direcciones de la cola o diferentes conjuntos lógicos de hardware para evitar una colisión de asignaciones de un recurso del dispositivo de aceleración de hardware.
Modo 2: en el modo de operación de bloqueo, se puede usar un modo de bloqueo, o se puede usar un modo de algoritmo sin bloqueo como el de comparar e intercambiar (CAS, Compare and Swap). Cuando se usa el modo de bloqueo, es decir, una operación de espera ocupada, si un dispositivo de ordenador (como un CPU 301) que solicita un recurso de aceleración de hardware no puede obtener un recurso de aceleración de hardware, el dispositivo de ordenador sigue intentando obtener un recurso de aceleración de hardware hasta que se obtenga un recurso disponible. El CAS también es un algoritmo sin bloqueo integrado en el RDMA. El CAS tiene tres operandos: un valor de memoria V, un antiguo valor esperado A y un nuevo valor B que debe cambiarse. El valor de memoria V se cambia a B solo cuando el valor esperado A es igual al valor de memoria V; de lo contrario, no se requiere ninguna operación. Cuando diferentes CPU o subprocedimientos de CPU de varios dispositivos de ordenador intentan usar CAS para actualizar una misma variable al mismo tiempo, solo un CPU o subprocedimiento puede actualizar un valor de variable mientras que las otras CPU o subprocedimientos fallan. Un hilo fallido recibe una notificación del fallo de la contención en lugar de suspenderse y puede volver a intentarlo. Al usar una operación de este tipo, solo una parte en disputa (como un CPU o un hilo) puede obtener un recurso cuando existe una disputa, a fin de resolver un problema de contención de recursos. Para la apropiación de un recurso de la unidad de aceleración de hardware 403, se puede usar el modo de bloqueo, o el modo CAS, u otro modo de apropiación de recursos. En esta realización de la presente invención, no se limita un modo de apropiación de recursos específicos, siempre y cuando el CPU 301 pueda obtener control exclusivo sobre el recurso de aceleración de hardware de la unidad de aceleración de hardware 403.
En la etapa 300, el CPU 301 del dispositivo de ordenador 30 obtiene la dirección de mapeo de datos de la unidad de aceleración de hardware 403. La dirección de mapeo de datos del dispositivo de aceleración de hardware 403 puede obtenerse enviando directamente una solicitud de consulta al CPU 401, o la dirección de mapeo de datos del dispositivo 403 de aceleración de hardware puede obtenerse usando un nodo de gestión. El nodo de gestión puede ser un nodo de gestión 50 mostrado en la FIG. 2(b). El nodo de gestión 50 está conectado por separado al dispositivo de ordenador 30 y al dispositivo de ordenador 40, obtiene y almacena las direcciones de mapeo de datos de la unidad de aceleración de hardware 303 y la unidad de aceleración de hardware 403 para su consulta y uso por parte del dispositivo de ordenador 30 y el dispositivo de ordenador 40. En una implementación específica, el nodo de gestión 50 puede efectuar adicionalmente una autenticación según una norma prestablecida, y una dirección de mapeo de datos correspondientes de una unidad de aceleración de hardware se puede obtener solo para una aplicación autenticada. Además, un recurso de aceleración de hardware puede asignarse según un estado ocupado/no disponible del recurso de aceleración de hardware de cada nodo, y un recurso de aceleración de hardware relacionado puede liberarse según una norma prestablecida, a fin de implementar una asignación y un uso adecuados del recurso de aceleración de hardware.
Cabe señalar que, el nodo de gestión 50 en la FIG. 2(b) existe en una forma de dispositivo independiente, como un servidor independiente. En una implementación específica, el nodo de gestión 50 puede estar integrado en el dispositivo de ordenador 30 o el dispositivo de ordenador 40, por ejemplo, puede usarse como un chip con una función de almacenamiento y estar dispuesto en el dispositivo de ordenador 30 o el dispositivo de ordenador 40. En esta realización de la presente invención, no se limita un modo de implementación del nodo de gestión 50.
Como un modo de implementación opcional, en esta realización de la presente invención, cuando la unidad de aceleración de hardware 403 mapea la dirección de la memoria intermedia en el espacio de direcciones BAR con el espacio de direccionamiento del CPU, se pueden seleccionar algunas direcciones de memoria intermedia y mapearlas al espacio de direccionamiento del CPU 401, mientras que el procesamiento MMIO puede no realizarse en algunas direcciones de memoria intermedia. La dirección de memoria intermedia en la que se realiza el procesamiento MMIO y que se mapea al espacio de direccionamiento del CPU 401 puede ser usada por un CPU (por ejemplo, el CPU 301) de otro dispositivo de ordenador para solicitar un recurso de aceleración de hardware correspondiente. Para una dirección de memoria intermedia en la que no se realiza ningún mapeo MMIO, se permite que el procesamiento de aceleración de hardware sea realizado por un programa de aplicación del dispositivo de ordenador 40. Es decir, un recurso de aceleración de hardware del dispositivo 403 de aceleración de hardware puede dividirse en un recurso compartido y un recurso privado. El recurso privado es usado solo por el dispositivo de ordenador 40, y el recurso compartido puede ser usado por otro dispositivo de ordenador (por ejemplo, el dispositivo de ordenador 30) excepto el dispositivo de ordenador 40. Por ejemplo, el dispositivo de aceleración de hardware 403 admite el procesamiento de 32 colas. Los recursos de 16 colas pueden informarse al nodo de gestión 50, y los recursos de las 16 colas restantes pueden reservarse para ser usados por el dispositivo de ordenador 40. En la implementación específica, la división del recurso compartido y el recurso privado se puede ajustar dinámicamente para cumplir con diferentes requisitos reales y mejorar la flexibilidad del uso de los recursos de aceleración de hardware.
En la etapa 308, cuando se envían los datos recibidos, obtenidos después de que la unidad de aceleración de hardware 403 realiza el procesamiento de aceleración, al adaptador de red 304 en el modo RDMA, el adaptador de red 404 puede enviar los datos procesados al adaptador de red 304 por medio de una operación de ENVÍO/ESCRITURA.
51 el adaptador de red 404 envía los datos obtenidos después del procesamiento de aceleración al adaptador de red 304 por medio de la operación de ENVÍO, el dispositivo de ordenador 30 necesita enviar una dirección de recepción al adaptador de red 404 por adelantado, y el adaptador de red 404 envía los datos obtenidos después del procesamiento de aceleración mediante la operación de ENVIO según la dirección de recepción de datos. La dirección de recepción es una dirección correspondiente al espacio de almacenamiento de datos en el que el dispositivo de ordenador 30 almacena los datos obtenidos después del procesamiento de aceleración. Después de completar la recepción, el dispositivo de ordenador 30 notifica al dispositivo de ordenador 40 en un modo de notificación de evento o interrupción que la recepción de datos se ha completado. Si el adaptador de red 404 envía los datos obtenidos después del procesamiento de aceleración al adaptador de red 304 por medio de la operación de ESCRITURA, los datos obtenidos después del procesamiento de aceleración pueden escribirse en el adaptador de red o escribirse directamente en el espacio de almacenamiento de destino usando el adaptador de red 304. Después de que el adaptador de red 304 completa la escritura de datos, el dispositivo de ordenador 40 envía una notificación de que se ha completado la operación de escritura al CPU 301 del dispositivo de ordenador 30, para indicar al CPU 301 que complete el procesamiento de aceleración de datos.
En esta realización de la presente invención, en un procedimiento de inicialización del controlador de la unidad de aceleración de hardware 403 que se usa como un dispositivo PCIe, el CPU 401 lee el contenido de un registro en el espacio de configuración de la unidad de aceleración de hardware 403 según el protocolo PCIe, inicializa la unidad de aceleración de hardware 403 según el contenido leído y proporciona una interfaz de control de funcionamiento. La unidad de aceleración de hardware 403 proporciona al CPU 401 una interfaz de programación de aplicaciones (API, Application Programming Interface) y el Cp U 401 accede a la unidad de aceleración de hardware usando la API para implementar el acceso a la unidad de aceleración de hardware 403. La API puede ser una API con un estándar uniforme, por ejemplo, una interfaz de abstracción de conmutadores (SAI, Switch Abstraction Interface) de un proyecto de ordenador abierto (OCP, Open Compute Project) en la virtualización de funciones de red (NFV, Virtualización de funciones de red) o una Interfaz DirectX de Microsoft, o puede ser una interfaz API personalizada de un fabricante de dispositivos de aceleración de hardware. Una interfaz de API específica no se limita en esta realización de la presente invención.
De manera similar, en la etapa 300, el CPU 301 obtiene la dirección de mapeo de datos de la unidad de aceleración de hardware 403 ejecutando una instrucción de un programa de aplicación. En este caso, es necesario modificar una interfaz del programa de aplicación, de modo que el programa de aplicación pueda enviar una instrucción y obtener información como la dirección de mapeo de datos del dispositivo 403 de aceleración de hardware usando el CPU 301. En una implementación específica, la interfaz del programa de aplicación del dispositivo de ordenador 30 puede no modificarse, y la información tal como la dirección de mapeo de datos de la unidad de aceleración de hardware 403 y una dirección de calculadora de control se obtiene usando un conjunto de adaptación. El conjunto de adaptación puede presentarse como un dispositivo de aceleración de hardware real o una unidad de aceleración de hardware para una aplicación de capa superior, pero el procesamiento de aceleración de datos se completa mediante la interacción entre el conjunto de adaptación y la unidad de aceleración de hardware 403 del dispositivo de ordenador 40. De esta manera, se puede evitar la modificación en interfaces de múltiples aplicaciones y se mejora la aplicabilidad de la solución usando solo un conjunto de adaptación para implementar el procesamiento de aceleración de hardware.
Como un modo de implementación opcional, después de la etapa 302, el procedimiento para implementar el procesamiento de aceleración de hardware proporcionado en esta realización de la presente invención incluye, además:
etapa 303: el CPU 301 envía una instrucción de inicio del procesamiento de aceleración a la unidad de aceleración de hardware 403.
El CPU 301 puede enviar la instrucción de inicio del procesamiento de aceleración a la unidad de aceleración de hardware 403 en el modo RDMA. Específicamente, el CPU 301 puede enviar la instrucción de inicio del procesamiento de aceleración a la dirección de registro de control de la unidad de aceleración de hardware 403 directamente en el modo RDMA, para indicar a la unidad de aceleración de hardware 403 que inicie el procesamiento de aceleración de hardware.
En esta realización de la presente invención, el adaptador de red 404 o el adaptador de red 304 puede ser una tarjeta de adaptador de bus de host (HBA, host bus network adapter) con la función RDMA, que incluye, entre otros, dispositivos de hardware tales como un acceso director remoto a memoria a través de un adaptador de red Ethernet convergente (ROCE, remote direct memory access over Converged Ethernet), un canal de fibra (FC, Fibre Channel) a través del adaptador de red RDMA o un adaptador de red de protocolo RDMA de área amplia de Internet (iWarp, Internet wide-area RDMA protocol).
En una realización de la presente invención, se proporciona además otro dispositivo de aceleración de hardware. Como se muestra en la FIG. 4, la FIG. 4 es un diagrama estructural esquemático de otro dispositivo de aceleración de hardware 500 según esta realización de la presente invención. El dispositivo de aceleración de hardware 400 incluye el conjunto de procesamiento de aceleración de hardware 501 y el adaptador de red 502. El conjunto de procesamiento de aceleración de hardware 501 del dispositivo de aceleración de hardware 500 tiene una función de procesamiento de aceleración de hardware, por ejemplo, puede tener funciones tales como hacer una distribución inteligente de paquetes, comprimir/descomprimir hardware, cifrar de hardware y procesar la aceleración de gráficos. El conjunto de procesamiento de aceleración de hardware 501 puede implementarse mediante dispositivos con la función de procesamiento de aceleración de hardware, como una matriz de puertas de campo programables (FPGA, matriz de puertas de campo programables).
El conjunto de procesamiento de aceleración de hardware 501 puede procesar una solicitud de aceleración de hardware enviada por otro dispositivo de ordenador y devolver los datos procesados al otro dispositivo de ordenador solicitante después del procesamiento de aceleración del hardware. Esta realización de la presente invención usa un ejemplo en el que el dispositivo de aceleración de hardware 500 recibe una solicitud de aceleración de hardware solicitada de un dispositivo de ordenador 30 y realiza un procesamiento de aceleración de hardware, para describir un modo de implementación del dispositivo de aceleración de hardware 500.
Como se muestra en la FIG. 5(a), el dispositivo de aceleración de hardware 500 incluye el conjunto de procesamiento de aceleración de hardware 501 y el adaptador de red 502, y el dispositivo de ordenador 30 incluye un CPU 301, una memoria 302, una unidad de aceleración de hardware 303 y un adaptador de red 304. El adaptador de red 304 del dispositivo de ordenador 30 está conectado al adaptador de red 502 del dispositivo de aceleración de hardware 500 a través de una red, para implementar la conexión y comunicación entre el dispositivo de ordenador 30 y el dispositivo de aceleración de hardware 500.
El conjunto de procesamiento de aceleración de hardware 501 del dispositivo de aceleración de hardware 500 tiene una dirección de memoria intermedia de datos, y el espacio de almacenamiento de datos correspondiente a la dirección de memoria intermedia de datos se usa para almacenar datos en los que el procesamiento de aceleración de hardware. En esta realización de la presente invención, la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 puede obtenerse mediante el dispositivo de ordenador 30. Es decir, el CPU 301 del dispositivo de ordenador 30 puede obtener la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501. Cuando un programa de aplicación del dispositivo de ordenador 30 necesita realizar un procesamiento de aceleración de hardware, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware pueden enviarse al dispositivo de aceleración de hardware 500 usando el CPU 301 según la dirección de la memoria intermedia de datos obtenida del conjunto de procesamiento de aceleración de hardware 501.
El adaptador de red 502 es un adaptador de red que tiene una función RDMA o DMA. Después de recibir los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y que son enviados por el dispositivo de ordenador 30, el adaptador de red 502 envía directamente los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al conjunto 501 de procesamiento de aceleración de hardware según la dirección de memoria intermedia de datos recibida del conjunto 501 de procesamiento de aceleración de hardware. Específicamente, el conjunto de procesamiento de aceleración de hardware 501 puede compartir una memoria con el adaptador de red 502, es decir, el dispositivo de aceleración de hardware 500 incluye además una memoria compartida. Cuando se reciben los datos sobre los que se debe realizar el procesamiento de aceleración de hardware, el adaptador de red 502 puede almacenar directamente los datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware en la memoria compartida. El conjunto de procesamiento de aceleración de hardware 501 obtiene directamente los datos sobre los que se debe realizar el procesamiento de aceleración de hardware desde la memoria compartida, para realizar el procesamiento de aceleración de hardware. Opcionalmente, una dirección de la memoria compartida es la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501.
En esta realización de la presente invención, el conjunto de procesamiento de aceleración de hardware 501 incluye además información de registro de control y/o información de registro de estado. El CPU 301 del dispositivo de ordenador 30 puede obtener la información del registro de control y/o información de registro de estado del conjunto de procesamiento de aceleración de hardware 501. La información del registro de control puede incluir una dirección de registro de control. El CPU 301 puede implementar el control sobre el conjunto de procesamiento de aceleración de hardware 501 usando la dirección de registro de control del conjunto de procesamiento de aceleración de hardware 501. La información del registro de estado puede incluir una dirección de registro de estado. El CPU 301 puede obtener un estado del conjunto de procesamiento de aceleración de hardware 501 usando la dirección del registro de estado, para solicitar al conjunto de procesamiento de aceleración de hardware 501 que realice el procesamiento de aceleración de hardware cuando el conjunto de procesamiento de aceleración de hardware 501 está inactivo. De esta manera, el dispositivo de ordenador 30 puede enviar un comando de control al conjunto de procesamiento de aceleración de hardware 501 directamente usando el adaptador 502 de red, a fin de controlar el conjunto 501 de procesamiento de aceleración de hardware para realizar el procesamiento de aceleración de hardware en datos.
Después de realizar el procesamiento de aceleración en los datos recibidos sobre los que se debe realizar el procesamiento de aceleración de hardware, el conjunto de procesamiento de aceleración de hardware 501 envía los datos obtenidos después del procesamiento de aceleración al adaptador de red 502, y el adaptador de red 502 envía los datos según una dirección de destino del siguiente salto de los datos obtenidos después del procesamiento de aceleración. Al especificar un destino del siguiente salto, los datos procesados pueden devolverse directamente a un nodo de envío original (es decir, el dispositivo de ordenador 30), o los datos procesados pueden enviarse a otro nodo de red según un requisito de servicio. Debe entenderse que el adaptador de red 502 puede enviar los datos obtenidos después del procesamiento de aceleración en un modo RDMA.
El dispositivo de aceleración de hardware 500 en la FIG. 4 solo incluye el conjunto de procesamiento de aceleración de hardware 501 y el adaptador de red 502. La participación del CPU 401 y la memoria 402 en la FIG. 2(a) se elimina, lo que ahorra aún más recursos de hardware. Además, no es necesario que los dispositivos como el CPU 401 y la memoria 402 se ejecuten en un servidor para implementar el procesamiento de aceleración de hardware. Esto reduce aún más el consumo de otro dispositivo de hardware o recurso de hardware del servidor, provocado por la configuración del servidor, mejorando así además la utilización de recursos.
La dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 puede ser obtenida por el dispositivo de ordenador 30. En una implementación específica, el dispositivo de ordenador 30 puede enviar una solicitud para obtener la dirección de la memoria intermedia de datos al conjunto de procesamiento de aceleración de hardware 501, y el conjunto de procesamiento de aceleración de hardware 501 puede enviar la dirección de memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 al dispositivo de ordenador 30 en una respuesta de solicitud; o el dispositivo de ordenador 30 puede obtener la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 de un conjunto de gestión. Por ejemplo, como se muestra en la FIG. 5(b), el dispositivo de ordenador 30 y el dispositivo de aceleración de hardware 500 están conectados por separado a un conjunto de gestión 50. El conjunto de gestión 5 almacena la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 del dispositivo de aceleración de hardware 500, y puede almacenar además la dirección de mapeo de datos de la unidad de aceleración de hardware 303 del dispositivo de ordenador 30. El conjunto de gestión puede obtener y almacenar activamente la dirección de mapeo de datos de la unidad de aceleración de hardware 303 y la dirección de la memoria intermedia de datos del dispositivo de aceleración de hardware 500, o puede recibir la dirección de mapeo de datos de la unidad de aceleración de hardware 303 enviada por el dispositivo de ordenador 30 o la dirección de memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501 enviada por el dispositivo de aceleración de hardware 500. En una implementación específica, el nodo de gestión 50 puede efectuar adicionalmente una autenticación según una norma prestablecida, y una dirección de mapeo de datos correspondientes de una unidad de aceleración de hardware se puede obtener solo para una aplicación autenticada. Además, un recurso de aceleración de hardware puede asignarse según un estado ocupado/no disponible del recurso de aceleración de hardware de cada nodo, y un recurso de aceleración de hardware relacionado puede liberarse según una norma prestablecida, a fin de implementar una asignación y un uso adecuados del recurso de aceleración de hardware.
En otro modo de implementación proporcionado en esta realización de la presente invención, el dispositivo de ordenador 30, el dispositivo de ordenador 40 y el dispositivo de aceleración de hardware 500 están interconectados a través de una red, para compartir un recurso de aceleración de hardware. Como se muestra en la FIG. 5(c), el dispositivo de ordenador 30 se conecta por separado al dispositivo de ordenador 40 y al dispositivo de aceleración de hardware 500 mediante el uso del adaptador de red 304. El dispositivo de ordenador 30 puede usar la unidad de aceleración de hardware 403 del dispositivo de ordenador 40 para realizar el procesamiento de aceleración de hardware, o puede usar el conjunto de procesamiento de aceleración de hardware 501 del dispositivo de aceleración de hardware 500 para realizar el procesamiento de aceleración de hardware. Cuando el dispositivo de ordenador 30 usa la unidad de aceleración de hardware 403 del dispositivo de ordenador 40 para realizar el procesamiento de aceleración de hardware, se puede hacer referencia a los modos de implementación de las realizaciones mostradas en la FIG. 2(a), FIG. 2(b) y la FIG. 3. Cuando el dispositivo de ordenador 30 usa el conjunto de procesamiento de aceleración de hardware 501 del dispositivo de aceleración de hardware 500 para realizar el procesamiento de aceleración de hardware, se puede hacer referencia a un modo de implementación de la realización mostrada en la FIG. 5(a).
Debe entenderse que, en un modo de implementación mostrado en la FIG. 5(c), se incluye además el conjunto de gestión 50. Como se muestra en la FIG. 5(d), similar al conjunto de gestión 50 de la FIG. 2(b) y la FIG. 5(b), el conjunto de gestión 50 recopila y gestiona las direcciones de mapeo de datos de la unidad de aceleración de hardware 303 o la unidad de aceleración de hardware 403 y la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware 501.
Una realización de la presente invención proporciona además un dispositivo de ordenador 600, donde el dispositivo de ordenador incluye una unidad central de procesamiento, CPU, una unidad de aceleración de hardware y un adaptador de red, y el adaptador de red tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA.
El adaptador de red se configura para recibir datos sobre los que se debe realizar el procesamiento de aceleración de hardware y una dirección de mapeo de datos que son enviados por otro dispositivo de ordenador, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento y que se obtiene realizando el procesamiento MMIO, de entrada/salida de mapeo de memoria sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware del CPU.
El adaptador de red se configura además para enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware, donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware es el espacio de almacenamiento de datos correspondiente a la dirección de memoria intermedia de datos de la unidad de aceleración de hardware.
La unidad de aceleración de hardware se configura para realizar el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, para obtener datos que se encuentran después del procesamiento de aceleración de hardware.
El dispositivo de ordenador 600 puede implementarse con referencia a los modos de implementación del dispositivo de ordenador 40 en la FIG. 2(a), la FIG. 2(b), la FIG. 3, FIG. 5(c) y la FIG. 5(d), y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un dispositivo de aceleración de hardware 700, donde el dispositivo de aceleración de hardware incluye un conjunto de procesamiento de aceleración de hardware y un adaptador de red, y el adaptador de red tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA.
El adaptador de red se configura para: recibir datos sobre los que se debe realizar el procesamiento de aceleración de hardware y enviar los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos correspondiente a una dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware, donde el espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos se usa para almacenar datos en los que el conjunto de procesamiento de aceleración de hardware necesita realizar el procesamiento de aceleración de hardware. El conjunto de procesamiento de aceleración de hardware se configura para: realizar el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos y devolver los datos obtenidos después del procesamiento de aceleración de hardware al adaptador de red.
El dispositivo de aceleración de hardware 700 puede implementarse con referencia a los modos de implementación del dispositivo de aceleración de hardware 500 en la FIG. 4(a), la FIG. 5(a), la FIG. 5(b), FIG. 5(c) y la FIG. 5(d), y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un dispositivo de ordenador 800, y el dispositivo de ordenador incluye una unidad central de procesamiento, CPU, y un adaptador de red.
El CPU se configura para obtener una dirección de mapeo de datos de una unidad de aceleración de hardware de otro dispositivo de ordenador mediante el uso del adaptador de red, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de un CPU de otro dispositivo de ordenador y que se obtiene realizando el procesamiento de mapeo de entrada/salida de memoria, MMIO, sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware..
El CPU se configura además para: enviar, según la dirección de mapeo de datos obtenida de la unidad de aceleración de hardware, datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware a otro dispositivo de ordenador, y recibir datos devueltos por otro dispositivo de ordenador y que se obtienen después de que se realiza el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware.
El dispositivo de ordenador 800 puede implementarse con referencia a los modos de implementación del dispositivo de ordenador 30 en la FIG. 2(a), la FIG. 2(b), la FIG. 3, la FIG. 5(a), la FIG. 5(b), la FIG. 5(c) y la FIG. 5(d) en las realizaciones anteriores, y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un sistema 900 para implementar el procesamiento de aceleración de hardware, que incluye un primer dispositivo de ordenador y un segundo dispositivo de ordenador, donde el primer dispositivo de ordenador incluye una primera unidad central de procesamiento, CPU, el segundo dispositivo de ordenador incluye un segundo CPU, una unidad de aceleración de hardware y un adaptador de red, y el adaptador de red tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA.
El CPU se configura para: obtener una dirección de mapeo de datos de la unidad de aceleración de hardware, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento del segundo CPU y que se obtiene realizando el procesamiento MMIO de entrada/salida de mapeo de memoria de datos sobre una dirección de memoria intermedia de la unidad de aceleración de hardware: y enviar, según la dirección de mapeo de datos obtenida de la unidad de aceleración de hardware, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware al adaptador de red.
El adaptador de red se configura para: recibir los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware, y enviar, según la dirección de asignación de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware realizado en el espacio de almacenamiento de datos de la unidad de aceleración de hardware, donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware es el espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware.
La unidad de aceleración de hardware se configura para: realizar el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos y devolver los datos obtenidos después del procesamiento de aceleración de hardware al primer dispositivo de ordenador.
El sistema 900 para implementar el procesamiento de aceleración de hardware puede implementarse con referencia a los modos de implementación de la FIG. 2(a), la FIG. 2(b), la FIG. 3, FIG. 5(c) y la FIG. 5(d) en las realizaciones anteriores, y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un sistema 1000 para implementar el procesamiento de aceleración de hardware, que incluye un primer dispositivo de ordenador y un dispositivo de aceleración de hardware, donde el primer dispositivo de ordenador incluye una unidad central de procesamiento, CPU, el dispositivo de aceleración de hardware incluye un conjunto de procesamiento de aceleración de hardware y un adaptador de red, y el adaptador de red tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA.
El CPU se configura para: obtener una dirección de memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware, donde el espacio de almacenamiento de datos correspondiente a la dirección de memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware se usa para almacenar datos en los que el conjunto de procesamiento de aceleración de hardware necesita realizar el procesamiento de aceleración de hardware; y enviar, según la dirección de memoria intermedia de datos obtenida del conjunto de procesamiento de aceleración de hardware, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware al dispositivo de aceleración de hardware.
El adaptador de red se configura para: recibir los datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware, y enviar directamente, según la dirección de memoria intermedia de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos del conjunto de procesamiento de aceleración de hardware.
El conjunto de procesamiento de aceleración de hardware se configura para: realizar el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, y devolver los datos obtenidos después del procesamiento de aceleración de hardware al adaptador de red.
El adaptador de red se configura además para enviar los datos obtenidos después del procesamiento de aceleración de hardware al primer dispositivo de ordenador.
El sistema 1000 para implementar el procesamiento de aceleración de hardware puede implementarse con referencia a los modos de implementación de la FIG. 5(a), la FIG. 5(b), la FIG. 5(c) y la FIG. 5(d) en las realizaciones anteriores, y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un procedimiento S1 para implementar el procesamiento de aceleración de hardware, y el procedimiento incluye:
recibir, mediante un adaptador de red de un primer dispositivo de ordenador, datos sobre los que se debe realizar el procesamiento de aceleración de hardware, una dirección de mapeo de datos y una dirección que son enviadas por un segundo dispositivo de ordenador, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de una unidad central de procesamiento, CPU, del primer dispositivo de ordenador y que se obtiene realizando un procesamiento MMIO, de entrada/salida de mapeo de memoria, sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware;
enviar, mediante el adaptador de red según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware, donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware es el espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware; y
realizar, mediante la unidad de aceleración de hardware, el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, a fin de obtener los datos que aparecen después del procesamiento de aceleración de hardware.
Un modo de implementación del primer dispositivo de ordenador en el procedimiento S1 puede implementarse con referencia a los modos de implementación del dispositivo de ordenador 40 en la FIG. 2(a), la FIG. 2(b), la FIG. 3, FIG.
5(c) y la FIG. 5(d) en las realizaciones anteriores, y los detalles no se describen de manera repetida.
Una realización de la presente invención proporciona además un procedimiento S2 para implementar el procesamiento de aceleración de hardware, y el procedimiento incluye:
obtener, mediante una primera unidad central de procesamiento, CPU, de un primer dispositivo de ordenador, una dirección de mapeo de datos de una unidad de aceleración de hardware de un segundo dispositivo de ordenador, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de un CPU del segundo dispositivo de ordenador y que se obtiene realizando el procesamiento de mapeo de entrada/salida de memoria, MMIO, sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware;
enviar, por medio del primer CPU según la dirección de mapeo de datos obtenida de la unidad de aceleración de hardware, datos sobre los cuales se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware a un adaptador de red del segundo dispositivo de ordenador, donde el adaptador de red del segundo dispositivo de ordenador es un adaptador de red que tiene una función de acceso directo remoto a memoria, RDMA, o una función de acceso directo a memoria, DMA; y obtener, mediante la primera CPU, los datos que son devueltos por el segundo dispositivo de ordenador y que se obtienen después de que se realiza el procesamiento de aceleración de hardware sobre los datos sobre los que se debe realizar el procesamiento de aceleración de hardware.
Un modo de implementación del primer dispositivo de ordenador en el procedimiento S2 puede implementarse con referencia a los modos de implementación de la FIG. 2(a), la FIG. 2(b), la FIG. 3, FIG. 5(c) y la FIG. 5(d) en las realizaciones anteriores, y los detalles no se describen de manera repetida.
En un sistema distribuido convencional, un grupo de ordenadores independientes generalmente se usan y se presentan como un todo unificado a un usuario, y se presentan como un sistema de manera externa. En el sistema se usan recursos físicos y lógicos comunes, y dichos recursos se abstraen y asignan dinámicamente al usuario para su uso. La información entre recursos físicos distribuidos se intercambia a través de una red. Para el usuario, el sistema distribuido convencional tiene un solo modelo, y el modelo se implementa generalmente usando una capa de software intermedio en una operación. En el procedimiento y el dispositivo para implementar el procesamiento de aceleración de hardware proporcionado en las realizaciones de la presente invención, un conjunto mínimo de una aplicación distribuida se cambia a un recurso de aceleración de hardware. De esta manera, no es necesario realizar ninguna modificación en un modo y sistema de aplicación original, y se usa mejor un recurso de hardware.
Un experto en la materia puede ser consciente de que los conjuntos y las etapas en los ejemplos descritos con referencia a las realizaciones descritas en el presente documento pueden implementarse mediante hardware electrónico, software informático o una combinación de los mismos. Para describir claramente la intercambiabilidad entre el hardware y el software, lo anterior usualmente ha descrito composiciones y etapas de cada ejemplo según las funciones. Si las funciones se realizan por hardware o software depende de aplicaciones particulares y condiciones de restricción de diseño de las soluciones técnicas. Una persona experta en la materia puede usar diferentes procedimientos para implementar las funciones descritas para cada aplicación particular, pero no debe considerarse que la implementación va más allá del alcance de la presente invención.
Una persona experta en la materia puede entender claramente que, para una descripción breve y conveniente, para un procedimiento de trabajo detallado del sistema, aparato y conjunto anteriores, se puede hacer referencia a un procedimiento correspondiente en las realizaciones del procedimiento anterior, y los detalles no se describen en esta invención.
En las varias realizaciones proporcionadas en esta solicitud, se debe entender que el sistema, aparato y procedimiento descritos se pueden implementar de otras maneras. Por ejemplo, la realización del aparato descrita es solo un ejemplo. Por ejemplo, la división en conjuntos es solo la división de la función lógica y puede ser otra división en la implementación real. Por ejemplo, se pueden combinar o integrar una pluralidad de conjuntos o componentes en otro sistema, o algunas características se pueden ignorar o no realizar. Además, los acoplamientos mutuos mostrados o discutidos o los acoplamientos directos o las conexiones de comunicación pueden implementarse a través de algunas interfaces, acoplamientos indirectos o conexiones de comunicación entre los aparatos o conjuntos, o conexiones eléctricas, conexiones mecánicas o conexiones en otras formas.
Los conjuntos descritos como partes separadas pueden estar o no físicamente separadas, y las partes mostradas como conjuntos pueden ser o no conjuntos físicos, pueden estar situadas en una posición, o pueden estar distribuidas en una pluralidad de conjuntos de red. Una parte o todos los conjuntos pueden seleccionarse según las necesidades reales para lograr los objetivos de las soluciones de las realizaciones de la presente invención.
Además, los conjuntos funcionales en las realizaciones de la presente invención se pueden integrar en un conjunto de procesamiento, o cada uno de los conjuntos puede existir físicamente de manera independiente, o dos o más conjuntos se integran en un conjunto. el conjunto integrado se puede implementar en una forma de hardware, o se puede implementar en una forma de un conjunto funcional de software.
Cuando el conjunto integrado se implementa en la forma de un conjunto funcional de software y se vende o se usa como un producto independiente, el conjunto integrada se puede almacenar en un medio de almacenamiento legible por ordenador. Basándose en tal entendimiento, las soluciones técnicas de la presente invención esencialmente, o la parte que contribuye a la técnica anterior, o todas o una parte de las soluciones técnicas, se pueden implementar en la forma de un producto de software. El producto de software se almacena en un medio de almacenamiento e incluye varias instrucciones para instruir a un dispositivo de ordenador (que puede ser un ordenador personal, un servidor o un dispositivo de red) para realizar todas o parte de los pasos de los procedimientos descritos en las realizaciones de la presente invención. El medio de almacenamiento anterior incluye: cualquier medio que pueda almacenar código de programa, como un conjunto flash USB, un disco duro extraíble, una memoria de solo lectura (ROM, Read-Only Memory), una memoria de acceso aleatorio (RAM, Random Access Memory), un disco magnético o un disco óptico.
Las descripciones anteriores son solamente realizaciones específicas de la presente invención, pero no pretenden limitar el alcance de protección de la presente invención. Cualquier modificación fácilmente calculada por una persona experta en la materia dentro del alcance de las reivindicaciones debe caer dentro del alcance de protección de la presente invención. Por lo tanto, el alcance de protección de la presente invención se someterá al alcance de protección de las reivindicaciones.

Claims (5)

REIVINDICACIONES
1. Un dispositivo de ordenador (40), donde el dispositivo de ordenador (40) comprende una unidad central de procesamiento, un CPU (401), una unidad de aceleración de hardware (403) y un adaptador de red (404), donde el adaptador de red (404) tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA, y donde
el adaptador de red (404) se configura para recibir datos sobre los que se debe realizar el procesamiento de aceleración de hardware y una dirección de mapeo de datos que son enviados por otro dispositivo de ordenador, donde
la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento del CPU (401) y que se obtiene realizando el procesamiento de entrada/salida de mapeo de memoria, MMIO, sobre una dirección de memoria intermedia de datos del conjunto de aceleración de datos (403);
el adaptador de red (404) se configura además para enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware (403), donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware (403) es el espacio de almacenamiento de datos que corresponde a la dirección de memoria intermedia de datos de la unidad de aceleración de hardware (403);
la unidad de aceleración de hardware (403) se configura para realizar el procesamiento de aceleración de hardware sobre los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, para obtener los datos después del procesamiento de aceleración de hardware, y caracterizado porque:
la unidad de aceleración de hardware (403) comprende recursos de aceleración de hardware que se dividen en recursos compartidos y privados, donde los recursos compartidos se asignan para su uso por parte de otros dispositivos de ordenador, excepto el dispositivo de ordenador (40), y donde los recursos privados se asignan para el uso por parte del dispositivo de ordenador (40), y la unidad de aceleración de hardware (403) se configura para ajustar dinámicamente la división de los recursos compartidos y los recursos privados en base a los requerimientos de demanda de los recursos de aceleración de hardware.
2. El dispositivo de ordenador (40) según la reivindicación 1, donde
la unidad de aceleración de hardware (403) se configura además para: determinar si enviar los datos obtenidos después del procesamiento de aceleración de hardware al otro dispositivo de ordenador, y al determinar si enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador, enviar directamente los datos obtenidos después del procesamiento de aceleración de hardware al adaptador de red (404); y
el adaptador de red (404) se configura además para enviar los datos obtenidos después del procesamiento de aceleración de hardware a otro dispositivo de ordenador.
3. El dispositivo de ordenador (40) según la reivindicación 1 o 2, donde
la unidad de aceleración de hardware (403) se configura además para realizar el procesamiento MMIO sobre una dirección de registro de control de la unidad de aceleración de hardware (403), para mapear la dirección de registro de control al espacio de direccionamiento del CPU (401).
4. Un sistema para implementar el procesamiento de aceleración de hardware, que comprende un primer dispositivo de ordenador (30) y un segundo dispositivo de ordenador (40), donde el primer dispositivo de ordenador (30) comprende una primera unidad central de procesamiento, CPU (301), el segundo dispositivo de ordenador (40) comprende un segundo CPU (401), una unidad de aceleración de hardware (403) y un adaptador de red (404), el adaptador de red (404) tiene una función de acceso directo remoto a memoria, RDMA, o de acceso directo a memoria, DMA, donde
el primer CPU (301) se configura para: obtener una dirección de mapeo de datos de la unidad de aceleración de hardware (403), donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento del segundo CPU (401) y que se obtiene realizando el procesamiento de entrada/salida de mapeo de memoria, MMIO, sobre una dirección de memoria intermedia de datos de la unidad de aceleración de hardware (403); y enviar, según la dirección de mapeo de datos obtenida de la unidad de aceleración de hardware (403), datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware (403) al adaptador de red;
el adaptador de red (404) se configura para: recibir datos sobre los que se debe realizar el procesamiento de aceleración de hardware y la dirección de mapeo de datos de la unidad de aceleración de hardware (403), y enviar, según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware (403), donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware (403) es el espacio de almacenamiento de datos correspondiente a la dirección de memoria intermedia de datos de la unidad de aceleración de hardware (403); y
la unidad de aceleración de hardware (403) se configura para: realizar el procesamiento de aceleración de hardware sobre los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, y devolver los datos obtenidos después del procesamiento de aceleración de hardware al primer dispositivo de ordenador (30);
caracterizado porque:
la unidad de aceleración de hardware (403) comprende recursos de aceleración de hardware que se dividen en recursos compartidos y privados, donde los recursos compartidos se asignan para su uso por parte del primer dispositivo de ordenador (30), excepto el segundo dispositivo de ordenador (40), y donde los recursos privados se asignan para su uso por parte del segundo dispositivo de ordenador (40) y
la unidad de aceleración de hardware (403) se configura para ajustar dinámicamente la división de los recursos compartidos y los recursos privados en base a los requerimientos de demanda de los recursos de aceleración de hardware.
5. Un procedimiento para implementar el procesamiento de aceleración de hardware, donde el procedimiento comprende:
recibir, mediante un adaptador de red de un primer dispositivo de ordenador, datos sobre los que se debe realizar el procesamiento de aceleración de hardware y una dirección de mapeo de datos, enviados por un segundo dispositivo de ordenador, donde la dirección de mapeo de datos es una dirección que se encuentra en el espacio de direccionamiento de una unidad central de procesamiento, CPU, del primer dispositivo de ordenador y que se obtiene realizando el procesamiento de mapeo de entrada/salida de memoria, MMIO, sobre una dirección de memoria intermedia de datos de una unidad de aceleración de hardware, donde la unidad de aceleración de hardware comprende recursos de aceleración de hardware que se dividen en recursos compartidos y recursos privados, donde los recursos compartidos se asignan para su uso por parte del segundo dispositivo de ordenador, excepto el primer ordenador dispositivo, y donde los recursos privados se asignan para su uso por parte del primer dispositivo de ordenador;
enviar, mediante el adaptador de red según la dirección de mapeo de datos, los datos sobre los que se debe realizar el procesamiento de aceleración de hardware al espacio de almacenamiento de datos de la unidad de aceleración de hardware, donde el espacio de almacenamiento de datos de la unidad de aceleración de hardware es el espacio de almacenamiento de datos correspondiente a la dirección de la memoria intermedia de datos de la unidad de aceleración de hardware;
realizar, mediante la unidad de aceleración de hardware, el procesamiento de aceleración de hardware en los datos sobre los que se debe realizar el procesamiento de aceleración de hardware en el espacio de almacenamiento de datos, para obtener datos después del procesamiento de aceleración de hardware; ajustar dinámicamente, mediante la unidad de aceleración de hardware, la división de los recursos compartidos y los recursos privados en función de los requisitos de demanda de los recursos de aceleración de hardware.
ES16890896T 2016-08-26 2016-08-26 Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware Active ES2830355T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/096955 WO2018035856A1 (zh) 2016-08-26 2016-08-26 实现硬件加速处理的方法、设备和系统

Publications (1)

Publication Number Publication Date
ES2830355T3 true ES2830355T3 (es) 2021-06-03

Family

ID=61151074

Family Applications (1)

Application Number Title Priority Date Filing Date
ES16890896T Active ES2830355T3 (es) 2016-08-26 2016-08-26 Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware

Country Status (6)

Country Link
US (1) US10365830B2 (es)
EP (2) EP3358463B1 (es)
CN (3) CN112099940B (es)
DK (1) DK3358463T3 (es)
ES (1) ES2830355T3 (es)
WO (1) WO2018035856A1 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018035856A1 (zh) * 2016-08-26 2018-03-01 华为技术有限公司 实现硬件加速处理的方法、设备和系统
EP3791274B1 (en) * 2018-05-08 2024-05-01 Telefonaktiebolaget LM Ericsson (publ) Method and node for managing a request for hardware acceleration by means of an accelerator device
US11019132B2 (en) 2018-06-29 2021-05-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
WO2020000401A1 (en) * 2018-06-29 2020-01-02 Intel Corporation Transparent Encryption
KR102655094B1 (ko) 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
CN109597786B (zh) * 2018-12-05 2022-03-11 镕铭微电子(济南)有限公司 主机与硬件加速模块的交互方法、硬件加速设备及介质
JP7139939B2 (ja) * 2018-12-26 2022-09-21 日本電信電話株式会社 スケジューリングシステムおよび方法
CN109783409A (zh) * 2019-01-24 2019-05-21 北京百度网讯科技有限公司 用于处理数据的方法和装置
US11082410B2 (en) 2019-04-26 2021-08-03 Advanced New Technologies Co., Ltd. Data transceiving operations and devices
CN110177083B (zh) * 2019-04-26 2021-07-06 创新先进技术有限公司 一种网卡、数据发送/接收方法及设备
CN110688237B (zh) 2019-06-25 2024-02-09 华为技术有限公司 转发报文的方法、中间设备和计算机设备
CN110471779B (zh) * 2019-07-22 2023-11-14 创新先进技术有限公司 用于实现锁资源处理的方法和装置
CN112291293B (zh) * 2019-07-27 2023-01-06 华为技术有限公司 任务处理方法、相关设备及计算机存储介质
WO2021034340A1 (en) * 2019-08-16 2021-02-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
US20230044219A1 (en) * 2019-10-29 2023-02-09 Silicon Mobility Sas A secure hardware programmable architecture
CN112749121A (zh) * 2019-10-31 2021-05-04 中兴通讯股份有限公司 基于pcie总线的多芯片互联系统
CN110968530B (zh) * 2019-11-19 2021-12-03 华中科技大学 一种基于非易失性内存的键值存储系统和内存访问方法
CN111200561B (zh) * 2019-12-31 2022-03-15 奇安信科技集团股份有限公司 数据包传输方法和装置、计算机系统和可读存储介质
CN111585787B (zh) * 2020-04-02 2021-11-23 华南理工大学 基于fpga改善nfv业务链转发效率的装置及方法
CN113778320B (zh) * 2020-06-09 2024-11-29 华为技术有限公司 网卡以及网卡处理数据的方法
CN111858038A (zh) 2020-06-30 2020-10-30 浪潮电子信息产业股份有限公司 Fpga板卡内存数据的读取方法、装置及介质
CN112131164B (zh) * 2020-09-23 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 应用于加速板卡的数据调度方法、装置及加速板卡和介质
CN113238869A (zh) * 2021-05-28 2021-08-10 北京达佳互联信息技术有限公司 一种计算加速方法、设备和系统及存储介质
US11861408B2 (en) 2021-06-18 2024-01-02 Google Llc Hardware accelerator service discovery
CN113448967B (zh) 2021-07-20 2022-02-08 威讯柏睿数据科技(北京)有限公司 一种对数据库操作进行加速的方法和装置
CN113596495B (zh) * 2021-07-28 2023-11-24 广州方硅信息技术有限公司 直播推流处理方法及其装置、设备与介质
CN113595807B (zh) * 2021-09-28 2022-03-01 阿里云计算有限公司 计算机系统、rdma网卡及数据通信方法
CN116107954A (zh) * 2021-11-09 2023-05-12 华为技术有限公司 一种数据处理方法以及相关设备
US12430186B2 (en) 2021-11-12 2025-09-30 Google Llc Hardware accelerator service aggregation
US12068922B2 (en) 2022-01-07 2024-08-20 Nokia Technologies Oy Processing chaining in virtualized networks
CN116821204A (zh) * 2022-03-21 2023-09-29 华为技术有限公司 一种数据处理方法及装置
CN117951064A (zh) * 2022-10-31 2024-04-30 华为技术有限公司 一种芯片系统和集合通信方法
CN116346781B (zh) * 2023-03-13 2024-06-11 苏州浪潮智能科技有限公司 一种地址空间分配方法、服务器、电子设备和存储介质
CN116226027B (zh) * 2023-05-04 2023-08-15 苏州浪潮智能科技有限公司 数据传输系统、方法、装置、通信设备及存储介质
CN116594951B (zh) * 2023-07-13 2023-09-26 北京芯通未来科技发展有限公司 一种基于fpga的数据传输系统及方法
CN116627888B (zh) * 2023-07-25 2023-10-03 苏州浪潮智能科技有限公司 硬件计算模块、设备、方法、电子设备及存储介质
CN117519955B (zh) * 2024-01-08 2024-03-29 浪潮电子信息产业股份有限公司 一种加速设备的控制方法、系统、装置及加速设备
CN119938551B (zh) * 2025-04-10 2025-07-25 北京诺芮集成电路设计有限公司 一种基于纵向扩展组网的内存访问系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008527507A (ja) * 2004-12-30 2008-07-24 サイトリックス システムズ, インコーポレイテッド クライアント側の加速技術を提供するシステムおよび方法
CN100574200C (zh) * 2005-12-31 2009-12-23 中国科学院计算技术研究所 具有硬件加速功能的智能以太网卡
US9176765B2 (en) * 2006-09-25 2015-11-03 Lenovo (Beijing) Limited Virtual machine system and a method for sharing a graphics card amongst virtual machines
US7743191B1 (en) * 2007-12-20 2010-06-22 Pmc-Sierra, Inc. On-chip shared memory based device architecture
CN101729893B (zh) * 2008-08-15 2011-08-17 北京北大众志微系统科技有限责任公司 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置
US8055805B2 (en) * 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
CN101540727B (zh) * 2009-05-05 2012-05-09 曙光信息产业(北京)有限公司 一种ip报文的硬件分流方法
US8451281B2 (en) * 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
CN101751284B (zh) * 2009-12-25 2013-04-24 华为技术有限公司 一种分布式虚拟机监控器的i/o资源调度方法
US9286472B2 (en) * 2012-05-22 2016-03-15 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
CN103200128B (zh) * 2013-04-01 2016-12-28 华为技术有限公司 一种网络包处理的方法、装置和系统
CN104239227B (zh) * 2013-06-20 2017-06-06 新华三技术有限公司 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法
KR101670342B1 (ko) * 2013-10-29 2016-10-28 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 시스템 및 데이터 처리 방법
CN103607428B (zh) * 2013-10-30 2017-11-17 华为技术有限公司 一种访问共享内存的方法和装置
US10248587B2 (en) * 2013-11-08 2019-04-02 Sandisk Technologies Llc Reduced host data command processing
US10218645B2 (en) * 2014-04-08 2019-02-26 Mellanox Technologies, Ltd. Low-latency processing in a network node
US9317446B2 (en) * 2014-09-23 2016-04-19 Cisco Technology, Inc. Multi-level paging and address translation in a network environment
US10303644B2 (en) * 2014-11-21 2019-05-28 International Business Machines Corporation Providing remote, reliant and high performance PCI express device in cloud computing environments
CN105808345B (zh) * 2014-12-31 2019-03-08 华为技术有限公司 数据处理方法、加速引擎、控制板和系统
CN104503948B (zh) * 2015-01-19 2017-08-11 中国人民解放军国防科学技术大学 支持多核网络处理架构的紧耦合自适应协处理系统
CN104539632B (zh) * 2015-01-20 2017-12-12 中国人民解放军国防科学技术大学 一种基于虚拟地址空间的可编程网络设备管理控制方法
EP3288232B1 (en) * 2015-12-30 2020-03-25 Huawei Technologies Co., Ltd. Nas data access method and system
WO2018035856A1 (zh) * 2016-08-26 2018-03-01 华为技术有限公司 实现硬件加速处理的方法、设备和系统
US10013734B1 (en) * 2017-04-01 2018-07-03 Intel Corporation Programmable controller and command cache for graphics processors

Also Published As

Publication number Publication date
CN112099941B (zh) 2021-08-03
EP3798835A1 (en) 2021-03-31
EP3358463B1 (en) 2020-09-23
CN112099940A (zh) 2020-12-18
EP3798835B1 (en) 2024-07-24
WO2018035856A1 (zh) 2018-03-01
US20180059939A1 (en) 2018-03-01
EP3358463A1 (en) 2018-08-08
CN112099941A (zh) 2020-12-18
DK3358463T3 (da) 2020-11-16
CN107690622B (zh) 2020-08-07
CN112099940B (zh) 2024-11-05
US10365830B2 (en) 2019-07-30
CN107690622A (zh) 2018-02-13
EP3358463A4 (en) 2018-11-21
CN107690622B9 (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
ES2830355T3 (es) Procedimiento, dispositivo y sistema para implementar el procesamiento de aceleración de hardware
US20220206969A1 (en) Data forwarding chip and server
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
ES2333519T3 (es) Una arquitectura de controlador de dispositivo de red.
US7783822B2 (en) Systems and methods for improving performance of a routable fabric
US10067900B2 (en) Virtualized I/O device sharing within a distributed processing node system
CN107729159A (zh) 一种共享内存的地址映射方法及装置
US20150169487A1 (en) Switch with synthetic device capability
US20240231615A1 (en) Apparatus and method for sanitizing a shared memory device or a memory expander
TW202240415A (zh) PCIe裝置及其操作方法
JP2005309553A (ja) 計算機
CN114253749A (zh) 一种交互方法、装置及电子设备和存储介质
US20090006702A1 (en) Sharing universal serial bus isochronous bandwidth between multiple virtual machines
US11119704B2 (en) System, apparatus and method for sharing a flash device among multiple masters of a computing platform
US8527745B2 (en) Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
CN100416527C (zh) 分区分配方法和计算机系统
KR20220132333A (ko) PCIe 인터페이스 장치 및 그 동작 방법
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법
Yin et al. A reconfigurable rack-scale interconnect architecture based on PCIe fabric
CN112131018A (zh) 微内核操作系统进程间快速通信方法
US8782304B2 (en) Method for enabling several virtual processing units to directly and concurrently access a peripheral unit
CN121029665A (zh) 数据处理装置及其控制方法、初始化方法和初始化装置