ES2645486T3 - Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso - (Peripheral Component Interconnect Express (PCIE)) - Google Patents

Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso - (Peripheral Component Interconnect Express (PCIE)) Download PDF

Info

Publication number
ES2645486T3
ES2645486T3 ES14828761.8T ES14828761T ES2645486T3 ES 2645486 T3 ES2645486 T3 ES 2645486T3 ES 14828761 T ES14828761 T ES 14828761T ES 2645486 T3 ES2645486 T3 ES 2645486T3
Authority
ES
Spain
Prior art keywords
data
message
processor
posted write
queue
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
ES14828761.8T
Other languages
English (en)
Inventor
Norbert Egi
Guangyu Shi
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 ES2645486T3 publication Critical patent/ES2645486T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)

Abstract

Un método de comunicación de datos a través de un puenteado no transparente (NTB) de una interconexión de componentes periféricos expreso (PCIe) (171) que comprende: transmitir (301, 401) un primer mensaje "posted write" a un procesador remoto a través del NTB, en donde el primer mensaje "posted write" indica la intención de transferir los datos al procesador remoto; y recibir (307, 403) un segundo mensaje "posted write" en respuesta al primer mensaje "posted write", en donde el segundo mensaje "posted write" indica una lista de direcciones de destino para los datos.

Description

