ES2893925T3 - Instrucción de carga lógica y desplazamiento protegido - Google Patents

Instrucción de carga lógica y desplazamiento protegido Download PDF

Info

Publication number
ES2893925T3
ES2893925T3 ES18700180T ES18700180T ES2893925T3 ES 2893925 T3 ES2893925 T3 ES 2893925T3 ES 18700180 T ES18700180 T ES 18700180T ES 18700180 T ES18700180 T ES 18700180T ES 2893925 T3 ES2893925 T3 ES 2893925T3
Authority
ES
Spain
Prior art keywords
protected
instruction
storage
event
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18700180T
Other languages
English (en)
Inventor
Dan Greiner
Timothy Slegel
Christian Jacobi
Anthony Saporito
Volodymyr Paprotski
Marcel Mitran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2893925T3 publication Critical patent/ES2893925T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

Un producto de programa informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho producto de programa informático: un medio de almacenamiento legible por ordenador que almacena instrucciones y legible por un circuito de procesamiento para: obtener una instrucción de Carga Lógica y Desplazamiento Protegido 'LLSG' para realizar una operación de carga y desplazamiento; y ejecutar la instrucción LLSG, comprendiendo la ejecución: cargar datos desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción; desplazar los datos en una cantidad de desplazamiento para obtener un valor desplazado; obtener un resultado intermedio usando el valor desplazado; y reconocer la aparición de un evento de almacenamiento protegido que comprende: usar el resultado intermedio para determinar si la instrucción designa una sección protegida de almacenamiento definida por un límite que indica un intervalo de direcciones que están protegidas, en el que en base a determinar que la instrucción designa la sección protegida de almacenamiento, el resultado intermedio no se carga en un registro especificado usando la instrucción LLSG; en cambio, se inserta en un registro de evento de almacenamiento protegido junto con los datos y la dirección de la instrucción LLSG que causa el evento de almacenamiento protegido.

Description

