MX2012014861A - Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s. - Google Patents

Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s.

Info

Publication number
MX2012014861A
MX2012014861A MX2012014861A MX2012014861A MX2012014861A MX 2012014861 A MX2012014861 A MX 2012014861A MX 2012014861 A MX2012014861 A MX 2012014861A MX 2012014861 A MX2012014861 A MX 2012014861A MX 2012014861 A MX2012014861 A MX 2012014861A
Authority
MX
Mexico
Prior art keywords
adapter
function
interruption
pci
aibv
Prior art date
Application number
MX2012014861A
Other languages
English (en)
Inventor
David Craddock
Thomas Gregg
Mark Farrell
Gustav Sittmann Iii
Eric Norman Lais
Janet Easton
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of MX2012014861A publication Critical patent/MX2012014861A/es

Links

Classifications

    • 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/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Una o más solicitudes de interrupción con señal de mensaje de uno o más adaptadores de entrada/salida, E/S (I/O = input/output) se convierten en notificaciones de evento de adaptador E/S. Cada notificación de evento de adaptador E/S incluye el ajuste de uno o más indicadores específicos en la memoria del sistema y una solicitud de interrupción, la primera de las cuales resulta en una solicitud de interrupción de adaptador E/S pendiente. Mientras que una solicitud para una interrupción de adaptador E/S está pendiente, se convierten subsecuentes solicitudes de interrupción con señal de mensaje a notificaciones de evento de adaptador E/S, pero no resultan en solicitudes adicionales para interrupciones de adaptador E/S.

Description

