MX2012014857A - 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. - Google Patents

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.

Info

Publication number
MX2012014857A
MX2012014857A MX2012014857A MX2012014857A MX2012014857A MX 2012014857 A MX2012014857 A MX 2012014857A MX 2012014857 A MX2012014857 A MX 2012014857A MX 2012014857 A MX2012014857 A MX 2012014857A MX 2012014857 A MX2012014857 A MX 2012014857A
Authority
MX
Mexico
Prior art keywords
adapter
address
parameters
instruction
function
Prior art date
Application number
MX2012014857A
Other languages
English (en)
Inventor
Dan Greiner
David Craddock
Thomas Gregg
Mark Farrell
Beth Glendening
Peter Szwed
Gustav Sittmann Iii
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 MX2012014857A publication Critical patent/MX2012014857A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Abstract

Se proporciona una instrucción para establecer diversos parámetros operacionales para un adaptador. Estos parámetros incluyen parámetros de interrupción de adaptador, parámetros de traducción de dirección de entrada/salida, reajuste de indicaciones de error, ajuste de parámetros de medición y ajuste de un control de intercepción, como ejemplos. La instrucción específica un bloque de información de función, que es una representación del programa de una entrada de tabla de dispositivo utilizada por el adaptador, para utilizarse en ciertas situaciones para establecer los parámetros. Una instrucción de almacenar también se proporciona que almacena los contenidos actuales del bloque de información de función.

Description