DESCRIPCIÓN
Instrucción de carga lógica y desplazamiento protegido
ANTECEDENTES
La presente invención se refiere, en general, al procesamiento dentro de un entorno informático y, en particular, a realizar una operación de carga y desplazamiento.
Muchos lenguajes de programación modernos, tales como Java y Python, como ejemplos, permiten que un programa de aplicación cree una instancia de un objeto de datos simplemente haciendo referencia al mismo, sin la obligación de rastrear o posteriormente liberar la memoria cuando ya no se necesite.
Los objetos de datos activos (es decir, los que utiliza la aplicación) y los objetos de datos inactivos (es decir, los que la aplicación ya no necesita) pueden mezclarse en el cúmulo (heap) de memoria del lenguaje, lo que da como resultado un espacio de memoria fragmentado. Un proceso, comúnmente conocido como recuperación de almacenamiento o recolección de basura, no solo elimina los objetos inactivos del cúmulo de memoria, sino que también reubica los objetos de memoria activos al fusionarlos en bloques de memoria más compactos. Esto permite que la memoria libre se combine en bloques contiguos más grandes que están disponibles para su uso posterior por parte de las aplicaciones.
El desafío de reubicar los objetos de datos activos radica simplemente en eso: están activos y pueden ser referenciados simultáneamente por otras unidades de procesamiento central además de la que realiza la recuperación de almacenamiento. Por lo tanto, para realizar la recuperación de almacenamiento se suspende la ejecución de todos los procesos de aplicación que puedan estar haciendo referencia a memoria mientras la recuperación de almacenamiento está en curso. Dependiendo del número de reubicaciones de memoria necesarias, esto podría causar retrasos inaceptables en las aplicaciones.
El documento US 3.360.780 describe un procesador de datos de programa almacenado del tipo que usa instrucciones de orden combinadas para realizar dos operaciones en un solo ciclo de máquina. Por ejemplo, una de estas operaciones puede ser una operación de desplazamiento y la otra puede ser una operación de lectura. Se proporciona un detector que responde a que la magnitud del desplazamiento sea mayor que el número de bits en el registro de desplazamiento. Cuando el detector funciona, se inhibe la operación de desplazamiento y se hace que la operación de lectura almacene la palabra leída en dos de los registros de máquina en lugar de en uno. En consecuencia, ya no es necesario emplear dos instrucciones de lectura individuales para insertar una palabra en dos registros.
SUMARIO
Se abordan las deficiencias de la técnica anterior y se proporcionan ventajas adicionales mediante la provisión de un producto de programa informático para facilitar el procesamiento dentro de un entorno informático. El producto de programa informático comprende: un medio de almacenamiento legible por ordenador que almacena instrucciones y legible por un circuito de procesamiento para: obtener una instrucción Carga Lógica y Desplazamiento Protegido (Load Logical and Shift Guarded) 'LLSG' para realizar una operación de carga y desplazamiento; y ejecutar la instrucción LLSG, comprendiendo la ejecución: cargar datos desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción; desplazar los datos en una cantidad de desplazamiento para obtener un valor desplazado; obtener un resultado intermedio usando el valor desplazado; y reconocer la aparición de un evento de almacenamiento protegido que comprende: usar el resultado intermedio para determinar si la instrucción designa una sección protegida de almacenamiento definida por un límite que indica un intervalo de direcciones que están protegidas, en el que, en base a la determinación de que la instrucción designa la sección protegida de almacenamiento, el resultado intermedio no se carga en un registro especificado usando la instrucción LLSG si no que, en cambio, se inserta en un registro de evento de almacenamiento protegido junto con los datos y la dirección de la instrucción LLSG que causa el evento de almacenamiento protegido.
Al utilizar los datos de carga y la operación de desplazamiento para detectar un evento de almacenamiento protegido, se facilita el procesamiento dentro del entorno informático, incluido el procesamiento asociado a determinadas tareas, mejorando así el procesamiento.
Como ejemplos, los datos incluyen un puntero, y el desplazamiento incluye desplazar a la izquierda los datos en la cantidad de desplazamiento para obtener el valor desplazado. Además, en un modo de realización, el procedimiento incluye además obtener la cantidad de desplazamiento de un registro usado para especificar uno o más atributos de un área de almacenamiento protegido.
En un modo de realización, el reconocimiento de la aparición de un evento de almacenamiento protegido incluye comparar una primera parte del resultado intermedio con el origen de un área de almacenamiento protegido; determinar si una sección particular del área de almacenamiento protegido está protegida, donde la determinación usa una segunda parte del resultado intermedio; y detectar un evento de almacenamiento protegido en base a que la comparación indica un resultado específico y la determinación indica que la sección particular está protegida.
Además, en un modo de realización, la obtención del resultado intermedio incluye ajustar el valor desplazado en base a un modo de direccionamiento de un procesador que ejecuta la instrucción.
Además, en un modo de realización, el procedimiento incluye determinar la ubicación en memoria desde donde se cargan los datos. La determinación usa, por ejemplo, un campo de índice, un campo base y un campo de desplazamiento de la instrucción.
En un ejemplo particular, la instrucción es una instrucción de arquitectura única que incluye un código de operación que indica una operación de carga lógica y desplazamiento protegido, un campo de registro para especificar un registro para insertar un resultado basado en la determinación de que no se detectó un evento de almacenamiento protegido, y una pluralidad de campos para determinar la ubicación en memoria.
También se describen y reivindican en el presente documento procedimientos y sistemas relacionados con uno o más aspectos. Además, también se describen servicios relacionados con uno o más aspectos y pueden reivindicarse en el presente documento.
Características y ventajas adicionales se obtienen mediante las técnicas descritas en el presente documento. Otros modos de realización y aspectos se describen en detalle en el presente documento y se consideran parte de los aspectos reivindicados.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Uno o más aspectos se señalan particularmente y se reivindican claramente como ejemplos en las reivindicaciones al final de la memoria descriptiva. Lo anterior y objetivos, características y ventajas de uno o más aspectos resultan evidentes a partir de la siguiente descripción detallada, tomada junto con los dibujos adjuntos, en los que:
La figura 1A representa un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La figura 1B representa más detalles del procesador de la figura 1A, de acuerdo con un aspecto de la presente invención;
La figura 2A representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La figura 2B representa más detalles de la memoria de la figura 2A;
La figura 3 representa un ejemplo de un registro de designación de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 4 representa un ejemplo de una relación entre características de almacenamiento protegido, un origen de almacenamiento protegido y un tamaño de sección de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 5 representa un ejemplo de un registro de máscara de sección de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 6A representa un ejemplo de un registro de direcciones de lista de parámetros de evento de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 6B representa un ejemplo de una lista de parámetros de evento de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 7 representa un ejemplo de un bloque de control de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 8 representa un modo de realización de una instrucción Carga Protegida (Load Guarded), de acuerdo con un aspecto de la presente invención;
La figura 9 representa un ejemplo de una instrucción Carga Lógica y Desplazamiento Protegido (Load Logical And Shift Guarded), de acuerdo con un aspecto de la presente invención;
La figura 10 representa un ejemplo de una instrucción Cargar Controles de Almacenamiento Protegido (Load Guarded Storage Controls), de acuerdo con un aspecto de la presente invención;
La figura 11 representa un ejemplo de una instrucción Almacenar Controles de Almacenamiento Protegido (Store Guarded Storage Controls), de acuerdo con un aspecto de la presente invención;
La figura 12 representa un ejemplo de detección de un evento de almacenamiento protegido, de acuerdo con un aspecto de la presente invención;
La figura 13A representa un ejemplo de un formato de un área de guardado ampliada de comprobación de máquina, de acuerdo con un aspecto de la presente invención;
La figura 13B representa un ejemplo de un registro de designación de área de guardado extendida de comprobación de máquina, de acuerdo con un aspecto de la presente invención;
La figura 13C representa un ejemplo de un registro de parámetros de procesador de señales, de acuerdo con un aspecto de la presente invención; y
Las figuras 14A-14B representan un modo de realización de aspectos relacionados con la facilitación del procesamiento en un entorno informático, de acuerdo con un aspecto de la presente invención.
DESCRIPCIÓN DETALLADA
De acuerdo con uno o más aspectos de la presente invención, se proporciona una capacidad que facilita la realización de determinadas tareas dentro de un entorno informático que incluyen, pero no se limitan a, la recuperación de almacenamiento. Esta capacidad, denominada función de almacenamiento protegido, establece un límite que indica un intervalo de direcciones que están protegidas o custodiadas, tal como un intervalo de direcciones para las que se va a realizar la recuperación de almacenamiento. Cuando un programa intenta acceder a una dirección en una sección protegida definida por el límite, se produce un evento de almacenamiento protegido, protegiendo así las direcciones dentro del límite. El uso de esta función facilita el procesamiento dentro de un entorno informático y mejora el rendimiento. Por ejemplo, el uso de esta función permite que las aplicaciones que se ejecutan en una o más unidades de procesamiento central (CPU) en un entorno informático continúen ejecutándose mientras la recuperación de almacenamiento está en curso en otra CPU en el entorno informático. Las aplicaciones pueden seguir accediendo a direcciones que no están protegidas por el límite.
Uno o más aspectos de la presente invención proporcionan uno o más de lo siguiente, a modo de ejemplo: permitir que las aplicaciones establezcan e inspeccionen controles que afecten al funcionamiento de la función de almacenamiento protegido; proporcionar la capacidad de identificar atributos de procesador cuando se detecta un evento de almacenamiento protegido; cargar datos (por ejemplo, un puntero comprimido) que se desplazan en una cantidad variable y se usan en la detección de almacenamiento protegido; proporcionar una gestión de eventos de almacenamiento protegido durante la ejecución transaccional, incluida la gestión de una cancelación de una transacción cancelada debido a un evento de almacenamiento protegido y los efectos del mismo.
Un modo de realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se describe con referencia a la figura 1A. En un ejemplo, el entorno informático se basa en z/Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Un modo de realización de z/Architecture se describe en "z/Architecture Principies of Operation", publicación de IBM n.° SA22-7832-10, marzo de 2015, que se incorpora en su totalidad en el presente documento como referencia. Z/ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
En otro ejemplo, el entorno informático se basa en Power Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Un modo de realización de Power Architecture se describe en "Power ISA™ Version 2.07B", International Business Machines Corporation, 9 de abril de 2015, que se incorpora en su totalidad en el presente documento como referencia. POWER ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
El entorno informático también puede basarse en otras arquitecturas, incluidas, entre otras, las arquitecturas Intel x86. También existen otros ejemplos.
Como se muestra en la figura 1A, un entorno informático 100 incluye, por ejemplo, un sistema informático 102 mostrado, por ejemplo, en forma de un dispositivo informático de propósito general. El sistema informático 102 puede incluir, pero no se limita a, uno o más procesadores o unidades de procesamiento 104 (por ejemplo, unidades de procesamiento central (CPU)), una memoria 106 (denominada memoria principal o almacenamiento, como ejemplos) y una o más más interfaces de entrada/salida (E/S) 108, acopladas entre sí por medio de uno o más buses y/u otras conexiones 110.
El bus 110 representa uno o más de cualquiera de varios tipos de estructuras de bus, incluidos un bus de memoria o controlador de memoria, un bus de periféricos, un puerto de gráficos acelerado y un bus local o de procesador usando cualquiera de una variedad de arquitecturas de bus. A modo de ejemplo, y sin limitación, dichas arquitecturas incluyen el bus de Arquitectura Estándar de la Industria (ISA), el bus de Arquitectura de Microcanal (MCA), el bus ISA mejorado (EISA), el bus local de la Asociación de Normas Electrónicas de Vídeo (VESA) y el bus de Interconexión de Componentes Periféricos (PCI).
La memoria 106 puede incluir, por ejemplo, una memoria caché 120, tal como una memoria caché compartida, que puede estar acoplada a las memorias caché locales 122 de los procesadores 104. Además, la memoria 106 puede incluir uno o más programas o aplicaciones 130, un sistema operativo 132 y una o más instrucciones de programas legibles por ordenador 134. Las instrucciones de programa legibles por ordenador 134 pueden configurarse para llevar a cabo funciones de modos de realización de aspectos de la invención.
El sistema informático 102 también puede comunicarse por medio de, por ejemplo, interfaces de E/S 108 con uno o más dispositivos externos 140, una o más interfaces de red 142 y/o uno o más dispositivos de almacenamiento de datos 144. Dispositivos externos de ejemplo incluyen un terminal de usuario, una unidad de cinta, un dispositivo señalador, un dispositivo de visualización, etc. La interfaz de red 142 permite que el sistema informático 102 se comunique con una o más redes, tal como una red de área local (LAN), una red de área amplia (WAN) general y/o una red pública (por ejemplo, Internet), que proporciona comunicación con otros dispositivos o sistemas informáticos.
El dispositivo de almacenamiento de datos 144 puede almacenar uno o más programas 146, una o más instrucciones de programa legibles por ordenador 148 y/o datos, etc. Las instrucciones de programa legibles por ordenador pueden configurarse para llevar a cabo funciones de modos de realización de aspectos de la invención.
El sistema informático 102 puede incluir y/o estar acoplado a medios de almacenamiento de sistema informático extraíbles/no extraíbles, volátiles/no volátiles. Por ejemplo, puede incluir y/o estar acoplado a un medio magnético no volátil y no extraíble (denominado típicamente "disco duro"), una unidad de disco magnético para leer y escribir en un disco magnético no volátil y extraíble (por ejemplo, un "disquete") y/o una unidad de disco óptico para leer de o escribir en un disco óptico no volátil extraíble, tal como un CD-ROM, DVD-ROM u otro medio óptico. Debe entenderse que se podrían usar otros componentes de hardware y/o software junto con el sistema informático 102. Ejemplos incluyen, pero no se limitan a: microcódigo, controladores de dispositivos, unidades de procesamiento redundantes, matrices de unidades de disco externas, sistemas RAID, unidades de cinta, sistemas de almacenamiento de archivos de datos, etc.
El sistema informático 102 puede ser operativo con otros numerosos entornos o configuraciones de sistemas informáticos de propósito general o propósito especial. Ejemplos de sistemas, entornos y/o configuraciones informáticos bien conocidos que pueden ser adecuados para su uso con el sistema informático 102 incluyen, pero no se limitan a, sistemas de ordenadores personales (PC), sistemas informáticos de servidor, clientes ligeros, clientes pesados, dispositivos de mano o portátiles, sistemas multiprocesador, sistemas basados en microprocesador, decodificadores, productos electrónicos de consumo programables, PC de red, sistemas de miniordenador, sistemas informáticos de gran tamaño y entornos informáticos en la nube distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares.
Se describen más detalles con respecto a un ejemplo de procesador 104 con referencia a la figura 1B. El procesador 104 incluye una pluralidad de componentes funcionales usados para ejecutar instrucciones. Estos componentes funcionales incluyen, por ejemplo, un componente de extracción de instrucciones 150 para extraer instrucciones a ejecutar; una unidad de decodificación de instrucciones 152 para decodificar las instrucciones extraídas y obtener operandos de las instrucciones decodificadas; componentes de ejecución de instrucciones 154 para ejecutar las instrucciones decodificadas; un componente de acceso a memoria 156 para acceder a memoria para la ejecución de instrucciones, si es necesario; y un componente de reescritura 160 para proporcionar los resultados de las instrucciones ejecutadas. Uno o más de estos componentes pueden, de acuerdo con un aspecto de la presente invención, usarse para ejecutar una o más instrucciones 166 de la función de almacenamiento protegido, descrita más adelante.
El procesador 104 también incluye, en un modo de realización, uno o más registros 170 para ser utilizados por uno o más de los componentes funcionales.
Otro modo de realización de un entorno informático para incorporar y usar uno o más aspectos se describe con referencia a la figura 2A. En este ejemplo, un entorno informático 200 incluye, por ejemplo, una unidad de procesamiento central (CPU) nativa 202, una memoria 204 y uno o más dispositivos y/o interfaces de entrada/salida 206 acoplados entre sí por medio de, por ejemplo, uno o más buses 208 y/u otras conexiones. Como ejemplos, el entorno informático 200 puede incluir un procesador PowerPC o un servidor pSeries ofrecido por International Business Machines Corporation, Armonk, Nueva York, y/u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Intel u otras empresas.
La unidad de procesamiento central nativa 202 incluye uno o más registros nativos 210, tales como uno o más registros de propósito general y/o uno o más registros de propósito especial usados durante el procesamiento dentro del entorno. Estos registros incluyen información que representa el estado del entorno en un momento determinado.
Además, la unidad de procesamiento central nativa 202 ejecuta instrucciones y código que almacenados en la memoria 204. En un ejemplo particular, la unidad de procesamiento central ejecuta código emulador 212 almacenado en la memoria 204. Este código permite que el entorno informático configurado en una arquitectura emule otra arquitectura. Por ejemplo, el código emulador 212 permite que las máquinas basadas en arquitecturas distintas a la z/Architecture, tales como los procesadores PowerPC, los servidores pSeries u otros servidores o procesadores, emulen la z/Architecture y ejecuten software e instrucciones desarrolladas en base a la z/Architecture.
Se describen más detalles relacionados con el código emulador 212 con referencia a la figura 2B. Instrucciones de invitado 250 almacenadas en la memoria 204 comprenden instrucciones de software (por ejemplo, correlacionadas con instrucciones máquina) que fueron desarrolladas para ser ejecutadas en una arquitectura distinta a la de la CPU nativa 202. Por ejemplo, las instrucciones de invitado 250 pueden haber sido diseñadas para ejecutarse en un procesador z/Architecture, pero, en cambio, se emulan en la CPU nativa 202, que puede ser, por ejemplo, un procesador Intel. En un ejemplo, el código emulador 212 incluye una rutina de extracción de instrucciones 252 para obtener una o más instrucciones de invitado 250 de la memoria 204, y para proporcionar opcionalmente almacenamiento en búfer local para las instrucciones obtenidas. También incluye una rutina de conversión de instrucciones 254 para determinar el tipo de instrucción de invitado que se ha obtenido y convertir la instrucción de invitado en una o más instrucciones nativas 256 correspondientes. Esta conversión incluye, por ejemplo, identificar la función que debe realizar la instrucción de invitado y elegir la instrucción o instrucciones nativas para realizar esa función.
Además, el código emulador 212 incluye una rutina de control de emulación 260 para hacer que se ejecuten las instrucciones nativas. La rutina de control de emulación 260 puede hacer que la CPU nativa 202 ejecute una rutina de instrucciones nativas que emulan una o más instrucciones de invitado obtenidas previamente y, al concluir dicha ejecución, devuelva el control a la rutina de extracción de instrucciones para emular la obtención de la siguiente instrucción de invitado o de un grupo de instrucciones de invitado. La ejecución de instrucciones nativas 256 puede incluir cargar datos en un registro desde la memoria 204, almacenar datos en memoria desde un registro, o realizar algún tipo de operación aritmética o lógica, según lo determine la rutina de conversión.
Cada rutina se implementa, por ejemplo, en software, que se almacena en memoria y se ejecuta mediante la unidad de procesamiento central nativa 202. En otros ejemplos, una o más de las rutinas u operaciones se implementan en firmware, hardware, software o alguna combinación de los mismos. Los registros del procesador emulado se pueden emular usando los registros 210 de la CPU nativa o usando ubicaciones en la memoria 204. En los modos de realización, las instrucciones de invitado 250, las instrucciones nativas 256 y el código emulador 212 pueden residir en la misma memoria o pueden distribuirse entre diferentes dispositivos de memoria.
Como se usa en el presente documento, el firmware incluye, por ejemplo, el microcódigo o milicódigo (millicode) del procesador. Incluye, por ejemplo, las instrucciones a nivel de hardware y/o las estructuras de datos utilizadas en la implementación del código máquina de nivel superior. En un modo de realización, incluye, por ejemplo, código propietario que se ofrece típicamente como microcódigo que incluye software fiable o microcódigo específico del hardware subyacente y controla el acceso del sistema operativo al hardware del sistema.
Una instrucción de invitado 250 que se obtiene, convierte y ejecuta es, por ejemplo, una instrucción de la función de almacenamiento protegido, algunas de las cuales se describen en el presente documento. La instrucción, que es de una arquitectura (por ejemplo, la z/Architecture), se extrae de la memoria, se convierte y se representa como una secuencia de instrucciones nativas 256 de otra arquitectura (por ejemplo, PowerPC, pSeries, Intel, etc.). A continuación, se ejecutan estas instrucciones nativas.
Más adelante se describen detalles relacionados con un modo de realización de una función de almacenamiento protegida, incluidas las instrucciones asociadas a la misma. La función de almacenamiento protegido proporciona un mecanismo mediante el cual un programa puede designar un área de almacenamiento lógico que comprende una pluralidad de secciones de almacenamiento protegido (por ejemplo, de 0 a 64), y puede usarse, por ejemplo, por varios lenguajes de programación que implementan técnicas de recuperación de almacenamiento. La función incluye, por ejemplo, una pluralidad de instrucciones, tales como, por ejemplo: una instrucción Carga Protegida (LGG), una instrucción Carga Lógica y Desplazamiento Protegido (LLGFSG), una instrucción Cargar Controles de Almacenamiento Protegido (LGSC) y una instrucción Almacenar Controles de Almacenamiento Protegido (STGSC), cada una de las cuales se describe con más detalle a continuación.
Cuando un operando seleccionado, tal como un segundo operando, de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido no designa una sección protegida del área de almacenamiento protegido, la instrucción realiza su operación de carga definida. Sin embargo, cuando el segundo operando de la instrucción designa una sección protegida del área de almacenamiento protegido, el control se ramifica a un controlador de eventos de almacenamiento protegido con indicaciones de la causa del evento. Mientras que las instrucciones Carga Protegida y Carga Lógica y Desplazamiento Protegido son capaces de generar un evento de almacenamiento protegido, otras instrucciones que acceden a un intervalo de almacenamiento protegido no se ven afectadas por la función y no generan tal evento. Los detalles relacionados con las instrucciones de la función de almacenamiento protegido se describen más adelante, después de una descripción de varios registros usados por la función.
En un modo de realización, la función de almacenamiento protegido está controlada por un bit en un registro de control, por ejemplo, el registro de control 2, y por los tres registros siguientes: un registro de designación de almacenamiento protegido (GSD), un registro de máscara de sección de almacenamiento protegido (GSSM) y un registro de direcciones de lista de parámetros de eventos de almacenamiento protegido (GSEPLA). El contenido de estos tres registros puede ser cargado e inspeccionado por las instrucciones Cargar Controles de Almacenamiento Protegido y Almacenar Controles de Almacenamiento Protegido, respectivamente. A continuación, se describen más detalles de cada uno de estos registros, así como del registro de control 2. En la descripción, se describen valores particulares para bits o bytes específicos. Estos valores y/o los bits y/o bytes específicos son solo ejemplos. Pueden usarse otros valores, bits y/o bytes.
En un ejemplo, cuando se instala la función de almacenamiento protegido, un bit seleccionado, por ejemplo, el bit 59, del registro de control 2 es el control de habilitación de almacenamiento protegido (GSE). Cuando el bit 59 es cero, el intento de ejecución de las instrucciones Cargar Controles de Almacenamiento Protegido (LGSC) y Almacenar Controles de Almacenamiento Protegido (STGSC) da como resultado el reconocimiento de una condición de excepción, por ejemplo, una excepción de operación especial. Sin embargo, cuando el control de habilitación de almacenamiento protegido es uno, se dice que la función de almacenamiento protegido está habilitada y se permite el intento de ejecución de las instrucciones LGSC y STGSC, sujeto a otras restricciones que se describen a continuación.
En un modo de realización, la ejecución de las instrucciones Carga Protegida y Carga Lógica y Desplazamiento Protegido no está sujeta al control de habilitación de almacenamiento protegido. Sin embargo, un evento de almacenamiento protegido solo puede reconocerse, en un ejemplo, cuando el control de habilitación de almacenamiento protegido es uno. Es decir, en un ejemplo, cuando una indicación de función seleccionada (por ejemplo, indicación de función 133) es, por ejemplo, uno (que indica que la función de almacenamiento protegido está instalada en la configuración), el programa puede utilizar las instrucciones Carga Protegida y Carga Lógica y Desplazamiento Protegido, independientemente del control de habilitación de almacenamiento protegido. Sin embargo, los eventos de almacenamiento protegido no se reconocen sin antes cargar los controles de almacenamiento protegido. Por lo tanto, el programa de control (por ejemplo, sistema operativo) debe establecer en uno el control de habilitación de almacenamiento protegido para ejecutar con éxito la instrucción Cargar Controles de Almacenamiento Protegido, que carga los controles de almacenamiento protegido. Un programa debe examinar la indicación proporcionada por el sistema operativo (GSE) de la habilitación de la función de almacenamiento protegido (en lugar del bit de función 133) para determinar si están disponibles todas las capacidades de la función.
Como se indicó anteriormente, además del control de habilitación de función de almacenamiento protegido, por ejemplo, el bit 59 del registro de control 2, la función de almacenamiento protegido usa una pluralidad de registros, incluido un registro de designación de almacenamiento protegido (GSD), que es, por ejemplo, un registro de 64 bits que define los atributos del área de almacenamiento protegido.
Un modo de realización de un registro de designación de almacenamiento protegido (GSD) se describe con referencia a la figura 3. Un registro de designación de almacenamiento protegido 300 incluye los siguientes campos, en un ejemplo:
• Origen de Almacenamiento Protegido (GSO) 302: Este campo designa una dirección de un bloque de almacenamiento que puede tener aplicada la protección de almacenamiento protegido. La ubicación del área de almacenamiento protegido se especifica mediante los bits más a la izquierda del registro GSD. En un modo de realización, el número de bits más a la izquierda está determinado por el valor de la característica de almacenamiento protegido (GSC) en los bits 58-63 del registro. Las posiciones de bit 0 a (63 - GSC) del registro de designación de almacenamiento protegido, rellenas a la derecha con ceros binarios en las posiciones de bit (64 - GSC) a 63, forman la dirección lógica de 64 bits del byte más a la izquierda del área de almacenamiento protegido. Otros modos de realización pueden usar un mecanismo diferente para designar el origen del área de almacenamiento protegido.
En un modo de realización, cuando la GSC es mayor que 25, las posiciones de bit (64 - GSC) a 38 están reservadas y deben contener ceros; de lo contrario, los resultados de la detección de eventos de almacenamiento protegido son impredecibles. En un modo de realización, las posiciones de bit 39-52 y 56-57 del registro g Sd están reservadas y deben contener ceros; de lo contrario, es posible que el programa no funcione de manera compatible en el futuro. Otros modos de realización pueden permitir un intervalo diferente de valores de GSC, con los correspondientes cambios en el tamaño del GSO.
• Desplazamiento de Carga Protegido (GLS) 304: En un modo de realización, los bits 53-55 del registro de designación de almacenamiento protegido contienen un entero binario sin signo de 3 bits que se usa en la formación del resultado intermedio de la instrucción Carga Lógica y Desplazamiento Protegido. Los valores de GLS válidos son 0-4, en un modo de realización; los valores 5-7 están reservados y pueden dar como resultado una cantidad de desplazamiento impredecible.
Otros modos de realización pueden proporcionar un intervalo más amplio de valores de GLS que permiten alinear objetos en varios límites, tales como medias palabras, palabras, palabras dobles, palabras cuádruples, etc.
• Característica de almacenamiento protegido (GSC) 306: En un modo de realización, las posiciones de bit 58-63 del registro de designación de almacenamiento protegido contienen un entero binario sin signo de 6 bits que se trata como una potencia de dos. Valores válidos de GSC son, por ejemplo, 25-56; los valores 0-24 y 57-63 están reservados y pueden dar como resultado una detección impredecible de eventos de almacenamiento protegido. La GSC designa lo siguiente, en un ejemplo:
• La alineación del origen de almacenamiento protegido. Un valor GSC de 25 indica una alineación de 32 M bytes, un valor de 26 indica una alineación de 64 M bytes, y así sucesivamente.
• El tamaño de sección de almacenamiento protegido. Un valor GSC de 25 indica secciones de 512 K bytes, un valor de 26 indica secciones de 1 M bytes, y así sucesivamente. Otros modos de realización pueden permitir diferentes mecanismos para designar la GSC, con cambios correspondientes en la designación del origen de almacenamiento protegido y el tamaño de sección de almacenamiento protegido.
La relación entre la característica de almacenamiento protegido, el origen de almacenamiento protegido y el tamaño de sección de almacenamiento protegido se muestra en la figura 4. En la figura 4, G es gigabytes (230); GSC es una característica de almacenamiento protegido; GSD es una designación de almacenamiento protegido; GSO es un origen de almacenamiento protegido; M es megabytes (220); P es petabytes (250); y T es terabytes (240).
Además del registro de designación de almacenamiento protegido, la función de almacenamiento protegido incluye un registro de máscara de sección de almacenamiento protegido, un modo de realización del cual se describe con referencia a la figura 5. En un ejemplo, un registro de máscara de sección de almacenamiento protegido (GSSM) 500 es un registro de 64 bits, y cada bit 502 corresponde a una de las 64 secciones de almacenamiento protegido dentro del área de almacenamiento protegido. Como ejemplo, el bit 0 del registro corresponde a la sección más a la izquierda y el bit 63 corresponde a la sección más a la derecha. Cada bit, denominado bit de protección de sección, controla el acceso a la sección respectiva del área de almacenamiento protegido mediante las instrucciones Carga Protegida (LGG) y Carga Lógica y Desplazamiento Protegido (LLGFSG), como se describe a continuación.
Cuando todos los 64 bits del registro GSSM son cero, los eventos de almacenamiento protegido no se reconocen. En otros modos de realización, el registro GSSM 500 puede tener un número diferente de bits correspondiente a un número diferente de secciones protegidas, y/o puede usarse un bit para representar más de una sección protegida. Son posibles muchas variaciones.
El tercer registro de la función de almacenamiento protegido es el registro de direcciones de lista de parámetros de eventos de almacenamiento protegido (GSEPLA), un ejemplo del cual se representa en la figura 6A. Como se muestra, un registro de direcciones de lista de parámetros de eventos de almacenamiento protegido 600 incluye, por ejemplo, una dirección de 64 bits 602 que se usa para localizar una lista de parámetros de eventos de almacenamiento protegido (GSEPL), cuando se reconoce un evento de almacenamiento protegido. En un modo de realización, cuando la CPU no está en el modo de registro de acceso, la GSEPLA es una dirección lógica; cuando la CPU está en el modo de registro de acceso, la GSEPLA es una dirección virtual primaria.
Cuando se reconoce un evento de almacenamiento protegido, se accede a la GSEPL usando los 64 bits de la GSEPLA, independientemente del modo de direccionamiento actual de la CPU. Se accede a la GSEPL usando el modo de conversión actual, excepto cuando la CPU está en el modo de registro de acceso, donde se accede a la GSEPL usando el espacio de direcciones principal.
En un ejemplo, cuando se reconoce un evento de almacenamiento protegido, se inserta diversa información en la GSEPL y el control se pasa a un controlador de GSE. Usando la GSEPL, la rutina del controlador puede efectuar la reubicación del objeto, ajustando su puntero en consecuencia.
Un ejemplo de una lista de parámetros de eventos de almacenamiento protegido se describe con referencia a la figura 6B. Los campos de la lista de parámetros de eventos de almacenamiento protegido, excepto la dirección del controlador de eventos de almacenamiento protegido, se almacenan en la lista de parámetros de eventos de almacenamiento protegido cuando se detecta un evento de almacenamiento protegido.
En referencia a la figura 6B, en un ejemplo, el contenido de una lista de parámetros de eventos de almacenamiento protegido 610 incluye:
Reservado: Los bytes 0 y 4-7 de la GSEPL están reservados y, en un ejemplo, se establecen en cero cuando se reconoce un evento de almacenamiento protegido.
Modo de Direccionamiento de Eventos de Almacenamiento Protegido (GSEAM) 612: El byte 1 de la GSEPL contiene, como sigue, una indicación del modo de direccionamiento de la CPU cuando se reconoció el evento de almacenamiento protegido:
Reservado: Los bits 0-5 del GSEAM están reservados y almacenados como ceros.
Modo de Direccionamiento Extendido (E) 614: El bit 6 del GSEAM contiene el bit de modo de direccionamiento extendido, por ejemplo, el bit 31 de una palabra de estado de programa. La palabra de estado del programa es un registro de control que realiza las funciones de un registro de estado y un contador de programa. Contiene información usada para la ejecución adecuada de un programa, que incluye, pero sin limitarse a, un código de condición, una dirección de instrucción y otra información, como se describe en el presente documento.
Modo de direccionamiento básico (B) 616: El bit 7 del GSEAM contiene el bit de modo de direccionamiento básico, por ejemplo, el bit 32 de la palabra de estado de programa.
Los bits 6 y 7 se establecen, por ejemplo, en valores de los bits 31 y 32 de la PSW en el momento en que se reconoció el evento de almacenamiento protegido (es decir, en un modo de realización, antes de que los bits 31 y 32 sean reemplazados por la PSW de cancelación de transacción, descrita más adelante).
Indicaciones de Causa de Evento de Almacenamiento Protegido (GSECI) 620: El byte 2 de la GSEPL contiene las indicaciones de causa de evento de almacenamiento protegido. La GSECI se codifica como sigue, en un ejemplo:
Indicación de Modo de Ejecución Transaccional (TX) 622: Cuando el bit 0 de la GSECI es cero, la CPU no estaba en modo de ejecución transaccional cuando se reconoció el evento de almacenamiento protegido. Cuando el bit 0 de la GSECI es uno, la CPU estaba en el modo de ejecución transaccional cuando se reconoció el evento de almacenamiento protegido.
Una CPU puede estar en modo de ejecución no transaccional o en modo de ejecución transaccional, y si está en modo de ejecución transaccional, puede estar en modo de ejecución transaccional restringida o en modo de ejecución transaccional no restringida. La CPU entra en el modo de ejecución transaccional mediante una instrucción de inicio de transacción y sale del modo de ejecución transaccional mediante una instrucción Fin de Transacción o con la cancelación de la instrucción. La instrucción de inicio de transacción puede ser una instrucción Inicio de Transacción (TBEGIN) de un modo de ejecución transaccional no restringida o una instrucción Inicio de Transacción Restringido (TBEGINC) de un modo de ejecución transaccional restringida. Cuando la instrucción de inicio de transacción es del modo de ejecución transaccional restringida, la CPU entra en el modo de ejecución transaccional restringida, que está sujeto a una serie de limitaciones (por ejemplo, hay disponible un subconjunto de las instrucciones generales; se puede ejecutar un número limitado de instrucciones; se puede acceder a un número limitado de ubicaciones de operandos de almacenamiento y/o la transacción se limita a un solo nivel de anidamiento). En un modo de ejecución transaccional no restringida (denominado simplemente modo de ejecución transaccional), no se aplican las limitaciones del modo de ejecución transaccional restringida.
En un modo de realización, durante la ejecución de la instrucción TBEGIN cuando una profundidad de anidamiento es inicialmente cero (las transacciones pueden anidarse), una palabra de estado de programa (PSW) de cancelación de transacción se establece en el contenido de la palabra de estado de programa (PSW) actual, y la dirección de instrucción de la PSW de cancelación de transacción designa la siguiente instrucción secuencial (es decir, la instrucción que sigue a la TBEGIN más externa). Durante la ejecución de la instrucción TEGINC, cuando la profundidad de anidamiento es inicialmente cero, la PSW de cancelación de transacción se establece en el contenido de la PSW actual, excepto cuando la dirección de instrucción de la PSW de cancelación de transacción designa la instrucción TBEGINC (en lugar de la siguiente instrucción secuencial que sigue a TBEGINC).
Cuando se cancela una transacción, se puede guardar diversa información de estado en un bloque de diagnóstico de transacción (TDB).
Indicación de modo de ejecución transaccional restringida (CX) 624: Cuando el bit 1 de la GSECI es cero, la CPU no estaba en modo de ejecución transaccional restringida cuando se reconoció el evento de almacenamiento protegido. Cuando el bit 1 de la GSECI es uno, la CPU estaba en el modo de ejecución transaccional restringida cuando se reconoció el evento de almacenamiento protegido. El bit 1 de la GSECI es significativo cuando el bit 0 es uno.
Reservado: Los bits 2-6 de la GSECI están reservados y, en un ejemplo, se establecen en cero cuando se reconoce un evento de almacenamiento protegido.
Causa de Instrucción (IN) 626: El bit 7 de la GSECI indica la instrucción que provocó el evento de almacenamiento protegido. Cuando el bit 7 es cero, el evento fue causado por la ejecución de la instrucción Carga Protegida. Cuando el bit 7 es uno, el evento fue causado por la ejecución de la instrucción Carga Lógica y Desplazamiento Protegido. De manera similar, se pueden indicar otras causas usando más de un bit.
Información de Acceso a Eventos de Almacenamiento Protegido (GSEAI) 630: El byte 3 de la GSEPL contiene información que describe los siguientes atributos de CPU, como, por ejemplo:
Reservado: El bit 0 de la GSEAI está reservado y, en un ejemplo, se establece en cero cuando se reconoce un evento de almacenamiento protegido.
Modo DAT (T) 632: El bit 1 de la GSEAI indica el modo de conversión dinámica de direcciones (DAT) actual (es decir, el bit T es una copia del bit 5 de PSW).
Indicación de Espacio de Direcciones (AS) 634: Los bits 2-3 de la GSEAI indican los controles actuales de espacio de direcciones (es decir, el campo AS es una copia de los bits 16-17 de la PSW). El campo AS es significativo cuando la DAT está habilitada (es decir, cuando el bit T es uno); de lo contrario, el campo AS es impredecible.
Número de Registro de Acceso (AR) 636: Cuando la CPU está en el modo de registro de acceso, los bits 4-7 de la GSEAI indican el número de registro de acceso usado por la instrucción LGG o LLGFSG que causa el evento (es decir, el campo AR es una copia del campo B2 de la instrucción LGG o LLGFSG). Cuando la CPU no está en el modo de registro de acceso, el campo AR es impredecible.
Dirección de Manejador de Eventos de Almacenamiento Protegido (GSEHA) 640: Los bytes 8-15 de la GSEPL contienen la dirección del controlador de eventos de almacenamiento protegido. El contenido del campo GSEHA se considera una dirección de bifurcación que está sujeta al modo de direccionamiento actual en la palabra de estado de programa (PSW). Cuando se reconoce un evento de almacenamiento protegido, el campo GSEHA forma la dirección de bifurcación que se utiliza para completar la ejecución de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido.
La dirección de instrucción en la PSW se reemplaza por el contenido de la GSEHA.
El programa especifica la dirección del controlador de eventos de almacenamiento protegido durante la ejecución de la instrucción Cargar Controles de Almacenamiento protegido.
Un evento de almacenamiento protegido se considera un evento de bifurcación satisfactorio de registro de evento de programa (PER). Si el PER está habilitado en, por ejemplo, la PSW, y el control de dirección de bifurcación de PER está en uno en, por ejemplo, el registro de control 9, la GSEHA es el valor comparado con, por ejemplo, los registros de control 10 y 11.
Dirección de Instrucción de Evento de Almacenamiento Protegido (GSEIA) 650: Los bytes 16-23 de la GSEPL contienen la dirección de instrucción de evento de almacenamiento protegido. Cuando se reconoce un evento de almacenamiento protegido, la dirección de la instrucción que causa el evento se almacena en el campo GSEIA. La dirección insertada en la GSEIA es la de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido, o la de la instrucción de tipo ejecución cuyo destino es una instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido, como ejemplos.
El almacenamiento del campo GSEIA está sujeto al modo de direccionamiento actual cuando se detecta el evento. En el modo de direccionamiento de 24 bits, los bits 0-39 de la GSEIA se establecen en ceros. En el modo de direccionamiento de 31 bits, los bits 0-32 de la GSEIA se establecen en ceros.
Dirección de Operando de Evento de Almacenamiento Protegido (GSEOA) 660: Los bytes 24-31 de la GSEPL contienen la dirección de operando de evento de almacenamiento protegido. Cuando se reconoce un evento de almacenamiento protegido, la segunda dirección de operando de una instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido que causa el evento se almacena en el campo GSEOA.
El almacenamiento del campo GSEOA está sujeto al modo de direccionamiento actual cuando se detecta el evento. En el modo de direccionamiento de 24 bits, los bits 0-39 de la GSEOA se establecen en ceros. En el modo de direccionamiento de 31 bits, los bits 0-32 de la GSEOA se establecen en ceros.
Si la ejecución transaccional se cancela debido al reconocimiento de un evento de almacenamiento protegido, el campo GSEOA contiene la dirección de operando formada durante la ejecución transaccional. Esto es cierto incluso si la dirección de operando se formó usando uno o más registros generales que fueron alterados durante la ejecución transaccional, e independientemente de si el/los registro(s) se restauró/restauraron cuando se canceló la ejecución transaccional.
Resultado Intermedio de Evento de Almacenamiento Protegido (GSEIR) 670: Los bytes 32-39 de la GSEPL contienen el resultado intermedio del evento de almacenamiento protegido. Cuando se reconoce un evento de almacenamiento protegido, el resultado intermedio formado por una instrucción de Carga Protegida o Carga Lógica y Desplazamiento Protegido se almacena en el campo GSEIR.
Si la ejecución transaccional se cancela debido al reconocimiento de un evento de almacenamiento protegido, el campo GSEIR contiene un resultado intermedio formado a partir de la segunda ubicación de operando después de que la CPU haya salido del modo de ejecución transaccional (por ejemplo, después de que se haya cancelado la transacción).
Dirección de Retorno de Evento de Almacenamiento Protegido (GSERA) 680: Los bytes 40-47 de la GSEPL contienen la dirección de retorno de evento de almacenamiento protegido.
Cuando se reconoce un evento de almacenamiento protegido mientras la CPU está en el modo de ejecución de transacción, la dirección de instrucción de la PSW de cancelación de transacción se inserta en la GSERA. En el modo de ejecución transaccional restringida, la dirección de instrucción (es decir, GSERA) designa la instrucción TBEGINC. En el modo de ejecución transaccional no restringida, la dirección de instrucción (es decir, GSERA) designa la instrucción que sigue a la instrucción TBEGIN.
Cuando se reconoce un evento de almacenamiento protegido mientras la CPU no está en el modo de ejecución transaccional, el contenido de la GSERA es idéntico al de GSEIA.
Durante la ejecución de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido, se accede a la GSEPL si se reconoce un evento de almacenamiento protegido. Se pueden realizar múltiples accesos a cualquier campo de la GSEPL cuando se reconoce un evento de almacenamiento protegido.
Los accesos a la GSEPL durante el procesamiento de eventos de almacenamiento protegido se consideran accesos de efecto secundario. Las excepciones de acceso por tipo de almacenamiento se reconocen para cualquier byte de la GSEPL, incluido el campo GSEHA y los campos reservados. Si al acceder a la GSEPL se reconoce una excepción de acceso distinta al direccionamiento, una indicación de acceso de efecto secundario, bit 54 de una identificación de excepción de conversión en, por ejemplo, la ubicación real 168-175, se establece en uno, y la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido que causa el evento de almacenamiento protegido se anula.
Cuando la DAT está activada, se accede a la GSEPL usando el modo de control de espacio de direcciones (ASC) actual, excepto cuando la CPU está en el modo de registro de acceso; en el modo de registro de acceso, se accede a la GSEPL en el espacio de direcciones principal.
Los tres registros de almacenamiento protegido se pueden configurar e inspeccionar por medio de las instrucciones Carga de Controles de Almacenamiento Protegido y Almacenar Controles de Almacenamiento Protegido, respectivamente. El operando de almacenamiento para cada una de estas instrucciones es, por ejemplo, un bloque de control de almacenamiento protegido (GSCB) de 32 bytes, y el contenido de los registros de almacenamiento protegido ocupan los tres últimos campos de ocho bytes del bloque, como se muestra en la figura 7.
Como se representa, en un ejemplo, un bloque de control de almacenamiento protegido (GSCB) 700 incluye el contenido 702 del registro de designación de almacenamiento protegido, el contenido 704 del registro de máscara de sección de almacenamiento protegido y el contenido 706 del registro de direcciones de lista de parámetros de GSE.
Cuando el GSCB está alineado en un límite de palabra doble, el acceso de la CPU a cada uno de los tres campos definidos es simultáneo en bloque.
En lo que se refiere a la instrucción Cargar Controles de Almacenamiento Protegido, las posiciones de bit reservadas del GSCB deben contener ceros, en un ejemplo; de lo contrario, es posible que el programa no funcione de manera compatible en el futuro.
En lo que se refiere a la instrucción Almacenar Controles de Almacenamiento Protegido, las posiciones de bit reservadas que se cargan con valores distintos de cero pueden almacenarse, o no, como ceros, y los valores reservados de los campos GLS y GSC del registro GSD pueden corregirse, o no, a valores dependientes del modelo.
En un modo de realización alternativo, uno o más de los valores descritos en la GSEPL pueden, en cambio, mantenerse en registros adicionales, incluidos en el GSCB, y cargarse y almacenarse por las instrucciones Cargar Controles de Almacenamiento Protegido y Almacenar Controles de Almacenamiento Protegido. También existen otros ejemplos.
En un modo de realización, el uso esperado es que el programa no cambie el modo ASC entre el establecimiento de los controles de almacenamiento protegido y el reconocimiento de un evento de almacenamiento protegido. Si el programa cambia el modo ASC, entonces, en un ejemplo, la GSEPL se mapeará a direcciones comunes tanto en el espacio donde se estableció como en el espacio donde se reconoció el evento de almacenamiento protegido. Si se reconoce un evento de almacenamiento protegido en el modo de registro de acceso, el programa controlador de eventos de almacenamiento protegido puede necesitar examinar el campo GSEAI para determinar un ALET (testigo de entrada de lista de acceso) apropiado con el cual acceder al operando de almacenamiento protegido.
Además, cuando se cancela una transacción no restringida debido a un evento de almacenamiento protegido, el modo de direccionamiento desde la PSW de cancelación de transacción se vuelve eficaz. El modo de direccionamiento que estaba en vigor en el momento del evento de almacenamiento protegido se puede determinar inspeccionando el campo GSEAM en la lista de parámetros de GSE.
El modo de direccionamiento no se puede cambiar mediante una transacción restringida, en un modo de realización; por tanto, en un modo de realización, si se cancela una transacción restringida debido a un evento de almacenamiento protegido, el modo de direccionamiento es necesariamente el mismo que cuando se ejecutó la instrucción TBEGINC.
A continuación, se describen más detalles de cada una de las instrucciones de la función de almacenamiento protegido, que incluyen, por ejemplo, Carga Protegida, Carga Lógica y Desplazamiento Protegido, Cargar Controles de Almacenamiento Protegido y Almacenar Controles de Almacenamiento Protegido. Cada instrucción puede ser una única instrucción máquina diseñada de la interfaz hardware/software. Además, cada instrucción puede incluir una pluralidad de campos. En un modo de realización, los campos de una instrucción están separados e independientes entre sí. Sin embargo, en otro modo de realización, se puede combinar más de un campo. Además, un número de subíndice asociado a un campo de la instrucción denota el operando al que se aplica el campo. Por ejemplo, cualquier campo que tenga un subíndice 1 está asociado a un primer operando, cualquier campo que tenga un subíndice 2 está asociado a un segundo operando, y así sucesivamente.
Un ejemplo de una instrucción de Carga Protegida (LGG) se describe con referencia a la figura 8. Una instrucción de Carga Protegida 800 incluye, por ejemplo, campos de código de operación (opcode) 802a, 802b para designar una operación de carga protegida; un campo de registro (Ri) 804; un campo de índice (X2) 806; un campo base (B2) 808; y un campo de desplazamiento que comprende un primer campo de desplazamiento (DL2) 810a y un segundo campo de desplazamiento (DH2) 810b. El contenido del segundo campo de desplazamiento y el primer campo de desplazamiento se concatenan para proporcionar un desplazamiento, que se trata como un entero binario con signo de 20 bits, en un ejemplo.
Cuando los campos X2 806 y B2 808 designan un registro general distinto al registro 0, el contenido de los respectivos registros se añade al desplazamiento para proporcionar una dirección en el almacenamiento que incluye el segundo operando. El segundo operando es, por ejemplo, una palabra doble almacenada. En un ejemplo, se reconoce una excepción de especificación y se suprime la operación si la dirección del segundo operando no es un límite de palabra doble.
En la ejecución de la instrucción Carga Protegida, se forma un resultado intermedio de 64 bits, como sigue:
Como ejemplos, en el modo de direccionamiento de 24 bits, el resultado intermedio se forma a partir de la concatenación de 40 ceros binarios con los bits 40-63 del segundo operando. En el modo de direccionamiento de 31 bits, el resultado intermedio se forma a partir de la concatenación de 33 ceros binarios con los bits 33-63 del segundo operando. En el modo de direccionamiento de 64 bits, el resultado intermedio se forma a partir del segundo operando completo.
Cuando la función de almacenamiento protegido está habilitada, el resultado intermedio se usa en la detección de eventos de almacenamiento protegido, como ejemplo. Si se reconoce un evento de almacenamiento protegido, el registro general R1 no se modifica y la instrucción se completa, como se describe más adelante.
Cuando la función de almacenamiento protegido no está habilitada, o la función está habilitada pero no se reconoce un evento de almacenamiento protegido, el resultado intermedio de 64 bits se inserta en el registro general R1 y se completa la instrucción.
Se accede a la lista de parámetros de eventos de almacenamiento protegido (GSEPL) cuando se reconoce un evento de almacenamiento protegido. Los accesos por tipo de almacenamiento se aplican a toda la GSEPL. El código de condición permanece sin cambios.
Como se indicó anteriormente, además de la instrucción Carga Protegida, la función de almacenamiento protegida incluye, de acuerdo con un aspecto de la presente invención, una instrucción Carga lógica y Desplazamiento Protegido. La instrucción Carga Lógica y Desplazamiento Protegido es una única instrucción (por ejemplo, una única instrucción de hardware diseñada) que carga datos desde el almacenamiento, desplaza los datos en una cantidad de desplazamiento para obtener un valor desplazado, obtiene un resultado intermedio usando el valor desplazado y realiza una detección de almacenamiento protegido usando el resultado intermedio.
En un ejemplo particular, los datos son un valor de 32 bits que se desplaza hacia la izquierda un número de posiciones de bit especificadas en el registro de designación de almacenamiento protegido para formar, por ejemplo, un valor intermedio de 64 bits. El valor de 64 bits se ajusta para el modo de direccionamiento; es decir, en el modo de direccionamiento de 24 bits, los bits 0-39 se establecen en ceros; en el modo de direccionamiento de 31 bits, los bits 0-32 se establecen en ceros; y en el modo de direccionamiento de 64 bits, el valor no cambia. Los bits seleccionados del valor intermedio se comparan con un origen de almacenamiento protegido (en el registro GSD), y otros bits seleccionados del valor intermedio se usan para indexar un bit en el registro de máscara de sección de almacenamiento protegido (GSSM). Si la comparación es igual y el bit GSSM indexado es uno, se detecta un evento de almacenamiento protegido. De lo contrario, la instrucción simplemente carga el valor intermedio en un registro.
Un ejemplo de una instrucción Carga Lógica y Desplazamiento Protegido (LLGFSG) se describe con referencia a la figura 9. Una instrucción Carga Lógica y Desplazamiento Protegido 900 incluye, por ejemplo, campos opcode 902a, 902b para designar una operación de carga lógica y desplazamiento protegido; un campo de registro (Ri) 904; un campo de índice (X2) 906; un campo base (B2) 908; y un campo de desplazamiento que comprende un primer campo de desplazamiento (DL2) 910a y un segundo campo de desplazamiento (DH2) 910b. El contenido del segundo campo de desplazamiento y el primer campo de desplazamiento se concatenan para proporcionar un desplazamiento, que se trata como un entero binario con signo de 20 bits, en un ejemplo.
Cuando los campos X2 906 y B2 908 designan un registro general distinto al registro 0, el contenido de los respectivos registros se añade al desplazamiento para proporcionar una dirección en el almacenamiento que incluye el segundo operando. El segundo operando, por ejemplo, es una palabra almacenada. En un ejemplo, se reconoce una excepción de especificación y la operación se suprime si la dirección del segundo operando no está en un límite de palabra.
En la ejecución de la instrucción Carga Lógica y Desplazamiento Protegido se forma un resultado intermedio de 64 bits, como sigue:
Cuando la función de almacenamiento protegido está habilitada (por ejemplo, por medio del bit 59 del registro de control 2), el resultado intermedio se forma usando el valor de desplazamiento de carga protegido (GLS, en los bits 53-55 del registro de designación de almacenamiento protegido). Cuando la función de almacenamiento protegido no está habilitada, se supone que el valor de GLS es cero.
Como ejemplos, en el modo de direccionamiento de 24 bits, el resultado intermedio se forma a partir de la concatenación de 40 ceros binarios, bits (8+GLS) a 31 del segundo operando y ceros binarios de GLS (es decir, un número igual a GLS de ceros). En el modo de direccionamiento de 31 bits, el resultado intermedio se forma a partir de la concatenación de 33 ceros binarios, bits (1+GLS) a 31 del segundo operando y GLS ceros binarios. En el modo de direccionamiento de 64 bits, el resultado intermedio se forma a partir de la concatenación de (32-GLS) ceros binarios, el segundo operando completo de 32 bits y GLS ceros binarios.
Cuando la función de almacenamiento protegido está habilitada, el resultado intermedio se usa en la detección de eventos de almacenamiento protegido, como ejemplo. Si se reconoce un evento de almacenamiento protegido, el registro general R1 no se modifica y la instrucción se completa, como se describe más adelante.
Cuando la función de almacenamiento protegido no está habilitada, o la función está habilitada pero no se reconoce un evento de almacenamiento protegido, el resultado intermedio de 64 bits se inserta en el registro general R1 y se completa la instrucción.
Se accede a la lista de parámetros de eventos de almacenamiento protegido (GSEPL) cuando se reconoce un evento de almacenamiento protegido. Los accesos por tipo de almacenamiento se aplican a toda la GSEPL. El código de condición permanece sin cambios.
Con la ejecución de la instrucción Carga Guardada o Carga Lógica y Desplazamiento Protegido, puede producirse las siguientes excepciones de programa: Acceso (extraer, segundo operando; cuando se reconoce un evento de almacenamiento protegido, extraer y almacenar, campos GSEPL); Operación (función de almacenamiento protegido no instalada); y especificación.
La prioridad de ejecución para cada una de las instrucciones Carga Protegida y Carga Lógica y Desplazamiento Protegido es la siguiente:
I . -7. Excepciones con la misma prioridad que la prioridad de las condiciones de interrupción de programa para el caso general.
8. Excepciones de acceso para el segundo operando almacenado.
9. Finalización sin evento de almacenamiento protegido reconocido.
10. Excepciones de acceso de efecto secundario para la lista de parámetros de eventos de almacenamiento protegido.
I I . Finalización con un evento de almacenamiento protegido reconocido.
La instrucción Carga Lógica y Desplazamiento Protegido puede ser útil para cargar lo que a veces se denomina punteros comprimidos en los que algunos de los bits más a la derecha de la dirección de puntero están ausentes en el almacenamiento y se supone que son ceros. Por ejemplo, varios lenguajes, tales como Java, pueden asignar objetos de datos para sus aplicaciones en límites de almacenamiento integral (es decir, en límites que son una potencia de dos). Por ejemplo, los objetos se pueden asignar en un límite de palabra (4 bytes), palabra doble (8 bytes) o palabra cuádruple (16 bytes). Cuando un objeto se asigna en tal límite, algunos de los bits más a la derecha de la dirección del objeto son ceros. En lo que respecta a la eficiencia de la programación, puede ser ventajoso representar los punteros a dichos objetos usando un puntero de 32 bits, pero esto limita el intervalo de direccionabilidad a 4 gigabytes (o, en el caso de z/Architecture, que usa direcciones de 31 bits, el intervalo de direccionabilidad está limitado a 2 gigabytes), incluso cuando se ejecuta en el modo de direccionamiento de 64 bits.
Dado que se sabe que algunos de los bits más a la derecha de dicho objeto (alineados en un límite integral) son cero, estos bits se pueden omitir de una representación en memoria del puntero desplazando el puntero hacia la derecha en el número de bits cero esperados. Esto permite que se añada el número correspondiente de bits más a la izquierda al puntero almacenado, lo que permite que el puntero se dirija a una cantidad de memoria mayor de la que es posible con una versión no desplazada. Por ejemplo, si se sabe que los punteros indican palabras dobles, al desplazar el puntero a la derecha en tres bits, el intervalo de direccionabilidad se puede extender a la izquierda en 3 bits, lo que permite que el puntero de 32 bits se dirija hasta 32 gigabytes de memoria (a diferencia de los 4 gigabytes que se pueden direccionar con un puntero no desplazado). Además, cuando el puntero se carga para que lo utilice el subsistema de memoria de la CPU, se desplaza hacia los 3 bits de la izquierda para formar un puntero de 35 bits.
Suponiendo que un modelo de programación usa punteros comprimidos que tienen el mismo formato (es decir, los punteros comprimidos se desplazan todos hacia la derecha en el mismo número de bits), la instrucción que realiza la operación de carga y desplazamiento no necesita tener un operando que designa la cantidad de desplazamiento. Más bien, puede ser un valor relativamente estático que se carga con poca frecuencia (por ejemplo, cuando se envía una tarea). En un modo de realización, el número de bits en los que se desplazan los punteros comprimidos se especifica en el campo de desplazamiento de carga protegido (GLS) del registro de designación de almacenamiento protegido (GSD). En otro modo de realización, la cantidad de desplazamiento puede especificarse en un operando de la instrucción. También son posibles otras variaciones.
Cuando la función de almacenamiento protegido se instala en una configuración, las instrucciones Carga Protegida (LGG) y Carga Lógica y Desplazamiento Protegido (LLGFSG) se pueden ejecutar independientemente del contenido del control de habilitación de almacenamiento protegido (por ejemplo, bit 59 del registro de control 2). Sin embargo, los eventos de almacenamiento protegido pueden reconocerse como resultado de la ejecución de LGG o LLGFSG cuando (a) el control de GSE es uno, y (b) la máscara de selección de almacenamiento protegido es distinta de cero. La máscara de selección de almacenamiento protegido no debe cargarse sin que el control GSE sea uno.
Un evento de almacenamiento protegido no se reconoce cuando todos los 64 bits de la máscara de selección de almacenamiento protegido (GSSM) son cero. El programa puede garantizar que los eventos de almacenamiento protegido no sean reconocidos por (a) no cargar los controles de almacenamiento protegido, en cuyo caso la GSSM contendrá su estado de reinicio de ceros, o (b) cargando ceros en la GSSM.
Un ejemplo de una instrucción Cargar Controles de Almacenamiento Protegido (LGSC) se describe con referencia a la figura 10. La instrucción Cargar Controles de Almacenamiento Protegido proporciona a la CPU parámetros que controlan el funcionamiento de un evento de almacenamiento protegido y proporciona al programa información que describe el estado de la CPU en el momento del evento de almacenamiento protegido.
En referencia a la figura 10, una instrucción Cargar Controles de Almacenamiento Protegido 1000 incluye campos opcode 1002a, 1002b para designar una operación de carga de controles de almacenamiento protegido; un campo de registro (Ri) 1004; un campo de índice (X2) 1006; un campo base (B2) 1008; y un campo de desplazamiento que comprende un primer campo de desplazamiento (DL2) 1010a y un segundo campo de desplazamiento (DH2) 1010b. El contenido del segundo campo de desplazamiento y el primer campo de desplazamiento se concatenan para proporcionar un desplazamiento, que se trata como un entero binario con signo de 20 bits, en un ejemplo.
Cuando los campos X2 1006 y B2 1008 designan un registro general distinto al registro 0, el contenido de los respectivos registros se añade al desplazamiento para proporcionar una dirección en el almacenamiento que incluye el segundo operando.
En funcionamiento, el contenido del bloque de control de almacenamiento protegido (GSCB) en la dirección de segundo operando se carga en los tres registros de almacenamiento protegido. El formato del bloque de control de almacenamiento protegido (GSCB) se muestra en la figura 7. El campo R1 de la instrucción está reservado y debe contener cero; de lo contrario, es posible que el programa no funcione de manera compatible en el futuro.
Las excepciones de acceso se reconocen para todos los 32 bytes del GSCB.
Si los campos GLS o GSC del registro GSD que se está cargando contienen valores no válidos, o si las posiciones de bit reservadas del registro no contienen ceros, los resultados son impredecibles. Si el segundo operando contiene (a) valores GLS o GSC no válidos, o (b) valores distintos de cero en las posiciones de bit reservadas, entonces depende del modelo si la CPU reemplaza los valores no válidos o distintos de cero con valores corregidos. Además, es impredecible si dichos valores corregidos se almacenan posteriormente mediante la instrucción Almacenar Controles de Almacenamiento Protegido.
Se reconoce una excepción de operación especial y la operación se suprime cuando el control de habilitación de almacenamiento protegido, por ejemplo, el bit 59 del registro de control 2, es cero.
El código de condición permanece sin cambios y puede haber las siguientes excepciones de programa: Acceso (extraer, segundo operando); Operación (si la función de almacenamiento protegido no está instalada); Operación Especial; y Restricción de Transacción.
Si el campo GSC del registro GSD contiene un valor no válido, es posible que no se produzcan eventos de almacenamiento protegido o que se detecten eventos de almacenamiento protegido erróneos.
Si el campo GLS del registro GSD contiene un valor no válido, el resultado intermedio usado por la instrucción Carga Lógica y Desplazamiento Protegido puede formarse a partir de un intervalo impredecible de bits en el segundo operando, desplazado en un número impredecible de bits.
Un ejemplo de una instrucción Almacenar Controles de Almacenamiento Protegido se describe con referencia a la figura 11. Una instrucción Almacenar Controles de Almacenamiento Protegido 1100 incluye, por ejemplo, campos opcode 1102a, 1102b para designar una operación para almacenar controles de almacenamiento protegido; un campo de registro (Ri) 1104; un campo de índice (X2) 1106; un campo base (B2) 1108; y un campo de desplazamiento que comprende un primer campo de desplazamiento (DL2) 1110a y un segundo campo de desplazamiento (DH2) 1110b. El contenido del segundo campo de desplazamiento y el primer campo de desplazamiento se concatenan para proporcionar un desplazamiento, que se trata como un entero binario con signo de 20 bits, en un ejemplo.
Cuando los campos X2 1106 y B2 1108 designan un registro general distinto al registro 0, el contenido de los respectivos registros se añade al desplazamiento para proporcionar una dirección en el almacenamiento que incluye el segundo operando.
En funcionamiento, el contenido de los tres registros de almacenamiento protegido se almacena en la ubicación de segundo operando. El segundo operando tiene el formato de un bloque de control de almacenamiento protegido (GSCB), como se muestra en la figura 7. En un modo de realización, los ceros se almacenan en los ocho primeros bytes del GSCB.
Las excepciones de acceso se reconocen para todos los 32 bytes del GSCB.
El campo R1 de la instrucción está reservado y debe contener cero; de lo contrario, es posible que el programa no funcione de manera compatible en el futuro.
Se reconoce una excepción de operación especial y la instrucción se suprime si el control de habilitación de almacenamiento protegido, por ejemplo, el bit 59 del registro de control 2, es cero.
El código de condición permanece sin cambios y puede haber las siguientes excepciones de programa: Acceso (almacenar, segundo operando); Operación (si la función de almacenamiento protegido no está instalada); Operación Especial; y Restricción de Transacción.
Para cada una de las instrucciones, aunque se describen varios campos y registros, uno o más aspectos de la presente invención pueden usar campos o registros diferentes, adicionales o un menor número de los mismos, u otros tamaños de campos y registros, etc. Son posibles muchas variaciones. Por ejemplo, se pueden usar registros implícitos en lugar de registros o campos especificados explícitamente de la instrucción. También aquí son posibles otras variaciones.
Una o más de las instrucciones y/o registros descritos anteriormente pueden emplearse en la detección de eventos de almacenamiento protegido usada para detectar un evento de almacenamiento protegido. Como se muestra en la figura 12, en un modo de realización, la detección de eventos de almacenamiento protegido 1200 usa, por ejemplo, dos valores formados a partir del resultado intermedio 1202 de la instrucción Carga Protegida (LGG) o Carga Lógica y Almacenamiento Protegido (LLGFSG), que incluye, por ejemplo, un comparador de operando de almacenamiento protegido (GSOC) 1204 y un índice de máscara de almacenamiento protegido (GSMX) 1206.
El comparador de operando de almacenamiento protegido (GSOC) 1204 se forma a partir del resultado intermedio de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido. Por ejemplo, el GSOC comprende las posiciones de bit 0 a (63-GSC) del resultado intermedio, ambas inclusive (donde GSC es la característica de almacenamiento protegido en, por ejemplo, las posiciones de bit 58-63 del registro de designación de almacenamiento protegido).
El GSOC se compara 1210 con el origen de almacenamiento protegido 1212 (GSO) en las posiciones de bit correspondientes del registro GSD 1214, que también incluye la característica de almacenamiento protegido 1216. Cuando el GSOC no es igual al GSO, no se reconoce un evento de almacenamiento protegido, y la ejecución de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido se completa insertando el resultado intermedio en el registro general R1.
Cuando el GSOC es igual al GSO 1220, los seis bits del resultado intermedio a la derecha del GSOC forman un entero binario sin signo llamado índice de máscara de almacenamiento protegido (GSMX). Se examina 1222 el bit de protección de sección (G) 1224 del registro de máscara de sección de almacenamiento protegido (GSSM) 1226 correspondiente al GSMX. Si el bit de protección de sección es cero, no se reconoce un evento de almacenamiento protegido, y la ejecución de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido se completa insertando el resultado intermedio en el registro general R1. Sin embargo, si el bit de protección de sección es uno, entonces se reconoce 1228 un evento de almacenamiento protegido.
La detección de eventos de almacenamiento protegido no se realiza cuando (a) la función de almacenamiento protegido no está habilitada (por medio de, por ejemplo, el bit 59 del registro de control 2), o (b) todas las posiciones de bit del registro de máscara de sección de almacenamiento protegido (GSSM) contiene ceros, como ejemplos.
En un modo de realización, los controles de almacenamiento protegido pueden capturarse en una comprobación de máquina o en un procesador de señales (SIGP) que almacena un estado adicional en la operación de dirección. Por ejemplo, cuando se produce una comprobación de máquina en una CPU, el contexto de registro diseñado de la CPU se registra en el almacenamiento. La mayor parte del contexto de registro diseñado, incluida la palabra de estado de programa (PSW), registros generales, registros de acceso, registros de control, registros de coma flotante, registro de control de coma flotante, comparador de reloj, temporizador de CPU, registro programable TOD (hora del día), registro de dirección de evento de interrupción y registro de prefijo, se almacena en ubicaciones de almacenamiento asignadas en los dos bloques inferiores del almacenamiento real (es decir, en el área de prefijo). Además, la arquitectura se ha ampliado para incluir un área de guardado ampliada de comprobación de máquina (MCESA) que no es contigua al área de prefijo para guardar información adicional, incluidos, de acuerdo con un aspecto de la presente invención, los registros de almacenamiento protegido.
Como se muestra en la figura 13A, en un ejemplo, un área de guardado ampliada de comprobación de máquina 1300 incluye contenido 1304 que indica la información que se guarda. En un ejemplo, los desfases del contenido se muestran en 1302, y una cantidad de área de guardado extendida que se almacena se basa en la característica de longitud (LC) que se muestra en 1306.
En un ejemplo, el contenido 1304 incluye el contenido de los registros de almacenamiento protegido, incluido el contenido 1306 del registro de designación de almacenamiento protegido, el contenido 1308 del registro de máscara de sección de almacenamiento protegido y el contenido 1310 del registro de lista de parámetros de eventos de almacenamiento protegido. En un ejemplo, los registros de almacenamiento protegido se almacenan en el mismo formato que el del bloque de control de almacenamiento protegido.
La validez del contenido de las ubicaciones 1024-1055 del área de guardado ampliada de comprobación de máquina se indica mediante, por ejemplo, un bit de validez de registro de almacenamiento protegido, por ejemplo, el bit 36 de un código de interrupción de comprobación de máquina (MCIC) almacenado en, por ejemplo, ubicaciones reales 232-239. Cuando es uno, indica que el contenido de esas ubicaciones refleja el estado correcto de los registros de almacenamiento protegido en el momento de la interrupción.
El área de guardado extendida de comprobación de máquina está designada por una designación de área de guardado ampliada de comprobación de máquina (MCESAd ), un ejemplo de la cual se muestra en la figura 13B. Una designación de área de guardado ampliada de comprobación de máquina 1350 incluye, por ejemplo, un origen de área de guardado ampliada de comprobación de máquina (MCESAO) 1352 que se usa para indicar el origen del área de guardado ampliada de comprobación de máquina, y una característica de longitud (LC) 1354 que representa el tamaño y la alineación de la MCESA.
En un ejemplo, la característica de longitud es una potencia de dos y los efectos de la característica de longitud incluyen, por ejemplo:
• Cuando la función de almacenamiento protegida no está instalada, o cuando la función está instalada, pero el campo LC es cero, se supone que el tamaño del área de guardado ampliada de comprobación de máquina es de 1.024 bytes; esto garantiza un funcionamiento compatible para el software más antiguo que desconoce la función de almacenamiento protegido.
• Cuando la función de almacenamiento protegido está instalada y el campo LC tiene cualquier valor de, por ejemplo, 1 a 9, se supone que es un error y todo el MCESAO se trata como si contuviera ceros (es decir, no se almacena ninguna MCESA).
• Cuando la función de almacenamiento protegido está instalada y el campo LC contiene un valor mayor o igual a, por ejemplo, 10, entonces el tamaño y la alineación de la MCESA son 2LC bytes. En este caso, los bits 0 a 63-LC de la MCESAD forman el origen del área de guardado ampliada de comprobación de máquina (MCESAO). El MCESAO, con LC bits de ceros añadidos a la derecha, forma la dirección de 64 bits del área de guardado ampliada de comprobación de máquina.
Similar al área de guardado ampliada de comprobación de máquina, cuando se instala la función de almacenamiento protegido, un registro de parámetros de, por ejemplo, una instrucción de procesador de señales (SIGP), que se usa para capturar el contenido de los registros seleccionados de una CPU, se amplía para incluir información de estado adicional. Como se muestra en la figura 13C, un registro de parámetros de SIGP 1380 para el estado adicional de almacenamiento en el orden de direcciones incluye un origen de área de estado adicional 1382 usado para indicar el origen del área adicional y una característica de longitud (LC) 1384 que representa el tamaño y alineación del área de estado adicional.
En un ejemplo, cuando se instala la función de almacenamiento protegido, si se especifica un valor LC reservado, o si cualquier posición de bit reservada en el registro de parámetros no es cero, la CPU direccionada no acepta la orden SIGP, el bit de parámetro no válido (por ejemplo, el bit 55) se indica en el registro de estado designado por el campo R1 de la instrucción SIGP, y la instrucción se completa estableciendo el código de condición 1.
A continuación, se describen más detalles sobre el procesamiento asociado a un evento de almacenamiento protegido. Parte del procesamiento depende del modo de ejecución del procesador. Por ejemplo, el procesador puede estar en modo de ejecución no transaccional o en modo de ejecución transaccional. Además, si está en modo transaccional, puede estar en modo transaccional no restringido o en modo transaccional restringido, y el procesamiento puede depender de ello. Determinados detalles se describen con referencia a z/Architecture; sin embargo, uno o más aspectos se aplican a otras arquitecturas. La z/Architecture es solo un ejemplo.
Cuando se reconoce un evento de almacenamiento protegido mientras la CPU está en el modo de ejecución transaccional, ocurre lo siguiente:
1. La transacción se cancela, por ejemplo, con el código de cancelación 19. Si una dirección de bloque de diagnóstico de transacción (TDB) no es válida, o si la dirección de TDB es válida y accesible, el código de condición 2, como ejemplo, se establece en la PSW de cancelación de transacción. Si la dirección TDB es válida, pero no se puede acceder al TDB, el código de condición 1, como ejemplo, se establece en la PSW de cancelación de transacción.
2. Dependiendo del modelo, el segundo operando de la instrucción Carga Protegida o Carga Lógica y Desplazamiento Protegido puede extraerse para determinar si la condición de evento de almacenamiento protegido todavía existe.
• Cuando se extrae el segundo operando y la condición de evento de almacenamiento protegido ya no existe, el procesamiento de cancelación de transacción normal concluye con la carga de la PSW de cancelación de transacción. El procesamiento de eventos de almacenamiento protegido no se produce en este caso.
• Cuando no se extrae el segundo operando, o cuando se extrae y la condición de evento de almacenamiento protegido persiste, se produce el procesamiento de evento de almacenamiento protegido, como se describe en el presente documento (en lugar de cargar la PSW de cancelación de transacción; es decir, sin la función de almacenamiento protegido, cuando la ejecución transaccional se cancela, el control se pasa a la instrucción designada por la PSW de cancelación de transacción. Para una transacción no restringida, esta es la instrucción que sigue a la instrucción TBEGIN más externa que inició la ejecución transaccional. Por lo general, esto transferirá el control a un controlador de cancelación de transacciones que, potencialmente, puede alterar las condiciones de programa para que un intento posterior de ejecución de transacción tenga éxito. Para una transacción restringida, la PSW de cancelación de transacción designa la instrucción TBEGINC. Por lo tanto, la transacción se vuelve a realizar sin ninguna intervención de un controlador de cancelación). Cuando se reconoce una GSE durante una ejecución transaccional, la transacción se cancela. Realizar de nuevo la transacción sin resolver la GSE no será productivo. Por lo tanto, el control se pasa al controlador de GSE después de una cancelación de transacción, y el controlador de GSE gestiona el evento, como se describe en el presente documento.
En este caso, el bit TX se establece en el campo GSECI, y si la CPU estaba en el modo de ejecución transaccional restringida, también se establece el bit CX.
Cuando se produce un evento de almacenamiento protegido, la dirección de instrucción de GSE (GSEIA) contiene la dirección de la instrucción LGG o LLGFSG que causó el evento. Por lo general, el programa puede volver a esta dirección después de resolver la GSE e intentar seguir accediendo al objeto que causó originalmente el evento. Sin embargo, en el modo de ejecución transaccional (TX), una transacción es cancelada por un evento de almacenamiento protegido y la bifurcación de retorno a la instrucción LGG/LLGFSG es inapropiada, ya que otras instrucciones en la transacción que conducen a la GSE se habrán descartado. Por tanto, de acuerdo con un aspecto de la presente invención, basado en una cancelación debido a una GSE, el procesamiento incluye, por ejemplo, pasar a un controlador de GSE después de la cancelación transaccional para resolver la GSE; proporcionar una indicación al controlador de GSE de que la CPU estaba en modo transaccional; y proporcionar la dirección de la instrucción TBEGIN/TBEGINC que inició la transacción que provoca la GSE, de modo que el controlador de GSE pueda volver a realizar la transacción.
Independientemente de si la CPU estaba en el modo de ejecución transaccional cuando se reconoce un evento de almacenamiento protegido, el registro de direcciones de lista de parámetros de eventos de almacenamiento protegido (GSEPLA) se usa para localizar la lista de parámetros de eventos de almacenamiento protegido (GSEPL). El contenido del registro GSEPLA es una dirección de 64 bits y se usan 64 bits de la dirección independientemente del modo de direccionamiento actual. Se accede a la GSEPL usando el modo de conversión actual, excepto cuando la CPU está en el modo de registro de acceso, donde se accede a la GSEPL usando el espacio de direcciones principal.
Si se reconoce una excepción de acceso al acceder a la GSEPL, el procesamiento es el siguiente:
• Se produce una interrupción de programa.
• Si la CPU no estaba en el modo de ejecución transaccional, entonces la dirección de instrucción en la PSW antigua de programa se establece como sigue:
- Si la condición de excepción da como resultado la anulación, la dirección de instrucción apunta a la instrucción que causa el evento de almacenamiento protegido (es decir, la dirección de LGG o LLGFSG, o la dirección de la instrucción de tipo ejecución cuyo destino es LGG o LLGFSG, como ejemplos).
- Si la condición de excepción da como resultado una supresión o terminación, la dirección de instrucción apunta a la siguiente instrucción secuencial que sigue a la instrucción que causó el evento de almacenamiento protegido.
Si la CPU estaba en el modo de ejecución transaccional, la PSW de cancelación de transacción se inserta en la PSW antigua de programa.
• Para todas las condiciones de excepción de acceso, excepto el direccionamiento, la indicación de acceso de efecto secundario, por ejemplo, el bit 54 de la identificación de excepción de conversión (TEID) en ubicaciones reales 168-175, se establece en uno. (La TEID no se almacena para excepciones de direccionamiento).
• El procesamiento de eventos de almacenamiento protegido restante, que se describe a continuación, no se produce cuando no se puede acceder a la GSEPL.
Si se puede acceder a la GSEPL, se realizan las siguientes acciones usando los campos de la GSEPL:
• Los bytes 0 y 4-7 de la GSEPL se establecen en ceros.
• Una indicación del modo de direccionamiento se introduce en el modo de direccionamiento de eventos de almacenamiento protegido (GSEAM, byte 1 de GSEPL), como sigue:
- Los bits 0-5 del GSEAM se establecen en ceros.
- Los bits 6 y 7 del GSEAM se establecen en los bits 31 y 32 de la PSW en el momento en que se reconoció el evento de almacenamiento protegido.
• Una indicación de la causa del evento se inserta en el campo de indicación de causa de evento de almacenamiento protegido (GSECI, byte 2 de la GSEPL), como sigue:
- Si la CPU estaba en el modo de ejecución transaccional cuando se reconoció el evento de almacenamiento protegido, el bit 0 de la GSECI se establece en uno; de lo contrario, el bit 0 del byte 2 se establece en cero.
- Si la CPU estaba en el modo de ejecución transaccional restringida cuando se reconoció el evento de almacenamiento protegido, el bit 1 de la GSECI se establece en uno; de lo contrario, el bit 1 de la GSECI se establece en cero.
- Los bits 2-6 de la GSECI se establecen en ceros.
- El bit 7 de la GSECI se establece para designar la instrucción que provocó el evento de almacenamiento protegido. Un valor de cero significa que el evento fue causado por una instrucción LGG; un valor de uno significa que el evento fue causado por una instrucción LLGFSG, como ejemplos.
• Una indicación de la DAT PSW, el modo de direccionamiento y los controles del espacio de direcciones se insertan en el campo de indicación de acceso a evento de almacenamiento protegido (GSEAI, byte 3 de la GSEPL), como sigue:
- El bit 0 de la GSEAI está reservado y establecido en cero.
- El modo de conversión actual, bit 5 de la PSW, se inserta en el bit 1 de la GSEAI.
- Si la DAT está activada, los bits 16-17 de la PSW se colocan en los bits 2-3 de la GSEAI. Si la DAT está desactivada, los bits 2-3 de la GSEAI son impredecibles.
- Si la CPU está en el modo de registro de acceso, el número de registro de acceso correspondiente al campo B2 de la instrucción LGG o LLGFSG que causa el evento se inserta en los bits 4-7 de la GSEAI. Si la CPU no está en modo AR, los bits 4-7 de la GSEAI son impredecibles.
• La dirección de instrucción en la PSW se reemplaza por el contenido del campo de dirección de controlador de eventos de almacenamiento protegido (GSEHA, bytes 8-15 de la GSEPL). El campo GSEHA se considera una dirección de bifurcación. El modo de direccionamiento actual no se modifica.
• La dirección de la instrucción que causa el evento de almacenamiento protegido se inserta en el campo de dirección de instrucción de evento de almacenamiento protegido (GSEIA, bytes 16-23 de la GSEPL). La dirección insertada en la GSEIA es la de la instrucción LGG o LLGFSG, o la de la instrucción de tipo ejecución cuyo destino es LGG o LLGFSG, como ejemplos. La GSEIA también se inserta en el registro de direcciones de eventos de interrupción.
• La segunda dirección de operando de la instrucción LGG o LLGFSG se inserta en la dirección de operando de evento de almacenamiento protegido (GSEOA, bytes 24-31 de la GSEPL). Si la ejecución transaccional se canceló debido al reconocimiento de un evento de almacenamiento protegido, el campo GSEOA contiene la dirección de operando formada durante la ejecución transaccional.
• El resultado intermedio de la instrucción LGG o LLGFSG se coloca en el campo de resultado intermedio de evento de almacenamiento protegido (GSEIR, bytes 32-39 de la GSEPL). Si la ejecución transaccional se cancela debido al reconocimiento de un evento de almacenamiento protegido, el campo GSEIR se forma usando el campo de dirección de operando de almacenamiento protegido (GSEOA). Sin embargo, si el evento de almacenamiento protegido se reconoció durante la ejecución transaccional, depende del modelo si el GSEIR contiene el valor que se extrajo de forma transaccional o el valor que se extrajo después de que se canceló la transacción.
• La dirección intermedia de GSE (es decir, el puntero cargado por LGG o LLGFSG) se forma después de que se haya cancelado la transacción. En un modo de realización, si el operando del LGG/LLGFSG se alteró transaccionalmente durante la transacción, la GSEIA no mostrará esos cambios.
• Si la CPU estaba en el modo de ejecución transaccional cuando se reconoció el evento de almacenamiento protegido, la dirección de instrucción de la PSW de cancelación de transacción se inserta en el campo de dirección de retorno de evento de almacenamiento protegido (GSERA, bytes 40-47 de la GSEPL). Si la CPU estaba en el modo de ejecución transaccional restringida, la GSERA designa la instrucción TBEGINC (Inicio de Transacción Restringido). Si la CPU estaba en el modo de ejecución transaccional no restringida, la GSERA designa la instrucción que sigue a la instrucción TBEGIN (Inicio de Transacción). Después de gestionar la GSE, el controlador puede acceder a esta dirección para reintentar la transacción.
Si la CPU no estaba en el modo de ejecución transaccional cuando se reconoció el evento de almacenamiento protegido, el contenido del campo GSERA es idéntico al del campo GSEIA.
Finalmente, se considera que la instrucción LGG o LLGFSG se ha completado sin alterar el registro general R1.
Como se describe en el presente documento, los lenguajes de programación que implementan una técnica de fusión de almacenamiento, conocida como recuperación de almacenamiento o recogida de basura, pueden beneficiarse de la función de almacenamiento protegido. En tal modelo de programación, una referencia a un objeto de programa se realiza cargando primero un puntero al objeto. Las instrucciones Carga Protegida y Carga Lógica y Desplazamiento Protegido proporcionan los medios por los cuales el programa puede cargar un puntero a un objeto y determinar si el puntero puede usarse. Si no se reconoce ningún evento de almacenamiento protegido (GSE), el puntero se puede usar para hacer referencia al objeto. Sin embargo, si se reconoce un GSE, esto puede indicar que el puntero actual designa una ubicación de almacenamiento que se está reorganizando, en cuyo caso el objeto puede haberse reubicado en otro lugar. La rutina de gestión de GSE puede entonces modificar el puntero para designar la nueva ubicación del objeto y, a continuación, bifurcarse a una ubicación designada por la GSEIA para reanudar la ejecución normal del programa.
En respuesta a un GSE que se reconoce cuando la CPU está en el modo de ejecución transaccional, el controlador GSE del programa puede intentar corregir la condición que causó el evento (es decir, actualizar el operando de LGG o LLGFSG) y, a continuación, volver a ejecutar la transacción bifurcándose a la ubicación designada por la GSERA. Si se canceló la ejecución transaccional no restringida, el programa debe establecer el código de condición en 2 o 3 antes de bifurcarse a la GSERA, dependiendo de si la condición que causa el evento fue o no corregida, respectivamente. Si se canceló la ejecución transaccional restringida, entonces el programa no debe bifurcarse a la ubicación designada por la GSERA a menos que se haya corregido la condición que causa el evento; de lo contrario, puede producirse un bucle de programa.
Para garantizar un contenido fiable del campo de resultado intermedio de evento de almacenamiento protegido (GSEIR), un programa que se ejecuta en el modo de ejecución transaccional debe usar una instrucción de almacenamiento no transaccional (que realiza un acceso de almacenamiento no transaccional) si modifica la ubicación del segundo operando de una instrucción Carga Protegida que se ejecuta posteriormente en la misma transacción.
De manera similar a otras instrucciones que alteran la dirección de instrucción de PSW, se reconoce una excepción de especificación si la dirección de instrucción de PSW (cargada desde el campo GSEHA) es impar después de un evento de almacenamiento protegido.
Durante el procesamiento de GSE, la CPU puede reconocer una excepción de acceso al intentar actualizar la lista de parámetros de eventos de almacenamiento protegido (GSEPL). Una excepción de acceso de este tipo puede ser totalmente inocua, por ejemplo, debido a que el sistema operativo envía temporalmente la GSEPL a un almacenamiento auxiliar. Suponiendo que el sistema operativo soluciona la excepción, cargará la PSW antigua de programa para reanudar la ejecución del programa interrumpido.
Si se reconoce una excepción de acceso al acceder a la GSEPL, y la CPU no estaba en el modo de ejecución transaccional, la dirección de instrucción de la PSW antigua de programa se establecerá como sigue, en un ejemplo:
• Si la excepción dio como resultado una anulación, la dirección de instrucción apuntará a la instrucción LGG o LLGFSG que causó la GSE (o la instrucción de tipo ejecución cuyo operando fue lGg o LLGFSG), como ejemplos.
• Si la excepción dio como resultado una supresión o terminación, la dirección de instrucción apuntará a la siguiente instrucción secuencial que sigue a la instrucción que hizo que la GSE suprimiera o terminara las excepciones.
Si se reconoce una excepción de acceso al acceder a la GSEPL, y la CPU estaba en el modo de ejecución transaccional no restringida, la PSW antigua de programa designará la instrucción que sigue a la TBEGIN más externa; si la CPU estaba en el modo de ejecución transaccional restringida, la PSW antigua de programa designará la instrucción TBEGINC.
Si la CPU estaba en el modo de ejecución transaccional no restringida y se almacena un TDB (bloque de diagnóstico de transacción), el código de cancelación 19 indica que la ejecución transaccional fue cancelada debido a una GSE. Sin embargo, una rutina de controlador de cancelación de transacción no puede suponer que el código de cancelación 19 indica necesariamente que la rutina de controlador de GSE haya corregido la causa de la GSE (debido a la posible condición de excepción de acceso al acceder a la GSEPL). En este escenario, una rutina de controlador de cancelación puede volver a ejecutar la transacción varias veces para permitir que el sistema operativo resuelva una o más excepciones de conversión y para permitir que el controlador de GSE corrija la causa de la GSE.
En lo que antecede se ha descrito una función de almacenamiento protegido, que incluye instrucciones para cargar y almacenar controles que regulan el funcionamiento de la función de almacenamiento protegido, que se utilizan para facilitar el procesamiento dentro de un entorno informático. Uno o más aspectos de la presente invención están estrechamente ligados a la tecnología informática y facilitan el procesamiento dentro de un ordenador, mejorando el rendimiento del mismo.
Un modo de realización de aspectos de la invención relacionados con la facilitación del procesamiento en un entorno informático se describe con referencia a las figuras 14A-14B. En referencia a la figura 14A, en un ejemplo, se obtiene una instrucción para realizar una operación de carga y desplazamiento (1400) y se ejecuta la instrucción (1402). La ejecución incluye, por ejemplo, cargar datos (por ejemplo, un puntero) desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción (1404); desplazar los datos (por ejemplo, a la izquierda) en una cantidad de desplazamiento para obtener un valor desplazado (1406); obtener un resultado intermedio usando el valor desplazado (1408); y realizar una detección de almacenamiento protegido en base al resultado intermedio (1410).
En un modo de realización, la realización de la detección de almacenamiento protegido incluye comparar una primera parte del resultado intermedio con el origen de un área de almacenamiento protegido (1411); determinar si una sección particular del área de almacenamiento protegido está protegida, donde la determinación usa una segunda parte del resultado intermedio (1412); y detectar un evento de almacenamiento protegido en base a que la comparación indica un resultado específico y la determinación indica que la sección particular está protegida (1414).
La realización de la detección de almacenamiento protegido incluye, además, en un modo de realización, insertar el resultado intermedio en una ubicación seleccionada designada por la instrucción (por ejemplo, un registro especificado por un campo de la instrucción), en base a la comparación y la determinación de no detectar el evento de almacenamiento protegido (1416).
Además, en un modo de realización, con referencia a la figura 14B, la cantidad de desplazamiento se obtiene de un registro usado para especificar uno o más atributos de un área de almacenamiento protegido (1420).
Además, como un ejemplo, la obtención del resultado intermedio incluye ajustar el valor desplazado en base a un modo de direccionamiento de un procesador que ejecuta la instrucción (1422).
En un modo de realización adicional, se determina (1430) la ubicación en la memoria desde la que se cargan los datos, y la determinación incluye, por ejemplo, usar un campo de índice, un campo base y un campo de desplazamiento de la instrucción (1432).
Como un ejemplo particular, la instrucción es una instrucción de arquitectura única que comprende un código de operación que indica una operación de carga lógica y desplazamiento protegido, un campo de registro para especificar un registro para insertar un resultado basado en la determinación de que no se detectó un evento de almacenamiento protegido, y una pluralidad de campos para determinar la ubicación en memoria (1440).
Son posibles muchas variaciones.
La presente invención puede ser un sistema, un procedimiento y/o un producto de programa informático en cualquier nivel de detalle técnico posible de integración. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible por ordenador que tiene instrucciones de programa legibles por ordenador en el mismo para hacer que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede retener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero no se limita a, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento semiconductor o cualquier combinación adecuada de lo anterior. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete informático portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable y borrable (EPROM o memoria Flash), una memoria estática de acceso aleatorio (SRAM), una memoria de solo lectura en disco compacto (CD-ROM) portátil, un disco versátil digital (DVD), una tarjeta de memoria, un disquete, un dispositivo codificado de forma mecánica tal como tarjetas perforadas o estructuras en relieve en una ranura que tiene instrucciones grabadas en el mismo, y cualquier combinación adecuada de lo anterior. Un medio de almacenamiento legible por ordenador, como se usa en el presente documento, no debe interpretarse como señales transitorias per se, tales como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de ondas u otros medios de transmisión (por ejemplo, pulsos de luz que pasan a través de un cable de fibra óptica) o señales eléctricas transmitidas a través de un cable.
Las instrucciones de programa legible por ordenador descritas en el presente documento se pueden descargar a respectivos dispositivos informáticos/de procesamiento desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo por medio de una red, por ejemplo, Internet, una red de área local, una red de área amplia y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, encaminadores, cortafuegos, conmutadores, pasarelas y/o servidores perimetrales. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones de programa legibles por ordenador desde la red y reenvía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo informático/de procesamiento respectivo.
Las instrucciones de programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de arquitectura de conjunto de instrucciones (ISA), instrucciones máquina, instrucciones dependientes de máquina, microcódigo, instrucciones de firmware, datos de establecimiento de estado, datos de configuración para circuitos integrados, o bien código fuente o código de objetos escrito en cualquier combinación de uno o más lenguajes de programación, incluido un lenguaje de programación orientado a objetos tal como Smalltalk, C++ o similares, y lenguajes de programación procedimentales, tales como el lenguaje de programación "C" o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software autónomo, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto, o completamente en el ordenador o servidor remoto. En el último escenario, el ordenador remoto puede estar conectado al ordenador del usuario a través de cualquier tipo de red, incluida una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse con un ordenador externo (por ejemplo, a través de Internet usando un proveedor de servicios de Internet). En algunos modos de realización, los circuitos electrónicos que incluyen, por ejemplo, circuitos lógicos programables, matrices de puertas programables in situ (FPGA) o matrices lógicas programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador utilizando información de estado de las instrucciones de programa legibles por ordenador para personalizar los circuitos electrónicos, con el fin de realizar aspectos de la presente invención.
Aspectos de la presente invención se describen en el presente documento con referencia a ilustraciones de diagramas de flujo y/o diagramas de bloques de procedimientos, aparatos (sistemas) y productos de programa informático de acuerdo con modos de realización de la invención. Se entenderá que cada bloque de las ilustraciones de diagramas de flujo y/o diagramas de bloques, y las combinaciones de bloques en las ilustraciones de diagramas de flujo y/o diagramas de bloques, se pueden implementar mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador se pueden proporcionar a un procesador de un ordenador de propósito general, ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de modo que las instrucciones, que se ejecutan por medio del procesador del ordenador u otro aparato de procesamiento de datos programable, creen medios para implementar las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques. Estas instrucciones de programa legibles por ordenador también pueden almacenarse en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable y/u otros dispositivos para que funcionen de una manera particular, de modo que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acción especificada en el bloque o bloques del diagrama de flujo y/o diagrama de bloques.
Las instrucciones de programa legibles por ordenador también pueden cargarse en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para hacer que se realice una serie de etapas operativas en el ordenador, otros aparatos programables u otro dispositivo para producir un proceso implementado por ordenador de modo que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementen las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques.
Los diagramas de flujo y los diagramas de bloques de las figuras ilustran la arquitectura, la funcionalidad y el funcionamiento de posibles implementaciones de sistemas, procedimientos y productos de programa informático de acuerdo con diversos modos de realización de la presente invención. A este respecto, cada bloque de los diagramas de flujos o de los diagramas de bloques puede representar un módulo, segmento o parte de instrucciones, que comprende una o más instrucciones ejecutables para implementar la(s) función(es) lógica(s) especificada(s). En algunas implementaciones alternativas, las funciones indicadas en el bloque se pueden producir en un orden distinto al indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión, de hecho, se pueden ejecutar sustancialmente al mismo tiempo, o los bloques se pueden ejecutar a veces en el orden inverso, dependiendo de la funcionalidad involucrada. También se entenderá que cada bloque de la ilustración de los diagramas de bloques y/o los diagramas de flujo, y combinaciones de bloques de la ilustración de los diagramas de bloques y/o los diagramas de flujo, se pueden implementar mediante sistemas de propósito especial basados en hardware que realizan las funciones o acciones especificadas o llevan a cabo combinaciones de instrucciones de ordenador y de hardware de propósito especial.
Además de lo anterior, un proveedor de servicios que ofrece gestión de entornos de cliente puede proporcionar, ofrecer, implantar, gestionar, dar servicio a, etc., uno o más aspectos. Por ejemplo, el proveedor de servicios puede crear, mantener, dar soporte a, etc. código informático y/o una infraestructura informática que realiza uno o más aspectos para uno o más clientes. A cambio, el proveedor de servicios puede recibir el pago del cliente en virtud de una suscripción y/o acuerdo de tarifas, como ejemplos. De forma adicional o alternativa, el proveedor de servicios puede recibir el pago de la venta de contenido publicitario a uno o más terceros.
En un aspecto, se puede implantar una aplicación para realizar uno o más modos de realización. Como ejemplo, la implantación de una aplicación comprende proporcionar una infraestructura informática operativa para realizar uno o más modos de realización.
Como aspecto adicional, se puede implantar una infraestructura informática que comprenda la integración de código legible por ordenador en un sistema informático, en el que el código en combinación con el sistema informático es capaz de realizar uno o más modos de realización.
Como otro aspecto más, puede proporcionarse un proceso para integrar la infraestructura informática, que comprende la integración de código legible por ordenador en un sistema informático. El sistema informático comprende un medio legible por ordenador, en el que el medio informático comprende uno o más modos de realización. El código en combinación con el sistema informático es capaz de realizar uno o más modos de realización.
Aunque anteriormente se han descrito diversos modos de realización, estos son solo ejemplos. Por ejemplo, se pueden usar entornos informáticos de otras arquitecturas para incorporar y usar uno o más modos de realización. Además, se pueden usar diferentes instrucciones, formatos de instrucción, campos de instrucción y/o valores de instrucción. Son posibles muchas variaciones.
Además, otros tipos de entornos informáticos pueden beneficiarse y ser utilizados. Como un ejemplo, se puede utilizar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluye al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real del código del programa, almacenamiento masivo y memoria caché, que proporciona almacenamiento temporal de al menos parte del código de programa para reducir el número de veces que el código debe recuperarse del almacenamiento masivo durante la ejecución.
Dispositivos de entrada/salida o de E/S (incluidos, pero sin limitarse a, teclados, dispositivos de visualización, dispositivos señaladores, DASD, cintas, CD, DVD, unidades de memoria USB y otros medios de memoria, etc.) se pueden acoplar al sistema directamente o a través de controladores de E/S intervinientes. También se pueden acoplar adaptadores de red al sistema para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras o dispositivos de almacenamiento remotas a través de redes públicas o privadas intervinientes. Módems, módems de cable y tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
La terminología usada en el presente documento tiene como objetivo describir solamente modos de realización particulares y no pretende ser limitativa. Como se usa en el presente documento, las formas en singular "un", "una", "el" y "la" pretenden incluir también las formas en plural, a menos que el contexto indique claramente lo contrario. Debe entenderse además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de características, enteros, etapas, operaciones, elementos y/o componentes indicados, pero no excluyen la presencia o la adición de una o más otras características, enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, acciones y equivalentes correspondientes de todos los medios o elementos de etapa más función en las siguientes reivindicaciones, si los hubiera, están destinadas a incluir cualquier estructura, material o acción para realizar la función en combinación con otros elementos reivindicados como se reivindica específicamente. La descripción de uno o más modos de realización se ha presentado con fines de ilustración y descripción, pero no pretende ser exhaustiva ni limitarse a la forma divulgada. Muchas modificaciones y variaciones resultarán evidentes para los expertos en la técnica. El modo de realización se eligió y describió con el fin de explicar mejor diversos aspectos y la aplicación práctica, y para permitir que otros expertos en la técnica entiendan diversos modos de realización con diversas modificaciones que se adapten al uso particular contemplado.

