Instrucciones de almacenamiento/almacenamiento de bloque para la comunicación con adaptadores.

Un procedimiento para ejecutar dentro de un circuito de procesamiento, que comprende un medio de almacenamiento legible por ordenador

, legible por dicho circuito de procesamiento e instrucciones de almacenamiento para su ejecución por dicho circuito de procesamiento, una instrucción de almacenamiento que comprende un campo de código de operación que identifica una instrucción de almacenamiento en adaptador, un primer campo que identifica una primera ubicación que incluye los datos a ser almacenados en un adaptador, un segundo campo que identifica una segunda ubicación, cuyos contenidos incluyen un descriptor de función que identifica el adaptador, un designación de un espacio de direcciones dentro del adaptador en el que deben almacenarse los datos, y un desplazamiento dentro del espacio de direcciones, para almacenar datos en un adaptador, en el que el procedimiento comprende las etapas de:

obtener una instrucción máquina a ser ejecutada, en el que la instrucción máquina está definida para su ejecución por un ordenador según una arquitectura de ordenador; y ejecutar la instrucción máquina, en el que la ejecución comprende:

usar el descriptor de función para obtener una entrada de la tabla de funciones asociada con el adaptador;

obtener una dirección de datos del adaptador usando al menos uno de entre la información en la entrada de la tabla de funciones y el desplazamiento; y

almacenar los datos desde la primera ubicación en una ubicación específica en el espacio de direcciones identificado por la designación del espacio de direcciones, en el que la ubicación específica es identificada por la dirección de datos del adaptador.

Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/EP2010/067028.

Solicitante: INTERNATIONAL BUSINESS MACHINES CORPORATION.

Nacionalidad solicitante: Estados Unidos de América.

Dirección: NEW ORCHARD ROAD ARMONK, NY 10504 ESTADOS UNIDOS DE AMERICA.

