MX2014010946A - Instruccion de cargar datos a una frontera de memoria especificada indicada por la instruccion. - Google Patents
Instruccion de cargar datos a una frontera de memoria especificada indicada por la instruccion.Info
- Publication number
- MX2014010946A MX2014010946A MX2014010946A MX2014010946A MX2014010946A MX 2014010946 A MX2014010946 A MX 2014010946A MX 2014010946 A MX2014010946 A MX 2014010946A MX 2014010946 A MX2014010946 A MX 2014010946A MX 2014010946 A MX2014010946 A MX 2014010946A
- Authority
- MX
- Mexico
- Prior art keywords
- operand
- instruction
- field
- block
- address
- Prior art date
Links
Classifications
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- 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
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache 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
-
- 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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Se provee una instrucción de carga a frontera de bloque que carga un número variable de bytes de datos a un registro mientras que asegura que no se cruce una frontera de memoria especificada. La frontera puede ser especificada de una diversidad de maneras, incluyendo pero no limitado a un valor variable en el texto de instrucción, un valor de texto de instrucción fijo codificada en el código de operación o una frontera a base de registro.
Description
INSTRUCCIÓN DE CARGAR DATOS A UNA FRONTERA DE MEMORIA ESPECIFICADA INDICADA POR LA INSTRUCCIÓN ANTECEDENTES DE LA INVENCIÓN
La invención es concerniente en general con el procesamiento de datos y en particular con la carga de datos a registros.
El procesamiento de datos incluye varios tipos de procesamiento, incluyendo la carga de datos a registro. La carga de datos a un registro incluye pero no está limitada a la carga de datos de caracteres, tales como series de datos de caracteres, datos de enteros o cualesquier otros tipos de datos . Los datos que son cargados son luego aptos de ser usados y/o manipulados .
Las instrucciones actuales para efectuar varios tipos de procesamiento, incluyendo la carga de datos de registros tienden a ser ineficiente.
BREVE DESCRIPCIÓN DE LA INVENCIÓN
Las deficiencias del arte previo son tratadas y se proveen ventajas por medio de la provisión de un producto de programa de computadora para ejecutar una instrucción de máquina. El producto de programa de computadora incluye un medio de almacenamiento que se puede leer por computadora que se puede leer por un circuito de procesamiento y almacenar instrucciones para ejecución por el circuito de procesamiento
para efectuar un método, el método incluye, por ejemplo, obtener mediante un procesador, una instrucción de máquina para ejecución, la instrucción de máquina es definida para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina incluye: por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una carga a la operación de frontera de bloque; un campo de registro a ser usado para designar un registro, el registro comprende un primer operando; por lo menos un campo para ubicar un segundo operando en memoria principal y ejecutar la instrucción de la máquina, la ejecución incluye: solamente cargar bytes del primer operando con bytes correspondientes del segundo operando están dentro de un bloque especificado por la instrucción de la memoria principal.
También se describen y reivindican en la presente métodos y sistemas concernientes con uno o más aspectos de la presente invención. Además, también se describen y se pueden reivindicar en la presente servicios concernientes con uno o más aspectos de la presente invención.
Elementos y ventajas adicionales son realizados por medio de las técnicas de la presente invención. Otras modalidades y aspectos de la invención son descritos en detalle en la presente y son considerados parte de la invención reivindicada.
BREVE DESCRIPCIÓN DE LAS FIGURAS
Modalidades de la presente invención serán ahora descritas a manera de ejemplo solamente con referencia a las figuras adjuntas en las cuales:
La figura 1 ilustra un ejemplo de un medio ambiente de cómputo para incorporar y usar uno o más modalidades de la presente invención;
La figura 2A ilustra otro ejemplo de un medio ambiente de cómputo para incorporar y usar uno o más modalidades de la presente invención;
La figura 2B ilustra detalles adicionales de la memoria de la figura 2B, de acuerdo con un modalidades de la presente invención;
La figura 3 ilustra un formato de una instrucción de carga de vector a frontera de bloque de acuerdo con una modalidad de la presente invención;
La figura 4 ilustra la lógica asociada con la carga de vector a frontera de bloque, de acuerdo con una modalidad de la presente invención;
La figura 5 ilustra datos a ser cargados a un registro de vector de acuerdo con una modalidad de la presente invención;
La figura 6 ilustra un archivo de registro con una modalidad de la presente invención;
La figura 7 ilustra una modalidad de un producto de programa de computadora que incorpora una o más modalidades de la presente invención;
La figura 8 ilustra una modalidad de un sistema de computadora huésped para incorporar y usar una o más modalidades de la presente invención;
La figura 9 ilustra un ejemplo adicional de un sistema de computadora para incorporar y usar una o más modalidades de la presente invención;
La figura 10 ilustra otro ejemplo de un sistema de computadora que comprende una red de computadora para incorporar y usar una o más modalidades de la presente invención;
La figura 11 ilustra varios elementos de un sistema de computadora para incorporar y usar una o más modalidades de la presente invención;
La figura 12A ilustra la unidad de ejecución del sistema de computadora de la figura 11 para incorporar y usar una o más modalidades de la presente invención;
La figura 12B ilustra la unidad ramal del sistema de computadora de la figura 16 para incorporar y usar una o más modalidades de la presente invención;
La figura 12C ilustra la unidad de carga/almacenamiento del sistema de computadora de la figura 11 para incorporar y usar uno o más aspectos de la presente invención y
La figura 13 ilustra un sistema de computadora huésped emulado para incorporar y usar una o más modalidades de la presente invención.
DESCRIPCIÓN DETALLADA
De acuerdo con un aspecto de la presente invención, se provee una capacidad para facilitar la carga de datos en un registro. Como ejemplo, los datos incluyen datos de caracteres, datos de números enteros y/u otros tipos de datos. Además, el registro es un registro de vector u otro tipo de registro.
Los datos de caracteres incluyen pero no están limitados a caracteres alfabéticos en cualquier lenguaje, dígitos numéricos, puntuación y/u otros símbolos. Los datos de caracteres pueden o pueden no ser series de datos . Asociados con los datos de caracteres se encuentran estándares, ejemplos de los cuales incluyen pero no están limitados a ASCII (código estándar estadounidense para intercambio de información) ; Unicode, incluyendo pero no limitado a UTF (formato de transformación de Unicode) 8; UTF16, etc.
Un registro de vector (también referido como vector) incluye uno o más elementos y cada elemento es de uno, dos o cuatro bytes de longitud, como ejemplos. Además, un operando de vector es por ejemplo un operando de SIMD (una sola instrucción, múltiples datos) que tiene una pluralidad de
elementos. En otras modalidades, los elementos pueden ser de otros tamaños y un operando de vector no necesita ser SIMD y/o puede incluir un elemento.
En un ejemplo, se provee una instrucción de carga de vector a frontera de bloque es provista que carga un número variable de bytes de datos de la memoria a un registro de vector mientras que asegura que una frontera especificada de la memoria de la cual los datos son cargados no sea cruzada. La frontera puede ser especificada explícitamente por la instrucción (por ejemplo, un valor variable en el texto de instrucción, un valor de texto de instrucción fija codificado en el código de operación, una frontera basada en registro especificada en la instrucción, etc.) o la frontera puede ser determinada dinámicamente por la máquina. Por ejemplo, la instrucción específica que los datos van a ser cargados a una página o frontera de memoria caché y la máquina determina la línea de memoria caché o tamaño de página (por ejemplo, consulta por ejemplo en una memoria temporal o memoria intermedia de consulta de traducción para determinar el tamaño de página) y carga a aquel punto.
Como un ejemplo adicional, esta instrucción es también usada para alinear accesos de datos a una frontera seleccionada.
En una modalidad, la instrucción solamente carga bytes de registro de vector (un primer operando) con bytes
correspondientes de un segundo operando que están dentro de un bloque de memoria principal especificada por la instrucción. Como se usa en la presente, un bloque de memoria principal (a.k.a., almacenamiento principal) es cualquier bloque de memoria de un tamaño especificado. El tamaño especificado es también referido como la frontera del bloque, la frontera es el final del bloque.
En una modalidad adicional, otros tipos de registro son cargados. Esto es, el registro que es cargado no es un registro de vector sino otro tipo de registro. En este contexto, la instrucción es referida como una instrucción de carga a frontera de bloque, que es usada para cargar datos a un registro.
Una modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención es descrita con referencia a la figura 1. Un medio ambiente de computo 100 incluye, por ejemplo un procesador 102 (por e emplo, una unidad de procesamiento central) , una memoria 104 (por ejemplo, memoria principal) y uno o más dispositivos de entrada/salida (I/O) y/o interface 106 acopladas entre sí vía por ejemplo una o más líneas de distribución principal 108 y/u otras conexiones.
En un ejemplo, el procesador 102 está basado en la z/Architecture ofrecida por International Business Machines Corporation y es parte de un servidor, tal como el servidor
System Z, que es también ofrecido por International Business Machines Corporation e implementa la z/Architecture . Una modalidad de la z/Architecture es descrita en una publicación de IBM® intitulada, "z/Architecture Principies of Operation" publicación de IBM® no. SA22-7832-08 , novena edición, agosto de 2010, que es incorporada en la presente por referencia en su totalidad. En un ejemplo, el procesador ejecuta un sistema operativo, tal como Z/OS, también ofrecido por International Business Machines Corporation. IBM®, Z/ARCHITECTURE® y Z/OS® son marcas registradas de International Business Machines Corporation, Armonk, Nueva York, Estados Unidos de América. Otros nombres usados en la presente pueden ser de marcas registradas, marcas o nombre de producto de International Business Machines Corporation u otras compañías.
En una modalidad adicional, el procesador 102 está basado en la Power Architecture por International Business Machines Corporation. Una modalidad de la Power Architecture es descrita en "Power ISA" Versión 2.06 Revisión B" , International Business Machines Corporation, 23 de julio de 2010, que es incorporada en la presente por referencia en su totalidad. POWER ARCHITECTURE® es una marca registrada de International Business Machines Corporation.
En todavía una modalidad adicional, el procesador 102 está basado en la arquitectura Intel ofrecida por Intel Corporation. Una modalidad de la arquitectura Intel es
descrita en "Manual del desarrollador de arquitectura Intel® 64 e IA-32: Vol. 2B, referencia de conjunto de instrucciones, A-L" , número de orden 253666-041US, Diciembre 2011 e "Manual del desarrollador de arquitectura Intel® Vol. 2B, referencia de conjunto de instrucciones, M-Z" número de orden 253667-041US, diciembre 2011, cada una de las cuales es incorporada en la presente por referencia en su totalidad. Intel® es una marca registrada de Intel Corporation, Santa Clara, California.
Otra modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención es descrita con referencia a la figura 2A. En este ejemplo, un medio ambiente de cómputo 200 incluye por ejemplo una unidad de procesamiento central nativa 202, una memoria 104 y uno o más dispositivos de entrada/salida y/o interface 206 acoplados entre sí vía por ejemplo una o más líneas principales de distribución 208 y/u otras conexiones. Como ejemplos, el medio ambiente de cómputo sOO puede incluir un procesador PowerPC, un servidor pSeries o un servidor xSeries ofrecidos por International Business Machines Corporation, Armonk, Nueva York; un HP SuperDome procesadores Intel Itanium II ofrecidos por Hewlett Packard Co., Palo Alto, California y/o u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle u otros.
La unidad de procesamiento central nativa 202 incluye uno o más registros nativos 210, tales como uno o más registros de propósito general y/o uno o más registro de propósito especial usado durante el procesamiento en el medio ambiente. Estos registros incluyen formación que representa el estado del medio ambiente a cualquier punto en el tiempo particular.
Además, la unidad de procesamiento central nativa 202 ejecuta instrucciones y códigos que están almacenados en la memoria 204. En un ejemplo particular, la unidad de procesamiento central ejecuta los códigos de emulador 212 almacenados en la memoria 204. Este código permite que el medio ambiente de procesamiento configurado en una arquitectura emule otra arquitectura. Por ejemplo, el código de emulador 212 permite que máquinas basadas en arquitecturas diferentes de la z/Architecture, tales como procesadores PowerPC, servidores pSeries, servidores xSeries, servidores HP SuperDome u otros emulen la z/Architecture y ejecuten elementos de programación e instrucciones desarrollados basados en la z/Architecture.
Detalles adicionales concernientes con los códigos de emulador 212 son descritos con referencia a la figura 2B. Las instrucciones de invitado 250 comprenden instrucciones de elementos de programación (por ejemplo, instrucciones de máquina) que fueron desarrolladas para ser ejecutadas en una
arquitectura diferente que aquella de la CPU nativa 202. Por ejemplo, las instrucciones de invitado 250 pueden haber sido diseñadas para ejecutarse en un procesador z/Architecture 102, pero en lugar de esto, están son emuladas en la CPU nativa 202, que puede ser, por ejemplo, un procesador Itanium II de Intel. En un ejemplo, los códigos de emulador 212 incluyen una unidad de extracción de instrucciones 252 para obtener una o más instrucciones de invitado 250 de la memoria 204 y para proveer opcionalmente almacenamiento en memoria cache local para las instrucciones obtenidas. También incluye una rutina de traducción de instrucciones 254 para determinar el tipo de instrucción invitada que ha sido obtenida y para traducir la instrucción invitada a una o más instrucciones nativas correspondientes 256. Esta traducción incluye, por ejemplo, identificar la función a ser efectuada por la instrucción invitada y escoger la (s) instrucción (es) nativa (s) para efectuar aquella función.
Además, el emulador 212 incluye una rutina de control de emulación 260 para provocar que las instrucciones nativas sean ejecutadas. La rutina de control de emulación 260 puede provocar que la CPU nativa 202 ejecuta una rutina de instrucciones nativas que emulan o más instrucciones de invitado obtenidas previamente y en la conclusión de tal ejecución, regresen el control a la rutina de extracción de instrucciones para emular la obtención de la instrucción
invitada siguiente o un grupo de instrucciones invitadas. La ejecución de las instrucciones nativas 256 puede incluir cargar datos a un registro de la memoria 204; almacenar los datos de regreso a la memoria de un registro o efectuar un algún tipo de operación aritmética o lógica, tal como se determinada por la rutina de traducción.
Cada rutina es por ejemplo implementada en elementos de programación, que son almacenados en memoria y ejecutados por la unidad de procesamiento central nativa 202. En otro ejemplo, una o más de las rutinas u operaciones son implementadas en elementos fijos, elementos físicos, elementos de programación o alguna combinación de los mismos. Los registros del procesador emulado pueden ser emulados utilizando los registros 210 de la CPU nativa o al usar sitios en la memoria 204. En modalidades, las instrucciones de invitado 250, instrucciones nativas 256 y códigos de emulador 212 pueden residir en la misma memoria o pueden estar dispersados entre diferentes dispositivos de memoria.
Como se usa en la presente, elementos fijos incluyen, por ejemplo los microcódigos , minicódigos y/o macrocódigos del procesador. Incluyen, por ejemplo, las instrucciones a nivel de elementos físicos y/o estructuras de datos usadas en la implementación de códigos de máquina de nivel superior. En una modalidad, incluyen por ejemplo códigos patentados que son proporcionados comúnmente como microcódigos que incluyen
elementos confiables o microcódigos específicos a los elementos físicos subyacentes y controla el acceso del sistema operativo a los elementos físicos del sistema.
En un ejemplo, una instrucción invitada 250 que es obtenida, traducida y ejecutada es la instrucción descrita en la presente. La instrucción, que es de una arquitectura (por ejemplo, la z/Architecture) es extraída de la memoria, traducida y representada como una secuencia de instrucciones nativas 256 de otra arquitectura (por ejemplo, PowerPC, pSeries, xSeries, Intel, etc.). Luego estas instrucciones nativas son ejecutadas.
En una modalidad, la instrucción descrita en la presente es una instrucción de vector, que es parte de un equipo de vector, provisto de acuerdo con un aspecto de la presente invención. El equipo de vector provee, por ejemplo vectores de tamaño fijo que varían de uno a 16 elementos. Cada vector incluye datos que se ponen en operación por instrucciones de vector definidas en el equipo. En una modalidad, si un vector está compuesto de múltiples elementos, entonces cada elemento es procesado en paralelo con los otros elementos . La consumación de la instrucción no ocurre hasta que el procesamiento de todos los elementos está completo.
Como se describe en la presente, las instrucciones de vector pueden ser implementadas como parte de varias arquitecturas, incluyendo pero no limitado a la
z/Architecture, Power, Intel, etc. Aunque se describe una modalidad en la presente para la z/Architecture, las instrucciones de vector y uno o más aspectos de la presente invención pueden estar basados en muchas otras arquitecturas . La z/Architecture es solamente un ejemplo.
En una modalidad en la cual el equipo de vector es implementado como parte de la z/Architecture para usar los registros de vector e instrucciones, un control de habilitación de vector y un control de registro en un registro de control especificado (por ejemplo, registro de control cero) son establecidos a, por ejemplo uno. Si el equipo de vector es instalado y una instrucción de vector es ejecutada sin los controles de habilitación establecidos, se reconoce una excepción de datos. Si el equipo de vector no está instalado y una instrucción de vector es ejecutada, se reconoce una excepción de operación.
Los datos de vector aparecen en almacenamiento, por ejemplo, en la misma secuencia de izquierda a derecha como otros formatos de datos . Los bits de un formato de datos que son numerados de 0-7 constituyen el byte en el sitio de bytes más a la izquierda (denominación más baja) en el almacenamiento, los bits 8-15 forman el byte en el siguiente sitio secuencial y así sucesivamente. En un ejemplo adicional, los datos de vector pueden aparecer en almacenamiento en otra secuencia, tal como de derecha a
izquierda.
Muchas de las instrucciones de vector provistas con el dispositivo de vector tienen un campo de bits especificados. Este campo, referido como el bit de extensión de registro o RXB incluye el bit más significativo para cada uno de los operandos designados de registro de vector. Los bits para designaciones de registro no especificados por la instrucción serán reservados y ajustados a cero.
En un ejemplo, el campo RXB incluye cuatro bits (por ejemplo, bits 0 - 3) y los bits son definidos como sigue:
0 - bit más significativo para la primera designación de registro de vector de la instrucción.
1 - bit más significativo para la segunda designación del registro de vector de la instrucción, si la hay.
2 - bit más significativo para la tercera designación de registro de vector de la instrucción, si la hay.
3 - bit más significativo para la cuarta designación de registro de vector de la instrucción, si la hay.
Cada bit es ajustado a cero o uno mediante, por ejemplo, el ensamblador dependiendo del número de registro. Por ejemplo, para registro 0 - 15, el bit es ajustado a cero; para registros 16 - 31, el bit es ajustado a 1, etc.
En una modalidad, cada bit de RXB es un bit de extensión para un sitio particular en una instrucción que incluye uno o más registros de vector. Por ejemplo, en una o más
instrucciones de vector, el bit 0 de RXB es un bit de extensión para el sitio 8-11, que es asignado a, por ejemplo i; bit 1 de RXB es un bit de extensión para el sitio 12-15, que es asignado a, por ejemplo v2 y así sucesivamente.
En una modalidad adicional, el campo de RXB incluye bits adicionales y se usa más de un bit como una extensión para cada vector o sitio.
Una instrucción, provista de acuerdo con un aspecto de la presente invención que incluye el campo RXB, es una instrucción de carga de vector a frontera de bloque, un ejemplo de la cual es ilustrado en la figura 3. En un ejemplo, la instrucción de carga de vector a frontera de bloque 300 incluye los campos de código de operación 302a (por ejemplo, bits 0-7) , 302b (por ejemplo, bits 40-47) que indican una operación de carga de vector a frontera de bloque; un campo de registro de vector 304 (por ejemplo, 8-11) usados para designar un registro de vector (Vi) ; un campo de índice (X2) 306 (por ejemplo, bits 12-15) ; un campo base (V2) 308 (por ejemplo, bits 16-19) ; un campo de desplazamiento (V2) 310 (por ejemplo, bits 20-31) ; un campo de mascara (M3) 312 (por ejemplo, bits 32-35) y un campo de RXB 316 (por ejemplo, bits 36-39) . Cada uno de los campos 304-314, en un ejemplo, es separado e independiente del (los) campo (s) de código de operación. Además, en una modalidad, son separados e independientes entre sí; sin embargo, en
otras modalidades, más de un campo puede ser combinado. Información adicional en cuanto al uso de estos campos es descrita posteriormente en la presente.
En un ejemplo, los bits seleccionados (por ejemplo, los primeros dos bits) del código de operación designados por el campo de código de operación 302a especifican la longitud y formato de la instrucción. En este ejemplo particular, la longitud es de tres medias palabras y el formato es una operación de registro de vector y almacenamiento al índice con un campo al código de operación extendido. El campo de vector (V) junto con su bit de extensión correspondiente especificado por RXB, designa un registro de vector. En particular, para registros de vector, el registro que contiene el operando es especificado utilizando por ejemplo un campo de cuatro bits del campo de registro con la adición del bit de extensión de registro (RXB) como el bit más significativo. Por ejemplo, si el campo de cuatro bits es 0010 y el bit de extensión es 0, entonces, el campo de cinco bits 00110 designa el número de registro 6.
El número de subíndice asociado con un campo de la instrucción denota el operando al cual el campo se aplica. Por ejemplo, el número de subíndice 1 asociado con Vi denota el primer operando y así sucesivamente. El operando de registro es de un registro de longitud, que es por ejemplo 128 bits.
En un ejemplo, en una instrucción de operación de registro de vector y almacenamiento índice, el contenido de los registros generales designados por los campos X2 y B2 es agregado al contenido de campo D2 para formar la segunda dirección de operando. El desplazamiento D2 para la instrucción de carga de vector a frontera de bloque es tratado como un número entero sin firmar de 12 bits en un ej emplo .
El campo M3, en una modalidad, especifica un código que es usado para señalar a CPU en cuanto a la frontera de bloque a cargar. Si un valor reservado es especificado, se reconoce una excepción de especificación. Códigos ejemplares y valores correspondientes son como sigue.
Código frontera
0 64-Byte
1 128-Byte
2 256-Byte
3 512-Byte
4 1K-Byte
5 2 K-Byte
6 4 K-Byte
En la ejecución de una modalidad de la instrucción de carga de vector a frontera de bloque (VLBB) , procediendo en una modalidad de izquierda, el primer operando (especificado en el registro designado por el campo Vi más el bit de
extensión) es cargado iniciando en el elemento de byte indexado cero con bytes del segundo operando. El segundo operando está en un sitio de memoria designado por la segunda dirección de operando (también referida como una dirección de partida) . La carga inicia del sitio de memoria y continúa a una dirección final calculada por la instrucción (o procesador) , como se describe posteriormente en la presente . Si se encuentra una condición de frontera, es dependiendo del modelo en como el resto del primer operando es tratado. Excepciones de acceso no son reconocidas en bytes no cargados. En un ejemplo, los bytes que no son cargados son impredecibles .
En la instrucción ejemplar anterior, la dirección de partida es determinada por el valor de registro de índice (X2) + un valor de registro base (B2) + un desplazamiento (D2) ; sin embargo, en otras modalidades, es provista con un valor de registro; una dirección de instrucción + desplazamiento especificado por el texto de instrucción; un valor de registro + desplazamiento o un valor de registro + valor de registro índice; como solo algunos ejemplos. Además, en una modalidad, la instrucción no incluye el campo RXB. En lugar de esto, no se usa ninguna extensión o la extensión es provista de otra manera, tal como de un control externo de la instrucción o provista como parte de otro campo de la instrucción.
Detalles adicionales de una modalidad de procesamiento de la instrucción de carga de vector a frontera de bloque son descritos con referencia a la figura 4. En un ejemplo, un procesador del medio ambiente de cómputo está efectuando esta lógica.
En una modalidad, inicialmente se crea una máscara de frontera (BdyMask) que es usada para determinar la cercanía a una frontera especificada, etapa 400. Para crear la máscara, en un ejemplo, una negación de complemento de 2 de un tamaño frontera (BdySize) 402 es tomada creando la máscara de frontera 404 (por ejemplo, BdyMask- 0 -BdySize) . El tamaño de frontera es provisto, en un ejemplo, por la instrucción (por ejemplo, el campo M3) o en otro ejemplo, es determinado por la máquina, como se describe en la presente.
Después de esto, se calcula una dirección de partida, que indica un sitio en la memoria del cual la carga va a comenzar, etapa 410. Como ejemplos, la dirección de partida 412 puede ser provista por un valor de registro; una instrucción de dirección más desplazamiento especificado por el texto de instrucción; un valor de registro más desplazamiento,- un valor de registro más valor de registro índice o un valor de registro más valor de registro índice más desplazamiento. En la instrucción provista en la presente, la dirección de partida es provista por el campo X2, campo B2 y campo D2. Esto es, el contenido de los
registros designados por X2 y D2 es agregado al desplazamiento indicado por D2 para proveer la dirección de partida. Las maneras indicadas anteriormente para calcular una dirección de partida son solo ejemplos; otros ejemplos son también posibles.
Enseguida, se calcula una dirección de terminación o dirección de fin que indica donde detener la carga, etapa 420. La entrada a este cálculo es por ejemplo el tamaño de frontera 402, dirección de partida 412, tamaño de vector 414 (por ejemplo, en bytes; por ejemplo 16) y la máscara de frontera 404. En un ejemplo, la dirección final 422 es calculada como sigue:
Dirección de fin = min (dirección de partida + (Bdysize) - (dirección de partida y BdyMask) ) , dirección de partida + tamaño de vector)
Después de esto, el primer operando (esto es, el registro de vector designado) es cargado, iniciando en el byte indexado cero, de memoria comenzando en la dirección de partida y terminando en la dirección final, etapa 430. Esto permite que un número variable de bytes sean cargados de memoria a un vector sin cruzar una frontera de memoria designada. Por ejemplo, si la frontera de memoria está a 64 bytes y la dirección de partida está a 58 bytes, entonces los bytes 58-64 son cargados en el registro de vector.
Un ejemplo de datos a ser cargados a un registro de
vector, de acuerdo con un aspecto de la presente invención, es ilustrado en la figura 5. Como se indica, ningún dato es cargado más allá de la frontera designada por la línea vertical discontinua. Los sitios más allá de la frontera no son accesibles y no se toma ninguna excepción. En una modalidad particular, el vector es cargado de izquierda a derecha. Sin embargo, en otra modalidad, puede ser cargado de derecha a izquierda. En una modalidad, la dirección de los vectores, de izquierda a derecha o derecha a izquierda es provista en el tiempo de operación. Por ejemplo, la instrucción accede a un registro, control de estatus u otra entidad que indica la dirección de procesamiento es de ya sea izquierda a derecha o izquierda a derecha como ejemplos. En una modalidad, este control de dirección no es codificado como parte de la instrucción, sino provisto a la instrucción en el tiempo de operación.
Se describe anteriormente un ejemplo de una instrucción de carga. Cuando se cargan datos, tales como datos de serie, frecuentemente no es común si la serie terminará antes de una frontera de página. La habilidad para cargar a aquella frontera sin cruce requiere comúnmente primero verificar el final de la serie. Algunas implementaciones pueden también tener una penalidad por cruzar fronteras y elementos de programación podrían desear evitar estos. Así, la habilidad para cargar hasta varias fronteras es útil. Una instrucción
es provista que carga un número variable de bytes a un registro de vector mientras que asegura que los datos de a través de la frontera especificada no sean cargados.
En una modalidad, hay 32 registros de vector y otros tipos de registros pueden mapear a un cuadrante de los registros de vector. Por ejemplo, como se muestra en la figura 6, si hay un archivo de registro 600 que incluye 32 registros de vector 602 y cada registro es de 128 bytes de longitud, entonces 16 registros de punto flotante 604, que son de 64 bytes de longitud, se pueden superponer a los registros de vector. Así, como un ejemplo, cuando el registro de punto flotante 2 es modificado, entonces el registro de vector 2 es también modificado. Otros mapeos para otros tipos de registro son también posibles .
En la presente, la memoria, memoria principal, almacenamiento y almacenamiento principal son usados intercambiablemente a no ser que se indique de otra manera explícitamente o por el contexto.
Detalles adicionales concernientes con el equipo de vector, incluyendo ejemplos de otras instrucciones, son provistos como parte de esta descripción detallada posteriormente en la presente .
Como se apreciará por el experimentado en el arte, uno o más aspectos de la presente invención pueden ser implementados como un sistema, método o producto de programa
de computadora. Así, uno o más aspectos de la presente invención pueden tomar la forma de una modalidad completamente de elementos físicos, una modalidad completamente de elementos de programación (incluyendo elementos fijos, elementos de programación residentes, microcódigos, etc.) o una modalidad que combina aspectos de elementos de programación y elementos físicos que pueden en general ser referidos en la presente como un "circuito" , "módulo" o "sistema". Además, uno o más aspectos de la presente invención pueden tomar la forma de un producto de programa de computadora implementado en uno o más medios que se pueden leer por computadora que tienen códigos de programa que se pueden leer por computadora implementados en el mismo.
Cualquier combinación de uno o más medios que se pueden por computadora pueden ser utilizados. El medio que se puede leer por computadora puede ser un medio de almacenamiento que se puede leer por computadora. Un medio de almacenamiento que se puede leer por computadora puede ser, por ejemplo pero no limitado a, un sistema, aparato o dispositivo electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor o cualquier configuración apropiada de los anteriores. Ejemplos más específicos (una lista no exhaustiva) de medios de almacenamiento que se pueden leer por computadora incluyen los siguientes : una conexión eléctrica que tiene uno o más alambras, un disco flexible de
computadora portátil, un disco duro, memoria de acceso aleatorio (RAM) , memoria de sobre lectura (ROM) , memoria de solo lectura programable borrable (EPROM o memoria instantánea) , una fibra óptica, una memoria de solo lectura de disco compacto portátil (CD-ROM) , un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético o cualquier combinación apropiada de los anteriores. En el contexto de este documento, un medio de almacenamiento que se puede leer por computadora puede ser cualquier medio tangible que puede contener o almacenar un programa para uso por o en relación con un sistema, aparato o dispositivo de ejecución de instrucciones.
Refiriéndose ahora a la figura 7, en un ejemplo, un producto de programa de computadora 700 incluye por ejemplo uno o más medios de almacenamiento que se pueden leer por computadora no transitorios 702 para almacenar medios de códigos de programa que se puede leer por computadora o lógica 704 en los mismos para proveer y facilitar uno o más aspectos de la presente invención.
Los códigos de programa implementados en un medio que se puede leer por computadora pueden ser transmitidos utilizando un medio apropiado, incluyendo pero no limitado a medios inalámbricos, cableados, cable de fibra óptica, RF, etc. o cualquier combinación apropiada de los anteriores .
Códigos de programa de computadora para llevar a cabo
operaciones para uno o más aspectos de la presente invención pueden ser escritos en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado al objeto, tal como Java, Samlltalk, C++ o los semejantes y lenguajes de programación de procedimiento convencionales, tal como el lenguaje de programación "C", ensamblador o lenguajes de programación similares. Los códigos de programa pueden ser ejecutados completamente en la computadora del usuario, parcialmente en la computadora del usuario, como un paquete de elementos de programación autónomo, parcialmente en la computadora del usuario y parcialmente en una computadora remota o completamente en la computadora remota o servidor. En el último escenario, la computadora remota puede ser conectada a la computadora del usuario por medio de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia (WAN) o la conexión se puede hacer a una computadora externa (por ejemplo, por medio de internet utilizando el proveedor de servicio de internet) .
Uno o más aspectos de la presente invención son descritos en la presente con referencia a las instrucciones del diagrama de flujo y/o diagrama de bloques de métodos, aparatos (sistemas) y productos de programa de computadora de acuerdo con modalidades de la invención. Se comprenderá que cada bloque de las instrucciones de diagrama de flujo y/o
diagramas de bloques y combinaciones de bloques en las ilustraciones del diagrama de flujo y/o diagramas de bloques, pueden ser implementados por instrucciones de programa de computadora. Estas instrucciones de programa de computadora pueden ser provistas a un procesador de una computadora de propósito especial, computadora de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de tal manera que las instrucciones que se ejecutan vía el procesador de la computadora u otro aparato de procesamiento de datos programable, crean medios para implementar las f nciones/acciones especificadas en el diagrama de flujo y/o bloque o bloques del diagrama de bloques .
Estas instrucciones de programa de computadora pueden también ser almacenadas en un medio que se puede leer por computadora que puede dirigir a una computadora, otro aparato de procesamiento de datos programable u otros dispositivos para fusionar de una manera particular, de tal manera que las instrucciones almacenadas en el medio que puede leer por computadora producen un artículo de manufactura que incluyen instrucciones que implementan la función/acción especificada en el diagrama de flujo y/o bloque o bloques del diagrama de bloques .
Las instrucciones de programa de computadora pueden también ser cargadas a una computadora, otro aparato de
procesamiento de datos programable u otros dispositivos para provocar que una serie de etapas operacionales sean efectuadas en la computadora, otros aparatos programables u otros dispositivos para producir un procesado implementado por computadora de tal manera que las instrucciones que se ejecutan en la computadora u otro aparato programable proveen procesos para implementar las funciones/acciones especificadas en el diagrama de flujo y/o bloque o bloques del diagrama de bloques .
El diagrama de flujo y diagramas de bloques en las figuras ilustran la arquitectura, funcionalidad y operación de implementaciones de sistemas, métodos y productos de programa de computadora de acuerdo con varias modalidades de uno o más aspectos de la presente invención. A este respecto, cada bloque en el diagrama de flujo o diagrama de bloques puede representar un módulo, segmento o porción de códigos, que comprenden una o más instrucciones ejecutables para implementar las funciones lógicas especificadas. También se debe notar que 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 en efecto ser ejecutados sustancialmente de manera concurrente o los bloques pueden algunas veces ser ejecutados en el orden inverso, dependiendo de la funcionalidad involucrada. También se notará que cada
bloque de los diagramas de bloque y/o ilustración del diagrama de flujo y combinaciones de bloques en los diagramas de bloques y/o ilustración de diagrama de flujo, puede ser implementado por sistemas a base de elementos físicos de propósito especial que efectúan las funciones las funciones o acciones especificadas o combinaciones de elementos físicos de propósito especial e instrucciones de computadora.
Además de los anteriores, uno o más aspectos de la presente invención pueden ser provistos, ofrecidos, desplegados, manejados, servidos, etc. por un proveedor de servicio que ofrece manejo de medios ambientes del cliente. Por ejemplo, el proveedor de servicio puede crear, mantener, soportar, etc. códigos de computadora y/o una infraestructura de computadora que efectúa uno o más aspectos de la presente invención para uno o más clientes. A cambio, el proveedor de servicio puede recibir pago del cliente bajo una suscripción y/o acuerdo de cuota, como ejemplos. Adicional o alternativamente, el proveedor de servicio puede recibir pago de la venta de contenido de anuncios a una o más terceras partes .
En un aspecto de la presente invención, una aplicación puede ser desplegada para efectuar uno o más aspectos de la presente invención. Como un ejemplo, el despliegue de una aplicación comprende proveer infraestructura de computadora operable para efectuar uno o más aspectos de la presente
invención.
Como un aspecto adicional de la presente invención, una infraestructura de cómputo puede ser desplegada que comprende integrar códigos que se pueden leer por computadora a un sistema de cómputo, en el cual los códigos en combinación con el sistema de cómputo son aptos de efectuar uno o más aspectos de la presente invención.
Como todavía un aspecto adicional de la presente invención, se puede proveer un proceso para integrar infraestructura de cómputo que comprende integrar códigos que se pueden leer por computadora a un sistema de computadora. El sistema de computadora comprende un medio que se puede leer por computadora, en el cual el medio de computadora comprende uno o más aspectos de la presente invención. Los códigos en combinación con el sistema de computadora son aptos de efectuar uno o más aspectos de la presente invención.
Aunque varias modalidades son descritas anteriormente, estas son solamente ejemplos. Por ejemplo, los medios ambientes de cómputo de otras arquitecturas pueden incorporar y usar uno o más aspectos de la presente invención. Además, vectores de otros tamaños u otros registros pueden ser usados y se pueden hacer cambios a las instrucciones sin desviarse del espíritu de la presente invención. Adicionalmente, otras instrucciones pueden ser usadas en el procesamiento. Además,
uno o más aspectos de la invención concernientes con transformar especificadores no contiguos a especificadores contiguos pueden ser usados en otros contextos. Además, los especificadores pueden ser para otros elementos diferentes de registros. Otros cambios también son posibles.
Además, otros tipos de medios ambientes de cómputo se pueden beneficiar de uno o más aspectos de la presente invención. Como un ejemplo, un sistema de procesamiento de datos apropiado para almacenar y/o ejecutar códigos de programa es utilizable que incluye por lo menos dos procesadores acoplados directa o indirectamente a elementos de memoria por medio de una línea de principal del sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real de los códigos de programa, almacenamiento global y memoria cache que proveen almacenamiento temporal de por lo menos algunos códigos de programa con el fin de reducir el número de veces que los códigos deben ser recuperados del almacenamiento global durante la ejecución.
Los dispositivos de entrada/salida o 1/0 (incluyendo pero no limitado a teclados, pantallas, dispositivos apuntadores, DASD, cinta, CD, DVD, unidades de pulgar y otros medios de memoria, etc.) pueden ser acoplados al sistema ya sea directamente o por medio de controladores I/O intermedios . Adaptadores de red pueden también ser acoplados
al sistema para permitir que el sistema de procesamiento de datos sea acoplado a otro sistema de procesamiento de datos o impresora remota o dispositivos de almacenamiento por medios de redes privadas o públicas intermedias. Módems, módems de cable y tarjetas eternet son solo unos pocos de los tipos disponibles de adaptadores de red.
Refiriéndose a la figura 8, se ilustran componentes representativos de un sistema de computadora huésped 5000 para implementar uno o más aspectos de la presente invención. El sistema de computadora huésped representativo 5000 incluye una o más CPU 5001 en comunicación con la memoria de computadora (esto es, almacenamiento central) 5002, también como interfaces de y/o a dispositivos de medios de almacenamiento 5011 y redes 5010 para comunicarse con otras computadoras o SAN y los semejantes. La CPU 5001 cumple con una arquitectura que tiene un conjunto de secciones arquitectadas y funcionalidad arquitectada. La CPU 5001 puede tener traducción de dirección dinámica (DAT) 5003 para transformar direcciones de programa (direcciones virtuales) a direcciones reales de memoria. Una DAT incluye comúnmente una memoria temporal o memoria intermedia de consulta de traducción (TLB) 5007 para guardar en memoria cache traducciones de tal manera que los accesos más tarde al bloque de memoria de computadora 5002 no requieren el retardo de traducción de dirección. Comúnmente, una memoria caché
5009 es empleada entre la memoria de computadora 5002 y el procesador 5001. La memoria cache 5009 puede ser jerárquica teniendo una memoria caché grande disponible a más de una CPU y memoria cache más pequeña, más rápidas (nivel más bajo) entre la memoria cache grande y cada CPU. En algunas implementaciones, las memorias caches de nivel inferior son divididas para proveer memorias cache de nivel bajo separadas para extracción de instrucciones y acceso de datos. En una modalidad, una instrucción es extraída de la memoria 5002 por una unidad de extracción de instrucciones 5004 y una memoria cache 5009. La instrucción es descodificada en una unidad de descodificación de instrucciones 5006 y despachada (con otras instrucciones en algunas modalidades) a la unidad o unidad de ejecución de instrucciones 5008. Comúnmente, se emplean varias unidades de ejecución 5008, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción ramal. La instrucción es ejecutada por la unidad de ejecución, accediendo a operandos de registros especificados por la instrucción o memoria como sea necesario. Si se va a acceder a un operando (cargado o almacenado) de la memoria 5002, una unidad de carga/almacenamiento 5005 comúnmente maneja el acceso bajo el control de ejecución que es ejecutada. Las instrucciones pueden ser ejecutadas en circuitos de elementos físicos o microcódigos internos (elementos fijos) o por una
combinación de ambos .
Como se indica, un sistema de computadora incluye información en almacenamiento local (o principal) , también como direccionamiento, protección y referencia y registro de cambio. Algunos aspectos de direccionamiento incluyen el formato de direcciones, el concepto de espacio de dirección, los varios tipos de direcciones y la manera en la cual un tipo de dirección es traducida a otro tipo de dirección. Algo del almacenamiento principal incluye sitios de almacenamiento asignados permanentemente. El almacenamiento principal provee al sistema con almacenamiento de datos de rápido acceso direccionable directamente. Tanto los datos como los programas van a ser cargados al almacenamiento principal (de dispositivos de entrada) antes de que puedan ser procesados .
El almacenamiento principal puede incluir uno o más almacenamientos de memoria temporal o memoria intermedia más pequeña, acceso más rápido, a veces llamados memoria caché. La memoria cache esta comúnmente asociada físicamente con una CPU y/o un procesador de I/O. los efectos, excepto en el desempeño, de la construcción física y uso de medios de almacenamiento distintos en general no son observables por el programa .
Se pueden mantener memorias caché separadas para instrucciones y para operandos de datos. La información dentro de una memoria cache es mantenida en bytes contiguos
en una frontera integral llamada un bloque de memoria o línea de memoria cache (o línea, por brevedad) . Un modelo puede proveer una instrucción de extraer atributos de memoria cache que devuelve el tamaño de una línea de memoria caché en bytes . Un modelo puede también proveer instrucciones de pree-extraer datos y pre-extraer datos relativamente largos que efectúan la pre-extracción de almacenamiento a los datos o memoria cache de instrucciones o la liberación de datos de la memoria cache.
El almacenamiento es visto como una cadena horizontal larga de bits. Para la mayoría de las operaciones, los accesos al almacenamiento proceden en una secuencia de izquierda a derecha. La cadena de bits es sub-dividida en unidades de ocho bits. Una unidad de ocho bits es llamada un byte, que es llamada bloque de construcción básico de todos los formatos de información. Cada sitio de bytes en almacenamiento es identificado por un número entero no negativo único, que es la dirección de aquel sitio de bytes o simplemente la dirección de bytes. Los sitios de bytes adyacentes tienen direcciones consecutivas empezando con cero a la izquierda y procediendo en una secuencia de izquierda a derecha. Las direcciones son números enteros binarios sin llenar y son de 24, 31 o 64 bits.
La información es transmitida entre el almacenamiento y una CPU o un byte del sub-sistema de canal o un grupo de
bytes a la vez. A no ser que se especifique de otra manera, por ejemplo en la arquitectura z/Architecture, un grupo de bytes en almacenamiento es direccionado por el byte más a la izquierda del grupo, el número de bytes en el grupo es ya sea especificado implícitamente o explícitamente por la operación a ser efectuada. Cuando es usado en una operación de CPU, un grupo de bytes es llamado un campo. Dentro de cada grupo de bytes, por ejemplo, en la z/Architecture, los bits son numerados en una secuencia de izquierda a derecha. En la z/Architecture, los bits más a la izquierda son algunas veces denominados como los "bits de alto orden" y los bits más a la derecha como los bits de "bajo orden" . Los números de bits no son direcciones de almacenamiento, sin embargo. Solamente los bytes pueden ser direccionados . Para operar en bits individuales de un byte en almacenamiento, que accede a todo el byte. Los bits en un byte son numerados de 0 a 7, de izquierda a derecha (por ejemplo, en la z/Architecture) . Los bits en una dirección pueden ser numerados 8-31 o 40-63 para direcciones de 24 bits o 1-31 o 33-63 para direcciones de 31 bits; son numerados 0-63 para direcciones de 64 bits. Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que componen el formato son numerados consecutivamente empezando desde 0. Por propósitos de detección de error y preferiblemente por corrección, uno o más bits de verificación pueden ser transmitidos con cada
byte o con un grupo de bytes. Tales bits de verificación son generados automáticamente por la máquina y no pueden ser controlados directamente por el programa. Las capacidades de almacenamiento son expresadas en número de bytes . Cuando la longitud de un campo de almacenamiento-operando es implicada por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser de uno, dos, cuatro, ocho o dieciséis bytes. Campos más grandes pueden ser implicados para algunas instrucciones . Cuando la longitud de un campo de almacenamiento-operando no es implicada sino que es afirmada explícitamente, se dice que el campo tiene una longitud variable . Los operandos de longitud variable pueden variar de longitud por incrementos de un byte (o con algunas instrucciones en múltiplos de dos bytes u otros múltiplos) . Cuando la información es colocada en almacenamiento, el contenido de solamente aquellos sitios de bytes es reemplazado que son incluidos en el campo designado, aunque el ancho de la ruta física al almacenamiento puede ser mayor que la longitud del campo que es almacenado.
Ciertas unidades de información van a estar en una frontera integral en almacenamiento. Una frontera es llamada integral para una unidad de información cuando su dirección de almacenamiento es un múltiplo de la longitud de la unidad del byte. Se dan nombres especiales a campos de 2, 4, 8 y 16 bytes sobre una frontera integral. Una media palabra es un
grupo de dos bytes consecutivos sobre una frontera de dos bytes y es bloque de construcción básico de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos sobre una frontera de cuatro bytes . Una doble palabra es un grupo de ocho bytes consecutivos sobre una frontera de ocho bytes . Una cuadrupalabra es un grupo de dieciséis bytes consecutivos sobre una frontera de dieciséis bytes. Cuando las direcciones de almacenamiento designan medias palabras, palabras, dobles palabras y cuadrupalabras, la representación binaria de la dirección contiene uno, dos, tres o cuatro bits cero más a la derecha, respectivamente. Las instrucciones van a estar sobre fronteras integrales de dos o más bytes. Los operandos de almacenamiento de la mayoría de las instrucciones no tienen requerimiento de alineación de frontera.
En dispositivos que implementan memorias cache separadas para instrucciones y operandos de datos, se puede experimentar un retardo significativo si el programa almacena a una linea de memoria cache de la cual las ejecuciones son subsecuentemente extraídas, sin consideración de si el almacenamiento altera las instrucciones que son subsecuentemente extraídas .
En una modalidad, la invención se puede llevar a la práctica por elementos de programación (algunas veces referidos como códigos internos con licencia, elementos fijos, microcódigos, milicódigos, picocódigos y los
semejantes, cualquiera de los cuales sería consistente con uno o más aspectos de la presente invención) . Refiriéndose a la figura 13, los códigos de elementos de programación que implementan uno o más aspectos de la presente invención pueden ser accedidos por el procesador 5001 del sistema huésped 5000 para dispositivos de medios de almacenamiento de largo plazo 5011, tal como una unidad de CD-ROM, unidad de cinta o disco duro. Los códigos de programa de elementos de programación pueden ser implementados en cualquiera de una variedad de medios conocidos para uso con un sistema de procesamiento de datos, tal como un disco flexible, disco duro o CD-ROM, los códigos pueden ser distribuidos en tales medios o pueden ser distribuidos a usuario de la memoria de computadora 5002 o almacenamiento de un sistema de computadora en una red 5010 a otro sistema de computadora para uso por los usuarios de tales otros sistemas.
Los códigos de programa de elementos de programación incluyen un sistema operativo que controla la función e interacción de los varios componentes de computadora y uno o más programas de aplicación. Los códigos de programa son localizados normalmente en dispositivos de medios de almacenamiento 5011 al almacenamiento de computadora de relativamente velocidad más alta 5002 en donde están disponibles para procesamiento por el procesador 5001. Las técnicas y métodos para implementar códigos de elementos de
programación en memoria, en medios físicos y/o distribuir códigos de elementos de programación vía redes son bien conocidos y no serán discutidos adicionalmente en la presente. Los códigos de programa, cuando son creados y almacenados en un medio tangible (incluyendo pero no limitado a módulos de memoria electrónicos (RAM) , memoria instantánea, discos compactos (CD) , DVD, cinta magnética y los semejantes son referidos frecuentemente como "producto de programa de computadora" ) . El producto de programa de computadora se puede leer comúnmente por un circuito de procesamiento preferiblemente en un sistema de computadora para ejecución para el circuito de procesamiento.
La figura 9 ilustra una estación de trabajo o sistema de elementos físicos de servidor representativo en el cual uno más aspectos de la presente invención se puede llevar a la práctica. El sistema 5020 de la figura 9 comprende un sistema de computadora base representativa 5021, tal como una computadora personal, una estación de trabajo o un servidor, incluyendo dispositivos periféricos opcionales. El sistema de computadora base 5021 incluye uno o más procesadores 5026 y una línea de distribución empleada para conectar y habilitar la comunicación entre el (los) procesador (es) 5026 y los otros componentes de sistemas 5021 de acuerdo con técnicas conocidas. La línea de distribución principal conecta el procesador 5026 a la memoria 5025 y el almacenamiento a largo
plazo 5027 que puede incluir un disco duro (incluyendo a cualquiera de medios magnéticos, CD, DVD y memoria instantánea, por ejemplo) o una unidad distinta, por ejemplo. El sistema 5021 también podría incluir un adaptador de interface de usuario, que conecta el microprocesador 5026 vía la línea de instrucción a uno o más dispositivos de interface, tal como un teclado 5024, un ratón 5023, una impresora/escáner 5030 y/u otros dispositivos de interface, que puede ser cualquier dispositivo de interface de usuario, tal como una pantalla sensible al contacto, teclado de entrada digitalizada, etc. La línea de distribución también se conecta a un dispositivo de pantalla 5022, tal como una pantalla o monitor de LCD, al microprocesador 5025 vía un adaptador de pantalla.
El sistema 5021 se puede comunicar con otras computadoras o redes de computadoras por medio de un adaptador de red apto de comunicarse 5028 con una red 5029. Adaptadores de red ejemplares son canales de comunicación, token ring, eternet o módems. Alternativamente, el sistema 5021 se puede comunicar utilizar una interface inalámbrica tal como una tarjeta de CDPD (datos de paquete digital celular) . El sistema 5021 puede estar asociado con tales otros componentes en una red de área local (LAN) o una red de área amplia (WAN) o el sistema 5021 puede ser un cliente en un arreglo/servidor con otra computadora, etc. Todas estas
configuraciones, también como los elementos físicos y elementos de programación de comunicaciones apropiados, son conocidos en el arte.
La figura 10 ilustra una red de procesamiento de datos 5040 en la cual se puede llevar a la práctica uno o más aspectos de la presente invención. La red de procesamiento de datos 5040 puede incluir una pluralidad de redes individuales, tales como una red inalámbrica y una red cableada, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo individuales 5041, 5042, 5043, 5044. Adicionalmente, como aquellos experimentados en el arte apreciarán, una o más LAN pueden ser incluidas, en donde una LAN puede comprender una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador huésped.
Todavía refiriéndose a la figura 10, las redes pueden también incluir las redes pueden también incluir computadoras principales o servidores, tal como una computadora de compuerta (servidor de cliente 5046) o servidor de aplicación (servidor remoto 5048 que puede acceder a un depósito de datos y puede también ser accedido directamente de una estación de trabajo 5045) . Una computadora de computadora 5046 sirve como punto de entrada a cada red individual. Una compuerta es necesaria cuando se conecta un protocolo de red a otro. La compuerta 5046 puede ser preferiblemente acoplada a otra red (el internet 5047 por ejemplo) por medio de un
enlace de comunicaciones. La compuerta 5046 puede también ser acoplada directamente a una o más estaciones de trabajo 5041, 5042, 5043, 5044 utilizando un enlace de comunicaciones. La computadora de compuerta puede ser implementada utilizando un servidor System z eServer™ de IBM disponible de International Business Machines Corporation.
Refiriéndose concurrentemente a la figura 9 y figura 10, los códigos de programación de elementos de programación que pueden implementar uno o más aspectos de la presente invención pueden ser accedidos por el procesador 5026 del sistema 5020 de los medios de almacenamiento a largo plazo 5027, tal como una unidad de CD-ROM o disco duro. Los códigos de progamación de elementos de programación pueden ser implementados en cualquiera de una variedad de medios conocidos para uso con un sistema de procesamiento de datos, tal como un disco flexible, unidad de disco duro o CD-ROM. Los códigos pueden ser distribuidos en tales medios o pueden ser distribuidos a usuarios 5050, 5051 de la memoria o almacenamiento de un sistema de computadora sobre una red a otro sistema de computadora para uso por usuarios de tales otros sistemas.
Alternativamente, los códigos de programación pueden ser implementados en la memoria 5025 y accedidos por el procesador 5026 utilizando la línea de distribución del procesador. Tales códigos de programación incluyen un sistema
operativo que controla la función e interacción de los varios componentes de computadora y uno o más programas de aplicación 5032. Los códigos de programa son normalmente localizados de los medios de almacenamiento 5027 a la memoria de alta velocidad 5025 en donde están disponibles para procesamiento por el procesador 5026. Las técnicas y métodos para implementar códigos de programación de elementos de programación en memoria, en medios físicos y/o distribuir códigos de elementos de programación vía redes que son bien conocidos y no serán discutidos adicionalmente en la presente. Los códigos de programa, cuando son creados y almacenados en un medio tangible (incluyendo pero no limitado a módulos de memoria electrónicos (RAM) , memoria instantánea, discos compactos (CD) , DVD, cinta magnética y los semejantes son referidos frecuentemente como "producto de programa de computadora" . El medio de producto de programa de computadora es comúnmente leíble por un circuito de procesamiento preferiblemente en un sistema de computadora para ejecución por el circuito de procesamiento.
La memoria cache que está más fácilmente disponible al procesador (normalmente más rápida y más pequeña que otras memoria caché del procesador) es la memoria caché más baja (Ll o nivel 1) y almacenamiento principal (memoria principal) es la memoria caché de nivel más alto (L3 si hay tres niveles) . La memoria caché de nivel más bajo es
frecuentemente dividida en una memoria caché de instrucciones (I-caché) que porta instrucciones de la máquina a ser ejecutadas y una memoria cache de datos (cache D) que contiene operandos de datos .
Refiriéndose a la figura 11, se ilustra una modalidad de procesador ejemplar para el procesador 5026. Comúnmente, uno o más niveles de memoria cache 5053 son empleados a bloques de memoria intermedia con el fin de mejorar el desempeño del procesador. La memoria caché 5053 es una memoria caché de alta velocidad que contiene líneas de cache de datos de memoria que son probables de ser usados. La línea de memoria cache típica son de 64, 128 o 256 bytes de datos de memoria. Memorias cache separadas son frecuentemente empleadas para almacenar en cache instrucciones que para almacenar en cache datos, coherencia de memoria cache (sincronización de copias de líneas en memoria y memoria cache) es frecuentemente provista por varios algoritmos "espía" bien conocidos en el arte. El almacenamiento de memoria principal 5025 de un sistema de procesador es frecuentemente referido como una memoria cache. En un sistema de procesador que tiene cuatro niveles de cache 5053, el almacenamiento principal 5025 es algunas veces referido como la memoria cache de nivel 5 (L5) puesto que es comúnmente más rápida y contiene solo una porción del alojamiento no volátil (DASD, cinta, etc.) que está disponible a un sistema de computadora. El
almacenamiento principal 5025 guarda en "cache" páginas de datos recolectados dentro y fuera del almacenamiento principal 5025 por el sistema operativo.
Un contador de programa (contador de instrucciones) 5061 mantiene el seguimiento de la dirección de la instrucción actual a ser ejecutada. Un contador de programa en un procesador de z/Architecture es de 64 bits y puede ser truncado a 31 o 24 bits para soportar límites de direccionamiento previos. Un contador de programa es implementado comúnmente en una PSW (palabra de estatus del programa) de una computadora, de tal manera que persiste durante el cambio de contexto. Así, un programa en avance, que tiene un valor de contador de programa, puede ser interrumpido por ejemplo por el sistema operativo (cambio de contexto del medio ambiente de programa al medio ambiente del sistema operativo) . La PSW del programa mantiene el valor del contador de programa mientras que el programa no está activo y el contador de programa (de la PSW) del sistema operativo es usado en tanto que el sistema operativo se está ejecutando. Comúnmente, el contador de programa es implementado por una cantidad igual al número de bytes de la instrucción actual. Las instrucciones de RISC (computo de conjunto de instrucciones complejas) son comúnmente de longitud variable. Las instrucciones de la z/Architecture de IBM son instrucciones de CISC que tienen una longitud de 2, 4
o 6 bytes. El contador de programa 5061 es modificado ya sea por una operación de cambio de contexto o una operación tomada ramal de una instrucción ramal por ejemplo. En una operación de cambio de contexto, el valor del contador de programa actual es guardado en la palabra de estatus del programa junto con otra información de estado acerca del programa que es ejecutado (tales como códigos de condición) y un nuevo valor de contador de programa es cargado que apunta a una instrucción de un nuevo módulo de programa a ser ejecutado. Una operación ramal tomada es efectuada con el fin de permitir que el programa tome decisiones o realicé ciclos dentro del programa al cargar el resultado de la instrucción ramal al contador del programa 5061.
Comúnmente se usa una unidad de extracción de instrucciones 5055 para extraer instrucciones a nombre del procesador 5026. La unidad de extracción ya sea extrae "próximas instrucciones secuenciales" , instrucciones objetivo o instrucciones ramales tomadas o primeras instrucciones de un programa enseguida de un cambio de contexto. Las unidades de extracción de instrucciones modernas frecuentemente emplean técnicas de extracción para pre-extraer especulativamente instrucciones basadas en la probabilidad de que las instrucciones pre-extraídas podrían ser usadas. Por ejemplo, una unidad de extracción puede extraer 16 bytes de instrucción que incluyen la próxima instrucción secuencxal y
bytes adicionales de instrucciones secuenciales adicionales.
Las instrucciones extraídas son luego ejecutadas por el procesador 5026. En una modalidad, la (s) instrucción (es) extraída (s) se hace (n) pasar a una unidad de despacho 5056 d la unidad de extracción. La unidad de despacho descodifica la (s) instrucción (es) y envía información acerca de la (s) instrucción (es) descodificada (s) a unidades apropiadas 5057, 5058, 5060. Una unidad de ejecución 5057 comúnmente recibirá información acerca de instrucciones aritméticas descodificadas de la unidad de extracción de instrucciones 5055 y efectuará operaciones aritméticas sobre operandos de acuerdo con el código de operación de la instrucción. Los operandos son provistos a la unidad de ejecución 5057 ya sea preferiblemente de la memoria 5025, registros arquitectados 5059 o de un campo inmediato de la instrucción que es ejecutada. Los resultados de ejecución, cuando son almacenados, son almacenados ya sea en la memoria 5025, registro 5059 o en otros elementos físicos de la máquina (tales como registros de control, registros PSW y los semejantes) .
Un procesador 5026 comúnmente tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Refiriéndose a la figura 12A, una unidad de ejecución 5057 se puede comunicar con los registros generales arquitectados 5059, una unidad de descodificación/despacho 5056, una unidad
de almacenamiento de carga 5060 y otras unidades de procesador 5065 por medio de la lógica de interconexión 5061. Una unidad de ejecución 5057 puede emplear varios circuitos de registro 5067, 5068, 5069 para contener información sobre la que la unidad lógica aritmética (ALU) 5066 operará. La ALU efectúa operaciones aritméticas tales como suma, resta, multiplicación y división, también como función lógica, tales como y, o y exclusivo o (XOR) , girar y desplazar. Preferiblemente, la ALU soporta operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proveer otros equipos arquitectónicos 5072 incluyendo códigos de condición y lógica de soporte de recuperación por ejemplo. Comúnmente, el resultado de una operación de ALU es mantenido en un circuito de registro de salida 5060 que puede enviar el resultado a una variedad de otras funciones de procesamiento. Hay muchos arreglos de unidades de procesador, la presente invención solamente pretende proveer un entendimiento representativo de una modalidad.
Una instrucción de ADD por ejemplo seria ejecutada en una unidad de ejecución 5057 que tiene funcionalidad aritmética y lógica mientras que una instrucción de punto flotante por ejemplo sería ejecutada en una ejecución de punto flotante que tiene capacidad de punto flotante especializada. Preferiblemente, una unidad de ejecución opera sobre operandos identificados por una instrucción al efectuar
una función definida por el código de operación sobre los operandos. Por ejemplo, una instrucción de ADD puede ser ejecutada por una unidad de ejecución 5077 sobre operandos encontrados en dos registros 5059 identificados por campos de registro de la instrucción.
La unidad de ejecución 5057 efectúa la adición aritmética sobre dos operandos y almacena el resultado en un tercer operando, en donde el tercer operando puede ser un tercer registro o uno de dos registros fuente. La unidad de ejecución utiliza preferiblemente una unidad lógica aritmética (ALU) 5066 que es apta de efectuar una variedad de funciones lógicas tales como desplazamiento, rotación, y, o y XOR también como una variedad de funciones algebraicas incluyendo cualquiera de suma, resta, multiplicación, división. Algunas ALU 5066 están diseñadas para operaciones escalares y algunas para punto flotante. Los datos pueden ser Big Endian (en donde el byte menos significativo se encuentra en la dirección de bytes más alta) o Little Endian (el byte menos significativo está en la dirección de bytes más baja) . Dependiendo de la arquitectura. La z/Architecture de IBM es Big Endian. Los campos firmados pueden ser de signo y magnitud, complemento de uno o complemento de dos dependiendo de la arquitectura. Un número de complemento de 2 es ventajoso en que la ALU no necesita diseñar una capacidad de resta puesto que ya sea un valor negativo o un valor positivo
en el complemento de dos requiere solamente una adición dentro de la ALU. Los números son descritos comúnmente en breve, en donde un campo de 12 bits define una dirección de un bloque de 4096 bytes y es descrito comúnmente como un bloque de 4 kilobytes (kilo-byte) , por ejemplo.
Refiriéndose a la figura 12B, la información de instrucción ramal para ejecutar una instrucción ramal es enviada comúnmente a una unidad ramal 5058 que frecuentemente emplea un algoritmo de predicción ramal, tal como una tabla de historia de ramificación 5082 para predecir el resultado de la ramificación antes de que otras operaciones condicionales estén consumadas. El objetivo de la instrucción ramal actual será extraído y ejecutado especulativamente antes de que las operaciones condicionales estén consumadas. Cuando las operaciones condicionales son consumadas, las instrucciones ramales ejecutadas especulativamente son ya sea consumadas o descartadas en base a las condiciones de la operación condicional y el resultado especulado. Una instrucción ramal típica puede probar códigos de condición y ramificarse a una dirección objetivo si los códigos de condición cumplen con el requerimiento ramal en la instrucción ramal, una dirección objetivo puede ser calculada en base a varios números incluyendo los encontrados en los campos de registro o un campo inmediato de la instrucción por ejemplo. La unidad ramal 5058 puede emplear una ALU 5074 que
tiene una pluralidad de circuitos de registro de entrada 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad ramal 5058 se puede comunicar con los registros generales 5059, unidad de despacho de descodificación 5056 u otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones puede ser interrumpida por una variedad de razones incluyendo un cambio de contexto iniciado por un sistema operativo, una excepción del programa o error que provoca un cambio de contexto, una señal de interrupción de 1/0 que provoca un cambio de contexto o actividad de multi-hebras de una pluralidad de programas (en un medio ambiente de multi-hebra) , por ejemplo. Preferiblemente, una acción de cambio de contexto guarda información de estado acerca de un programa que se ejecuta actualmente y luego carga información de estado acerca de otro programa que es invocado. La información de estado puede ser guardada en registros de elementos físicos o en memoria por ejemplo. La información de estado comprende preferiblemente un valor de contador de programa que apunta a una instrucción siguiente a ser ejecutada, códigos de condición, información de traducción de memoria y contenidos de registro arquitectado . Una actividad de cambio de contexto puede ser ejercida por circuitos de elementos físicos, programas de aplicación, programas del sistema operativo o códigos de elementos fijos (microcódigos , picocódigos o
códigos internos con licencia (LIC) ) solos o en combinación.
Un procesador accede a operandos de acuerdo con métodos definidos por la instrucción. La instrucción puede proveer un operando inmediato utilizando el valor de una porción de la instrucción, puede proveer uno o más campos de registro que apuntan explícitamente ya sea a registradores de propósito general o registradores de propósito especial (registros de punto flotante por ejemplo) . La instrucción puede utilizar registros implicados identificados por un campo de código de operación como operandos. La instrucción puede utilizar sitios de memoria para operandos. Un sitio de memoria de un operando puede ser provisto por un registro, un campo inmediato o una combinación de registros y campo inmediato como es ejemplificado por el equipo de desplazamiento largo de z/Architecture en donde la instrucción define un registro base, un registro de índice y un campo inmediato (campo de desplazamiento que son agregados conjuntamente para proveer la dirección del operando en memoria, por ejemplo) . El sitio en la presente implica comúnmente un sitio en memoria principal (almacenamiento principal) a no ser que se indique de otra manera.
Refiriéndose a la figura 12C, un procesador accede al almacenamiento utilizando una unidad de carga/almacenamiento 5060. La unidad de carga/almacenamiento 5060 puede efectuar una operación de carga al obtener la dirección del operando
objetivo en memoria 5053 y cargar el operando en un registro 5059 u otro sitio de memoria 5053 o puede efectuar una operación de almacenamiento al obtener la dirección del operando objetivo en memoria 5053 y almacenar los datos obtenidos de un registro 5059 u otro sitio de memoria 5053 en el sitio de operando objetivo en la memoria 5053. La unidad de carga/almacenamiento 5060 puede ser especulativa y puede acceder a la memoria en una secuencia que esta fuera de orden en relación con la secuencia de instrucciones, sin embargo la unidad de carga/almacenamiento 5060 va a mantener la apariencia a programas que las instrucciones fueron ejecutadas en orden. Una unidad de carga/almacenamiento 5060 se puede comunicar con registros generales 5059, unidad de descodificación/despacho 5056, interface de memoria cache/memoria 5053 u otros elemento S5083 y comprende varios circuitos de registro, ALU 5085 y lógica de control 5090 para calcular direcciones de almacenamiento y para proveer secuencia de vencimiento para mantener las operaciones en orden. Algunas operaciones pueden estar fuera de orden pero la unidad de carga/almacenamiento provee funcionalidad para hacer que las operaciones fuera de orden aparezcan al programa habiendo sido efectuadas en orden, como es bien conocido en el arte.
Preferiblemente, las direcciones que un programa de aplicación "ve" son frecuentemente referidas como direcciones
virtuales . Las direcciones virtuales son referidas algunas veces como "direcciones lógicas" y "direcciones efectivas" . Estas direcciones virtuales son virtuales en que son redirigidas al sitio de memoria físico por cualquiera de una variedad de técnicas de traducción de dirección dinámica (DAT) , incluyendo pero no limitado a precisar simplemente una dirección virtual con un valor de desplazamiento, traducir la dirección virtual vía una o más tablas de traducción, las tablas de traducción comprenden preferiblemente por lo menos una tabla de segmento y una tabla de página sola o en combinación, preferiblemente, la tabla de segmento tiene una entrada que apunta a la tabla de página. En la z/Architecture, se provee una jerarquía de traducción que incluye una región de primera tabla, una región de segunda tabla, una región de tercera tabla, una tabla de segmento y una tabla de página opcional. El desempeño de la traducción de dirección es frecuentemente mejorado al utilizar una memoria temporal o memoria intermedia de consulta de traducción (TLB) que comprende entradas que mapean una dirección virtual a un sitio de memoria físico asociado. Las entradas son creadas cuando la DAT traduce una dirección virtual utilizando la tabla de traducción. El uso subsecuente de la dirección virtual puede luego utilizar la entrada de la TLB rápida en lugar de los accesos de tabla de traducción secuencial lenta. El contenido de TLB puede ser manejado por
una variedad de algoritmos de reemplazo incluyendo LRU (ultimo recientemente usado) .
En el caso en donde el procesador es un procesador de un sistema de multiprocesador, cada procesador tiene responsabilidad para mantener recursos compartidos, tales como 1/0, memoria cache, TLB y memoria, entrelazados por coherencia. Comúnmente, se utilizaran tecnologías "espía" para mantener la coherencia de la memoria cache. En un medio ambiente espía, cada línea cache puede ser marcada como estando en cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado no valido y los semejantes con el fin de facilitar la composición.
Las unidades de 1/0 5054 (figura 11) proveen al procesador con medios para anexar a dispositivos periféricos incluyendo cinta, disco, impresoras, pantallas y redes, por ejemplo. Las unidades de I/O son frecuentemente presentadas al programa de computadora por controladores de elementos de programación. En comunicadores principales, tales como System z de IBM®, los adaptadores de canal y adaptadores de sistema abierto son unidades I/O de la computadora principal que proveen las comunicaciones en el sistema operativo y dispositivos periféricos.
Además, otros tipos de medios ambientes de cómputo se pueden beneficiar de uno o más aspectos de la presente invención. Como un ejemplo, un medio ambiente puede incluir
un emulador (por ejemplo, elementos de programación u otros mecanismos de emulación) , en el cual una arquitectura particülar (incluyendo, por ejemplo, ejecución de instrucciones, funciones arquitectadas tales como traducción de dirección y registros arquitectados) o un subconjunto de la misma es emulada (por ejemplo, en un sistema de computador nativo que tiene un procesador y memoria) . En tal medio ambiente, una o más funciones de emulación en el emulador pueden implementar uno o más aspectos de la presente invención, aunque una computadora que ejecuta el emulador puede tener una arquitectura diferente que las capacidades que son emuladas. Como un ejemplo, en el modo de emulación, la instrucción u operación específica que es emulada es descodificada y una emulación apropiada es integrada para implementar la interacción u operación individual
En un medio ambiente de emulación, una computadora huésped incluye, por ejemplo una memoria para almacenar instrucciones y datos; una unidad de extracción de instrucciones para extraer instrucciones de la memoria y para proveer opcionalmente almacenamiento en memoria cache local para la instrucción extraída; una unidad de descodificación de instrucciones para recibir las instrucciones extraídas y para determinar el tipo de instrucciones que han sido extraídas y una unidad de ejecución de instrucciones para ejecutar las instrucciones. La ejecución puede incluir cargar
datos a un registro de memoria; almacenar datos de regreso a la memoria de un registro o efectuar algún tipo de operación aritmética o lógica, tal como se determina por la unidad de descodificación. En un ejemplo, cada unidad es implementada en elementos de programación. Por ejemplo, las operaciones que son efectuadas por las unidades son implementadas como una o más sub-rutinas dentro de los elementos de programación del emulador.
Más en particular, en una computadora principal, instrucciones de máquina arquitectada son usadas por programadores, usualmente hoy en día programadores "C" , frecuentemente por medio de una aplicación de computador. Estas instrucciones almacenadas en el medio de almacenamiento pueden ser ejecutadas nativamente en un servidor de IBM® de z/Architecture o alternativamente en máquinas que ejecutan otras arquitecturas . Pueden ser emuladas en los servidores de computadora principal existentes y futuros de IBM® y en otras máquinas de IBM® (por ejemplo, servidores Power Systems o servidores System x®) . Pueden ser ejecutadas en máquinas que operan Linux en una amplia variedad de máquinas utilizando elementos físicos manufacturados por IBM®, Intel®, AMD® y otros. Además de la ejecución en aquellos elementos físicos bajo una z/Architecture, se puede usar Linux también como máquinas que usan emulación por Hercules, UMS o FSI (Fundamental Software, Inc.), en donde en general la
ejecución es en un modo de emulación. En el modo de emulación, los elementos de programación de emulación son ejecutados por un procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo comúnmente ejecuta elementos de programación de emulación que comprenden ya sea elementos fijos o un sistema operativo nativo para efectuar la emulación del procesador emulado los elementos de programación de emulación son responsables por extraer y ejecutar instrucciones de la arquitectura de procesador emulada. Los elementos de programación de emulación mantienen un contador de programa emulado para mantener el seguimiento de fronteras de instrucciones. Los elementos de programación de emulación pueden extraer una o más instrucciones de la máquina emuladas a la vez y convertir la una o más instrucciones de máquina emuladas a un grupo correspondiente de instrucciones de máquina nativas para ejecución por el procesador nativo. Estas instrucciones convertidas pueden ser guardadas en memoria cache de tal manera que se puede llevar a cabo una conversión más rápida. No obstante, los elementos de programación de emulación van a mantener las reglas de arquitectura de la arquitectura de procesador emulada para asegurar que lo sistemas operativos y aplicaciones escritas para el procesador emulado operen correctamente. Además, los elementos de programación de emulación van a proveer recursos
identificados por la arquitectura de procesador emulada incluyendo pero no limitado a registros de control, registros de propósito general, registros de punto flotante, función de traducción de dirección dinámica incluyendo tablas de segmento y tablas de página, por ejemplo mecanismos de interrupción, mecanismos de cambio de contexto, relojes de hora del día (TOD) e interfaces arquitectadas a subsistemas de 1/0 de tal manera que un sistema operativo o un programa de aplicación diseñado para ejecutarse en el procesador emulado se pueda ejecutar en el procesador nativo que tiene los elementos de programación de emulación.
Una instrucción específica que es emulada es descodificada y una subrutina es llamada para efectuar la función de la instrucción individual. Una función de elementos de programación de emulación que emula una función de un procesador emulado es implementada, por ejemplo en una subrutina "C" o controlador o algún otro método para proveer un controlador para los elementos físicos específicos como está dentro de la habilidad de aquellos de habilidad en el arte después del entendimiento de la descripción de la modalidad preferida. Varias patentes de emulación de elementos físicos y elementos de programación incluyendo pero no limitados a la patente estadounidense 5,551,013, intitulada "Multiprocessor for Hardware Emulation" , por Beausoleil et al y patente estadounidense 6,009,261,
intitulada "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor" , por Scalzi et al y patente estadounidense no. 5,574,873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions" , por Davidian et al y patente estadounidense no. 6,308,255, intitulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-native Code to Run in a System", por Gorishek et al y patente estadounidense no. 6,463,582, intitulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method" , por Lethin et al y patente estadounidense no. 5,790,825, intitulada "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut, cada una de las cuales es incorporada en la presente por referencia en su totalidad y muchas otras, ilustran una variedad de maneras conocidas para obtener la emulación de un formato de instrucción arquitectado para una máquina diferente para una máquina objetivo disponible para aquellos experimentados en el arte .
En la figura 13, se provee un ejemplo de un sistema de computadora huésped emulado 5092 que emula un sistema de computadora huésped 5000' de una arquitectura huésped. En el sistema de computadora huésped emulado 5092, el procesador
huésped (CPU) 5091 es un procesador huésped emulado (o procesador huésped virtual) y comprende un procesador de emulación 5093 que tiene una arquitectura de conjunto de instrucciones nativas diferentes que aquella del procesador 5091 de la computadora huésped 5000' . El sistema de computadora huésped emulado 5092 tiene memoria 5094 accesible al procesador de emulación 5093. En la modalidad ejemplar, la memoria 5094 es repartida a una porción de memoria de computadora huésped 5096 y una porción de rutinas de emulación 5097. La memoria de computadora huésped 5096 está disponible a programas de la computadora huésped emulada 5092 de acuerdo con la arquitectura de computadora huésped. El procesador de emulación 5093 ejecuta instrucciones nativas de un conjunto de instrucciones arquitectadas de una arquitectura diferente de aquella del procesador emulado 5091, las instrucciones nativas obtenidas de la memoria de rutinas de emulación 5097 y puede acceder a una instrucción huésped para ejecución de un programa en la memoria de computadora huésped 5096 al emplear una o más instrucciones obtenidas en una rutina de secuencia y acceso/descodificación que puede descodificar las instrucciones huésped accedidas para determinar una rutina de ejecución de instrucción nativa para emular la función de la instrucción huésped accedida. Otros equipos que son definidos por la arquitectura del sistema de computadora huésped 5000' pueden ser emulados por
rutinas de equipos arquitectados , incluyendo equipos tales como registros de propósito general, registros de control, traducción de dirección dinámica y soporte de subsistema y/o memoria caché del procesador, por ejemplo. Las rutinas de emulación pueden también tomar ventaja de funciones disponibles en el procesador de emulación 5093 (tales como registros generales y traducción dinámica de direcciones virtuales) para mejorar el desempeño de las rutinas de emulación. Elementos físicos especiales y motores de descarga pueden también ser provistos para ayudar al procesador 5093 a emular la función de la computadora huésped 5000' .
La terminología usada en la presente es por el propósito de describir modalidades particulares solamente y no pretende ser limitante de la invención. Como se usan en la presente, las formas singulares "uno" , "un" , "el" pretenden incluir las formas plurales también, a no ser que el contexto lo indique claramente de otra manera. Se entenderá además que los términos "comprende" y/o "que comprende" cuando son usados en esta especificación, especifican la presencia de elementos afirmados, enteros, etapas, operaciones, elementos y/o componentes, pero no impiden la presencia o adición de uno más de otros elementos, enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, actos correspondientes y equivalentes d todos los medios o elementos de etapas más
función en las reivindicaciones a continuación, si los hay, pretenden incluir cualquier estructura, material o acto para efectuar la función en combinación con otros elementos reivindicados como se reivindica específicamente. La descripción de uno o más aspectos de la presente invención será presentado por propósitos de ilustración y descripción, pero no pretende ser exhaustiva o limitar la invención a la forma revelada. Muchas modificaciones y variaciones serán evidentes para aquellos de habilidad ordinaria en el arte sin desviarse del alcance y espíritu de la invención. La modalidad fue escogida y descrita con el fin de explicar mejor los principios de la invención y la aplicación práctica y para permitir que otros de habilidad ordinaria en el arte entiendan la invención para varias modalidades con varias modificaciones como sean apropiadas al uso particular contemplada .
Capitulo 23. Instrucciones de series de vectores
Dispositivo de series de vectores
Instrucciones
A no ser que se especifique de otra manera, todos los operandos son operandos de vector-registro. Una WV" en la sintaxis de ensamblador designa un operando de vector.
VECTOR DE ENCONTRAR CUALQUIER IGUAL
Procediendo de izquierda a derecha, cada elemento entero binario sin firmar del segundo operando es comparado en cuanto a igualdad con cada elemento entero binario sin firmar del tercer operando y opcionalmente cero y la bandera de búsqueda cero es ajustada en el campo M5.
Si la bandera de tipo de resultado (RT) en el campo M5 es cero, entonces para cada elemento en el segundo operando que coincide con cualquier elemento en el tercer operando u opcionalmente cero, las posiciones del elemento correspondiente en el primer operando son ajustados a uno, de otra manera son ajustados a cero. Si la bandera de tipo de resultado (RT) en el campo M5 es uno, entonces el índice de bytes del elemento más a la izquierda en el segundo operando que coincide con un elemento en el tercer operando o cero es
almacenado en el byte 7 del primer operando.
Cada instrucción tiene una sección de mnemónica extendida que describe mnemónicos extendidos recomendados y sus sintaxis de ensamblador de máquina correspondiente .
Nota de programación: Para todas las instrucciones que opcionalmente ajustan el código de condición, el desempeño puede ser degradado si el código de condiciones establecido.
Si la bandera de tipo de resultado (RT) en el campo 5 es uno y no se encuentra ningún byte igual a cero o cero si la bandera de búsqueda cero es establecida, un índice igual al número de bytes en el vector es almacenado en el byte siete del primer operando.
El campo M especifica el control de tamaño de elemento (ES) . El control de ES especifica el tamaño de los elementos en los operandos de registro de vector. Si se especifica un valor reservado, se reconoce una excepción de especificación.
0-Byte
1-Media palabra
2 -Palabra
3 -15 -Reservado
El campo M5 tiene el siguiente formato:
Los bits del campo M5 son definidos como sigue:
Tipo de resultado (RT) : Si es cero, cada elemento resultante es una máscara de todas las comparaciones de intervalo en aquel elemento. Si es uno, un índice de bytes es almacenado al byte 7 del primer operando y se abandonan ceros en todos los otros elementos.
Búsqueda cero (ZS) : Si es uno, cada elemento del segundo operando es también comparado con cero.
Conjunto de código de condición (CC) : Si es cero, el código de condición no es establecido y permanece sin cambios. Sin es uno, el código de condición es ajustado como se especifica en la siguiente sección.
Condiciones especiales
Se reconoce una excepción de especificación y no se lleva ninguna otra acción si se presenta cualquiera de los siguientes :
1. El campo M contiene un valor de 3-15.
2. El bit 0 del campo M5 no son cero.
Código de condición resultante:
Si la bandera CC es cero, el código permanece sin
cambios .
Si la bandera CC es uno, el código es ajustado como sigue :
0 Si el bit ZS es ajustado, no hubieron coincidencias en un elemento indexado anterior de cero en el segundo operando .
1 Algunos elementos del segundo operando coinciden con por lo menos un elemento en el tercer operando.
2 Todos los elementos del segundo operando coincidieron con por lo menos un elemento en el tercer operando .
3 Ningún elemento en el segundo operando coincide con algún elemento en el tercer operando.
Excepciones de programa:
1. Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado
Especificación (valor de ES reservado)
Restricción de transacción
Mnemónicos extendidos :
VFAEB Vi,V2,V3,M5 VFAE V1,V2,V2I0,M
VFAEH V1,V2,V3,M5 VFAE Vi, V2,V3, 1,M
VFAEF V^Vs^a^s VFAE VlfV2,V3,l,M
VFAEF Vi,Va,V3,M5 VFAE Vi,V2,V3,0, (M5 ??' )
VFAEHS Vi,V2,V3,M5 VFAE Vi,V2,V3,l, (M5 ??' )
VFAEFS Vi,Va,V3,M5 VFAE Vi,V2,V3,2, (M5 ??' )
VFAEZB Vi,V2,V3,M5 VFAE Vi,V2,V3,0, (M5 X' 2' )
VFAEZH Vi,V2,V3,M5 VFAE ?!,?2, 3,?# (M5 ?' 2' )
VFAEZF Vi,V2,V3fM5 VFAE Vi,V2,V3,2, (M5 X' 2' )
VFAEZBS Vi,V2,V3,Ms VFAE Vi,V2,V3,0, (M5 ?'3' )
VFAEZHS Vi,V2,V3fM5 VFAE v1#v2,v3,i, (M5 ?'3' )
VFAEZFS V1,V2,V3,M5 VFAE Vi,V2,V3,2, (M5 X' 3' )
VECTOR ENCONTRAR ELEMENTO IGUAL
VFEE V1fV2!V3lM4,M5 [VRR-b]]
?7' i v2 v3 / / / M5 / / / / M4 RXB w
0 s 12 16 20 24 28 32 36 40 Í7
Procediendo de izquierda a derecha, los elementos enteros binarios sin firmar del segundo operando son comparados con los elementos enteros binarios sin firmar correspondientes del tercer operando. Si dos elementos son iguales, el índice de bytes del primer byte del elemento igual más a la izquierda es colocado en el byte 7 del primer operando. Ceros son almacenados en los bytes restantes del primer operando. Si no se encuentra ningún byte que sea igual o cero si la comparación de cero es establecida, un índice al
número de bytes en el vector es almacenado en el byte siete del primer operando. Los ceros son almacenados en los bytes restantes .
Si el bite de búsqueda cero (ZS) es establecido en el campo M5, entonces cada elemento en el segundo operando es también comparado en cuanto a igualdad con cero. Si se encuentra un elemento cero en el segundo operando antes de cualquier otro elemento en el segundo y tercer operandos se encuentra que sean iguales, el índice de bytes del primer byte al elemento que se encuentra a cero es almacenado en el byte siete del primer operando. Ceros son almacenados en todos los otros sitios de bytes. Si la bandera de conjunto de código de condición (CC) es uno, entonces el código de condición es ajustado a cero.
El campo M especifica el control de tamaño de elemento
(ES) . El control de ES especifica el tamaño de los elementos en los operandos de registro del vector. Si se especifica un valor, que reconoce una excepción de especificación.
0-Byte
1-Media palabra
2-Palabra
3 -15-Reservado
El campo M5 tiene el siguiente formato:
Los bits del campo M5 son definidos como sigue:
Reservado: Los bits 0-1 son reservados y deben ser cero. De otra manera, se reconoce una excepción de especificación.
Búsqueda cero (ZS) : Si es uno, cada elemento del segundo operando es también comparado con cero.
Conjunto de códigos de condición (CC) : Si es cero, el código de condición permanece sin cambio. Si es uno, el código de condición es ajustado como se especifica en la siguiente sección.
Condiciones especiales
Se reconoce una excepción de especificación y no se lleva a cabo ninguna otra acción si se presenta cualquiera de los siguientes:
1. El campo M4 contiene un valor de 3-15.
2. Los bits 0-1 del campo M5 no son cero.
Código de condición resultante:
Si el bit 3 del campo M5 es establecido a uno, el código es ajustado como sigue:
0 Si el bit de comparación de cero es establecido, la comparación detecto un elemento cero en el segundo operando en un elemento con un índice pequeño que cualesquier comparaciones iguales .
1 La comparación detecto una coincidencia entre los
segundo y en algún elemento. Si el bit de comparación con cero s establecidos, esta coincidencia se presentó en un elemento con un índice menor o igual al elemento de comparación con cero.
2
3 Ningún elemento se comparo igual .
Si el bit 3 del campo M5 es cero, el código permanece sin cambio.
Excepciones de programa
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado
Especificación (valor de ES reservado)
Restricción de transacción
Mnemónicos extendidos
VFEEB Vi,V2,V3,M5 VFEE v1,v2,v3,o, M5
VFEEH Vi,V2,V3,M5 VFEE ??,?,,?,,?, M5
VFEEF Vi, V2,V3,M5 VFEE V1,V2,V3í 0, (M5 X'l' )
VFEEHS V1,V2,V3,M5 VFEE VlfV2,V3,l, (M5 x'i'l
VFEEFS Vi, V2,V3/M5 VFEE V1,V2>V3,2, (M5 X'l' )
VFEEZB Vi,V2,V3,M5 VFEE Vi,V2,V3,0, (M5 X' 2' )
VFEEZH Vi,V2,V3,M5 VFEE Vi,V2,V3,l, (M5 X' 2' )
VFEEZF Vi,V2,V3,M5 VFEE ?^?,,?^, (M5 X' 2' )
VFEEZBS Vi,V2,V3,M5 VFEE V1,V2;V3i 0, (?5|?'3' )
VFEEZHS Vi,V2,V3/M5 VFEE Vi,V2 V3,l, (?5|?'3')
VFEEZFS Vi,V2,V3,M5 VFEE Vi,V2/V3,2< (?5|?'3')
Notas de programación
1. Un índice de byte es siempre almacenado al primer operando para cualquier tamaño de elemento. Por ejemplo, si el tamaño de elemento fue ajustado a media palabra y la segunda media palabra indexada comparada igual, entonces un índice de byte de 4 sería almacenado.
2. El tercer operando no debe contener elementos con un valor de cero. Si el tercer operando contiene un cero y coincide con un elemento cero en el segundo operando antes de cualesquier otras comparaciones iguales, el código de condición 1 es establecido sin consideración del ajuste de los bits de comparación cero.
VECTOR ENCONTRAR ELEMENTO NO IGUAL
VFENE ?„?2,?3, 4, d [VRR-b]
Procediendo de izquierda a derecha, los elementos enteros binarios sin firmar del segundo operando son
comparados con los elementos enteros binarios sin firmar correspondientes del tercer operando. Si dos elementos no son iguales, el Indice de bytes del elemento más a la izquierda no igual es colocado en el byte 7 del primer operando y se almacenan ceros a todos los otros bytes . Si el bit de conjunto de código de condición (CC) en el campo M5 es establecido a uno, el código de condición es establecido para indicar cual operando fue mayor. Si todos los elementos fueron iguales, entonces el índice de bytes igual al tamaño de vector es colocado en el byte siete del primer operando y se colocan ceros en todos los otros sitios de byte. Si el bit CC es uno, el código de condición tres es establecido.
Si el bit de búsqueda cero (ZS) es ajustado en el campo M5, cada elemento en el segundo operando es también comparado en cuanto a igualdad con cero. Si un elemento cero es encontrado en el segundo operando antes de cualquier otro elemento del segundo operando se encuentra que son desiguales, el índice de byte del primer byte del elemento que se encontró que es cero es almacenado en el byte siete del primer operando. Se almacenan ceros en todos los otros bytes y el código de condición cero es establecido.
El campo M4 especifica el control de tamaño del elemento (ES) . El control de ES específica el tamaño de los elementos en los operandos de registro de vector. Si se específica un valor reservado se reconocer una excepción de especificación.
0-Byte
1-Media palabra
2 -Palabra
3 -15-Reservado
El campo M4 tiene el siguiente formato:
Los bits del campo M5 son definidos como sigue:
Búsqueda cero (ZS) : Si es uno, cada elemento del segundo operando es también comparado con cero.
Conjunto de códigos de condición (CC) : Si es cero, el código de condición no es establecido y permanece sin cambio.
Si es uno, el código de condición es ajustado como se especifica en la siguiente sección.
Condiciones especiales
Se reconoce una excepción de especificación y no se lleva a cabo ninguna otra acción si se presenta cualquiera de los siguientes:
1. El campo M4 contiene un valor de 3-15.
2. Los bits 0-1 del campo M5 no son cero.
Código de condición resultante:
Si el bit 3 del campo M5 es ajustado a uno, el código es establecido como sigue:
0 Si el bit de comparación de cero es establecido, la comparación detecto un elemento cero en ambos operando en un elemento indexado inferior que cualquier otra desigualdad se compara .
1 Un desajuste de elementos fue detectado y el elemento en V 2 es menor que el elemento VR3.
2 Un desajuste de elementos fue detectado y el elemento VR2 es mayor que en elemento VR3.
3 Todos los elementos comparados igual y si el bit de comparación cero es establecido, no se encontraron elementos ceros en el segundo operando.
Si el bit 3 del campo M5 es cero, el código permanece sin cambios.
Excepciones de programa
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado
Especificación (valor de ES reservado)
Restricción de transacción
Mnemonicos extendidos
VFENEB V1,V2/V3,M5 VFENE Vx,V2íV3,0, M5
VFENEH Vi,V2,V3,M5 VFENE Vi,V2,V3íl,M5
VFENEF V1,V2,V3,M5 VFENE V1,V2íV3í2/M5
VFENEBS Vi,V2,V3, 5 VFENE (M5 X'l' )
VFENEHS Vi,V2,V3,M5 VFENE Vi,V2,V3,l, (M5 X'l' )
VFENEFS Vi,V2,V3,M5 VFENE VlfV2íV3,2, (M5 X'2' )
VFENEZB V1,V2,V3,M5 VFENE V1,V2íV3 0, ( 5 X'2' )
VFENEZH Vi,V2,V3,M5 VFENE Vi,V2,V3,l, (M5 X'2' )
VFENEZF ?^?,,?,,?? VFENE Vi,V2,V3í2, (M5 X'3' )
VFNEZBS V1,V2,V3,M5 VFENE vltv2,v3,o, (M5 X'3' )
VFENEZHS !,?2, 3,?5 VFENE Vi,V2,V3,l, (M5 X'3' )
VFENEFS V1#V2,V3,M5 VFENE V!,v2,v3,2, (M5 X'3' )
COMPARAR INTERVALO DE SERIES DE VECTORES
Procediendo de izquierda a derecha, los elementos enteros binarios sin firmar en el segundo operando son comparados con intervalos de valores definidos por pares de par-non elementos en los terceros y cuartos operandos . Combinados con valores de control del cuarto operando definen el intervalo de comparaciones a ser efectuadas. Si un elemento coincide con cualquiera de los intervalos especificados por el tercer y cuarto operando, se considera que es una coincidencia.
Si la bandera de tipo de resultado (RT) en el campo 6
es cero, las posiciones de bits del elemento en el primer operando corresponden al elemento que es comparado en el segundo operando son ajustados a uno si el elemento coincide con cualquiera de los intervalos, de otra manera son ajustados a cero.
Si la bandera de tipo de resultado (RT) en el campo M6 es ajustado a uno, el índice de bytes del primer elemento en el segundo operando que coincide con cualquiera de los intervalos especificados por los terceros y cuartos operandos o una comparación de cero, si la bandera ZS es ajustada a uno, es colocado en el byte siete del primer operando y se almacenan ceros en los bytes restantes. Si ningún elemento coincide, entonces un índice igual al número de bytes en un vector es colocado en el byte siete del primer operando y se almacenan ceros en los bytes restantes.
La bandera de búsqueda cero (ZS) en el campo Me es ajustado a uno, agregara una comparación a cero de los segundos elementos de operando a los intervalos provistos por el tercero y cuarto operando. Si una comparación de cero en un elemento indexado inferior que cualquier otra comparación verdadera, entonces el código de condición es ajustado a cero .
Los operandos contienen elementos del tamaño especificado por" el control de tamaño de elemento en el campo M5.
Los cuartos elementos de operando tienen el siguiente formato:
Si ES es igual a 0:
Si ES es igual a 1:
ES es igual
Los bits en los cuartos elementos de operando son definidos como sigue:
Igual (EQ) : Cuando se hace una comparación en cuanto a igualdad.
Mayor que (GT) : Cuando se efectúa una comparación mayor que .
Menor que (LT) : Cuando se efectúa una comparación menor que .
Todos los otros bits son reservados y deben ser cero para asegurar compatibilidad futura.
Los bits de control pueden ser usados en cualquier
combinación. Si ninguno de los bits son establecidos, la comparación siempre producirá un resultado falso. Si todos los bits son establecidos, la comparación siempre producirá un resultado cierto.
El campo M5 especifica el control de tamaño de elemento de elemento (ES. El control de ES específica el tamaño de los elementos en los operandos de registro del vector. Si se especifica un valor reservado, se reconoce una excepción de especificación.
0-Byte
1-Media palabra
2 -Palabra
3 -15 -Reservado
El campo M6 tiene el siguiente formato:
Los bits del campo Me son definidos como sigue:
Resultado invertido (IN) : Si es cero, la comparación procede con el par de valores en el vector de control . Si es uno, el resultado de los pares de las comparaciones en los intervalos es invertido.
Tipo de resultado (RT) : Si es cero, cada elemento resultante es una máscara de todas las comparaciones de
intervalo en aquel elemento. Si es uno, un índice es almacenado al byte siete en el primer operando. Se almacenan ceros en los bytes restantes.
Búsqueda cero (ZS) : Si es uno, cada elemento del segundo operando es también comparado con cero.
Conjunto de códigos de condición (CC) : Si es cero, el código de condición no es establecido y permanece sin cambio. Si es uno, el código de condición es ajustado como se especifica en la siguiente sección.
Condiciones especiales
Se reconoce una excepción de especificación y no se lleva a cabo ninguna otra acción si se presenta cualquiera de los siguientes :
1. El campo M4 contiene un valor de 3-15.
2. Los bits 0-1 del campo M5 no son cero.
Código de condición resultante:
Si el bit 3 del campo M5 es ajustado a uno, el código es establecido como sigue :
0 Si ZS=1 y se encuentra un cero en un elemento indexado anterior que cualquier comparación.
1 Comparación encontrada.
2
3 Ninguna comparación encontrada.
Excepciones de programa
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado
Especificación (valor de ES reservado)
Restricción de transacción
Mnemónicos extendidos
VSTRCB Vi,V2,V3,M6 VSTRC Vi,V2,V3,0,M6
VSTRCH Vi,V2/V3,M6 VSTRC Vi,V2,V3,l, M6
VSTRCF Vi,V2,V3,M6 VSTRC Vi,V2,V3,2, Me
VSTRCBS Vi,V2,V3,M6 VSTRC Vi,V2,V3,0, (M6 X'l' )
VSTRCHS V1,V2,V3íM6 VSTRC Vi,V2,V3,l, (M6 X'l' )
VSTRCFS V^V^V^Me VSTRC V1,V2,V3,2, (M6 X' 1' )
VSTRCZB Vi,V2 V3,M6 VSTRC V1,V2,V3,0, (Me X'2' )
VSTRCZH Vi,V2,V3,M6 VSTRC Vi,V2,V3,l, (M6 X'2' )
VSTRCZF V1#V2,V3,M6 VSTRC V!,V2,V3,2, (?e X'2' )
VSTRCZBS Vi,V2,V3,M6 VSTRC V1,V2,Vi,0, (Me X'3' )
VSTRCZHS V1#V2,V3,M6 VSTRC Vi,V2,V3,l, (Ms X'3' )
VSTRCZF V1,V2,V3,Me VSTRC V1#V2,V3,2, (Ms X'3' )
Figura 23-1
ES=1, ZS=0
VR1 (a) resultados con RT=0
VRl (b) resultados con RT=1
CONTEO DE CARGA A FRONTERA DE BLOQUE
Un entero binario sin firmar de 32 bits que contiene el número de bytes posibles para cargar del segundo sitio de operando sin cruzar una frontera de bloque especificada, coronada en 16 es colocada en el primer operando.
El desplazamiento es tratado como un entero sin firmar de 12 bits.
La segunda dirección de operando no es usada para direccionar datos.
El campo M3 especifica un código que es usado para señalar la CPU en cuanto al tamaño frontera del bloque para calcular el número de bytes cargados posibles. Si un valor reservado es especificado entonces se reconoce una excepción
de especificación.
Código de frontera
0 64-Byte
1 128-Byte
2 256-Byte
3 512-Byte
4 1K-Byte
5 2K-Byte
6 4K-Byte
7-15 Reservado
Código de condición resultante:
0 Operando uno si es cero
1
2
3 Operando uno menos que
Código de condición resultante :
Excepciones del programa :
Operación si el equipo de vector-extensión no está instalado .
Especificación .
Nota de programación: Se espera que conteo de carga a
frontera de bloque será usado en conjunción con carga de vector a frontera de bloque para determinar el número de bytes que fueron cargados .
VECTOR DE CARGA DE GR DE ELEMENTO DE VR
VLGV [VRS-cj
?7 R, M4 RXB 21'
El elemento del tercer operando de tamaño especificado por el valor de ES en el campo M4 e indexado por la segunda dirección de operando es colocado en el primer sitio de operando. El tercer operando es un registro de vector. El primer operando es un registro general. Si el índice especificado por la segunda dirección de operando es mayor que el elemento de número más alto en el tercer operando, del tamaño de elemento especificado, los datos en el primer operando son impredecibles . Si el elemento de registro de vector es más pequeño que una doble palabra, el elemento es alineado a la derecha en el registro general de 64 bits y los ceros llenan los bits restantes.
La segunda dirección de operando no es usada para direccionar datos; en lugar de esto, los 12 bits más a la derecha de la dirección son usados para especificar el índice de un elemento dentro del segundo operando.
El campo 4 especifica el control de tamaño de elemento (ES) . El control de ES especifica el tamaño de los elementos en los operandos de registro del vector. Si se especifica un valor reservado, pero conoce una excepción de especificación.
0-Byte
1-Media palabra
2-Palabra
3 -Doble palabra
4 - 15-Reservado sin cambios
Código de condición resultante: Los códigos están sin cambios .
Excepciones de programa
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado
Especificación (valor de ES reservado)
Restricción de transacción
Mnemónicos extendidos
VLGB Ri,V3,D2 (B2) VLGV R!,V3,D2(B2) ,0
VLGH Ri,V3,D2 (B2) VLGV R!,V3,D2(B2) ,1
VLGF Ri,V3íD2 (B2) VLGV RlfV3,D2(B2) ,2
VLGV Ri,V3,D2 (B2) VLGV Ri,V3,D2(B2) ,3
VECTOR DE CARGA A FRONTERA DE BLOQUE
VLBB V^XfcBj a [VRX]
?7 V, X2 B2 D2 M3 XB '07
El primer operando es cargado empezando en el elemento de bytes indexado cero con bytes del segundo operando. Si se encuentra una condición de frontera, el resto del primer operando es impredecible . Excepciones de acceso no son reconocidas en bytes no cargados . El desplazamiento para VLBB es tratado como un entero sin firmar de 12 bits. El campo M3 especifica un código que es usado para señalar la CPU en cuanto al tamaño de frontera de bloque para cargar. Si se especifica un valor reservado, se reconoce una excepción de especificación.
Código de frontera
0 64-Byte
1 128-Byte
2 256-Byte
3 512-Byte
4 1K-B te
5 2K-Byte
6 4K-Byte
7-15 Reservado
Código de condición resultante: Los códigos permanecen sin cambios .
Excepciones de programa:
Acceso (extracción, operando 2)
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado .
Especificación (código de frontera de bloque reservado) . Restricción de transacción.
Notas de programación:
1. En ciertas circunstancias, los datos pueden ser cargados más allá de la frontera de bloque. Sin embargo, esto solamente ocurrirá si no hay excepciones de acceso en aquellos datos .
VECTOR GUARDAR
VST [VRX]
?? B2 i RXB ??'
0 8 12 16 20 32 36 40 47
El valor de 128 bits en el primer operando es almacenado al sitio de almacenamiento especificado por el segundo operando. El desplazamiento para VST es tratado como un
entero sin firmar de 12 bits.
Código de condición resultante : Los códigos permanecen sin cambios .
Excepciones de programa:
Acceso (extracción, operando 2)
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado .
Restricción de transacción.
VECTOR GUARDAR CON LONGITUD
Procediendo de izquierda a derecha, los bytes del primer operando son almacenados en el segundo sitio de operando. El tercer operando especificado en el registro general contiene un número entero sin firmar de 32 bits que contiene un valor que representa el byte indexado más alto para almacenar. Si el tercer operando contiene un valor mayor o igual al índice de bytes más alto del vector, todos los bytes del primer operando son almacenados .
Las excepciones de acceso son solamente reconocidas en los bytes almacenados .
El desplazamiento para vector de guardar con longitud es tratado como un número entero sin firmar de 12 bits.
Código de condición resultante: Los códigos permanecen sin cambios.
Excepciones de programa:
Acceso (almacenar, operando 2)
Datos con DXC FE, registro de vector
Operación si el equipo de vector-extensión no está instalado .
Restricción de transacción.
Descripción de RXB
Todas las instrucciones de vector tienen un campo en los bits 36-40 de la instrucción marcada como RXB. Este campo contiene los bits más significativos para todos los operandos designados de registro de vector. Los bits para designaciones de registro no especificados por la instrucción son reservados y deben ser ajustados a cero; de otra manera, el programa puede no operar compatiblemente en el futuro. El bit más significativo es concatenado a la izquierda de la designación de registro de cuatro bits para crear una designación de registro de vector de cinco bits.
Los bits son definidos como sigue:
0. Bit más significativo para la designación de registro
de vector en bits 8-11 de la instrucción.
1. Bit más significativo para la designación de registro de vector en bits 12-15 de la instrucción.
2. Bit más significativo para la designación de registro de vector en bits 16-19 de la instrucción.
3. Bit más significativo para la designación de registro de vector en bits 32-35 de la instrucción.
Vector de control de habilitación
Los registros e instrucciones de vector pueden solamente ser usados tanto si el control de habilitación del vector (bit 46) y el control de registro de AFP (bit 45) en el registro de control cero son ajustados a l. Si el equipo de vector es instalado y una instrucción de vector es ejecutada sin la habilitación del conjunto de bits, se reconoce una excepción de datos con el hexadecimal DXC FE. Si el equipo de vector no está instalado, se reconoce una excepción de operación.
Claims (20)
1. Un producto de programa de computadora para ejecutar una instrucción de la máquina en una unidad de procesamiento central, el producto de programa de computadora comprende un medio de almacenamiento que se puede leer por computadora, que se puede leer por un circuito de procesamiento y que almacena instrucciones para ejecución por el circuito de procesamiento para efectuar un método que comprende: obtener mediante un procesador una instrucción de la máquina para ejecución, la instrucción de la máquina es definida para ejecución de computadora de acuerdo con una arquitectura de computadora, la instrucción de la máquina comprende : por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una operación de carga a frontera de bloque; un campo de registro a ser usado para designar un registro, el registro comprende un primer operando; por lo menos un campo para ubicar un segundo operando en memoria principal; un indicador de tamaño de frontera de bloque para indicar una frontera de bloque especificada de un bloque del segundo operando y ejecutar la instrucción de la máquina que comprende: cargar de un bloque del segundo operando una cantidad variable de datos al primer operando mientras que se asegura que solamente datos dentro del bloque sean cargados al primer operando, en donde la carga empieza en una dirección de partida en el bloque del segundo operando, la dirección de partida provista por la instrucción de la máquina, en donde la carga termina en o antes de la frontera de bloque especificada del bloque del segundo operando, en donde la cantidad variable de datos cargados está basada en la dirección de partida y la frontera de bloque especificada, la frontera de bloque especificada es determinada en base al indicador de tamaño de frontera de bloque y en donde la cantidad variable de datos es un mínimo de (un número de bytes en el primer operando o un número de bytes cargados a la frontera de bloque especificada) .
2. El producto de programa de computadora de la reivindicación 1, en donde el por lo menos un campo comprende un campo de desplazamiento, un campo base y un campo de índice, el campo base y campo índice para ubicar registros generales que tienen contenidos a ser agregados al contenido del campo de desplazamiento para formar una dirección del segundo operando y en donde la instrucción de la máquina comprende además un campo de mascara, el campo de mascara especifica el indicador de tamaño de frontera de bloque.
3. El producto de programa de computadora de la reivindicación 2, en donde la frontera de bloque es una frontera de bloque de una pluralidad de fronteras de bloque especificables por el campo de mascara.
4. El producto de programa de computadora de cualquier reivindicación precedente, en donde la dirección del segundo operando es la dirección de partida en memoria de la cual los datos van a ser cargados en el primer operando.
5. El producto de programa de computadora de la reivindicación 4, en donde la ejecución comprende además determinar una dirección de fin en la cual la carga se va a detener y en donde la carga se detiene en la dirección de fin.
6. El producto de programa de computadora de la reivindicación 5, en donde la determinación de la dirección de fin comprende calcular la dirección de fin como sigue: dirección de fin = mínimo de (dirección de partida + (tamaño de frontera - (dirección de partida y mascara de frontera) ) , dirección de partida + tamaño de registro) , en donde el tamaño de frontera es la frontera de bloques, mascara de frontera es igual a 0 - tamaño de frontera y el tamaño de registro es una longitud especificada del registro.
7. El producto de programa de computadora de cualquier reivindicación precedente, en donde la carga comprende uno de: cargar el primer operando de izquierda a derecha o cargar el primer operando de derecha a izquierda.
8. El producto de programa de computadora de la reivindicación 7, en donde la dirección de la carga es provista en el tiempo de operación.
9. El producto de programa de computadora de cualquier reivindicación precedente, en donde la instrucción de la máquina comprende además un campo de extensión a ser usado en la designación de uno o más registros y en donde el campo de registro es combinado por lo menos una porción del campo de extensión para designar el registro.
10. El producto de programa de computadora de cualquier reivindicación precedente, en donde la carga del primer operando comienza en un byte indexado a 0 del primer operando y continua hasta un índice de bytes máximo del registro.
11. Un sistema de computadora para ejecutar una instrucción de la máquina en una unidad de procesamiento central, el sistema de computadora comprende: una memoria y un procesador en comunicación con la memoria, en donde el sistema de computadora está configurado para ejecutar un método, el método comprende: obtener mediante un procesador una instrucción de la máquina para ejecución, la instrucción de la máquina es definida para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de la máquina comprende : por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una operación de carga a frontera de bloque; un campo de registro a ser usado para designar un registro, el registro comprende un primer operando; por lo menos un campo para ubicar un segundo operando en memoria principal; un indicador de tamaño de frontera de bloque para indicar una frontera de bloque especificada de un bloque del segundo operando y ejecutar la instrucción de la máquina que comprende: cargar de un bloque del segundo operando una cantidad variable de datos al primer operando mientras que se asegura que solamente datos dentro del bloque sean cargados al primer operando, en donde la carga empieza en una dirección de partida en el bloque del segundo operando, la dirección de partida provista por la instrucción de la máquina, en donde la carga termina en o antes de la frontera de bloque especificada del bloque del segundo operando, en donde la cantidad variable de datos cargados está basada en la dirección de partida y la frontera de bloque especificada, la frontera de bloque especificada es determinada en base al indicador de tamaño de frontera de bloque y en donde la cantidad variable de datos es un mínimo de (un número de bytes en el primer operando o un número de bytes cargados a la frontera de bloque especificada) .
12. El sistema de computadora de la reivindicación 11, en donde el por lo menos un campo comprende un campo de desplazamiento, un campo base y un campo de índice, el campo base y campo de índice para ubicar registros generales que tienen contenidos a ser agregados al contenido del campo de desplazamiento para formar una dirección del segundo operando y en donde la instrucción de la máquina comprende además un campo de mascara, el campo de mascara especifica la frontera de bloques .
13. El sistema de computadora de la reivindicación 11 o 12, en donde la dirección del segundo operando es una dirección de partida en memoria de la cual los datos van a ser cargados en el primer operando y en donde la ejecución comprende además determinar una dirección de final en la cual la carga se va a detener y en donde la carga se detiene en la dirección de fin.
14. El sistema de computadora de la reivindicación 13, en donde la determinación de la dirección de fin comprende calcular la dirección de fin como sigue: dirección de fin = mínimo de (dirección de inicio + (tamaño de frontera - (dirección de partida y mascara de frontera) ) , dirección de partida + tamaño de registro) , en donde el tamaño de frontera es la frontera de bloque, la máscara de frontera es igual a 0 - tamaño de frontera y el tamaño de registro es una longitud especificada del registro.
15. El sistema de computadora de cualquiera de las reivindicaciones 11 a 14, en donde la carga comprende uno de: cargar el primer operando de izquierda a derecha o cargar el primer operando de derecha a izquierda.
16. El sistema de computadora de la reivindicación 15, en donde la dirección de la carga es provista en el tiempo de operación.
17. El sistema de computadora de cualquiera de las reivindicaciones 11 o 16, en donde la instrucción de la máquina comprende además un campo de extensión a ser usado para designar uno o más registros y en donde el campo de registro es combinado con por lo menos una porción del campo de extensión para designar el registro.
18. Un método para ejecutar una instrucción de la máquina en una unidad de procesamiento central, el método comprende : obtener mediante un procesador una instrucción de la máquina para ejecución, la instrucción de la máquina es definida para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de la máquina comprende : por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una operación de carga a frontera de bloque, un campo de registro a ser usado para designar un registro, el registro comprende un primer operando; por lo menos un campo para ubicar un segundo operando en memoria principal un indicador de tamaño de frontera de bloque para indicar una frontera de bloque especificada de un bloque del segundo operando y ejecutar la instrucción de la máquina que comprende: cargar de un bloque del segundo operando una cantidad variable de datos al primer operando mientras que se asegura que solamente datos dentro del bloque sean cargados al primer operando, en donde la carga empieza en una dirección de partida en el bloque del segundo operando, la dirección de partida provista por la instrucción de la máquina, en donde la carga termina en o antes de la frontera de bloque especificada del bloque del segundo operando, en donde la cantidad variable de datos cargados está basada en la dirección de partida y la frontera de bloque especificada, la frontera de bloque especificada es determinada en base al indicador de tamaño de frontera de bloque y en donde la cantidad variable de datos es un mínimo de (un número de bytes en el primer operando o un número de bytes cargados a la frontera de bloque especificada) .
19. El método de la reivindicación 18, en donde la dirección del segundo operando es una dirección de partid en memoria de la cual los datos van a ser cargados en el primer operando y en donde la ejecución comprende además designar una dirección de fin en la cual la carga se va a detener y en donde la carga se detiene en la dirección de fin.
20. El método de la reivindicación 19, en donde la determinación de dirección de fin comprende calcular la dirección de fin como sigue: dirección de fin = mínimo de (dirección de partida + (tamaño de frontera - (dirección de partida y mascara de frontera) ) , dirección de partida + tamaño de registro) , en donde el tamaño de frontera es la frontera de bloque, la máscara de frontera es igual a 0 - tamaño de frontera y el tamaño de registro es una longitud especificada del registro.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/421,456 US9459867B2 (en) | 2012-03-15 | 2012-03-15 | Instruction to load data up to a specified memory boundary indicated by the instruction |
| PCT/IB2012/056434 WO2013136143A1 (en) | 2012-03-15 | 2012-11-15 | Instruction to load data up to a specified memory boundary indicated by the instruction |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| MX2014010946A true MX2014010946A (es) | 2014-11-13 |
| MX343372B MX343372B (es) | 2016-11-01 |
Family
ID=49158799
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| MX2014010946A MX343372B (es) | 2012-03-15 | 2012-11-15 | Instrucción de cargar datos a una frontera de memoria especificada indicada por la instrucción. |
Country Status (23)
| Country | Link |
|---|---|
| US (4) | US9459867B2 (es) |
| EP (1) | EP2769305B1 (es) |
| JP (1) | JP6246140B2 (es) |
| KR (1) | KR101662420B1 (es) |
| CN (1) | CN104205067B (es) |
| AU (1) | AU2012373734B2 (es) |
| BR (1) | BR112014022727B1 (es) |
| CA (1) | CA2867088C (es) |
| DK (1) | DK2769305T3 (es) |
| ES (1) | ES2680147T3 (es) |
| HR (1) | HRP20181117T1 (es) |
| HU (1) | HUE038976T2 (es) |
| IL (1) | IL232815B (es) |
| LT (1) | LT2769305T (es) |
| MX (1) | MX343372B (es) |
| PL (1) | PL2769305T3 (es) |
| PT (1) | PT2769305T (es) |
| RU (1) | RU2565496C2 (es) |
| SG (1) | SG11201404823QA (es) |
| SI (1) | SI2769305T1 (es) |
| TW (1) | TWI533206B (es) |
| WO (1) | WO2013136143A1 (es) |
| ZA (1) | ZA201406610B (es) |
Families Citing this family (35)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
| US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
| US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
| US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
| US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
| US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
| US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
| US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
| US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
| US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
| US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
| US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
| US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
| US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
| US9513906B2 (en) * | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
| US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
| US9582413B2 (en) | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
| US9703721B2 (en) | 2014-12-29 | 2017-07-11 | International Business Machines Corporation | Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions |
| US9569127B2 (en) | 2014-12-29 | 2017-02-14 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
| US9792098B2 (en) * | 2015-03-25 | 2017-10-17 | International Business Machines Corporation | Unaligned instruction relocation |
| US9904614B2 (en) * | 2015-04-03 | 2018-02-27 | NodeSource, Inc. | Source code inspection and verification |
| US20160335294A1 (en) * | 2015-05-15 | 2016-11-17 | Bjorn J. Gruenwald | System and Method for Organizing Data |
| US10061539B2 (en) | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
| US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
| GB2541714B (en) * | 2015-08-27 | 2018-02-14 | Advanced Risc Mach Ltd | An apparatus and method for controlling instruction execution behaviour |
| US10338920B2 (en) * | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
| US10095517B2 (en) * | 2015-12-22 | 2018-10-09 | Intel Corporation | Apparatus and method for retrieving elements from a linked structure |
| US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
| US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
| US10713048B2 (en) * | 2017-01-19 | 2020-07-14 | International Business Machines Corporation | Conditional branch to an indirectly specified location |
| US10564965B2 (en) * | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
| US11347860B2 (en) | 2019-06-28 | 2022-05-31 | Seagate Technology Llc | Randomizing firmware loaded to a processor memory |
| US11966331B2 (en) * | 2020-12-30 | 2024-04-23 | International Business Machines Corporation | Dedicated bound information register file for protecting against out-of-bounds memory references |
| US11347506B1 (en) | 2021-01-15 | 2022-05-31 | Arm Limited | Memory copy size determining instruction and data transfer instruction |
| GB2602814B (en) * | 2021-01-15 | 2023-06-14 | Advanced Risc Mach Ltd | Load Chunk instruction and store chunk instruction |
Family Cites Families (98)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62276668A (ja) * | 1985-07-31 | 1987-12-01 | Nec Corp | ベクトルマスク演算制御ユニツト |
| US5073864A (en) | 1987-02-10 | 1991-12-17 | Davin Computer Corporation | Parallel string processor and method for a minicomputer |
| US5222225A (en) | 1988-10-07 | 1993-06-22 | International Business Machines Corporation | Apparatus for processing character string moves in a data processing system |
| JPH0831032B2 (ja) | 1990-08-29 | 1996-03-27 | 三菱電機株式会社 | データ処理装置 |
| US5465374A (en) | 1993-01-12 | 1995-11-07 | International Business Machines Corporation | Processor for processing data string by byte-by-byte |
| WO1994027215A1 (en) | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
| JP3637922B2 (ja) | 1993-06-14 | 2005-04-13 | アップル コンピュータ インコーポレイテッド | プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置 |
| JPH0721034A (ja) | 1993-06-28 | 1995-01-24 | Fujitsu Ltd | 文字列複写処理方法 |
| US5509129A (en) | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
| US6185629B1 (en) | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
| US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
| KR100206669B1 (ko) | 1994-09-27 | 1999-07-01 | 야마오카 요지로 | 아연계 도금강판 및 그 제조방법 |
| US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
| US5812147A (en) | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
| US5931940A (en) | 1997-01-23 | 1999-08-03 | Unisys Corporation | Testing and string instructions for data stored on memory byte boundaries in a word oriented machine |
| EP1032896B1 (en) | 1997-11-24 | 2002-03-27 | BRITISH TELECOMMUNICATIONS public limited company | Information management and key term retrieval |
| US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
| US6094695A (en) | 1998-03-11 | 2000-07-25 | Texas Instruments Incorporated | Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register |
| US6334176B1 (en) | 1998-04-17 | 2001-12-25 | Motorola, Inc. | Method and apparatus for generating an alignment control vector |
| US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
| US7100026B2 (en) | 2001-05-30 | 2006-08-29 | The Massachusetts Institute Of Technology | System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values |
| US6463582B1 (en) | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
| JP3564395B2 (ja) | 1998-11-27 | 2004-09-08 | 松下電器産業株式会社 | アドレス生成装置および動きベクトル検出装置 |
| US6192466B1 (en) | 1999-01-21 | 2001-02-20 | International Business Machines Corporation | Pipeline control for high-frequency pipelined designs |
| US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
| US6189088B1 (en) | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
| US6499116B1 (en) | 1999-03-31 | 2002-12-24 | International Business Machines Corp. | Performance of data stream touch events |
| US6802056B1 (en) | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
| US6381691B1 (en) | 1999-08-13 | 2002-04-30 | International Business Machines Corporation | Method and apparatus for reordering memory operations along multiple execution paths in a processor |
| US6513107B1 (en) * | 1999-08-17 | 2003-01-28 | Nec Electronics, Inc. | Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page |
| US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
| US6820195B1 (en) * | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
| US6449706B1 (en) | 1999-12-22 | 2002-09-10 | Intel Corporation | Method and apparatus for accessing unaligned data |
| JP2001236249A (ja) | 2000-02-24 | 2001-08-31 | Nec Corp | メモリ管理装置およびメモリ管理方法 |
| US6625724B1 (en) | 2000-03-28 | 2003-09-23 | Intel Corporation | Method and apparatus to support an expanded register set |
| US6349361B1 (en) | 2000-03-31 | 2002-02-19 | International Business Machines Corporation | Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system |
| US6701424B1 (en) * | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
| US6408383B1 (en) | 2000-05-04 | 2002-06-18 | Sun Microsystems, Inc. | Array access boundary check by executing BNDCHK instruction with comparison specifiers |
| WO2002033570A2 (en) | 2000-10-18 | 2002-04-25 | Koninklijke Philips Electronics N.V. | Digital signal processing apparatus |
| US7487330B2 (en) | 2001-05-02 | 2009-02-03 | International Business Machines Corporations | Method and apparatus for transferring control in a computer system with dynamic compilation capability |
| JP3900863B2 (ja) | 2001-06-28 | 2007-04-04 | シャープ株式会社 | データ転送制御装置、半導体記憶装置および情報機器 |
| US6839828B2 (en) | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
| US6907443B2 (en) | 2001-09-19 | 2005-06-14 | Broadcom Corporation | Magnitude comparator |
| US6570511B1 (en) | 2001-10-15 | 2003-05-27 | Unisys Corporation | Data compression method and apparatus implemented with limited length character tables and compact string code utilization |
| US7853778B2 (en) * | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
| US20100274988A1 (en) | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
| US7089371B2 (en) | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
| US7441104B2 (en) | 2002-03-30 | 2008-10-21 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions with distributed results |
| US7373483B2 (en) | 2002-04-02 | 2008-05-13 | Ip-First, Llc | Mechanism for extending the number of registers in a microprocessor |
| US7376812B1 (en) | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
| US6918010B1 (en) | 2002-10-16 | 2005-07-12 | Silicon Graphics, Inc. | Method and system for prefetching data |
| US7103754B2 (en) | 2003-03-28 | 2006-09-05 | International Business Machines Corporation | Computer instructions for having extended signed displacement fields for finding instruction operands |
| US20040215924A1 (en) | 2003-04-28 | 2004-10-28 | Collard Jean-Francois C. | Analyzing stored data |
| US7035986B2 (en) | 2003-05-12 | 2006-04-25 | International Business Machines Corporation | System and method for simultaneous access of the same line in cache storage |
| US20040250027A1 (en) | 2003-06-04 | 2004-12-09 | Heflinger Kenneth A. | Method and system for comparing multiple bytes of data to stored string segments |
| US7539714B2 (en) | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
| US7610466B2 (en) | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
| US7904905B2 (en) | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
| GB2411973B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
| GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
| US20060095713A1 (en) | 2004-11-03 | 2006-05-04 | Stexar Corporation | Clip-and-pack instruction for processor |
| JP4837305B2 (ja) | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
| US7421566B2 (en) | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
| US20070106883A1 (en) | 2005-11-07 | 2007-05-10 | Choquette Jack H | Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction |
| US9436468B2 (en) | 2005-11-22 | 2016-09-06 | Intel Corporation | Technique for setting a vector mask |
| US8010953B2 (en) | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
| US7565514B2 (en) | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
| CN101097488B (zh) | 2006-06-30 | 2011-05-04 | 2012244安大略公司 | 从接收的文本中学习字符片段的方法及相关手持电子设备 |
| US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
| JP2008077590A (ja) * | 2006-09-25 | 2008-04-03 | Toshiba Corp | データ転送装置 |
| US7536532B2 (en) | 2006-09-27 | 2009-05-19 | International Business Machines Corporation | Merge operations of data arrays based on SIMD instructions |
| US7991987B2 (en) | 2007-05-10 | 2011-08-02 | Intel Corporation | Comparing text strings |
| US8224815B2 (en) | 2007-05-21 | 2012-07-17 | Perion Network Ltd. | Interactive message editing system and method |
| US20090063410A1 (en) | 2007-08-29 | 2009-03-05 | Nils Haustein | Method for Performing Parallel Data Indexing Within a Data Storage System |
| US7739434B2 (en) | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
| US7870339B2 (en) | 2008-01-11 | 2011-01-11 | International Business Machines Corporation | Extract cache attribute facility and instruction therefore |
| US7895419B2 (en) | 2008-01-11 | 2011-02-22 | International Business Machines Corporation | Rotate then operate on selected bits facility and instructions therefore |
| US7877582B2 (en) | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
| KR20100126690A (ko) | 2008-02-18 | 2010-12-02 | 샌드브리지 테크놀로지스, 인코포레이티드 | 널-종료 문자열 동작을 가속화하는 방법 |
| DK176835B1 (da) | 2008-03-07 | 2009-11-23 | Jala Aps | Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden |
| US8386547B2 (en) | 2008-10-31 | 2013-02-26 | Intel Corporation | Instruction and logic for performing range detection |
| US20120023308A1 (en) | 2009-02-02 | 2012-01-26 | Renesas Electronics Corporation | Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method |
| JP5471082B2 (ja) | 2009-06-30 | 2014-04-16 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
| US8595471B2 (en) | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
| JP2011212043A (ja) | 2010-03-31 | 2011-10-27 | Fujifilm Corp | 医用画像再生装置および方法並びにプログラム |
| US20110314263A1 (en) | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
| US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
| US9009447B2 (en) | 2011-07-18 | 2015-04-14 | Oracle International Corporation | Acceleration of string comparisons using vector instructions |
| US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
| US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
| US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
| US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
| US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
| US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
| US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
| US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
| US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
| US9454366B2 (en) * | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
-
2012
- 2012-03-15 US US13/421,456 patent/US9459867B2/en active Active
- 2012-11-15 EP EP12871072.0A patent/EP2769305B1/en active Active
- 2012-11-15 AU AU2012373734A patent/AU2012373734B2/en active Active
- 2012-11-15 SG SG11201404823QA patent/SG11201404823QA/en unknown
- 2012-11-15 JP JP2014561526A patent/JP6246140B2/ja active Active
- 2012-11-15 ES ES12871072.0T patent/ES2680147T3/es active Active
- 2012-11-15 PL PL12871072T patent/PL2769305T3/pl unknown
- 2012-11-15 HR HRP20181117TT patent/HRP20181117T1/hr unknown
- 2012-11-15 HU HUE12871072A patent/HUE038976T2/hu unknown
- 2012-11-15 DK DK12871072.0T patent/DK2769305T3/en active
- 2012-11-15 WO PCT/IB2012/056434 patent/WO2013136143A1/en not_active Ceased
- 2012-11-15 LT LTEP12871072.0T patent/LT2769305T/lt unknown
- 2012-11-15 SI SI201231340T patent/SI2769305T1/sl unknown
- 2012-11-15 PT PT128710720T patent/PT2769305T/pt unknown
- 2012-11-15 MX MX2014010946A patent/MX343372B/es active IP Right Grant
- 2012-11-15 CN CN201280071426.5A patent/CN104205067B/zh active Active
- 2012-11-15 RU RU2012148582/08A patent/RU2565496C2/ru active
- 2012-11-15 KR KR1020147028777A patent/KR101662420B1/ko active Active
- 2012-11-15 BR BR112014022727-6A patent/BR112014022727B1/pt active IP Right Grant
- 2012-11-15 CA CA2867088A patent/CA2867088C/en active Active
-
2013
- 2013-03-01 TW TW102107379A patent/TWI533206B/zh active
- 2013-03-03 US US13/783,337 patent/US9383996B2/en active Active
-
2014
- 2014-05-27 IL IL232815A patent/IL232815B/en active IP Right Grant
- 2014-09-09 ZA ZA2014/06610A patent/ZA201406610B/en unknown
-
2016
- 2016-01-14 US US14/995,358 patent/US9959117B2/en active Active
- 2016-01-14 US US14/995,337 patent/US9946542B2/en active Active
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| MX2014010946A (es) | Instruccion de cargar datos a una frontera de memoria especificada indicada por la instruccion. | |
| MX2014010947A (es) | Instruccion de calcular la distancia a una frontera de memoria especificada. | |
| TWI533207B (zh) | 用於將非連續指令說明符變換為連續指令說明符之電腦程式產品、電腦系統及方法 | |
| CN104169868B (zh) | 用于在中央处理单元中执行机器指令的方法和系统 | |
| US9959118B2 (en) | Instruction to load data up to a dynamically determined memory boundary | |
| KR101606307B1 (ko) | 벡터 등가 엘리먼트 발견 명령 | |
| EP2756415A1 (en) | Vector find element not equal instruction | |
| AU2012373736B2 (en) | Instruction to compute the distance to a specified memory boundary | |
| HK1201352B (en) | Instruction to load data up to a specified memory boundary indicated by the instruction | |
| HK1201372B (en) | Method and system for executing machine instructions in cpu | |
| HK1201353B (en) | Method and system for loading data into a register |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FG | Grant or registration |