Claims (13)

REIVINDICACIONES
1. Un producto de programa informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho producto de programa informático:
un medio de almacenamiento legible por ordenador que almacena instrucciones y legible por un circuito de procesamiento para:
obtener una instrucción de Carga Lógica y Desplazamiento Protegido 'LLSG' para realizar una operación de carga y desplazamiento; y
ejecutar la instrucción LLSG, comprendiendo la ejecución:
cargar datos desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción;
desplazar los datos en una cantidad de desplazamiento para obtener un valor desplazado;
obtener un resultado intermedio usando el valor desplazado; y
reconocer la aparición de un evento de almacenamiento protegido que comprende: usar el resultado intermedio para determinar si la instrucción designa una sección protegida de almacenamiento definida por un límite que indica un intervalo de direcciones que están protegidas, en el que en base a determinar que la instrucción designa la sección protegida de almacenamiento, el resultado intermedio no se carga en un registro especificado usando la instrucción LLSG; en cambio, se inserta en un registro de evento de almacenamiento protegido junto con los datos y la dirección de la instrucción LLSG que causa el evento de almacenamiento protegido.
2. El producto de programa informático de la reivindicación 1, en el que los datos comprenden un puntero.
3. El producto de programa informático de la reivindicación 1, en el que el desplazamiento comprende desplazar los datos a la izquierda en la cantidad de desplazamiento para obtener el valor desplazado.
4. El producto de programa informático de la reivindicación 1, en el que la cantidad de desplazamiento se obtiene de un registro usado para especificar uno o más atributos de un área de almacenamiento protegido.
5. El producto de programa informático de la reivindicación 1, en el que reconocer la aparición de un evento de almacenamiento protegido comprende:
comparar una primera parte del resultado intermedio con el origen de un área de almacenamiento protegido; determinar si una sección particular del área de almacenamiento protegido está protegida, donde la determinación usa una segunda parte del resultado intermedio; y
detectar un evento de almacenamiento protegido en base a que la comparación indica un resultado específico y la determinación indica que la sección particular está protegida.
6. El producto de programa informático de la reivindicación 1, en el que obtener el resultado intermedio incluye ajustar el valor desplazado en base a un modo de direccionamiento de un procesador que ejecuta la instrucción.
7. El producto de programa informático de la reivindicación 1, en el que el procedimiento comprende además determinar la ubicación en memoria, donde la determinación usa un campo de índice, un campo base y un campo de desplazamiento de la instrucción.
8. El producto de programa informático de la reivindicación 1, en el que la instrucción es una instrucción de arquitectura única que comprende un código de operación que indica una operación de carga lógica y desplazamiento protegido, un campo de registro para especificar un registro para insertar un resultado basado en la determinación de que no se detectó un evento de almacenamiento protegido, y una pluralidad de campos para determinar la ubicación en memoria.
9. Un procedimiento implementado por ordenador para facilitar el procesamiento en un entorno informático, comprendiendo dicho procedimiento implementado por ordenador:
obtener una instrucción de Carga Lógica y Desplazamiento Protegido 'LLSG' para realizar una operación de carga y desplazamiento; y
ejecutar la instrucción LLSG, comprendiendo la ejecución:
cargar datos desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción;
desplazar los datos en una cantidad de desplazamiento para obtener un valor desplazado;
obtener un resultado intermedio usando el valor desplazado; y
reconocer la aparición de un evento de almacenamiento protegido que comprende: usar el resultado intermedio para determinar si la instrucción designa una sección protegida de almacenamiento definida por un límite que indica un intervalo de direcciones que están protegidas, en el que en base a determinar que la instrucción designa la sección protegida de almacenamiento, el resultado intermedio no se carga en un registro especificado usando la instrucción LLSG; en cambio, se inserta en un registro de evento de almacenamiento protegido junto con los datos y la dirección de la instrucción LLSG que causa el evento de almacenamiento protegido.
10. El procedimiento implementado por ordenador de la reivindicación 9, en el que reconocer la aparición de un evento de almacenamiento protegido comprende:
comparar una primera parte del resultado intermedio con el origen de un área de almacenamiento protegido; determinar si una sección particular del área de almacenamiento protegido está protegida, donde la determinación usa una segunda parte del resultado intermedio; y
detectar un evento de almacenamiento protegido en base a que la comparación indica un resultado específico y la determinación indica que la sección particular está protegida.
11. El procedimiento implementado por ordenador de la reivindicación 9, en el que obtener el resultado intermedio incluye ajustar el valor desplazado en base a un modo de direccionamiento de un procesador que ejecuta la instrucción LLSG.
12. El procedimiento implementado por ordenador de la reivindicación 9, en el que la instrucción LLSG es una instrucción de arquitectura única que comprende un código de operación que indica una operación de carga lógica y desplazamiento protegido, un campo de registro para especificar un registro para insertar un resultado basado en la determinación de que no se detectó un evento de almacenamiento protegido, y una pluralidad de campos para determinar la ubicación en memoria.
13. Un sistema informático para facilitar el procesamiento en un entorno informático, comprendiendo dicho sistema informático:
una memoria; y
un procesador en comunicación con la memoria, en el que el procesador incluye una pluralidad de componentes funcionales para:
obtener una instrucción de Carga Lógica y Desplazamiento Protegido 'LLSG' para realizar una operación de carga y desplazamiento; y
ejecutar la instrucción LLSG, comprendiendo la ejecución:
cargar datos desde una ubicación en memoria, estando la ubicación en memoria designada por uno o más campos asociados a la instrucción;
desplazar los datos en una cantidad de desplazamiento para obtener un valor desplazado;
obtener un resultado intermedio usando el valor desplazado; y
reconocer la aparición de un evento de almacenamiento protegido que comprende: usar el resultado intermedio para determinar si la instrucción designa una sección protegida de almacenamiento definida por un límite que indica un intervalo de direcciones que están protegidas, en el que en base a determinar que la instrucción designa la sección protegida de almacenamiento, el resultado intermedio no se carga en un registro especificado usando la instrucción LLSG; en cambio, se inserta en un registro de evento de almacenamiento protegido junto con los datos y la dirección de la instrucción LLSG que causa el evento de almacenamiento protegido.
ES18700180T 2017-01-19 2018-01-03 Instrucción de carga lógica y desplazamiento protegido Active ES2893925T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/409,684 US10725685B2 (en) 2017-01-19 2017-01-19 Load logical and shift guarded instruction
PCT/EP2018/050137 WO2018134049A1 (en) 2017-01-19 2018-01-03 Load logical and shift guarded instruction