Inventor/es: GREINER,Dan, FARRELL,Mark, CRADDOCK,DAVID, GREGG,THOMAS.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Interconexión o transferencia de información u... > G06F13/38 (Transferencia de informaciones, p. ej. sobre un bus (G06F 13/14 tiene prioridad))
  • SECCION G — FISICA > COMPUTO; CALCULO; CONTEO > TRATAMIENTO DE DATOS DIGITALES ELECTRICOS (computadores... > Disposiciones para el control por programa, p. ej.... > G06F9/312 (Control de operaciones de carga, de registro o de borrado)

PDF original: ES-2523878_T3.pdf

 

google+ twitter facebook

Fragmento de la descripción:

Instrucciones de almacenamiento/almacenamiento de bloque para la comunicación con adaptadores Antecedentes

Esta invención se refiere, en general, al procesamiento de entradas/salidas de un entorno informático y, en particular, a facilitar la comunicación con los adaptadores del entorno informático.

Un entorno informático puede Incluir uno o más tipos de dispositivos de entrada/salida, incluyendo diversos tipos de adaptadores. Un tipo de adaptador es un adaptador de tipo interconexión de componentes periféricos (Peripheral Component Interconnect, PCI) o de tipo Interconexión de componentes periféricos express (Peripheral Component Interconnect Express, PCIe). Este adaptador incluye uno o más espacios de direcciones usados en la comunicación de datos entre el adaptador y el sistema al cual está conectado el adaptador. La especificación PCI está disponible en la World Wlde Web en www.pclslg.com/home .

La patente US N° 6.74.831, presentada el 9 de Marzo de 24, Avery, "Method and Apparatus for Converting Address Information Between PCI Bus Protocol and a Message-Passing Queue-Oriented Bus Protocol", describe que las operaciones de carga/almacenamlento PCI y las operaciones DMA se implementan a través de pares de colas de trabajo en una arquitectura de bus orientada a colas, con intercambio de mensajes. El espacio de direcciones PCI se divide en segmentos y cada segmento, a su vez, se divide en regiones. A cada segmento se le asigna una cola de trabajo independiente. Una primera parte de una dirección PCI es comparada con los rangos de direcciones representados por los segmentos y usados para seleccionar un segmento de memoria y su cola de trabajo correspondiente. Una entrada en la cola de trabajo contiene una segunda parte de la dirección PCI que especifica una región dentro del segmento seleccionado que es asignada a un dispositivo PCI especifico. En una realización, las operaciones de carga/almacenamlento PIO se Implementan seleccionando una cola de trabajo asignada a las operaciones PIO y creando una entrada de cola de trabajo con la dirección PCI de un registro en un dispositivo PCI y un puntero a los datos PIO. La entrada en la cola de trabajo es enviada a un puente PCI donde la dirección PCI es extraída y usada para programar el registro de dispositivo apropiado con los datos usando el puntero de datos. Las transferencias DMA son ¡mplementadas también seleccionando una cola de trabajo por medio de una comparación de una parte de la dirección PCI generada por el dispositivo PCI con una tabla de rangos de direcciones y seleccionando una cola de trabajo que proporciona servicio al rango de direcciones. Se crea una entrada de cola de trabajo con el resto de la dirección PCI y un puntero a los datos DMA. Se usa una operación RDMA para realizar la transferencia DMA. Los datos de región y página son usados en conexión con una tabla de protección de traducción en el adaptador de canal de servidor para acceder a la memoria física y realizar la transferencia DMA.

La patente US N° 7.613.847, presentada el 3 de Noviembre de 29, Kjos et al, "Partially Virtualizing an E/S Device for Use by Virtual Machines", describe un sistema de ordenador que comprende un ordenador físico y un monitor de máquina virtual ejecutable en el ordenador físico y configurado para crear una emulación de al menos un sistema operativo huésped adaptado para controlar el ordenador físico. El sistema de ordenador comprende además un servidor ejecutable en el ordenador físico que gestiona los recursos físicos acoplados al ordenador físico en nombre del monitor de máquina virtual y el al menos un sistema operativo huésped. El servidor está adaptado para virtualizar un espacio de direcciones de a configuración de interconexión de componentes periféricos (PCI) de manera que el al menos un sistema operativo huésped controla los dispositivos de entrada/salida (E/S) PCI directamente y en ausencia de emulación E/S.

En algunos sistemas, tales como los descritos en la publicación de patente internacional WO 2/41157 A2, una parte de un espacio de direcciones de la unidad central de procesamiento (CPU) acoplada al adaptador es asignada a un espacio de direcciones del adaptador permitiendo que las instrucciones de CPU que acceden al almacenamiento manipulen directamente los datos en el espacio de direcciones del adaptador.

Breve sumario

Según un aspecto de la presente invención, se proporciona una capacidad para facilitar la comunicación con los adaptadores, tales como adaptadores PCI o PCIe. Se proporcionan y usan para la comunicación instrucciones de control diseñadas específicamente para la comunicación de datos desde y hacia los adaptadores.

La provisión de un producto de programa de ordenador para ejecutar una instrucción de almacenamiento para almacenar datos en un adaptador supera los inconvenientes de la técnica anterior y proporciona una serle de ventajas. El producto de programa de ordenador Incluye un medio de almacenamiento legible por ordenador, legible por un circuito de procesamiento, e instrucciones de almacenamiento para su ejecución por el circuito de procesamiento para realizar un procedimiento. El procedimiento incluye, por ejemplo, obtener una instrucción

máquina para su ejecución, en el que la Instrucción máquina está definida para su ejecución por un ordenador según una arquitectura de ordenador, en el que la instrucción máquina incluye, por ejemplo, un campo de código de operación que identifica una instrucción de almacenamiento en adaptador; un primer campo que identifica una primera ubicación que incluye los datos a ser almacenados en un adaptador; un segundo campo que identifica una 5 segunda ubicación, cuyos contenidos incluyen un descriptor de función que identifica el adaptador, una

designación de un espacio de direcciones dentro del adaptador en el que deben almacenarse los datos, y un desplazamiento dentro del espacio de direcciones; y ejecutar la instrucción máquina, en el que la ejecución incluye usar el descriptor de función para obtener una entrada de la tabla de funciones asociada con el adaptador; obtener una dirección de datos del adaptador usando al menos uno de entre la información en la entrada de la tabla de 1 funciones y el desplazamiento; y almacenar datos desde la primera ubicación en una ubicación específica en el espacio de direcciones identificado por la designación del espacio de direcciones, la ubicación específica identificada por la dirección de datos del adaptador.

Además, se proporciona un producto de programa de ordenador para ejecutar una instrucción de almacenamiento de bloque para almacenar datos en un adaptador. El producto de programa de ordenador incluye un medio de 15 almacenamiento legible por ordenador, legible por un circuito de procesamiento, e instrucciones de

almacenamiento para su ejecución por el circuito de procesamiento para realizar un procedimiento. El procedimiento incluye, por ejemplo, obtener una instrucción máquina para su ejecución, en el que la instrucción máquina está definida para su ejecución por un ordenador según una arquitectura de ordenador, en el que la instrucción máquina incluye, por ejemplo, un campo de código de operación que identifica una instrucción de 2 almacenamiento de bloque en el adaptador; en el que un primer campo identifica una primera ubicación, cuyos contenidos incluyen un descriptor de función que identifica un adaptador, y una designación de un espacio de direcciones dentro del adaptador en el que deben almacenarse los datos; un segundo campo que identifica una segunda ubicación que incluye un desplazamiento dentro del espacio de direcciones; un tercer campo que identifica una tercera ubicación que incluye una dirección en la memoria que incluye los datos a ser almacenados 25 en... [Seguir leyendo]

 


Reivindicaciones:

1. Un procedimiento para ejecutar dentro de un circuito de procesamiento, que comprende un medio de almacenamiento legible por ordenador, legible por dicho circuito de procesamiento e instrucciones de almacenamiento para su ejecución por dicho circuito de procesamiento, una instrucción de almacenamiento que comprende un campo de código de operación que identifica una instrucción de almacenamiento en adaptador, un primer campo que identifica una primera ubicación que incluye los datos a ser almacenados en un adaptador, un segundo campo que identifica una segunda ubicación, cuyos contenidos incluyen un descriptor de función que identifica el adaptador, un designación de un espacio de direcciones dentro del adaptador en el que deben almacenarse los datos, y un desplazamiento dentro del espacio de direcciones, para almacenar datos en un adaptador, en el que el procedimiento comprende las etapas de:

obtener una instrucción máquina a ser ejecutada, en el que la instrucción máquina está definida para su ejecución por un ordenador según una arquitectura de ordenador; y ejecutar la instrucción máquina, en el que la ejecución comprende:

usar el descriptor de función para obtener una entrada de la tabla de funciones asociada con el adaptador;

obtener una dirección de datos del adaptador usando al menos uno de entre la información en la entrada de la tabla de funciones y el desplazamiento; y

almacenar los datos desde la primera ubicación en una ubicación específica en el espacio de direcciones identificado por la designación del espacio de direcciones, en el que la ubicación específica es identificada por la dirección de datos del adaptador.

2. Procedimiento según la reivindicación 1, en el que el espacio de direcciones a acceder es un espacio de memoria o un espacio de E/S, y en el que la obtención de la dirección de datos comprende el uso de uno o más parámetros de la entrada de la tabla de funciones para obtener la dirección de datos.

3. Procedimiento según la reivindicación 2, en el que el uso de uno o más parámetros comprende sumar un valor de un registro de dirección base de la entrada de la tabla de funciones al desplazamiento para obtener la dirección de datos.

4. Procedimiento según la reivindicación 1, en el que los contenidos de la segunda ubicación incluyen una cantidad de datos a almacenar.

5. Un sistema de ordenador para ejecutar una instrucción de almacenamiento para almacenar datos en un adaptador, en el que dicho sistema de ordenador comprende:

una memoria;

un procesador en comunicación con la memoria;

el procesador operable para obtener una instrucción máquina para su ejecución, en el que la instrucción máquina está definida para su ejecución en un ordenador según una arquitectura de ordenador, en el que la instrucción máquina comprende:

un campo de código de operación que identifica una instrucción de almacenamiento en adaptador;

un primer campo que identifica una primera ubicación que incluye los datos a ser almacenados en un adaptador;

un segundo campo que identifica una segunda ubicación, cuyos contenidos incluyen un descriptor de función que identifica el adaptador, una designación de un espacio de direcciones dentro del adaptador en el que deben almacenarse los datos, y un desplazamiento dentro del espacio de direcciones; y

el procesador operable para ejecutar la instrucción máquina, en el que la ejecución comprende:

usar el descriptor de función para obtener una entrada de la tabla de funciones asociada con el adaptador;

obtener una dirección de datos del adaptador usando al menos uno de entre la información en la entrada de la tabla de funciones y el desplazamiento; y

almacenar los datos desde la primera ubicación en una ubicación específica en el espacio de direcciones identificado por la designación del espacio de direcciones, en el que la ubicación específica es identificada por la dirección de datos del adaptador.

6. Sistema de ordenador según la reivindicación 5, en el que el espacio de direcciones a ser accedido es uno de 5 entre un espacio de memoria o un espacio de E/S, y en el que la obtención de la dirección de datos comprende el

uso de uno o más parámetros de la entrada de la tabla de funciones para obtener la dirección de datos.

7. Sistema de ordenador según la reivindicación 6, en el que el uso de uno o más parámetros comprende sumar un valor de un registro de dirección base de la entrada de la tabla de funciones al desplazamiento para obtener la dirección de datos.

8. Sistema de ordenador según la reivindicación 5, en el que los contenidos de la segunda ubicación incluyen una

cantidad de datos a almacenar.

9. Un programa de ordenador cargado en un sistema de ordenador según la reivindicación 5 para realizar todas las etapas del procedimiento según una cualquiera de las reivindicaciones 1 a 4.