MÉTODO PARA EJECUTAR UNA INSTRUCCIÓN PARA MODIFICAR SELECTIVAMENTE PARÁMETROS DE FUNCIÓN DE ADAPTADOR: SISTEMA DE COMPUTADORA Y PRODUCTO DE PROGRAMA DE COMPUTADORA PARA LO MISMO ANTECEDENTES Esta invención se refiere en general a procesamiento de entrada/salida de un ambiente de cómputo y en particular a facilitar comunicación con adaptadores del ambiente de cómputo.
Un ambiente de cómputo puede incluir uno o más tipos de dispositivos de entrada/salida, incluyendo diversos tipos de adaptadores. Un tipo de adaptador que puede incluirse es un adaptador de Interconexión de Componente Periférico (PCI = Peripheral Component Interconnect ) o express de Interconexión de Componente Periférico (PCIe = Peripheral Component Interconnect express) . El adaptador utiliza un protocplo a nivel de enlace y nivel-de barra colectora estándar de la industria, común, para comunicaciones. Sin embargo, su protocolo a nivel de instrucciones es especifico del distribuidor. La especificación PCI está disponible de la Red Mundial en www.pcisig.com/home.
La Publicación de los E.U.A. Número 2008/0126648 Al, realizada en mayo 29, 2008, Brownlow et al, "Message Signaled Interrupt Management For A Computer Input/Output Fabric Incorporating Platform Independent Interrupt Manager", describe un aparato, producto de programa y método que ligan dinámicamente recursos de Interrupción Señalizada de Mensaje (MSI = Message Signaled Interrupt) compartidos por una pluralidad de clientes a una instalación de interrupción en una computadora capaz de MSI. Además, el manejo de estos enlaces puede implementarse utilizando un administrador de interrupción independiente de plataforma capaz de manejar múltiples enlaces MSI entre recursos MSI a una instalación de interrupción, y formando inferíase con una plataforma de equipo fisico subyacente de una computadora a través de un código de programa de encapsulacion especifico de plataforma.
La Publicación de los E.U.A. Número 2007/0226386 Al, realizada en septiembre 27, 2007, Sharp et al, "Method and Apparatus For Using A Single Multi-Function Adapter With Different Operating Systems", establece que un arreglo flexible permite un montaje sencillo de funciones de equipo fisico para adaptador de canal Ethernet (ECA = Ethernet Channel Adapter) para aparecer según se requiera para cumplir con diversos modelos de despliegue del sistema operativo. Una interfase PCI presenta un modelo lógico de dispositivos virtuales apropiados al sistema operativo relevante. Parámetros y valores de cartografía se asocian con las corrientes de paquetes para permitir que las corrientes de paquetes sean apropiadamente procesadas de acuerdo con el modelo lógico presentado y las operaciones requeridas. La cartografía o mapeo ocurren tanto en el lado del hospedero y en el lado de la red para permitir las múltiples operaciones de ECA sean realizadas mientras que aún permite un suministro adecuado en cada interfase.
La Patente de los E.U.A. Número 6,978,338 B2, otorgada en diciembre 20, 2005, Wang et al, "PCI Extended Function Interface and PCI Device Using the Same", describe una interfase de función extendida PCI y dispositivo PCI que utiliza esta interfase. La interfase de función extendida PCI es adecuada para utilizar en un dispositivo PCI que comprende un dispositivo maestro y al menos un dispositivo esclavo. La interfase de función extendida PCI comprende cuando menos un puerto de conexión y un primer circuito. El dispositivo esclavo se acopla a un puerto de conexión correspondiente y la interfase de función extendida PCI transmite una señal de control a través del puerto de conexión para controlar la operación de un dispositivo esclavo correspondiente. El primer circuito se emplea para determinar el espacio de configuración.
Comunicación entre los dispositivos y el sistema requiere cierta inicialización y el establecimiento de estructuras de datos particulares.
BREVE COMPENDIO De acuerdo con un aspecto de la presente invención, se proporciona una capacidad para facilitar comunicación entre adaptadores y procesadores. Por ejemplo, se proporciona una capacidad que permite parámetros operacionales sean establecidos para una operación particular asociada con un adaptador. En un aspecto adicional de la presente invención, se hace una copia de los parámetros operacionales disponibles al sistema operativo .
Las desventajas de la técnica previa se superan y se proporcionan ventajas a través del suministro de un producto de programa de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central. El producto de programa de computadora incluye un medio de almacenamiento legible por computadora, legible por un circuito de procesamiento y almacenar instrucciones para ejecución por el circuito de procesamiento para realizar el método. El método incluye por ejemplo obtener una instrucción de máquina para ejecución, la instrucción de máquina se define para ejecución en computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina incluye un campo de código operativo que identifica una instrucción de modifica adaptador; un primer campo que identifica una ubicación, los contenidos de los cuales incluyen un identificador de función que identifica un adaptador, una designación de un espacio de dirección asociado con el adaptador al cual aplica una operación modificar y un control de operación que especifica la operación a realizar para el adaptador, el control de operación especifica una operación de una pluralidad de operaciones que pueden seleccionarse; y un segundo campo para identificar una dirección de un bloque de información de función para utilizarse por la operación de modificar; y ejecución de la instrucción de máquina, la ejecución incluye por ejemplo determinar un valor del control de operación; y modificar, en respuesta al control de operación, una entrada de tabla que incluye parámetros asociados con el adaptador, en donde la modificación incluye actualización selectiva de uno o más parámetros de la entrada de tabla, con base en el control de operación y con base en una o más verificaciones que dependen del control de operación.
De acuerdo con otro aspecto de la presente invención, se proporciona un producto de programa de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central. El producto de programa de computadora incluye un medio de almacenamiento legible por computadora, legible por un circuito de procesamiento y que almacena instrucciones para ejecutar por el circuito de procesamiento para realizar un método. El método incluye por ejemplo obtener una instrucción de máquina para ejecutar, la instrucción de máquina se define para ejecución de la computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina incluye por ejemplo un campo de código operativo que identifica una instrucción almacenar; un primer campo que identifica una ubicación, los contenidos de lo cual incluyen un identificador de función que identifica un adaptador y una designación de un espacio de dirección asociado con el adaptador al cual aplica la operación almacenada; y un segundo campo para identificar una ubicación en donde un resultado de la instrucción se va a almacenar; y ejecutar la instrucción de máquina, la ejecución incluye por ejemplo obtener información de un bloque de información de función asociado con el adaptador; y copiar la información desde el bloque de información de función en la ubicación, en respuesta a una terminación exitosa de una o más verificaciones de validez.
Métodos y sistemas referentes a uno o más aspectos de la presente invención también se describen y reivindican aquí.
Características y ventajas adicionales se logran a través de las técnicas de la presente invención. Otras modalidades y aspectos de la invención se describen en detalle aquí y se consideran una parte de la invención reivindicada .
BREVE DESCRIPCIÓN DE LAS DIVERSAS VISTAS DE LOS DIBUJOS Una modalidad preferida de la presente invención ahora se describirá, a manera de ejemplo solamente, con referencia a los dibujos acompañantes, en donde: La Figura 1A ilustra una modalidad de un ambiente de cómputo para incorporar o utilizar uno o más aspectos de la presente invención; La Figura IB ilustra una modalidad de una entrada de tabla de dispositivo ubicada en el concentrador E/S (I/O) de la Figura 1A y utilizado de acuerdo con un aspecto de la presente invención; La Figura 1C ilustra otra 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 un ejemplo de espacios de dirección de una función adaptadora, de : acuerdo con un aspecto de la presente invención; La Figura 3A ilustra un ejemplo de una entrada de tabla de función utilizada de acuerdo con un aspecto de la presente invención; La Figura 3B ilustra una modalidad de un identificador de función empleado de acuerdo con un aspecto de la presente invención; La Figura 4A 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 4B ilustra una modalidad de un campo empleado por la instrucción Modificar Controles de Función PCI de la Figura 4A, de acuerdo con un aspecto de la presente invención; La Figura 4C ilustra una modalidad de otro campo empleado por la instrucción Modificar Controles de Función PCI de la Figura 4A, de acuerdo con un aspecto de la presente invención; La Figura 4D 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 5 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 6 ilustra una modalidad de la lógica asociada con una operación de interrupciones de registro de adaptador que puede especificarse por la instrucción de Modificar Controles de Función PCI, de acuerdo con un aspecto de la presente invención; La Figura 7 ilustra una modalidad de la lógica asociada con una operación de interrupciones liberadas de registro de adaptador 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 8 ilustra una modalidad de la lógica asociada con una operación de parámetros de traducción de dirección de registro E/S (1/0) que puede especificarse por la instrucción Modificar 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 dar de baja parámetros de traducción de dirección E/S (I/O) que puede ser especificado por la instrucción de Modificar 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 re-registro de parámetros de traducción de dirección E/S (I/O) que puede ser especificada por la instrucción Modificar Controles de Función PCI, de acuerdo con un aspecto :de la presente invención; La Figura 11 ilustra una modalidad de la lógica asociada con una operación de reinicia indicación de estado de error, 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 12 ilustra una modalidad de la lógica asociada con una operación de reinicia indicación de carga/almacenamiento bloqueado que puede especificarse por la instrucción Modifica Control de Función PCI, de acuerdo con un aspecto de la presente invención; La Figura 13 ilustra una modalidad de la lógica de una operación ajusta parámetros de medición de funciones PCI 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 14 ilustra una modalidad de una operación ajusta controles de intercepción que puede especificarse por la instrucción Modifica Control de Función PCI, de acuerdo con un aspecto de la presente invención; La Figura 15A ilustra una modalidad de una instrucción Almacena Controles de Función PCI utilizada de acuerdo con un aspecto de la presente invención; La Figura 15B ilustra una modalidad de un campo utilizado por la instrucción Almacena Controles de Función PCI de Figura 15A, de acuerdo con un aspecto de la presente invención; La Figura 15C ilustra una modalidad de otro campo utilizado por la instrucción Almacena Controles de Función PCI de la Figura 15A, de acuerdo con un aspecto de la presente invención; Las Figuras 16A-16B ilustran una modalidad de la lógica asociada con una instrucción Almacena Controles de Función PCI utilizada de acuerdo con un aspecto de la presente invención; La Figura 17 ilustra una modalidad de un producto de programa de computadora que incorpora uno o más aspectos de la presente invención; La Figura 18 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 19 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 20 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 21 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 22A ilustra una modalidad de la unidad de ejecución del sistema de computadora de la Figura 21 para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 22B ilustra una modalidad de la unidad de ramificación del sistema de computadora de la Figura 21 para incorporar y utilizar uno o más aspectos de la presente invención; La Figura 22C ilustra una modalidad de la unidad de carga/almacenamiento del sistema de computadora de la Figura 21 para incorporar y utilizar uno o más aspectos de la presente invención; y La Figura 23 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, un mecanismo de propósitos generales se proporciona para establecer diversos parámetros operacionales para un adaptador. En particular, una instrucción, referida como una instrucción Modifica Controles de Función PCI, se proporciona tal que permite el establecimiento de diversos parámetros operacionales para un adaptador dependiendo de un control de operación especificado. Esta instrucción, que se envía por un sistema operativo (como se emplea aquí, el sistema operativo incluye controladores de dispositivo) y ejecutado por el soporte lógico inalterable de un procesador, permite una modificación selectiva y controlada de una entrada de tabla de dispositivo (empleada por equipo físico) y otros controles de soporte lógico inalterable con base en controles de operación especificados.
Además, en otro aspecto de la presente invención, se proporciona otra instrucción, referida como instrucción Almacena Modificar Controles de Función PCI, que almacena los valores actuales de los parámetros operacionales (por ejemplo, contenidos de un bloque de información de función) en una ubicación designada accesible al sistema operativo.
Como se emplea aquí, el término adaptador incluye cualquier tipo de adaptador (por ejemplo, un adaptador de almacenamiento, adaptador de red, adaptador de procesamiento, adaptador PCI, adaptador criptográfico, otro tipo de adaptadores de entrada/salida, etc.). En una modalidad, un adaptador incluye una función de adaptador. Sin embargo, en otras modalidades, un adaptador puede incluir una pluralidad de funciones de adaptador. Uno o más aspectos de la presente invención se aplican ya sea si un adaptador incluye una función de adaptador o una pluralidad de funciones de adaptador. En una modalidad, si un adaptador incluye una pluralidad de funciones de adaptador, entonces parámetros operacionales por cada función pueden establecerse de acuerdo con un aspecto de la presente invención. Aun más, en los ejemplos aquí presentados, se utiliza 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 1A. 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 aquí 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) 102 acopladas a una memoria de sistema 104 (también conocida como memoria principal) por un controlador de memoria 106. La memoria de sistema, que incluye uno o más espacios de dirección (una porción de memoria asignada a un componente particular-por ejemplo adaptador) , se tiene acceso por las CPUs 102 mediante el 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, 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 requiere acceso a la memoria del sistema. La solicitud 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 y se acopla al controlador de memoria 106 mediante una barra colectora de E/S-a-memoria 120.
El concentrador de entrada/salida incluye por ejemplo un complejo raíz 116 que recibe la solicitud de un interruptor. La solicitud incluye una dirección de entrada/salida que se proporciona a una unidad de traducción de dirección y protección 118 qué tiene acceso a información utilizada para la solicitud. Como ejemplos, la solicitud puede incluir una dirección d entrada/salida utilizada para realizar una operación de acceso de memoria directa (DMA) o para solicitar una interrupción señalada de mensaje (MSI) . Una unidad de traducción y protección de dirección 118 tiene acceso a información utilizada para la solicitud MSI o DMA.
Como un ejemplo particular, para una operación DMA, puede obtenerse información para traducir la dirección. La dirección traducida después se envía al controlador de memoria para tener acceso al sistema.
En un ejemplo, como se describe con referencia a la Figura IB, información empleada para la solicitud MSI o DMA enviada por un adaptador, se obtiene desde una entrada de tabla de dispositivo 130 de una tabla de dispositivo 132 ubicada en el concentrador E/S (por ejemplo, en la unidad de protección y traducción de dirección) . La entrada de tabla de dispositivo incluye información para el adaptador. Específicamente, incluye parámetros operacionales empleados para realizar ciertas operaciones asociadas con su adaptador. Los parámetros particulares almacenados dependen de la operación y se describen más completamente a continuación.
Cada adaptador tiene cuando menos una entrada de tabla de dispositivo asociada. Por ejemplo, ' hay una entrada de tabla de dispositivo por espacio de dirección (en memoria de sistema) asignada al adaptador. Para solicitud enviada de un adaptador (por ejemplo, función PCI 138), una entrada de tabla de dispositivo se ubica utilizando una ID del solicitante que se proporciona en la solicitud.
En una modalidad adicional de un ambiente de cómputo, además de o en lugar de una o más CPUs 102, con referencia a la Figura 1C, un complejo de procesamiento central se acopla al controlador de memoria 106. En este ejemplo, un complejo de procesamiento central 150 incluye, por ejemplo una o más particiones o zonas 152 (por ejemplo, particiones lógicas LPl-LPn) , uno o más procesadores centrales (por ejemplo, CPl-CPm) 154, y un hipervisor 156 (por ejemplo, un administrador de partición lógica), cada uno de los cuales se describe a continuación.
Cada partición lógica 152 es capaz de funcionar como un sistema separado. Esto es, cada partición lógica puede reajustarse independientemente, cargarse en forma inicial con un sistema operativo o un hipervisor (tal como z/V ® ofrecido por International Business Machines Corporation, Armonk, New York) , si se desea y opera con programas diferentes. Un sistema operativo, un hipervisor, o un programa de aplicación que se ejecuta en una partición lógica para sostener acceso a un sistema completo e integro, pero solo una porción del cual está disponible. Una combinación de equipo físico y Código Interno con Licencia (también referido como microcódigo o milicódigo) impide que un programa en una partición lógica interfiera con el programa en una partición lógica diferente. Esto permite que varias particiones lógicas diferentes operen en un procesador físico sencillo o múltiple en una forma de rebanadas de tiempo. En este ejemplo particular, cada partición lógica tiene un sistema operativo residente 158, que puede diferir de uno o más particiones lógicas. En una modalidad, el sistema operativo 158 es un sistema operativo z/OS® o zLinux, ofrecidos por International Business Machines Corporation, Armonk, New York. z/OS® y z/VM® son marcas registradas de International Business Machines Corporation, Armonk, New York.
Procesadores centrales 154 son recursos de procesadores físicos que se asignan a las particiones lógicas. Por ejemplo, una partición lógica 152 incluye uno o más procesadores lógicos, cada uno de los cuales representa todo o una parte de un recurso de procesador físico 154 asignado a la partición. El recurso de procesador subyacente ya puede estar dedicado a esa partición o compartido con otra partición.
Las particiones lógicas 152 se manejan por el hipervisor 156 implementadas por soporte lógico inalterable que se ejecuta en el procesador 154. Particiones lógicas 152 y el hipervisor 156 cada uno comprenden uno o más programas que residen en porciones 'respectivas de almacenamiento central asociado con los procesadores centrales. Un ejemplo de hipervisor 156 es el Administrador de Sistemas/Recursos de Procesador (PPv/SM = Processor Resource/Systems Manager) , ofrecido por International Business Machines Corporation, Armonk, New York.
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 fisico y/o estructuras de datos empleadas en la implementación de código de máquina de más alto nivel. 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 controles de acceso al sistema operativo al equipo físico del sistema.
Aunque, en este ejemplo, un complejo de procesamiento central que tiene particiones lógicas se describe, uno o más aspectos de la presente invención pueden incorporarse en y utilizarse por otras unidades de procesamiento, incluyendo unidades de procesamiento de un solo o múltiples procesadores que no están con particiones, entre otros. El complejo de procesamiento central aquí descrito es solo un ejemplo.
Como se describió anteriormente, adaptadores pueden emitir solicitudes a los procesadores que solicitan diversas operaciones, tales como accesos de memoria directa, interrupciones con signo de mensaje, etc. Además, los procesadores pueden enviar las solicitudes en los adaptadores. Por ejemplo, regresando a la Figura IB, un procesador 102 puede emitir solicitudes para acceso a una función de adaptador 138. La solicitud se dirige desde el procesador a la función adaptador mediante un concentrador E/S 112 y uno o más interruptores 114. En esta modalidad, el controlador de memoria no se muestra. Sin embargo, el concentrador E/S puede estar acoplado al procesador directamente o mediante un controlador de memoria.
En un ejemplo particular, un sistema operativo 140 que se ejecuta dentro del procesador emite una instrucción a la función de adaptador solicitando una operación particular (por ejemplo, lectura/escritura) . En otro ejemplo, de acuerdo con un aspecto de la presente invención, el sistema operativo emite una instrucción para establecer parámetros operacionales para una función de adaptador o para obtener una copia de parámetros operacionales especifica a una función de adaptador. Estas instrucciones se refieren como la instrucción Modifica Controles de Función PCI y una instrucción Almacena Controles de Función PCI, respectivamente, y se ejecutan por un procesador.
En este ejemplo, la instrucción Modifica Controles de Función PCI y la instrucción Almacena Controles de Función PCI enviadas por el sistema operativo son especificas a la infraestructura de E/S. Esto es, ya que la infraestructura E/S se base en PCI o PCIe (ambos de los cuales son referidos aquí como PCI, a menos que se anote de otra forma) , las instrucciones son instrucciones PCI. Aunque en este ejemplo, la infraestructura E/S e instrucciones se basan en PCI, en otras modalidades, pueden emplearse otras infraestructuras e instrucciones correspondientes .
Mayores detalles respecto a la función de adaptador 138 se describen con referencia a la Figura 2. Como se muestra en la Figura 2, la función de adaptador 138 incluye almacenamiento 200, que se define como una pluralidad de espacios de dirección, incluyendo por ejemplo: un espacio de configuración 202 (por ejemplo, espacio de configuración PCI para una función PCI) ; un espacio E/S 204 (por ejemplo, espacio PCI E/S) ; y uno o más espacios de memoria 206 (por ejemplo, espacio de memoria PCI). En otras modalidades, pueden proporcionarse más o menos o diferentes espacios de dirección. ¡ Asociada con cada función de adaptador está una entrada de tabla de función. Como se muestra en la Figura 3A, en un ejemplo, una tabla de función 300 incluye una o más entradas de tabla de función (FTEs) 302. En un ejemplo, hay una entrada de tabla de función por función adaptadora. Cada entrada de tabla de función 302 incluye información para utilizarse en procesamiento asociado con su función de adaptador. En un ejemplo, la entrada de tabla de función 302 incluye, por ejemplo: Número de Instancia 308: 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 310: 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 312: Este campo indica si la función adaptadora está ocupada; Indicador de Estado de Error Permanente 314: Este campo indica si la función adaptadora está en un estado de error permanente; Indicador de Recuperación Iniciada 316: Este campo indica si la recuperación se ha iniciado para la función adaptadora; Indicador de Permiso 318: Este campo indica si el sistema operativo que intenta controlar la función adaptadora tiene autoridad para hacerlo; Indicador de Habilitación 320: Este campo indica si la función de adaptador está habilitada (por ejemplo, 1 = habilitado, 0 = deshabilitado) ; Identificador Solicitante (RID) 322: Este 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 accesos de un espacio de configuración de la función adaptadora. Por ejemplo, al espacio de configuración se puede tener acceso al especificar el espacio de configuración en una instrucción emitida por el sistema operativo (u otra configuració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) 324: Este campo incluye una pluralidad de enteros sin firma, designados como BARO - 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 326: Este campo incluye una pluralidad de enteros sin signo, designados como SIZE0 -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+i consecutivo representa los bits de dirección más significantes. c. El campo SIZEn correspondiente no es cero y representa el tamaño del espacio de dirección. d. El campo SIZEn+1 correspondiente no es significante y se almacena como cero.
Información de Enrutamiento Interno 328: 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 ejemplos .
Indicación de Estado 330: Esto proporciona una indicación por ejemplo, de si se bloquean operaciones de carga/almacenamiento o el adaptador está en el estado de error, asi 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) . 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.
Para ubicar una entrada de tabla de función en una tabla de función que incluye una o más entradas, se emplea en una modalidad, un identificador de función. Por ejemplo, uno o más bits del indicador de función se emplean como un índice en la tabla de función para localizar una entrada de tabla de función particular. Hay un indicador de función para cada función de adaptador. En un ejemplo particular, como se muestra en la Figura 3B, un indicador de función 350 incluye, por ejemplo, un indicador de habilitar 352, que señala si el indicador está habilitado; un número de función 354 que identifica la función (este es un identificador estático y puede emplearse para indexar en la tabla de función) ; y un número de instancia 356 que especifica la instancia particular de este indicador de función.
De acuerdo con un aspecto de la presente invención, se proporciona una configuración (por ejemplo, un sistema operativo) , la capacidad para establecer parámetros operacionales para una función de adaptador. Estos parámetros operacionales se establecen para una operación particular a realizar para o a nombre de la función de adaptador. En un ejemplo, esta capacidad incluye una instrucción Modifica Controles de Función PCI, un ejemplo de lo cual se describe con referencia a las Figuras 4A-4D.
Con referencia a la Figura 4A, una instrucción Modifica Controles de Función PCI 400 incluye, por ejemplo, un código operativo 402 que indica la instrucción Modifica Controles de Función PCI; un primer campo 404 que especifica una ubicación en la cual se incluye diversa información respecto a la función de adaptador para lo cual se establecen los parámetros operacionales; y un segundo campo 406 que especifica una ubicación de la cual se busca un bloque de información de función PCI (FIB) . Los contenidos de las ubicaciones designados por los Campos 1 y 2 se describen adicionalmente a continuación.
En una modalidad, el Campo 1 designa un registro general que incluye información diversa. Como se muestra en la Figura 4B, los contenidos del registro incluyen, por ejemplo, un identificador de función 410, que distingue el identificador de la función adaptadora a nombre del cual la instrucción modificar se realiza; un espacio de dirección 412 que designa un espacio de dirección en la memoria de sistema asociado con la función de adaptador designada por el identificador de función; un control de operación 414 que especifica la operación a realizar por la función de adaptador; y estado 416 que proporciona estado respecto a la instrucción cuando la instrucción completa con un código prede inido .
En un ejemplo, como se muestra en la Figura 4C, el Campo 2 designa una dirección lógica 420 de un bloque de información de función PCI (FIB), que incluye información respecto a una función de adaptador asociado. El bloque de información de función se emplea, de acuerdo con un aspecto de la presente invención, 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 de adaptador. Antes de emitir la instrucción, la información se almacena en FIB durante inicialización y/o configuración del adaptador, y/o en respuesta a un evento particular.
Mayores detalles respecto a un bloque de información de función se describen con referencia a la Figura 4D. En una modalidad, un bloque de información de función 450 incluye los siguientes campos: Formato 451: Este campo especifica el formato de FIB.
Control de Intercepción 452: 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 454: 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 456: Este campo indica si están bloqueadas operaciones de carga/almacenamiento; Función PCI Válida 458: 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 460: 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 461: 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) 462: 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) 464: 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) 466: 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) 468: Este campo incluye la subclase de interrupción empleada para presentar interrupciones de adaptador para la función adaptadora; Número de Interrupciones (NOI) 470: 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) 472: 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 474: Este campo específica 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) 476: 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 478: 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) 480: 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 482: Este campo incluye una clave de acceso para tener acceso al bloque de medición de función; Control de Notificación de Bit de Resumen 484 : Este campo indica si hay un vector de bit de resumen empleado; Señal de Autorización de Instrucción 486: Este campo se emplea para determinar si se autoriza un huésped de modo de almacenamiento paginable (e.g., V = V huésped) 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 487: 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 una indicación de la tabla de más alto nivel (por ejemplo, tabla de segmento, región 3rd, etc.) y una indicación del formato selecto (por ejemplo, compatible con CPU DAT, formato de traducción de dirección extendida E/S, un formato de derivación, un formato sin búsqueda) .
El bloque de información de función designado en la instrucción Modifica Controles de Función PCI, se utiliza de acuerdo con un aspecto de la presente invención para modificar una entrada de tabla de dispositivo selecto, una entrada de tabla de función 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 5. 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 5, 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 500. 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 502. 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, tal como un huésped de modo de almacenamiento no paginable), CONSULTA 504. De ser afirmativo, el sistema operativo hospedero emulará la operación para ese huésped, ETAPA 506.
De otra forma, se hace una determinación de si uno o más de los operandos están alineados,- CONSULTA 508. 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 510. De otra forma, se hace una determinación de si el bloque de información de función es accesible, CONSULTA 512. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 514. 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 516. 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 518.
Si el identificador se habilita, entonces el identificador se utiliza para localizar una entrada de tabla de función, ETAPA 520. 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 522 De no ser así, entonces se proporciona una condición de excepción, ETAPA 524. De otra forma, si la configuración que emite la instrucción es un huésped, CONSULTA 526, entonces se proporciona una condición de excepción (por ejemplo, intercepción al hospedero), ETAPA 528. 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 530. 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 532.
Si se habilita la función, entonces se hace una determinación de si la recuperación es activa, CONSULTA 534. 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 536. Sin embargo, si no está activa la recuperación, entonces se hace una determinación adicional de si la función está ocupada, CONSULTA 538. 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 540. 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 542. 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 544. 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 546. Esto es, es el control de operación de uno de los controles de operación especificados para esta instrucción. Si es inválido, entonces se proporciona condición de excepción, ETAPA 548. 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 de registro de interrupciones de adaptador, que se utiliza para controlar interrupciones de adaptador. En respuesta a este control de operación, los parámetros de función de adaptador relevantes a las interrupciones de adaptador se establecen 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 6. Como un ejemplo, los operandos para esta operación, que se obtienen del bloque de información de función, incluyen por ejemplo: una sub-clase de interrupción (ISC) ; número de interrupciones permitidas (NOI) ; un desplazamiento de vector de bit de interrupción de adaptador (AIBVO) ; una notificación en resumen (S) ; un desplazamiento de vector de bit de resumen de interrupción para 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 de interrupción de adaptador (AISB) .
Con referencia a la Figura 6, inicialmente, se hace una determinación de si el número de interrupciones (NOIs) especificadas en FIB es mayor que un máximo dependiente de modelo, CONSULTA 600. De ser asi, entonces se proporciona una condición de excepción, ETAPA 602. 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 604. De ser asi, entonces se proporciona condición de excepción, ETAPA 606. Si el NOI más AIBVO no es mayor que un máximo dependiente de modelo, entonces se hace una determinación adicional de si la dirección AIBV más NOI se extiende por una frontera 4K, CONSULTA 608. Si se extiende la frontera de 4K, entonces se proporciona condición de excepción, ETAPA 610. De otra forma, se hace una determinación de si están disponibles recursos suficientes para cualesquiera recursos requeridos, ETAPA 612. Si no hay suficientes recursos, entonces se proporciona una condición de excepción, ETAPA 614.
De otra forma, se hace una determinación de si las interrupciones de adaptador ya están registradas para esta función, ETAPA 616. En una modalidad, esto se determinará al verificar uno o más de los parámetros (por ejemplo, en FIB) . En particular, los parámetros asociados con interrupciones, tales como NOI, se comprueban. Si los campos están poblados, entonces los adaptadores se registran para interrupciones. Si el adaptador ya está registrado, entonces se proporciona una condición de excepción, ETAPA 618. De otra forma, los parámetros de interrupción se obtienen de FIB y colocan en la entrada de tabla de función (u otra ubicación especificada) y entrada de tabla de dispositivo correspondiente (DTE) . También, se establece un indicador de habilitación MSI en DTE, ETAPA 620. Esto es, los parámetros de función PCI relevantes a interrupción de adaptador se establecen en FTE y/o DTE con base en la información que se recupera del bloque de información de función. Estos parámetros incluyen, por ejemplo, la dirección 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 7. Con esta operación, se reinicializan los parámetros de función de adaptador relevantes a interrupción de adaptador.
Con referencia a la Figura 7, inicialmente se hace una determinación de si el adaptador especificado por el identificador de función se registra para interrupciones, CONSULTA 700. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 702. 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 704. En un ejemplo, estos parámetros incluyen la dirección ISC, NOI, AIBVO, S, AIBSO, AIBV y la dirección AISB.
Además de lo anterior, otro control de operación puede ser especificado es una operación de registro de parámetros de traducción de dirección E/S (I/O) empleados para controlar traducciones de dirección para un adaptador. Con esta operación, los parámetros de función PCI relevantes a la traducción de dirección E/S se ajustan de los parámetros apropiados de FIB. Estos parámetros incluyen por ejemplo la dirección base PCI; el limite de dirección PCI (también conocido como limite o limite PCI); el puntero de traducción de dirección E/S, el formato de traducción de dirección; y el tamaño de página que son operandos para esta operación. Hay también operandos implicados, incluyendo una dirección DMA inicial ( SDMA) y una dirección DMA final (EDMA) , que se almacenan en una ubicación accesible al procesador que ejecuta la instrucción.
Una modalidad de la lógica para establecer los parámetros operacionales para traducción de dirección E/S, se describe con referencia a la Figura 8. Inicialmente, se hace una determinación de si la dirección base PCI en FIB es mayor que el limite PCI en FIB, CONSULTA 800. Si la comparación de la dirección base y el limite indican que la dirección base es mayor que el limite, entonces se reconoce una condición de excepción, ETAPA 802. Sin embargo, si la dirección base es menos que o igual al limite, entonces se hace una determinación adicional de si el formato de traducción y el tamaño de páginas son válidos, CONSULTA 804. Si son inválidos, entonces se proporciona una condición de excepción, ETAPA 806. Sin embargo, si son válidos, se hace una determinación adicional de si el tamaño del espacio de dirección (con base en la dirección base y limite) excede la capacidad de traducción, CONSULTA 808. En un ejemplo, el tamaño del espacio de dirección se compara con la capacidad de traducción de dirección máxima posible, con base en el formato de la tabla de nivel superior. Por ejemplo, si la tabla de nivel superior es una tabla de segmento compatible DAT, la capacidad de traducción máxima es 2 Gigabytes.
Si el tamaño del espacio de dirección excede la capacidad de traducción, entonces se proporciona una condición de excepción, ETAPA 810. De otra forma, se hace una determinación adicional de si la dirección base es menos que la dirección DMA inicial, CONSULTA 812. De ser asi, entonces se proporciona una condición de excepción, ETAPA 814. De otra forma, otra determinación se hace si el límite de dirección es mayor que la dirección DMA final, CONSULTA 816. De ser así, entonces se proporciona una condición de excepción, ETAPA 818. En un ejemplo, la dirección DMA inicial y la dirección DMA final se basan en una política a todo lo ancho del sistema.
Posteriormente, se hace una determinación de si recursos suficientes, si se requieren algunos, están disponibles para realizar una traducción de dirección E/S, CONSULTA 820. Por el contrario, se proporciona una condición de excepción, ETAPA 822. De otra forma, se hace una determinación adicional de si los parámetros de traducción de dirección E/S ya se han registrado en FTE y DTE, CONSULTA 824. Esto se determina al verificar los valores de los parámetros en FTE/DTE. Por ejemplo, si los valores en FTE/DTE son cero u otro valor definido, entonces no se ha realizado el registro. Para localizar FTE, el identificador que se proporciona en la instrucción se emplea, y para localizar DTE, se emplea un índice de dispositivo en FTE.
Si la función de adaptador ya se ha registrado para traducción de dirección, entonces se proporciona una condición de excepción, ETAPA 826. De no ser así, entonces se realiza una determinación de si el espacio de dirección DMA que se especifica, es válido (es decir, es un espacio de dirección para el cual DTE se ha habilitado) , CONSULTA 828. De no ser así, entonces se proporciona una condición de excepción, ETAPA 830. Si todas las verificaciones son exitosas, entonces los parámetros de traducción se colocan en la entrada de tabla de dispositivo y opcionalmente en la entrada de tabla de función correspondiente (u otra ubicación designada), ETAPA 832. Por ejemplo, los parámetros de función PCI relevantes a traducción de dirección E/S se copian del bloque de información de función y colocan en DTE/FTE. Estos parámetros incluyen por ejemplo la dirección base PCI, el límite de dirección PCI, el puntero de traducción de dirección E/S, el formato de traducción de dirección y el tamaño de página. Esta operación habilita accesos DMA al espacio de dirección DMA especificado. Habilita traducción de dirección E/S para la función de adaptador.
Otro control de operación que puede ser especificado por la instrucción Modifica Controles de Función PCI es una operación de parámetros de traducción de dirección E/S sin registro, un ejemplo del cual se describe con referencia a la Figura 9. Con esta operación, los parámetros de función relevantes a la traducción de dirección E/S se reajustan a ceros. Esta operación deshabilita accesos DMA al espacio de dirección DMA especificado y provoca una purga de las entradas de memoria intermedia de traducción anticipada E/S para ese espacio de dirección DMA. Deshabilita la traducción de dirección.
Con referencia a la Figura 9, en una modalidad, se hace una determinación de si los parámetros de traducción de dirección E/S no están registrados, CONSULTA 900. En un ejemplo, se hace esta determinación al verificar los valores de los parámetros apropiados en FTE o DTE. Si esos campos son cero o algún valor especificado, no se registran. Por lo tanto, se proporciona una condición de excepción, ETAPA 902. Si se registran, entonces se hace una determinación de si el espacio de dirección DMA es válido, CONSULTA 904. Si es válido, entonces se proporciona una condición de excepción, ETAPA 906. Si es válido el espacio de dirección DMA, entonces los parámetros de traducción en la entrada de tabla del dispositivo y opcionalmente en la entrada de tabla de función correspondiente se liberan, ETAPA 908.
Otro control operacional es una operación de re-registro de parámetros de traducción de dirección E/S empleada para ajuste en tamaño de espacios de dirección DMA. Con esta operación, los parámetros de función PCI relevantes a traducción de dirección E/S se reemplazan con los parámetros apropiados de FIB. Estos parámetros incluyen por ejemplo el limite de dirección PCI; y el puntero de traducción de dirección E/S; el formato y tamaño de página, que se proporcionan como operandos del FIB. Operandos implicados también son la dirección base PCI actualmente registrada de la entrada de tabla de función o entrada de tabla de dispositivo, y la dirección DMA final.
Una modalidad de la lógica asociada con esta operación se describe con referencia a la Figura 10. Inicialmente, se hace una determinación de si la dirección base actual de la entrada de tabla de función es mayor que el limite de dirección PCI especificado en el bloque de información de función, CONSULTA 1000. Si esto es, entonces se proporciona una condición de excepción, ETAPA 1002. Por el contrario, una determinación se hace de si el formato y tamaño son válidos, CONSULTA 1004. Si no, entonces una condición de excepción se proporciona, ETAPA 1006. Si el formato de las tablas de traducción de dirección y el tamaño de la página (u otra unidad de memoria) son válidos, entonces se hace una determinación adicional de si el tamaño del espacio de dirección excede la capacidad de traducción, CONSULTA 1008. En caso de que el tamaño de espacio de dirección excede la capacidad de traducción, entonces se proporciona una condición de excepción, ETAPA 1010. Si no, entonces se hace una determinación de si el limite de dirección es mayor que la dirección DMA final, CONSULTA 1016. De ser asi, entonces se proporciona una condición de excepción, ETAPA 1018. Por el contrario, se hace una determinación de si hay suficientes recursos, si se requieren, para realizar esta operación, CONSULTA 1020. Si hay recursos insuficientes, entonces se proporciona una condición de excepción, ETAPA 1022.
Si están disponibles recursos suficientes, entonces se hace una determinación de si la traducción de dirección E/S está registrada para la función de adaptador, CONSULTA 1024. Si no, entonces se proporciona una condición de excepción, ETAPA 1026. De otra forma, se hace una determinación de si el espacio de dirección es válido, ETAPA 1028. Si el espacio de dirección es inválido, se proporciona una condición de excepción, ETAPA 1030. Si las verificaciones son exitosas, los parámetros de traducción se actualizan en la entrada de tabla de dispositivo y opcionalmente en la correspondiente entrada de tabla de función (u otra ubicación designada), ETAPA 1032. Esto es, los parámetros de función PCI relevantes a la traducción de dirección E/S se reemplazan con los operandos del bloque de información de función. Estos parámetros incluyen el limite de dirección PCI, formato de traducción y campos de puntero de traducción de dirección E/S. El espacio de dirección DMA y los campos de dirección base PCI permanecen sin cambio. Una solicitud por cambiar estos campos será ignorada o se proporcionará una condición de excepción en respuesta a verificar estas condiciones. Además, en una modalidad, si el tamaño del espacio de dirección DMA se reduce, la memoria intermedia de traducción anticipada en concentrador E/S se purga. Permanece habilitada la traducción E/S.
En un aspecto de esta operación, se incluyen controles que dictan un ordenamiento particular de actualizaciones relacionadas a re-registro de los parámetros de traducción de dirección. Por ejemplo, si el número de niveles de traducción se incrementa (es decir, se va a emplear una tabla de traducción de superior nivel) , entonces el puntero de traducción de! dirección de entrada/salida se va a cambiar antes , del limite de dirección PCI y se incluyen verificaciones para asegurar esto. Además, si el número de niveles disminuye, entonces se proporcionan verificaciones para asegurar que el limite se actualiza antes del puntero de traducción de dirección. Después, se realiza una purga de cualquier memoria intermedia de traducción anticipada relacionada.
Una operación adicional que puede realizarse es una operación de reinicia indicación de estado de error empleada para reiniciar condiciones de error, un ejemplo de lo cual se describe con referencia a la Figura 11. Con esta operación, las indicaciones de bloqueo de carga/almacenamiento y estado de error se ajustan a cero, de esta manera permitiendo que el concentrador E/S procese subsecuentes DMAs y MSIs recibidos del adaptador. En una modalidad, se hace una determinación de si la función de adaptador está en estado de error, como se indica por el valor de este parámetro, CONSULTA 1100. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 1102. De otra forma, las indicaciones de bloqueo de carga/almacenamiento y estado de error en la entrada de tabla de función y entrada de tabla de dispositivo correspondiente se reinician a ceros, ETAPA 1104.
Otra operación que puede especificarse es una operación de reinicia indicación de carga/almacenamiento bloqueado. Con esta operación, la indicación de carga/almacenamiento bloqueado se ajusta a cero, de esta manera permitiendo que instrucciones de carga/almacenamiento PCI sean enviadas a este adaptador. Una modalidad de la lógica asociada con esta operación se describe con referencia a la Figura 12. Inicialmente, se hace una determinación de si la función está en un estado de carga/almacenamiento bloqueado, como se indica por el valor en este parámetro, CONSULTA 1200. De no ser asi, se proporciona una condición de excepción, ETAPA 1202. De otra forma, la indicación de carga/almacenamiento bloqueado en la entrada de tabla de función y la entrada de tabla de dispositivo correspondiente se reinician a ceros, ETAPA 1204.
Otra operación que puede ser especificada por el control de operación es una operación de ajusta parámetros de medición de función PCI empleada para mantener mediciones. Con esta operación, los parámetros de función PCI relevantes a medición de función PCI se ajustan del bloque de información de función. Si el campo de dirección de bloque de medición de función contiene una dirección no cero, entonces se habilita la medición de función PCI. Sin embargo, si el campo de dirección de bloque de medición de función contiene ceros, entonces se deshabilita la medición de función PCI. En un ejemplo, los operandos para esta operación obtenidos del bloque de información de función incluyen la clave de bloque de medición de función y dirección de bloque de medición de función.
Operandos implicados incluyen el número de espacios de dirección DMA, que se obtiene de la entrada de tabla de función.
Una modalidad de la lógica asociada con esta operación se describe con referencia a la Figura 13. En un ejemplo, se hace una determinación de si la dirección de bloque de medición de función es igual a cero, CONSULTA 1300. De ser asi, entonces los parámetros de medición de función en la entrada de tabla de función se reajustan a cero, ETAPA 1302. Además, los contadores DMA en el concentrador E/S se liberan y deshabilitan y se deshabilita la medición.
Regresando a la CONSULTA 1300, si la dirección de bloque de medición de función no es cero, entonces se hace una determinación adicional de si el bloque de medición de función para todas las entradas de tabla de dispositivo se extiende por una frontera de 4K, CONSULTA 1306. En un ejemplo, se determina extensión de bloque de 4K al agregar la dirección de bloque de medición de función, tamaño de bloque de medición de función fija más extensiones especificas de espacio de dirección DMA para cada espacio de dirección DMA. Si el bloque de medición de función se extiende por una frontera de 4K, entonces se proporciona una condición de excepción, ETAPA 1308. De otra forma, los parámetros de medición de función en la entrada de tabla de función (por ejemplo, FMBA y FMBK) se ajustan a partir de la dirección de bloque de medición de función y parámetros de clave de bloque de medición de función del bloque de información de función, ETAPA 1312. Además, los contadores DMA en el concentrador E/S se liberan y habilitan y se habilita la medición.
Una operación aun adicional que puede especificarse por el control de operación de la instrucción Modifica Control de Función PCI es una operación de ajuste a control de intercepción empleada para controlar la intercepción de instrucciones por un sistema operativo hospedero. Con esta operación, los parámetros de función PCI respecto a control de intercepción se ajustan a partir del campo de control de interrupción del bloque de información de función. Este control de operación se considera reservado cuando se envía por un hospedero de modo de almacenamiento paginable.
Una modalidad de la lógica de la operación ajusta control de intercepción, se describe con referencia a la Figura 14. En un ejemplo, el operando es el control de intercepción del bloque de información de función. En respuesta a especificar esta operación, el control de intercepción en la entrada de tabla de función se ajusta al control de intercepción del bloque de información de función, ETAPA 1400.
Como se describió anteriormente, utilizando la instrucción Modifica Controles de Función PCI, controles modificables por programas selectos de la función PCI especificadas se reemplazan con valores de FIB. Esto habilita el sistema operativo para solicitar cambios a DTE (y FTE) sin dar al sistema operativo acceso directo a DTE. El soporte lógico inalterable realiza las . operaciones selectas y es capaz de proporcionar control utilizando diversas verificaciones de validez, como se describió anteriormente .
Las verificaciones son especificas a la operación que se solicita.
Además de la instrucción Modifica Controles de Función PCI, una instrucción Almacena Controles de Función PCI está disponible a la configuración. Esta instrucción se emplea para almacenar los contenidos actuales del bloque de información de función en una ubicación designada por el sistema operativo. Una modalidad de la instrucción Almacena Controles de Función PCI se describe con referencia a las Figuras 15A-15C.
Con referencia a la Figura 15A, ! una instrucción Almacena Controles de Función PCI 1500 incluye, por ejemplo un código operativo 1502, que indica la instrucción Almacena Controles de Función PCI; un primer campo 1504 que especifica una ubicación en la cual información diversa se incluye, respecto a la función adaptadora para la cual se realiza el almacenamiento; y un segundo campo 1506 que especifica una ubicación en la cual se almacena una dirección lógica del bloque de información de función PCI.
En una modalidad, el Campo 1 designa un registro general que incluye información diversa. Como se ilustra en la Figura 15B, los contenidos del registro incluyen por ejemplo un identificador de función 1510 que distingue al identificador de la función de adaptador para lo cual la instrucción almacenar se realiza; estado 1512 que proporciona estado respecto a la instrucción cuando la instrucción completa con un código predefinido; y un espacio de dirección 1514 que designa un espacio de dirección en la memoria del sistema asociado con la función adaptadora designada por el identificador de función.
En un ejemplo, como se muestra en la Figura 15C, el Campo 2 designa una dirección lógica 1516 de un bloque de información de función PCI, que incluye información respecto a una función adaptadora y se va a copiar a esta ubicación especificada de acuerdo con un aspecto de la presente invención.
Una modalidad de la lógica asociada con la instrucción Almacena Controles de Función PCI, se describe con referencia a las Figuras 16A-16B. En un ejemplo, los operandos para esta instrucción incluyen identificador de función habilitada, el identificador de espacio de dirección DMA, y una dirección de una memoria intermedia de resultado (por ejemplo, el bloque de información de función en el almacenamiento de usuario) . En un ejemplo, es el sistema operativo que envía esta instrucción que realiza por el procesador.
Con referencia a la Figura 16?, inicialmente, se hace una determinación de si la instalación permite que una instrucción Almacena Controles de Función PCI está instalada, CONSULTA 1600. Esta determinación se hace por ejemplo al verificar un indicador almacenado por ejemplo en un bloque de control. Si la instalación no se realiza, se proporciona una condición de excepción, ETAPA 1602. De otra forma, se hace una determinación de si la instrucción se envió por un hospedero de modo de almacenamiento paginable (u otro hospedero), CONSULTA 1604. De ser asi, el sistema operativo hospedero emulará la operación para ese hospedero, ETAPA 1606.
De otra forma, se hace una determinación de si los operandos están alineados, CONSULTA 1608. Por ejemplo, se hace una determinación de si la dirección en la cual se almacenará el bloque de información de función está en una frontera de doble palabra. En un ejemplo, esto es opcional. Si los operandos no están alineados, entonces se proporciona una condición de excepción, ETAPA 1610. De otra forma, se hace una determinación de si el bloque de información de función es almacenable, CONSULTA 1612. Esto es, ajustará en la memoria intermedia de resultado. De no ser así, se proporciona entonces una condición de excepción, ETAPA 1614. De otra forma, el identificador se emplea para localizar una entrada de tabla de función, ETAPA 1616. 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 realiza el almacenamiento .
Se hace una determinación de si se encontró la entrada de tabla de función, CONSULTA 1618. De no ser asi, entonces se proporciona una condición de excepción, ETAPA 1620. De otra forma, si la configuración que emite la instrucción es un hospedero, se hace una determinación de si la función se configura para uso por el hospedero, CONSULTA 1622. Si no está autorizado, se proporciona una condición de excepción, ETAPA 1624. De otra forma, se hace una determinación de si la función está ocupada, CONSULTA 1626. Esta determinación se realiza al verificar el indicador de ocupado en la entrada de tablá de función. Si la función está ocupada, entonces se proporciona una condición de ocupado, ETAPA 1628. Con la condición de ocupado, la instrucción puede reintentarse en lugar de retirarse .
Si la función no está ocupada, entonces se realiza una determinación adicional de si es válido el espacio de dirección, CONSULTA 1630. Si el espacio de dirección es inválido, entonces se proporciona una condición de excepción, ETAPA 1632. Sin embargo, si el espacio de dirección es válido, entonces se realiza una determinación de si la recuperación es activa para esta función adaptadora, CONSULTA 1634. Si la recuperación es activa, entonces se proporciona una condición de excepción, ETAPA 1636. Si la recuperación no es activa, entonces se realiza una determinación adicional de si ha habido un error permanente, CONSULTA 1638. Si hay un error permanente, entonces se proporciona una condición de excepción, ETAPA 1640. De otra forma, el procesamiento continúa con una determinación de si la función está habilitada, CONSULTA 1650 (Figura 16B) .
En un ejemplo, se hace esta determinación al verificar el indicador de habilitar en la entrada de tabla de función. Si la función no está habilitada, entonces se hace una determinación de si el identificador está habilitado, CONSULTA 1652. En una modalidad, esta determinación se realiza al verificar el indicador habilitado en el indicador. Si el indicador está habilitado pero la función no está habilitada, entonces se proporciona una condición de excepción, ETAPA 1654. Sin embargo, si ni la función ni el indicador están habilitados, entonces se almacenan ceros en la memoria intermedia de resultado, ETAPA 1656.
Regresando a la CONSULTA 1650, si se habilita la función, entonces de nuevo se hace una determinación de si el indicador está habilitado, CONSULTA 1660. Si están habilitadas la función y el indicador, entonces la información de función de FIB se almacena en una ubicación designada por el sistema operativo referida aquí como memoria intermedia de resultado, ETAPA 1662.
Sin embargo si la función está habilitada pero el identificador no está habilitado, entonces la información de función de FIB se almacena en la memoria intermedia de resultado y el identificador de función de alimentación se reemplaza con el identificador de habilitado, ETAPA 1664. Esto completa el procesamiento de la instrucción Almacena Controles de Función PCI.
Como se describió anteriormente, se proporciona una instrucción Almacena Controles de Función PCI que habilita una copia del bloque de información de función sea colocada en una ubicación designada por el sistema operativo .
Las instrucciones Modifica y Almacena habilitan al sistema operativo para solicitar cierta acción, tal como ajusfar diversos parámetros operacionales para una función de adaptador (instrucción Modifica) y/u obtener una copia del bloque de información de función que contienen las características de la función de adaptador (Almacena) . En respuesta a la solicitud del sistema operativo para ejecutar estas instrucciones, el soporte lógico inalterable ejecuta las instrucciones y asegura gue se hagan ciertas verificaciones antes de completar la operación solicitada proporcionando ciertos controles sobre el sistema operativo .
De acuerdo con un aspecto de la presente invención, se proporciona un mecanismo en donde estructuras de datos de hospederos son (a) establecidas antes que el dispositivo PCI pueda comunicarse con el sistema, (b) actualiza dinámicamente durante accesos PCI, y (c) suprimen cuando se va a terminar la comunicación PCI . Estas estructuras incluyen, por ejemplo: Fronteras que limitan el alcance del almacenamiento principal accesible por la función PCI; Tablas de traducción de dirección E/S, utilizadas por un protocolo de acceso de memoria directo (DMA) de funciones PCI; Vectores de bit de interrupción y vectores de bit de resumen, utilizados para señalar el progreso (incluyendo terminación) de una operación E/S; Estructuras empleadas en la medición de desempeño de la función PCI; y Estructuras empleadas en la ejecución interpretativa de otras instrucciones PCI.
En un ejemplo, el mecanismo incluye la instrucción Modifica Controles de Función PCI.
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 17, en un ejemplo, un producto de programa de computadora 1700 incluye por ejemplo uno o más medios de almacenamiento legibles por computadora 1702, para almacenar medios de código de programa legible por computadora o lógica 1704, 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 linea 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 (WAN) , 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 articulo 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, manténer, 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 se describen tablas de traducción, cualquier estructura de datos puede emplearse y el término tabla habrá de incluir todas estas estructuras de datos. Aún más, aunque los adaptadores son basados en PCI, uno o más aspectos de la presente invención son utilizables con otros adaptadores u otros componentes E/S. Adaptador y adaptador PCI son sólo ejemplos. Aún más, FTE, DTE^ FIB y/u otras estructuras pueden incluir más, menos o diferente información. Además, las verificaciones realizadas en las instrucciones, operaciones y/o comandos pueden realizarse en un orden diferente; y/o más, menos o diferentes verificaciones pueden emplearse. 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 balmacenamiento a granel durante ejecución.
Dispositivos de Entrada/Salida o E/S (I/O) (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 18, 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 de almacenamiento distinto en general no son observables por él 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 dé 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 linea 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 14, 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 19 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 19 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 acuerdó 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 inferíase 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 ( AN = 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 20 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 20, 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 System z® disponible de International Business Machines Corporation.
Con referencia de forma concurrente a la FIGURA 19 y a la FIGURA 20, 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 . la 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 21, 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 lineas 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 (PS = 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 22A, 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 él 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 identi icados 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, 0 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 22B, 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 ej emplo .
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 22C, 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 21) 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. Información respecto a los productos emuladores referidos anteriormente está disponible en la . Red Mundial, respectivamente, www. hercules-390.org y www. funsoft . com.
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 grupo correspondiente de instrucciones de máquina nativas 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 especifico 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 " ultiprocessor 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 titulo "Symmetrical ultiprocessing Bus and Chipset Used for Coprocessor Support Allowing 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 23, 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 como 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 "el/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 (22)

REIVINDICACIONES
1. Un método para ejecutar una instrucción de máquina en una unidad de procesamiento central, caracterizado porque comprende las etapas de: obtener una instrucción de máquina para ejecución, la instrucción de máquina se define para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina comprende: un campo de código operativo que identifica una instrucción modifica adaptador; un primer campo que identifica una ubicación, los contenidos de la cual incluyen un identificador de función, que identifica un adaptador, una designación del espacio de dirección asociado con el adaptador al cual aplica una operación modificar, y un control de operación que especifica la operación a realizar para el adaptador, el control de operación especifica una operación de una pluralidad de operaciones que pueden seleccionarse; y un segundo campo para identificar una dirección de un bloque de información de función para utilizarse por la operación modificar; y ejecutar la instrucción de máquina, la ejecución comprende: determinar un valor del control de operación; y modificar, en respuesta al control de operación, una entrada de tabla que incluye parámetros asociados con el adaptador, en donde la modificación comprende actualizar selectivamente uno o más parámetros de la entrada de tabla con base en el control de operación y en base a una o más verificaciones que dependen del control de operación.
2. El método de conformidad con la reivindicación 1, caracterizado porque la instrucción se emite por un sistema operativo, y en donde la modificación comprende utilizar información en el bloque de información de función para modificar el uno o más parámetros, el bloque de información de función buscado de memoria accesible al sistema operativo.
3. El método de conformidad con la reivindicación 2, caracterizado porque la entrada de tabla comprende una entrada de tabla de dispositivo situada en un concentrador acoplado al adaptador y el procesador u otra entrada asociada con el adaptador.
4. El método de conformidad con la reivindicación 3, caracterizado porque tanto la entrada de tabla de dispositivo como la otra entrada sé actualizan.
5. El método de conformidad con la reivindicación 2, caracterizado porque el control de operación comprende registro de interrupciones de adaptador para el adaptador, y en donde la modificación comprende modificar uno o más parámetros específicos a las interrupciones de adaptador, el uno o más parámetros comprenden una dirección de un vector de interrupción de adaptador para el adaptador, un desplazamiento dentro del vector de interrupción de adaptador, una dirección de un vector de resumen de interrupción de adaptador, un desplazamiento dentro del vector de resumen de interrupción de adaptador, un control de notificación de resumen y un número de interrupciones soportadas por el adaptador.
6. El método de conformidad con la reivindicación 2, caracterizado porque el control de operación comprende registrar parámetros de traducción de dirección de entrada/salida, y en donde la modificación comprende modificar uno o más parámetros específicos a la traducción de dirección, el uno o más parámetros incluyen una dirección base del espacio de dirección, un limite del espacio de dirección, un puntero de traducción que indica la tabla de traducción de dirección de nivel más alto a utilizar, un tamaño de una unidad de memoria y un formato de traducción de dirección.
7. El método de conformidad con la reivindicación 2, caracterizado porque la operación comprende un re-registro de parámetros de traducción de dirección, y en donde la modificación comprende modificar uno o más parámetros específicos al re-registro de la traducción de dirección, el uno o más parámetros incluye un límite del espacio de dirección y un puntero de traducción de dirección que indica una tabla de traducción de dirección de nivel más alto para utilizar, y en donde la modificación utiliza el uno o más controles para indicar un ordenamiento particular de actualización referentes al reregistro de los parámetros de traducción de dirección.
8. El método de conformidad con la reivindicación 7, caracterizado porque otro parámetro de traducción de dirección comprende una dirección base del espacio de dirección, y en donde en respuesta a una solicitud para modificar la dirección base, el uno o más controles se utilizan para evitar que la dirección base se · actualice.
9. El método de conformidad con la reivindicación 2, caracterizado porque el control de operación comprende ajustar parámetros de medición de función de adaptador y en donde la modificación comprende modificar uno o más parámetros específicos para medición de adaptador, el uno o más parámetros comprende un recuento de muestras, uno o más recuentos de instrucciones, y uno o más recuentos de acceso de memoria directa.
10. El método de conformidad con la reivindicación 1, caracterizado porque el control de operación comprende una indicación de reinicio de estado de error, y en donde la modificación comprende reiniciar uno o más indicadores de estado en la entrada de tabla.
11. El método de conformidad con la reivindicación 1, caracterizado porque el control de operación comprende dar de baja interrupción de adaptador, y en donde la modificación comprende reajustar uno o más parámetros específicos a interrupciones de adaptador, el uno o más parámetros incluye una dirección de un vector de interrupción de adaptador para el adaptador, un desplazamiento dentro del vector de interrupción de adaptador, una dirección de un vector de resumen de adaptador, un desplazamiento dentro del vector de resumen de interrupción de adaptador, un control de notificación de resumen, y un número de interrupciones soportadas por el adaptador .
12. El método de conformidad con la reivindicación 1, caracterizado porque el control de operación comprende dar de baja traducción de dirección de entrada/salida y en donde la modificación comprende reajustar uno o más parámetros específicos a la traducción de dirección, el uno o más parámetros incluyen una dirección base del espacio de dirección,' un límite del espacio de dirección, un puntero de traducción de dirección que indica una tabla de traducción de dirección de nivel más alto para utilizar, un tamaño de una unidad de memoria y un formato de traducción de dirección.
13. Un programa de computadora que comprende un código de programa de computadora almacenado en un medio legible por computadora para, cuando se carga en un sistema de computadora y ejecuta ahí, provocar que el sistema de computadora realice todas las etapas de un método de acuerdo con cualquiera de las reivindicaciones 1 a 12.
14. Un sistema de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central, el sistema de computadora se caracteriza porque comprende: una memoria; un procesador en comunicación con la memoria; un procesador adaptado para obtener una instrucción de máquina para ejecución, la instrucción de máquina se define para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina comprende: un campo de código operativo que identifica una instrucción modifica adaptador; un primer campo que identifica una ubicación, los contenidos de lo cual incluyen un identificador de función que identifica un adaptador, una designación de un espacio de dirección asociado con el adaptador a lo cual aplica una operación modificar, y un control de operación que especifica la operación a realizar para el adaptador, el control de operación especifica una operación de una pluralidad de operaciones que pueden seleccionarse; y un segundo campo para identificar una dirección de un bloque de información de función para utilizarse por la operación modificar; y un componente de ejecución para ejecutar la instrucción de máquina, la ejecución comprende: un determinador, para determinar un valor de control de operación; y un modificador que en respuesta al control de operación modifica una entrada de tabla que incluye parámetros asociados con el adaptador, en donde la modificación comprende actualizar selectivamente uno o más parámetros de la entrada de tabla con base en el control de operación y con base en una o más verificaciones que dependen del control de operación.
15. Un sistema de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central, el sistema de computadora se caracteriza porque comprende: una memoria; y un procesador en comunicación con la memoria, en donde el sistema de computadora se configura para realizar un método, el método comprende: obtener, por un procesador, una instrucción de máquina para ejecución, la instrucción de máquina se define para ejecución de computadora de acuerdo con una arquitectura, de computadora, la instrucción de máquina comprende: un campo de código operativo que identifica una instrucción modifica adaptador; un primer campo que identifica: una ubicación, los contenidos de lo cual incluyen un identificador de función, que identifica un adaptador, una designación de un espacio de dirección asociado con el adaptador al cual aplica una operación modificar, y un control de operación que especifica la operación a realizar por el adaptador, el control de operación especifica una operación de una pluralidad de operaciones que pueden seleccionarse; y un segundo campo para identificar una dirección de un bloque de información de función para utilizarse por la operación modificar; y ejecutar la instrucción de máquina, la ejecución comprende: determinar un valor del control de operación; y modificar, en respuesta al control de operación, una entrada de tabla que incluye parámetros asociados con el adaptador, en donde la modificación comprende actualización selectiva de uno o más parámetros de la entrada de tabla, con base en el control de operación y con base en uno o más verificaciones que dependen del control de operación.
16. El sistema de computadora de conformidad con la reivindicación 15, caracterizado porque la instrucción se emite por un sistema operativo, y en donde la modificación comprende utilizar información en el bloque de información de función para modificar el uno o más parámetros, el bloque de información de función se busca de memoria accesible al sistema operativo.
17. El sistema de computadora de conformidad con la reivindicación 16, caracterizado porque la entrada de tabla comprende una entrada de tabla de dispositivo situada en un concentrador acoplado con el adaptador y el procesador u otra entrada asociada con el adaptador.
18. El sistema de computadora de conformidad con la reivindicación 16, caracterizado porque el control de operación comprende registrar interrupciones de adaptador para el adaptador, y en donde la modificación comprende modificar uno o más parámetros específicos a interrupciones de adaptador, el uno o más parámetros comprende una dirección de un vector de interrupción de adaptador para el adaptador, un desplazamiento dentro del vector de interrupción de adaptador, una dirección de un vector de resumen de interrupción de adaptador, un desplazamiento dentro del vector de resumen de interrupción de adaptador, un control de notificación de resumen y un número de interrupciones soportadas por el adaptador.
19. El sistema de computadora de conformidad con la reivindicación 16, caracterizado porque el control de operación comprende registrar parámetros de traducción de dirección de entrada/salida, y en donde ,1a modificación comprende modificar uno o más parámetros específicos a una traducción de dirección, el uno o más parámetros incluyen una dirección base del espacio de dirección, un límite del espacio de dirección, un puntero de traducción que indica una tabla de traducción de dirección de nivel más alto a utilizar, un tamaño de una unidad de memoria y un formato de traducción de dirección.
20. El sistema de computadora de conformidad con la reivindicación 16, caracterizado porque el control de operación comprende ajustar parámetros de medición de función de adaptador, y en donde la modificación comprende modificar uno o más parámetros específicos a medición de adaptador, el uno o más parámetros comprende un recuento de muestra, uno o más recuentos de instrucciones, y uno o más recuentos de acceso de memoria directa.
21. El sistema de computadora de conformidad con la reivindicación 16, caracterizado porque la operación comprende un re-registro de parámetros de traducción de dirección, y en donde la modificación comprende modificar uno o más parámetros específicos para re-registrar traducción de dirección, incluyendo el uno o más parámetros, un límite de espacio de dirección y un puntero de traducción de dirección que indica una tabla de traducción de dirección de nivel más alto para utilizar, y en donde la modificación utiliza el uno o más controles para indicar un ordenamiento particular de actualizaciones referentes al re-registro de los parámetros de traducción de dirección.
22. Un producto de programa de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central, el producto de programa de computadora comprende: un medio de almacenamiento legible por computadora, legible por un circuito de ] procesamiento y almacenar instrucciones para ejecutar por el circuito de procesamiento para realizar un método de acuerdo con las reivindicaciones 1 a 12.
MX2012014857A 2010-06-23 2010-11-08 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. MX2012014857A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/821,181 US8615645B2 (en) 2010-06-23 2010-06-23 Controlling the selectively setting of operational parameters for an adapter
PCT/EP2010/067036 WO2011160717A1 (en) 2010-06-23 2010-11-08 Method for executing an instruction for selectively modifying adapter function parameters; computer system and computer program product for the same

Publications (1)

Publication Number Publication Date
MX2012014857A true MX2012014857A (es) 2013-02-01

Family

ID=43502943

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012014857A MX2012014857A (es) 2010-06-23 2010-11-08 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.

Country Status (7)

Country Link
US (3) US8615645B2 (es)
EP (1) EP2433212B1 (es)
JP (1) JP5736044B2 (es)
CN (1) CN102906692B (es)
MX (1) MX2012014857A (es)
SI (1) SI2433212T1 (es)
WO (1) WO2011160717A1 (es)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615645B2 (en) * 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
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
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
CN105264506B (zh) * 2013-01-29 2018-01-26 慧与发展有限责任合伙企业 向内存映射配置分配处理器
US9465768B2 (en) 2014-03-14 2016-10-11 International Business Machines Corporation PCI function measurement block enhancements
US9384158B2 (en) 2014-03-14 2016-07-05 International Business Machines Corporation Dynamic universal port mode assignment
CN103986602B (zh) * 2014-05-16 2017-12-12 华为技术有限公司 一种启动操作系统的方法、相关设备和系统
US10089129B2 (en) * 2014-06-30 2018-10-02 International Business Machines Corporation Supporting flexible deployment and migration of virtual servers via unique function identifiers
US10013385B2 (en) * 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
JP6418021B2 (ja) * 2015-03-18 2018-11-07 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US10063376B2 (en) 2015-10-01 2018-08-28 International Business Machines Corporation Access control and security for synchronous input/output links
US10120822B2 (en) * 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output measurement data
US10120818B2 (en) 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command
US10126962B2 (en) * 2016-04-22 2018-11-13 Microsoft Technology Licensing, Llc Adapted block translation table (BTT)
US10095620B2 (en) * 2016-06-29 2018-10-09 International Business Machines Corporation Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions
US10514932B2 (en) * 2016-09-26 2019-12-24 Amazon Technologies, Inc. Resource configuration based on dynamic group membership
US11269640B2 (en) * 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US11221606B2 (en) * 2017-09-26 2022-01-11 Honeywell International Inc. System and method for depicting and using one logical connection with collection of input/output (I/O) modules as multiple individual logical connections
US10572259B2 (en) * 2018-01-22 2020-02-25 Arm Limited Hints in a data processing apparatus
US11194606B2 (en) * 2018-11-28 2021-12-07 Red Hat, Inc. Managing related devices for virtual machines utilizing shared device data
CN111382429B (zh) * 2018-12-27 2022-12-27 华为技术有限公司 指令的执行方法、装置及存储介质
CN114840146A (zh) * 2022-05-20 2022-08-02 广东天太机器人有限公司 一种能在运行时的参数修改方法及系统、设备和存储介质
CN114968877B (zh) * 2022-08-01 2022-11-25 摩尔线程智能科技(北京)有限责任公司 硬件的管理方法、适配器、主机及存储介质

Family Cites Families (268)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976979A (en) 1974-01-02 1976-08-24 Honeywell Information Systems, Inc. Coupler for providing data transfer between host and remote data processing units
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
JPS57191826A (en) 1981-05-19 1982-11-25 Matsushita Electric Ind Co Ltd Magnetic head demagnetizer
EP0090804A1 (en) 1981-10-13 1983-10-12 International Business Machines Corporation Method and apparatus for measurements of channel operation
JPS6273347A (ja) 1985-09-27 1987-04-04 Hitachi Ltd アドレス変換装置
US5053952A (en) * 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
JPH0250744A (ja) 1988-08-12 1990-02-20 Nec Corp アドレス変換方式
JPH0282343A (ja) 1988-09-20 1990-03-22 Hitachi Ltd マルチプロセッサシステムの割込処理方式
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
US5418956A (en) 1992-02-26 1995-05-23 Microsoft Corporation Method and system for avoiding selector loads
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 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
WO1994027215A1 (en) 1993-05-07 1994-11-24 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
KR100306636B1 (ko) 1994-06-28 2001-11-30 피터 엔. 데트킨 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
WO1996023260A1 (de) 1995-01-27 1996-08-01 Gmd - Forschungszentrum Informationstechnik Gmbh Verfahren zum betreiben einer adressumsetzvorrichtung
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 コンピュータ装置
EP0747872B1 (en) 1995-06-07 1999-03-03 International Business Machines Corporation Video processor with addressing mode control
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
US6507898B1 (en) 1997-04-30 2003-01-14 Canon Kabushiki Kaisha Reconfigurable data cache controller
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
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited 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
JP2000293476A (ja) 1999-04-09 2000-10-20 Nec Corp Pciデバイスへのリソース割当方式及びその方法
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
US6658599B1 (en) 2000-06-22 2003-12-02 International Business Machines Corporation Method for recovering from a machine check interrupt during runtime
US6751752B1 (en) 2000-09-01 2004-06-15 Intel Corporation Checking events generated by a device
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
US6938138B2 (en) 2001-01-11 2005-08-30 International Business Machines Corporation Method and apparatus for managing access to memory
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
US6880021B2 (en) 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
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
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US7299266B2 (en) 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
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
KR100449807B1 (ko) 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US7065598B2 (en) 2002-12-20 2006-06-20 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
JP4256693B2 (ja) 2003-02-18 2009-04-22 株式会社日立製作所 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
JP2004248985A (ja) 2003-02-21 2004-09-09 Air Water Inc 注射器およびそれに用いるパッキン
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
US7010633B2 (en) 2003-04-10 2006-03-07 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
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
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
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
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
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US7174550B2 (en) * 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
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
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
US8417852B2 (en) 2003-06-05 2013-04-09 Nvidia Corporation Uploading TCP frame data to user buffers and buffers in system memory
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
JP2005122640A (ja) 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7146482B2 (en) 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
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
JP2005309553A (ja) 2004-04-19 2005-11-04 Hitachi Ltd 計算機
US7506214B2 (en) 2004-04-22 2009-03-17 International Business Machines Corporation Application for diagnosing and reporting status of an adapter
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
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US20050289271A1 (en) 2004-06-29 2005-12-29 Martinez Alberto J Circuitry to selectively produce MSI signals
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US7418572B2 (en) 2004-08-18 2008-08-26 International Business Machines Corporation Pretranslating input/output buffers in environments with multiple page sizes
JP4788124B2 (ja) 2004-09-16 2011-10-05 株式会社日立製作所 データ処理システム
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
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
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
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
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
US7464191B2 (en) 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
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
US7502872B2 (en) 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
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
US7657662B2 (en) 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
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
US7474623B2 (en) 2005-10-27 2009-01-06 International Business Machines Corporation Method of routing I/O adapter error messages in a multi-host environment
US7882489B2 (en) * 2005-11-22 2011-02-01 International Business Machines Corporation Integrated code generation for adapter-specific property template
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
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
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)
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US20070174723A1 (en) 2006-01-18 2007-07-26 Omar Cardona Sub-second, zero-packet loss adapter failover
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)
US7571307B2 (en) 2006-07-26 2009-08-04 International Business Machines Corporation Capacity upgrade on-demand for I/O adapters
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
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
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
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
US7984454B2 (en) 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual 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 日本電気株式会社 情報処理装置および設定方法
US20080263391A1 (en) 2007-04-20 2008-10-23 International Business Machines Corporation Apparatus, System, and Method For Adapter Card Failover
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
JP5018252B2 (ja) 2007-06-06 2012-09-05 株式会社日立製作所 デバイス割り当て変更方法
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
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
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
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
US7689734B2 (en) 2007-12-18 2010-03-30 International Business Machines Corporation Method for toggling non-adjacent channel identifiers during DMA double buffering operations
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
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
JP2009249108A (ja) 2008-04-04 2009-10-29 Mitsubishi Electric Building Techno Service Co Ltd エレベーター押ボタン一体型位置表示器
JP2009259108A (ja) * 2008-04-18 2009-11-05 Toshiba Corp 情報処理装置および情報処理装置の制御方法
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
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
CN101634975B (zh) 2009-08-20 2011-09-14 广东威创视讯科技股份有限公司 一种实现dma数据传输的方法及装置
JP5266590B2 (ja) * 2009-09-18 2013-08-21 株式会社日立製作所 計算機システムの管理方法、計算機システム及びプログラム
US10341804B2 (en) 2009-10-28 2019-07-02 International Business Machines Corporation System, method and computer program product for accessing data from a source by a variety of methods to improve performance and ensure data integrity
US8713350B2 (en) 2009-12-08 2014-04-29 Hewlett-Packard Development Company, L.P. Handling errors in a data processing system
US8839032B2 (en) 2009-12-08 2014-09-16 Hewlett-Packard Development Company, L.P. Managing errors in a data processing system
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
US8650335B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
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
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8566480B2 (en) * 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8478922B2 (en) * 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
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
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8626970B2 (en) * 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
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
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an 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
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
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
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
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
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
US10521231B2 (en) 2010-06-24 2019-12-31 International Business Machines Corporation Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor
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
US9134911B2 (en) 2015-09-15
CN102906692A (zh) 2013-01-30
US8615645B2 (en) 2013-12-24
EP2433212A1 (en) 2012-03-28
WO2011160717A1 (en) 2011-12-29
EP2433212B1 (en) 2014-08-27
US20110320772A1 (en) 2011-12-29
SI2433212T1 (sl) 2014-11-28
US20120216022A1 (en) 2012-08-23
US9383931B2 (en) 2016-07-05
CN102906692B (zh) 2015-02-11
US20140101400A1 (en) 2014-04-10
JP5736044B2 (ja) 2015-06-17
JP2013534667A (ja) 2013-09-05

Similar Documents

Publication Publication Date Title
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.
EP2430536B1 (en) Controlling access by a configuration to an adapter function
EP2430552B1 (en) Multiple address spaces per adapter
EP2430555B1 (en) Translation of input/output addresses to memory addresses
JP5731642B2 (ja) アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム
EP2430557B1 (en) Resizing address spaces concurrent to accessing the address spaces
EP2585925B1 (en) Runtime determination of translation formats for adapter functions
MX2012014861A (es) Convertir una interrupcion con señal de mensaje en una notificacion de evento de adaptador de e/s.
EP2430556B1 (en) Enable/disable adapters of a computing environment
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