CONVERTIR UNA INTERRUPCIÓN CON SEÑAL DE MENSAJE EN UNA NOTIFICACIÓN DE EVENTO DE ADAPTADOR DE E/S ANTECEDENTES Esta invención se refiere en general a procesamiento de interrupción dentro de un ambiente de cómputo y en particular a manejo de interrupciones generadas por adaptadores del ambiente de cómputo.
La interrupción señalada de mensaje (MSI = Message Signaled Interruption) es una forma para una función de adaptador, tal como una función de Interconexión de Componente Periférico (PCI = Peripheral Component Interconnect ) , para generar una interrupción de unidad de procesamiento central, UPC (CPU = Central Processing Unit) para notificar al sistema operativo de la ocurrencia de un evento o la presencia de algún estado. MSI es una alternativa a tener una terminal o espiga de interrupción dedicada en cada dispositivo. Cuando una función adaptadora se configura para utilizar MSI, la función solicita una interrupción al realizar una operación de escritura MSI de un número especificado de bytes de datos a una dirección especial. La combinación de esta dirección especial y un valor de datos único se denomina un vector MSI.
Algunas funciones adaptadoras soportan sólo un vector MSI; otras funciones agotadoras soportan múltiples vectores MSI. Para funciones que soportan múltiples vectores MSI, se emplea la misma dirección especial con diferentes valores de datos.
En muchas plataformas de cómputo, un controlador de dispositivo se configura como el identificador de interrupción asociado con un vector MSI. Esto asocia efectivamente un vector MSI con una entrada en un vector de interrupción de CPU. Por lo tanto, cuando una función de adaptador soporta múltiples vectores MSI y se configura para utilizar múltiples vectores MSI, consume una cantidad correspondiente de entradas en el vector de interrupción de CPU.
La Publicación de Patente de los E.U.A. Número 2007/0271559 Al, de noviembre 22, 2007, Easton et al, "Virtualization of Infiniband Host Channel Adapter Interruptions" , describe un método, sistema, producto de programa y estructura de datos de computadora para proporcionar dos niveles de visualización' de servidor. Un primer hipervisor habilita múltiples particiones lógicas para compartir un conjunto de recursos y proporcionar un primer nivel de virtualización . Un segundo hipervisor habilita múltiples máquinas virtuales independientes para compartir los recursos que se asignan a una sola partición lógica y proporciona un segundo nivel de virtualización. Todos los eventos para todas las máquinas virtuales dentro de la partición lógica sencilla se agrupan en una lista de espera de evento de propiedad de una sola partición, para recibir notificaciones de evento de los recursos compartidos para esa sola partición lógica. Una solicitud para una interrupción se señala para los eventos agrupados a partir de la lista de espera de eventos de propiedad de partición para el desmultiplexado de eventos agrupados, por la máquina, a partir de la lista de espera de eventos de propiedad de partición en listas de espera de eventos virtualizados individuales que se asignan en una base por máquina virtual.
La Publicación de Patente de los E.U.A. Número 2005/0289271 Al, de diciembre 29, 2005, Martínez, et al, "Circuitry to Selectively Produce MSI Signáis", describe en algunas modalidades, las invenciones que incluyen un chip que tiene un circuito de registro de estado acoplado a conductores para recibir señales de evento¡ de interrupción para proporcionar señales fuente que corresponden a las señales de evento de interrupción. El chip también incluye un circuito de registro de control, para proporcionar señales habilitadas de fuente para selectivas de las fuentes de interrupción y un circuito lógico de re-armado acoplado a los conductores para recibir las señales de evento de interrupción y proporcionar una señal de rearmado. El chip además incluye primer circuito lógico para recibir las señales fuente, las señales de habilitación fuente y la señal de re-armado, para proporcionar una señal de interrupción inicial y lógica para generación de pulsos de señal de interrupción señalada de mensaje (MSI), para recibir la señal de interrupción inicial y proporcionar una señal MSI en respuesta a ello. Otras modalidades se describen y reivindican.
La Patente de los E.U.A. Número 7,562,366, otorgada en julio 14, 2009, Pope et al, "Transmit Completion Event Batching", describe un método para administrar una lista de espera para transmisión de datos, para utilizar con un huésped y un dispositivo de interfase de red. Descrito en forma aproximada, el huésped escribe descriptores de memoria intermedia de datos en una lista de espera de descriptor de transmisión y el dispositivo de interfase de red escribe eventos para notificar al huésped cuando ha completado procesamiento de una memoria intermedia de transmisión de datos. Cada uno de los descriptores de eventos de terminación de transmisión notifica al huésped de la terminación de una pluralidad de las memorias intermedias para transmisión de, datos.
BREVE COMPENDIO De acuerdo con un aspecto de la presente invención, se proporciona una capacidad para facilitar el manejo de solicitudes de interrupción de adaptadores.
Las desventajas de la técnica previa se superan y se proporcionan ventajas a través del suministro de un método de acuerdo con la reivindicación 1, y correspondientes sistema y producto de programa de computadora para manejar solicitudes de interrupción en un ambiente de cómputo.
BREVE DESCRIPCIÓN DE LAS DIVERSAS VISTAS DE LOS DIBUJOS Uno o más aspectos de la presente invención se señalan particularmente y reivindican en forma distinta como ejemplos en las reivindicaciones al final de la especificación. Los anteriores y otros objetos, características y ventajas de la invención son aparentes de la siguiente descripción detallada que se toma en conjunto con los dibujos acompañantes en donde: La Figura 1 ilustra una modalidad de un ambiente de cómputo para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 2 ilustra una modalidad de adicionales detalles de la memoria del sistema y/o el concentrador E/S (1/0) de la Figura 1, de acuerdo con un aspecto de la presente invención; Las Figuras 3A-3B ilustran ejemplos de asignaciones de vectores de bits para interrupción de adaptador, de acuerdo con un aspecto de la presente invención; Las Figuras 3C-3D ilustran ejemplos de asignaciones de bits de resumen de interrupción para adaptador de acuerdo con un aspecto de la presente invención; La Figura 4 ilustra una modalidad de un panorama de la lógica a realizarse durante inicialización para configurar una función adaptadora para notificación de evento de adaptador E/S, de acuerdo con un aspecto de la presente invención; La Figura 5 ilustra una modalidad de la lógica para realizar registro para habilitar conversión de una interrupción señalada de mensaje (MSI) en una notificación de evento de adaptador de E/S de acuerdo con un aspecto de la presente invención; La Figura 6A ilustra una modalidad de la lógica para convertir una solicitud MSI a una notificación de evento de adaptador E/S, de acuerdo con un aspecto de la presente invención; La Figura 6B ilustra una modalidad de la lógica para presentar la notificación de evento de adaptador E/S a un sistema operativo de acuerdo con un aspecto de la presente invención; La Figura 7A ilustra una modalidad de una instrucción de Modificar Controles de Función PCI empleada de acuerdo con un aspecto de la presente invención; La Figura 7B ilustra una modalidad de un campo empleado por la instrucción Modificar Controles de Función PCI de la Figura 7A, de acuerdo con un aspecto de la presente invención; La Figura 7C ilustra una modalidad de otro campo empleado por la instrucción Modificar Controles de Función PCI de la Figura 7A, de acuerdo con un aspecto de la presente invención; La Figura 7D ilustra una modalidad de los contenidos de un bloque de información de función (FIB = Function Information Block) empleados de acuerdo con un aspecto de la presente invención; La Figura 8 ilustra una modalidad de un panorama de la lógica de la instrucción Modifica Controles de Función PCI, de acuerdo con un aspecto de la presente invención; La Figura 9 ilustra una modalidad de la lógica asociada con una operación de interrupciones para adaptador de registro que pueden especificarse por la instrucción Modifica Controles de Función PCI de acuerdo con un aspecto de la presente invención; La Figura 10 ilustra una modalidad de la lógica asociada con una operación de interrupciones para adaptador para dar de baja, que puede especificarse por la instrucción Modifica Controles de Función PCI de acuerdo con un aspecto de la presente invención; La Figura 11A ilustra una modalidad de una instrucción Llama a Procesador Lógico empleada de acuerdo con un aspecto de la presente invención; La Figura 11B ilustra una modalidad de un bloque de solicitud empleado por la instrucción Llama a Procesador Lógico de la Figura 11A para una operación lista de acuerdo con un aspecto de la presente invención; La Figura 11C ilustra una modalidad de un bloque de respuesta para la operación lista de la Figura 11B, de acuerdo con un aspecto de la presente invención; La Figura 11D ilustra una modalidad de una entrada de lista de función utilizada de acuerdo con un aspecto de la presente invención; La Figura 12A ilustra una modalidad de un bloque de solicitud empleado por la instrucción Llama a Procesador Lógico de la Figura 11A para una operación de función consulta de acuerdo con un aspecto de la presente invención; La Figura 12B ilustra una modalidad de un bloque de respuesta para la operación de función consulta de la Figura 12A, de acuerdo con un aspecto de la presente invención; La Figura 13A ilustra una modalidad de un bloque de solicitud empleado por la instrucción Llama a Procesador Lógico de la Figura 11A para una operación de grupo consulta de acuerdo con un aspecto de la presente invención; La Figura 13B ilustra una modalidad de un bloque de respuesta para la operación del grupo de consulta de la Figura 13A, de acuerdo con un aspecto de la presente invención; La Figura 14 ilustra una modalidad de un producto de programa de computadora que incorpora uno o más aspectos de la presente invención; La Figura 15 ilustra una modalidad de un sistema de computadora hospedera para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 16 ilustra un ejemplo adicional de un sistema de computadora para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 17 ilustra otro ejemplo de un sistema de computadora que comprende una red de computadoras para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 18 ilustra una modalidad de diversos elementos de un sistema de computadora para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 19A ilustra una modalidad de la unidad de ejecución del sistema de computadora de la Figura 18 para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 19B ilustra una modalidad de la unidad de ramificación del sistema de computadora de la Figura 18 para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 19C ilustra una modalidad de la unidad de carga/almacenamiento del sistema de computadora de la Figura 18 para incorporar y utilizar uno o más aspectos de la presente invención; y La Figura 20 ilustra una modalidad de un sistema de computadora hospedera emulado para incorporar y utilizar uno o más aspectos de la presente invención.
DESCRIPCIÓN DETALLADA De acuerdo con un aspecto de la presente invención, se proporciona capacidad para convertir una solicitud de interrupción señalada de mensaje (MSI) en una notificación de evento de adaptador de entrada/salida E/S (I/O = Input/Output ) . MSI se solicita por un adaptador y convierte en una notificación de evento de adaptador, en donde uno o más indicadores específicos se ajustan y se realiza una solicitud que se presenta una interrupción a un sistema operativo (u otro soporte lógico¦ tal como otros programas, etc. Como se emplea aquí, el término sistema operativo incluye controladores de dispositivo de sistema operativo) . En un ejemplo particular, cada solicitud MSI no resulta en una solicitud para interrupción al sistema operativo, pero por el contrario, una solicitud de interrupción abarca una pluralidad de solicitudes MSI .
Como se emplea aquí, el término "adaptador" incluye cualquier tipo de adaptador (por ejemplo, adaptador de almacenamiento, adaptador de red, adaptador de procesamiento, adaptador criptográfico, adaptador PCI, otro tipo de adaptador de entrada/salida, etc.). En una modalidad, un adaptador incluye una función adaptadora. Sin embargo, en otras modalidades, un adaptador puede incluir una pluralidad de funciones adaptadoras. Uno o más aspectos de la presente invención aplican si un adaptador incluye una función adaptadora o una pluralidad de funciones adaptadoras. Además, en los ejemplos presentados aquí, se emplea adaptador en forma intercambiable con función de adaptador (por ejemplo función PCI) a menos que se anote de otra forma.
Una modalidad de un ambiente de cómputo para incorporar y utilizar uno o más aspectos , de la presente invención se describe con referencia a la Figura 1. En un ejemplo, un ambiente de cómputo 100 es un servidor de System z® ofrecido por International Business Machines Corporation. System z® se basa en z/Architecture® ofrecido por International Business Machines Corporation. Detalles respecto a z/Architecture® se describen en una publicación de IBM® con titulo "z/Architecture Principies of Operation", IBM® Publicación Número SA22-7832-07 , febrero 2009. IBM®, System z® y z/Architecture® son marcas registradas de International Business Machines Corporation, Armonk, New York. Otros nombres empleados aqui pueden ser marcas registradas, marcas o nombres de producto de International Business Machines Corporation u otras compañías .
En un ejemplo, el ambiente de cómputo 100 incluye una o más unidades de procesamiento central (CPUs = Central Processing Units) 102 acopladas a una memoria de sistema 104 (también conocida como memoria principal) mediante un controlador de memoria 106. Para tener acceso a la memoria del sistema 104, una unidad de procesamiento central 102 emite una solicitud de lectura o escritura que incluye una dirección empleada para tener acceso a la memoria del sistema. La dirección incluida en la solicitud típicamente no es utilizable en forma directa para tener acceso a la memoria del sistema y por lo tanto se traduce en una dirección que es directamente utilizable para tener acceso a la memoria del sistema. La dirección se traduce mediante un mecanismo de traducción (XLATE) 108. Por ejemplo, la dirección se traduce desde una dirección virtual a una dirección real o absoluta utilizando por ejemplo traducción de dirección dinámica (DAT = Dynamic Address Translation) .
La solicitud, incluyendo la dirección (traducida, de ser necesario) se recibe por el controlador de memoria 106. En un ejemplo, el controlador de memoria 106 comprende equipo físico y se utiliza para hacer arbitraje para acceso a la memoria del sistema y mantener la consistencia de la memoria. Este arbitraje se realiza para solicitudes recibidas de CPUs 102, así como para solicitudes recibidas de uno o más adaptadores 110. Como las unidades de procesamiento central, los adaptadores emiten solicitudes a la memoria del sistema 104 para lograr acceso a la memoria del sistema.
En un ejemplo, el adaptador 110 es un adaptador de Interconexión de Componente Periférico (PCI = Peripheral Component Interconnect ) o PCI Express (PCIe) que incluye una o más funciones PCI. Una función PCI emite una solicitud que se dirige a un concentrador de entrada/salida 112 (por ejemplo un concentrador de PCI) mediante uno o más interruptores (por ejemplo, interruptores PCIe) 114. En un ejemplo, el concentrador de entrada/salida comprende equipo físico, incluyendo una o más máquinas de estado.
El concentrador de entrada/salida incluye por ejemplo un complejo raíz 116 que recibe la solicitud de un conmutador o interruptor. La solicitud incluye una dirección de entrada/salida que se emplea para realizar un acceso de memoria directo (DMA = Direct Memory Access) o para solicitar una interrupción señalada de mensaje (MSI), como ejemplos. Esta dirección se proporciona a una unidad de protección y traducción de dirección 118 que tiene acceso a información empleada ya sea para la DMA o la solicitud MSI .
Para una operación DMA, la unidad de protección y traducción de dirección 118 puede traducir la dirección a una dirección utilizable para acceso a la memoria del sistema. Entonces, la solicitud iniciada del adaptador, incluyendo la dirección traducida, se proporciona al controlador de memoria 106, por ejemplo mediante una barra colectora de E/S-a-memoria 120. El controlador de memoria realiza su arbitraje y envía la solicitud con la dirección traducida a la memoria del sistema al tiempo apropiado.
Para una solicitud MSI, información en la unidad de protección y traducción de dirección 118 se obtiene para facilitar la conversión de la solicitud MSI a una notificación de evento de adaptador E/S. Ya que las modalidades aquí descritas se refieren a procesamiento de interrupción, mayores detalles respecto al concentrador E/S y memoria del sistema como se refieren a procesamiento de interrupción, se describen con referencia a la Figura 2. En la Figura 2, el controlador de memoria no se muestra, pero puede ser empleado. El concentrador E/S puede acoplarse a la memoria del sistema 104 y/o procesador 254 directamente o mediante un controlador de memoria.
Con referencia la Figura 2, en un ejemplo, la memoria del sistema 104 incluye una o más estructuras de datos utilizables para facilitar procesamiento de interrupción. En este ejemplo, la memoria del sistema '104 incluye un vector de bits para interrupción de adaptador (AIBV) 200 y un bit de resumen de interrupción de adaptador opcional (AISB) 202 asociado con un adaptador particular. Puede haber un AIBV y un AISB correspondientes por cada adaptador.
En un ejemplo, el vector de bit para interrupción de adaptador 200 es una matriz de una sola dimensión de uno o más bits en almacenamiento principal que se asocia con un adaptador (por ejemplo una función PCI) . Los bits en el vector de bit para interrupción de adaptador representan números de vector MSI. Un bit que se ajusta a uno en un AIBV indica una condición o tipo de evento para el adaptador asociado. En el ejemplo de una función PCI, cada bit en el AIBV asociado corresponde a un vector MSI. Por. lo tanto, si una función PCI soporta sólo un vector MSI, su AIBV incluye un solo bit; si una función PCI soporta múltiples vectores MSI, su AIBV incluye 1 bit por vector MSI. En el ejemplo ilustrado en la Figura 2, la función PCI soporta múltiples vectores MSI (por ejemplo, 3), y por lo tanto hay múltiples vectores (por ejemplo, 3) en AIBV 200.
Cada bit corresponde a un evento particular, por ejemplo bit 0 de AIBV, cuando se ajusta a uno, indica una operación completa; bit 1 de AIBV, cuando se ajusta a uno, corresponde a un evento de error; etc. Como se muestra, el bit 1 se ajusta en este ejemplo.
En un ejemplo particular, un comando (por ejemplo, un comando Modifica Controles de Función PCI) se emplea para designar un AIBV para una función PCI. Específicamente, el comando se emite por el sistema operativo y especifica la identidad de la función PCI, la ubicación de almacenamiento principal del área que incluye AIBV, el desplazamiento de esa ubicación al primer bit de AIBV, y el número de bits que comprenden AIBV. En particular, utilizando este comando, se copian parámetros de interrupción de adaptador de un bloque de información de función que almacena dicha información (por ejemplo que se obtiene de inicialización y/o configuración:) en la entrada de tabla del dispositivo adaptador (descrita a continuación) y/o entrada de tabla de función (descrita a continuación) .
La identidad de la función PCI, es un ejemplo, es un identificador de función. Un identificador de función incluye por ejemplo, un indicador de habilitación que indica si el identificador de función PCI está habilitado; un número de función PCI que identifica la función (esto es un identificador estático) ; y un número de instancia que indica la instancia particular de este identificador de función. Por ejemplo, cada vez que se habilita el identificador de función, el número de instancia se incrementa para proporcionar un nuevo número de instancia. El identificador de función se emplea para localizar una entrada de tabla de función en una tabla de función que incluye una o más entradas. Por ejemplo, uno o más bits del identificador de función se emplean como un índice en la tabla de función para localizar una entrada de tabla de función particular. La entrada de tabla de función incluye información respecto a su función PCI asociada. Por ejemplo, puede incluir diversos indicadores respecto al estado de su función adaptadora asociada, y puede incluir uno o más índices de entrada de tabla de dispositivo utilizados para localizar entradas de tabla de dispositivo para esta función adaptadora. (Para el sistema operativo, en una modalidad, el identificador simplemente es un identificador opaco del adaptador) .
Un AIBV puede ser asignado en cualquier frontera o límite de byte y cualquier límite de bit. Esto permite al sistema operativo la flexibilidad para empacar los AIBVs de múltiples adaptadores en un intervalo contiguo de bits y bytes. Por ejemplo, como se muestra en la Figura 3A, en un ejemplo, el sistema operativo tiene diseñada un área de almacenamiento común en la ubicación X para incluir cinco AIBVs contiguos. El adaptador asociado con cada AIBV se identifica por las letras A-E. El evento que cada bit AIBV representa para un adaptador además se identifica por los números 0-n. Bits no asignados se identifican por la letra "u" .
Un ejemplo adicional se ilustra en la Figura 3B. En este ejemplo, el sistema operativo tiene diseñadas tres áreas de almacenamiento únicas, en las ubicaciones X, Y y Z. para incluir los AIBVs para cinco adaptadores E/S. El almacenamiento en la ubicación X incluye los AIBVs para los adaptadores A y B, el almacenamiento en la ubicación Y incluye el AIBV solo para el adaptador C, y el almacenamiento de la ubicación Z incluye los AIBVs para los adaptadores D y E. El evento que cada bit de AIBV representa para un adaptador E/S se identifica adicionalmente por los números 0-n. Bits; no asignados se identifican por la letra "u" .
Regresando a la Figura 2, además del AIBV, en este ejemplo, hay AISB 202 para el adaptador, que incluyen un solo bit asociado con el adaptador. Un AISB que es uno indica que uno o más bits se han ajustado a uno en un AIBV asociado con AISB. AISB es opcional, y puede haber uno por cada adaptador, uno por cada adaptador selecto o uno por un grupo de adaptadores.
En una implementación particular para funciones PCI, un comando (por ejemplo, un comando Modifica Controles de Función PCI) se emplea para designar un AISB por una función PCI. Específicamente, el comando se envía por el sistema operativo y especifica la identidad de la función PCI (por ejemplo, el identificador ) , la ubicación de almacenamiento principal del área que incluye AISB, el desplazamiento de su ubicación a AISB, y un control para habilitación de notificación para interrupción de adaptador que indica que hay un bit de resumen.
Un AISB puede asignarse en cualquier límite de bytes y cualquier limite de bits. Esto permite al sistema operativo la flexibilidad para empacar los AISBs de múltiples adaptadores en un intervalo contiguo de bits y bytes. En un ejemplo, como se ilustra en la Figura 3C, el sistema operativo tiene diseñada un área de almacenamiento común, en la ubicación X, para incluir nueve AISBs contiguos. El adaptador asociado con', cada AISB se identifica por las letras A-I. Bits no asignados se identifican por la letra en minúscula "u".
Un ejemplo de asignación adicional se ilustra en la Figura 3D, en donde el sistema operativo tiene diseñadas tres ubicaciones de almacenamiento AISB únicas, en las ubicaciones X, Y y Z para incluir los AISBs de cada uno de los tres adaptadores. Los adaptadores asociados con cada AISB se identifican con las letras A-C. Bits no asignados se identifican por la letra con minúscula "u".
Además, el programa también puede asignar un solo AISB a múltiples funciones PCI. Este asocia múltiples AIBVs con un solo bit de resumen. Por lo tanto, tal AISB que es uno, indica que el sistema operativo deberá escanear múltiples AIBVs.
Regresando a la Figura 2, en un ejemplo, AIBV y AISB son señalados por direcciones ubicadas en una entrada de tabla de dispositivo 206 de una tabla de dispositivo 208 situada en un concentrador E/S 112. En un ejemplo, la tabla de dispositivo 208 se ubica dentro de la unidad de protección de traducción de dirección del concentrador E/S.
La tabla de dispositivo 208 incluye una o más entradas 206, cada una de las cuales se asigna a una función adaptadora particular 210. Una entrada de tabla de dispositivo 206 incluye una cantidad de campos, que pueden estar poblados utilizando por ejemplo, los comandos anteriormente mencionados. Los valores de uno o más de los campos se basan en política y/o configuración. Ejemplos de los campos incluyen: Subclase de Interrupción (ISC) 214: Indica una subclase de interrupción para la interrupción. ISC identifica una clase enmascarable de interrupciones de adaptador que pueden asociarse con una prioridad con la cual el sistema operativo procesará la interrupción; Dirección AIBV (@) 216: Proporciona, e.g. una dirección absoluta del inicio de la ubicación de almacenamiento que incluye el AIBV para la función adaptadora particular asignada a esta entrada de tabla de dispositivo; Desplazamiento AIBV 218: Un desplazamiento en la ubicación de almacenamiento principal al inicio del AIBV; Dirección AISB (@) 220: Proporciona, por ejemplo, una dirección absoluta del inicio de la ubicación de almacenamiento que incluye AISB para esta función PCI, si el sistema operaíívo tiene designado un AISB; Desplazamiento AISB 222: Un desplazamiento en la ubicación de almacenamiento principal a AISB; Control para Habilitar Notificación de Resumen para Interrupción de Adaptador (Habilitar) 224: Este control indica si hay AISB; Número de Interrupciones (NOI) 226: Indica el número máximo de vectores MSI permitidos para esta función PCI, con cero que indica que ninguno se permite.
En otras modalidades, DTE puede incluir más, menos o diferente información.
En una modalidad, la entrada 1 de tabla de dispositivo para utilizarse para una solicitud de interrupción particular por un adaptador se localiza utilizando por ejemplo un identificador solicitante (RID) (y/o una porción de la dirección) situada en una solicitud emitida por el adaptador (por ejemplo función PCI 210) . La ID de solicitante (por ejemplo, un valor de 16-bits que especifica por ejemplo, un número de barra colectora, número de dispositivo y número de función) se incluye en la solicitud, asi como una dirección a utilizar para la interrupción. La solicitud, incluyendo RID y la dirección, se proporciona, por ejemplo para una memoria direccionable por contenidos (CAM = Contents Addressable Memory (230)) vía por ejemplo un conmutador, y la memoria direccionable por contenidos se utiliza para proporcionar un valor de índice en la tabla de dispositivo. Por ejemplo, la CAM incluye múltiples entradas, con cada entrada que corresponde a un índice en la tabla de dispositivo. Cada entrada de CAM incluye el valor de un RID. Si, por ejemplo, el RID recibido corresponde con el valor contenido en una entrada en CAM, el índice de tabla de dispositivo correspondiente se emplea para localizar la entrada de tabla de dispositivo. Esto es, la salida de CAM se emplea para indexar en la tabla de dispositivo 208. Si no hay correspondencia, se descarta el paquete recibido. (En otras modalidades, una CAM u otra búsqueda no se requieren y RID se emplea como el índice) . DTE localizado se emplea en procesar una solicitud de interrupción, como se describe aquí .
Para solicitar una interrupción, la función de adaptador 210 envía un paquete al concentrador E/S. Este paquete tiene una dirección MSI 232 y datos asociados 234. El concentrador E/S compara al menos una parte de la dirección recibida con un valor en un registro compara MSI 250. Si hay una correspondencia, entonces se solicita una interrupción (e.g., MSI) en oposición a una operación DMA. La razón por la solicitud (es decir, tipo de evento que ha ocurrido) se indica en datos asociados 234. Por ejemplo, uno o más de los bits de bajo orden de los datos se emplean para especificar un vector de interrupción particular (es decir, un vector MSI) que indican la razón (evento) .
De acuerdo con un aspecto de la presente invención, la solicitud de interrupción recibida del adaptador se convierte en una notificación de evento de adaptador E/S. Esto es, uno o más indicadores (por ejemplo, uno o más AIBVs y opcionalmente un AISB) se ajustan o establecen y una interrupción al sistema operativo se solicita, si una no está ya pendiente. En una modalidad, múltiples solicitudes de interrupción (e.g., MSIs) de uno o más adaptadores coalescen en una sola interrupción al sistema operativo pero con respectivas indicaciones AIBV y AISB. Por ejemplo, si el concentrador E/S ya ha recibido una solicitud MSI, tiene a su vez, proporcionada una solicitud de interrupción a un procesador, y si la interrupción todavía está pendiente (por ejemplo, por una razón u otra, la interrupción no se ha presentado al sistema operativo (por ejemplo, se desactivan interrupciones)), entonces si el concentrador recibe uno o más otros SIs, no solicita interrupciones adicionales. La interrupción reemplaza y representa la pluralidad de solicitudes MSI. Sin embargo, uno o más AIBVs y opcionalmente uno o más AISBs se establecen.
Mayores detalles respecto a convertir un MSI (u otra solicitud de interrupción de adaptador) a una notificación de evento de adaptador E/S, se describen a continuación con referencia a las Figuras 4-6B. Particularmente, la Figura 4 describe inicialización diversa a realizar; la Figura 5 describe un proceso de registro; la Figura 6A describe lógica para convertir un MSI a una notificación de evento de adaptador; y la Figura 6B describe lógica para presentar la notificación de evento de adaptador E/S al sistema operativo.
Con referencia a la Figura 4, en un ejemplo, para convertir una solicitud MSI en una notificación de evento de adaptador E/S, se realiza cierta inicialización. Durante inicialización, el sistema operativo realiza una cantidad de etapas para configurar un adaptador para notificación de evento de adaptador mediante una solicitud MSI. En este ejemplo, es una función PCI que se configura; aunque, en otras modalidades, pueden ser otros adaptadores, incluyendo otros tipos de funciones de adaptador.
Inicialmente, en una modalidad se hace una determinación de las funciones PCI en la configuración, ETAPA 400. En un ejemplo, un comando (por ejemplo, un comando Lista de Consulta) enviado por el sistema operativo, se emplea para obtener una lista de las funciones PCI asignadas a la configuración solicitante (por ejemplo, asignado a un sistema operativo particular) . Esta información se obtiene de una estructura de datos de configuración que mantiene esta información.
A continuación, una de las funciones PCI en la lista se elige, ETAPA 402, y se hace una determinación respecto a la dirección MSI para utilizar por la función PCI y el número de vectores MSI soportados por la función PCI. La dirección MSI se determina con base en las características del concentrador E/S y el sistema en el que se instala. El número de vectores MSI soportados se basa en política y es configurable .
Adicionalmente, AIBV se asigna, así como AISB, de haber, ETAPA 410. En un ejemplo, el sistema operativo determina la ubicación de AIBV para permitir procesamiento eficiente de uno o más adaptadores, típicamente con base en la clase de adaptador. Por ejemplo, los AIBVs para adaptadores de almacenamiento pueden ubicarse adyacentes entre si. AIBV y AISB se asignan y liberan a ceros, y se especifica una operación de interrupción para adaptador de registro (por ejemplo, utilizando una instrucción Modifica Controles de Función PCI) . Esta operación registra AIBV, AISB, ISC, el número de interrupciones (vectores MSI), y el control para habilitación de resumen de interrupción para adaptador, como se describe con mayor detalle a continuación, ETAPA 412. Posteriormente, el espacio de configuración de las funciones de PCI es leido/escrito, ETAPA 414. Específicamente, la dirección MSI y el recuento de vector MSI se escriben consistentes con el registro previo .
Posteriormente, se hace una determinación de si hay funciones adicionales en la lista, CONSULTA 416. De ser asi, el procesamiento continúa con la ETAPA 402. De otra forma, se completa el procesamiento de inicialización .
Mayores detalles respecto al registro de diversos parámetros se describen con referencia a la FIGURA 5. Inicialmente, la entrada de tabla de dispositivo (DTE = Device Table Entry) para corresponder con la función PCI para cual se elige la inicialización que sé realiza. Esta selección se realiza por ejemplo al administrar el soporte lógico inalterable que elige una DTE disponible de la tabla de dispositivo. Posteriormente, los diversos parámetros se almacenan en la entrada de tabla de dispositivo, ETAPA 502. Por ejemplo, ISC, la dirección AIBV, el desplazamiento AIBV, las dirección AISB, el desplazamiento AISB, el control de habilitación, y el número de interrupciones (NOI = number of interruptions) se ajustan a valores obtenidos de configurar la función. Esto completa el proceso de registro .
Como se emplea aquí, el soporte lógico inalterable incluye por ejemplo el micro código, mili código y/o macro código del procesador. Incluye por ejemplo, las instrucciones a nivel de equipo físico y/o estructuras de datos empleadas para implementar código de máquina de nivel superior. En una modalidad, incluye por ejemplo, código de propiedad que típicamente se suministra como micro código que incluye soporte lógico de confianza o micro código específico para el equipo físico subyacente y controla el acceso del sistema operativo al equipo físico del sistema.
Durante operación, cuando una función PCI desea generar un MSI, típicamente deja algo de información disponible al sistema operativo que describe la condición. Esto provoca que ocurran una o más etapas a fin de convertir la solicitud MSI de funciones PCI a una notificación de evento de adaptador E/S al sistema operativo. Esto se describe con referencia a la FIGURA 6A.
Con referencia a la FIGURA 6A, inicialmente, una descripción del evento para el cual se solicita la interrupción, se registra, ETAPA 600. Por ejemplo, la función PCI registra una descripción del evento en una o más estructuras de grabación-de-descriptor-de-evento especifico-adaptador almacenadas por ejemplo, en la memoria del sistema. Esto puede incluir grabación del tipo de evento, asi como grabación de información adicional. Además, una solicitud se inicia por la función PCI que especifica la dirección MSI y el número de vector MSI, asi como una ID del solicitante, ETAPA 601. Esta solicitud se recibe por el concentrador E/S, y en respuesta a recibir la solicitud, la ID del solicitante en la solicitud se emplea para localizar la entrada de tabla de dispositivo para la función PCI, ETAPA 602. El concentrador de E/S compara al menos una porción de la dirección en la solicitud con el valor en el registro de comparación MSI, CONSULTA 603. Si son diferentes, un MSI no se solicita. Sin embargo, si son iguales, entonces se ha especificado una dirección MSI y de esta manera, se ha solicitado un MSI en lugar de una operación de acceso de memoria directa.
Posteriormente, se hace una determinación de si el número de vector MSI especificado en la solicitud es menos que o igual al número de interrupciones (NOI) permitidas para esta función, CONSULTA 604. Si el número de vector MSI es mayor que NOI, se indica un error. De otra forma, el concentrador E/S emite una función ajusta bit para ajustar el bit AIBV apropiado en almacenamiento. El bit apropiado se determina al agregar el número de vector MSI al desplazamiento AIBV especificado en la entrada de tabla de dispositivo y desplazar este número de bits de la dirección AIBV especificada en la entrada de tabla de dispositivo, ETAPA 605. Aún más, si AISB se ha designado, el concentrador E/S utiliza una función ajusta bit para ajustar AISB, utilizando la dirección AISB y el desplazamiento AISB offset en la entrada de tabla de dispositivo, ETAPA 606.
A continuación, en una modalidad, se hace una determinación (por ejemplo, por la CPU u otro concentrador E/S) de si ya está pendiente una solicitud de interrupción. Para hacer esta determinación, se emplea un indicador pendiente. Por ejemplo, un indicador pendiente 252 (FIGURA 2) almacenado en memoria de un procesador 254, que es accesible a procesadores del ambiente de cómputo que puede procesar la interrupción (por ejemplo, CPUs 102 de la FIGURA 1), se verifica, CONSULTA 608. Si no está ajustado, entonces se ajusta (por ejemplo, a 1), ETAPA 610. Si está ajustado, el procesamiento está completo y no se pide otra solicitud de interrupción. Por lo tanto, subsecuentes solicitudes de interrupción son abarcadas por la solicitud ya pendiente.
En un ejemplo particular, puede leer un indicador pendiente por subclase de interrupción, y por lo tanto, el indicador pendiente de la subclase de interrupción asignado a la función solicitante es el indicador que se verifica.
En forma síncrona, como se ilustra en la FIGURA 6B, uno o más procesadores verifican el indicador pendiente, CONSULTA 640. En particular, cada procesador habilitado para ISC (y zona en otra modalidad) sondea en el indicador por ISC cuando, por ejemplo, se habilitan interrupciones para ese procesador (es decir, para su sistema operativo) . Si uno de los procesadores determina que el indicador está ajustado, arbitra con los otros procesadores habilitados para el mismo ISC (y zona en otra modalidad) para presentar la interrupción, ETAPA 642. Regresando a la CONSULTA 640, si no se ajusta el indicador pendiente, los procesadores habilitados por ISC continúan sondeando por un indicador ajustado.
Es respuesta al sistema operativo; presentado con la interrupción, ETAPA 642, el sistema operativo determina si cualesquiera AISBs están registrados, CONSULTA 643. Si no, el sistema operativo procesa los AIBVs ajustados, como se describe a continuación, ETAPA 645. De otra forma, el sistema operativo procesa cualquier ajuste de AISBs y AIBVs, ETAPAS 644, 645. Por ejemplo, verifica si se establece cualesquiera AISBs. De ser asi, utiliza el AISB para determinar la ubicación de uno o más AIBVs. Por ejemplo, el sistema operativo recuerda las ubicaciones de AISBs y AIBVs. Además, recuerda para que adaptador cada AISB y AIBV representa. Por lo tanto, puede mantener una forma de bloque de control u otra estructura de datos que incluye las ubicaciones de AISBs y AIBVs y la asociación entre AISBs, AIBVs e ID de adaptador. Utiliza este bloque de control para facilitar la ubicación de AIBV con base en su AISB asociado. En una modalidad adicional, AISB no se emplea. En esa situación, el bloque de control se emplea para localizar el AIBV particular.
Es respuesta a localizar uno o más AIBVs, el sistema operativo escanea AIBVs y procesa cualquier AIBVs establecido. Procesa la interrupción en una forma consistente con el evento presentado (por ejemplo, proporciona estado) . Por ejemplo, con un adaptador de almacenamiento, un evento puede indicar qu'e una operación se ha completado. Esto resulta en que el sistema operativo verifica el estado almacenado por el adaptador para ver si la operación se completó exitosamente y también detalla la operación. En el caso de una lectura de almacenamiento, esta es una indicación de que los datos leídos en el adaptador ahora están disponibles en la memoria del sistema y pueden ser procesados.
En una modalidad, si durante operación de la conversión, se detecta un error, se generó una atención al soporte lógico inalterable del sistema, en lugar de convertir la solicitud de MSI a una notificación de evento de adaptador.
Mayores detalles respecto a la instrucción Modifica Controles de Función PCI utilizada para registrar interrupciones de adaptador, se describen aquí. Con referencia a la FIGURA 7 A, una instrucción Modifica Control de Función PCI 700, incluye por ejemplo un código operativo (op) 702 que indica la instrucción Modifica Controles de Función PCI; un primer campo 704 que especifica una ubicación en la cual se incluye diversa información respecto a la función adaptadora para la cual los parámetros operacionales se establecen; y un segundo campo 706 que especifica una ubicación de la cual se busca un bloque de información de función PCI (FIB = Function Information Block) . Los contenidos de ' las ubicaciones designadas por los Campos 1 y 2 se describen más a continuación.
En una modalidad, el Campo 1 designa un registro general que incluye diversa información. Como se muestra en la Figura 7B, los contenidos del registro incluyen por ejemplo, un indentificador de función 710 que identifica el indentificador de la función adaptadora a nombre de la cual la instrucción modificar se realiza; un espacio de dirección 712 que designa un espacio de dirección en la memoria del sistema asociado con la función adaptadora designada por el indentificador de función; un control de operación 714 que especifica la operación a realizar por la función adaptadora; y estado 716 que proporciona estado respecto a la instrucción cuando la instrucción completa con un código predefinido.
En una modalidad, el identificador de función incluye por ejemplo, un indicador de habilitación que indica si se habilita el identificador, un número de función que identifica una función adaptadora (esto es un identificador estático y puede emplearse para indexar en una tabla de función) ; y un número de instancia que especifica la instancia particular de este identificador de función. Hay un identificador de función para cada función adaptadora, y se utiliza para localizar una entrada de tabla de función (FTE) dentro de la tabla de función. Cada entrada de tabla de función incluye parámetros operacionales y/o información asociada con su función adaptadora. Como un ejemplo, una entrada de tabla de función incluye: Número de Instancia: Este campo indica una instancia particular del identificador de función adaptadora asociada con la entrada de tabla de función; índice de Entrada de Tabla de Dispositivo (DTE = Device Table Entry) 1 ...n: Puede haber uno o más índices de tabla de dispositivo y cada índice es un índice en una tabla de dispositivo para localizar una entrada de tabla de dispositivo (DTE) . Hay una o más entradas de tabla de dispositivo por función adaptadora, y cada entrada incluye información asociada con su función adaptadora, incluyendo información empleada para procesar solicitudes de la función adaptadora (por ejemplo, solicitudes DMA, solicitudes MSI) e información referente a las solicitudes asociadas con la función adaptadora (por ejemplo, instrucciones PCI) . Cada entrada de tabla de dispositivo se asocia con un espacio de dirección dentro de memoria del sistema asignado a la función adaptadora. Una función adaptadora puede tener uno o más espacios de dirección dentro de la memoria del sistema asignados a la función adaptadora. ; Indicador de Ocupado: Este campo indica si la función adaptadora está ocupada; Indicador de Estado de Error Permanente: Este campo indica si la función adaptadora está en un estado de error permanente; Indicador de Recuperación Iniciada: Este campo indica si la recuperación se ha iniciado para la función adaptadora; Indicador de Permiso: Este campo indica si el sistema operativo que intenta controlar la función adaptadora tiene autoridad para hacerlo; Indicador de Habilitación: Este campo indica si la función adaptadora está habilitada (por ejemplo, l=habilitada, 0=deshabilitada) ; Identificador de Solicitante (RID) : Esto es un identificador de la función adaptadora, e incluye por ejemplo, un número de barra colectora, un número de dispositivo y un número de función.
En un ejemplo, este campo se emplea para acceso de un espacio de configuración de la función adaptadora. (Memoria de un adaptador puede definirse como espacios de dirección, incluyendo por ejemplo, un espacio de configuración, un espacio E/S, y/o uno o más espacios de memoria] . En un ejemplo, se puede tener acceso al espacio de configuración al especificar el espacio ele configuración en una instrucción emitida por el sistema operativo (u otra con iguración) a la función adaptadora. En la instrucción se especifica un desplazamiento en el espacio de configuración y un identificador de función empleado para localizar la entrada de tabla de función apropiada que incluye RID. El soporte lógico inalterable recibe la instrucción y determina que es para un espacio de configuración. Por lo tanto, utiliza RID para generar una solicitud al concentrador E/S, y el concentrador E/S crea una solicitud para acceso al adaptador. La ubicación de la función adaptadora se basa en RID, y el desplazamiento especifica un desplazamiento en el espacio de configuración de la función adaptadora.
Registro de Dirección Base (BAR = Base Address Register) (1 a n) : Este campo incluye una pluralidad de enteros sin firma, designados como BAR0 - BARn, que están asociados con la función adaptadora originalmente especificada, y cuyos valores también se almacenan en los registros de dirección base asociados con la función adaptadora. Cada BAR especifica la dirección de inicio de un espacio de memoria o espacio E/S dentro de la función adaptadora, y también indica el tipo de espacio de dirección, esto es si es un espacio de memoria de 64 ó 32 bits, o un espacio E/S de 32 bits, como ejemplos: En un ejemplo, se utiliza para acceso a espacio de memoria y/o espacio E/S de la función adaptadora. Por ejemplo, un desplazamiento que se proporciona en una instrucción para acceso a la función adaptadora, se agrega al valor en el registro de dirección base asociado con el espacio de dirección designado en la instrucción para obtener la dirección para utilizarse en acceso a la función adaptadora. El identificador de espacio de dirección que se proporciona en la instrucción, identifica el espacio de dirección dentro de la función adaptadora para acceso y el BAR correspondiente a utilizar; Tamaño l....n: Este campo incluye una pluralidad de enteros sin signo, designados como SIZEo - SIZEn. El tamaño de un campo de tamaño, cuando no es cero, representa el tamaño de cada espacio de dirección con cada entrada que corresponde a un BAR previamente descrito.
Mayores detalles respecto a BAR y Tamaño (Size) se describen a continuación. 1. Cuando un BAR no se implementa para una función adaptadora, el campo BAR y su tamaño de campo correspondiente ambos se almacenan como ceros. 2. Cuando un campo BAR representa ya sea un espacio de dirección E/S o un espacio de dirección de memoria de 32-bits, el tamaño de campo correspondiente no es cero y representa el tamaño del espacio de dirección. 3. Cuando un campo BAR representa un espacio de dirección de memoria de 64-bits, a. El campo BARn representa los bits de dirección menos significantes. b. El siguiente campo BARn+1 consecutivo representa los bits de dirección más significantes. c. El campo SIZE correspondiente no es cero y representa el tamaño del espacio de dirección. d. El campo SIZEn+i correspondiente no es significante y se almacena como cero.
Información de Enrutamiento Interno: Esta información se emplea para realizar enrutamiento particular al adaptador. Incluye, por ejemplo nodo, chip procesador, e información de direccionamiento de concentrador, como ej emplos .
Indicación de Estado: Esto proporciona una indicación por ejemplo, de si se bloquean operaciones de carga/almacenamiento o el adaptador está en el estado de error, así como otras indicaciones.
En un ejemplo, el indicador de ocupado, indicador de estado de error permanente, e indicador de recuperación iniciada, se ajustan con base en supervisión realizada por el soporte lógico inalterable. Además, se ajusta el indicador de permiso por ejemplo con base en política; y la información BAR se basa en información de configuración descubierta durante un recorrido por la barra colectora del procesador (por ejemplo, soporte lógico inalterable del procesador) . Otros campos pueden ajustarse con base en configuración, inicialización y/o eventos. En otras modalidades, la entrada de tabla de función puede incluir más, menos o diferente información. La información incluida puede depender de las operaciones soportadas por o habilitadas por la función adaptadora.
Con referencia a la Figura 7C, en un ejemplo, el Campo 2 designa una dirección lógica 720 de un bloque de información de función PCI ( FIB) , que incluye información respecto a una función adaptadora asociada. El bloque de información de función se emplea para actualizar una entrada de tabla de dispositivo y/o entrada de tabla de función (u otra ubicación) asociada con la función adaptadora. La información se almacena en FIB durante inicio y/o configuración del adaptador y/o en respuesta a eventos particulares.
Mayores detalles respecto a un bloque de información de función (FIB) se describen con referencia a la Figura 7D. En una modalidad, un bloque de información de función 750 incluye los siguientes campos: Formato 751: Este campo especifica el formato de FIB.
Control de Intercepción 752: Este campo se emplea para indicar si la ejecución de huésped de instrucciones especificas por un huésped de modo paginable, resulta en intercepción de instrucción; Indicación de Error 754: Este campo incluye la indicación de estado de error para acceso de memoria directa e interrupciones de adaptador. Cuando el bit se ajusta (e.g., 1), uno o más errores se han detectado mientras que realiza acceso de memoria directa o interrupción de adaptador para la función de adaptador; Carga/Almacenamiento Bloqueado 756: Este campo indica si están bloqueadas operaciones de carga/almacenamiento; Función PCI Válida 758: Este campo incluye un control de habilitación para la función adaptadora. Cuando el bit se ajusta (por ejemplo, 1), la función adaptadora se considera habilitada para operaciones E/S; Registro de Espacio de Dirección 760: Este campo incluye un control de habilitación de acceso a memoria directa para una función adaptadora. Cuando el campo se ajusta (por ejemplo, 1) se habilita acceso de memoria directo; Tamaño de Página 761: Este campo indica el tamaño de la página u otra unidad de memoria por un acceso de memoria DMA; Dirección Base PCI (PBA) 762: Este campo es una dirección base para un espacio de dirección en la memoria de sistema asignada a la función adaptadora. Representa la dirección virtual más baja a la que se permite una función adaptadora para utilizar para acceso de memoria directo al espacio de dirección DMA especificado; Limite de Dirección PCI (PAL) 764: Este campo representa la dirección virtual más alta que una función adaptadora se permite para acceso dentro del espacio de dirección DMA especificado; Puntero de Traducción de Dirección de Entrada/Salida (IOAT) 766: El puntero de traducción de dirección de entrada/salida designa la primera de cualesquiera tablas de traducción empleadas por una traducción de dirección virtual PCI o puede designar directamente la dirección absoluta de un cuadro de almacenamiento que es el resultado de traducción; Subclase de Interrupción (ISC) 768: Este campo incluye la subclase de interrupción empleada para presentar interrupciones de adaptador para la función adaptadora; Número de Interrupciones (NOI) 770: Este campo designa el número de códigos de interrupción distintos aceptados para una función adaptadora. Este campo también define el tamaño, en bits, del vector de bit de interrupción adaptador designado por una dirección de vector de bit de interrupción de adaptador y campos de desplazamiento de vector de bit de interrupción en el adaptador; Dirección de Vector de Bit de Interrupción de Adaptador (AIBV) 772: Este campo especifica una dirección del vector de bit de interrupción de adaptador para la función de adaptador. Este vector se emplea en procesamiento de interrupción; Desplazamiento de Vector de Bit de Interrupción de Adaptador 774: Este campo especifica el desplazamiento del primer bit vector de bit de interrupción de adaptador para la función de adaptador; Dirección de Bit de Resumen de Interrupción de Adaptador (AISB) 776: Este campo proporciona una dirección que designa el bit de resumen de interrupción de adaptador, que se emplea opcionalmente en procesamiento de interrupción; Desplazamiento de Bit de Resumen de Interrupción de Adaptador 778: Este campo proporciona el desplazamiento en el vector de bit de resumen de interrupción de adaptador; Dirección de Bloque de Medición de Función (FMB = Function Measurement Block) 780: Este campo proporciona una dirección de un bloque de medición de función empleado para recolectar medidas respecto a la función adaptadora; Clave de Bloque de Medición de Función 782: Este campo incluye una clave de acceso para el bloque de medición de función; Control de Notificación de Bit de Resumen 784 : Este campo indica si hay un vector de bit de resumen empleado; Señal de Autorización de Instrucción 786: Este campo se emplea para determinar si se autoriza un huésped de modo de almacenamiento paginable para ejecutar instrucciones PCI sin intervención de hospedero.
En un ejemplo, en z/Architecture , un huésped paginable se ejecuta en forma interpretativa por la instrucción inicia ejecución interpretativa (SIE = Start Interpretive Execution) , al nivel 2 de interpretación. Por ejemplo, el hipervisor de partición lógica (LPAR = Logical Partition) ejecuta la instrucción SIE para empezar la partición lógica en memoria física, fija. Si z/VM® es el sistema operativo en esa partición lógica, envía la instrucción SIE para ejecutar sus máquinas de huéspedes (virtuales) en su almacenamiento V=V (virtual) . Por lo tanto, el hipervisor LPAR utiliza SIE de nivel-1 y el hipervisor z/VM® utiliza SIE de nivel-2 SIE; y Formato de Traducción de Dirección 787: Este campo indica un formato selecto para traducción de dirección de la traducción de más alto nivel para utilizarse en traducción (por ejemplo tabla de segmento, tercera región, etc.). '; El bloque de información de función designado en la instrucción Modifica Controles de Función PCI, se utiliza para modificar una entrada de tabla de dispositivo selecto, una entrada de tabla de función y/u otros controles de soporte lógico inalterable asociados con la función adaptadora designada en la instrucción. Al modificar la entrada de tabla de dispositivo, la entrada de tabla de función y/u otros controles de soporte lógico inalterable, se proporcionan ciertos servicios para el adaptador. Estos servicios incluyen por ejemplo interrupciones de adaptador; traducciones de dirección; reajuste reinicialización de estado de error; reajuste de carga/almacenamiento bloqueado; ajuste de parámetros de medición de función; y ajuste de control de intercepción.
Una modalidad de la lógica asociada con la instrucción Modifica Controles de Función PCI se describe con referencia a la Figura 8. En un ejemplo, se envía la instrucción por un sistema operativo (u otra configuración) y se ejecuta por el procesador (por ejemplo soporte lógico inalterable) que ejecuta el sistema operativo. En los presentes ejemplos, la instrucción y funciones de adaptador son basadas en PCI. Sin embargo, en otros ejemplos, una arquitectura de adaptador diferente e instrucciones correspondientes pueden emplearse.
En un ejemplo, el sistema operativo proporciona los siguientes operandos a la instrucción (por ejemplo, en uno o más registros designados por la instrucción) : el identificador de función PCI; el identificador de espacio de dirección DMA; un control de operación; y una dirección de bloque de información de función.
Con referencia a la Figura 8, inicialmente, se hace una determinación de si la instalación : permite que se instale una instrucción Modifica Controles de Función PCI, CONSULTA 800. Esta determinación se hace por ejemplo al verificar un indicador almacenado por ejemplo en un bloque de control. Si no se hace la instalación, se proporciona una condición de excepción, ETAPA 802. De otra forma, se hace una determinación de si la instrucción se envió por un huésped de modo de almacenamiento paginable (u otro huésped), CONSULTA 804. De ser afirmativo, el sistema operativo hospedero emulará la operación para ese huésped, ETAPA 806.
De otra forma, se hace una determinación de si uno o más de los operandos están alineados, CONSULTA 808. Por ejemplo, se hace una determinación de si la dirección del bloque de información de función está en una frontera de doble palabra. En un ejemplo, esto es opcional. Si los operandos no se alinean, entonces se proporciona una condición de excepción, ETAPA 810.
De otra forma, se hace una determinación de si el bloque de información de función es accesible, CONSULTA 812. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 814.
De otra forma, se hace una determinación de si el identificador que se proporciona en los operandos de la instrucción de Modifica Controles de Función PCI se habilita, CONSULTA 816. En un ejemplo, esta determinación se realiza al verificar un indicador de habilitar en el identificador . Si el identificador no se habilita, entonces se proporciona condición de excepción, ETAPA 818.
Si el identificador se habilita, entonces el identificador se utiliza para localizar una entrada de tabla de función, ETAPA 820. Esto es, al menos una porción del identificador se emplea como un índice en la tabla de función para localizar la entrada de tabla de función correspondiente a la función adaptadora para la cual se van establecer parámetros operacionales.
Se hace una determinación de si se encontró la entrada de tabla de función, CONSULTA 822. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 824. De otra forma, si la configuración que emite la instrucción es un huésped, CONSULTA 826, entonces se proporciona una condición de excepción (por ejemplo, intercepción al hospedero), ETAPA 828. Esta consulta puede ser ignorada si la configuración no es un huésped u otras autorizaciones puedan verificarse, si se designan.
Se hace entonces una determinación de si la función se habilita, CONSULTA 830. En un ejemplo, se hace esta determinación al verificar un indicador de habilitación en la entrada de tabla de función. Si no se habilita, entonces se proporciona una condición de excepción, ETAPA 832.
Si se habilita la función, entonces se hace una determinación de si la recuperación es activa, CONSULTA 834. Si la recuperación es activa como se determina por un indicador de recuperación en la entrada de tabla de función, entonces se proporciona una condición de excepción, ETAPA 836. Sin embargo, si no está activa la recuperación, entonces se hace una determinación adicional de si la función está ocupada, CONSULTA 838. Esta determinación se hace al verificar el indicador de ocupado en la entrada de tabla de función. Si la función está ocupada, entonces se proporciona condición de ocupado, ETAPA 840. Con la condición de ocupado, puede reintentarse la instrucción, en lugar de retirarse.
Si la función no está' ocupada, entonces se hace una determinación adicional de si el formato de bloque de información de función es válido, CONSULTA 842. Por ejemplo, el campo de formato de FIB se verifica para determinar si este formato es soportado por el sistema. Si es válido, entonces se proporciona una condición de excepción, ETAPA 844. Si el formato de bloque de información de función es válido, entonces se hace una determinación adicional de si el control de operación especificado en los operandos de la instrucción es válido, CONSULTA 846. Esto es, es el control de operación de uno de los controles de operación especi icados para esta instrucción. Si es inválido, entonces se proporciona condición de excepción, ETAPA 848. Sin embargo, si es válido el control de operación, entonces se especifica el procesamiento continúa con el control de operación especifico .
En un ejemplo, el control de operación es una operación registra interrupciones de adaptador, que se emplea para controlar interrupciones de adaptador. En respuesta a este control de operación, los parámetros de función de adaptador relevantes a interrupciones de adaptador se ajustan en la entrada de tabla de dispositivo con base en los contenidos apropiados del bloque de información de función.
Una modalidad de la lógica asociada con esta operación se describe con referencia a la FIGURA 9. Como un ejemplo, los operandos para esta operación, que se obtienen del bloque de formación de función, incluyen por ejemplo: una subclase de interrupción (ISC)*; número de interrupciones permitidas (NOI) ; un desplazamiento de vector de bit para interrupción de adaptador (AIBVO) ; una notificación de resumen (S) ; un desplazamiento de vector de bit para resumen de interrupción de adaptador (ABVSO) ; una dirección de vector de bit de interrupción de adaptador (AIBV) ; y una dirección de vector de bit de resumen para interrupción de adaptador (AISB) .
Con referencia a la FIGURA 9, inicialmente , se hace una determinación de si el número de interrupciones (NOIs) especificado en FIB es mayor que un máximo dependiente de modelo, CONSULTA 900. De ser asi, entonces se proporciona condición de excepción, ETAPA 902. Sin embargo, si el número de interrupciones no es mayor que el máximo dependiente de modelo, entonces se hace una determinación adicional de si el número de interrupciones agregadas al desplazamiento de vector de bit de interrupción de adaptador (NOI + AIBVO) es mayor que un máximo dependiente de modelo, CONSULTA 904. De ser asi, entonces se proporciona condición de excepción, ETAPA 906. Si NOI más AIBVO no es mayor que un máximo dependiente a modelo, entonces se hace una determinación adicional de si la dirección AIBV más NOI se extiende por un limite de k, CONSULTA 908. Si se extiende por limite de 4k, entonces se proporciona condición de excepción, ETAPA 910.
De otra forma, se hace una determinación de si suficientes recursos están disponibles para cualesquiera recursos requeridos, ETAPA 912. Si no hay suficientes recursos, entonces se proporciona una condición de excepción, ETAPA 914.
De otra forma, se hace una determinación de si interrupciones de adaptador ya están registradas para esta función, ETAPA 916. En una modalidad,, esto se ha determinado al verificar uno o más de los .parámetros (es decir en el DTE/FTE) . En particular, parámetros asociados con interrupciones, tales como NOI, se verifican. Si los campos están poblados, entonces el adaptador se registra para interrupciones. Si el adaptador ya está registrado, entonces se proporciona condición de excepción, ETAPA 918. De otra forma, los parámetros de interrupción se obtienen de FIB y colocan en la entrada de tabla de dispositivo y opcionalmente, en la entrada de tabla de función correspondiente (FTE) (u otra ubicación especificada) . También, un indicador de habilitación MSI se ajusta en DTE, ETAPA 920. Esto es, los parámetros de función PCI relevantes a interrupción de adaptador se establecen en DTE y opcionalmente en FTE, con base en la información recuperada del bloque de formación de función. Estos parámetros incluyen, por ejemplo, las direcciones ISC, NOI, AIBVO, S, AIBVSO, AIBV y la dirección AISB.
Además de lo anterior, otro control de operación que puede especificarse es una operación de dar de baja interrupciones de adaptador, un ejemplo de lo cual se describe con referencia a la FIGURA 10. Con esta operación, los parámetros de función de adaptador relevantes a interrupción de adaptador se reinicializan.
Con referencia a la FIGURA 10, inicialmente se hace una determinación de si el adaptador especificado por el identificador de función se registra para interrupciones, CONSULTA 1000. De no ser así, entonces se proporciona condición de excepción, ETAPA 1002. De otra forma, los parámetros de interrupción en la entrada de tabla de función (u otra ubicación) y entrada de tabla de dispositivo correspondiente se ajustan a ceros, CONSULTA 1004. En un ejemplo, estos parámetros incluyen las direcciones ISC, NOI, AIBVO, S, AIBSO, AIBV y la dirección AISB.
Como se describió anteriormente, en una modalidad, para obtener la información respecto a una función adaptadora, se emplea una instrucción Llama a Procesador Lógico. Una modalidad de esta instrucción se ilustra en la FIGURA 11A. Como se muestra, en un ejemplo, una instrucción Llama a Procesador Lógico (CLP = Cali Logical Processor) 1100 incluye un código de operación 1102 que indica que es la instrucción Llama a Procesador Lógico; y una indicación para un comando 1104. En un ejemplo, esta indicación es una dirección de un bloque de solicitud que describe el comando a realizar, y la información en el bloque de solicitud depende del comando. Ejemplos de bloques de solicitud y bloques de respuesta correspondientes para diversos comandos, se describen con referencia a las Figuras 11B-13B.
Con referencia inicialmente a la FIGURA 11B, un bloque de solicitud para un comando lista de funciones PCI se proporciona. El comando lista de funciones PCI se emplea para obtener una lista de Funciones PCI que se asignan a la configuración del solicitante (por ejemplo, el sistema operativo solicitante) . Un bloque de solicitud 1120 incluye una cantidad de parámetros, tales como por ejemplo: Campo de longitud 1122: Este campo indica la longitud del bloque de solicitud; Código de Comando 1124: Este campo indica el comando lista de funciones PCI; y Señal Reanuda 1126: Este campo es un entero que se emplea ya sea para iniciar un nuevo comando lista de funciones PCI o reanuda un comando lista de funciones PCI previo, como se describe con mayor detalle a continuación.
Cuando el campo señal de reanuda en el bloque de solicitud de comando incluye, por ejemplo un valor de cero, se solicita una nueva lista de funciones PCI. Cuando el campo señal de reanuda incluye por ejemplo un valor no cero, que se regresó de un comando lista de funciones PCI previo, se solicita una continuación de una lista previa de funciones PCI.
En respuesta a emitir y procesar la instrucción Llama Procesador Lógico para un comando lista funciones PCI, se regresa un bloque de respuesta. Una modalidad del bloque respuesta se ilustra en la Figura 11C. En un ejemplo, un bloque de respuesta 1150 para un comando lista funciones PCI incluye: Campo de longitud 1152: Este campo indica la longitud de bloque de respuesta; Código de Respuesta 1154: Este campo indica un estado del comando; Lista Función PCI 1156: Este campo indica una lista de una o más funciones PCI disponibles al sistema operativo solicitante; Señal Reanuda 1158: Este campo indica si se solicita una continuación de una lista previa de funciones PCI. En un ejemplo, cuando la señal reanuda en el bloque de solicitud y la señal reanuda en el bloque de respuesta son cero, todas las funciones PCI asignadas a la configuración solicitante se representan en la lista de función PCI; si la señal reanuda en el bloque de solicitud es cero y la señal reanuda en el bloque de respuesta no es cero, funciones PCI adicionales asignadas a la configuración de solicitud pueden existir que no se han representado en la lista; si la señal reanuda en el bloque de solicitud no es cero y la señal reanuda en el bloque de solicitud es cero, desde el punto reanuda, funciones PCI restantes asignadas a la configuración solicitante, se representan en la lista; cuando tanto las señales de reanuda como en el bloque de solicitud y respuesta no son cero desde el punto de reanudación, pueden existir funciones PCI adicionales asignadas a la configuración solicitante que no se han representado en ninguna lista de función PCI asociada. La señal reanuda permanece válida por un periodo de tiempo indefinido después de ser regresada, pero puede ser inválida debido a una variedad de razones dependientes de modelo, incluyendo tiempo transcurrido de carga del sistema; Datos Dependientes de Modelo 1160: Este campo incluye datos que dependen del sistemarNúmero de Funciones PCI 1162: Este campo indica el número máximo de funciones PCI soportadas por la instalación; y Tamaño de Entrada 1164: Este campo indica el tamaño de cada entrada en la lista de función PCI.
Mayores detalles respecto a la lista de función PCI se describen con referencia a la Figura 11D. En un ejemplo, la lista de función PCI incluye una pluralidad de entrada y cada entrada 1156 incluye ' la siguiente información, como un ejemplo: ID de Dispositivo 1170: Este campo indica el adaptador E/S (I/O) asociado con la función PCI correspondiente; ID de Distribuidor 1172: Este campo identifica el fabricante del adaptador E/S asociado con la función PCI correspondiente; Identificador de Función 1174: Este campo incluye un identificador persistente de la función PCI; Identificador de Función 1176: Este campo identifica una función PCI. El identificador de función PCI almacenado es un identificador general cuando un bit especifico del identificador es cero, y es un identificador habilitado cuando ese bit es uno. Si la función PCI se desactiva, un identificador de función PCI general se almacena. Si se habilita la función PCI, se almacena un identificador de función PCI habilitado. Un identificador de función PCI no es, en un ejemplo, persistente más allá de IPL, que difiere de la ID de función PCI, que es persistente y se establece por la duración de la definición de configuración E/S; y Estado de Configuración 1178: Este campo indica el estado de la función PCI. Cuando este indicador, por ejemplo es cero, el estado es reposo, y cuando por ejemplo, es uno, el estado es configurado. Cuando está en reposo, el identificador de función PCI es el identificador de función PCI general, y cuando está configurado, ya es el identificador de función PCI general o habilitado dependiendo de si se habilita la función PCI.
Subsecuente a obtener la lista de funciones de adaptador, puede obtenerse información respecto a los atributos de una función selecta como se designa por un identificador de función PCI especificado. Esta información puede obtenerse al enviar una instrucción CLP con un comando de función consulta.
Una modalidad del bloque de solicitud para un comando de función PCI de consulta se describe con referencia a la Figura 12A. En un ejemplo, el bloque de solicitud 1200 incluye por ejemplo: Campo de Longitud 1202: Este campo indica la longitud del bloque de solicitud; Código de Comando 1204: Este campo indica el comando de función PCI de consulta; y Identificador de Función 1206: Este campo incluye el identificador de función PCI (por ejemplo, general o habilitado) que designa la función PCI a consultar.
En respuesta a enviar la instrucción Llama a Procesador Lógico para el comando consulta función PCI, se regresa un bloque de respuesta. Una modalidad del bloque de respuesta se ilustra en la Figura 12B. , En un ejemplo, un bloque de respuesta 1250 incluye lo siguiente: Longitud 1252: Este campo indica la longitud de bloque de respuesta; Código de Respuesta 1254: Este campo indica un estado del comando; ID de Grupo de Función 1256: Este campo indica el identificador de grupo de función PCI. Un identificador de grupo de función PCI se emplea para asociar un grupo de funciones PCI con un conjunto de atributos (también referido aquí como características) . Cada función PCI con el mismo identificador de grupo de función PCI tienen el mismo conjunto de atributos; ID de Función 1258: La ID de función PCI es un identificador persistente de la función PCI originalmente especificada por el identificador de función PCI y se establece por la duración de la definición de configuración de E/S ; Adaptador de Canal Físico 1260: Este valor representa una identificación dependiente de modelo de la ubicación del adaptador E/S físico que corresponde a la función PCI; Registros de Dirección Base (BARs = Base Address Registers) 1 ...n 1262: Este campo incluye una pluralidad de enteros sin signo, designados como BAR0 - BARn, que están asociados con la función PCI originalmente . especificada, y cuyos valores también se almacenan en los registros de dirección base asociados con la función PCI. Cada BAR especifica la dirección inicial de un espacio de memoria o espacio E/S dentro del adaptador, y también indica el tipo de espacio de dirección, esto es si es un espacio de memoria de 64 ó 32 bits, o un espacio E/S de 32 bits, como ejemplos: ; Tamaño 1 ....n 1264: Este campo incluye una pluralidad de enteros sin signo, designados como SIZE0 -SIZEn. El valor de un campo de Tamaño (Size), cuando no-cero representa el tamaño de cada espacio de dirección con cada entrada correspondiente a un BAR previamente descrito.
DMA Disponible Inicial 1266: Este campo incluye una dirección que indica el inicio de un intervalo de direcciones PCI que están disponibles para las operaciones DMA; DMA Disponible Final 1268: Este campo incluye un valor que indica el final de un intervalo de direcciones PCI que están disponibles para operaciones DMA.
Además de obtener atributos respecto a la función adaptadora especifica, atributos también pueden obtenerse respecto al grupo que incluye esta función. Estos atributos comunes pueden obtenerse de emitir una instrucción CLP con un comando de consulta de grupo de función PCI. Este comando se emplea para obtener un conjunto de características que se soportan para un grupo de una o más funciones PCI designadas por el identificador de grupo de función PCI especificado. Un identificador de grupo de función PCI se emplea para asociar un grupo de funciones PCI con el mismo conjunto de características. Una modalidad de un bloque de solicitud para el comando consulta grupo de función PCI, se describe con referencia a la Figura 13 A. En un ejemplo, el bloque de solicitud 1300 incluye lo siguiente: Campo de longitud 1302: Este campo indica la longitud del bloque de solicitud; Código de Comando 1304: Este campo indica el comando consulta grupo de función PCI; y ID de Grupo de Función 1306: Este campo especifica el identificador de grupo de función PCI para el cual se van a obtener atributos.
Respuesta a enviar y procesar la instrucción Llama Procesador Lógico, con un comando consulta de grupo de función PCI, se regresa un bloque de respuesta. Una modalidad del bloque de respuesta se ilustra en la Figura 13B. En un ejemplo, un bloque de respuesta 1350 incluye: Campo de Longitud 1352: Este campo indica la longitud del bloque de respuesta; Código de Respuesta 1354: Este campo indica un estado del comando; Número de Interrupciones 1356: Este campo indica el número máximo de números de vector MSI consecutivos (es decir, indicadores de evento de interrupción) que son soportados por la instalación PCI por cada función PCI en el grupo de función PCI especificado. Los valores válidos posibles del número de interrupciones están en el intervalo de cero a 2,048, en un ejemplo; Versión 1358: Este campo indica la versión de la especificación PCI que está soportada por la instalación PCI a la cual se conecta el grupo de funciones PCI • designado por el identificador de grupo PCI especificado; Cuadro 1362: Este campo indica los tamaños de cuadro (o página) soportados para traducción de dirección E/S; Intervalo de Actualización de Bloque de Medición 1364: Este valor indica el intervalo de tiempo aproximado (por ejemplo, en milisegundos ) en el cual se actualiza el bloque de medición de función PCI; Máscara de Espacio de Dirección DMA 1366: Esto es un valor empleado para indicar que bits en una dirección PCI se emplean para identificar un espacio de dirección DMA; y Dirección MSI 1368: Este es un valor que se va a utilizar para las solicitudes de interrupción de señal de mensaje.
Los comandos función y lista de consulta descritos anteriormente recuperan información de, por ejemplo, la tabla de función. Al tiempo de inicio, o después de un enchufe en caliente de un adaptador, soporte lógico inalterable realiza un recorrido de barra colectora para determinar la ubicación del adaptador y . determinar sus características básicas. Esta información se almacena por el soporte lógico inalterable en la entrada de tabla de función (FTE) por cada adaptador. La accesibilidad al adaptador se determina con base en una política establecida por un administrador de sistema y también se establece por soporte lógico inalterable en FTE. Los comandos función y lista de consulta pueden recuperar esta información y almacenarla en los bloques de respuesta respectivos, accesibles al sistema operativo.
Además, la información de grupo se basa en una infraestructura de E/S de sistema determinado y las capacidades del soporte lógico inalterable y el concentrador E/S. Esto puede almacenarse en FTE o cualquier otra ubicación conveniente para posterior recuperación durante el proceso de consulta. En particular, el comando de grupo de consulta recupera la información y la almacena en su bloque de respuesta accesible al sistema operativo.
Anteriormente se describe en detalle una capacidad para convertir una interrupción de señal de mensaje PCI en una notificación de evento adaptador E/S a un sistema operativo. Esto permite una solicitud de interrupción de baja latencia; un envío de MSIs desde un número relativamente grande de funciones PCI al sistema operativo; y retener el sabor de la designación de vector MSI que adapta el MSI en la arquitectura de notificación de evento adaptador. Adapta para permitir que el concentrador E/S conecte con una cantidad relativamente grande de funciones PCI y elimina el problema de cada escritura a un vector MSI que genera una interrupción única.
En las modalidades aquí descritas, los adaptadores son adaptadores PCI. PCI, como se emplea aquí, se refiere a cualesquiera adaptadores implementados de acuerdo con una especificación basada en PCI, como se define por el grupo de interés especial de interconexión de componentes periféricos (PCI-SIG = Peripheral Component Interconnect Special Interest Group) , incluyendo pero no limitado a PCI o PCIe. En un ejemplo particular, el Express de Interconexión de Componentes Periféricos (PCIe = Peripheral Component Interconnect Express) es un nivel de componentes de interconexión estándar que define un protocolo de comunicación bidireccional para transacciones entre adaptadores E/S y sistemas hospederos; Comunicaciones PCIe son encapsuladas en paquetes de acuerdo con la norma PCIe para transmisión en una barra colectora PCIe. Transacciones que se originan en adaptadores E/S y que terminan en sistemas hospederos, se refieren como transacciones de salida. Transacciones que se originan en sistemas hospederos y que terminan en adaptadores E/S, se refieren como transacciones de entrada. La topología PCIe se basa en enlaces unidireccionales punto-a-punto que son apareados (por ejemplo, un enlace de entrada, un enlace de salida) para formar la barra colectora PCIe. La norma PCIe se mantiene y publica por PCI-SIG.
Como se apreciará por una persona con destreza en la especialidad, aspectos de la presente invención pueden incorporarse como un sistema, método o producto de programa de computadora. De acuerdo con esto, aspectos de la presente invención pueden tomar la forma de una modalidad totalmente en equipo físico, una modalidad totalmente en soporte lógico (incluyendo soporte lógico inalterable, soporte lógico residente, micro código, etc.) o una modalidad que combina aspectos de soporte lógico y equipo físico que en general puede ser referida aquí como "circuito", "módulo" o "sistema". Además, aspectos de la presente invención pueden tomar la forma de un producto de programa de computadora incorporado en uno o más medios legibles por computadora que tienen un código de programa legible por computadora ahí incorporado.
Cualquier combinación de uno o más medios legibles por computadora puede utilizarse. El medio legible por computadora puede ser un medio de almacenamiento legible por computadora, un medio de almacenamiento legible por computadora puede ser por ejemplo pero no limitado a un sistema, aparato o dispositivo electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor o cualquier combinación conveniente de los anteriores. Ejemplos más específicos (una lista no exhaustiva) del medio de almacenamiento legible por computadora incluye los siguientes: una conexión eléctrica que tiene uno o más cables, un disquete de computadora portátil, un disco duro, una memoria de acceso aleatorio (RAM) , una memoria de sólo lectura (ROM) , una memoria de sólo lectura borrable programable (EPROM o memoria Flash) , una fibra óptica, una memoria de sólo lectura en disco compacto portátil (CD-ROM) , un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético o cualquier combinación de los anteriores. En el contexto de este documento, un medio de almacenamiento legible por computadora puede ser cualquier medio tangible que puede contener o almacenar un programa para uso por o en conexión con un sistema, aparato o dispositivo para ejecución de instrucciones.
Ahora con referencia a la Figura 14, en un ejemplo, un producto de programa de computadora 1400 incluye por ejemplo uno o más medios de almacenamiento legibles por computadora 1402, para almacenar medios de código de programa legible por computadora o lógica 1404, para proporcionar y facilitar uno o más aspectos de la presente invención.
Código de programa incorporado en un medio legible por computadora puede ser transmitido utilizando un medio apropiado, incluyendo pero no limitado a inalámbrico, de línea física, cable de fibra óptica, RF, etc., o cualquier combinación conveniente de los anteriores.
Código de programa de computadora para llevar a cabo operaciones para aspectos de la presente invención, puede describirse en cualquier combinación de uno o más lenguajes de programación, incluyendo lenguaje de programación orientado por objetos, tal como Java, Smalltalk, C++ o semejantes y lenguajes de programación de procedimiento convencionales tales como el lenguaje de programación "C", ensamblador o lenguajes de programación similares. El código de programa puede ejecutarse completamente en la computadora del usuario, en forma parcial en la computadora del usuario, como un paquete de soporte lógico autónomo, parcialmente en la computadora del usuario y parcialmente en una computadora remota o totalmente en la computadora remota o servidor. En este último escenario, la computadora remota puede conectarse a la computadora del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia ( AN) , o la conexión puede realizarse por una computadora externa (por ejemplo a través de Internet utilizando un Proveedor de Servicios de Internet).
Aspectos de la presente invención se describen aquí con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de métodos, aparatos (sistemas) y productos de programa de computadora de acuerdo con modalidades de la invención. Se entenderá que cada bloque de las ilustraciones de diagrama de flujo y/o diagramas de bloques y combinaciones de bloques en las ilustraciones de diagramas de flujo y/o diagramas de bloques, pueden implementarse por instrucciones de programa de computadora. Estas instrucciones de programa de computadora pueden proporcionarse a un procesador de computadora de propósitos generales, computadora de propósitos especiales u otro aparato de procesamiento de datos programable para producir una máquina, tal que las instrucciones, que se ejecutan mediante el procesador de la computadora u otro aparato de procesamiento de datos programable, crean medios para implementar las funciones/actos especificados en el o los bloques de diagrama de bloques y/o diagrama ,de flujo.
Estas instrucciones de programa , de computadora también pueden almacenarse en un medio legible por computadora que puede dirigir una computadora, otro aparato de procesamiento de datos programable u otros dispositivos para funcionar una forma particular, tal que las instrucciones almacenadas en el medio legible por computadora producen un artículo de manufactura incluyendo instrucciones que implementan la función/acto especificado en el bloque o bloques de diagrama de bloques y/o diagrama de flujo.
Las instrucciones de programa de computadora también pueden cargarse en una computadora, otro aparato de procesamiento de datos programable u otros dispositivos para provocar una serie de etapas operacionales a realizarse en la computadora, otro aparato programable u otros dispositivos para producir un proceso implementado por computadora tal que las instrucciones que se ejecutan en la computadora u otro aparato programable, proporcionan procesos para la implementación de funciones/actos especificados en el bloque o bloques de diagrama de bloques y/o diagrama de flujo.
El diagrama de flujo y los diagramas de bloques en las figuras ilustran la arquitectura, funcionalidad y operación de posibles implementaciones de sistemas, métodos y productos de programa de computadora de acuerdo con diversas modalidades de la presente invención. En este aspecto, cada bloque en el diagrama de flujo o diagramas de bloques puede representar un módulo, segmento o porción de código, que comprende una o más instrucciones ejecutables para implementar la o las funciones lógicas especificadas. También habrá de notarse que en algunas implementaciones alternas, las funciones anotadas en el bloque pueden ocurrir fuera del orden anotado en las figuras. Por ejemplo, dos bloques mostrados en sucesión de hecho pueden ser ejecutados en forma sustancialmente concurrente o los bloques en ocasiones pueden ser ejecutados en el orden inverso, dependiendo de la funcionalidad involucrada. También se notará que cada bloque de los diagramas de bloques y/o ilustración de diagramas de flujo y combinaciones de bloques en los diagramas de bloques y/o ilustración de diagramas de flujo puede ser implementado por sistemas basados en equipo físico de propósitos especiales que realiza las funciones o actos especificados o combinaciones de instrucciones de computadora y equipo físico de propósitos especiales.
Además de lo anterior, uno o más aspectos de la presente invención se pueden proporcionar, ofrecer, desplegar, gestionar, dar servicio, etc., por un proveedor de servicio quien ofrece gestión o administración de ambientes de cliente. Por ejemplo, el proveedor de servicio puede crear, mantener, soportar, etc., código de computadora y/o infraestructura de computadora que realiza uno o más aspectos de la presente invención para uno o más clientes. En retorno, el proveedor de servicio puede recibir pago por el cliente bajo una suscripción y/o acuerdo de cuota como ejemplos. En forma adicional o alterna, el proveedor de servicio puede recibir pago de la venta de contenido publicitario a una o más terceras partes .
En un aspecto de la presente invención, una aplicación puede ser desplegada para desempeñar uno o más aspectos de la presente invención. Como un ejemplo, el despliegue de una aplicación comprende proporcionar infraestructura de computadora operable para realizar o desempeñar uno o más aspectos de la presente invención.
Como un aspecto adicional de la presente invención, una infraestructura de cómputo puede ser desplegada que comprende integrar código legible por computadora en un sistema de cómputo, en donde el código en combinación con el sistema de cómputo es capaz de realizar uno o más aspectos de la presente invención.
Como un aspecto adicional de la presente invención, un proceso para integrar infraestructura de cómputo comprende integrar código legible por computadora en un sistema de computadora puede ser proporcionado. El sistema de computadora comprende un medio legible por computadora, en donde el medio de computadora comprende uno o más aspectos de la presente invención. El código en combinación con el sistema de computadora es capaz de realizar uno o más aspectos de la presente invención.
Aunque diversas modalidades se describieron anteriormente, estas son sólo ejemplos. Por ejemplo, ambientes de cómputo de otras arquitecturas pueden incorporar y utilizar uno o más aspectos de la presente invención. Como un ejemplo, servidores diferentes a los servidores System z®, tales como servidores Power Systems u otros servidores ofrecidos por International Business Machines Corporation, o servidores de otras compañías, pueden incluir, utilizar y/o beneficiarse de uno o más aspectos de la presente invención. Además, aunque en el presente ejemplo los adaptadores y concentrador PCI se consideran una parte del servidor, en otras modalidades, no necesariamente deben considerarse como parte del servidor, sino simplemente considerados como acoplados a memoria del sistema y/u otros componentes de un ambiente de cómputo. El ambiente de cómputo no requiere ser un servidor. Además, aunque los adaptadores se basan en PCI, uno o más aspectos de la presente invención son utilizables con otros adaptadores u otros componentes E/S. El adaptador y adaptador PCI son solo ejemplos. Además, uno o más aspectos de la presente invención aplican' a esquemas de interrupción diferentes a PCI MSI. Aún más, aunque ejemplos se describen en donde se establecen bits, en otras modalidades, bytes u otro tipo de indicadores pueden establecerse. Aún más, DTE puede incluir más, menos o diferente información. Muchas otras variaciones son posibles.
Además, otros tipos de ambientes de cómputo pueden beneficiarse de uno o más aspectos de la presente invención. Como un ejemplo, un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa es utilizable, que incluye cuando menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de una barra colectora de sistema. Los elementos de memoria incluyen por ejemplo memoria local empleada durante ejecución actual del código de programa, almacenamiento a granel, y memoria caché, que proporciona almacenamiento temporal de al menos algún código de programa para reducir el número de códigos de tiempo deben recuperarse del balraacenamiento a granel durante ejecución.
Dispositivos de Entrada/Salida o E/S (1/0) (incluyendo pero no limitados a teclados, exhibidores, punteros, DASD, cinta, CDs, DVDs, unidades de almacenamiento en miniatura y otros medios de memoria, etc.) puede acoplarse al sistema ya sea en ;forma directa o a través de controladores E/S intermedios o intercalados. Adaptadores de red también pueden acoplarse al sistema para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes públicas o privadas intercaladas. Módems, módems de cable y tarjetas Ethernet son sólo unos cuantos de los tipos disponibles de adaptadores de red.
Con referencia a la Figura 15, componentes representativos de un sistema de Computadora Hospedera 5000 para implementar uno o más aspectos de la presente invención son ilustrados. La computadora hospedera representativa 5000 comprende unoa o más CPUs 5001 en comunicación con la memoria de computadora (es decir, almacenamiento central) 5002, asi como interfases E/S (I/O) para dispositivos de medio de almacenamiento 5011 y redes 5010 para comunicar con otras computadoras o SANs y semejantes. La CPU 5001 cumple con una arquitectura que tiene un conjunto de instrucciones de arquitectura y funcionalidad de arquitectura. La UPC (CPU) 5001 puede tener traducción de dirección dinámica (DAT = Dynamic Address Translation) 5003 para transformar direcciones de programa (direcciones virtuales) en direcciones reales de memoria. Una DAT típicamente incluye una memoria intermedia de traducción anticipada (TLB) 5007 para poner en caché traducciones, de manera tal que accesos posteriores al bloque de la memoria de computadora 5002 no requieren el retardo de la traducción de dirección. Típicamente, se emplea una caché 5009 entre la memoria de computadora 5002 y el procesador 5001. La caché 5009 puede jerárquicamente tener una gran caché disponible a más de una UPC (CPU) y cachés más pequeñas, más rápidas (de menor nivel) entre la caché grande y cada CPU. En algunas implementaciones, las cachés de menor nivel se dividen para proporcionar cachés de bajo nivel separadas para búsqueda de instrucciones y accesos de datos. En una modalidad, se busca una instrucción de la memoria 5002, por una unidad de búsqueda de instrucciones 5004 mediante una caché 5009. La instrucción se descodifica en una unidad de descodificación de instrucciones 5006 y despacha (con otras instrucciones en algunas modalidades) para la unidad o unidades de ejecución de instrucciones 5008. Típicamente, varias unidades de ejecución 5008 se emplean, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción de ramificación. La instrucción se ejecuta por la unidad de ejecución, con acceso a operandos de registros especificados por instrucción o memoria según se requiera. Si se va a tener acceso a un operando (cargado o almacenado) de la memoria 5002, una unidad de carga/almacenamiento 5005 típicamente maneja el acceso bajo control de la instrucción que se ejecuta. Pueden ejecutarse instrucciones en circuitos de equipo físico o en micro código interno (soporte lógico inalterable) o una combinación de ambos.
Como se anotó, un sistema de computadora incluye información en almacenamiento local (o principal), así como direccionamiento, protección y referencia y grabación de cambio. Algunos aspectos de direccionamiento incluyen el formato de direcciones, el concepto de espacios de direcciones, los diversos tipos de direcciones y la forma en la que un tipo de dirección se traduce a otro tipo de dirección. Algo del almacenamiento principal incluye ubicaciones de almacenamiento permanentemente asignadas. Almacenamiento principal proporciona un sistema con almacenamiento de rápido acceso directamente direccionable de datos. Tanto datos como programas se cargarán en el almacenamiento principal (de dispositivos de alimentación) antes de que puedan procesarse.
El almacenamiento principal puede incluir uno O más almacenamientos de memoria intermedia de más rápido acceso, más pequeños, en ocasiones denominados cachés. Una caché típicamente se asocia en forma física con una CPU o un procesador E/S (I/O) . Los efectos, excepto en desempeño de la construcción física y uso de medio dé almacenamiento distinto en general no son observables por el programa.
Cachés separadas puede mantenerse para instrucciones y para operandos de datos. Información dentro de una caché se mantiene en bytes contiguos en una frontera integral denominada un bloque de caché o línea de caché (o línea, en breve) . Un modelo puede proporcionar una instrucción EXTRACT CACHE ATTRIBUTE que regresa el tamaño de una línea de caché en bytes. Un modelo también puede proporcionar instrucciones PREFETCH DATA y PREFETCH DATA RELATIVE LONG que afectan en la búsqueda previa de almacenamiento en los datos o instrucciones de caché o la liberación de datos de la caché.
El almacenamiento se ve como una sarta larga horizontal de bits. Para la mayoría de los operandos, accesos al almacenamiento proceden en una secuencia de izquierda-a- derecha. La sarta de bits se subdivide en unidades de ocho bits. Una unidad de ocho bits se denomina un byte, que es el bloque de construcción básico de todos los formatos de información. Cada ubicación de byte en almacenamiento se identifica por un entero no negativo único, que es la dirección de esa ubicación de byte o simplemente la dirección de byte. Ubicaciones de byte adyacentes tienen direcciones consecutivas, partiendo con cero a la izquierda y continuando en una secuencia de izquierda-a-derecha. Las direcciones son enteros binarios sin firma y son de 24, 31, ó 64 bits.
Información se transmite entre la unidad de almacenamiento y una UPC (CPU) o un subsistema de canal de un byte, o un grupo de bytes a la vez. A menos que se especifique de otra forma por ejemplo en z/Architecture®, un grupo de bytes en almacenamiento se direcciona por el byte más a la izquierda del grupo. El número de bytes en el grupo ya es especificado en forma implícita o explícita por la operación a realizar. Cuando se utiliza en una operación de UPC, un grupo de bytes se denomina un campo. Dentro de cada grupo de bytes, por ejemplo en z/Architecture®, los bits se enumeran en una secuencia de izquierda-a-derecha. En z/Architecture®, los bits más a la izquierda en ocasiones son referidos como bits de "alto orden" y los bits más a la derecha son los bits de "bajo orden". Números de bits no son direcciones de almacenamiento sin embargo. Sólo pueden direccionarse bytes. Para operar en bits individuales de un byte en almacenamiento, se tiene acceso a todo el byte. Los bits en un byte se enumeran 0 a 7, de izquierda a derecha (por ejemplo en z/Architecture®) . Los bits en una dirección puede enumerarse 8-31 ó 40-63 para direcciones de 24 bits o 1-31 ó 33-63 para direcciones de 31 bits; se enumeran 0-63 para direcciones de 64 bits. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que constituyen el formato se enumeran consecutivamente partiendo de' cero. Para propósitos de detección de error, y de preferencia para corrección, uno o más bits de verificación pueden transmitirse con cada byte o con un grupo de bytes. Estos bits de verificación o comprobación se generan en forma automática por la máquina y no pueden ser controlados directamente por el programa. Capacidades de almacenamiento se expresan en números de bytes. Cuando la longitud de un campo de operando-almacenamiento se implica por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser de uno, dos, cuatro, ocho o diez y seis bytes. Campos más grandes pueden ser implementados para algunas instrucciones. Cuando la longitud de un campo de operando-almacenamiento no se implica sino que se establece explícitamente, el campo se dice que tiene una longitud variable. Operandos de longitud variable pueden variar en longitud por incrementos de un byte (o con algunas instrucciones en múltiplos de dos bytes u otros múltiplos) . Cuando se coloca información en almacenamiento, los contenidos de sólo esas ubicaciones de bytes se reemplazan que se incluyen en el campo designado, aun cuando el ancho de la ruta física para almacenamiento puede ser mayor que la longitud del campo que se almacena.
Ciertas unidades de información estarán en una frontera integral en almacenamiento. Una frontera se denomina integral para una unidad de información cuando su dirección de almacenamiento es un múltiplo de la longitud de la unidad en bytes. Nombres especiales se dan a los campos de 2, 4, 8, y 16 bytes en una frontera integral. Media palabra es un grupo de dos bytes consecutivos en una frontera de dos bytes y es el bloque de construcción básico de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos en una frontera de cuatro bytes. Una doble palabra es un grupo de ocho bytes consecutivos en una frontera de ocho bytes. Una palabra cuádruple es un grupo de 16 bytes consecutivos en una frontera de 16 bytes. Cuando direcciones de almacenamiento designan medias palabras, palabras, dobles palabras, y palabras cuádruples, la representación binaria de la dirección contiene uno, dos, tres o cuatro bits cero más a la derecha, respectivamente. Instrucciones estarán en fronteras integrales de dos bytes. Los operandos de almacenamiento de la mayoría de las instrucciones no tienen requerimientos de frontera-alineamiento .
En dispositivos que implementan cachés separadas para instrucciones y operandos de datos, un retardo significante puede ser experimentado si el programa almacena en una línea de caché de la cual subsecuentemente se buscan instrucciones, independientemente de si el almacenamiento altera las instrucciones 'que se buscan subsecuentemente.
En una modalidad, la invención puede ser practicada por soporte lógico (en ocasiones referido como código interno con licencia, soporte lógico inalterable, micro código, mili código, pico código y semejantes, cualquiera de los cuales será consistente con la presente invención) . Con referencia a la FIGURA 15, a código de programa de soporte lógico que incorpora la presente invención típicamente se tiene acceso por el procesador 5001 del sistema hospedero 5000 de los dispositivos de medio de almacenamiento de largo plazo 5011, tal como una unidad de CD-ROM, unidad de cinta o disco duro. El código de programa o soporte lógico puede ser incorporado en cualquiera de una variedad de medios conocidos para utilizar con un sistema de procesamiento de datos, tal como un disquete, disco duro o CD-ROM. El código puede ser distribuido en estos medios o puede ser distribuido en los usuarios desde la memoria de computadora 5002 o almacenamiento de un sistema de computadora sobre una red 5010 a otros sistemas de computadoras para utilizar por los usuarios de estos otros sistemas.
El código de programa de soporte lógico incluye un sistema operativo que controla la función e interacción de los diversos componentes de computadora y uno o más programas de aplicaciones. El código de programa normalmente se busca en el dispositivo del medio de almacenamiento 5011 al almacenamiento de computadora de velocidad relativamente superior 5002 en donde está disponible para procesar por el procesador 5001. Las técnicas y métodos para incorporar el código de programa de soporte lógico en memoria, en medio físico, y/o distribución de código de soporte lógico por redes son bien conocidas y no se discutirán más aquí. El código de programa, cuando se crea y almacena en un medio tangible (incluyendo pero no limitado a módulos de memoria electrónica (RAM) , memoria flash, Discos Compactos (CDs) , DVDs, Cinta Magnética y semejantes, a menudo se refieren como un "producto de programa de computadora". El medio de producto de programa de computadora típicamente es legible por un circuito de procesamiento de preferencia en un sistema de computadora para ejecución por el circuito de procesamiento .
La FIGURA 16 ilustra una estación de trabajo representativa o sistema de equipo físico de servidor en donde puede practicarse la presente invención. El sistema 5020 de la FIGURA 16 comprende un sistema de computadora base representativo 5021, tal como una computadora personal, una estación de trabajo o un servidor, incluyendo dispositivos periféricos opcionales. El sistema de computadora base 5021 incluye uno o más procesadores 5026 y una barra colectora empleada para conectar y habilitar comunicación entre el o los procesadores 5026 y los otros componentes del sistema 5021 de acuerdo con técnicas conocidas. La barra colectora conecta el procesador 5026 con la memoria 5025 y almacenamiento a largo plazo 5027 que puede incluir un disco duro (incluyendo cualquiera de medios magnéticos, CD, DVD y Memoria Flash por ejemplo) o una unidad de cinta, por ejemplo. El sistema 5021 también puede incluir un adaptador de interfase de usuario, que conecta el microprocesador 5026 mediante la barra colectora por uno o más dispositivos de interfase, tal como un teclado 5024, un ratón 5023, una impresora/digitalizador o escáner 5030 y/u otros dispositivos de interfase, que puede ser cualquier dispositivo de interfase de usuario, tal como una pantalla sensible al tacto, botonera de entrada digitalizada, etc. La barra colectora también conecta un dispositivo de exhibición 5022, tal como una pantalla LCD o monitor, al microprocesador 5026 mediante un adaptador de exhibición .
El sistema 5021 puede comunicarse con otras computadoras o redes de computadoras mediante un adaptador de red capaz de comunicar 5028 con una red 5029. Adaptadores de red ejemplares son canales de comunicaciones, anillos de testigo, Ethernet o módems . En forma alterna, el sistema 5021 puede comunicarse utilizando una interfase inalámbrica, tal como una tarjeta de datos de paquete digital celular (CDPD = Cellular Digital Packet Data) . El sistema 5021 puede estar asociado con estas otras computadoras en una Red de Área Local (LAN = Local Area Network) o una Red de Área Amplia (WAN = Wide Area Network) , o el sistema 5021 puede ser un cliente en un arreglo de cliente/servidor con otra computadora, etc. Todas estas configuraciones, asi como el equipo físico y soporte lógico de comunicaciones apropiados se conocen en la técnica.
La FIGURA 17 ilustra una red de procesamiento de datos 5040 en donde la presente invención puede practicarse. La red de procesamiento de datos 5040 puede incluir una pluralidad de redes individuales, tal como una red inalámbrica y una red cableada, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo individuales 5041, 5042, 5043, 5044. En forma adicional, como apreciarán aquellos con destreza en la especialidad, puede incluirse una o más LANs en donde una LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador hospedero.
Todavía con referencia a la FIGURA 17, las redes también pueden incluir servidores o computadoras, de grandes ordenadores o servidores tal como una computadora de compuerta de enlace (servidor de cliente 5046) o servidor de aplicación (servidor remoto 5048 que puede tener acceso a un depósito de datos y también se puede tener acceso directamente desde una estación de trabajo 5045) . Una computadora de compuerta de enlace 5046 sirve como un punto de entrada en cada red individual. Una compuerta de enlace se requiere cuando se conecta un protocolo de red con otro. La compuerta de enlace 5046 puede de preferencia acoplarse a otra red (Internet 5047 por ejemplo) mediante un enlace de comunicaciones. La compuerta de enlace 5046 también puede estar acoplada directamente con una o más estaciones de trabajo 5041, 5042, 5043, 5044 utilizando un enlace de comunicaciones. La computadora de compuerta de enlace puede ser implementada utilizando un Servidor IBM eServerMR System z® disponible de International Business Machines Corporation.
Con referencia de forma concurrente a la FIGURA 16 y a la FIGURA 17, código de programación soporte lógico que puede incorporar la presente invención se puede tener acceso por el procesador 5026 del sistema 5020 del medio de almacenamiento a largo plazo 5027, tal como una unidad CD-ROM o disco duro. El código de programación de soporte lógico puede incorporarse en cualquiera de una variedad de medios conocidos para uso con un sistema de procesamiento de datos, tal como un disquete, disco duro, o CD-ROM. El código puede ser distribuido en este medio, o puede ser distribuido a usuarios 5050, 5051 de :1a memoria o almacenamiento de un sistema de computadora sobre una red a otros sistemas de computadoras para uso por usuarios de estos otros sistemas.
En forma alterna, el código de programación puede ser incorporado en la memoria 5025, y se puede tener acceso por el procesador 5026 utilizando la barra colectora del procesador. Este código de programación incluye un sistema operativo que controla la función e interacción de los diversos componentes de computadora y uno o más programas de aplicaciones 5032. El código de programa normalmente se localiza desde el medio de almacenamiento 5027 a la memoria de alta velocidad 5025 en donde está disponible para procesamiento por el procesador 5026. Las técnicas y métodos para incorporar código de programación de soporte lógico en memoria, en medio físico y/o distribuir el código de soporte lógico por redes, son bien conocidas y no se discutirán más aquí. El código de programa, cuando se crea y almacena en medio tangible (incluyendo pero no limitado a módulos de memoria electrónica (RAM) , memoria flash, Discos Compactos (CDs) , DVDs, Cinta Magnética y semejantes, a menudo se refiere como un "producto de programa de computadora". El medio de producto de programa de computadora típicamente es legible por un circuito de procesamiento, de preferencia en un sistema; de computadora para ejecutar por el circuito de procesamiento.
La caché que está más fácilmente disponible al procesador (normalmente en forma más rápida' y más pequeña que otras cachés del procesador) es la caché más baja (LI o nivel uno) y almacenamiento principal (memoria principal) es la caché de más alto nivel (L3 si hay 3 niveles) . La caché de más bajo nivel a menudo de divide en una caché de instrucciones (Caché-I) que contiene instrucciones de máquina para ejecutarse y una caché de datos (Caché-D) que contiene operandos de datos.
Con referencia a la FIGURA 18, una modalidad de procesador ejemplar se ilustra para el procesador 5026. Típicamente, uno o más niveles de caché 5053 se emplean para poner en memoria intermedia bloques a fin de mejorar el desempeño de procesador. La caché 5053 es una memoria intermedia de alta velocidad que contiene líneas de caché de datos de memoria que probablemente se van a utilizar. Líneas de cachés típicas son de 64, 128 ó 256 bytes de datos de memoria. Cachés separadas a menudo se emplean para poner en caché instrucciones y para poner en caché datos. Coherencia de caché (sincronización de copias de líneas en memoria y las cachés) a menudo se proporciona por diversos algoritmos de "sondeo" bien conocidos en la técnica. Almacenamiento de memoria principal 5025 de un sistema de procesador a menudo se refiere como una '; caché. En una sistema procesador que tiene 4 niveles de caché 5053, el almacenamiento principal 5025 en ocasiones es referido como la caché de nivel 5 (L5) ya que típicamente es más rápida y sólo contiene una porción del almacenamiento no volátil (DASD, cinta, etc.) que está disponible a un sistema de computadora. El almacenamiento principal 5025 "pone en caché" páginas de datos localizadas dentro y fuera del almacenamiento principal 5025 por el sistema operativo.
Un contador de programa (contador de instrucciones) 5061 da seguimiento a la dirección de la instrucción actual a ejecutar. Un contador de programa en un procesador z/Architecture® es de 64 bits y puede truncarse a 31 ó 24 bits para soportar limites de direccionamiento previos. Un contador de programa típicamente se incorpora en una palabra estado de programa (PSW = Program Status Word) de una computadora tal que persiste durante cambio de contexto. De esta manera, un programa en progreso, que tiene un valor de contador de programa, puede ser interrumpido por ejemplo, por el sistema operativo (cambio de contexto del ambiente de programa al ambiente del sistema operativo) . El PSW del programa mantiene el valor de contador de programa mientras que el programa no está activo, y el contador de programa (en el PSW) del sistema operativo se emplea mientras que el sistema operativo se está ejecutando. Típicamente, el contador de programa se incrementa por una' cantidad igual al número de bytes en la instrucción actual. Instrucciones de cómputo del conjunto de instrucciones reducidas (RISC = Reduced Instruction Set Computing) típicamente se fijan en longitud mientras que instrucciones de Cómputo de Conjunto de Instrucciones Complejo (CISC = Complex Instruction Set Computing) típicamente son variedad de longitud variable. Instrucciones de IBM z/Architecture® son instrucciones CISC que tiene una longitud de 2, 4 ó 6 bytes. El contador de programa 5061 se modifica ya sea por una operación de cambio de contexto o una operación tomada de ramificación de una instrucción de ramificación por ejemplo. En una operación de conmutación de contexto, el valor del contador de programa actual se guarda en la palabra de estado de programa junto con otra información de estado respecto al programa que se ejecuta (tales como códigos de condición), y un nuevo valor de contador de programa se carga dirigiendo a una instrucción de un nuevo módulo de programa para ejecutarse. Una operación tomada por ramificación se realiza a fin de permitir que el programa tome decisiones o el bucle dentro del programa al cargar el resultado de la instrucción de ramificación en el contador de programa 5061.
Típicamente una unidad de búsqueda de instrucción 5055 se emplea para buscar instrucciones a nombre del procesador 5026. La unidad de búsqueda ya sea busca "siguientes instrucciones secuenciales", instrucciones de blanco de instrucciones tomadas de ramificación, o primeras instrucciones de un programa que sigue un cambio de contexto. Unidades de búsqueda de instrucciones modernas a menudo emplean técnicas de búsqueda previa especulativa de instrucciones con base en la probabilidad de que puedan emplearse las instrucciones de búsqueda previa. Por ejemplo, una unidad de búsqueda puede buscar 16 bytes de instrucciones que incluyen la siguiente instrucción secuencial y bytes adicionales de instrucciones secuenciales adicionales.
Las instrucciones buscadas son después ejecutadas por el procesador 5026. En una modalidad, la o las instrucciones buscadas se pasan a una unidad de despacho 5056 de la unidad de búsqueda. La unidad de despacho descodifica la o las instrucciones y envía información respecto a la o las instrucciones descodificadas a unidades apropiadas 5057, 5058, 5060. Una unidad de ejecución 5057 típicamente recibe información respecto a instrucciones aritméticas descodificadas de la unidad de búsqueda de instrucciones 5055 y realizará operaciones aritméticas en operandos de acuerdo con el código operativo de la instrucción.
Los operandos se proporcionan a : la unidad de ejecución 5057, de preferencia ya sea de la memoria 5025, registros de arquitectura 5059 o de un campo inmediato de la instrucción que se ejecuta. Resultados de la ejecución, cuando se almacenan, son guardados ya sea en memoria 5025, registros 5059 o en otro equipo físico de la máquina (tales como registros de control, registros PSW y semejantes) .
Un procesador 5026 típicamente tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Con referencia a la Figura 18A, una unidad de ejecución 5057 puede comunicarse con los registros generales de arquitectura 5059, una unidad de descodificación/despacho 5056, una unidad de almacenamiento de carga 5060, y otras unidades de procesador 5065 mediante lógica de interfase 5071. Una unidad de ejecución 5057 puede emplear varios circuitos de registro 5067, 5068, 5069 para contener información en la que operará la unidad lógica aritmética (ALU = Arithmetic Logic Unit) 5066. La ALU realiza operaciones aritméticas tales como adición, substracción, multiplicación y división asi como función lógica tal como y, o y O exclusivo (XOR = exclusive-or ) , giro y desplazamiento. De preferencia, la ALU soporta operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proporcionar otras instalaciones de arquitectura 5072 incluyendo códigos de condición y lógica de soporte de recuperación por ejemplo. , Típicamente el resultado de una operación ALU se mantiene : en un circuito de registro de salida 5070 que puede enviar el resultado a una variedad de otras funciones de procesamiento. Hay muchos arreglos de unidades procesadoras , la presente descripción solo se pretende para proporcionar una comprensión representativa de una modalidad.
Una instrucción SUMA (ADD) por ejemplo se ejecutará en una unidad de ejecución 5057 que tiene funcionalidad aritmética y lógica mientras que una instrucción de punto flotante por ejemplo será ejecutada en una ejecución de punto flotante que tiene capacidad de punto flotante especializada. De preferencia, una unidad de ejecución opera en operandos identificados por instrucción al realizar una función definida por código operativo en los operandos. Por ejemplo, una instrucción SUMA (ADD) puede ejecutarse por una unidad de ejecución 5057 en operandos que se encuentran en dos registros 5059 identificados por campos de registro de la instrucción.
La unidad de ejecución 5057 realiza la adición aritmética en dos operandos y almacena el resultado en un tercer operando, en donde el tercer operando puede ser un tercer registro o uno de los dos registros fuente. La unidad de ejecución de preferencia utiliza una Unidad Lógica Aritmética (ALU) 5066 que es capaz de realizar una variedad de funciones lógicas tales como Desplaza, Gira, Y, O y 0 EXCLUSIVO (XOR) asi como una variedad de funciones algebraicas incluyendo cualquiera de suma, substracción, multiplicación, división. Algunas ALUs 5066 se diseñan para operaciones escalares y algunas para punto flotante. Datos pueden ser byte más significativo primero o Big Endian (en donde el byte menos significante está en la dirección de byte más alta) o byte menos significativo al final Little Endian (en donde el byte menos significante está en la dirección de byte más baja) dependiendo de la arquitectura. La IBM z/Architecture® es Big Endian. Campos con signo pueden ser signo y magnitud, complementos de 1 o complementos de 2 dependiendo de la arquitectura. Un número de complemento de 2 es ventajoso ya que la ALU no requiere designar una capacidad de substraer ya que ya es un valor negativo o un valor . positivo en complemento de 2 requiere solo una adición dentro de la ALU. Números se describen comúnmente en forma breve, en donde un campo de 12 bits define una dirección de un bloque de 4,096 bytes y se describe comúnmente como un bloque de 4 Kbytes (Kilobytes) , por ejemplo.
Con referencia a la Figura 19B, la información de instrucción de ramificación para ejecutar una instrucción de ramificación típicamente se envía a una unidad de ramificación 5058 que a menudo emplea un algoritmo para predicción de ramificación tal como una tabla de historia de ramificación 5082 para pronosticar el resultado de la ramificación antes que se completen otras operaciones condicionales. El objetivo de la instrucción de ramificación actual se buscará y ejecutará en forma especulativa antes que se completen las operaciones condicionales . Cuando las operaciones condicionales se completan, la instrucción de ramificación ejecutada en forma especulativa ya se completa o descarta con base en las condiciones de la operación condicional y el resultado especulado. Una instrucción de ramificación típica puede probar códigos de condición y ramificación a una dirección objetivo si los códigos de condición cumplen con el requerimiento de ramificación de la instrucción de ramificación, una dirección objetivo puede calcularse con base en varios números incluyendo unos encontrados en los campos de registro o un campo inmediato de la instrucción por ejemplo. La unidad de ramificación 5058 puede emplear una ALU 5074 que tiene una pluralidad de circuitos de registro de alimentación 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad de ramificación 5058 puede comunicar con registros generales 5059, descodificar la unidad de despacho 5056 u otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones puede interrumpirse por una variedad de razones incluyendo un cambio de contexto iniciada por un sistema de operación, una excepción de programa o un error que provoca un cambio de contexto, una señal de interrupción E/S provocando un cambio de contexto o actividad de múltiples sub-procesos de una pluralidad de programas (en un ambiente de múltiples-procesos) , por ejemplo. De preferencia, una acción de conmutación o cambio de contexto guarda información de estado respecto a un programa que se ejecuta '; actualmente y después carga la información de estado respecto a otro programa que se invoca. La información de estado puede guardarse en registros de equipo físico o en memoria, por ejemplo. La información de estado de preferencia comprende un valor de contador de programa que dirige a una siguiente instrucción a ejecutar, códigos de condición, información de traducción de memoria y contenido de registro de arquitectura. Una actividad de cambio de contexto puede ejercerse por circuitos de equipo físico, programas de aplicación, programas de sistema operativo o código de soporte lógico inalterable (microcódigo, pico-código o código interno con licencia (LIC = Licensed Internal Code) ) solo o en combinación.
Un procesador tiene acceso a operandos de acuerdo con métodos definidos por instrucción. La instrucción puede proporcionar un operando inmediato utilizando el valor de una porción de la instrucción, puede proporcionar uno o más campos de registro que dirigen explícitamente ya sea a registros de propósito general o registros de propósito especial (registros de punto flotante por ejemplo). La instrucción puede utilizar registros implicados identificados por un campo de código operativo como operandos. La instrucción puede utilizar ubicaciones de memoria para operandos. Una ubicación de memoria de un operando puede proporcionarse por un registro, un campo inmediato o una combinación de registros y campo inmediato como se ejemplifica por la instalación de desplazamiento largo z/Architecture en donde la instrucción define un registro base, un registro de índice y un campo inmediato (campo de desplazamiento) que se agregan en conjunto para proporcionar la dirección del operando en memoria, por ejemplo. Aquí la ubicación típicamente implica una ubicación en memoria principal (almacenamiento principal) a menos que se indique de otra forma.
Con referencia a la Figura 19C, un procesador tiene acceso a almacenamiento utilizando una unidad de carga/almacena 5060. La unidad de carga/almacena 5060 puede realizar una operación de carga al obtener la dirección del operando objetivo en memoria 5053 y cargar el operando en un registro 5059 u otra ubicación de memoria 5053, o puede realizar una operación de almacenado al obtener la dirección del operando objetivo en memoria 5053 y almacenar datos que se obtienen de un registro 5059 u otra ubicación de memoria 5053 en la ubicación de operando objetivo en memoria 5053. La unidad de carga/almacena 5060 puede ser especulativa y puede tener acceso a memoria en una secuencia que está fuera-de-orden respecto a la secuencia de instrucciones, sin embargo la unidad de carga/almacena 5060 es para mantener la apariencia a programas que las instrucciones se ejecutaron en orden.
Una unidad de carga/almacena 5060 pueden comunicar con registros generales 5059, unidad de descodificación/despacho 5056, interfase de caché/memoria 5053 u otros elementos 5083 y comprende diversos circuitos de registro, ALUs 5085 y lógica de control 5090 para calcular direcciones de almacenamiento y proporcionar secuenciado de canalización para mantener en orden operaciones. Algunas operaciones pueden estar fuera de orden pero la unidad de carga/almacenamiento proporciona funcionalidad para hacer que las operaciones fuera de orden aparezcan al programa como que se han realizado en orden, como es bien conocido en la técnica.
De preferencia direcciones que un programa de aplicación "ve", a menudo son referidas como direcciones virtuales. Direcciones virtuales en ocasiones se refieren como "direcciones lógicas" y "direcciones efectivas". Estas direcciones virtuales, son virtuales ya que se dirigen de nuevo a ubicación de memoria física por una de una variedad de tecnologías de traducción de dirección dinámica (DAT = Dynamic Address Translation) incluyendo pero no limitadas a, simplemente prefijo de una dirección virtual con un valor de compensación, traducir la dirección virtual mediante una o más tablas de traducción, las tablas de traducción de preferencia comprenden al menos una tabla de segmento y una tabla de página solas o en combinación, de preferencia la tabla segmento tiene una entrada que dirige a la tabla de página. En z/Architecture®, una jerarquía de traducción se proporciona incluyendo una primer tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento y una tabla de página opcional. El desempeño de la traducción de dirección a menudo se mejora al utilizar una memoria intermedia de traducción anticipada (TLB = Translation Lookaside Buffer) que comprende entradas que cartografían una dirección virtual a una ubicación de memoria física asociada. Las entradas son creadas cuando DAT traduce una dirección virtual utilizando las tablas de traducción. Uso subsecuente de la dirección virtual puede entonces utilizar la entrada de TLB rápido en vez de los accesos de tabla de traducción secuencial lentos. El contenido de TLB pueden manejarse por una variedad de algoritmos de reemplazo incluyendo Menos Recientemente empleado , (LRU = Least Recently used) .
En el caso en donde el procesador es un procesador de un sistema múlti-procesador, cada procesador tiene responsabilidad para mantener recursos compartidos, tales como E/S (I/O), cachés, TLBs y memoria, enclavados por coherencia. Típicamente, se utilizarán tecnologías de "sondeo" se utilizarán para mantener coherencia de caché. En un ambiente de sondeo, cada línea de caché puede marcarse como en cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado inválido y semejantes a fin de facilitar el compartir.
Unidades E/S (1/0) 5054 (Figura 18) proporciona al procesador con medios para conectar a dispositivos periféricos incluyendo cintas, discos, impresoras, exhibidores y redes por ejemplo. Unidades E/S (I/O) a menudo se presentan al programa de computadora por controladores de soporte lógico. En grandes ordenadores, tales como el System z® de IBM®, adaptadores de canal y adaptadores de sistema abiertos son unidades E/S (I/O) del gran ordenador que proporcionan las comunicaciones entre el sistema operativo y dispositivos periféricos.
Además, otros tipos de ambientes de cómputo pueden beneficiarse de uno o más aspectos de la presente invención. Como un ejemplo, un ambiente puede incluir un emulador (por ejemplo, soporte lógico u otros mecanismos de emulación) , en donde una arquitectura particular (incluyendo, por ejemplo ejecución de instrucción, funciones de arquitectura, tales como traducción de dirección, y registros de arquitectura) o un subconjunto de los mismos es emulado (por ejemplo, en un sistema de computadora nativo que tiene procesador y memoria) . En este ambiente, una o más de las funciones de emulación del emulador pueden implementar uno o más aspectos de la presente invención, aun cuando una computadora que ejecuta el emulador puede tener una arquitectura diferente que las capacidades que se emulan. Como un ejemplo, en el modo de emulación, la operación o instrucción especifica que se emula es descodificada, y una función de emulación apropiada se construye para implementar la instrucción u operación individual.
En un ambiente de emulación, una computadora hospedera incluye por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de búsqueda de instrucciones para buscar instrucciones de la memoria y para opcionalmente proporcionar memoria intermedia local para la instrucción buscada; una unidad de descodificación de instrucción para recibir las instrucciones buscadas y determinar el tipo de instrucciones que se han buscado; y una unidad de ejecución de instrucciones para ejecutar las instrucciones. La ejecución puede incluir 'cargar datos en un registro de la memoria; almacenar datos de regreso a la memoria de un registro; o realizar algún tipo de operación aritmética o lógica, como se determina por la unidad de descodificación. En un ejemplo, cada unidad se implementa en soporte lógico. Por ejemplo, las operaciones que se realizan por las unidades, se implementan como una o más sub-rutinas dentro del soporte lógico emulador.
En forma más particular, en un gran ordenador, instrucciones de máquina de arquitectura se emplean por programadores, usualmente en la actualidad programadores "C", a menudo mediante una aplicación de compilador. Estas instrucciones almacenadas en el medio de almacenamiento pueden ser ejecutadas en forma nativa en un Servidor z/Architecture® IBM®, o en forma alterna en máquinas que ejecutan otras arquitecturas. Pueden ser emuladas en los servidores de grandes ordenadores existentes y en futuros IBM® y en otras máquinas de IBM® (por ejemplo, Servidores Power Systems y Servidores System x®) . Pueden ser ejecutadas en máquinas que ejecutan Linux en una amplia variedad de máquinas que utilizan equipo físico fabricado por IBM®, Intel®, AMD™, y otros. Además de ejecución en ese equipo físico bajo z/Architecture®, Linux puede emplearse al igual que máquinas que utilizan emulación por TurboHercules (www.turbohercules.com), Hercules (www.hercules-390.org/) o FSI ( Fundamental · Software, Inc) (www.funsoft.com/), en donde en general la ejecución está en un modo de emulación. En modo de emulación el soporte lógico de emulación se ejecuta por un procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo típicamente ejecuta soporte lógico de emulación que comprende ya sea soporte lógico inalterable o un sistema operativo nativo para realizar emulación del procesador emulado. El soporte lógico de emulación es responsable por búsqueda y ejecución de instrucciones de la arquitectura del procesador emulado. El soporte lógico de emulación mantiene un contador de programa emulado para dar seguimiento a fronteras de instrucciones. El soporte lógico de emulación puede buscar una o más instrucciones de máquina emuladas a un tiempo y convertir la una o más instrucciones de máquina emuladas a un grupo correspondiente de instrucciones de máquina nativa para ejecución por el procesador nativo. Estas instrucciones convertidas pueden ser puestas en caché tal que pueda lograrse una más rápida conversión. No obstante, el soporte lógico de emulación es para mantener las reglas de arquitectura de la arquitectura de procesador emulado para asegurar sistemas y aplicaciones de operación escritas para el procesador emulado que operen correctamente. Además, el soporte lógico de emulación es para proporcionar recursos identificados por la arquitectura' de procesador emulado incluyendo pero no limitado a registros de control, registros de propósito general, registros de punto flotante, función de traducción de dirección dinámica incluyendo tablas de segmentos y tablas de páginas por ejemplo, mecanismos de interrupción, mecanismos de conmutación de contexto, relojes de la hora del día (TOD = Time of Day) e interfases de arquitectura a subsistemas E/S de manera tal que un sistema operativo o un programa de aplicación diseñado para ejecutar en el procesador emulado, pueda ejecutar en el procesador nativo que tenga el soporte lógico de emulación.
Una instrucción especifica que se emula se descodifica, y se invoca una subrutina para realizar la función de la instrucción individual. Una función de soporte lógico de emulación que emula una función del procesador emulado se implementa, por ejemplo en un controlador o subrutina en "C" o algún otro método para proporcionar un controlador para el equipo físico específico como estará dentro de la destreza de aquellos en la especialidad después de comprender la descripción de la modalidad preferida. Diversas patentes de emulación de soporte lógico y equipo físico incluyendo pero no limitadas a la Patente de los E.U.A. Número 5,551,013, con título "Multiprocessor for Hardware Emulation", por Beausoleil et al; y la Patente de los E.U.A. Número 6, 009,,261, con título "Preprocessing of Stored Target Routines ' for Emulating Incompatible Instructions on a Target Processor", por Scalzi et al; y la Patente de los E.U.A. Número 5,574,873, con título "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions", por Davidian et al; y la Patente de los E.U.A. 6, 308,255, con título "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allo ing Non-Native Code to Run in a System", por Gorishek et al; y la Patente de los E.U.A. Número 6,463,582, con titulo "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", por Lethin et al; y la Patente de los E.U.A. Número 5,790,825, con titulo "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut; y muchas otras ilustran una variedad de formas conocidas para lograr emulación de un formato de instrucción de arquitectura para una máquina diferente para una máquina objetivo disponible para aquellos con destreza en la técnica.
En la Figura 20, un ejemplo de un sistema de computadora hospedera emulado 5092 se proporciona, que emula un sistema de computadora hospedera 5000' de una arquitectura hospedera. En el sistema de computadora hospedera emulado 5092, el procesador hospedero (CPU) 5091 es un procesador hospedero emulado (o procesador hospedero virtual) y comprende un procesador de emulación 5093 que tiene una arquitectura de conjunto de instrucciones nativas diferentes que las del procesador 5091 de la computadora hospedera 5000'. El sistema de computadora hospedera emulado 5092 tiene memoria 5094 accesible al procesador de emulación 5093. En la modalidad ejemplar, la memoria 5094 se divide entre una porción de memoria de computadora hospedera 5096 y una porción de rutinas de emulación 5097. La memoria de computadora hospedera 5096 está disponible a programas de la computadora hospedera emulada 5092 de acuerdo con arquitectura de computadora hospedera. El procesador de emulación 5093 ejecuta instrucciones nativas de un conjunto de instrucciones de arquitectura de una arquitectura diferente a la del procesador emulado 5091, las instrucciones nativas que se obtienen de la memoria de rutinas de emulación 5097 y puede accesar a una instrucción de hospedero para ejecutar de un programa en la memoria de computadora hospedera 5096 al emplear una o más instrucciones que se obtienen en una rutina de secuencia y acceso/descodificación que puede descodificar la o las instrucciones de hospedero a las que se tiene acceso para determinar una rutina de ejecución de instrucción nativa para emular la función de la instrucción hospedera de acceso. Otras instalaciones que se definen para la arquitectura de sistema de computadora hospedera 5000' pueden emularse por rutinas de instalaciones de arquitectura, incluyendo instalaciones tales como registros de propósitos generales, registros de control, traducción de dirección dinámica y soporte de subsistema de E/S y caché de procesador, por ejemplo. Las rutinas de emulación también pueden aprovechar funciones disponibles en el procesador de emulación 5093 (tales cómo registros generales y traducción dinámica de direcciones virtuales) para mejorar el desempeño de las rutinas de emulación. Equipo físico especial y motores de descarga también pueden proporcionarse para ayudar al procesador 5093 en emular la función de la computadora hospedera 5000'.
La terminología empleada aquí es con el propósito de describir modalidades particulares solamente y no se pretende limitante de la invención. Como se emplea aquí, las formas en singular "un", "una" y ,vel/la" se pretende que incluyen las formas en plural por igual, a menos de que el contexto claramente lo indique de otra forma. Además se entenderá que los términos "comprende" y/o "que comprende", cuando se emplean en esta especificación, establecen la presencia de características establecidas, enteros, etapas, operaciones, elementos y/o componentes pero no impide la presencia o adición de una o más otras características, enteros, etapas, operaciones, elementos, componentes y/o sus grupos.
Las correspondientes estructuras, materiales, actos y equivalentes de todos los medios o etapa más elementos funcionales en las reivindicaciones siguientes, de haber, se pretende que incluyan cualquier estructura, material o acto para realizar la función, en combinación con otros elementos reivindicados como se reclama específicamente. La descripción de la presente invención se ha presentado para propósitos de ilustración y descripción pero no se pretende que sea exhaustiva o limitada para la invención en la forma descrita. Muchas modificaciones y variaciones serán aparentes para aquellos con destreza ordinaria en la técnica sin apartarse del alcance de la invención. La modalidad se seleccionó y describió a fin de explicar mejor los principios de la invención y la aplicación práctica y permitir a otros con destreza ordinaria en la técnica el comprender la invención para diversas modalidades con diversas modificaciones como son adecuadas para el uso particular contemplado.

Claims (9)

REIVINDICACIONES
1. Un método para administrar solicitudes de interrupción en un ambiente de cómputo, caracterizado porque comprende las etapas de: en respuesta a ejecutar una instrucción Modificar Controles de Función PCI (MPFC = Modify PCI Function Controls) registro de operación de interrupciones que especifica un identificador de función de un adaptador, especificar una ubicación en memoria de un vector de bit de interrupción de adaptador (AIBV = Adapter Interruption Bit Vector) del adaptador, el AIBV incluido en un conjunto de uno o más AIBVs, y una ubicación en memoria de un bit de resumen de interrupción de adaptador (AISB = Adapter Interruption Summary Bit) de un conjunto AISB; recibir del adaptador una solicitud para interrupción; y en respuesta a la solicitud recibida, ajustar un indicador en AIBV que señala un evento del adaptador y ajustar el AISB que señala que un indicador está ajustado en' AIBV.
2. El método de conformidad con la reivindicación 1, caracterizado porque el método además comprende presentar una interrupción a un sistema operativo, la interrupción responde a la solicitud para interrupción .
3. El método de conformidad con la reivindicación 2, caracterizado porque la solicitud para interrupción representa una pluralidad de interrupciones de señal de mensaje, y la interrupción al sistema operativo es parte de una notificación de evento adaptador de entrada/salida para el sistema operativo.
4. El método de conformidad con la reivindicación 2, caracterizado porque el método además comprende obtener, en respuesta a presentar, una o más indicaciones AIBV para uno o. más adaptadores que especifica al menos una razón para interrupción por adaptador.
5. El método de conformidad con la reivindicación 4, caracterizado porque la obtención comprende una pluralidad de indicaciones AIBV que especifican una pluralidad de razones para interrupción, la pluralidad de razones para interrupción corresponde a la pluralidad de solicitudes para interrupción.
6. El método de conformidad con la reivindicación 5, caracterizado porque la obtención comprende utilizar AISB para obtener la una o más indicaciones AIBV en una o más AIBVs.
7. El método de conformidad con la reivindicación 1, caracterizado porque el ajuste del indicador en AIBV comprende: utilizar un identificador de la solicitud desde el adaptador para obtener una entrada de tabla de dispositivo, la entrada de tabla de dispositivo comprende un valor que especifica un número de interrupciones que se permiten para 'el adaptador; determinar si un número de vector que se proporciona en la solicitud está dentro del número de interrupciones permitidas por el adaptador; en respuesta a determinar que el número de vector está dentro del número permitido de interrupciones, utilizar uno o más parámetros de la entrada de tabla de dispositivo para localizar una posición de inicio de AIBV; y utilizar el número de vector para ajustar indicador en AIBV.
8. Un sistema que comprende medios adaptados para llevar a cabo todas las etapas del método de acuerdo con cualquier reivindicación de método precedente.
9. Un programa de computadora que comprende instrucciones para llevar a cabo todas las etapas del método de acuerdo con cualquier reivindicación de método precedente, cuando el programa de computadora se ejecuta en un sistema de computadora.
MX2012014861A 2010-06-23 2010-11-08 Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s. MX2012014861A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/821,175 US8572635B2 (en) 2010-06-23 2010-06-23 Converting a message signaled interruption into an I/O adapter event notification
PCT/EP2010/067023 WO2011160707A1 (en) 2010-06-23 2010-11-08 Converting a message signaled interruption into an i/o adapter event notification

Publications (1)

Publication Number Publication Date
MX2012014861A true MX2012014861A (es) 2013-01-25

Family

ID=43982256

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012014861A MX2012014861A (es) 2010-06-23 2010-11-08 Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s.

Country Status (22)

Country Link
US (2) US8572635B2 (es)
EP (1) EP2430558B1 (es)
JP (1) JP5719435B2 (es)
KR (1) KR101455011B1 (es)
CN (1) CN102906722B (es)
AU (1) AU2010355798B2 (es)
BR (1) BR112012033821B1 (es)
CA (1) CA2800629C (es)
DK (1) DK2430558T3 (es)
ES (1) ES2535333T3 (es)
HK (1) HK1180796A1 (es)
HR (1) HRP20150385T1 (es)
HU (1) HUE024981T2 (es)
IL (1) IL223589B (es)
MX (1) MX2012014861A (es)
PL (1) PL2430558T3 (es)
PT (1) PT2430558E (es)
RU (1) RU2546561C2 (es)
SG (1) SG186080A1 (es)
SI (1) SI2430558T1 (es)
WO (1) WO2011160707A1 (es)
ZA (1) ZA201209699B (es)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037768B2 (en) * 2008-04-28 2015-05-19 Hewlett-Packard Development Company, L.P. Virtual-interrupt-mode interface and method for virtualizing an interrupt mode
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8468284B2 (en) * 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8495217B2 (en) * 2010-09-30 2013-07-23 International Business Machines Corporation Mechanism for preventing client partition crashes by removing processing resources from the client logical partition when an NPIV server goes down
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
US8966148B2 (en) * 2012-06-01 2015-02-24 International Business Machines Corporation Providing real-time interrupts over Ethernet
US8984201B2 (en) 2012-06-01 2015-03-17 International Business Machines Corporation Providing I2C bus over Ethernet
US9152588B2 (en) 2012-10-16 2015-10-06 Apple Inc. Race-free level-sensitive interrupt delivery using fabric delivered interrupts
US9009377B2 (en) * 2012-11-01 2015-04-14 Apple Inc. Edge-triggered interrupt conversion in a system employing level-sensitive interrupts
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
CN105122206B (zh) 2013-03-15 2018-11-09 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
US9465768B2 (en) * 2014-03-14 2016-10-11 International Business Machines Corporation PCI function measurement block enhancements
US10187323B2 (en) * 2016-09-02 2019-01-22 Pivotal Software, Inc. On-demand resource provisioning
DE102017108219A1 (de) 2017-04-18 2018-10-18 Infineon Technologies Ag Steuersystem und Verfahren des Speicherzugriffs
DE102017108216A1 (de) * 2017-04-18 2018-10-18 Infineon Technologies Ag Steuersystem und Verfahren des Speicherzugriffs
CN110597537B (zh) * 2019-08-29 2022-12-13 桂林理工大学南宁分校 一种物联网节点安全更新升级方法
US11782685B2 (en) 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter
US11347500B2 (en) 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11573775B2 (en) 2020-06-17 2023-02-07 Bank Of America Corporation Software code converter for resolving redundancy during code development

Family Cites Families (229)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4028668A (en) 1975-12-22 1977-06-07 Honeywell Information Systems, Inc. Apparatus for selectively addressing sections and locations in a device controller's memory
US4323963A (en) 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
US4271468A (en) 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
WO1983001524A1 (en) 1981-10-13 1983-04-28 Cormier, Roger, Louis Method and apparatus for measurements of channel operation
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5170472A (en) 1991-03-28 1992-12-08 International Business Machines Corp. Dynamically changing a system i/o configuration definition
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
JPH05165715A (ja) 1991-12-12 1993-07-02 Nec Corp 情報処理装置
JPH0821015B2 (ja) 1992-01-20 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータならびにそのシステム再構成化装置および方法
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5600805A (en) 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
US5265240A (en) 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
US5465332A (en) 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
JP2500101B2 (ja) 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5535352A (en) 1994-03-24 1996-07-09 Hewlett-Packard Company Access hints for input/output address translation mechanisms
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
JPH10502197A (ja) 1994-06-28 1998-02-24 インテル・コーポレーション Pci−isa割込みプロトコルコンバータ及び選択機構
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5802590A (en) 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5586268A (en) 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5960213A (en) 1995-12-18 1999-09-28 3D Labs Inc. Ltd Dynamically reconfigurable multi-function PCI adapter device
US5974440A (en) 1996-03-25 1999-10-26 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for interrupt handling during virtual task operation
US5819053A (en) 1996-06-05 1998-10-06 Compaq Computer Corporation Computer system bus performance monitoring
US5761448A (en) 1996-08-30 1998-06-02 Ncr Corporation Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
US5838960A (en) 1996-09-26 1998-11-17 Bay Networks, Inc. Apparatus for performing an atomic add instructions
US5995745A (en) 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US6272257B1 (en) 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
KR100263672B1 (ko) 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
US6067595A (en) 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6078970A (en) 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6023736A (en) 1997-12-19 2000-02-08 International Business Machines Corporation System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter
US6021458A (en) 1998-01-21 2000-02-01 Intel Corporation Method and apparatus for handling multiple level-triggered and edge-triggered interrupts
US6223299B1 (en) 1998-05-04 2001-04-24 International Business Machines Corporation Enhanced error handling for I/O load/store operations to a PCI device via bad parity or zero byte enables
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6460094B1 (en) 1998-07-08 2002-10-01 Microsoft Corporation Peripheral device configured to detect the type of interface to which it is connected and configuring itself accordingly
US6615305B1 (en) 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6519645B2 (en) 1999-02-19 2003-02-11 International Business Machine Corporation Method and apparatus for providing configuration information using a queued direct input-output device
US6349380B1 (en) 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6557035B1 (en) 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
US6330656B1 (en) 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
US6578191B1 (en) 1999-05-17 2003-06-10 International Business Machines Corporation Method and apparatus for dynamic generation of adapters
US6330647B1 (en) 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6772097B1 (en) 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6651126B1 (en) 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US7509391B1 (en) 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US6529978B1 (en) 2000-02-23 2003-03-04 International Business Machines Corporation Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings
US6963940B1 (en) 2000-03-30 2005-11-08 International Business Machines Corporation Measuring utilization of individual components of channels
US6581130B1 (en) 2000-04-04 2003-06-17 Hewlett Packard Development Company, L.P. Dynamic remapping of address registers for address translation between multiple busses
US6629175B1 (en) 2000-04-14 2003-09-30 International Business Machines Corporation Efficient adapter context switching
US6772264B1 (en) 2000-05-22 2004-08-03 International Business Machines Corporation Enabling a docking station for ISA adapters
US6715011B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation PCI/PCI-X bus bridge with performance monitor
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6704831B1 (en) 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US6611883B1 (en) 2000-11-16 2003-08-26 Sun Microsystems, Inc. Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6658521B1 (en) 2000-12-22 2003-12-02 International Business Machines Corporation Method and apparatus for address translation on PCI bus over infiniband network
US6721839B1 (en) 2000-12-27 2004-04-13 International Business Machines Corporation Method of mapping multiple address spaces into single PCI bus
RU2195013C2 (ru) * 2001-02-01 2002-12-20 Научно-исследовательский институт химического машиностроения Способ многоуровневой обработки запросов прерывания и многоуровневая система для его осуществления
TW499795B (en) 2001-03-19 2002-08-21 Realtek Semiconductor Corp PCI extended function interface and the PCI device using the same
US6792492B1 (en) 2001-04-11 2004-09-14 Novell, Inc. System and method of lowering overhead and latency needed to service operating system interrupts
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US6968446B1 (en) 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US6842870B2 (en) 2001-09-20 2005-01-11 International Business Machines Corporation Method and apparatus for filtering error logs in a logically partitioned data processing system
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6880021B2 (en) * 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US20040025166A1 (en) 2002-02-02 2004-02-05 International Business Machines Corporation Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel
US6901537B2 (en) 2002-02-27 2005-05-31 International Business Machines Corporation Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system
US6907510B2 (en) 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US7302692B2 (en) 2002-05-31 2007-11-27 International Business Machines Corporation Locally providing globally consistent information to communications layers
US7197585B2 (en) 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7054972B2 (en) 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
US7065598B2 (en) 2002-12-20 2006-06-20 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7107382B2 (en) 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
US7139940B2 (en) 2003-04-10 2006-11-21 International Business Machines Corporation Method and apparatus for reporting global errors on heterogeneous partitioned systems
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7130938B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Method, system and program products for identifying communications adapters of a computing environment
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
US7127599B2 (en) 2003-05-12 2006-10-24 International Business Machines Corporation Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
US7177961B2 (en) 2003-05-12 2007-02-13 International Business Machines Corporation Managing access, by operating system images of a computing environment, of input/output resources of the computing environment
US6996638B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Method, system and program products for enhancing input/output processing for operating system images of a computing environment
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7134052B2 (en) 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
US6931460B2 (en) 2003-05-19 2005-08-16 Emulex Design & Manufacturing Corporation Dynamically self-adjusting polling mechanism
US7991918B2 (en) 2003-06-05 2011-08-02 Nvidia Corporation Transmitting commands and information between a TCP/IP stack and an offload unit
US7420931B2 (en) 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
EP1489491A1 (en) 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction
US7013358B2 (en) 2003-08-09 2006-03-14 Texas Instruments Incorporated System for signaling serialized interrupts using message signaled interrupts
US7979548B2 (en) 2003-09-30 2011-07-12 International Business Machines Corporation Hardware enforcement of logical partitioning of a channel adapter's resources in a system area network
US7146482B2 (en) 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7277968B2 (en) 2004-01-23 2007-10-02 International Business Machines Corporation Managing sets of input/output communications subadapters of an input/output subsystem
US7107384B1 (en) 2004-03-01 2006-09-12 Pericom Semiconductor Corp. Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
US7530071B2 (en) 2004-04-22 2009-05-05 International Business Machines Corporation Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US20050289271A1 (en) 2004-06-29 2005-12-29 Martinez Alberto J Circuitry to selectively produce MSI signals
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
US7418572B2 (en) 2004-08-18 2008-08-26 International Business Machines Corporation Pretranslating input/output buffers in environments with multiple page sizes
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7373446B2 (en) 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US7296120B2 (en) 2004-11-18 2007-11-13 International Business Machines Corporation Mechanism that provides efficient multi-word load atomicity
US7188346B2 (en) 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US7284112B2 (en) 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US7886086B2 (en) 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US7464191B2 (en) 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7493425B2 (en) 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US20060195617A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7475166B2 (en) 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7567567B2 (en) 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7200704B2 (en) 2005-04-07 2007-04-03 International Business Machines Corporation Virtualization of an I/O adapter port using enablement and activation functions
US7478178B2 (en) 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US7516252B2 (en) 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7631097B2 (en) 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US8028154B2 (en) 2005-07-29 2011-09-27 Broadcom Corporation Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US20070073955A1 (en) 2005-09-29 2007-03-29 Joseph Murray Multi-function PCI device
US7882489B2 (en) 2005-11-22 2011-02-01 International Business Machines Corporation Integrated code generation for adapter-specific property template
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US7328296B1 (en) 2006-01-03 2008-02-05 Emc Corporation Interrupt processing system
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US7739422B2 (en) 2006-03-21 2010-06-15 International Business Machines Corporation Method to improve system DMA mapping while substantially reducing memory fragmentation
US7412589B2 (en) 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US7954099B2 (en) 2006-05-17 2011-05-31 International Business Machines Corporation Demultiplexing grouped events into virtual event queues while in two levels of virtualization
JP4961833B2 (ja) 2006-05-19 2012-06-27 日本電気株式会社 クラスタシステム、負荷分散方法、最適化クライアントプログラム、及び調停サーバプログラム
TW200801952A (en) 2006-06-02 2008-01-01 Via Tech Inc Method for setting up a peripheral component interconnect express (PCIE)
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
US7496707B2 (en) 2006-08-22 2009-02-24 International Business Machines Corporation Dynamically scalable queues for performance driven PCI express memory traffic
US8725914B2 (en) 2006-08-28 2014-05-13 International Business Machines Corporation Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US20080126652A1 (en) 2006-09-27 2008-05-29 Intel Corporation Managing Interrupts in a Partitioned Platform
US7552298B2 (en) 2006-09-28 2009-06-23 Broadcom Corporation Method and system for deferred pinning of host memory for stateful network interfaces
JP2008090375A (ja) 2006-09-29 2008-04-17 Hitachi Ltd 割込み制御システム、およびこれを利用した記憶制御システム
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080098197A1 (en) 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
JP2008123298A (ja) 2006-11-13 2008-05-29 Canon Inc 情報処理方法及びシステム
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US7984454B2 (en) 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7529860B2 (en) 2006-12-19 2009-05-05 International Business Machines Corporation System and method for configuring an endpoint based on specified valid combinations of functions
US7617340B2 (en) 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
US20080168208A1 (en) 2007-01-09 2008-07-10 International Business Machines Corporation I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs
JP5119686B2 (ja) 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
US7617345B2 (en) 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US20090024823A1 (en) 2007-07-20 2009-01-22 Wenjeng Ko Overlayed separate dma mapping of adapters
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8762999B2 (en) 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
JP2009088962A (ja) 2007-09-28 2009-04-23 Panasonic Corp 通信アダプタ、通信装置および通信方法
US8141094B2 (en) 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8037221B2 (en) 2008-01-16 2011-10-11 International Business Machines Corporation Dynamic allocation of DMA buffers in input/output adaptors
US7996628B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US20090276774A1 (en) 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US7743189B2 (en) 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US8359408B2 (en) 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
JP5352848B2 (ja) * 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8914619B2 (en) 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US9851969B2 (en) 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor

Also Published As

Publication number Publication date
EP2430558A1 (en) 2012-03-21
IL223589B (en) 2018-02-28
ES2535333T3 (es) 2015-05-08
US20120221757A1 (en) 2012-08-30
CN102906722A (zh) 2013-01-30
RU2546561C2 (ru) 2015-04-10
US8601497B2 (en) 2013-12-03
ZA201209699B (en) 2015-06-24
HUE024981T2 (en) 2016-02-29
AU2010355798A1 (en) 2012-12-20
BR112012033821A2 (pt) 2017-10-24
AU2010355798B2 (en) 2014-05-15
PT2430558E (pt) 2015-05-20
JP5719435B2 (ja) 2015-05-20
CA2800629C (en) 2018-03-13
US20110321061A1 (en) 2011-12-29
EP2430558B1 (en) 2015-03-25
KR20130032358A (ko) 2013-04-01
JP2013533543A (ja) 2013-08-22
RU2012147704A (ru) 2014-05-20
SG186080A1 (en) 2013-01-30
CA2800629A1 (en) 2011-12-29
BR112012033821B1 (pt) 2020-11-03
KR101455011B1 (ko) 2014-10-27
SI2430558T1 (sl) 2015-07-31
US8572635B2 (en) 2013-10-29
HRP20150385T1 (en) 2015-06-19
DK2430558T3 (en) 2015-04-27
HK1180796A1 (en) 2013-10-25
CN102906722B (zh) 2015-07-08
PL2430558T3 (pl) 2015-06-30
WO2011160707A1 (en) 2011-12-29

Similar Documents

Publication Publication Date Title
MX2012014861A (es) Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s.
EP2430536B1 (en) Controlling access by a configuration to an adapter function
EP2430555B1 (en) Translation of input/output addresses to memory addresses
EP2430552B1 (en) Multiple address spaces per adapter
EP2585925B1 (en) Runtime determination of translation formats for adapter functions
KR101485649B1 (ko) 어댑터 인터럽션 요청들이 처리되는 레이트를 컨트롤하는 방법
JP5731642B2 (ja) アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム
EP2430556B1 (en) Enable/disable adapters of a computing environment
MX2012014857A (es) Metodo para ejecutar una instruccion para modificar selectivamente parametros de funcion de adaptador: sistema de computadora y producto de programa de computadora para lo mismo.
MX2012013864A (es) Ajuste de tamaño de espacios de direccion concurrente con acceso a los espacios de direccion.
EP2585932B1 (en) Identification of types of sources of adapter interruptions
MX2012014858A (es) Instrucciones de bloque/almacena/almacena para comuncar con adaptadores.

Legal Events

Date Code Title Description
FG Grant or registration