5
10
15
20
25
30
35
40
45
50
DESCRIPCION
Comunicacion internodal directa escalable sobre una interconexion de componentes perifericos expreso - (Peripheral Component Interconnect Express (PCIE)).
Antecedentes
Los centros de datos pueden comprender grandes grupos de servidores. Los servidores de los centros de datos pueden aceptar solicitudes de los usuarios y responder a dichas solicitudes. Por ejemplo, los servidores pueden alojar datos y transmitir dichos datos a un usuario bajo solicitud. Tambien se puede configurar un servidor para alojar procesos. Como tal, un usuario puede transmitir una solicitud a un servidor para realizar un proceso, el servidor puede realizar el proceso, y a continuacion el servidor puede responder al usuario con los resultados del proceso. Un servidor puede comprender varios componentes para procesar las solicitudes de usuario y comunicarse con el usuario. Dichos servidores se pueden interconectar utilizando diferentes tecnicas y dispositivos de red. Por ejemplo, un servidor se puede colocar en un chasis y se puede interconectar con otros servidores en otro chasis utilizando la capa dos del modelo de interconexion de sistemas abiertos (Open Systems Interconection (OSI)) (por ejemplo, el control de acceso a medios (Media Access Control (MAC)) y/o tecnicas de la capa tres (por ejemplo, el protocolo internet (Internet Protocol (IP)).
El documento US 2009/248941A1 describe un metodo y una arquitectura de procesador de proposito especial punto a punto, que incluye un sistema con multiples procesadores de proposito especial acoplados a, al menos, una unidad de procesamiento central por medio de un bus de puenteado anfitrion. Un bus directo acopla directamente cada uno de los multiples procesadores de proposito especial a, al menos, otro de los multiples procesadores de proposito especial. Un controlador de memoria se acopla a los multiples procesadores de proposito especial y el controlador de memoria determina si transmitir los datos a traves del bus anfitrion o el bus directo y si recibir los datos a traves del bus anfitrion o el bus directo.
Resumen
En una forma de realizacion, la descripcion incluye un metodo de comunicacion de datos sobre un puenteado no transparente (Non-Transparent Bridge (NTB)) de la interconexion de componentes perifericos expreso (PCIe) que comprende transmitir un primer mensaje “posted write” a un procesador remoto a traves del NTB, en donde el primer mensaje “posted write” indica una intencion de transferir datos al procesador remoto y recibir un segundo mensaje “posted write” en respuesta al primer mensaje “posted write”, en donde el segundo mensaje “posted write” indica una lista de direcciones de destino para los datos.
En otra forma de realizacion, la descripcion incluye un metodo de comunicacion de datos sobre un NTB PCIe que comprende transmitir un primer mensaje “posted write” a un procesador remoto a traves del NTB, en donde el primer mensaje “posted write” comprende una solicitud para leer datos y recibir un mensaje de transferencia de datos que comprende al menos algunos de los datos solicitados por el primer mensaje “posted write”.
En otra forma de realizacion, la descripcion incluye un procesador, que comprende un modulo de transferencia de datos (234), que se configura para implementar una cola de recepcion, una cola de transmision y una cola de finalizacion;
y el procesador se configura para acoplarse a un NTB PCIe y leer datos de y escribir datos en varios procesadores remotos a traves de la cola de recepcion, la cola de transmision, la cola de finalizacion y el NTB PCIe utilizando unicamente mensajes “write posted” y sin utilizar mensajes “non-posted”.
Estas y otras caractensticas se comprenderan mas claramente a partir de la siguiente descripcion detallada tomada en conjunto con los dibujos y reivindicaciones adjuntas.
Breve descripcion de los dibujos
Para una comprension mas completa de esta descripcion, se hace ahora referencia a la siguiente breve descripcion, tomada en relacion con los dibujos adjuntos y la descripcion detallada, en donde los numeros de referencia similares representan partes similares.
La FIG. 1 es un diagrama esquematico de una forma de realizacion de una arquitectura de red de centro de datos desagregados.
La FIG. 2 es un diagrama esquematico de una forma de realizacion de un elemento de red (Network element (NE)), que puede actuar como un nodo dentro de una arquitectura de red de centro de datos desagregados.
La FIG. 3 es un diagrama de protocolo de una forma de realizacion de un metodo de escritura de datos utilizando unicamente mensajes “write post”.
La FIG. 4 es un diagrama de flujo de una forma de realizacion de otro metodo de escritura de datos utilizando unicamente mensajes “write post”.
5
10
15
20
25
30
35
40
45
50
55
La FIG. 5 un diagrama de protocolo de una forma de realizacion de un metodo de lectura de datos utilizando unicamente mensajes “write post” cuando se conoce el tamano de los datos.
La FIG. 6 un diagrama de protocolo de una forma de realizacion de un metodo de lectura de datos utilizando unicamente mensajes “write post” cuando se desconoce el tamano de los datos.
La FIG. 7 es un diagrama de flujo de otra forma de realizacion de un metodo de lectura de datos utilizando unicamente mensajes “write post”.
Descripcion detallada
En contraste con una arquitectura de centro de datos que comprende varios servidores autonomos, una arquitectura de centro de datos desagregados se puede emplear para dar soporte a conjuntos de modulos de recursos. Dichos modulos de recursos se pueden no colocar en un chasis comun y se pueden interconectar de una manera que permita el intercambio de recursos dinamico. Dichos modulos tambien se pueden disenar para la compatibilidad retroactiva de tal manera que las actualizaciones de los centros de datos se puedan acometer sobre una base de modulo por modulo con un buen nivel de detalle en lugar de sobre una base de servidor por servidor mas cara. Por ejemplo, un centro de datos que comprenda recursos de procesado insuficientes se puede equipar con un unico modulo de procesado adicional en lugar de actualizarlo con un servidor completo que comprenda procesadores, memoria, circuitos de aceleracion de procesos dedicados, una tarjeta de interfaz de red (Network Interface Card (NIC)), etc. En una arquitectura desagregada, los modulos de recursos se pueden conectar a traves de una interconexion unificada. Una interconexion unificada de este tipo se puede implementar utilizando interconexion de componentes perifericos expreso (PCIe). Los modulos de procesado conectados a traves de PCIe pueden emplear cada uno un espacio de direcciones de memoria significativo localmente. Dichos modulos de procesado se pueden conectar a traves de un puenteado no transparente (NTB) PCIe, que puede traducir las direcciones significativas localmente a direcciones entendidas por la totalidad de la red y/o a un espacio de direcciones empleado por un modulo de procesado remoto. Cada procesador se puede asociar con un identificador solicitante (ID).
Los sistemas PCIe pueden emplear mensajes “posted” y mensajes “non-posted”. Un mensaje “posted” puede ser un mensaje que se puede tratar mediante hardware asociado ya que no requiere una respuesta. Los mensajes de escritura en memoria pueden ser mensajes “posted”. Un mensaje “non-posted” puede ser un mensaje que se puede tratar mediante hardware asociado ya que se requiere una respuesta. Los mensajes de lectura de memoria, los mensajes de lectura y/o escritura de entrada salida (E/S) y/o los mensajes de lectura y/o escritura de configuracion pueden ser mensajes “non-posted”. Un NTB puede enrutar mensajes almacenando con estado un ID solicitante asociado con cada mensaje “non-posted” en una tabla de busqueda de ID solicitantes (requestor ID Look-Up Table (R-LUT)). Despues de recibir una respuesta a un mensaje de solicitud “non-posted”, el NTB puede emplear la R-LUT para determinar con que mensaje de solicitud esta asociada la respuesta y determinar donde enviar la respuesta. Las tablas LUT-R NTB se pueden no disenar para soportar la interconexion a gran escala. Por ejemplo, una R-LUT NTB puede comprender espacio de memoria insuficiente para soportar mas de treinta y dos procesadores conectados simultaneamente. Como tal, la R-LUT NTB PCIe puede crear dificultades en la implementacion de conjuntos de recursos de procesamiento a gran escala en una arquitectura de centro de datos desagregados.
En la presente memoria se describe un mecanismo para evitar la R-LUT NTB PCIe de una manera retrocompatible para permitir la creacion de conjuntos de recursos de procesamiento a gran escala. Cada procesador se puede configurar para comunicarse exclusivamente con mensajes “posted” (por ejemplo, escrituras de memoria) ya que dichos mensajes pueden no utilizar todas las entradas disponibles en la R-LUT NTB PCIe. La gestion de dichos mensajes “posted” se puede llevar a cabo a nivel de software (por ejemplo, en lugar de a nivel de hardware) de manera que dichos mensajes “posted” pueden o no generar respuestas segun sea necesario. Cada procesador se puede configurar para incluir una cola de recepcion (RX), una cola de transmision (TX) y una cola de finalizacion. Cada mensaje “posted” se puede analizar en base al contenido del mensaje y colocar en una cola asociada. El procesador puede actuar a continuacion sobre cada mensaje en base a la cola a la que se ha asignado el mensaje. Por ejemplo, los mensajes que indican que el procesador debe prepararse para recibir una transferencia de datos se pueden colocar en la cola RX. Los mensajes que indican que el procesador debe prepararse para realizar una transferencia de datos se pueden colocar en la cola TX. Los mensajes que indican que ha sido finalizada la transferencia de datos se pueden colocar en la cola de finalizacion. Mediante el empleo de las colas RX, TX y de finalizacion, un procesador puede configurar y realizar transferencias de datos (por ejemplo, lecturas y escrituras de datos) con otros procesadores sobre un NTB utilizando unicamente mensajes “posted” (por ejemplo, mensajes de escritura) y puede evitar de este modo las limitaciones de escalabilidad asociadas con el NTB R-LUT. Aunque los mecanismos descritos en la presente memoria se pueden emplear para dar soporte a una arquitectura de centro de datos desagregados, se debe senalar que se pueden emplear dichos mecanismos para dar soporte a la conectividad basada en PCIe en cualquier otra arquitectura de centro de datos, como los centros de datos basados en servidores.
La FIG. 1 es un diagrama esquematico de una forma de realizacion de una arquitectura de red de centro de datos desagregados 100. La red l0o puede comprender un conjunto de modulos de procesado 110, un conjunto de modulos de memoria de proceso 150, un conjunto de modulos de almacenamiento de datos 120, un conjunto de modulos de aceleracion de proceso 160 y un conjunto de modulos NIC 130 que se pueden conectar a traves de una red de interconexion unificada 170. Los modulos de procesado 110, los modulos de memoria de proceso 150, los
5
10
15
20
25
30
35
40
45
50
55
60
modulos de almacenamiento de datos 120, los modulos de aceleracion de proceso 160, los modulos NIC 130 y la red de interconexion unificada 170 se pueden colocar en un centro de datos comun y se pueden no colocar en un recinto comun (por ejemplo, cada modulo puede comprender un servidor separado, un servidor blade, un elemento de red, un chasis, etc.). Cada conjunto de modulos puede comprender varios modulos de recursos configurados cada uno para realizar una funcion comun. Los modulos de procesado 110 pueden cada uno compartir el acceso a los recursos de los otros modulos a traves de la red de interconexion unificada 170. La red de interconexion unificada 170 puede emplear un protocolo comun a todos los modulos, tal como PCIe, lo que puede permitir que los modulos individuales se actualicen, anadan, y/o eliminen sin crear incompatibilidad de modulos. La capacidad de los modulos de procesado 110 para compartir recursos tambien puede permitir el equilibrio de la carga de recursos y puede reducir los cuellos de botella del proceso.
Cada modulo (por ejemplo, los modulos de procesado 110, los modulos de memoria de proceso 150, los modulos de almacenamiento de datos 120, los modulos de aceleracion de proceso 160 y/o los modulos NIC 130) puede comprender y/o consistir esencialmente en los componentes necesarios para realizar una parte de una tarea y se puede colocar en un NE separado de todos los otros modulos. Por ejemplo, los modulos de procesado 110 pueden comprender y/o consistir esencialmente en un procesador 115, que puede ser un unico procesador y/o un grupo de procesadores. El modulo de procesado 110 tambien puede opcionalmente comprender y/o consistir esencialmente en memoria de proceso local 117 y de almacenamiento local 113, asf como componentes de transmision para conectarse a la red de interconexion unificada 170 y los componentes relacionados con la alimentacion. Los modulos de procesado 110 se pueden colocar en un servidor blade, que puede ser menos costoso y ffsicamente mas pequeno que los servidores en bastidor y puede no poder proporcionar la funcionalidad completa sin acceso a la red de interconexion unificada 170. Los modulos de procesado 110 pueden operar para gestionar las tareas de los centros de datos tfpicas tales como gestionar el almacenamiento de datos, alojar los procesos, responder las consultas de clientes, etc.
La red 100 puede comprender un conjunto de modulos de memoria de proceso 150, que puede comprender y/o consistir esencialmente en memoria (por ejemplo, memoria de acceso aleatorio (Random Access Memory (RAM)), memoria cache del procesador, etc.) que pueden almacenar datos del procesador relacionados con los procesos activos. Los modulos de memoria de proceso 150 pueden comprender recursos de almacenamiento que se pueden asignar a un procesador particular 115, un modulo de procesado particular 110 y/o intercambiar por varios modulos de procesado 110. La asignacion de modulos de memoria 150 se puede cambiar dinamicamente en base a las necesidades de la red 100 en un momento especificado. Un modulo de memoria de proceso 150 se puede colocar en un servidor blade. Por ejemplo, un modulo de memoria de proceso 150 puede consistir esencialmente en memoria, componentes de transmision para dar soporte a la conexion con la red de interconexion unificada 170 y componentes de potencia.
La red 100 puede comprender un conjunto de modulos de almacenamiento de datos 120, que puede comprender y/o consistir esencialmente en dispositivos de almacenamiento de datos configurados para el almacenamiento a largo plazo (por ejemplo, unidades de disco, unidades de estado solido, matriz redundante de discos independientes (Redundant Array of Independent Disk (RAID)), etc.) Los modulos de almacenamiento de datos 120 pueden comprender recursos de almacenamiento que se pueden asignar a un procesador particular 115, un modulo de procesado particular 110 y/o compartir por varios modulos de procesado 110. La asignacion de modulos de almacenamiento de datos 120 se puede cambiar dinamicamente en base a las necesidades de la red 100 en un momento especificado. Un modulo de almacenamiento de datos 120 se puede colocar en un servidor blade. Por ejemplo, un modulo de almacenamiento de datos 120 puede consistir esencialmente en dispositivo(s) de almacenamiento de datos, componentes de transmision para dar soporte a la conexion con la red de interconexion unificada 170 y componentes de potencia.
La red 100 puede comprender un conjunto de modulos de aceleracion de proceso 160, que puede comprender y/o consistir esencialmente en aceleradores de proceso, tales como los circuitos integrados de aplicacion espedfica (Application Specific Integrated Circuits (ASIC)) 163, las matrices de puertas programables en campo (Field Programmable Gate Array (FPGA)) 162, las unidades de procesamiento grafico (Graphics Processing Units (GPU)) 161, los procesadores de senales digitales (Digital Signal Processor (DSP)), etc. Los aceleradores de proceso se pueden optimizar para una tarea espedfica y pueden realizar dichas tareas espedficas de forma mas rapida y/o eficiente que una unidad de procesamiento general (por ejemplo, los procesadores 115). Un procesador 115 puede desear descargar todo o parte de un proceso particular y puede transmitir una solicitud de recursos a los modulos de aceleracion de proceso 160 y los modulos de aceleracion de proceso 160 pueden emplear los aceleradores de proceso para completar el proceso y transmitir los datos resultantes de vuelta al procesador 115 solicitante. Los modulos de aceleracion de proceso 160 pueden comprender recursos de procesamiento que se pueden asignar a un procesador particular 115, un modulo de procesado 110 particular y/o compartir por varios modulos de procesado 110. La asignacion de un modulo de aceleracion de proceso 160 se puede cambiar dinamicamente en base a las necesidades de la red 100 en un momento especificado. Un modulo de aceleracion de proceso 160 se puede colocar en un servidor blade. Por ejemplo, un modulo de aceleracion de proceso 160 puede consistir esencialmente en un acelerador de proceso (por ejemplo, el ASIC 163, la FPGA 162 y/o la GPU 161), componentes de transmision para dar soporte a la conexion con la red de interconexion unificada 170 y componentes de potencia.
5
10
15
20
25
30
35
40
45
50
55
60
La red 100 puede comprender un conjunto de modulos NIC 130, que pueden comprender y/o consistir esencialmente en NIC configuradas para comunicarse con una red principal de centro de datos 140, el internet y/o un dispositivo cliente local 145 en nombre de los otros modulos. Como un ejemplo, los modulos NIC 130 pueden comprender recursos de conectividad que se pueden distribuir a un procesador particular 115, un modulo de procesado particular 110 y/o compartir por varios modulos de procesado 110. La asignacion de un modulo NIC 130 y/o los recursos de modulos NIC 130 se pueden cambiar dinamicamente en base a las necesidades de la red 100 en un momento especificado. Como otro ejemplo, los modulos NIC 130 se pueden configurar para comunicarse con la red principal en nombre de los modulos de procesado 110, los modulos de aceleracion de proceso 160, los modulos de memoria de proceso 150, los modulos de almacenamiento 120 o combinaciones de los mismos. Como tal, un modulo de procesado 110 puede dirigir otros modulos a comunicar la salida directamente al NIC 130 sin volver a un modulo de procesado 110. Un modulo NIC 130 se puede colocar en un servidor blade. Por ejemplo, un modulo NIC 130 puede consistir esencialmente en NIC para la comunicacion con la red principal 140, componentes de transmision para dar soporte a la conexion con la red de interconexion unificada 170 y componentes de potencia. Los modulos NIC tambien pueden implementar el acceso remoto directo a memoria (Remote Direct Memory Access (RDMA)).
Los conjuntos de modulos (por ejemplo, los modulos de procesado 110, los modulos de memoria de proceso 150, los modulos de almacenamiento de datos 120, los modulos de aceleracion de proceso 160 y/o los modulos NIC 130) se pueden interconectar mediante una red de interconexion unificada 170. La red de interconexion unificada 170 puede transportar las comunicaciones entre los modulos y/o conjuntos de una manera sin bloqueos. La red de interconexion unificada 170 puede comprender cualquier hardware y/o protocolos que puedan ser compatibles con todos los modulos. Por ejemplo, la red de interconexion unificada 170 puede comprender una red PCI-e. La red de interconexion unificada 170 se puede no restringir a un modulo particular (por ejemplo, colocado dentro de un servidor blade) y/o chasis y se puede enrutar a traves de un centro de datos. Los modulos que comprenden componentes que no dan soporte de forma nativa a conexiones a traves de la red de interconexion unificada 170 pueden comprender procesadores y/u otros componentes de conexion para dar soporte a la interconectividad.
La red de interconexion unificada 170 puede, por ejemplo, comprender varios NTB 171 compatibles con PCIe. Un NTB 171 puede actuar como puerta de enlace para las comunicaciones que pasan entre un procesador particular 115 y/o el modulo de procesado 110 y la interconexion unificada 170. Aunque cada procesador 115 y/o el modulo de procesado 110 se pueden conectar a un NTB 171 logico dedicado, multiples NTB 171 se pueden o no colocar en un dispositivo ffsico unico (no mostrado). Cada procesador 115 y/o modulo de procesado 110 puede comprender un espacio de direccion de memoria localmente significativo que puede no ser reconocido por otros procesadores 115, modulos de procesado 110 y/u otros dispositivos de red 100. Cada NTB 171 se puede configurar para realizar la traduccion de las direcciones de red en nombre del procesador 115 y/o el modulo de procesado 110 para permitir la comunicacion con otros procesadores y/o modulos. Por ejemplo, un primer NTB 171 conectado a un primer procesador 115 puede traducir los mensajes dirigidos en el espacio de direcciones del primer procesador 115 a un espacio de direcciones comprendido a traves de la interconexion unificada 170 y viceversa. Del mismo modo, un segundo NTB 171 puede realizar las mismas traducciones para un segundo procesador 115 conectado, que puede permitir la comunicacion entre el primer procesador 115 y el segundo procesador 115 a traves de la traduccion de direcciones en el primer NTB 171 y el segundo NTB 171.
Los procesadores 115 y/o modulos de procesado 110 pueden comunicarse a traves de los NTB 171 a traves de mensajes “posted” y mensajes “non-posted”. Un mensaje “posted” puede no requerir una respuesta, mientras que un mensaje “non-posted” puede requerir una respuesta. Un NTB 171 puede comprender una R-LUT. Cuando se recibe un mensaje “non-posted”, por ejemplo, desde un procesador remoto, un NTB 171 puede almacenar una ID de solicitante asociado con el procesador remoto en la R-LUT. Despues de recibir una respuesta al mensaje “non- posted”, por ejemplo, desde un procesador local, la NTB 171 puede consultar la R-LUT para determinar donde enviar la respuesta. Los NTB 171 R-LUT pueden ser con estados y se pueden disenar para dar soporte a un numero relativamente pequeno de procesadores (por ejemplo, un maximo de ocho o treinta y dos). Como tal, una NTB 171 R-LUT puede evitar la escalabilidad de la red 100 mas alla de treinta y dos modulos de procesado 110. Sin embargo, los procesadores 115 se pueden configurar para evitar la R-LUT empleando solamente mensajes “posted”, lo que puede permitir la escalabilidad hasta aproximadamente sesenta y cuatro mil procesadores. Para gestionar las transacciones utilizando unicamente mensajes “posted”, pueden ser necesarios procesadores 115 y/o modulos de procesado 110 para gestionar las comunicaciones en el nivel de software en lugar de en el nivel de hardware. Por ejemplo, un procesador 115 se puede configurar con una cola RX, una cola TX y una cola de finalizacion. La(s) cola(s) RX, cola(s) TX y cola(s) de finalizacion se puede(n) configurar como colas “Primero en entrar, primero en salir (First In First Out (FIFO))”. Los procesadores 115 se pueden configurar para reconocer que un mensaje “posted write” puede no invocar una escritura y puede llevar, en cambio, otra informacion. Los procesadores 115 pueden analizar el contenido de un mensaje entrante (por ejemplo, paquete de datos) y colocar el mensaje en una cola de acuerdo con el contenido de los mensajes, por ejemplo, en base a la direccion y/o en base a un comando codificado en la carga util del mensaje. Los mensajes relacionados con una transmision inminente de datos se pueden colocar en la cola TX, los mensajes relacionados con una recepcion inminente de datos se pueden colocar en la cola RX y los mensajes relacionados con la finalizacion de una transaccion se pueden colocar en una cola de finalizacion. El procesador 115 y/o modulos de procesado 110 pueden a continuacion tratar cada mensaje en base a la cola a la que se ha asignado el mensaje.
5
10
15
20
25
30
35
40
45
50
55
60
La FIG. 2 es un diagrama esquematico de una forma de realizacion de un NE 200, que puede actuar como un nodo (por ejemplo, un modulo de procesado 110) dentro de una arquitectura de red de centro de datos desagregados, tal como una arquitectura de red de centro de datos desagregados 100. Un experto en la tecnica reconocera que el termino NE abarca un amplio rango de dispositivos de los que el NE 200 es meramente un ejemplo. El NE 200 se incluye para fines de claridad de la descripcion, pero de ninguna manera se pretende limitar la aplicacion de la presente descripcion a una forma de realizacion particular del NE o clase de formas de realizacion del NE. Al menos algunas de las caractensticas/metodos descritos en la descripcion se pueden implementar utilizando un aparato o componente de red tal como un NE 200. Por ejemplo, las caractensticas/metodos en la descripcion se pueden implementar utilizando hardware, firmware y/o software instalado para ser ejecutado con el hardware. El NE 200 puede ser cualquier dispositivo que transporte tramas a traves de una red, por ejemplo, un conmutador, un enrutador, un puenteado, un servidor, un cliente, etc. Segun se muestra en la FIG. 2, el NE 200 puede comprender transceptores (Tx/Rx) 210, que pueden ser transmisores, receptores o combinaciones de los mismos. Un Tx/Rx 210 se puede acoplar a varios puertos aguas abajo 220 para transmitir y/o recibir tramas desde otros nodos, un Tx/Rx 210 acoplado a varios puertos aguas arriba 250 para transmitir y/o recibir tramas desde otros nodos. Un procesador 230 se puede acoplar a los Tx/Rx 210 para procesar las tramas y/o determinar a que nodos enviar tramas. El procesador 230 puede comprender uno o mas procesadores multinucleo y/o dispositivos de memoria 232, que pueden funcionar como almacenes de datos, buferes, etc. El procesador 230 se puede implementar como un procesador general o puede ser parte de uno o mas ASIC y/o DSP. El procesador 230 puede comprender un modulo de transferencia de datos 234, que puede implementar una cola RX, una cola TX, una cola de finalizacion y/o puede implementar leer y/o escribir operaciones utilizando unicamente mensajes post para evitar una R-LUT NTB PCIe. En una forma de realizacion alternativa, el modulo de transferencia de datos 234 se puede implementar como instrucciones almacenadas en la memoria 232, que se pueden ejecutar con el procesador 230. En otra forma de realizacion alternativa, el modulo de transferencia de datos 234 se puede implementar en NE separados. Los puertos aguas abajo 220 y/o los puertos aguas arriba 250 pueden contener componentes de transmision y/o recepcion electricos y/u opticos. El Ne 200 puede o no ser un componente de enrutamiento que tome decisiones de enrutamiento.
Se entiende que mediante programacion y/o carga de instrucciones ejecutables en el NE 200, se cambia al menos uno de, el procesador 230, el modulo de transferencia de datos 234, los puertos aguas abajo 220, los Tx/Rx 210, la memoria 232 y/o los puertos aguas arriba 250, transformando el NE 200 en parte en una maquina o aparato particular, por ejemplo, una arquitectura de reenvfo multinucleo, que tiene la nueva funcionalidad mostrada por la presente descripcion. Es fundamental para las tecnicas de la ingeniena de software y la ingeniena electrica que la funcionalidad que se puede implementar mediante carga de software ejecutable en un ordenador, se pueda convertir en una implementacion de hardware mediante reglas de diseno bien conocidas. Las decisiones entre implementar un concepto en software frente a hardware normalmente dependen de consideraciones de estabilidad de diseno y numeros de unidades a producir mas que de cualesquiera problemas relacionados con la traduccion desde el dominio del software al dominio del hardware. Generalmente, se puede preferir que un diseno que todavfa esta sujeto a cambios frecuentes se implemente con software, porque volver a hacer una implementacion de hardware es mas caro que volver a hacer un diseno de software. Generalmente, se puede preferir un diseno que sea estable que se producira en grandes volumenes para ser implementado en hardware, por ejemplo, en un ASIC, porque para producciones grandes ejecutar la implementacion con hardware puede ser menos costoso que la implementacion con software. A menudo, un diseno se puede desarrollar y probar en una forma con software y transformar posteriormente, mediante reglas de diseno bien conocidas, a una implementacion con hardware equivalente en un circuito integrado espedfico de aplicacion que predetermina las instrucciones del software. De la misma manera que una maquina controlada por un nuevo ASIC es una maquina o aparato particular, asimismo un ordenador que ha sido programado y/o cargado con instrucciones ejecutables se puede ver como una maquina o aparato particular.
La FIG. 3 es un diagrama de protocolo de una forma de realizacion de un metodo 300 de escritura de datos utilizando unicamente mensajes “write post”. Por ejemplo, el metodo 300 se puede implementar en un procesador (por ejemplo, el procesador 115) y/o en un modulo de procesado (por ejemplo, el modulo de procesado 110). Un procesador de este tipo, denominado en la presente memoria como un primer procesador, un procesador local y/o Procesador 1, puede desear escribir datos a otro procesador, denominado en la presente memoria como un segundo procesador, procesador remoto y/o Procesador 2, a traves de un NTB PCIe, como el NTB 171. Aunque el Procesador 1 puede operar en la red 100, se debe senalar que el Procesador 1 tambien se puede colocar en cualquier otra red basada en PCIe. El Procesador 2 puede o no ser, en el fondo, similar al Procesador 1 y puede o no ser colocado en el mismo chasis que el Procesador 1. El Procesador 1 y el Procesador 2 se pueden tanto configurar con una cola RX, una cola TX y una cola de finalizacion.
El Procesador 1 puede ser consciente del tamano de los datos a enviar al Procesador 2. En la etapa 301, el Procesador 1 puede transmitir un mensaje de escritura post (por ejemplo, un paquete de datos) al Procesador 2. El mensaje de escritura post de la etapa 301 puede comprender informacion relacionada con los datos a enviar y puede incluir el tamano de los datos. Como el Procesador 1 puede desear que el Procesador 2 reciba los datos, el mensaje de escritura post de la etapa 301 se puede transmitir a la cola RX del Procesador 2, por ejemplo, en base a una direccion asociada con la cola o basada en un comando codificado en la carga util del mensaje. Una vez que el mensaje de la etapa 301 llega a la parte delantera de la cola RX, el Procesador 2 puede realizar la etapa 303 asignando memoria para recibir los datos en base al tamano de los datos. El Procesador 2 tambien puede fijar
5
10
15
20
25
30
35
40
45
50
55
60
paginas virtuales asociadas para evitar que dichas paginas y datos asociados se intercambien (por ejemplo, se eliminen de la memoria a un disco duro) antes de finalizar la escritura indicada en la etapa 301. En la etapa 305, el Procesador 2 puede crear una lista de direcciones de destino, tal como una Lista de dispersion asociacion (Scatter Gather List (SGL)), que comprende las direcciones de las ubicaciones de memoria asignadas para recibir los datos transmitidos. En la etapa 307, el Procesador 2 puede transmitir un mensaje de escritura post al Procesador 1. El mensaje de escritura post de la etapa 307 puede comprender la lista de direcciones de memoria de destino (por ejemplo, segun se genera en la etapa 305). Como el mensaje de escritura post de la etapa 307 se puede referir a una transmision de datos desde el Procesador 1, el mensaje de escritura post se puede transmitir a la cola TX del Procesador 1. Una vez que el mensaje de la etapa 307 llega a la parte delantera de la cola TX, el Procesador 1 puede realizar la etapa 309 moviendo los datos a las direcciones de memoria enumeradas en la lista de direcciones de destino. La Etapa 307 se puede realizar transmitiendo mensaje(s) de escritura post que comprenden los datos, empleando Acceso Directo a Memoria (Direct Memory Access (DMA)), etc. En la etapa 311, el Procesador 1 puede transmitir un mensaje de escritura post al Procesador 2 indicando que la transferencia de datos asociada ha sido finalizada. Como el mensaje de escritura post de la etapa 311 se refiere a un mensaje de finalizacion, el mensaje de escritura post de la etapa 311 se puede transmitir a la cola de finalizacion del Procesador 2. Despues de recibir todos los datos, el Procesador 2 tambien puede transmitir un mensaje de finalizacion de escritura post al Procesador 1 en la etapa 313. El mensaje de la etapa 313 puede indicar que todos los datos han sido recibidos por el Procesador 2. Como el mensaje de escritura post de la etapa 313 se refiere a un el mensaje de finalizacion, el mensaje de escritura post de la etapa 313 se puede transmitir a la cola de finalizacion del Procesador 1. La etapa 313 puede ser opcional. La etapa 313 se ilustra como una flecha discontinua en la FIG. 3 para indicar la naturaleza opcional de la etapa 313.
La FIG.4 es un diagrama de flujo de una forma de realizacion de otro metodo 400 de escritura de datos utilizando unicamente mensajes “write post”. El metodo 400 se puede implementar con un procesador local (por ejemplo, un Procesador 1) que desee escribir datos en un procesador remoto (por ejemplo, el Procesador 2), ambos de los cuales pueden ser, en el fondo, similares a los procesadores descritos con referencia al metodo 300. En la etapa 401, un mensaje de escritura post se puede transmitir a una cola de recepcion en un procesador remoto (por ejemplo, el Procesador 2). El mensaje de la etapa 401 puede indicar una intencion de mover datos junto con el tamano de los datos a transferir. En la etapa 403, se puede recibir un mensaje de escritura post del procesador remoto. El mensaje de escritura post de la etapa 403 puede comprender una SGL de direcciones de destino y se puede colocar en una cola de transmision. En la etapa 405, se pueden emplear mensaje(s) de escritura post y/o DMA para transmitir los datos a las ubicaciones de memoria remotas indicadas en la SGL. En la etapa 407, un mensaje de escritura post se puede transmitir a una cola de finalizacion en el procesador remoto. El mensaje de la etapa 407 puede indicar que la transferencia de datos ha finalizado. En la etapa 409, se puede recibir un mensaje de escritura post en una cola de finalizacion. El mensaje de escritura post de la etapa 409 puede indicar que los datos han sido completamente recibidos en las ubicaciones de memoria remotas especificadas por la SGL recibida en la etapa 403.
La FIG. 5 es un diagrama de protocolo de una forma de realizacion de un metodo 500 de lectura de datos utilizando unicamente mensajes “write post” cuando se conoce el tamano de datos. El metodo 500 se puede implementar con un procesador local (por ejemplo, un Procesador 1) que desee leer datos de un procesador remoto (por ejemplo, el Procesador 2), ambos de los cuales pueden ser, en el fondo, similares a los procesadores descritos con referencia a los metodos 300 y/o 400. En la etapa 505, el Procesador 1 puede ser ya consciente del tamano de los datos a solicitar. El Procesador 1 puede ser consciente del tamano de datos como resultado de otros protocolos, debido a un mensaje recibido previamente, porque un proceso relacionado que inicia la solicitud ha indicado el tamano de datos, etc. El Procesador 1 puede asignar memoria asociada y/o fijar paginas de una manera similar a la etapa 303 en base al conocimiento previo del procesador del tamano de los datos a solicitar. En la etapa 507, el Procesador 1 puede crear una lista de direcciones de destino para los datos de una manera similar a la etapa 305. En la etapa 509, el Procesador 1 puede transmitir un mensaje de escritura post al Procesador 2. El mensaje de escritura post de la etapa 509 puede comprender una solicitud para leer datos, una indicacion de los datos a leer y la lista de direcciones de destino creada en la etapa 507. Como el mensaje de escritura post de la etapa 509 se puede referir a una transmision desde el Procesador 2, el mensaje de escritura post de la etapa 509 se puede transmitir a la cola TX del Procesador 2. En la etapa 511, el Procesador 2 puede transmitir los datos solicitados a la(s) direccion(es) de destino en la direccion de destino por medio de DMA, mensajes “write post” adicionales, etc., de una manera similar a la etapa 309. En la etapa 513, el Procesador 2 puede transmitir un mensaje de escritura post que indica la finalizacion de la transferencia de una manera similar a la etapa 311. El mensaje de escritura post de la etapa 513 se puede transmitir a la cola de finalizacion del Procesador 1. Opcionalmente, el Procesador 1 puede transmitir un mensaje de escritura post de finalizacion a la cola de finalizacion del Procesador 2 en la etapa 515 de una manera similar a la etapa 313.
La FIG. 6 es un diagrama de protocolo de una forma de realizacion de un metodo de lectura de datos utilizando unicamente mensajes “write post” cuando se desconoce el tamano de los datos. El metodo 600 se puede implementar con un procesador local (por ejemplo, un Procesador 1) que desea leer datos de un procesador remoto (por ejemplo, el Procesador 2), ambos de los cuales pueden ser, en el fondo, similares a los procesadores descritos con referencia a los metodos 300, 400 y/o 500. El metodo 600 puede ser, en el fondo, similar al metodo 500, pero se puede implementar cuando el Procesador 1 no es consciente del tamano de los datos a solicitar. En la etapa 601, el
5
10
15
20
25
Procesador 1 puede transmits un mensaje de escritura post que indique la intencion de leer datos del Procesador 2 e identifique los datos a leer. Como el mensaje de escritura post de la etapa 601 se puede referir a una transmision con el Procesador 2, el mensaje de escritura post de la etapa 601 se puede enrutar a la cola TX del Procesador 2. Una vez que el mensaje de la etapa 601 llega a la parte delantera de la cola TX, el Procesador 2 puede continuar a la etapa 603 y transmitir un mensaje de escritura post al Procesador 1 que indica el tamano de los datos a leer. Como el mensaje de escritura post de la etapa 603 se puede referir a los datos a recibir por Procesador 1, el mensaje de la etapa 603 se puede enviar a la cola RX del Procesador 1. Una vez que el mensaje de la etapa 603 llega a la parte delantera de la cola RX, el Procesador 1 puede continuar con la etapa 605. Las etapas 605, 607, 609, 611, 613 y 615 pueden ser, en el fondo, similares a las etapas 505, 507, 509, 511, 513 y 515.
La FIG. 7 es un diagrama de flujo de otra forma de realizacion de un metodo 700 de lectura de datos utilizando unicamente mensajes “write post”. El metodo 700 se puede implementar con un procesador local (por ejemplo, un Procesador 1) que desee leer datos de un procesador remoto (por ejemplo, el Procesador 2), ambos de los cuales pueden ser, en el fondo, similares a los procesadores descritos con referencia a los metodos 300, 400, 500 y/o 600. En la etapa 701, el metodo 700 puede determinar si se conoce el tamano de los datos a leer. El metodo 700 puede continuar a la etapa 707 si se conoce el tamano de los datos y la etapa 703 si el tamano de los datos se desconoce. En la etapa 703, se puede transmitir un mensaje de escritura post a una cola de transmision en un procesador remoto. El mensaje de la etapa 703 puede indicar la intencion de leer datos y solicitar informacion relacionada con un tamano de los datos asociados. En la etapa 705, se puede recibir un mensaje de escritura post en una cola de recepcion. El mensaje de la etapa 705 puede indicar la el tamano de los datos solicitados. El metodo 700 puede a continuacion continuar a la etapa 707. En la etapa 707, la memoria se puede asignar para recibir los datos en base al tamano de los datos, se pueden fijar las paginas asociadas y se puede crear una sGl de direcciones de memoria asignadas. En la etapa 709, un mensaje de escritura post que comprende la SGL de direcciones de destino se puede transmitir a la cola de transmision del procesador remoto. En la etapa 711, se pueden recibir el(los) mensaje(s) de escritura post y/o mensajes DMA que comprenden los datos solicitados en las direcciones de destino listadas en la SGL. En la etapa 713, se puede recibir un mensaje de escritura post en una cola de finalizacion y puede indicar que la transferencia de datos ha finalizado. Opcionalmente, en la etapa 715, se puede transmitir un mensaje de escritura post a una cola de finalizacion en el procesador remoto. El mensaje de escritura post de la etapa 715 puede indicar que los datos han sido recibidos completamente en las direcciones de destino.

Claims (14)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    REIVINDICACIONES
    1. Un metodo de comunicacion de datos a traves de un puenteado no transparente (NTB) de una interconexion de componentes perifericos expreso (PCIe) (171) que comprende:
    transmitir (301, 401) un primer mensaje “posted write” a un procesador remoto a traves del NTB, en donde el primer mensaje “posted write” indica la intencion de transferir los datos al procesador remoto; y
    recibir (307, 403) un segundo mensaje “posted write” en respuesta al primer mensaje “posted write”, en donde el segundo mensaje “posted write” indica una lista de direcciones de destino para los datos.
  2. 2. El metodo de la reivindicacion 1, que comprende ademas transmitir (309, 405) un tercer mensaje “posted write” a una direccion de destino obtenida de la lista de direcciones de destino del segundo mensaje “posted write”, en donde el tercer mensaje “posted write” comprende los datos.
  3. 3. El metodo de la reivindicacion 1, que comprende ademas transmitir (309, 405) los datos a una direccion de destino obtenida de la lista de direcciones de destino del segundo mensaje “posted write” a traves de acceso directo a memoria (DMA).
  4. 4. El metodo de la reivindicacion 1, que comprende ademas transmitir (311, 407) un cuarto mensaje “posted write” al procesador remoto para indicar la finalizacion de una transferencia de los datos.
  5. 5. El metodo de la reivindicacion 1, que comprende ademas recibir (313, 409) un quinto mensaje “posted write” del procesador remoto que indica la recepcion completa de los datos.
  6. 6. Un metodo de comunicar datos a traves de un puenteado no transparente (NTB) de una interconexion de componentes perifericos expreso (PCIe) que comprende:
    transmitir (509, 609) un primer mensaje “posted write” a un procesador remoto a traves del NTB, en donde el primer mensaje “posted write” comprende una solicitud de lectura de datos; y
    recibir (511, 611) un mensaje de transferencia de datos que es otro mensaje “posted write” que comprende al menos algunos de los datos solicitados por el primer mensaje “posted write”.
  7. 7. El metodo de la reivindicacion 6, en donde el primer mensaje “posted write” comprende una direccion de destino para los datos y en donde el mensaje de transferencia de datos se dirige a la direccion de destino.
  8. 8. El metodo de la reivindicacion 7, que comprende ademas recibir (513, 613) un segundo mensaje “posted write” del procesador remoto que indica la finalizacion de una transferencia de datos asociada con la solicitud de lectura del primer mensaje “posted write”.
  9. 9. El metodo de la reivindicacion 8, que comprende ademas transmitir (515, 615) un tercer mensaje “posted write” al procesador remoto que indica la completa recepcion de los datos asociados con la solicitud de lectura del primer mensaje “posted write”.
  10. 10. Un procesador (115) que comprende:
    un modulo de transferencia de datos (234) configurado para implementar una cola de recepcion, una cola de transmision y una cola de finalizacion;
    en donde el procesador (115) se configura para:
    acoplarse a un puenteado no transparente (NTB) de una interconexion de componentes perifericos expreso (PCIe) (171); y
    leer datos de y escribir datos en, varios procesadores remotos a traves de la cola de recepcion, la cola de transmision, la cola de finalizacion y el NTB PCIe (171) utilizando unicamente mensajes “posted write” y sin utilizar mensajes “non-posted”;
    en donde el procesador se configura ademas para:
    recibir mensajes “posted write” desde los varios procesadores remotos, indicando los mensajes “posted write” una lista de direcciones de destino para los datos;
    almacenar los mensajes “posted write” en la cola de recepcion, la cola de transmision y la cola de finalizacion en base al contenido de los mensajes “posted write”.
  11. 11. El procesador de la reivindicacion 10, en donde la cola de transmision comprende una estructura de datos primero en entrar, primero en salir (FIFO), y en donde los mensajes “posted write” que indican solicitudes para transmitir datos se almacenan en la cola de transmision.
  12. 12. El procesador de la reivindicacion 10, en donde la cola de recepcion comprende una estructura de datos primero en entrar, primero en salir (FIFO), y en donde los mensajes “posted write” que se dirigen el procesador para prepararse para recibir los datos se almacenan en la cola de recepcion.
  13. 13. El procesador de la reivindicacion 10, en donde la cola de finalizacion comprende una estructura de datos 5 primero en entrar, primero en salir (FIFO), y en donde los mensajes “posted write” que indican que una transferencia
    de datos ha sido finalizada se almacenan en la cola de finalizacion.
  14. 14. El procesador de la reivindicacion 10, en donde leer datos de y escribir datos en, los varios procesadores remotos a traves de la cola de recepcion, la cola de transmision, la cola de finalizacion se realiza sin emplear un protocolo de acceso remoto directo a memoria (RDMA).
    10
ES14828761.8T 2013-07-22 2014-07-22 Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso - (Peripheral Component Interconnect Express (PCIE)) Active ES2645486T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361857036P 2013-07-22 2013-07-22
US201361857036P 2013-07-22
US201314089377 2013-11-25
US14/089,377 US9910816B2 (en) 2013-07-22 2013-11-25 Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
PCT/CN2014/082724 WO2015010603A1 (en) 2013-07-22 2014-07-22 Scalable direct inter-node communication over peripheral component interconnect-express (pcie)

Publications (1)

Publication Number Publication Date
ES2645486T3 true ES2645486T3 (es) 2017-12-05

Family

ID=52344553

Family Applications (2)

Application Number Title Priority Date Filing Date
ES17184635T Active ES2720256T3 (es) 2013-07-22 2014-07-22 Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso ¿ (Peripheral Component Interconnect Express (PCIE))
ES14828761.8T Active ES2645486T3 (es) 2013-07-22 2014-07-22 Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso - (Peripheral Component Interconnect Express (PCIE))

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES17184635T Active ES2720256T3 (es) 2013-07-22 2014-07-22 Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso ¿ (Peripheral Component Interconnect Express (PCIE))

Country Status (7)

Country Link
US (2) US9910816B2 (es)
EP (2) EP3025241B1 (es)
CN (1) CN105556496B (es)
ES (2) ES2720256T3 (es)
HU (2) HUE035246T2 (es)
RU (1) RU2637428C2 (es)
WO (1) WO2015010603A1 (es)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250831B1 (en) * 2013-03-14 2016-02-02 Inphi Corporation Isolated shared memory architecture (iSMA)
US9910816B2 (en) 2013-07-22 2018-03-06 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
US9806904B2 (en) * 2015-09-08 2017-10-31 Oracle International Corporation Ring controller for PCIe message handling
US20180165240A1 (en) * 2016-12-08 2018-06-14 Intel IP Corporation Interconnect network supporting multiple consistency mechanisms, multiple protocols, and multiple switching mechanisms
US10846126B2 (en) * 2016-12-28 2020-11-24 Intel Corporation Method, apparatus and system for handling non-posted memory write transactions in a fabric
CN107329917A (zh) * 2017-06-26 2017-11-07 郑州云海信息技术有限公司 一种数据传输方法及装置
US10372638B2 (en) * 2017-10-20 2019-08-06 Hewlett Packard Enterprise Development Lp Interconnect agent
US10802988B2 (en) 2018-09-25 2020-10-13 International Business Machines Corporation Dynamic memory-based communication in disaggregated datacenters
US10831698B2 (en) 2018-09-25 2020-11-10 International Business Machines Corporation Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters
US10671557B2 (en) 2018-09-25 2020-06-02 International Business Machines Corporation Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters
US10915493B2 (en) 2018-09-25 2021-02-09 International Business Machines Corporation Component building blocks and optimized compositions thereof in disaggregated datacenters
US11650849B2 (en) 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
US11182322B2 (en) 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US10637733B2 (en) 2018-09-25 2020-04-28 International Business Machines Corporation Dynamic grouping and repurposing of general purpose links in disaggregated datacenters
US20210294496A1 (en) * 2020-03-18 2021-09-23 Dell Products L.P. Data mirroring system
US11106607B1 (en) * 2020-03-31 2021-08-31 Dell Products L.P. NUMA-aware storage system
CN111966387B (zh) * 2020-10-22 2021-03-12 苏州浪潮智能科技有限公司 一种ntb卡的固件升级方法、装置、设备及存储介质

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037224B2 (en) * 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US20070220499A1 (en) * 2003-07-23 2007-09-20 Silicon Laboratories Inc. USB tool stick with multiple processors
US7421532B2 (en) * 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
US7487284B2 (en) * 2006-07-28 2009-02-03 Intel Corporation Transaction flow and ordering for a packet processing engine, located within an input-output hub
US8161209B2 (en) 2008-03-31 2012-04-17 Advanced Micro Devices, Inc. Peer-to-peer special purpose processor architecture and method
CN101299757A (zh) 2008-05-23 2008-11-05 华为技术有限公司 一种数据共享方法及通讯系统以及相关设备
CN101290605B (zh) * 2008-05-26 2011-11-02 华为技术有限公司 数据处理方法及通讯系统以及相关设备
CN101639811B (zh) 2009-08-21 2012-09-05 成都市华为赛门铁克科技有限公司 数据写入的方法、控制器和多控制器系统
CN101710314B (zh) 2009-11-17 2013-02-27 中兴通讯股份有限公司 高速外围部件互连交换控制器及其实现方法
US20110238909A1 (en) 2010-03-29 2011-09-29 Pankaj Kumar Multicasting Write Requests To Multiple Storage Controllers
RU101225U1 (ru) 2010-09-06 2011-01-10 Открытое акционерное общество "Научно-конструкторское бюро вычислительных систем" Вычислительно-интерфейсный модуль
CN102467479A (zh) * 2010-11-17 2012-05-23 英业达股份有限公司 主机间数据的传输方法
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8521941B2 (en) 2010-12-28 2013-08-27 Plx Technology, Inc. Multi-root sharing of single-root input/output virtualization
US9141571B2 (en) * 2010-12-28 2015-09-22 Avago Technologies General Ip (Singapore) Pte. Ltd. PCI express switch with logical device capability
US9779020B2 (en) * 2011-02-08 2017-10-03 Diablo Technologies Inc. System and method for providing an address cache for memory map learning
US9405550B2 (en) * 2011-03-31 2016-08-02 International Business Machines Corporation Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link
US8553683B2 (en) * 2011-07-05 2013-10-08 Plx Technology, Inc. Three dimensional fat tree networks
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
JP5909566B2 (ja) * 2012-05-18 2016-04-26 株式会社日立製作所 計算機システム及びその制御方法
US9665521B2 (en) * 2012-05-18 2017-05-30 Dell Products, Lp System and method for providing a processing node with input/output functionality by an I/O complex switch
US8880771B2 (en) * 2012-10-25 2014-11-04 Plx Technology, Inc. Method and apparatus for securing and segregating host to host messaging on PCIe fabric
US9164938B2 (en) * 2013-01-02 2015-10-20 Intel Corporation Method to integrate ARM ecosystem IPs into PCI-based interconnect
CN103117929B (zh) 2013-01-31 2015-12-23 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
US20140258577A1 (en) 2013-03-11 2014-09-11 Futurewei Technologies, Inc. Wire Level Virtualization Over PCI-Express
US9201837B2 (en) 2013-03-13 2015-12-01 Futurewei Technologies, Inc. Disaggregated server architecture for data centers
US9086966B2 (en) * 2013-03-15 2015-07-21 Intel Corporation Systems, apparatuses, and methods for handling timeouts
US9143369B2 (en) * 2013-03-15 2015-09-22 Intel Corporation Adaptive backchannel equalization
US9223365B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Method and apparatus for controlled reset sequences without parallel fuses and PLL'S
US9910816B2 (en) 2013-07-22 2018-03-06 Futurewei Technologies, Inc. Scalable direct inter-node communication over peripheral component interconnect-express (PCIe)
US9395795B2 (en) * 2013-09-20 2016-07-19 Apple Inc. System power management using communication bus protocols
US9465760B2 (en) 2013-11-18 2016-10-11 Futurewei Technologies, Inc. Method and apparatus for delivering MSI-X interrupts through non-transparent bridges to computing resources in PCI-express clusters
US9223734B2 (en) * 2013-12-13 2015-12-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Switch with synthetic device capability
US9494998B2 (en) * 2013-12-17 2016-11-15 Intel Corporation Rescheduling workloads to enforce and maintain a duty cycle
US9454213B2 (en) * 2013-12-26 2016-09-27 Intel Corporation Method, apparatus, system for lane staggering and determinism for serial high speed I/O lanes
US9418013B2 (en) * 2014-06-30 2016-08-16 Intel Corporation Selective prefetching for a sectored cache

Also Published As

Publication number Publication date
RU2016105513A (ru) 2017-08-29
EP3025241A1 (en) 2016-06-01
US20180157614A1 (en) 2018-06-07
HUE043242T2 (hu) 2019-08-28
US11036669B2 (en) 2021-06-15
US9910816B2 (en) 2018-03-06
EP3025241A4 (en) 2016-12-14
EP3267322B1 (en) 2019-01-23
EP3267322A1 (en) 2018-01-10
CN105556496A (zh) 2016-05-04
WO2015010603A1 (en) 2015-01-29
HUE035246T2 (hu) 2018-05-02
US20150026380A1 (en) 2015-01-22
ES2720256T3 (es) 2019-07-19
EP3025241B1 (en) 2017-09-13
CN105556496B (zh) 2018-12-04
RU2637428C2 (ru) 2017-12-04

Similar Documents

Publication Publication Date Title
ES2645486T3 (es) Comunicación internodal directa escalable sobre una interconexión de componentes periféricos expreso - (Peripheral Component Interconnect Express (PCIE))
US9043526B2 (en) Versatile lane configuration using a PCIe PIe-8 interface
US8677023B2 (en) High availability and I/O aggregation for server environments
JP5735883B2 (ja) ローカル・アダプタの読み取り操作により操作の完了が確認されるまで操作の肯定応答を遅延させる方法
US9294569B2 (en) Cell fabric hardware acceleration
JP6998391B2 (ja) 分散スイッチに対するスケーラブル・データ・センター・ネットワーク・トポロジ
US8930595B2 (en) Memory switch for interconnecting server nodes
US20120265840A1 (en) Providing a Memory Region or Memory Window Access Notification on a System Area Network
US9369298B2 (en) Directed route load/store packets for distributed switch initialization
US20130346531A1 (en) Systems and methods for input/output virtualization
CN106933504B (zh) 用于提供存储系统的访问的方法和系统
US9137173B2 (en) Devices and methods for interconnecting server nodes
CN118056191A (zh) 具有可配置传输的多平面、多协议存储器交换机构造
US11003616B1 (en) Data transfer using point-to-point interconnect