Publications (1)

Publication Number Publication Date
ES2893925T3 true ES2893925T3 (es) 2022-02-10

Family

ID=60953861

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18700180T Active ES2893925T3 (es) 2017-01-19 2018-01-03 Instrucción de carga lógica y desplazamiento protegido

Country Status (18)

Country Link
US (1) US10725685B2 (es)
EP (1) EP3571580B1 (es)
JP (1) JP6909298B2 (es)
KR (1) KR102296994B1 (es)
CN (1) CN110199259B (es)
AU (1) AU2018209038B2 (es)
DK (1) DK3571580T5 (es)
ES (1) ES2893925T3 (es)
HU (1) HUE056632T2 (es)
IL (1) IL267180B (es)
LT (1) LT3571580T (es)
PL (1) PL3571580T3 (es)
PT (1) PT3571580T (es)
RU (1) RU2731327C1 (es)
SI (1) SI3571580T1 (es)
TW (1) TWI701551B (es)
WO (1) WO2018134049A1 (es)
ZA (1) ZA201905099B (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10282129B1 (en) * 2017-10-24 2019-05-07 Bottomline Technologies (De), Inc. Tenant aware, variable length, deduplication of stored data
EP3871083A4 (en) * 2019-04-15 2022-06-22 Hewlett-Packard Development Company, L.P. CONFIGURATION DEVICE

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3430202A (en) * 1964-10-07 1969-02-25 Bell Telephone Labor Inc Data processor utilizing combined order instructions
NL134954C (es) 1964-10-07
JPS6393055A (ja) * 1986-10-07 1988-04-23 Fujitsu Ltd 実時間型ガ−ベジコレクシヨン支援装置
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
US7447069B1 (en) 1989-04-13 2008-11-04 Sandisk Corporation Flash EEprom system
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5644752A (en) 1994-06-29 1997-07-01 Exponential Technology, Inc. Combined store queue for a master-slave cache system
US6317872B1 (en) 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
DE19836347C2 (de) 1998-08-11 2001-11-15 Ericsson Telefon Ab L M Fehlertolerantes Computersystem
US20040158695A1 (en) 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
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
US7043505B1 (en) 2003-01-28 2006-05-09 Unisys Corporation Method variation for collecting stability data from proprietary systems
US7330981B2 (en) 2004-04-23 2008-02-12 Microsoft Corporation File locker and mechanisms for providing and using same
US7240176B2 (en) 2004-05-01 2007-07-03 Intel Corporation Apparatus and methods for placing a managed heap
US7212440B2 (en) 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
US8452938B1 (en) 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7555506B2 (en) 2005-04-05 2009-06-30 Microsoft Corporation Partial deserialization of complex type objects
US20070005935A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Method and apparatus for securing and validating paged memory system
US20070011441A1 (en) 2005-07-08 2007-01-11 International Business Machines Corporation Method and system for data-driven runtime alignment operation
US7395407B2 (en) 2005-10-14 2008-07-01 International Business Machines Corporation Mechanisms and methods for using data access patterns
US8099726B2 (en) 2005-12-07 2012-01-17 Microsoft Corporation Implementing strong atomicity in software transactional memory
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
EP2115593B1 (en) 2007-01-26 2018-10-24 Intel Corporation Hierarchical immutable content-addressable memory processor
US8364910B2 (en) 2007-03-08 2013-01-29 Daniel Shawcross Wilkerson Hard object: hardware protection for software objects
US9095802B2 (en) 2007-05-10 2015-08-04 The Baker Company Biosafety cabinets with air filters accessible through the work chamber
US8078827B2 (en) 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8327084B2 (en) 2007-08-30 2012-12-04 International Business Machines Corporation Method and apparatus to trigger synchronization and validation actions upon memory access
US20090113111A1 (en) 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
KR20100101586A (ko) * 2007-12-05 2010-09-17 샌드브리지 테크놀로지스, 인코포레이티드 데이터 처리에 있어서 레지스터 시프트 및 회전을 포함하는 방법 및 명령어 세트
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
US8407455B2 (en) 2008-07-28 2013-03-26 Advanced Micro Devices, Inc. Coexistence of advanced hardware synchronization and global locks
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
CN101661796B (zh) * 2008-08-25 2012-02-29 北京兆易创新科技有限公司 一种非易失性存储器及其数据保护方法
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
KR20110102734A (ko) 2010-03-11 2011-09-19 삼성전자주식회사 오티피 록 비트 레지스터를 구비한 불휘발성 반도체 메모리 장치
TWI519955B (zh) 2010-03-29 2016-02-01 威盛電子股份有限公司 預取單元、資料預取方法以及電腦程式產品
CN102236609B (zh) * 2010-04-29 2015-09-30 深圳市朗科科技股份有限公司 存储设备及其访问方法
GB2482710A (en) 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking
WO2012053284A1 (ja) 2010-10-20 2012-04-26 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクトへのアクセスを検出する方法、並びにそのコンピュータ及びコンピュータ・プログラム
KR101724590B1 (ko) 2011-01-31 2017-04-11 삼성전자주식회사 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
EP2549376B1 (en) * 2011-07-22 2019-03-13 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for branch prediction.
JP2013033412A (ja) 2011-08-03 2013-02-14 Internatl Business Mach Corp <Ibm> メモリ管理方法、プログラム及びシステム
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
WO2013095575A1 (en) 2011-12-22 2013-06-27 Intel Corporation Broadcast operation on mask register
US20130326519A1 (en) 2011-12-30 2013-12-05 Andrew V. Anderson Virtual machine control structure shadowing
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US8583920B1 (en) 2012-04-25 2013-11-12 Citrix Systems, Inc. Secure administration of virtual machines
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US20130339656A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Compare and Replace DAT Table Entry
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9424896B2 (en) 2012-06-22 2016-08-23 Nxp B.V. Method and system for fast initialization of a memory unit
TWI609263B (zh) 2013-08-16 2017-12-21 司固科技公司 可變大小快閃轉變層
CN104468150A (zh) 2013-09-12 2015-03-25 阿里巴巴集团控股有限公司 一种虚拟主机实现故障迁移的方法及虚拟主机业务装置
US9329890B2 (en) 2013-09-26 2016-05-03 Globalfoundries Inc. Managing high-coherence-miss cache lines in multi-processor computing environments
US20150113240A1 (en) 2013-10-17 2015-04-23 International Business Machines Corporation Restricting access to sensitive data in system memory dumps
US9384148B2 (en) 2013-12-17 2016-07-05 Intel Corporation Detection of unauthorized memory modification and access using transactional memory
US20150178078A1 (en) 2013-12-21 2015-06-25 H. Peter Anvin Instructions and logic to provide base register swap status verification functionality
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US20150278123A1 (en) 2014-03-28 2015-10-01 Alex Nayshtut Low-overhead detection of unauthorized memory modification using transactional memory
US9483295B2 (en) 2014-03-31 2016-11-01 International Business Machines Corporation Transparent dynamic code optimization
CN105993005B (zh) 2014-07-21 2019-06-04 上海兆芯集成电路有限公司 具有地址转译快取的处理器及其操作方法
US9749448B2 (en) 2014-11-25 2017-08-29 Intel Corporation Header parity error handling
US20160299712A1 (en) 2015-04-07 2016-10-13 Microsoft Technology Licensing, Llc Virtual Machines Backed by Host Virtual Memory
US9665373B2 (en) 2015-06-26 2017-05-30 Intel Corporation Protecting confidential data with transactional processing in execute-only memory
US9734053B2 (en) * 2015-06-30 2017-08-15 International Business Machines Corporation Garbage collection handler to update object pointers
US9734052B2 (en) 2015-06-30 2017-08-15 International Business Machines Corporation Multi-section garbage collection
US10176093B2 (en) 2015-06-30 2019-01-08 International Business Machines Corporation Pauseless location and object handle based garbage collection
US10083113B2 (en) 2015-07-27 2018-09-25 International Business Machines Corporation Scheme for determining data object usage in a memory region
US10223257B2 (en) 2015-07-27 2019-03-05 International Business Machines Corporation Multi-section garbage collection
US9747204B2 (en) 2015-12-17 2017-08-29 International Business Machines Corporation Multi-section garbage collection system including shared performance monitor register
US9747203B2 (en) 2015-12-18 2017-08-29 International Business Machines Corporation Multi-section garbage collection system including multi-use source register
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment

Also Published As

Publication number Publication date
PL3571580T3 (pl) 2021-12-27
ZA201905099B (en) 2022-04-28
JP2020505684A (ja) 2020-02-20
KR102296994B1 (ko) 2021-09-01
LT3571580T (lt) 2021-10-25
CN110199259B (zh) 2023-04-25
TWI701551B (zh) 2020-08-11
AU2018209038A1 (en) 2019-06-13
IL267180B (en) 2021-09-30
IL267180A (en) 2019-08-29
DK3571580T3 (da) 2021-10-18
RU2731327C1 (ru) 2020-09-01
CN110199259A (zh) 2019-09-03
JP6909298B2 (ja) 2021-07-28
TW201832083A (zh) 2018-09-01
US20180203634A1 (en) 2018-07-19
PT3571580T (pt) 2021-10-04
WO2018134049A1 (en) 2018-07-26
AU2018209038B2 (en) 2020-10-08
HUE056632T2 (hu) 2022-02-28
SI3571580T1 (sl) 2021-11-30
US10725685B2 (en) 2020-07-28
EP3571580B1 (en) 2021-09-15
DK3571580T5 (da) 2021-11-08
EP3571580A1 (en) 2019-11-27
KR20190102283A (ko) 2019-09-03

Similar Documents

Publication Publication Date Title
ES2893925T3 (es) Instrucción de carga lógica y desplazamiento protegido
US10929130B2 (en) Guarded storage event handling during transactional execution
CN110192187B (zh) 受保护存储事件处理的运行时插桩
US11010066B2 (en) Identifying processor attributes based on detecting a guarded storage event
CN110235109B (zh) 在虚拟环境中存储/重新存储受保护存储控制
CN110199266B (zh) 用于促进计算环境中的处理的方法和系统