ES2929826T3 - Instrucción de clasificación y fusión para un procesador de propósito general - Google Patents
Instrucción de clasificación y fusión para un procesador de propósito general Download PDFInfo
- Publication number
- ES2929826T3 ES2929826T3 ES19798279T ES19798279T ES2929826T3 ES 2929826 T3 ES2929826 T3 ES 2929826T3 ES 19798279 T ES19798279 T ES 19798279T ES 19798279 T ES19798279 T ES 19798279T ES 2929826 T3 ES2929826 T3 ES 2929826T3
- Authority
- ES
- Spain
- Prior art keywords
- instruction
- lists
- input
- list
- record
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2443—Stored procedures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Se proporciona una instrucción de clasificación de listas para realizar una operación de clasificación y/o combinación. La instrucción es una instrucción de máquina con arquitectura de una arquitectura de conjunto de instrucciones y es ejecutada por un procesador de propósito general del entorno informático. La ejecución incluye ordenar una pluralidad de listas de entrada para obtener una o más listas de salida ordenadas, que son salida. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Instrucción de clasificación y fusión para un procesador de propósito general
ANTECEDENTES
En general, uno o más aspectos se refieren a facilitar un procesamiento en un entorno informático y, en particular, a facilitar un procesamiento de clasificación y fusión.
Un aspecto del procesamiento informático en el que se emplea el procesamiento de clasificación y fusión se encuentra en un procesamiento de la base de datos. La base de datos es una recolección de datos organizada, normalmente particionada en registros de datos. Clasificar y fusionar recolecciones de registros de datos constituyen operaciones de base de datos habituales realizadas por aplicaciones de software. Cuando dichas aplicaciones se pretenden ejecutar en un procesador de propósito general, es responsabilidad de la aplicación generar la secuencia de muchas instrucciones primitivas usadas para realizar la operación de base de datos deseada.
Para optimizar el rendimiento, una aplicación también puede intentar optimizar la secuencia de instrucciones primitivas para cada modelo de procesador en el que la aplicación puede ejecutarse, con lo cual se exacerba la complejidad de la aplicación. El documento US 4890220 divulga una instrucción de clasificación por fusión, que produce un vector clasificado a partir de dos vectores preclasificados más cortos. El documento US 4 779 192 también divulga una instrucción de clasificación por fusión, que produce un vector clasificado a partir de dos vectores preclasificados más cortos. El documento US 2018/004520 divulga un procedimiento para clasificar elementos que también transforma una posición de elementos en el conjunto de entrada en una posición de los mismos elementos en el conjunto de salida (clasificados). El documento US 2017/185415 divulga conceptos para clasificar elementos de datos dentro de un registro y correlaciona la posición original de un elemento de datos en el registro con una posición resultante dentro del registro. El documento US 2017/212727 divulga un procedimiento para fusionar dos vectores clasificados.
SUMARIO
Los defectos de la técnica anterior están superados, y otras ventajas se proporcionan mediante la provisión de un producto de programa informático para facilitar un procesamiento en un entorno informático. El producto de programa informático se proporciona según la reivindicación 1.
Al usar una única instrucción diseñada para realizar una operación de clasificación (y/o fusión) mediante un recurso de clasificación mejorada de un procesador de propósito general, un subconjunto significativo de instrucciones de software primitivas para realizar dichas operaciones se reemplaza por la única instrucción diseñada. El reemplazo de dichas instrucciones primitivas con una única instrucción diseñada reduce la complejidad del programa y elimina la necesidad de incluir un código para optimizar las instrucciones primitivas. Además, se mejora el rendimiento general.
En un ejemplo, la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación y un campo que debe usarse para designar una ubicación, la una ubicación que debe usarse en el almacenamiento de la una o más listas de salida clasificadas. En un ejemplo adicional, la instrucción incluye otro campo que debe usarse para designar otra ubicación, la otra ubicación para almacenar una o más delineaciones de la lista de salida.
Como ejemplo, el un campo es un campo de registro, designando el campo de registro un registro, incluyendo el registro una dirección de la una ubicación, y el otro campo es otro campo de registro, designando el otro campo de registro otro registro, incluyendo el otro registro una dirección de la otra ubicación.
En un ejemplo, la instrucción emplea un registro implícito para determinar una función que debe realizar la instrucción. La función se selecciona de un grupo de funciones que consisten en una función de registros de longitud fija de clasificación y una función de registros de longitud variable de clasificación.
Como un ejemplo adicional, la instrucción emplea otro registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción. El bloque de parámetros incluye información usada por la instrucción según la función para realizar. En un ejemplo, la función para realizar es una función de registros de longitud fija de clasificación o una función de registros de longitud variable de clasificación, y el bloque de parámetros incluye información para ubicar la pluralidad de listas de entrada e información para continuar la clasificación, sobre la base de que se interrumpe la clasificación.
Como un ejemplo en particular, la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación; un campo de primer registro que incluye una designación de un primer registro, incluyendo el primer registro una dirección usada en el almacenamiento de la una o más listas de salida clasificadas; y un campo de segundo registro que incluye una designación de un segundo registro, incluyendo el segundo registro una dirección usada en el almacenamiento de una o más delineaciones de la
lista de salida. La instrucción emplea un primer registro implícito para determinar una función que debe realizar la instrucción y un segundo registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción.
Los procedimientos y los sistemas implementados por ordenador que se refieren a uno o más aspectos también se describen y reivindican en el presente documento. Además, los servicios que se refieren a uno o más aspectos también se describen y pueden reivindicarse en el presente documento.
Otras características y ventajas se obtienen mediante las técnicas descritas en el presente documento. Otras formas de realización y aspectos se describen en detalle en el presente documento y se consideran una parte de los aspectos reivindicados.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Uno o más aspectos se señalan en particular y se reivindican con claridad como ejemplos en las reivindicaciones en la conclusión de la memoria descriptiva. Lo anterior y los objetos, las características y las ventajas de uno o más aspectos se desprenden de la siguiente descripción detallada tomada junto con los dibujos adjuntos en los que:
la FIG. 1A representa un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 1B representa detalles adicionales de un procesador de la FIG. 1A, de acuerdo con uno o más aspectos de la presente invención;
la FIG. 2 representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención; la FIG. 3A representa un formato de una instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3B representa un ejemplo de campos de un registro implícito, registro general 0, usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3C representa un ejemplo de códigos de función para la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3D representa un ejemplo de un campo de un registro implícito, registro general 1, usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3E representa un ejemplo de contenidos de un registro, R1, especificado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3F representa un ejemplo de contenidos de un registro, R1 1, usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3G representa un ejemplo de contenidos de un registro, R2, especificado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3H representa un ejemplo de contenidos de un registro, R2+1, usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3I representa un ejemplo de contenidos de un bloque de parámetros usado por la función de SORTL-QAF de la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3J representa un ejemplo de un formato de registro de longitud fija usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
la FIG. 3K representa un ejemplo de contenidos de un bloque de parámetros usado por la función de SORTL-SFLR de la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
las FIG. 4A-4B representan ejemplos de SORTL-SFLR, de acuerdo con uno o más aspectos de la presente invención; la FIG. 5A representa un ejemplo de un resumen de valores para entradas a la función de SORTL-SFLR, de acuerdo con un aspecto de la presente invención;
la FIG. 5B representa un ejemplo de restricciones para modificaciones a los campos de dirección y longitud de la lista de entrada para la función de SORTL-SFLR, de acuerdo con un aspecto de la presente invención;
la FIG. 6B representa un ejemplo de una ubicación del primer operando / un primer operando antes de ejecutar la SORTL con una indicación de modo de fusión establecida en cero, de acuerdo con un aspecto de la presente invención;
la FIG. 6B representa un ejemplo de una ubicación del primer operando / un primer operando después de ejecutar la SORTL con una indicación de modo de fusión establecida en cero, de acuerdo con un aspecto de la presente invención;
la FIG. 6C representa un ejemplo de una ubicación del segundo operando / un segundo operando antes de ejecutar la SORTL con una indicación de modo de fusión establecida en cero, de acuerdo con un aspecto de la presente invención;
la FIG. 6D representa un ejemplo de una ubicación del segundo operando / un segundo operando después de ejecutar la SORTL con una indicación de modo de fusión establecida en cero, de acuerdo con un aspecto de la presente invención;
la FIG. 7A representa un ejemplo de una ubicación del primer operando / un primer operando antes de ejecutar la SORTL con una indicación de modo de fusión establecida en uno, de acuerdo con un aspecto de la presente invención;
la FIG. 7B representa un ejemplo de una ubicación del primer operando / un primer operando después de ejecutar la SORTL con una indicación de modo de fusión establecida en uno, de acuerdo con un aspecto de la presente invención; la FIG. 8 representa un ejemplo de ciertos campos de un bloque de parámetros usados de acuerdo con un aspecto de la presente invención;
la FIG. 9 representa un ejemplo de un formato de registro de longitud variable usado por la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
las FIG. 10A-10B representan un ejemplo de procesamiento relacionado con la instrucción de listas de clasificación, de acuerdo con un aspecto de la presente invención;
las FIG. 11A-11B representan un ejemplo de facilitar un procesamiento en un entorno informático, de acuerdo con un aspecto de la presente invención;
la FIG. 12A representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
la FIG. 12B representa detalles adicionales de la memoria de la FIG. 12A;
la FIG. 13 representa una forma de realización de un entorno informático en la nube; y
la FIG. 14 representa un ejemplo de capas de modelo de abstracción.
DESCRIPCIÓN DETALLADA
De conformidad con un aspecto de la presente invención, se proporciona una capacidad para facilitar un procesamiento en un entorno informático. Como un ejemplo, se proporciona una instrucción única (p. ej., una única instrucción diseñada de máquina hardware en la interfaz hardware/software) para realizar una operación, como clasificar y/o fusionar registros de datos. La instrucción se ejecuta, por ejemplo, en un procesador de propósito general. Al usar una instrucción única para clasificar y/o fusionar registros de datos de, por ejemplo, una base de datos, se reduce el tiempo de ejecución en un procesador, como un procesador de propósito general, y se reduce una cantidad de memoria utilizada en la clasificación y/o fusión.
Una forma de realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se describe en referencia a la FIG. 1A. Un entorno informático 100 incluye, por ejemplo, un procesador 102 (p. ej., una unidad de procesamiento central), una memoria 104 (p. ej., memoria principal; también conocida como memoria del sistema, almacenamiento principal, almacenamiento central, almacenamiento) y uno o más dispositivos y/o interfaces de entrada/salida (E/S) 106 acoplados entre sí mediante, por ejemplo, uno o más buses 108 y/u otras conexiones.
En un ejemplo, el procesador 102 se basa en la arquitectura de hardware z/Architecture® ofrecida por International Business Machines Corporation, Armonk, Nueva York, y forma parte de un servidor, como un servidor IBM Z®, que también es ofrecido por International Business Machines Corporation e implementa la arquitectura de hardware z/Architecture. Una forma de realización de la arquitectura de hardware z/Architecture se describe en una publicación titulada «z/Architecture Principles of Operation», publicación de IBM n.° SA22-7832-11, 12.a edición, septiembre. No obstante, la arquitectura de hardware z/Architecture es solo una arquitectura de ejemplo; otras arquitecturas y/u otros tipos de entornos informáticos pueden incluir y/o usar uno o más aspectos de la presente invención. En un ejemplo, el procesador ejecuta un sistema operativo, como el sistema operativo z/OS®, también ofrecido por International Business Machines Corporation.
El procesador 102 incluye una pluralidad de componentes funcionales usados para ejecutar instrucciones. Como se representa en la FIG. 1B, estos componentes funcionales incluyen, por ejemplo, un componente de búsqueda de instrucciones 120 para buscar instrucciones para ejecutar; una unidad de decodificación de instrucciones 122 para decodificar las instrucciones buscadas y para obtener operandos de las instrucciones decodificadas; un componente de ejecución de instrucciones 124 para ejecutar las instrucciones decodificadas; un componente de acceso a la memoria 126 para acceder a la memoria para ejecutar instrucciones, si es necesario; y un componente de escritura diferida 130 para proporcionar los resultado de las instrucciones ejecutadas. Uno o más de estos componentes puede, en conformidad con uno o más aspectos de la presente invención, incluir al menos una parte de o tener acceso a uno o más de otros componentes que proporcionan un procesamiento de clasificación/fusión (u otro procesamiento que puede usar uno o más aspectos de la presente invención). El uno o más de otros componentes incluyen, por ejemplo, un componente de clasificación/fusión (u otro componente) 136. La funcionalidad proporcionada por el componente 136 se describe en mayor detalle a continuación.
Otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se describe en referencia a la FIG. 2. En un ejemplo, el entorno informático se basa en la arquitectura de hardware z/Architecture; no obstante, el entorno informático puede basarse en otras arquitecturas ofrecidas por International Business Machines Corporation u otros.
En referencia a la FIG. 2, en un ejemplo, el entorno informático incluye un complejo de electrónica central (CEC) 200. El CEC 200 incluye una pluralidad de componentes, como, por ejemplo, una memoria 202 (también conocida como memoria del sistema, memoria principal, almacenamiento principal, almacenamiento central, almacenamiento) acoplada a uno o más procesadores (también conocidos como unidades de procesamiento central (CPU)) 204 y a un subsistema de entrada/salida 206.
La memoria 202 incluye, por ejemplo, una o más particiones 208, un hipervisor 210 que gestiona las particiones lógicas y un firmware de procesador 212. Un ejemplo de hipervisor 210 es el hipervisor de gestor de sistemas / recursos de procesador (PR/SM™), ofrecido por International Business Machines Corporation, Armonk, Nueva York. Como se usa en el presente documento, el firmware incluye, p. ej., el microcódigo del procesador. Incluye, por ejemplo, las instrucciones a nivel de hardware y/o las estructuras de datos usadas en la implementación de un código de máquina de nivel superior. En una forma de realización, incluye, por ejemplo, un código propietario que normalmente se entrega como microcódigo que incluye un software o microcódigo de confianza específico para el hardware subyacente y controla el acceso del sistema operativo al hardware del sistema.
Cada partición lógica 208 puede funcionar como un sistema independiente. Es decir, cada partición lógica puede reiniciarse independientemente, ejecutar un sistema operativo de invitado 220, como un sistema operativo z/OS, u otro sistema operativo, y operar con diferentes programas 222. Un sistema operativo o programa de aplicación que se ejecuta en una partición lógica parece tener acceso a un sistema total, pero en realidad, solo una parte de él está disponible.
La memoria 202 está acoplada a procesadores (p. ej., CPU) 204, que son recursos de procesador físicos que pueden asignarse a las particiones lógicas. Por ejemplo, una partición lógica 208 incluye uno o más procesadores lógicos, cada uno de los cuales representa la totalidad o una parte de un recurso de procesador físico 204 que puede asignarse dinámicamente a la partición lógica.
Además, la memoria 202 está acoplada al subsistema de E/S 206. El subsistema de E/S 206 puede formar parte del complejo de electrónica central o estar separado del mismo. Dirige el flujo de información entre el almacenamiento principal 202 y las unidades de control de entrada/salida 230 y los dispositivos de entrada/salida (E/S) 240 acoplados al complejo de electrónica central.
Pueden usarse muchos tipos de dispositivos de E/S. Un tipo en particular es un dispositivo de almacenamiento de datos 250. El dispositivo de almacenamiento de datos 250 puede almacenar uno o más programas 252, una o más instrucciones de programa legibles por ordenador 254 y/o datos, etc. Las instrucciones de programa legibles por ordenador pueden configurarse para llevar a cabo funciones de formas de realización de aspectos de la invención.
En un ejemplo, el procesador 204 incluye un componente de clasificación/fusión (u otro componente) 260 para realizar una o más de clasificación y/o fusión (u otras operaciones que pueden usar uno o más aspectos de la presente invención). En diversos ejemplos, puede haber uno o más componentes que realizan estas tareas. Muchas variaciones son posibles.
El complejo de electrónica central 200 puede incluir y/o estar acoplado a medios de almacenamiento del sistema informático extraíbles / no extraíbles, volátiles / no volátiles. Por ejemplo, puede incluir y/o estar acoplado a medios magnéticos no extraíbles y no volátiles (normalmente llamados una «unidad de disco duro»), una unidad de disco magnético para leer de y escribir en un disco magnético extraíble y no volátil (p. ej., un «disco flexible») y/o una unidad de disco óptico para leer de o escribir en un disco óptico extraíble y no volátil, como un CD-ROM, un DVD-ROM u otros medios ópticos. Debe entenderse que otros componentes de hardware y/o software podrían usarse junto con el complejo de electrónica central 200. Los ejemplos incluyen, entre otros: microcódigo, controladores de dispositivos, unidades de procesamiento redundantes, matrices de unidades de disco externas, sistemas RAID, unidades de cinta y sistemas de almacenamiento de archivo de datos, etc.
Además, el complejo de electrónica central 200 puede ser operativo con numerosos otros sistemas, entornos o configuraciones informáticos de propósito general o de propósito especial. Los ejemplos de sistemas, entornos y/o configuraciones informáticos bien conocidos que pueden ser adecuados para usar con el complejo de electrónica central 200 incluyen, entre otros, sistemas de ordenadores personales (PC), sistemas informáticos de servidor, clientes ligeros, clientes pesados, dispositivos de mano o portátiles, sistemas de multiprocesador, sistemas basados en microprocesadores, decodificadores, electrónica de consumo programable, PC de red, sistemas de miniordenadores, sistemas de ordenador central y entornos informáticos distribuidos en la nube que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares.
Si bien diversos ejemplos de entornos informáticos se describen en el presente documento, uno o más aspectos de la presente invención pueden usarse con muchos tipos de entornos. Los entornos informáticos proporcionados en el presente documento constituyen solo ejemplos.
De conformidad con un aspecto de la presente invención, un procesador, como el procesador 102 o 204, emplea un recurso de clasificación mejorada que proporciona un mecanismo para clasificar varias listas de datos de entrada no clasificados en una o más listas de datos de salida clasificados. En un ejemplo, el recurso de clasificación mejorada se instala en el sistema cuando un indicador de recurso se establece, p. ej., en uno. Como un ejemplo en particular de la arquitectura de hardware z/Architecture, el bit de recurso 150 se establece, p. ej., en uno, cuando el recurso de clasificación mejorada se instala en el modo arquitectónico de z/Architecture. El recurso también proporciona, en una
forma de realización, un mecanismo para fusionar varias listas de datos de entrada clasificados en una única lista de datos de salida clasificados. El recurso incluye, por ejemplo, una instrucción de listas de clasificación, cuya forma de realización se describe a continuación.
Una forma de realización de detalles referidos a una instrucción de listas de clasificación se describe en referencia a las FIG. 3A-3K. Esta instrucción se ejecuta, en un ejemplo, en un procesador de propósito general (p. ej., el procesador 102 o 204). En la descripción en el presente documento, se indican ubicaciones específicas, campos específicos y/o tamaños específicos de los campos (p. ej., bytes y/o bits específicos). No obstante, pueden proporcionarse otras ubicaciones, campos y/o tamaños. Además, si bien se especifica el establecimiento de un bit en un valor en particular, p. ej., uno o cero, esto constituye solo un ejemplo. El bit puede establecerse en un valor diferente, como el valor opuesto o en otro valor, en otros ejemplos. Muchas variaciones son posibles.
En referencia a la FIG. 3A, en un ejemplo, un formato de una instrucción de listas de clasificación (SORTL) 300 es un formato RRE que denota un registro y una operación de registro con un código de operación extendido (opcode). Como ejemplo, la instrucción incluye un campo de código de operación 302 (p. ej., bits 0-15) que tiene un código de operación que indica una operación de clasificación y/o fusión, un campo de primer registro (Ri) 304 (p. ej., bits 24-27) que designa un primer par de registros generales y un campo de segundo registro (R2 ) 306 (p. ej., bits 28-31) que designa un segundo par de registros generales. Los contenidos de un registro designados por el campo R1 304 especifican una ubicación del primer operando (en almacenamiento), y los contenidos de un registro designados por el campo R2 306 especifican una ubicación del segundo operando (en almacenamiento). Los contenidos de R1+ 1 especifican la longitud del primer operando, y los contenidos de R2 + 1 especifican la longitud del segundo operando. En un ejemplo, los bits 16-23 de la instrucción están reservados y deberían contener ceros; de lo contrario, el programa puede no funcionar de manera compatible en el futuro. Como se usa en el presente documento, el programa es el único que emite la instrucción de listas de clasificación. Puede ser un programa de usuario, un sistema operativo u otro tipo de programa.
En una forma de realización, la ejecución de la instrucción incluye el uso de uno o más registros implícitos generales (es decir, registros no designados explícitamente por la instrucción). Por ejemplo, los registros generales 0 y 1 se usan en la ejecución de la instrucción de listas de clasificación, como se describe en el presente documento. El registro general 0 se usa, en un ejemplo, para especificar si la fusión debe realizarse y para especificar una función de clasificación que debe realizar la instrucción, y el registro general 1 se usa para proporcionar una ubicación de un bloque de parámetros usados por la instrucción. En otro ejemplo, el registro general 0 no se usa para especificar si la fusión debe realizarse; en cambio, la fusión se establece / no se establece mediante la máquina (p. ej., procesador) y no es cambiable por un indicador de modo. Otras variaciones son posibles.
Como ejemplo, en referencia a la FIG. 3B, un registro general 0 (308) incluye un campo de modo de fusión 310 (descrito a continuación) y un campo de código de función 312. En un ejemplo en particular, las posiciones de bits 57 63 del registro general 0 contienen un código de función; pero en otras formas de realización, pueden usarse otros bits para contener el código de función. Cuando los bits 57-63 del registro general 0 designan un código de función no asignado o no instalado, se reconoce una excepción de especificación, en un ejemplo.
Los ejemplos de códigos de función asignados para la instrucción de listas de clasificación se muestran en la FIG. 3C e incluyen, por ejemplo: código de función 0 (313) que indica una función de SORTL-QAF (funciones de consulta disponibles); código de función 1 (315) que indica una función de SORTL-SFLR (registros de longitud fija de clasificación); y un código de función 2 (317) que indica una función de SORTL-SVLR (registros de longitud variable de clasificación). Cada código usa un bloque de parámetros, y el tamaño del bloque de parámetros depende, en un ejemplo, de la función. Por ejemplo, para la función de SORTL-QAF, el bloque de parámetros es de 32 bytes; y para SORTL-SFLR y SORTLSVLR, el bloque de parámetros es 576 16 x Nis, en el que Nis es un número de listas de entrada, según lo especificado por el tamaño de la interfaz. Otros códigos de función no están asignados en este ejemplo. Si bien se describen funciones y códigos de funciones de ejemplo, pueden usarse otras funciones y de códigos de funciones.
Como se indicó previamente, el registro general 0 también incluye un campo de modo de fusión 310. En un ejemplo, el bit 56 del registro general 0 especifica un modo de operación (modo de fusión) que aplica, por ejemplo, a las funciones de SORTL-SFLR y SORLT-SVLR. El bit 56 del registro general 0 se ignora, en un ejemplo, cuando la función especificada es SORTL-QAF. Además, en un ejemplo, se ignoran las posiciones de bits 0-55 del registro general 0.
Detalles adicionales respecto de otro registro implícito, registro general 1, usado por la instrucción de listas de clasificación, se describen en referencia a la FIG. 3D. Los contenidos del registro general 1 (314) especifican, por ejemplo, una dirección lógica 316 del byte más a la izquierda de un bloque de parámetros en almacenamiento. El bloque de parámetros debe designarse en un límite de palabra doble, en un ejemplo; de lo contrario, se reconoce una excepción de especificación. Detalles adicionales respecto del bloque de parámetros se describen más abajo.
Para las funciones especificadas (p. ej., SORTL-QAF, SORTL-SFLR, SORTL-SVLR), los contenidos de los registros generales 0 y 1 no se modifican. Además, en un ejemplo, el campo R1 304 designa un par par-impar de registros
generales. Debe designarse un registro de numeración par y no debe designarse un registro general 0; de lo contrario, se reconoce una excepción de especificación. Cuando la función especificada es SORTL-SFLR o SORTL-SVLR, como se muestra en las FIG. 3E-3F, los contenidos de un registro general R1318 especifican, por ejemplo, una dirección lógica 320 del byte más a la izquierda del primer operando, y los contenidos de un registro general R1 + 1 (322) especifican una longitud 324 del primer operando en, p. ej., bytes. Cuando la función especificada es SORTL-SFLR o SORTL-SVLR, el primer operando, p. ej., debe designarse en un límite de doble palabra; de lo contrario, se reconoce una excepción de especificación. Los datos, en forma de registros, se seleccionan de un conjunto de listas de entrada y se almacenan en la ubicación del primer operando (p. ej., se comienza en la dirección especificada usando Ri). Cuando se especifica la función de SORTL-QAF, los contenidos de los registros generales R1 y R1 + 1 se ignoran.
Además, para las funciones especificadas (p. ej., SORTL-QAF, SORTL-SFLR, SORTL-SVLR), en un ejemplo, el campo R2306 designa un par par-impar de registros generales. Debe designarse un registro de numeración par y no debe designarse un registro general 0; de lo contrario, se reconoce una excepción de especificación. Cuando la función especificada es SORTL-SFLR o SORTL-SVLR, y el modo de fusión (MM) es cero, como se muestra en las FIG. 3G-3H, los contenidos de un registro general R2326 especifican, por ejemplo, una dirección lógica 328 del byte más a la izquierda del segundo operando, y los contenidos de un registro general R2 + 1 (330) especifican una longitud 332 del segundo operando en, p. ej., bytes. Cuando la función especificada es SORTL-SFLR o SORTL-SVLR, y el modo de fusión (MM) es cero, el segundo operando debe designarse en un límite de doble palabra; de lo contrario, se reconoce una excepción de especificación, en un ejemplo. La dirección y la longitud de inicio de cada lista de salida, denominados delineaciones de la lista de salida (OLD), se almacenan en la ubicación del segundo operando (p. ej., se comienza en la dirección especificada usando R2 ) cuando el MM es cero. Cuando se especifica la función de SORTL-QAF, o el MM es uno, los contenidos de los registros generales R2 and R2 + 1 se ignoran.
En la ejecución, en una forma de realización, se realiza una función especificada por el código de función en el registro general 0. Como parte de la operación cuando la función especificada es SORTL-SFLR o SORTL-SVLR, ocurre lo siguiente, en una forma de realización: La dirección en el registro general R1 aumenta por el número de bytes almacenados en la ubicación del primer operando, y la longitud en el registro general R1 + 1 disminuye por el mismo número. Cuando el MM es cero, la dirección en el registro general R2 aumenta por el número de bytes almacenados en la ubicación del segundo operando, y la longitud en el registro general R2 + 1 disminuye por el mismo número.
En un ejemplo, la formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento.
En el modo de direccionamiento del bit 24, aplica lo siguiente, en una forma de realización:
Los contenidos de las posiciones de bits 40-63 de los registros generales 1, R1 y R2 constituyen las direcciones del bloque de parámetros, del primer operando y del segundo operando, respectivamente, y los contenidos de las posiciones de bits 0-39 se ignoran.
Los bits 40-63 de las direcciones actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 y R2, respectivamente. Los traslados fuera de la posición del bit 40 de las direcciones actualizadas se ignoran, y los contenidos de las posiciones de bits 32-39 de los registros generales R1 y R2 se establecen en ceros. Los contenidos de las posiciones de bits 0-31 de los registros generales R1 y R2 permanecen sin cambios.
Los contenidos de las posiciones de bits 32-63 de los registros generales R1 + 1 y R2 + 1 forman enteros binarios sin signo de 32 bits que especifican el número de bytes en el primero y el segundo operandos, respectivamente. Los contenidos de las posiciones de bits 0-31 de los registros generales R1 + 1 y R2 + 1 se ignoran.
Los bits 32-63 de las longitudes actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 + 1 y R2 + 1, respectivamente. Los contenidos de las posiciones de bits 0-31 de los registros generales R 1 + 1 y R2 + 1 permanecen sin cambios.
En el modo de direccionamiento del bit 31, aplica lo siguiente, en una forma de realización:
Los contenidos de las posiciones de bits 33-63 de los registros generales 1, R1 y R2 constituyen las direcciones del bloque de parámetros, del primer operando y del segundo operando, respectivamente, y los contenidos de las posiciones de bits 0-32 se ignoran.
Los bits 33-63 de las direcciones actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 y R2, respectivamente. Los traslados fuera de la posición del bit 33 de las direcciones actualizadas se ignoran, y el contenido de la posición del bit 32 de los registros generales R1 y R2 se establece en cero. Los contenidos de las posiciones de bits 0-31 de los registros generales R1 y R2 permanecen sin cambios.
Los contenidos de las posiciones de bits 32-63 de los registros generales Ri 1 y R2 + 1 forman enteros binarios sin signo de 32 bits que especifican el número de bytes en el primero y el segundo operandos, respectivamente. Los contenidos de las posiciones de bits 0-31 de los registros generales R1 + 1 y R2 + 1 se ignoran.
Los bits 32-63 de las longitudes actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 + 1 y R2 + 1, respectivamente. Los contenidos de las posiciones de bits 0-31 de los registros generales R 1 + 1 y R2 + 1 permanecen sin cambios.
En el modo de direccionamiento del bit 64, aplica lo siguiente, en una forma de realización:
Los contenidos de las posiciones de bits 0-63 de los registros generales 1, R1 y R2 constituyen las direcciones del bloque de parámetros, del primer operando y del segundo operando, respectivamente.
Los bits 0-63 de las direcciones actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 y R2, respectivamente. Los traslados fuera de la posición del bit 0 de las direcciones actualizadas se ignoran.
Los contenidos de las posiciones de bits 0-63 de los registros generales R1 + 1 y R2 + 1 forman enteros binarios sin signo de 64 bits que especifican el número de bytes en el primero y el segundo operandos, respectivamente. Los bits 0-63 de las longitudes actualizadas del primer operando y del segundo operando reemplazan los bits correspondientes en los registros generales R1 + 1 y R2 + 1, respectivamente.
En el modo de registro de acceso, los registros de acceso 1, R1 y R2 especifican los espacios para direcciones que contienen el bloque de parámetros, el primer operando y el segundo operando, respectivamente.
Detalles adicionales respecto de las diversas funciones se describen a continuación:
Código de función 0: SORTL-QAF (funciones de consulta disponibles)
La función de SORTL-QAF (consulta) proporciona un mecanismo para indicar la disponibilidad de todas las funciones instaladas, los formatos del bloque de parámetros instalados y los tamaños de la interfaz disponibles. El tamaño de la interfaz es el número de listas de entrada disponibles para el programa. El tamaño del bloque de parámetros para las funciones de SORT-SFLR y SORT-SVLR es proporcional al tamaño de la interfaz especificado por el programa.
Un formato de ejemplo del bloque de parámetros para la función de SORTL-QAF se describe en referencia a la FIG.
3I. En un ejemplo, un bloque de parámetros 340 para la función de SORTL-QAF (p. ej., código de función 0) incluye un vector de funciones instaladas 342, un vector de tamaños de interfaces instalados 344 y un vector de formatos del bloque de parámetros instalados 346. En un ejemplo en particular, estos vectores se almacenan en los bytes 0-15, el byte 16 y los bytes 24-25, respectivamente, del bloque de parámetros. Cada uno de los vectores se describe adicionalmente a continuación.
Como ejemplo, los bits 0-127 del vector de funciones instaladas 342 corresponden a los códigos de función 0-127, respectivamente, de la instrucción de listas de clasificación. Cuando un bit es, p. ej., uno, la función correspondiente se instala; de lo contrario, la función no se instala.
Además, en un ejemplo, los bits 0-7 del vector de tamaños de interfaces instalados 344 indican los tamaños de interfaces disponibles para el programa. El tamaño de la interfaz es el número de listas de entrada que debe especificar el programa para las funciones de SORT-SFLR y SORTL-SVLR. Los bits 0-7 del vector de tamaños de interfaces instalados 344 corresponden a los siguientes tamaños de interfaces, en un ejemplo: bits 0, 1, 5-7 reservados; bit 2 -32 listas de entrada; bit 3 - 64 listas de entrada; y bit 4 - 128 listas de entrada. Otros ejemplos también son posibles.
Cuando un bit del vector de tamaños de interfaces instalados 344 es, p. ej., uno, el tamaño de la interfaz correspondiente está disponible para el programa. Uno o más bits pueden almacenarse como unos. Por ejemplo, un valor de 00101000 binario indica que los tamaños de interfaces de 32 y 128 listas de entrada están disponibles. En un ejemplo, los bits 0-1 y 5-7 se reservan y almacenan como ceros. Además, en un ejemplo, el tamaño de la interfaz de 32 listas de entrada está disponible cuando se instala el recurso de clasificación mejorada. Por lo tanto, el bit 2 se almacena como uno. Otros ejemplos también son posibles.
Además de lo anterior, en un ejemplo, los bits 0-15 del vector de formatos del bloque de parámetros instalados 346 corresponden a los formatos del bloque de parámetros 0-15, respectivamente. Cuando un bit es, p. ej., uno, el formato del bloque de parámetros correspondiente se instala; de lo contrario, el formato del bloque de parámetros no se instala. En un ejemplo, los ceros se almacenan en los bytes 17-23 y 26-31 reservados del bloque de parámetros.
Los contenidos de los registros generales R1, R2 , R1 + 1 y R2 + 1 son ignorados por la función de SORT-QAF.
Un evento de alteración de almacenamiento de PER (registro de eventos de programa) se reconoce, cuando aplica, para el bloque de parámetros. Un evento de detección de dirección cero de PER se reconoce, cuando aplica, para el bloque de parámetros.
El código de condición 0 se establece cuando la ejecución de la función de SORTL-QAF finaliza; los códigos de condición 1, 2 y 3 no son aplicables a la función de consulta, en un ejemplo.
Código de función 1: SORTL-SFLR (registros de longitud fija de clasificación)
En un ejemplo, un conjunto de listas de entrada se clasifica y se almacena como un conjunto de listas de salida en la ubicación del primer operando. Cada lista constituye un conjunto de registros y, en referencia a la FIG. 3J, cada registro 350 incluye una clave 352 (p. ej., una clave de longitud fija) y una carga útil 354 (p. ej., una carga útil de longitud fija).
Los registros de las listas de entrada se clasifican sobre la base de los valores de las claves. Los registros pueden clasificarse en orden ascendente o descendente, como se especifica en un campo de orden de clasificación (SO) del bloque de parámetros relacionado con el código de función 1, descrito a continuación. Los registros de una lista de entrada pueden, o no, estar enumerados en orden clasificado.
Los registros de una lista de salida pueden obtenerse de varias listas de entrada y se almacenan en orden clasificado. El número de listas de salida almacenadas en la ubicación del primer operando depende de los datos de entrada. En un ejemplo, cuando cada lista de entrada activa contiene registros enumerados en el mismo orden que el especificado en el campo de SO, solo se produce una lista de salida.
Como se indica anteriormente, el bit 56 del registro general 0 especifica un modo de operación, denominado modo de fusión (MM), que aplica a la función de SORTL-SFLR. Cuando el modo de fusión es, p. ej., cero, para cada lista de salida almacenada en la ubicación del primer operando, una delineación de la lista de salida (OLD) correspondiente se almacena en la ubicación del segundo operando. Cada OLD incluye, por ejemplo, una dirección de OLD de 8 bytes, que designa la ubicación del primer registro en la lista de salida correspondiente, y una longitud de OLD de 8 bytes, que especifica la longitud en, p. ej., bytes, de la lista de salida correspondiente. Cuando el modo de fusión es uno, las listas de entrada se consideran preclasificadas. Es decir, cada lista de entrada activa se considera que contiene registros en el mismo orden que el especificado por el campo de SO del bloque de parámetros.
Cuando el MM es uno y cada lista de entrada es preclasificada, el resultado almacenado en la ubicación del primer operando es una única lista de salida de registros en orden clasificado. Cuando el MM es uno y cada lista de entrada no es preclasificada, los resultados son impredecibles.
Cuando el MM es, p. ej., uno, los contenidos de los registros generales R2 y R2 + 1 se ignoran y no se almacena información en la ubicación del segundo operando. Cuando el MM es uno, los procedimientos usados para distinguir separaciones entre listas de salida pueden no realizarse, con lo cual se mejora potencialmente el rendimiento de la operación. Cuando el MM es uno, los datos no se almacenan en una memoria intermedia de recuperación del registro de continuación, descrita a continuación.
Para generar una única lista de registros en orden clasificado a partir de un conjunto de registros en orden aleatorio, un programa puede realizar el procedimiento siguiente, en un ejemplo:
1. Particiona de forma pareja el conjunto de registros entre un conjunto inicial de listas, en el que cada lista contiene registros en orden aleatorio. Ejecuta la instrucción de listas de clasificación con el conjunto inicial de listas como listas de entrada y el modo de fusión igual a cero, para generar un conjunto intermedio de listas (cada una de las cuales contiene registros en orden clasificado), y las ubicaciones y longitudes de almacenamiento para cada lista del conjunto intermedio de listas.
2. Ejecutar la instrucción de listas de clasificación con el conjunto intermedio de listas como listas de entrada y el modo de fusión igual a uno, para generar la lista final y única, que contiene los registros en orden clasificado.
Un ejemplo de la SORTL-SFLR con modo de fusión igual a cero se ilustra en la FIG. 4A. Las entradas y las salidas resultantes se incluyen en el ejemplo. Como se muestra, existen tres listas de entrada 400: lista de entrada 0, lista de entrada 1 y lista de entrada 2. Además, se representa un ejemplo de un primer operando 402 y un segundo operando 404 resultantes. En un ejemplo, existen tres listas en el primer operando 402 (FIG. 4A) y, como se muestra en el segundo operando 404, una comienza en la dirección 1000 y tiene una longitud de 18; otra comienza en la dirección 1018 y tiene una longitud de 28; y una tercera comienza en la dirección 1040 y tiene una longitud de 20.
En un ejemplo, cuando dos operaciones realizan la misma función de SORTL-SFLR con modo de fusión igual a cero en el mismo conjunto de registros de entrada no clasificados y la única diferencia entre las dos operaciones es el número de listas de entrada usadas para especificar los datos de entrada, la operación con el número mayor de listas de entrada da por resultado un número menor de listas de salida. La FIG. 4B ilustra un ejemplo de usar seis listas de
entrada 450 para operar en los mismos datos de entrada que el ejemplo de la FIG. 4A, que usa tres listas de entrada. También se representan los resultantes un primer operando 452 con dos listas de salida, en vez de tres, y un segundo operando 454 que proporciona delineaciones de las dos listas de salida.
Como se indica, la función de SORTL-SFLR usa un bloque de parámetros, cuyo ejemplo se describe en referencia a la FIG. 3K. En el bloque de parámetros de ejemplo descrito en el presente documento, se indican las ubicaciones específicas dentro del bloque de parámetros para campos específicos y tamaños específicos de los campos (p. ej., bytes y/o bits específicos). No obstante, otras ubicaciones y/o tamaños pueden proporcionarse para uno o más de los campos. Además, si bien se especifica el establecimiento de un bit en un valor en particular, p. ej., uno o cero, esto constituye solo un ejemplo. El bit puede establecerse en un valor diferente, como el valor opuesto o en otro valor, en otros ejemplos. Muchas variaciones son posibles.
En un ejemplo, un bloque de parámetros 360 para la función de SORTL-SFLR incluye lo siguiente:
Número de versión del bloque de parámetros (PBVN) 362: Los bytes 0-1 del bloque de parámetros especifican la versión y el tamaño del bloque de parámetros. Los bits 0-7 del PBVn tienen el mismo formato y definición como bits 0-7 del vector de lista de los tamaños de interfaces instalados (byte 16) del bloque de parámetros para la función de SORTL-QAF (consulta). Los bits 0-7 especifican el número de listas de entrada descritas en el bloque de parámetros, Nis. El tamaño del bloque de parámetros, en bytes, se determina al evaluar la fórmula (576 16 x Nis). Un bit de los bits 0-7 debe tener un valor de uno; de lo contrario, se reconoce una excepción de datos de operando general. Los bits 8-11 del PBVN están reservados y deberían contener ceros; de lo contrario, el programa puede no funcionar de manera compatible en el futuro. Los bits 12-15 del PBVN contienen un entero binario sin signo que especifica el formato del bloque de parámetros. La función de SORTL-QAF proporciona el mecanismo que indica los formatos del bloque de parámetros disponibles. Cuando el tamaño o formato del bloque de parámetros especificado no está admitido por el modelo, se reconoce una excepción de datos de operando general. El PBVN está especificado por el programa y no se modifica durante la ejecución de la instrucción.
Número de versión del modelo (MVN) 364: El byte 2 del bloque de parámetros es un entero binario sin signo que identifica el modelo que ejecutó la instrucción. El MVN es actualizado durante la ejecución de la instrucción, p. ej., por el procesador. El valor almacenado en el MVN es dependiente del modelo.
Cuando el indicador de continuación (CF) 368, descrito a continuación, es uno, el MVN es una entrada a la operación. Cuando el CF es uno y el MVN identifica el mismo modelo como el modelo que está ejecutando la instrucción, los datos de la memoria intermedia del estado de continuación (CSB) 390, descrita a continuación, puede usarse para reanudar la operación. Cuando el CF es uno y el MVN identifica un modelo diferente del modelo que está ejecutando la instrucción, puede ignorarse una parte o la totalidad del campo de CSB.
En un ejemplo, el programa inicializa el MVN en ceros. Se espera que el programa no modifique el MVN en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Orden de clasificación (SO) 366: El bit 56 del bloque de parámetros, cuando es cero, especifica un orden de clasificación ascendente, y cuando es uno, especifica un orden de clasificación descendente. Cuando se especifica un orden de clasificación ascendente, cada registro de una lista de salida contiene una clave que es mayor o igual a la clave del registro adyacente, p. ej., a la izquierda, en la misma lista de salida. Cuando se especifica un orden de clasificación descendente, cada registro de una lista de salida contiene una clave que es menor o igual a la clave del registro adyacente, p. ej., a la izquierda, en la misma lista de salida. El SO no se actualiza durante la ejecución de la instrucción.
Indicador de continuación (CF) 368: El bit 63 del bloque de parámetros, cuando es uno, indica que la operación está parcialmente finalizada y los contenidos de la memoria intermedia del estado de continuación 390, y cuando el modo de fusión (MM) es cero, los contenidos de la memoria intermedia de recuperación del registro de continuación pueden usarse para reanudar la operación. El programa debe inicializar el indicador de continuación (CF) en cero y no debe modificar el CF en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles. El procesador, en un ejemplo, modifica el CF en el caso de que la instrucción deba reejecutarse.
Longitud de la clave de registro 370: Los bytes 10-11 del bloque de parámetros contiene un entero binario sin signo que especifica el tamaño, en bytes, de las claves, en los registros procesados durante la operación. Una excepción de datos de operando general se reconoce para cualquiera de las condiciones siguientes, en un ejemplo:
Se especifica un tamaño de la clave de cero bytes.
Se especifica un tamaño de la clave que no es múltiplo de 8.
Se especifica un tamaño de la clave mayor que 4096 bytes.
La longitud de la clave de registro no se actualiza durante la ejecución de la instrucción.
Longitud de la carga útil de registro 372: Cuando se especifica la función de SORTL-SFLR, los bytes 14-15 del bloque de parámetros contiene un entero binario sin signo que especifica el tamaño, en bytes, de las cargas útiles, en los registros procesados durante la operación. Una excepción de datos de operando general se reconoce para cualquiera de las condiciones siguientes, en un ejemplo:
Se especifica un tamaño de la carga útil que no es múltiplo de 8.
La suma de los tamaños de la clave y la carga útil especificados es mayor que 4096 bytes.
Un tamaño de la carga útil de cero es válido.
Cuando se especifica la función de SORTL-SFLR, el campo de longitud de la carga útil de registro del bloque de parámetros se ignora. La longitud de la carga útil de registro no se actualiza durante la ejecución de la instrucción. Intento de acceso al operando (OAI) 374: Los bits 0-1 del byte 32 del bloque de parámetros señalizan el intento de acceso futuro a la CPU para listas de entrada y el primer operando. Los intentos de acceso proporcionados pueden usarse para modificar la instalación de la línea de caché y las políticas de reemplazo para las ubicaciones de almacenamiento correspondientes en diversos niveles de la caché en la jerarquía de almacenamiento.
Cuando el bit 0 del campo de OAI es uno, se hará referencia a las ubicaciones de almacenamiento designadas para contener datos para cualquier lista de entrada activa como uno o más operandos de instrucciones posteriores. Cuando el bit 0 del campo de o A i es cero, no se hará referencia a las ubicaciones de almacenamiento designadas para contener datos para cualquier lista de entrada activa como uno o más operandos de instrucciones posteriores. Cuando el bit 1 del campo de OAI es uno, se hará referencia a las ubicaciones de almacenamiento designadas para contener el primer operando como uno o más operandos de instrucciones posteriores. Cuando el bit 1 del campo de OAI es cero, no se hará referencia a las ubicaciones de almacenamiento designadas para contener el primer operando como uno o más operandos de instrucciones posteriores.
No está garantizado que la CPU use esta información. La duración de tiempo que puede usarse esta información es indefinida, pero es finita.
Cuando la siguiente instrucción secuencial después del intento de acceso a la siguiente instrucción (NIAI) es listas de clasificación (SORTL), la ejecución de la SORTL no es efectuada por el NIAI.
El OAI no se actualiza durante la ejecución de la instrucción.
Código de cuenta de listas de entrada activas (AILCC) 376: Los bits 1-7 del byte 33 del bloque de parámetros son un entero sin signo de 7 bits que especifica el número de la lista de entrada que denota el límite entre listas de entrada activas e inactivas. Las listas de entrada con números de lista, p. ej., menores o iguales al valor del campo de AILCC están en el estado activo. Las listas de entrada con números de lista, p. ej., mayores que el valor del campo de AILCC están en el estado inactivo. El número de listas de entrada en el estado activo es uno más que el valor en el campo de AILCC.
Las listas de entrada en el estado activo participan de la operación. Las listas de entrada en el estado inactivo no participan de la operación.
El bit 0 del byte 33 del bloque de parámetros está reservado y debería contener cero; de lo contrario, el programa puede no funcionar de manera compatible en el futuro.
Cuando el valor del campo de AILCC más uno es mayor que el número de listas de entrada descritas en el bloque de parámetros, según lo especificado por los bits 0-7 del campo de PBVN, se reconoce una excepción de datos de operando general, en un ejemplo.
El valor especificado en el campo de AILCC no efectúa el tamaño del bloque de parámetros. Las excepciones de acceso aplican a referencias a campos del bloque de parámetros que especifica una dirección o longitud de la lista de entrada correspondiente a una lista de entrada en el estado inactivo.
El AILCC no se actualiza durante la ejecución de la instrucción.
Control de listas de entrada vacías (EILCL) 378: Cuando el bit 0 del byte 40 del bloque de parámetros es uno, la operación finaliza cuando la longitud de la lista de entrada 0 se vuelve cero durante la operación. Cuando el bit 0 del byte 40 del bloque de parámetros es cero, la operación continúa procediendo cuando la longitud de la lista de entrada 0 se vuelve cero durante la operación. Cuando el bit 1 del byte 40 del bloque de parámetros es uno, la operación finaliza cuando la longitud de una lista de entrada activa, distinta de la lista de entrada 0, se vuelve cero durante la operación. Cuando el bit 1 del byte 40 del bloque de parámetros es cero, la operación continúa procediendo cuando la longitud de una lista de entrada activa, distinta de la lista de entrada 0, se vuelve cero durante la operación.
Cuando la longitud de una lista de entrada activa es inicialmente cero antes de ejecutar la instrucción, el bit correspondiente del EILCL no aplica.
El EILCL no se actualiza durante la ejecución de la instrucción.
Se espera que el programa no modifique el EILCL en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Indicador de la lista de entrada vacía (EILF) 380: Cuando el EILCL es 11 binario, y la operación finaliza debido a la longitud actualizada de una lista de entrada activa que es igual a cero, y se establece el código de condición 2, el valor de uno es almacenado, p. ej., por el procesador, en el bit 2, del byte 40, del bloque de parámetros; de lo contrario, el valor de cero se almacena en el bit 2, del byte 40, del bloque de parámetros. Cuando el EILF contiene un valor de uno, el número de la lista de entrada de la lista de entrada que se volvió vacía durante la operación se coloca en el campo de EILN del bloque de parámetros. En un ejemplo, el programa inicializa el EILF en cero.
El EILF puede hacerse referencia al comienzo de la ejecución de la instrucción cuando la operación se está reanudando. Se espera que el programa no modifique el EILF en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Número de la lista de entrada vacía (EILN) 382: Cuando las condiciones hacen que un valor de uno se almacene en el campo de EILF, el número de la lista de entrada de la lista de entrada que se volvió vacía durante la operación es almacenado, p. ej., por el procesador, en el byte 41 del bloque de parámetros; de lo contrario, el valor de cero se almacena en el byte 41 del bloque de parámetros.
El EILN se ignora al comienzo de la operación. En un ejemplo, el programa inicializa el EILN en ceros.
Indicador de la lista de entrada incompleta (IILF) 384: Cuando la operación finaliza como consecuencia de intentar procesar una lista de entrada incompleta, el valor de uno es almacenado, p. ej., por el procesador, en el bit 0, del byte 46, del bloque de parámetros; de lo contrario, el valor de cero se almacena en el bit 0, del byte 46, del bloque de parámetros. Una lista de entrada activa se considera incompleta cuando la longitud de la lista de entrada correspondiente es mayor que cero y menor que el número de bytes del registro designado por la dirección de la lista de entrada. Esta condición puede existir al comienzo de la operación, o puede encontrarse durante la operación. Cuando el IILF contiene un valor de uno, el número de la lista de entrada, de la lista de entrada incompleta que se encontró, se coloca en el campo de IILN del bloque de parámetros. En un ejemplo, el programa inicializa el IILF en cero.
Cuando la operación finaliza con el establecimiento del código de condición 2 y el valor resultante en el campo de IILF es cero, la operación finalizó debido a una lista de entrada vacía. Cuando la operación finaliza con el establecimiento del código de condición 2 y el valor resultante en el campo de IILF es uno, la operación finalizó debido a una lista de entrada incompleta.
El IILF puede hacerse referencia al comienzo de la ejecución de la instrucción cuando la operación se está reanudando. Se espera que el programa no modifique el IILF en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Número de la lista de entrada incompleta (IILN) 386: Cuando las condiciones hacen que un valor de uno se almacene en el campo de IILF, el número de la lista de entrada, de la lista de entrada incompleta que se encontró, es almacenado, p. ej., por el procesador, en el byte 47 del bloque de parámetros; de lo contrario, el valor de cero se almacena en el byte 47 del bloque de parámetros. Cuando varias listas de entrada están incompletas, es dependiente del modelo qué número de la lista de entrada incompleta se almacena en el campo de IILN. En un ejemplo, el programa inicializa el IILN en cero.
El IILN se ignora al comienzo de la operación.
Origen de la memoria intermedia de recuperación del registro de continuación 388: Una memoria intermedia de 4 K-byte en almacenamiento, llamada la memoria intermedia de recuperación del registro de continuación, es proporcionada por el programa para la CPU para almacenar y hacer referencia a datos entre dos ejecuciones de la
misma instrucción de listas de clasificación, en case de que una operación finalice y pueda reanudarse más tarde. Cincuenta y dos bits, que comienzan con el bit 0 del byte 56, hasta el bit 3 del byte 62, del bloque de parámetros, contienen un entero binario sin signo usado en la formación de la dirección de recuperación del registro de continuación, que se alinea en el límite de 4 K-byte. La dirección de recuperación del registro de continuación es, p. ej., la dirección lógica del byte más a la izquierda de la memoria intermedia de recuperación del registro de continuación.
En el modo de direccionamiento del bit 24, los bits 40-51 del origen de la memoria intermedia de recuperación del registro de continuación con 12 ceros anexados a la derecha forman la dirección de recuperación del registro de continuación. En el modo de direccionamiento del bit 31, los bits 33-51 del origen de la memoria intermedia de recuperación del registro de continuación con 12 ceros anexados a la derecha forman la dirección de recuperación del registro de continuación. En el modo de direccionamiento del bit 64, los bits 0-51 del origen de la memoria intermedia de recuperación del registro de continuación con 12 ceros anexados a la derecha forman la dirección de recuperación del registro de continuación.
En el modo de registro de acceso, el registro de acceso 1 especifica el espacio para direcciones que contiene la memoria intermedia de recuperación del registro de continuación en almacenamiento.
Cuando el modo de fusión (MM) es cero, la operación finaliza después de almacenar uno o más registros, y no ocurre una finalización normal, la clave del último registro almacenado en el primer operando también se almacena en la memoria intermedia de recuperación del registro de continuación. Cuando el MM es uno, se ignora el origen la memoria intermedia de recuperación del registro de continuación.
El origen de la memoria intermedia de recuperación del registro de continuación no se modifica durante la ejecución de la instrucción.
Se espera que el programa no modifique el origen de la memoria intermedia de recuperación del registro de continuación en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Memoria intermedia del estado de continuación (CSB) 390: Cuando las condiciones hacen que un valor de uno se almacene en el campo de CF, los datos de estado interno son almacenados, p. ej., por el procesador, en los bytes 64 575 del bloque de parámetros; de lo contrario, los bytes 64-575 del bloque de parámetros son indefinidos y pueden modificarse. Los datos de estado interno almacenados son dependientes del modelo y pueden usarse posteriormente para reanudar la operación cuando la instrucción se reejecuta. En un ejemplo, el programa inicializa la memoria intermedia del estado de continuación en ceros. Se espera que el programa no modifique la memoria intermedia del estado de continuación en el caso de que la instrucción deba reejecutarse con el propósito de reanudar la operación; de lo contrario, los resultados son impredecibles.
Como ejemplo, los datos de estado interno incluyen información referida a las listas de entrada, como información respecto de comparaciones anteriores de registros de las listas de entrada para determinar las comparaciones siguientes para realizar. Los datos de estado interno son dependientes del modelo por que pueden almacenarse o presentarse de manera diferente en función del modelo del procesador. Otras variaciones son posibles.
En una forma de realización, la instrucción puede ser finalizada parcialmente por un modelo en una configuración, y la ejecución puede reanudarse en un modelo diferente en la configuración. Si bien modelos diferentes, en una forma de realización, pueden mantener estados internos diferentes, en un ejemplo, cada modelo debe poder interpretar aquellos contenidos de la CSB, si hubiere, que se emplean para reanudar la operación. Cuando una operación se reanuda, el MVN indica qué contenidos de la CSB, si hubiere, puede interpretar la máquina.
Dirección de la lista de entrada N 392, 394, 396: El bloque de parámetros define varias listas de entrada. El número de listas de entrada definido en el bloque de parámetros, Nis, está especificado por los bits 0-7 del PBVN 362. Las listas de entrada se enumeran de cero a (Nis-1). Para cada lista de entrada, el bloque de parámetros especifica, p. ej., una dirección de la lista de entrada de 8 bytes. Para el número de la lista de entrada N, los contenidos de los bytes de 576 16 x N a 583 16 x N, del bloque de parámetros, especifican, p. ej., la dirección lógica del byte más a la izquierda del número de la lista de entrada N en almacenamiento.
Cada dirección de la lista de entrada correspondiente a una lista de entrada en el estado activo, según lo especificado por el campo de AILCC, es una entrada a la operación y es actualizada por la operación. Cada dirección de la lista de entrada correspondiente a una lista de entrada en el estado inactivo, según lo especificado por el campo de AILCC, es ignorada por la operación.
Cuando una dirección de la lista de entrada es una entrada a la operación, aplica lo siguiente, en una forma de realización:
En el modo de direccionamiento del bit 24, los bits 40-63 de la dirección de la lista de entrada designan la ubicación del byte más a la izquierda de la lista de entrada en almacenamiento, y los contenidos de los bits 0-39 de la dirección de la lista de entrada se tratan como ceros.
En el modo de direccionamiento del bit 31, los bits 33-63 de la dirección de la lista de entrada designan la ubicación del byte más a la izquierda de la lista de entrada en almacenamiento, y los contenidos de los bits 0-32 de la dirección de la lista de entrada se tratan como ceros.
En el modo de direccionamiento del bit 64, los bits 0-63 de la dirección de la lista de entrada designan la ubicación del byte más a la izquierda de la lista de entrada en almacenamiento.
En el modo de registro de acceso, el registro de acceso 1 especifica el espacio para direcciones que contiene las listas de entrada activas en almacenamiento.
Para las listas de entrada en el estado activo, la dirección de la lista de entrada correspondiente debe designarse en un límite de palabra doble; de lo contrario, se reconoce una excepción de datos de operando general, en un ejemplo.
Cuando una dirección de la lista de entrada es actualizada por la operación, aplica lo siguiente, en una forma de realización:
Cuando uno o más registros de la lista de entrada se ha procesado como parte de la operación, la dirección de la lista de entrada correspondiente aumenta por el número de bytes que los registros procesados ocupan en el almacenamiento. La formación y la actualización de la dirección de la lista de entrada son dependientes del modo de direccionamiento.
En el modo de direccionamiento del bit 24, los bits 40-63 de la dirección actualizada de la lista de entrada reemplazan los bits correspondientes en el campo de dirección de la lista de entrada del bloque de parámetros, un traslado fuera de la posición del bit 40 de la dirección actualizada de la lista de entrada se ignora, y los contenidos de las posiciones de bits 0-39 del campo de dirección de la lista de entrada del bloque de parámetros se establecen en ceros.
En el modo de direccionamiento del bit 31, los bits 33-63 de la dirección actualizada de la lista de entrada reemplazan los bits correspondientes en el campo de dirección de la lista de entrada del bloque de parámetros, un traslado fuera de la posición del bit 33 de la dirección actualizada de la lista de entrada se ignora, y los contenidos de las posiciones de bits 0-32 del campo de dirección de la lista de entrada del bloque de parámetros se establecen en ceros.
En el modo de direccionamiento del bit 64, los bits 0-63 de la dirección actualizada de la lista de entrada reemplazan los bits correspondientes en el campo de dirección de la lista de entrada del bloque de parámetros, y se ignora un traslado fuera de la posición del bit 0 de la dirección actualizada de la lista de entrada.
En los modos de direccionamiento de los bits 24 y 31, cuando la ejecución de la instrucción finaliza y la instrucción no es suprimida, anulada o terminada, cada dirección de la lista de entrada del bit 64 correspondiente a una lista de entrada activa se actualiza, incluso cuando la dirección no aumenta.
Longitud de la lista de entrada N 393, 395, 397: Para cada lista de entrada, el bloque de parámetros especifica una longitud de la lista de entrada de 8 bytes. Para el número de la lista de entrada N, los bytes de 584 16 x N a 591 16 x N, del bloque de parámetros, contienen un entero sin signo que especifica el número de bytes en el número de la lista de entrada N.
Cada longitud de la lista de entrada correspondiente a una lista de entrada en el estado activo, según lo especificado por el campo de AILCC, es una entrada a la operación y es actualizada por la operación. Cada longitud de la lista de entrada correspondiente a una lista de entrada en el estado inactivo, según lo especificado por el campo de AILCC, es ignorada por la operación.
En los diversos modos de direccionamiento, los contenidos de las posiciones de bits 0-63 de un campo de longitud de la lista de entrada especifican la longitud de la lista de entrada correspondiente.
Cuando uno o más registros de una lista de entrada se han procesado como parte de la operación, la longitud de la lista de entrada correspondiente disminuye por el número de bytes que los registros procesados ocupan en el almacenamiento. En los diversos modos de direccionamiento, los bits 0-63 de una longitud actualizada de la lista de entrada reemplazan los bits 0-63 en el campo de longitud de la lista de entrada correspondiente del bloque de parámetros.
Reservado: Existen una cantidad de campos reservados en el bloque de parámetros (p. ej., los campos que no incluyen otra información). Como entrada a la operación, los campos reservados deberían contener ceros; de lo contrario, el
programa puede no funcionar de manera compatible en el futuro. Cuando la operación finaliza, los campos reservados pueden almacenarse como ceros o pueden permanecer sin cambios.
Las FIG. 5A-5B resumen un ejemplo de los valores originales y finales para entradas a la función de SORTL-SFLR, incluidos los campos en el bloque de parámetros.
En una forma de realización, no se requiere, y no se espera, que el programa modifique el bloque de parámetros entre finalizar la operación con el establecimiento del código de condición 3 y bifurcarse de vuelta a la instrucción, para reejecutar la instrucción, con el propósito de reanudar la operación.
En una forma de realización, la función de SORTL-SFLR incluye varias comparaciones entre las claves de registros de diferentes listas de entrada. Cuando se comparan las claves, aplica lo siguiente, en un ejemplo:
Las claves se tratan como enteros binarios sin signo, también denominadas datos no estructurados.
Puede no ser necesario acceder a todos los bytes de cada clave que se compara cuando se determina qué clave contiene el valor más bajo o más alto. El número de bytes de cada clave comparados a la vez, denominado unidad de comparación de claves, es dependiente del modelo. El número de bytes de una clave a los que se accede es un número entero de unidades de comparación de claves.
Cuando se comparan claves de igual valor, en un ejemplo, la clave de la lista de entrada con el número más alto de la lista de entrada se selecciona para estar en orden de clasificación antes que otras claves con el mismo valor. En este caso, el registro correspondiente de la lista de entrada con el número más alto de la lista de entrada se almacena en el primer operando antes que otros registros con el mismo valor. Esto aplica a los órdenes de clasificación ascendente y descendente.
Una implementación puede mantener un historial de comparaciones anteriores entre registros de listas de entrada activas. Cuando el historial está disponible y es aplicable, en lugar de acceder y comparar registros que se compararon previamente, puede hacerse referencia al historial. Las referencias al historial reducen el tiempo de ejecución requerido para generar resultados, lo que mejora el procesamiento dentro del entorno informático.
La función de SORTL-SFLR incluye seleccionar registros de un conjunto de listas de entrada, en el orden de clasificación especificado, y colocar los registros seleccionados en la ubicación del primer operando. A medida que la operación procede, los valores actuales para la dirección del primer operando y las direcciones para las listas de entrada activas se mantienen. La función procede en unidades de operación. Durante cada unidad de operación, para cada lista de entrada activa, la clave designada por la dirección actual de la lista de entrada correspondiente se evalúa, y un registro se coloca en la ubicación del primer operando.
Cuando el modo de fusión (MM) es cero, las listas de entrada activas designan listas, cada una de las cuales se tratan como que contienen registros, p. ej., de izquierda a derecha, en orden aleatorio. Cuando el MM es cero, los registros almacenados en la ubicación del primer operando constituyen uno o más listas de salida, y la dirección y longitud de inicio de cada lista de salida se almacena en la ubicación del segundo operando. Cuando el MM es cero, cada unidad de operación incluye las etapas siguientes, en el orden especificado, como un ejemplo:
1. Determinar si el registro siguiente para almacenar a la ubicación del primer operando puede incluirse en la lista de salida más reciente (la lista de salida incluye el registro más recientemente almacenado en la ubicación del primer operando), de la manera siguiente:
Cuando el indicador de continuación (CF) es cero y la primera unidad de operación se está procesando, no se han almacenado registros en la ubicación del primer operando, y el registro siguiente para almacenar será el primer registro de una lista de salida.
Cuando el CF es uno, la ejecución anterior de la instrucción finalizó con el código de condición 1, y la primera unidad de operación se está procesando para la ejecución actual de la instrucción, el registro siguiente para almacenar será el primer registro de una lista de salida.
Cuando el CF es uno, el IILF es cero, el EILF es cero, la ejecución anterior de la instrucción finalizó con el código de condición 2, y la primera unidad de operación se está procesando para la ejecución actual de la instrucción, el registro siguiente para almacenar será el primer registro de una lista de salida.
Cuando el CF es uno, el IILF o el EILF es uno, la ejecución anterior de la instrucción finalizó con el código de condición 2, y la primera unidad de operación se está procesando para la ejecución actual de la instrucción, el registro siguiente para almacenar puede incluirse en la lista de salida más reciente.
Cuando el CF es uno, la ejecución anterior de la instrucción finalizó con el código de condición 3, y la primera unidad de operación se está procesando para la ejecución actual de la instrucción, el registro siguiente para almacenar puede incluirse en la lista de salida más reciente.
Cuando la unidad de operación que se está procesando no es la primera unidad de operación para la ejecución actual de la instrucción, el registro siguiente para almacenar puede incluirse en la lista de salida más reciente.
2. Cuando el registro siguiente para almacenar puede incluirse en la lista de salida más reciente, determínese el conjunto de registros que califican para incluirse en la lista de salida más reciente. Para cada lista de entrada que está activa, no vacía y no incompleta, compárese la clave del registro designado por la dirección actual de la lista de entrada (clave de entrada actual) con la clave del registro más recientemente almacenado en la ubicación del primer operando (clave almacenada previamente). Con este propósito, la referencia a la clave almacenada previamente no es una referencia a la ubicación del primer operando. En cambio, es una referencia a la lista de entrada a partir de la cual se seleccionó la clave, o es una referencia a la memoria intermedia de recuperación del registro de continuación. Es una referencia a la memoria intermedia de recuperación del registro de continuación cuando la operación se está reanudando y la ejecución actual de la instrucción no ha colocado aún ningún registro en la ubicación del primer operando.
Cuando el orden de clasificación es ascendente y el valor de la clave de entrada actual es mayor que o igual al valor de la clave almacenada previamente, considérese la clave de entrada actual como perteneciente a un conjunto de claves que califican para la inclusión en la lista de salida más reciente. Cuando el orden de clasificación es descendente y el valor de la clave de entrada actual es menor que o igual al valor de la clave almacenada previamente, considérese la clave de entrada actual como perteneciente a un conjunto de claves que califican para la inclusión en la lista de salida más reciente. Cuando el número de claves en el conjunto de claves que califican para la inclusión en la lista de salida más reciente es cero, el registro siguiente para almacenar será el primer registro de una lista de salida. Cuando el número de claves en el conjunto de claves que califican para la inclusión en la lista de salida más reciente es distinto de cero, el registro siguiente para almacenar se incluirá en la lista de salida más reciente.
3. Cuando el registro siguiente para almacenar se incluirá en la lista de salida más reciente, compárese las claves en el conjunto de claves que califican para la inclusión en la lista de salida más reciente. Cuando el orden de clasificación es ascendente, selecciónese el valor de clave más pequeño y el registro correspondiente. Cuando el orden de clasificación es descendente, selecciónese el valor de clave más grande y el registro correspondiente.
4. Cuando el registro siguiente para almacenar será el primer registro de una lista de salida, compárese las claves de los registros designados por las direcciones actuales de la lista de entrada correspondientes a las listas de entrada que están activas, no vacías y no incompletas. Cuando el orden de clasificación es ascendente, selecciónese el valor de clave más pequeño y el registro correspondiente. Cuando el orden de clasificación es descendente, selecciónese el valor de clave más grande y el registro correspondiente.
5. El registro seleccionado se coloca en la ubicación actual del primer operando.
6. La dirección actual del primer operando aumenta por el número de bytes iguales a la longitud del registro seleccionado.
7. La dirección actual de la lista de entrada, correspondiente a la lista de entrada que contiene el registro seleccionado, aumenta por el número de bytes iguales a la longitud del registro seleccionado.
Como parte de la operación, cuando el modo de fusión es cero, para cada lista de salida almacenada en la ubicación del primer operando, una delineación de la lista de salida (OLD) correspondiente se almacena en la ubicación del segundo operando. Cada OLD incluye, por ejemplo, una dirección de o Ld de 8 bytes, que designa la ubicación del primer registro en la lista de salida correspondiente, y, por ejemplo, una longitud de OLD de 8 bytes, que especifica la longitud, en bytes, de la lista de salida correspondiente. Cuando la operación finaliza con el código de condición 3, el código de condición 2 y el EILF igual a uno, o el código de condición 2 y el IILF igual a uno, la lista de salida más reciente que se está procesando al final de la operación puede ser parcialmente procesada y no totalmente procesada. Es decir, el número de registros en la lista de salida parcialmente procesada es un valor intermedio y puede incrementarse cuando la operación se reanuda. En este caso, una delineación de la lista de salida (OLD), correspondiente a la lista de salida parcialmente procesada, no se coloca en la ubicación del segundo operando, hasta después de que se reanude la operación y la lista de salida se procese totalmente.
Cuando el modo de fusión es cero y la operación finaliza después de almacenar uno o más registros y no ocurre una finalización normal, la clave del último registro almacenado en la ubicación del primer operando también se almacena en la memoria intermedia de recuperación del registro de continuación.
Cuando el modo de fusión es cero y la operación finaliza debido a una finalización normal, una o más listas de salida se han colocado en la ubicación del primer operando y las delineaciones de la lista de salida se han colocado en la ubicación del segundo operando. El programa puede usar delineaciones de la lista de salida como valores de dirección y longitud de la lista de entrada en un bloque de parámetros para una operación de SORTL posterior.
Las FIG. 6A-6D ilustran el primero y el segundo operandos, antes y después de ejecutar SORTL-SFLR con modo de fusión igual a cero. En referencia a las FIG. 6A-6B, FOSA 600 es dirección de inicio del primer operando: ubicación especificada por R1; FOEA 602 es dirección de fin del primer operando: ubicación especificada por R1 + (R1 + 1) - 1; y Ol 604 es lista de salida (p. ej., lista de salida 1...lista de salida N). Además, en referencia a las FIG. 6C-6D, SOSA 610 es dirección de inicio del segundo operando: ubicación especificada por R2 ; SOEA 612 es dirección de fin del segundo operando: ubicación especificada por R2 + (R2 + 1) - 1; y OLD 614 es designación de lista de salida (p. ej., designación de lista de salida 1...designación de lista de salida N).
Cuando el modo de fusión (MM) es uno, las listas de entrada activas designan listas, cada una de las cuales se trata como que contiene registros, de izquierda a derecha, en el orden clasificado, según lo especificado por el campo de SO del bloque de parámetros. Cuando el MM es uno, los registros almacenados en la ubicación del primer operando constituyen una lista de salida única. Cuando el MM es uno, cada unidad de operación incluye, por ejemplo, las etapas siguientes, en el orden especificado, como un ejemplo:
1. Compárese las claves de los registros designados por las direcciones actuales de la lista de entrada correspondientes a las listas de entrada que están activas, no vacías y no incompletas. Cuando el orden de clasificación es ascendente, selecciónese el valor de clave más pequeño y el registro correspondiente. Cuando el orden de clasificación es descendente, selecciónese el valor de clave más grande y el registro correspondiente.
2. El registro seleccionado se coloca en la ubicación actual del primer operando.
3. La dirección actual del primer operando aumenta por el número de bytes iguales a la longitud del registro seleccionado.
4. La dirección actual de la lista de entrada, correspondiente a la lista de entrada que contiene el registro seleccionado, aumenta por el número de bytes iguales a la longitud del registro seleccionado.
Las FIG. 7A-7B ilustran el primer operando, antes y después de ejecutar SORTL-SFLR con modo de fusión igual a uno. En referencia a las FIG. 7A-7B, FOSA 700 es dirección de inicio del primer operando: ubicación especificada por R1; FOEA 702 es dirección de fin del primer operando: ubicación especificada por R1 + (R1 + 1) - 1; y OL 704 es lista de salida (p. ej., lista de salida 1).
Como parte de la operación, cuando el modo de fusión es cero o uno, las direcciones y longitudes de la lista de entrada para las listas de entrada en el estado activo se actualizan. Para cada lista de entrada en el estado activo, la dirección de la lista de entrada aumenta por el número de bytes de los registros de la lista de entrada que se seleccionaron y colocaron en la ubicación del primer operando durante la operación, y la longitud de la lista de entrada disminuye por el mismo número. La formación y la actualización de las direcciones de la lista de entrada son dependientes del modo de direccionamiento.
A medida que la operación procede, puede encontrarse una lista de entrada incompleta. Una lista de entrada incompleta se reconoce durante una unidad de operación que intenta hacer referencia a un registro de una lista de entrada que está incompleta. Varias unidades de operación pueden terminarse antes de reconocer una lista de entrada incompleta. Esto aplica cuando el modo de fusión es cero o uno.
A medida que la operación procede, puede encontrarse, cuando aplica, una excepción de acceso para un acceso a una lista de entrada, el primero operando o el segundo operando. Una excepción de acceso se reconoce durante una unidad de operación que intenta acceder a la ubicación de almacenamiento, y una excepción de acceso existe para esa ubicación. Varias unidades de operación pueden terminarse antes de reconocer una excepción de acceso. Esto aplica cuando el modo de fusión es cero o uno.
Cuando la operación termina con una finalización parcial, los datos de estado interno, que pueden incluir un historial de comparaciones anteriores entre registros, se almacenan en el campo de memoria intermedia del estado de continuación (CSB) del bloque de parámetros. Posteriormente, cuando la instrucción se reejecuta, con el propósito de reanudar la operación, los contenidos de la CSB pueden cargarse en la implementación, y puede hacerse referencia al historial cuando la operación se reanuda. Esto aplica cuando el modo de fusión es cero o uno.
La finalización normal ocurre cuando los registros de las listas de entrada activas se han clasificado y almacenado en el primer operando.
Cuando la operación termina debido a una finalización normal, ocurre lo siguiente, en una forma de realización: La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en cero.
El indicador de la lista de entrada vacía se establece en cero.
El número de la lista de entrada vacía se establece en cero.
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero.
Se establece el código de condición 0.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. Cuando ocurre una finalización normal, el campo de CSB del bloque de parámetros es indefinido después de que la operación termina.
Cuando se ha procesado un número de bytes determinado por la CPU, la operación finaliza y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor de clave se almacena en la memoria intermedia de recuperación del registro de continuación cuando MM es cero y uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción. Se actualiza la memoria intermedia del estado de continuación.
El indicador de la lista de entrada vacía se establece en cero.
El número de la lista de entrada vacía se establece en cero.
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero.
Se establece el código de condición 3.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. El número de bytes determinado por la CPU depende del modelo y puede ser un número diferente cada vez que se ejecuta la instrucción. El número de bytes determinado por la c Pu es normalmente distinto de cero. Si bien este
número puede ser cero y aparece como un caso de no progreso, la CPU protege contra la recurrencia infinita de este caso de no progreso.
Tras la instrucción que finaliza con, p. ej., el establecimiento del código de condición 3, se espera que el programa no modifique ninguna especificación de entrada o salida para la instrucción y se bifurque de vuelta para reejecutar la instrucción para reanudar la operación.
Cuando el bit 0 del control de listas de entrada vacías (EILCL) es uno y la longitud de la lista de entrada 0 se vuelve cero durante la operación y la finalización normal no aplica, la operación termina y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor clave puede almacenarse en la memoria intermedia de recuperación del registro de continuación cuando EILCL es 10 binario y MM es cero.
Un valor clave se almacena en la memoria intermedia de recuperación del registro de continuación cuando EILCL es 11 binario y MM es cero. En cualquier caso, uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción.
Se actualiza la memoria intermedia del estado de continuación.
Se establece el indicador de la lista de entrada vacía (refiérase a la FIG. 8, que representa diversos campos de bloque de parámetros cuando finaliza una operación).
Se establece el número de la lista de entrada vacía (refiérase a la FIG. 8).
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero.
Se establece el código de condición 2.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. Cuando el bit 1 del control de listas de entrada vacías (EILCL) es uno y la longitud de una lista de entrada activa, distinta de la lista de entrada 0, se vuelve cero durante la operación y la finalización normal no aplica, la operación termina y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor clave puede almacenarse en la memoria intermedia de recuperación del registro de continuación cuando EILCL es 01 binario y MM es cero.
Un valor clave se almacena en la memoria intermedia de recuperación del registro de continuación cuando EILCL es 11 binario y MM es cero. En cualquier caso, uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción.
Se actualiza la memoria intermedia del estado de continuación.
Se establece el indicador de la lista de entrada vacía (refiérase a la FIG. 8).
Se establece el número de la lista de entrada vacía (refiérase a la FIG. 8).
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero.
Se establece el código de condición 2.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. Cuando se encuentra una lista de entrada incompleta en el estado activo, la operación finaliza y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor de clave se almacena en la memoria intermedia de recuperación del registro de continuación cuando MM es cero y uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción. Se actualiza la memoria intermedia del estado de continuación.
El indicador de la lista de entrada vacía se establece en cero.
El número de la lista de entrada vacía se establece en cero.
El indicador de la lista de entrada incompleta (IILF) se establece en uno.
El número de la lista de entrada de la lista de entrada incompleta encontrada se coloca en el campo de número de la lista de entrada incompleta (IILN) del bloque de parámetros.
Se establece el código de condición 2.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. Cuando la longitud del primer operando no es adecuada para almacenar otro registro, la operación finaliza y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R2 y R2 + 1, respectivamente, se actualizan cuando MM es cero. Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor de clave puede almacenarse en la memoria intermedia de recuperación del registro de continuación cuando MM es cero y uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción.
Se actualiza la memoria intermedia del estado de continuación.
El indicador de la lista de entrada vacía se establece en cero.
El número de la lista de entrada vacía se establece en cero.
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero
Se establece el código de condición 1.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. Cuando el modo de fusión (MM) es cero y la longitud del segundo operando es menos de 16, la operación finaliza, y ocurre lo siguiente, en una forma de realización:
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
La dirección y la longitud en los registros generales R1 y R1 + 1, respectivamente, se actualizan.
Los campos de dirección de la lista de entrada N y de longitud de la lista de entrada N se actualizan para las listas de entrada en el estado activo.
Se establece el número de versión del modelo.
El indicador de continuación se establece en uno.
Un valor de clave puede almacenarse en la memoria intermedia de recuperación del registro de continuación cuando uno o más registros se han colocado en la ubicación del primer operando durante la ejecución de la instrucción. Se actualiza la memoria intermedia del estado de continuación.
El indicador de la lista de entrada vacía se establece en cero.
El número de la lista de entrada vacía se establece en cero.
El indicador de la lista de entrada incompleta se establece en cero.
El número de la lista de entrada incompleta se establece en cero.
Se establece el código de condición 1.
La formación y la actualización de las direcciones y longitudes son dependientes del modo de direccionamiento. El estado de finalización de la operación se llama finalización parcial cuando la ejecución de la instrucción termina en finalización (no termina en supresión, anulación o terminación) y no ocurre una finalización normal.
Un evento de alteración de almacenamiento de PER se reconoce, cuando aplica, para la ubicación del primer operando, la ubicación del segundo operando, la memoria intermedia de recuperación del registro de continuación y la parte del bloque de parámetros que se almacena. Cuando un evento de alteración de almacenamiento de PER se reconoce, menos de 4K bytes adicionales se almacenan en la ubicación del operando que se interseca con el área designada de almacenamiento de PER, antes de informar el evento.
Un evento de detección de dirección cero de PER se reconoce, cuando aplica, para el bloque de parámetros, la ubicación del primer operando y la ubicación del segundo operando. La detección de dirección cero no aplica a las direcciones de la lista de entrada y al origen de la memoria intermedia de recuperación del registro de continuación, que se especifican en el bloque de parámetros.
Refiérase a Otras condiciones a continuación para descripciones de ejemplos de otras condiciones que aplican a la función de SORTL-SFLR.
Cuando la instrucción finaliza con el código de condición 1, el programa puede modificar la dirección del primer operando, la longitud del primer operando, la dirección del segundo operando, la longitud del segundo operando,
cualquier dirección de la lista de entrada activa y cualquier longitud de la lista de entrada activa, según sea el caso, y, posteriormente, reanudar la operación.
Cuando la instrucción finaliza con el código de condición 2, IILF igual a cero y EILF igual a cero, el programa puede modificar la dirección del primer operando, la longitud del primer operando, la dirección del segundo operando, la longitud del segundo operando, cualquier dirección de la lista de entrada activa y cualquier longitud de la lista de entrada activa, según sea el caso, y, posteriormente, reanudar la operación.
Cuando la instrucción finaliza con el código de condición 2 y EILF igual a uno, el programa puede modificar la dirección y longitud de la lista de entrada para la lista de entrada especificada por el EILN, según sea el caso, y, posteriormente, reanudar la operación. En este caso, el programa puede también modificar la dirección del primer operando y la longitud del primer operando cuando el modo de fusión (MM) es uno.
Cuando la instrucción finaliza con el código de condición 2 e IILF igual a uno, el programa puede modificar la dirección y longitud de la lista de entrada para la lista de entrada especificada por el IILN, según sea el caso, y, posteriormente, reanudar la operación. En este caso, el programa puede también modificar la dirección del primer operando y la longitud del primer operando cuando el modo de fusión (MM) es uno.
Cuando la instrucción finaliza con el código de condición 3, y antes de reejecutar la instrucción para reanudar la operación, el programa modifica cualquier dirección o longitud de la lista de entrada activa, la dirección o longitud del primer operando, o la dirección o longitud del segundo operando, los resultados son impredecibles.
Código de función 2: SORTL-SVLR (registros de longitud variable de clasificación)
La función de SORTL-SVLR opera igual que la función de SORTL-SFLR, excepto por lo siguiente:
Los registros incluyen, por ejemplo, como se muestra en la FIG. 9, una clave de longitud fija 900, una longitud de carga útil (PL) 902 de 8 bytes y una carga útil de longitud variable 904. Por lo tanto, los registros tienen una longitud variable. Los bytes 14-15 del bloque de parámetros para la función de SORTLSVLR se ignoran.
Los 2 bytes, p. ej., menos significativos del campo de longitud de carga útil de cada registro contienen un entero binario sin signo que especifica la longitud, en bytes, de la carga útil en el mismo registro. Una longitud de carga útil de cero es válida. La longitud de la carga útil debe ser múltiplo de, p. ej., 8; de lo contrario, se reconoce una excepción de datos de operando general, en un ejemplo. Los 6 bits (como ejemplo) más significativos del campo de longitud de la carga útil están reservados y deberían contener ceros; de lo contrario, el programa puede no funcionar de manera compatible en el futuro. La suma de la longitud de la clave, ocho, y de la longitud de la carga útil no debe ser mayor que, p. ej., 4096; de lo contrario, se reconoce una excepción de datos de operando general, en un ejemplo. Cuando se reconoce una excepción de datos de operando general como consecuencia de una longitud de la carga inapropiada, la dirección de la lista de entrada correspondiente a la lista de entrada activa que encuentra la excepción especifica la dirección lógica del byte más a la izquierda del registro errante. Cuando un registro de longitud variable se almacena en una ubicación del primer operando, los bytes reservados del campo de longitud de la carga útil no se modifican. Una lista de entrada incompleta puede no reconocerse durante una unidad de operación que solo intenta hacer referencia a la clave de un registro de una lista de entrada con una longitud de la lista de entrada mayor que el tamaño de la clave y menor que el tamaño del registro. En este caso, la lista de entrada incompleta se reconocerá cuando se intente almacenar el registro de la lista de entrada incompleta en la ubicación del primer operando.
El bloque de parámetros para la función SORTL-SVLR es el mismo que el bloque de parámetros para la función SORTL-SFLR, excepto por los bytes 14-15, como se indicó anteriormente.
Refiérase a Otras condiciones a continuación para descripciones de otras condiciones que aplican a la función de SORTL-SVLR.
Condiciones especiales
Una excepción de especificación se reconoce cuando se intenta la ejecución de listas de clasificación y aplica cualquiera de los siguientes, en una forma de realización:
Los bits 57-63 del registro general 0 designan un código de función no asignado o no instalado.
El campo R1 designa un registro de numeración impar o un registro general 0.
El campo R2 designa un registro de numeración impar o un registro general 0. Esto aplica cuando el modo de fusión (MM) es cero o uno.
El bloque de parámetros no se designa en un límite de palabra doble.
Se especifica la función de SORTL-SFLR o la función de SORTL-SVLR, y el primer operando no se designa en un límite de palabra doble.
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y el segundo operando no se designa en un límite de palabra doble cuando MM es cero.
Una excepción de datos de operando general se reconoce cuando se intenta una ejecución de listas de clasificación y aplica cualquiera de los siguientes, en una forma de realización:
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y ningún bit, o varios bits, de los bits 0-7 del número de versión del bloque de parámetros, contiene un valor de uno, en cuyo caso se suprime la operación.
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y el tamaño o formato del bloque de parámetros, como lo especifica el número de versión del bloque de parámetros, no es admitido por el modelo, en cuyo caso se suprime la operación.
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y la longitud de la clave del registro especifica un tamaño de la clave de cero, un tamaño de la clave que no es múltiplo de 8, o un tamaño de la clave mayor de 4096, en cuyo caso se suprime la operación.
Se especifica la función de SORTL-SFLR, y la longitud de la carga útil de registro especifica un tamaño de la carga útil que no es múltiplo de 8, o un tamaño de la carga útil, cuando se agrega al tamaño de la clave, que es mayor de 4 096, en cuyo caso se suprime la operación.
Se especifica la función de SORTL-SVLR, y la longitud de la carga útil de registro especifica un tamaño de la carga útil que no es múltiplo de 8, o un tamaño de la carga útil, cuando se agrega al tamaño de la clave, que es mayor de 4 088, en cuyo caso es dependiente del modelo si la operación se suprime o se termina.
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y el valor del código de cuenta de listas de entrada activas (AILCC) más uno es mayor que el número de listas de entrada descritas por el bloque de parámetros, en cuyo caso se suprime la operación.
Se especifica la función de SORTL-SFLR o SORTL-SVLR, y una dirección de la lista de entrada correspondiente a una lista de entrada activa, no se designa en un límite de palabra doble, en cuyo caso se suprime la operación. Otras condiciones
En una forma de realización, aplican las siguientes condiciones:
La ejecución de la instrucción es interrumpible. Cuando ocurre una interrupción, las direcciones en los registros generales R1 y R2 , las longitudes en los registros generales R1 + 1 y R2 + 1, y los campos específicos del bloque de parámetros se actualizan, de modo que la instrucción, cuando se reejecuta, se reanuda en el punto de interrupción. Las excepciones de acceso no se reconocen para ubicaciones mayores de 4 Kbytes a la derecha de la ubicación designada por la dirección del primer operando. Las excepciones de acceso no se reconocen para ubicaciones mayores de 4 Kbytes a la derecha de la ubicación designada por la dirección de la lista de entrada.
Si una excepción de acceso debe reconocerse para el primer operando, el segundo operando o cualquier lista de entrada, el resultado es que se reconoce la excepción o se establece el código de condición 3. Si se establece el código de condición 3, la excepción se reconocerá cuando la instrucción se ejecute de nuevo para continuar procesando los mismos operandos, y se supone que la condición de excepción aún existe.
Cuando la clave de un registro cruza un límite de página y las condiciones de excepción de acceso existen para ambas páginas, puede reconocerse cualquier excepción de acceso.
Cuando las condiciones de excepción de acceso existen para varias claves que se están procesando durante una unidad de operación única, puede reconocerse cualquiera de estas condiciones.
Cuando el bloque de parámetros cruza un límite de página y las condiciones de excepción de acceso existen para ambas páginas, se reconoce la excepción de acceso para la página más a la izquierda.
Cuando la operación finaliza con finalización parcial, hasta 4 K-bytes de datos se pueden haber almacenado en ubicaciones dentro del primer operando que están en, o a la derecha de, la ubicación designada por la dirección actualizada del primer operando. Dichos almacenamientos dan por resultado establecer bits de cambio, si aplica, y reconocer eventos de alteración de almacenamiento de PER, si aplica. El almacenamiento en estas ubicaciones se repetirá cuando la instrucción se ejecute de nuevo para continuar procesando los mismos operandos.
Como se observa por esta CPU, otras CPU y programas de canal, las referencias al bloque de parámetros, al primer operando, a la memoria intermedia de las delineaciones de listas de salida y a las listas de entrada en el estado activo pueden ser referencias de acceso múltiple, los accesos a estas ubicaciones de almacenamiento no son necesariamente concurrentes en el bloque, y la secuencia de estos accesos o referencias es indefinido.
Los resultados son impredecibles cuando la función especificada es SORTL-SFLR o SORTL-SVLR y aplica cualquier de los siguientes, en una forma de realización:
El bloque de parámetros se superpone a cualquier lista de entrada activa o al primer operando.
Cualquier lista de entrada activa se superpone al primer operando.
El modo de fusión es cero, y el bloque de parámetros se superpone al segundo operando o a la memoria intermedia de recuperación del registro de continuación.
El modo de fusión es cero, y cualquier lista de entrada activa se superpone al segundo operando o a la memoria intermedia de recuperación del registro de continuación.
El modo de fusión es cero, y el primer operando se superpone al segundo operando o a la memoria intermedia de recuperación del registro de continuación.
El modo de fusión es cero, y el segundo operando se superpone a la memoria intermedia de recuperación del registro de continuación.
Otra CPU o programa de canal almacena en una clave de un registro en una lista de entrada o la memoria intermedia de recuperación del registro de continuación.
Códigos de condición resultantes de ejemplo:
0 Finalización normal
1 La longitud del primer operando es menor que el tamaño de un registro, o el modo de fusión es cero y la longitud del segundo operando es menor de 16 (es decir, la longitud del primero o segundo operando es inadecuada para continuar)
2 Se encontró una lista de entrada incompleta (IILF=1), o el EILCL es distinto de cero y la longitud de una lista de entrada se volvió igual a cero durante la operación (es decir, lista de entrada encontrada incompleta o vacía) 3 Cantidad de datos procesados determinados por la CPU (es decir, finalización determinada por la CPU)
Excepciones del programa:
Acceso (buscar, listas de entrada; buscar y almacenar, bloque de parámetros y memoria intermedia de recuperación del registro de continuación; almacenar, operandos 1 y 2)
Datos con DXC (código de excepción de datos) 0, operando general
Operación (si el recurso de clasificación mejorada no se instala)
Especificación
Limitación de la transacción
A continuación, se muestra un ejemplo de la prioridad de ejecución de la instrucción de listas de clasificación. Cuando existen varias condiciones que tienen valores de prioridad que comienzan con 13, la condición reconocida es la que se encuentra primero, a medida que la operación procede. Cuando la operación se está reanudando (el indicador de continuación es uno al comienzo de la ejecución de la instrucción), puede usarse un historial de comparaciones anteriores entre claves en lugar de acceder inicialmente a las listas de entrada que están activas y no vacías. Como resultado, una excepción de acceso para un acceso a una lista de entrada específica puede no encontrarse en el mismo punto de procesamiento, en comparación con el momento en que no se usa un historial de comparaciones anteriores. Cuando se procesan los registros de longitud variable, las condiciones que son una función de una longitud de registro pueden evaluarse parcialmente antes de determinarse la longitud de carga útil, y evaluarse completamente después de determinarse la longitud de carga útil. Como resultado, la prioridad observada entre dichas condiciones puede diferir cuando se determina que una condición existe solo después de evaluar parcialmente los requisitos, en vez de después de evaluar completamente todos los requisitos.
Prioridad de ejecución (SORTL) de ejemplo
I . -6 Excepciones con la misma prioridad que la prioridad de las condiciones de interrupción del programa para el caso general.
7.A Excepciones de acceso para la segunda instrucción de media palabra.
7.A Excepción de la operación.
7. C Limitación de la transacción.
8. A Excepción de especificación debido a un código de función inválido y un número de registro inválido.
8.B Excepción de especificación debido a un primer operando no designado en el límite de palabra doble.
8.C Excepción de especificación debido a un primer operando no designado en el límite de palabra doble.
8. D Excepción de especificación debido a un segundo operando no designado en el límite de palabra doble, y el modo de fusión de cero.
9. Excepciones de acceso para un acceso a los bytes 0-7 del bloque de parámetros.
10. Excepción de datos de operando general debido a un valor no admitido del campo de PBVN en el bloque de parámetros.
I I . Excepciones de acceso para un acceso a los bytes del bloque de parámetros distintos de los bytes 0-7.
12. Excepción de datos de operando general debido a un valor inválido de un campo en el bloque de parámetros distinto del PBVN.
13. A Excepciones de acceso para un acceso a una lista de entrada activa.
13.B Excepciones de acceso para un acceso a la memoria intermedia de recuperación del registro de continuación cuando el modo de fusión es cero.
13.C Excepciones de acceso para un acceso al primer operando.
13.D Excepciones de acceso para un acceso al segundo operando cuando el modo de fusión es cero.
13.E Código de condición 2 debido a una lista de entrada incompleta.
13.F Código de condición 1 debido a una longitud inadecuada del primer operando.
13.G Código de condición 1 debido a una longitud inadecuada del segundo operando cuando el modo de fusión es cero.
13. H Excepción de datos de operando general debido a una longitud de carga útil inválida de un registro de longitud variable.
13.1 Código de condición 2 debido a una lista de entrada vacía.
14. Código de condición 3.
Notas de programación. En una forma de realización: 1. Los usos pretendidos del control de listas de entrada vacías (EILCL) son los siguientes:
EILCL (0:1)
Descripción (binaria)
00 Para después de que los registros de las listas de entrada activas se clasifican (p. ej., todos los registros de todas las listas de entrada activas).
10 Para después de que la lista de entrada 0 (siempre activa) se vuelve vacía.
11 Para después de que cualquier lista de entrada activa se vuelve vacía.
2. Cuando el código de cuenta de las listas de entrada activas (AILCC) es cero, existe, p. ej., solo una lista de entrada activa, y los resultados almacenados en la ubicación del primer operando son los mismos que los datos buscados en la lista de entrada 0.
3. Los modelos que implementan una instrucción separada y las cachés de datos pueden usar la caché de instrucción para realizar referencias de búsqueda de operando en el almacenamiento para datos en listas de entrada activas.
4. Cuando un programa espera invocar listas de clasificación varias veces con un modo de fusión igual a cero, como parte del procesamiento de un conjunto de datos grande, el programa debe utilizar, en un ejemplo, las listas de entrada disponibles y particionar de forma pareja los registros entre las listas de entrada. Esto reduce el número de veces que se accede a los datos cuando se clasifica todo el conjunto de datos.
5. Tras las listas de clasificación con modo de fusión igual a cero que finaliza con un código de condición 0 establecido y varias delineaciones de la lista de salida (OLD) en el segundo operando, un programa que pretende generar una única lista de registros en orden clasificado debe invocar otra operación de listas de clasificación con listas de entrada especificadas para ser las OLD resultantes de la invocación anterior de las listas de clasificación. En este caso, en un ejemplo, la segunda invocación de las listas de clasificación especifica que el modo de fusión es igual a uno.
De manera similar, en una forma de realización, tras invocar las listas de clasificación con modo de fusión igual a cero, durante tantas veces como sea necesario o conveniente, para generar un conjunto total de listas de listas clasificadas a partir de un número grande de registros ordenados aleatoriamente, se invocan las listas de clasificación, en un ejemplo, con modo de fusión igual a uno, durante tantas veces como sea necesario o conveniente, para generar una única lista clasificada.
6. Para reducir el número de veces que se accede a cada registro cuando se fusionan varias listas clasificadas en una única lista con orden de clasificación ascendente (por ejemplo), el programa realiza el proceso siguiente, en una forma de realización:
Determina el número máximo, N, de listas de entrada disponibles para las listas de clasificación.
Compara las claves del primer registro de las listas clasificadas que aún no se han fusionados en una lista única. Selecciona las listas N que tienen los valores más bajos de la primera clave.
Ejecuta las listas de clasificación con modo de fusión (MM) igual a uno, el control de listas de entrada vacías (EILCL) igual a 10 binario, la lista de entrada 0 que especifica solo el primer registro de la lista con el más alto de la primera clave de las listas N seleccionadas y las listas de entrada restantes que especifican las listas seleccionadas distintas de N-1.
Tras las listas de clasificación que finalizan con código de condición 2, IILF igual a cero y EILF igual a cero, repite el proceso.
7. Tras las listas de clasificación que finalizan con un código de condición 1 establecido, el programa realiza las acciones siguientes, en un ejemplo, antes de invocar las listas de clasificación de nuevo, para reanudar la operación:
Si la longitud del primer operando es menor que la longitud de registro más grande de los registros que se están procesando, a continuación la longitud del primer operando o la dirección y longitud del primer operando debe actualizarse, según sea el caso.
Si el modo de fusión (MM) es cero y la longitud del segundo operando es menor de 16, a continuación la longitud del segundo operando o la dirección y longitud del segundo operando debe actualizarse, según sea el caso.
Si la longitud de cualquier lista de entrada activa es igual a cero, a continuación la dirección y longitud de la lista de entrada correspondiente puede actualizarse para designar otra lista de registros para incluirse en la operación de clasificación.
8. Tras las listas de clasificación que finalizan con un código de condición 2 establecido, el programa realiza las acciones siguientes, en un ejemplo, antes de invocar las listas de clasificación de nuevo, para reanudar la operación:
Si el indicador de la lista de entrada incompleta (IILF) es uno, a continuación la longitud de la lista de entrada y la dirección y longitud de la lista de entrada identificada por el número de la lista de entrada incompleta (IILN) debe actualizarse, según sea el caso.
Si el indicador de la lista de entrada vacía (EILF) es uno, a continuación la longitud de la lista de entrada y la dirección y longitud de la lista de entrada identificada por el número de la lista de entrada vacía (EILN) debe actualizarse, según sea el caso.
Si el IILF es cero, el EILF es cero y la longitud de la lista de entrada 0 es cero, a continuación la longitud de la lista de entrada 0 o la dirección y longitud de la lista de entrada 0 debe actualizarse, según sea el caso. Además, la dirección y longitud de la lista de entrada para las listas de entrada activas puede actualizarse, que puede ser la acción apropiada si hubiera solo un registro designado por la lista de entrada 0 originalmente, y el control de listas de entrada vacías (EILCL) es 10 binario.
Si el modo de fusión (MM) es uno y la longitud del primer operando es menor que la longitud de registro más grande de los registros que se están procesando, a continuación la longitud del primer operando o la dirección y longitud del primer operando debe actualizarse, según sea el caso.
Si MM es cero e IILF es uno, o EILF es uno, a continuación la dirección y longitud del primer operando, y la dirección y longitud del segundo operando no debe actualizarse.
Si el MM es cero, el IILF es cero, el EILF es cero y la longitud del primer operando es menor que la longitud de registro más grande de los registros que se están procesando, a continuación la longitud del primer operando o la dirección y longitud del primer operando debe actualizarse, según sea el caso.
Si el MM, el IILF es cero, el EILF es cero y la longitud del segundo operando es menor de 16, a continuación la longitud del segundo operando o la dirección y longitud del segundo operando debe actualizarse, según sea el caso.
Como se describe en el presente documento, en un aspecto, una única instrucción (p. ej., una única instrucción de máquina diseñada, listas de clasificación) se proporciona para realizar operaciones de clasificación y/o fusión en un procesador de propósito general. En un ejemplo, un programa que implementa operaciones de clasificación y/o fusión para una base de datos y que se está ejecutando en un procesador de propósito general puede reemplazar un subconjunto significativo de instrucciones primitivas para implementar las operaciones con una única instrucción. Esta instrucción es, por ejemplo, una instrucción de hardware definida en una arquitectura de conjunto de instrucciones (ISA). Como resultado, se reduce la complejidad del programa relacionado con las operaciones de clasificación y/o fusión. Además, se mejora la realización de las operaciones y, por lo tanto, del procesador.
De manera beneficiosa, la instrucción de listas de clasificación se ejecuta en un procesador de propósito general (p. ej., unidad de procesamiento central, denominada en el presente documento un procesador), más que un procesador de propósito especial, como una unidad de procesamiento gráfico (GPU), un motor de base de datos (DBE) u otros tipos de procesadores de propósito especial.
Si bien se describen diversos campos y registros, uno o más aspectos de la presente invención pueden usar otros campos o registros, adicionales o menos, u otros tamaños de campos y registros, etc. Muchas variaciones son posibles. Por ejemplo, los registros implícitos pueden usarse en vez de registros o campos de la instrucción especificados explícitamente, y/o registros o campos especificados explícitamente pueden usarse en vez de registros o campos implícitos. Otras variaciones también son posibles.
En un ejemplo, la instrucción de listas de clasificación opera en una gran cantidad de datos de una base de datos (p. ej., una base de datos comercial), como megabytes o terabytes de datos. Por lo tanto, la instrucción es interrumpible, y el procesamiento puede reanudarse en el lugar que se interrumpió.
Más detalles de una forma de realización de procesamiento relacionada con la instrucción de listas de clasificación se describen en referencia a las FIG. 10A-10B. En un ejemplo, este procesamiento es realizado por un procesador, como procesador 102 o 204.
En un ejemplo, se obtiene la instrucción de listas de clasificación y comienza la ejecución, PASO 1000. Como se indicó anteriormente, una pluralidad de funciones puede especificarse para la instrucción de listas de clasificación y, por lo tanto, se hace una determinación en cuanto a la función que debe realizarse, PASO 1002. Si la función es una función de consulta (p. ej., el código de función 0 se especifica en el registro general 0), PREGUNTA 1004, a continuación se proporcionan las funciones disponibles, PASO 1006. Por ejemplo, el vector de funciones instaladas 342, el vector de tamaños de interfaces instalados 344 y el vector de formatos del bloque de parámetros instalados 346 se almacenan en el bloque de parámetros.
No obstante, si no se solicita la función de consulta, PREGUNTA 1004, a continuación se hace una determinación en cuanto a si se está solicitando una función de clasificación, como los registros de longitud fija de clasificación o los registros de longitud variable de clasificación, PREGUNTA 1008. Si no se especifica una consulta o función de clasificación, a continuación en un ejemplo, el procesamiento finaliza con, por ejemplo, una excepción de especificación, PASO 1010. No obstante, si se especifica una función de clasificación, a continuación se hace otra determinación en cuanto a si se solicita una fusión (p. ej., si el modo de fusión 310 se establece en uno), PREGUNTA 1012.
Si no se está solicitando una fusión, a continuación la clasificación se realiza en una pluralidad de listas de entrada obtenidas mediante el bloque de parámetros especificado por el registro general 1 (p. ej., campos de dirección de la lista de entrada 392, 394, 396 del bloque de parámetros), PASO 1020. En una forma de realización, una pluralidad de registros es particionada (p. ej., de forma pareja) por el programa que emite la instrucción de listas de clasificación en una pluralidad de listas de entrada. La pluralidad de listas de entrada se clasifica mediante las claves de los registros, PASO 1022. La clasificación puede ser ascendente o descendente, como se indica en el campo de orden de clasificación 366 del bloque de parámetros.
La clasificación produce listas de salida intermedias, cada una de las cuales está en orden clasificado. Estas listas de salida se almacenan en el primer operando, PASO 1024, y una delineación de cada lista se almacena en el segundo operando, PASO 1026.
Si se desea una única lista de registros clasificados, a continuación se reejecuta la instrucción de listas de clasificación, en una forma de realización, y se especifica la opción de fusión.
Volviendo a la PREGUNTA 1012, si se especifica una fusión, a continuación la entrada es una pluralidad de listas en orden preclasificado, que en un ejemplo, se especifican mediante el bloque de parámetros, PASO 1030. Estas listas se fusionan en una única lista mediante las claves de los registros en las listas, PASO 1032. La lista fusionada se almacena en el primer operando, PASO 1034.
En una forma de realización, en referencia a la FIG. 10B, la operación de clasificación o fusión puede interrumpirse y, por lo tanto, en un ejemplo, si la operación se interrumpe, PREGUNTA 1050, a continuación un indicador de continuación (p. ej., el indicador de continuación 368 del bloque de parámetros) se establece, p. ej. en uno, PASO 1052. Además, la información que puede usarse para posteriormente reanudar la operación se almacena, p. ej., en el bloque de parámetros, PASO 1054. Por ejemplo, los metadatos, como la información relacionada con comparaciones realizadas previamente, se almacenan en la memoria intermedia del estado de continuación 390, de modo que dichas comparaciones no tienen que repetirse. También puede almacenarse información adicional o diferente, y/o pueden establecerse otros indicadores. Muchas variaciones son posibles.
Uno o más aspectos de la presente invención están inextricablemente ligados a la tecnología de ordenadores y facilitan el procesamiento dentro de un ordenador, lo que mejora el rendimiento del mismo. El uso de una única instrucción de máquina diseñada para realizar la clasificación y/o fusión de un gran número de registros de base de datos de una base de datos reemplaza muchas instrucciones de software, lo que mejora el rendimiento en el entorno informático. Estos registros clasificados y/o fusionados pueden usarse en muchos campos técnicos que gestionan y/o usan grandes cantidades de datos, como en procesamiento de ordenadores, procesamiento médico, seguridad, etc. Al proporcionar optimizaciones en clasificación/fusión, estos campos técnicos se mejoran al reducir el tiempo de ejecución en obtener información y usar la información y al reducir los requisitos de almacenamiento.
Más detalles de una forma de realización que facilita el procesamiento en un entorno informático, puesto que se refiere a uno o más aspectos de la presente invención, se describen en referencia a las FIG. 11A-11B.
En referencia a la FIG. 11A, se obtiene una instrucción para realizar una operación de clasificación (1100). La instrucción es una única instrucción de máquina diseñada de una arquitectura de conjunto de instrucciones (1102), y es ejecutada mediante un procesador de propósito general del entorno informático (1104). La ejecución incluye, por ejemplo, clasificar una pluralidad de listas de entrada para obtener una o más listas de salida clasificadas (1106), y proporcionar como salida la una o más listas de salida clasificadas (1108).
En una forma de realización, la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación y un campo que debe usarse para designar una ubicación, la una ubicación que debe usarse en el almacenamiento de la una o más listas de salida clasificadas (1110). En otra forma de realización, la instrucción incluye otro campo que debe usarse para designar otra ubicación, la otra ubicación para almacenar una o más delineaciones de la lista de salida (1112). Como ejemplos, el un campo es un campo de registro, designando el campo de registro un registro, incluyendo el registro una dirección de la una ubicación, y el otro campo es otro campo de registro, designando el otro campo de registro otro registro, incluyendo el otro registro una dirección de la otra ubicación (1114).
En un ejemplo, en referencia a la FIG. 11B, la instrucción emplea un registro implícito para determinar una función que debe realizar la instrucción (1120). Como ejemplo, la función se selecciona de un grupo de funciones que consisten en: una función de funciones de consulta disponibles, una función de registros de longitud fija de clasificación y una función de registros de longitud variable de clasificación (1122).
Como ejemplo adicional, la instrucción emplea otro registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción (1123). El bloque de parámetros incluye información usada por la instrucción según la función para realizar (1124). En un ejemplo en particular, la función para realizar es una función de registros de longitud fija de clasificación o una función de registros de longitud variable de clasificación, y el bloque de parámetros
incluye información para ubicar la pluralidad de listas de entrada e información para continuar la clasificación, sobre la base de que se está interrumpiendo la clasificación (1126).
En una forma de realización, el un registro implícito incluye además un modo de indicador de operación, el modo de indicador de operación que debe usarse para especificar si debe realizarse una fusión de la una o más listas de salida clasificadas (1128).
Como un ejemplo en particular, la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación; un campo de primer registro que incluye una designación de un primer registro, incluyendo el primer registro una dirección usada en el almacenamiento de la una o más listas de salida clasificadas; y un campo de segundo registro que incluye una designación de un segundo registro, incluyendo el segundo registro una dirección usada en el almacenamiento de una o más delineaciones de la lista de salida, y en donde la instrucción emplea un primer registro implícito para determinar una función que debe realizar la instrucción y un segundo registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción (1130).
Otras variaciones y formas de realización son posibles.
Los aspectos de la presente invención pueden ser usados por muchos tipos de entornos informáticos. Otra forma de realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se describe en referencia a la FIG. 12A. En este ejemplo, un entorno informático 10 incluye, por ejemplo, una unidad de procesamiento central (CPU) nativa 12, una memoria 14, y uno o más dispositivos y/o interfaces de entrada/salida 16 acoplados entre sí mediante, por ejemplo, uno o más buses 18 y/u otras conexiones. Como ejemplos, el entorno informático 10 puede incluir un procesador PowerPC® ofrecido por International Business Machines Corporation, Armonk, Nueva York; un HP Superdome con procesadores Intel Itanium II ofrecido por Hewlett Packard Co., Palo Alto, California; y/u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Hewlett Packard, Intel Corporation, Oracle u otros. IBM, z/Architecture, IBM Z, z/OS, PR/SM y PowerPC son marcas comerciales o marcas comerciales registradas de International Business Machines Corporation en al menos una jurisdicción. Intel e Itanium son marcas comerciales o marcas comerciales registradas de Intel Corporation o sus filiales en los Estados Unidos de América u otros países.
La unidad de procesamiento central nativa 12 incluye uno o más registros nativos 20, 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 en el entorno. Estos registros incluyen información que representa el estado del entorno en cualquier momento en particular.
Asimismo, la unidad de procesamiento central nativa 12 ejecuta instrucciones y un código que se almacenan en la memoria 14. En un ejemplo en particular, la unidad de procesamiento central ejecuta un código de emulador 22 almacenado en la memoria 14. Este código permite que el entorno informático configurado en una arquitectura emule otra arquitectura. Por ejemplo, el código de emulador 22 permite que las máquinas basadas en arquitecturas distintas de la arquitectura de hardware z/Architecture, como procesadores PowerPC, servidores HP Superdome u otros, emulen la arquitectura de hardware z/Architecture y ejecuten un software e instrucciones desarrolladas sobre la base de la arquitectura de hardware z/Architecture.
Más detalles relacionados con el código de emulador 22 se describen en referencia a la FIG. 12B. Las instrucciones de invitado 30 almacenadas en la memoria 14 comprenden instrucciones de software (p. ej., se correlacionan con instrucciones de máquina) que se desarrollaron para ejecutarse en una arquitectura distinta de aquella de la CPU nativa 12. Por ejemplo, las instrucciones de invitado 30 se pueden haber diseñado para ejecutarse en un procesador sobre la base de una arquitectura de hardware z/Architecture, pero en cambio, se están emulando en la CPU nativa 12, que puede ser, por ejemplo, un procesador Intel Itanium II. En un ejemplo, el código de emulador 22 incluye una rutina de búsqueda de instrucciones 32 para obtener una o más instrucciones de invitado 30 de la memoria 14 y para proporcionar opcionalmente almacenamiento en la memoria intermedia local para las instrucciones obtenidas. T ambién incluye una rutina de traducción de instrucciones 34 para determinar el tipo de instrucción de invitado que se ha obtenido y para traducir la instrucción de invitado a una o más instrucciones nativas correspondientes 36. Esta traducción incluye, por ejemplo, identificar la función que debe realizar la instrucción de invitado y elegir la(s) instrucción(es) para realizar dicha función.
Además, el código de emulador 22 incluye una rutina de control de emulación 40 para hacer que las instrucciones nativas se ejecuten. La rutina de control de emulación 40 puede hacer que la CPU nativa 12 ejecute una rutina de instrucciones nativas que emula una o más instrucciones de invitado previamente obtenidas y, en la conclusión de dicha ejecución, devuelva el control a la rutina de búsqueda 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 las instrucciones nativas 36 pueden incluir cargar datos en un registro desde la memoria 14; almacenar datos de vuelta a la memoria desde un registro; o realizar algún tipo de operación aritmética o lógica, como lo determina la rutina de traducción.
Cada rutina, por ejemplo, se implementa en el software, que se almacena en la memoria y es ejecutada por la unidad de procesamiento central 12. En otros ejemplos, una o más de las rutinas u operaciones se implementan en el firmware, el hardware o el software, o alguna combinación de los mismos. Los registros del procesador emulado pueden emularse mediante registros 20 de la CPU nativa o al usar ubicaciones en la memoria 14. En formas de realización, las instrucciones de invitado 30, las instrucciones nativas 36 y el código de emulador 22 pueden residir en la misma memoria o pueden dispersarse entre diferentes dispositivos de memoria.
Los entornos informáticos descritos anteriormente son solo ejemplos de entornos informáticos que pueden usarse. Pueden usarse otros entornos, incluidos, entre otros, otros entornos no particionados, otros entornos particionados y/u otros entornos emulados; las formas de realización no se limitan a ningún entorno.
Cada entorno informático puede estar configurado para incluir uno o más aspectos de la presente invención. Por ejemplo, cada uno puede estar configurado para proporcionar clasificación y/o fusión, de conformidad con uno o más aspectos de la presente invención.
Uno o más aspectos puede referirse a la informática en la nube.
Debe entenderse que, si bien la presente divulgación incluye una descripción detallada sobre informática en la nube, la implementación de las enseñanzas mencionadas en el presente documento no se limita a un entorno informático en la nube. Más bien, las formas de realización de la presente invención pueden implementarse junto con cualquier otro tipo de entorno informático conocido actualmente o desarrollado posteriormente.
La informática en la nube es un modelo de prestación de servicios para permitir un acceso de red conveniente y a demanda a un grupo compartido de recursos informáticos configurables (p. ej., redes, ancho de banda de red, servidores, procesamiento, memoria, almacenamiento, aplicaciones, máquinas virtuales y servicios) que pueden aprovisionarse y liberarse rápidamente con un mínimo esfuerzo de gestión o interacción con un proveedor del servicio. Este modelo en la nube puede incluir al menos cinco características, al menos tres modelos de servicio y al menos cuatro modelos de despliegue.
Las características son las siguientes:
Autoservicio a demanda: un consumidor de la nube puede suministrar unilateralmente capacidades informáticas, como tiempo del servidor y almacenamiento en red, según sea necesario, de forma automática, sin requerir la interacción humana con el proveedor del servicio.
Amplio acceso a la red: las capacidades están disponibles a través de una red y se accede a ellas a través de mecanismos estándar que promueven el uso mediante plataformas heterogéneas de clientes ligeros o pesados (p. ej., teléfonos móviles, ordenadores portátiles y PDA).
Agrupación de recursos: los recursos informáticos del proveedor se agrupan para servir a varios consumidores mediante un modelo de múltiples inquilinos, con diferentes recursos físicos y virtuales asignados y reasignados dinámicamente según la demanda. Existe una sensación de independencia de ubicación en el sentido de que el consumidor generalmente no tiene control o conocimiento sobre la ubicación exacta de los recursos proporcionados, pero puede especificar la ubicación en un nivel más alto de abstracción (p. ej., país, estado o centro de datos).
Elasticidad rápida: las capacidades pueden aprovisionarse rápida y elásticamente, en algunos casos de manera automática, para ampliar la escala rápido y liberarse rápidamente para reducir la escala rápido. Para el consumidor, las capacidades disponibles para aprovisionamiento suelen parecer ilimitadas y pueden adquirirse en cualquier cantidad en cualquier momento.
Servicio medido: los sistemas en la nube controlan y optimizan automáticamente el uso de recursos al aprovechar una capacidad de medición en algún nivel de abstracción apropiado para el tipo de servicio (p. ej., almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de recursos se puede monitorear, controlar e informar, y se proporciona transparencia tanto para el proveedor como para el consumidor del servicio utilizado.
Los modelos de servicio son los siguientes:
Software como servicio (SaaS): la capacidad proporcionada al consumidor es para usar las aplicaciones del proveedor que se ejecutan en una infraestructura de nube. Estas aplicaciones son accesibles desde diversos dispositivos del cliente a través de una interfaz de cliente ligero, como un navegador web (p. ej., correo electrónico en la web). El consumidor no gestiona ni controla la infraestructura de nube subyacente, incluidos la red, los servidores, los sistemas operativos, el almacenamiento o incluso las capacidades individuales de las aplicaciones, con la posible excepción de los ajustes de configuración limitados de las aplicaciones específicas del usuario.
Plataforma como servicio (PaaS): la capacidad proporcionada al consumidor es para desplegar en la infraestructura de nube aplicaciones creadas o adquiridas por el consumidor, creadas mediante lenguajes de programación y herramientas compatibles con el proveedor. El consumidor no gestiona ni controla la infraestructura de nube subyacente, incluidos la red, los servidores, los sistemas operativos o el almacenamiento, pero tiene control sobre las aplicaciones desplegadas y posiblemente sobre configuraciones del entorno de alojamiento de aplicaciones.
Infraestructura como servicio (laaS): la capacidad proporcionada al consumidor es para aprovisionar procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales en los que el consumidor puede desplegar y ejecutar un software arbitrario, que puede incluir sistemas operativos y aplicaciones. El consumidor no gestiona ni controla la infraestructura de nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones desplegadas y posiblemente un control limitado de los componentes de conexión en redes seleccionados (p. ej., cortafuegos de anfitrión).
Los modelos de despliegue son los siguientes:
Nube privada: la infraestructura de nube se opera únicamente para una organización. Puede ser gestionada por la organización o un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube comunitaria: la infraestructura de nube es compartida por varias organizaciones y apoya a una comunidad específica que tiene preocupaciones compartidas (p. ej., misión, requisitos de seguridad, política y consideraciones de conformidad). Puede ser gestionada por las organizaciones o un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube pública: la infraestructura de nube se pone a disposición del público en general o de un grupo industrial grande, y es propiedad de una organización que comercializa servicios en la nube.
Nube híbrida: la infraestructura de nube es una composición de dos o más nubes (privadas, comunitarias o públicas) que siguen siendo entidades singulares pero están unidas entre sí por una tecnología estandarizada o patentada que habilita la portabilidad de datos y de aplicaciones (p. e., explosión en la nube para el equilibrio de carga entre nubes).
Un entorno informático en la nube está orientado a servicios con un enfoque en la ausencia de estado, el acoplamiento bajo, la modularidad e la interoperabilidad semántica. En el corazón de la informática en la nube se encuentra una infraestructura que incluye una red de nodos interconectados.
En referencia a la FIG. 13, se representa el entorno informático en la nube 50 ilustrativo. Como se muestra, el entorno informático en la nube 50 incluye uno o más nodos informáticos en la nube 52 con los que pueden comunicarse dispositivos informáticos locales usados por los consumidores de la nube, como, por ejemplo, asistente personal digital (PDA) o teléfono móvil 54A, ordenador de escritorio 54B, ordenador portátil 54C y/o sistema de ordenador del automóvil 54N. Los nodos 52 pueden comunicarse entre sí. Pueden estar agrupados (no mostrado) física o virtualmente, en una o más redes, como nubes privadas, comunitarias o híbridas, como se describe más arriba en la presente, o una combinación de los mismos. Esto permite que el entorno informático en la nube 50 ofrezca infraestructura, plataformas y/o software como servicios para los cuales un consumidor de la nube no necesita mantener los recursos en un dispositivo informático local. Se entiende que los tipos de dispositivos informáticos 54A-N mostrados en la FIG. 13 se pretende que sean solo ilustrativos y que los nodos informáticos 52 y el entorno informático en la nube 50 puede comunicarse con cualquier tipo de dispositivo informatizado con cualquier tipo de red y/o una conexión direccionable de red (p. ej., mediante un navegador web).
En referencia a la FIG. 14, se muestra un conjunto de capas de abstracción funcionales proporcionadas por el entorno informático en la nube 50 (FIG. 13). Debe entenderse en adelante que los componentes, las capas y las funciones mostrados en la FIG. 14 se pretende que sean solo ilustrativos y las formas de realización de la invención no se limitan a ello. Según lo representado, se proporcionan las capas siguientes y las funciones correspondientes:
La capa de hardware y software 60 incluye componentes de hardware y software. Los ejemplos de componentes de hardware incluyen: unidades centrales 61; servidores de arquitectura RISC (ordenador de conjunto de instrucciones reducido) 62; servidores 63; servidores blade 64; dispositivos de almacenamiento 65; y redes y componentes de conexión en redes 66. En algunas formas de realización, los componentes de software incluyen un software de servidor de aplicaciones de red 67 y un software de base de datos 68.
La capa de virtualización 70 proporciona una capa de abstracción a partir de la cual pueden proporcionarse los siguientes ejemplos de entidades virtuales: servidores virtuales 71; almacenamiento virtual 72; redes virtuales 73, incluidas redes privadas virtuales; aplicaciones y sistemas operativos virtuales 74; y clientes virtuales 75.
En un ejemplo, la capa de gestión 80 puede proporcionar las funciones descritas a continuación. El aprovisionamiento de recursos 81 proporciona una adquisición dinámica de recursos informáticos y otros recursos que se utilizan para realizar tareas en el entorno informático en la nube. La medición y la fijación de precios 82 proporcionan un seguimiento
de costes a medida que se utilizan recursos en el entorno informático en la nube, y una cobranza o facturación para el consumo de estos recursos. En un ejemplo, estos recursos pueden incluir licencias de software de aplicaciones. La seguridad proporciona una verificación de identidad para consumidores y tareas en la nube, así como también protección para datos y otros recursos. El portal de usuarios 83 proporciona acceso al entorno informático en la nube para consumidores y
administradores de sistemas. La gestión de nivel de servicio 84 proporciona una asignación y gestión de recursos informáticos en la nube, de modo tal que se cumplan los niveles de servicio requeridos. La planificación y el cumplimiento del acuerdo de nivel de servicio (SLA) 85 proporciona un preacuerdo para, y una adquisición de, recursos informáticos en la nube para los cuales se anticipa un requisito futuro de conformidad con un SLA.
La capa de cargas de trabajo 90 proporciona ejemplos de funcionalidad para las cuales puede utilizarse el entorno informático en la nube. Los ejemplos de cargas de trabajo y funciones que pueden proporcionarse a partir de esta capa incluyen: correspondencia y navegación 91; desarrollo de software y gestión del ciclo de vida 92; prestación de educación en aula virtual 93; procesamiento de analítica de datos 94; procesamiento de transacciones 95; y procesamiento de clasificación y/o fusión 96.
Los aspectos de la presente invención pueden ser un sistema, un procedimiento y/o un producto de programa informático en cualquier grado de detalle técnico posible de integración. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible(s) por ordenador con instrucciones de programa legibles por ordenador en el mismo a fin de hacer que el 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 el uso mediante un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, entre otros, 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 de semiconductores o cualquier combinación adecuada de los anteriores. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador 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 portátil (CD-ROM), un disco versátil digital (DVD), una tarjeta de memoria, un disco flexible, un dispositivo codificado mecánicamente, como tarjetas perforadas o estructuras en relieve en una ranura que tiene instrucciones registradas en las mismas, y cualquier combinación adecuada de los anteriores. Un medio de almacenamiento legible por ordenador, como se usa en el presente documento, no debe interpretarse como señales transitorias per se, 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 (p. ej., impulsos luminosos 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 legibles por ordenador descritas en el presente documento se pueden descargar en los respectivos dispositivos informáticos / de procesamiento desde un medio de almacenamiento legible por ordenador o en un ordenador externo o dispositivo de almacenamiento externo a través 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, ordenadores de pasarela y/o servidores de borde. 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 envía las instrucciones de programa legibles por ordenador para almacenamiento en un medio de almacenamiento legible por ordenador dentro del respectivo dispositivo informático / de procesamiento.
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 un conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de la máquina, microcódigo, instrucciones de firmware, datos de ajuste de estado, datos de configuración para circuitos integrados, o código fuente u objeto código escrito en cualquier combinación de uno o más lenguajes de programación, incluido un lenguaje de programación orientado a objetos, como Smalltalk, C++ o similares, y lenguajes de programación de procedimientos, como el lenguaje de programación «C» o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse en su totalidad en el ordenador del usuario, en parte en el ordenador del usuario, como un paquete de software independiente, en parte en el ordenador del usuario y en parte en un ordenador remoto, o en su totalidad en el ordenador o servidor remotos. 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 a un ordenador externo (por ejemplo, a través de Internet utilizando un proveedor de servicios de Internet). En algunas formas de realización, los circuitos electrónicos que incluyen, por ejemplo, circuitos lógicos programables, matrices de puertas programables en campo (FPGA) o matrices lógicas programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador al utilizar información de estado de las instrucciones del programa legibles por ordenador para personalizar el circuito electrónico, con el fin de realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en el presente documento en referencia a ilustraciones de diagramas de flujo y/o diagramas de bloques de procedimientos, aparatos (sistemas) y productos de programas informáticos de acuerdo con formas de realización de la invención. Se entenderá que cada bloque de las ilustraciones del diagrama de flujo y/o diagramas de bloques, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o diagramas de bloques, pueden implementarse mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador se pueden proporcionar al procesador de un ordenador de propósito general, de un ordenador de propósito especial o de otro aparato programable de procesamiento de datos para producir una máquina, de manera que las instrucciones, que se ejecutan a través del procesador del ordenador o de otro aparato programable de procesamiento de datos, creen medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques. Estas instrucciones de programa legibles por ordenador también se pueden almacenar en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato programable de procesamiento de datos y/u otros dispositivos para que funcionen de una manera particular, de modo que el medio de almacenamiento legible por ordenador que tiene las instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
Las instrucciones de programa legibles por ordenador también se pueden cargar en un ordenador, otro aparato programable de procesamiento de datos u otro dispositivo para hacer que se realice una serie de pasos operativos en el ordenador, otro aparato programable u otro dispositivo para producir un procedimiento implementado por ordenador, de manera que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementen las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
El diagrama de flujo y los diagramas de bloques en las figuras ilustran la arquitectura, la funcionalidad y el funcionamiento de posibles implementaciones de sistemas, procedimientos y productos de programas informáticos de acuerdo con diversas formas de realización de la presente invención. En este sentido, cada bloque en el diagrama de flujo o diagramas de bloques puede representar un módulo, segmento o parte de instrucciones, que comprende una o más instrucciones ejecutables para implementar la función(es) lógica(s) especificada(s). En algunas implementaciones alternativas, las funciones indicadas en el bloque pueden ocurrir fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse esencialmente al mismo tiempo, o los bloques pueden ejecutarse a veces en el orden inverso, dependiendo de la funcionalidad en cuestión. También se observará que cada bloque de los diagramas de bloques y/o ilustración del diagrama de flujo, y las combinaciones de bloques en los diagramas de bloques y/o ilustración del diagrama de flujo, se pueden implementar mediante sistemas basados en hardware de propósito especial que realizan las funciones o actos especificados o llevan a cabo combinaciones de hardware de propósito especial e instrucciones informáticas.
Además de lo anterior, uno o más aspectos pueden ser provistos, ofrecidos, desplegados, gestionados, atendidos, etc. por un proveedor de servicios que ofrece gestión de entornos de cliente. Por ejemplo, el proveedor de servicios puede crear, mantener, asistir, etc. Un 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 un pago del cliente en virtud de un acuerdo de suscripción y/o tarifa, como ejemplos. De manera adicional, o alternativa, el proveedor de servicios puede recibir un pago de la venta de contenido publicitario a uno o más terceros.
En un aspecto, puede desplegarse una aplicación para realizar una o más formas de realización. Como un ejemplo, el despliegue de una aplicación comprende proporcionar una infraestructura informática operable para realizar una o más formas de realización.
Como un aspecto adicional, una infraestructura informática puede desplegarse que comprende integrar un código legible por ordenador a un sistema de computación, en el que el código en combinación con el sistema de computación puede realizar una o más formas de realización.
Como un aspecto adicional más, puede proporcionarse un procedimiento para integrar una infraestructura informática que comprende integrar un código legible por ordenador a un sistema informático. El sistema informático comprende un medio legible por ordenador, en el que el medio informático comprende una o más formas de realización. El código en combinación con el sistema informático puede realizar una o más formas de realización.
Si bien diversas formas de realización se describen anteriormente, estas son solo ejemplos. Por ejemplo, los entornos informáticos de otras arquitecturas pueden usarse para incorporar y usar una o más formas de realización. Además, pueden usarse instrucciones u operaciones diferentes. Adicionalmente, pueden usarse registros diferentes y/o pueden especificarse otros tipos de indicaciones (distintas de los números de registro). Muchas variaciones son posibles.
Además, otros tipos de entornos informáticos pueden beneficiar y usarse. Como ejemplo, un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar un código de programa es usable que incluye al menos dos
procesadores acoplados directa o indirectamente a los 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 de programa, almacenamiento en masa y una memoria caché que proporciona un almacenamiento de al menos algunos códigos de programa para reducir el número de veces que debe recuperarse el código del almacenamiento en masa durante la ejecución.
Los dispositivos de entrada/salida o E/S (incluidos, entre otros, teclados, pantallas, dispositivos señaladores, DASD, cinta, CD, DVD, memoria USB y otros medios de memoria, etc.) pueden acoplarse al sistema directamente o mediante controladores de E/S intervinientes. Los adaptadores de red también pueden acoplarse al sistema para permitir que el sistema de procesamiento de datos se acople a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes públicas o privadas intervinientes, Los módem, los módem por cable y las tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
La terminología usada en el presente documento tiene solo el propósito de describir formas de realización en particular y no pretende ser limitativa. Como se usan en el presente documento, las formas singulares «un», «una», «el» y «la» pretenden incluir las formas plurales también, a menos que el contexto indique claramente lo contrario. Se entenderá además que los términos «comprende» y/o «que comprende», cuando se usan en la presente memoria descriptiva, especifican la presencia de características, enteros, etapas, operaciones, elementos y/o componentes mencionados, pero no excluyen la presencia o adición de una o más de otras características, enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las correspondientes estructuras, materiales, actos y equivalentes de todos los medios o pasos más elementos de función en las reivindicaciones a continuación, si hubiere, pretenden incluir cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados, como se reivindica específicamente. La descripción de una o más formas de realización se ha presentado con fines ilustrativos y descriptivos, pero no pretende ser exhaustiva o limitada en la forma divulgada. Muchas modificaciones y variaciones se pondrán de manifiesto para los expertos en la técnica. La forma de realización se eligió y describió con el fin de explicar mejor los diversos aspectos y la aplicación práctica, y para permitir que otros expertos en la técnica comprendan diversas formas de realización con diversas modificaciones que se adaptan al uso contemplado en particular.
Claims (14)
1. Un producto de programa informático para facilitar un procesamiento en un entorno informático (100), comprendiendo el producto de programa informático:
un medio de almacenamiento legible por ordenador (104) legible por un circuito de procesamiento e instrucciones de almacenamiento para realizar un procedimiento que comprende:
obtener (1100) una instrucción para realizar una operación de clasificación, siendo la instrucción una única instrucción de máquina diseñada de una arquitectura de conjunto de instrucciones (1102); y
ejecutar (1104), mediante un recurso de clasificación mejorada de un procesador de propósito general (102) del entorno informático, la instrucción, comprendiendo la ejecución:
clasificar (1112) una pluralidad de listas de entrada para obtener una o más listas de salida clasificadas; y proporcionar (1108) como salida la una o más listas de salida clasificadas, y
caracterizada por que cada una de la pluralidad de listas de entrada comprende un conjunto de registros, comprendiendo cada registro una parte de datos y una parte de clave, y la una o más listas de salida clasificadas se generan al clasificar los registros de las listas de entrada en orden ascendente o descendente según el valor de sus claves, y un parámetro de orden de clasificación.
2. El producto de programa informático de la reivindicación 1, en donde la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación y un campo que debe usarse para designar una ubicación, la una ubicación que debe usarse en el almacenamiento de la una o más listas de salida clasificadas.
3. El producto de programa informático de la reivindicación 2, en donde la instrucción incluye además otro campo que debe usarse para designar otra ubicación, la otra ubicación para almacenar una o más delineaciones de la lista de salida.
4. El producto de programa informático de la reivindicación 3, en donde el un campo es un campo de registro, designando el campo de registro un registro, incluyendo el registro una dirección de la una ubicación, y el otro campo es otro campo de registro, designando el otro campo de registro otro registro, incluyendo el otro registro una dirección de la otra ubicación.
5. El producto de programa informático de la reivindicación 1, en donde la instrucción emplea un registro implícito para determinar una función que debe realizar la instrucción.
6. El producto de programa informático de la reivindicación 5, en donde la función se selecciona de un grupo de funciones que consisten en: una función de registros de longitud fija de clasificación y una función de registros de longitud variable de clasificación.
7. El producto de programa informático de la reivindicación 5, en donde la instrucción emplea otro registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción, incluyendo el bloque de parámetros información usada por la instrucción según la función para realizar.
8. El producto de programa informático de la reivindicación 7, en donde la función para realizar es una función de registros de longitud fija de clasificación o una función de registros de longitud variable de clasificación, y el bloque de parámetros incluye información para ubicar la pluralidad de listas de entrada e información para continuar la clasificación, sobre la base de que se interrumpe la clasificación.
9. El producto de programa informático de la reivindicación 1, en donde la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación; un campo de primer registro que incluye una designación de un primer registro, incluyendo el primer registro una dirección usada en el almacenamiento de la una o más listas de salida clasificadas; y un campo de segundo registro que incluye una designación de un segundo registro, incluyendo el segundo registro una dirección usada en el almacenamiento de una o más delineaciones de la lista de salida, y en donde la instrucción emplea un primer registro implícito para determinar una función que debe realizar la instrucción y un segundo registro implícito para ubicar un bloque de parámetros en una memoria usada por la instrucción.
10. Un sistema informático para facilitar un procesamiento en un entorno informático (100), comprendiendo el sistema informático:
una memoria (104); y
un procesador de propósito general (102) acoplado a la memoria, en donde el sistema informático está configurado para realizar un procedimiento que comprende:
obtener (1100) una instrucción para realizar una operación de clasificación, siendo la instrucción una única instrucción de máquina diseñada de una arquitectura de conjunto de instrucciones (1102); y
ejecutar (1104), mediante un recurso de clasificación mejorada del procesador de propósito general del entorno informático, la instrucción, comprendiendo la ejecución:
clasificar (1106) una pluralidad de listas de entrada para obtener una o más listas de salida clasificadas; y proporcionar (1108) como salida la una o más listas de salida clasificadas, y
caracterizada por que cada una de la pluralidad de listas de entrada comprende un conjunto de registros, comprendiendo cada registro una parte de datos y una parte de clave, y la una o más listas de salida clasificadas se generan al clasificar los registros de las listas de entrada en orden ascendente o descendente según el valor de sus claves, y un parámetro de orden de clasificación.
11. Un procedimiento implementado por ordenador de facilitar un procesamiento en un entorno informático (100), comprendiendo el procedimiento implementado por ordenador:
obtener (1100) una instrucción para realizar una operación de clasificación, siendo la instrucción una única instrucción de máquina diseñada de una arquitectura de conjunto de instrucciones (1102); y
ejecutar (1104), mediante un recurso de clasificación mejorada del procesador de propósito general del entorno informático, la instrucción, comprendiendo la ejecución:
clasificar (1106) una pluralidad de listas de entrada para obtener una o más listas de salida clasificadas; y proporcionar (1108) como salida la una o más listas de salida clasificadas, y
caracterizada por que cada una de la pluralidad de listas de entrada comprende un conjunto de registros, comprendiendo cada registro una parte de datos y una parte de clave, y la una o más listas de salida clasificadas se generan al clasificar los registros de las listas de entrada en orden ascendente o descendente según el valor de sus claves, y un parámetro de orden de clasificación.
12. El procedimiento implementado por ordenador de la reivindicación 11, en donde la instrucción incluye un campo de código de operación que incluye un código de operación para especificar una operación de lista de clasificación y un campo que debe usarse para designar una ubicación, la una ubicación que debe usarse en el almacenamiento de la una o más listas de salida clasificadas.
13. El procedimiento implementado por ordenador de la reivindicación 12, en donde la instrucción incluye además otro campo que debe usarse para designar otra ubicación, la otra ubicación para almacenar una o más delineaciones de la lista de salida.
14. El procedimiento implementado por ordenador de la reivindicación 11, en donde la instrucción emplea un registro implícito para determinar una función que debe realizar la instrucción.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/181,923 US10831478B2 (en) | 2018-11-06 | 2018-11-06 | Sort and merge instruction for a general-purpose processor |
| PCT/EP2019/080160 WO2020094600A1 (en) | 2018-11-06 | 2019-11-05 | Sort and merge instruction for a general-purpose processor |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2929826T3 true ES2929826T3 (es) | 2022-12-01 |
Family
ID=68468733
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19798279T Active ES2929826T3 (es) | 2018-11-06 | 2019-11-05 | Instrucción de clasificación y fusión para un procesador de propósito general |
Country Status (20)
| Country | Link |
|---|---|
| US (2) | US10831478B2 (es) |
| EP (1) | EP3877840B1 (es) |
| JP (1) | JP7288048B2 (es) |
| KR (1) | KR102527963B1 (es) |
| CN (1) | CN112970000B (es) |
| AU (1) | AU2019377216B2 (es) |
| CA (1) | CA3118173A1 (es) |
| DK (1) | DK3877840T3 (es) |
| ES (1) | ES2929826T3 (es) |
| HU (1) | HUE060425T2 (es) |
| IL (1) | IL282055B2 (es) |
| LT (1) | LT3877840T (es) |
| MX (1) | MX388396B (es) |
| PL (1) | PL3877840T3 (es) |
| PT (1) | PT3877840T (es) |
| SG (1) | SG11202102996YA (es) |
| SI (1) | SI3877840T1 (es) |
| TW (1) | TWI736912B (es) |
| WO (1) | WO2020094600A1 (es) |
| ZA (1) | ZA202103133B (es) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
| US12393399B2 (en) | 2018-11-06 | 2025-08-19 | International Business Machines Corporation | Controlling storage accesses for merge operations |
| US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
| US11790085B2 (en) * | 2020-10-29 | 2023-10-17 | Electronics And Telecommunications Research Institute | Apparatus for detecting unknown malware using variable opcode sequence and method using the same |
| US11675592B2 (en) * | 2021-06-17 | 2023-06-13 | International Business Machines Corporation | Instruction to query for model-dependent information |
| US11803509B1 (en) | 2022-05-23 | 2023-10-31 | Apple Inc. | Parallel merge sorter circuit |
| CN115510450B (zh) * | 2022-09-20 | 2023-08-01 | 中国人民解放军国防科技大学 | 一种面向计算机二进制程序的比对依赖识别方法与系统 |
| CN118194790B (zh) * | 2024-05-15 | 2024-08-06 | 北京壁仞科技开发有限公司 | 芯片设计方法以及芯片设计系统 |
Family Cites Families (75)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH077385B2 (ja) * | 1983-12-23 | 1995-01-30 | 株式会社日立製作所 | データ処理装置 |
| US4890220A (en) | 1984-12-12 | 1989-12-26 | Hitachi, Ltd. | Vector processing apparatus for incrementing indices of vector operands of different length according to arithmetic operation results |
| US5210870A (en) | 1990-03-27 | 1993-05-11 | International Business Machines | Database sort and merge apparatus with multiple memory arrays having alternating access |
| JPH07104784B2 (ja) * | 1990-04-03 | 1995-11-13 | 富士ゼロックス株式会社 | デジタルデータ処理装置 |
| US5307485A (en) | 1991-05-31 | 1994-04-26 | International Business Machines Corporation | Method and apparatus for merging sorted lists in a multiprocessor shared memory system |
| DE69418646T2 (de) * | 1993-06-04 | 2000-06-29 | Sun Microsystems, Inc. | Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger |
| US5475882A (en) | 1993-10-15 | 1995-12-19 | Sereboff; Joel L. | Gel filled deformable cushion and composition contained therein |
| US20060136923A1 (en) | 1995-05-30 | 2006-06-22 | Kahn Robert E | System for distributed task execution |
| US5909544A (en) * | 1995-08-23 | 1999-06-01 | Novell Inc. | Automated test harness |
| US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
| US5796997A (en) * | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
| US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
| US5995962A (en) | 1997-07-25 | 1999-11-30 | Claritech Corporation | Sort system for merging database entries |
| US6016539A (en) | 1997-11-03 | 2000-01-18 | Teragen Corporation | Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations |
| US6795966B1 (en) | 1998-05-15 | 2004-09-21 | Vmware, Inc. | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
| US6460121B1 (en) | 1998-09-14 | 2002-10-01 | Compaq Information Technologies Group, L.P. | Method for providing an atomic memory read using a compare-exchange instruction primitive |
| JP2001256062A (ja) | 2000-03-09 | 2001-09-21 | Omron Corp | 割込処理方法およびその方法を用いた演算処理装置 |
| EP1217540A1 (en) | 2000-11-29 | 2002-06-26 | Lafayette Software Inc. | Methods of organizing data and processing queries in a database system, and database system and software product for implementing such method |
| US7080159B2 (en) | 2000-12-15 | 2006-07-18 | Ntt Docomo, Inc. | Method and system for effecting migration of application among heterogeneous devices |
| JP3955741B2 (ja) * | 2001-04-02 | 2007-08-08 | 株式会社リコー | ソート機能を有するsimd型マイクロプロセッサ |
| US7107320B2 (en) | 2001-11-02 | 2006-09-12 | Dot Hill Systems Corp. | Data mirroring between controllers in an active-active controller pair |
| JP3799423B2 (ja) * | 2002-07-30 | 2006-07-19 | 財団法人理工学振興会 | 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置 |
| US7464254B2 (en) * | 2003-01-09 | 2008-12-09 | Cisco Technology, Inc. | Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data |
| US7561571B1 (en) | 2004-02-13 | 2009-07-14 | Habanero Holdings, Inc. | Fabric address and sub-address resolution in fabric-backplane enterprise servers |
| JP4465598B2 (ja) | 2004-07-05 | 2010-05-19 | ソニー株式会社 | 集積回路およびその処理制御方法、並びに、プログラム |
| US8719819B2 (en) | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
| US7987158B2 (en) | 2005-02-09 | 2011-07-26 | International Business Machines Corporation | Method, system and article of manufacture for metadata replication and restoration |
| CN100587663C (zh) * | 2005-03-18 | 2010-02-03 | 富士通株式会社 | 数据提示装置以及数据提示方法 |
| US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
| US7502888B2 (en) * | 2006-02-07 | 2009-03-10 | Hewlett-Packard Development Company, L.P. | Symmetric multiprocessor system |
| US7945789B2 (en) | 2006-09-12 | 2011-05-17 | International Business Machines Corporation | System and method for securely restoring a program context from a shared memory |
| US8935512B2 (en) * | 2006-11-21 | 2015-01-13 | Nec Corporation | Instruction operation code generation system |
| DE102007025397B4 (de) | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb |
| US8266112B1 (en) | 2007-12-19 | 2012-09-11 | Symantec Corporation | Techniques for recovery of application level objects |
| DE112009000180T5 (de) | 2008-01-23 | 2011-03-31 | Swift-Foot Graphics Ab | Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance |
| US8230410B2 (en) | 2009-10-26 | 2012-07-24 | International Business Machines Corporation | Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization |
| US8850423B2 (en) | 2009-10-29 | 2014-09-30 | International Business Machines Corporation | Assisting server migration |
| US20120054731A1 (en) | 2010-08-24 | 2012-03-01 | International Business Machines Corporation | Method, System and Computer Programs to Assist Migration to a Cloud Computing Environment |
| US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
| US9015083B1 (en) | 2012-03-23 | 2015-04-21 | Google Inc. | Distribution of parameter calculation for iterative optimization methods |
| US9513915B2 (en) | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
| EP2831691A4 (en) | 2012-03-30 | 2015-11-25 | Intel Corp | METHOD AND APPARATUS FOR FUSIONING AND SORTING SMALLER SORTED VECTORS IN LARGER SORTING VECTORS |
| CN104583956B (zh) * | 2012-06-15 | 2019-01-04 | 英特尔公司 | 用于实现加载存储重新排序和优化的指令定义 |
| US20140089646A1 (en) | 2012-09-27 | 2014-03-27 | Texas Instruments Incorporated | Processor with interruptable instruction execution |
| US9710874B2 (en) | 2012-12-27 | 2017-07-18 | Nvidia Corporation | Mid-primitive graphics execution preemption |
| US9405538B2 (en) * | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
| US9727594B2 (en) | 2013-01-10 | 2017-08-08 | Microsoft Technology Licensing, Llc | Adaptive range filters for range and point queries |
| US20160162293A1 (en) | 2013-03-26 | 2016-06-09 | Via Technologies, Inc. | Asymmetric processor with cores that support different isa instruction subsets |
| US10203958B2 (en) | 2013-07-15 | 2019-02-12 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
| US9934194B2 (en) | 2013-12-20 | 2018-04-03 | Rambus Inc. | Memory packet, data structure and hierarchy within a memory appliance for accessing memory |
| CN106030518B (zh) * | 2014-03-27 | 2019-03-26 | 英特尔公司 | 用于整理和退出存储的处理器、方法、系统和装置 |
| US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
| US9329850B2 (en) | 2014-06-24 | 2016-05-03 | International Business Machines Corporation | Relocation of instructions that use relative addressing |
| US9703733B2 (en) | 2014-06-27 | 2017-07-11 | Intel Corporation | Instructions and logic to interrupt and resume paging in a secure enclave page cache |
| US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
| US10318292B2 (en) | 2014-11-17 | 2019-06-11 | Intel Corporation | Hardware instruction set to replace a plurality of atomic operations with a single atomic operation |
| US10318297B2 (en) | 2015-01-30 | 2019-06-11 | Huawei Technologies Co., Ltd. | Method and apparatus for operating a self-timed parallelized multi-core processor |
| US10942748B2 (en) | 2015-07-16 | 2021-03-09 | Nxp B.V. | Method and system for processing interrupts with shadow units in a microcontroller |
| US10102231B2 (en) | 2015-10-20 | 2018-10-16 | International Business Machines Corporation | Ordering heterogeneous operations in bulk processing of tree-based data structures |
| US10198264B2 (en) * | 2015-12-15 | 2019-02-05 | Intel Corporation | Sorting data and merging sorted data in an instruction set architecture |
| US9996361B2 (en) | 2015-12-23 | 2018-06-12 | Intel Corporation | Byte and nibble sort instructions that produce sorted destination register and destination index mapping |
| US9665626B1 (en) | 2016-02-02 | 2017-05-30 | International Business Machines Corporation | Sorted merge of streaming data |
| US10725677B2 (en) | 2016-02-19 | 2020-07-28 | Sandisk Technologies Llc | Systems and methods for efficient power state transitions |
| US10261790B2 (en) | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
| US10296655B2 (en) | 2016-06-24 | 2019-05-21 | International Business Machines Corporation | Unbounded list processing |
| US20180011768A1 (en) | 2016-07-05 | 2018-01-11 | International Business Machines Corporation | Control state preservation during transactional execution |
| US10761849B2 (en) * | 2016-09-22 | 2020-09-01 | Intel Corporation | Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction |
| US10037267B2 (en) | 2016-10-21 | 2018-07-31 | Advanced Micro Devices, Inc. | Instruction set architecture and software support for register state migration |
| US10162859B2 (en) | 2016-10-31 | 2018-12-25 | International Business Machines Corporation | Delayable query |
| US10496371B2 (en) * | 2017-06-29 | 2019-12-03 | Intel Corporation | Key-value compaction |
| US10698792B2 (en) | 2018-05-02 | 2020-06-30 | Microsoft Technology Licensing, Llc | Execution control with cross-level trace mapping |
| US12393399B2 (en) | 2018-11-06 | 2025-08-19 | International Business Machines Corporation | Controlling storage accesses for merge operations |
| US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
| US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
| US10831478B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
-
2018
- 2018-11-06 US US16/181,923 patent/US10831478B2/en active Active
-
2019
- 2019-06-19 TW TW108121225A patent/TWI736912B/zh active
- 2019-11-05 PT PT197982796T patent/PT3877840T/pt unknown
- 2019-11-05 DK DK19798279.6T patent/DK3877840T3/da active
- 2019-11-05 PL PL19798279.6T patent/PL3877840T3/pl unknown
- 2019-11-05 CA CA3118173A patent/CA3118173A1/en active Pending
- 2019-11-05 ES ES19798279T patent/ES2929826T3/es active Active
- 2019-11-05 CN CN201980072863.0A patent/CN112970000B/zh active Active
- 2019-11-05 HU HUE19798279A patent/HUE060425T2/hu unknown
- 2019-11-05 SG SG11202102996YA patent/SG11202102996YA/en unknown
- 2019-11-05 MX MX2021005005A patent/MX388396B/es unknown
- 2019-11-05 IL IL282055A patent/IL282055B2/en unknown
- 2019-11-05 LT LTEPPCT/EP2019/080160T patent/LT3877840T/lt unknown
- 2019-11-05 EP EP19798279.6A patent/EP3877840B1/en active Active
- 2019-11-05 SI SI201930365T patent/SI3877840T1/sl unknown
- 2019-11-05 JP JP2021517672A patent/JP7288048B2/ja active Active
- 2019-11-05 AU AU2019377216A patent/AU2019377216B2/en active Active
- 2019-11-05 KR KR1020217011428A patent/KR102527963B1/ko active Active
- 2019-11-05 WO PCT/EP2019/080160 patent/WO2020094600A1/en not_active Ceased
-
2020
- 2020-09-30 US US17/037,962 patent/US11221850B2/en active Active
-
2021
- 2021-05-10 ZA ZA2021/03133A patent/ZA202103133B/en unknown
Also Published As
| Publication number | Publication date |
|---|---|
| MX2021005005A (es) | 2021-12-02 |
| IL282055A (en) | 2021-05-31 |
| AU2019377216A1 (en) | 2021-04-22 |
| CN112970000B (zh) | 2025-08-08 |
| JP2022503925A (ja) | 2022-01-12 |
| AU2019377216B2 (en) | 2022-11-24 |
| TW202034160A (zh) | 2020-09-16 |
| DK3877840T3 (da) | 2022-11-14 |
| KR20210055771A (ko) | 2021-05-17 |
| JP7288048B2 (ja) | 2023-06-06 |
| KR102527963B1 (ko) | 2023-05-03 |
| HUE060425T2 (hu) | 2023-02-28 |
| EP3877840A1 (en) | 2021-09-15 |
| EP3877840B1 (en) | 2022-10-19 |
| US10831478B2 (en) | 2020-11-10 |
| PT3877840T (pt) | 2022-11-03 |
| PL3877840T3 (pl) | 2023-01-02 |
| SI3877840T1 (sl) | 2023-01-31 |
| MX388396B (es) | 2025-03-19 |
| US20210011719A1 (en) | 2021-01-14 |
| CN112970000A (zh) | 2021-06-15 |
| CA3118173A1 (en) | 2020-05-14 |
| ZA202103133B (en) | 2022-07-27 |
| LT3877840T (lt) | 2023-01-25 |
| US11221850B2 (en) | 2022-01-11 |
| SG11202102996YA (en) | 2021-04-29 |
| IL282055B1 (en) | 2023-09-01 |
| WO2020094600A1 (en) | 2020-05-14 |
| US20200142696A1 (en) | 2020-05-07 |
| TWI736912B (zh) | 2021-08-21 |
| BR112021008844A2 (pt) | 2021-08-17 |
| IL282055B2 (en) | 2024-01-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2929826T3 (es) | Instrucción de clasificación y fusión para un procesador de propósito general | |
| ES2974222T3 (es) | Guardar y restaurar el estado de la máquina entre varias ejecuciones de una instrucción | |
| EP3877886B1 (en) | Controlling storage accesses for merge operations | |
| EP3877842B1 (en) | Migration of partially completed instructions | |
| US20210232638A1 (en) | Vector string search instruction | |
| BR112021008844B1 (pt) | Instrução de separação e fusão para um processador de propósito geral | |
| HK40047089A (en) | Sort and merge instruction for a general-purpose processor | |
| HK40047090A (en) | Saving and restoring machine state between multiple executions of an instruction |