MX2008014048A - Predescodificacion de instrucciones de longitud variable. - Google Patents
Predescodificacion de instrucciones de longitud variable.Info
- Publication number
- MX2008014048A MX2008014048A MX2008014048A MX2008014048A MX2008014048A MX 2008014048 A MX2008014048 A MX 2008014048A MX 2008014048 A MX2008014048 A MX 2008014048A MX 2008014048 A MX2008014048 A MX 2008014048A MX 2008014048 A MX2008014048 A MX 2008014048A
- Authority
- MX
- Mexico
- Prior art keywords
- instruction
- instructions
- bit
- decoding
- decoding bits
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Disinfection, Sterilisation Or Deodorisation Of Air (AREA)
- Stereo-Broadcasting Methods (AREA)
- Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
Abstract
Un predescodificador en un procesador de longitud de instrucción variable indica propiedades de las instrucciones en bits de predescodificación almacenados en una antememoria de instrucción con las instrucciones. Cuando todas las codificaciones de los bits de predescodificación asociados con una instrucción de longitud son definidas, puede ser indicada una propiedad de una instrucción de esa longitud alterando la instrucción para simular una instrucción de una longitud diferente, y codificar la propiedad en los bits de predescodificación asociados con instrucciones de la longitud diferente. Un ejemplo de una propiedad que puede ser indicada así es una instrucción indefinida.
Description
PREDESCODIFICACION DE INSTRUCCIONES DE LONGITUD VARIABLE CAMPO DE LA INVENCION La presente descripción se relaciona de manera general con el campo de los procesadores y en particular con un método de predescodificación de instrucciones de longitud variable, para identificar instrucciones indefinidas .
ANTECEDENTES DE LA INVENCION Las arquitecturas de conjuntos de instrucciones de longitud variable son conocidas en la técnica. Por ejemplo, cuando se agregan extensiones Thumb (16-bits) al conjunto de instrucciones ARM (32-bits), la mezcla resultante puede ser considerada un conjunto de instrucciones de longitud variable. Como otro ejemplo, un código Java ejecutable comprende una serie de códigos de bytes, con cada instrucción fluctuando entre 2 y 256 bytes de longitud. En general, los conjuntos de instrucciones de longitud variable comprenden instrucciones de un tamaño base, instrucciones más grandes que son un múltiplo entero del tamaño base. Las arquitecturas y conjuntos de instrucciones del procesador evolucionan con el tiempo. En particular, a medida que la tecnología semiconductora avanza, la
funcionalidad puede ser transformada en componentes físicos de computación o hardware que anteriormente requerían efectuar una rutina de programas y sistemas de programación o software exhaustiva. Para explotar de manera eficiente las estructuras de componentes físicos de computación o hardware avanzados, se agregan nuevas instrucciones al conjunto de instrucciones. Sin embargo como una característica de las arquitecturas de procesador estables es su compatibilidad retroactiva. Es decir, que los programas y sistemas de programación o software escritos para una arquitectura de procesador serán ejecutables en un procesador más viejo que se conforme a la arquitectura, aún sino implementa la funcionalidad más reciente o ejecuta directamente las instrucciones más recientes. En consecuencia, las arquitecturas de procesador comunes incluyen una instrucción "indefinida" la cual genera una excepción, y la función asociada con la instrucción indefinida es ejecutada en los programas y sistemas de programación o software. Un método común tomado por los procesadores de alto desempeño convencionales para optimizar la descodificación de instrucciones es la predescodificación . Un predescodificador es un circuito lógico que inspecciona y descodifica parcialmente instrucciones buscadas en la memoria antes de almacenar las instrucciones en una
antememoria de instrucciones (antememoria I) . El predescodificador genera un número pequeño de bits de predescodificación que son almacenados junto con cada instrucción en la antememoria I. Tras buscar instrucciones de la antememoria, el descodificador en linea puede utilizar los bits de predescodificación para simplificar las tareas de descodificación de instrucciones. Los bits de predescodificación pueden, por ejemplo, identificar instrucciones de bifurcación, identificar la longitud de una instrucción en una arquitectura de instrucción de longitud variable, o similares. Los bits de predescodificación pueden ser utilizados para identificar instrucciones indefinidas. En un procesador de un conjunto de instrucciones de longitud variable que implementa la predescodificación, un número pequeño de bits de predescodificación puede ser asociado con la longitud de instrucción más corta o base. Una implementación de antememoria de instrucción conocida es asociar este número de bits de predescodificación con cada lugar de almacenamiento de la antememoria I (cada uno de los cuales corresponde a la longitud de instrucción base) . Las instrucciones más largas, que ocupan un múltiplo entero de los lugares de almacenamiento de la antememoria I, se asocian de manera correspondiente con un número más grande de bits de predescodificación . El número de
propiedades discretas que pueden ser codificadas en los bits de predescodificacion asociados con una instrucción es de este modo un mínimo para la longitud de instrucción base. Si todas las codificaciones de bits de predescodificación disponibles de la longitud de instrucción base son definidas de otro modo, utilizando los bits de predescodificación para identificar una instrucción de longitud de base indefinida se requerirá incrementar el número de bits de predescodificación asociados con la longitud de instrucción base. Esta técnica incrementaría a su vez el número de bits de predescodificación almacenados junto con cada lugar de almacenamiento en la antememoria I. Puesto que instrucciones indefinidas son raramente encontradas, e instrucciones más largas que la longitud base tiene un espacio de codificación de bits de predescodificación rico, agregando bits de predescodificación para identificar instrucciones de longitud base indefinida, que puedan desperdiciar espacio de almacenamiento en la antememoria I caro.
SUMARIO DE LA INVENCION De acuerdo a una o más modalidades descritas aquí, un predescodificador puede indicar una propiedad de una instrucción cuando el espacio de codificación de bits de predescodificación asociado con esa longitud de
instrucción sea completamente definido. Alterando la instrucción para simular una instrucción de una longitud diferente, el predescodificador puede utilizar una codificación disponible de los bits de predescodificación asociados con la instrucción de longitud diferente para identificar la propiedad. Una modalidad se relaciona con un método de predescodificación de una instrucción en un procesador. Es identificada una propiedad de una primera instrucción. La primera instrucción es alterada para simular una segunda instrucción. Se generan bits de predescodificación para la segunda instrucción que identifican la propiedad de la primera instrucción. Otra modalidad se relaciona con un procesador que opera para leer instrucciones de la memoria. El procesador incluye una antememoria de instrucción que almacena instrucciones leídas de la memoria y bits de predescodificación asociados con cada instrucción. El procesador también incluye un predescodificador interpuesto entre la memoria y la antememoria de instrucción, el predescodificador opera para identificar una propiedad de una primera instrucción; altera la primera instrucción para simular una segunda instrucción; genera bits de predescodificación para la segunda instrucción que identifica la propiedad de la primera instrucción; y
escribe los bits de predescodificación para la segunda instrucción a la antememoria de instrucción.
BREVE DESCRIPCION DE LAS FIGURAS La figura 1 es un diagrama de bloques funcional de un procesador. La figura 2 es un diagrama de bloques funcional que describe el trazo de instrucciones de longitud variables de la memoria a la antemoria de instrucción. La figura 3 es un diagrama de bloques funcional que describe el trazo de una instrucción indefinida de la memoria a la antememoria de instrucción. La figura 4 describe un método de predescodificación de una instrucción, de acuerdo a una modalidad .
DESCRIPCION DETALLADA DE LA INVENCION La figura 1 es un diagrama de bloques funcional de un procesador 10. El procesador 10 ejecuta instrucciones en una linea de ejecución de instrucciones 12 de acuerdo a la lógica de control 14. La linea 12 puede ser un diseño superescalar, con lineas paralelas múltiples como 12a y 12b. Cada linea 12a, 12b incluye varios registros o circuitos de retención 16, organizados en etapas de linea, y una o más Unidades Lógicas Aritméticas (ALU 18) . Los
registros o circuitos de retención de etapa de linea 16 y ALU 18 pueden leer operandos de y/o escribir resultados a registros en un archivo de Registro para Propósitos Generales 28. Las lineas 12a, 12b buscan instrucciones de una Antememoria de Instrucción (Antememoria I o 1$) 20, con direccionamiento y permisos de memoria administrados por una Memoria Intermedia de Búsqueda Lateral de Traducción de la Instrucción (ITLB) 22. A los datos se tiene acceso desde una Antememoria de Datos (Antememoria D o D$)24, con direccionamiento y permisos de memoria administrados por una Memoria Intermedia de Búsqueda Lateral de Traducción principal (TLB) 26. En varias modalidades, la ITLB 22 puede comprender una copia de una porción de la TLB 26. De manera alternativa, la ITLB 22 y la TLB 26 pueden estar integradas. De manera similar, en varias modalidades del procesador 10, la antememoria 1-20 y la antememoria D 24, pueden ser integradas o unificadas. Las pérdidas en la antememoria 1-20 y/o la antememoria D-24 producen un acceso a la memoria principal (circuito integrado fuera de linea) 36, bajo el control de una interfaz de memoria 34. Las instrucciones buscadas en la memoria son procesadas en un circuito predescodificador 37 antes de ser almacenadas en la antememoria I 20. El predescodificador 37 descodifica parcialmente las instrucciones, y anexa los
bits de predescodificación, los cuales son almacenados junto con las instrucciones a la antememoria I 20. Cuando las instrucciones son buscadas de la antememoria I 20, los bits de predescodificación proporcionan información acerca de cada instrucción que puede ser usada por las etapas de linea de Descodificación dentro de las líneas 12a y 12b para descodificar de manera más rápida y/o más eficiente la instrucción. Por ejemplo, los bits de predescodificación pueden identificar la longitud de una instrucción en una arquitectura de conjunto de instrucciones de longitud variable, identificar instrucciones bifurcadas, y similares . El procesador 10 puede incluir una interfaz de Entrada/Salida (I/O) 38, que controla el acceso a varios dispositivos periféricos 40, 42. Aquellos expertos en la técnica reconocerán que son posibles numerosas variaciones del procesador 10. Por ejemplo, el procesador 10 puede incluir una antememoria de segundo nivel (L2) para cualquiera o ambas de las antememorias I y D. Además, uno o más de los bloques funcionales descritos en el procesador 10 pueden ser omitidos de una modalidad particular. La figura 2 es un diagrama de bloques funcional que describe el trazo de instrucciones de la memoria 36 en una línea en la antememoria I 20 a través del predescodificador 37, para una implementación ilustrativa y
no limitante. La instrucción A es una instrucción de 16 bits (la longitud de instrucción base para este ejemplo) . Después de que la instrucción A es buscada en la memoria, el predescodificador 37 anexa dos bits de predescodificación ??( los cuales son almacenados con la instrucción A en la antememoria I 20. La instrucción B es una instrucción de 32 bits, almacenada en la memoria 36 como Bo y Bi. El predescodificador 37 anexa cuatro bits de predescodificación, almacenados en la antememoria I 20 como PBO y PBI- La instrucción C es una instrucción de 16 bits, y se almacena en la antememoria I 20 junto con dos bits de predescodificación Pc. Como es indicado por la tabla de la figura 2, las instrucciones A y C, que tienen dos bits de predescodificación cada una, tienen un espacio de codificación de bit de predescodificación de cuatro. Es decir, cuatro propiedades discretas -como la longitud de la instrucción, ya sea que la instrucción sea una bifurcación o similar- pueden ser codificadas en los bits de predescodificación para las instrucciones A y C. La instrucción B, que tiene cuatro bits de predescodificación, tiene un espacio de codificación de bits de predescodificación de 16. Si es soportado por la arquitectura, una instrucción de 48 bits tendría seis bits de predescodificación, para un espacio de codificación de
64, y así sucesivamente. Asumiendo que, en una implementación dada, todas las cuatro codificaciones de bit de predescodificación para instrucciones de 16 bits como A y C están definidas, puede agregarse un bit de predescodificación adicional a cada lugar de almacenamiento de 16 bits en la antememoria I 20 para utilizar los bits de predescodificación para indicar instrucciones de 16 bits indefinidas. Esto daría como resultado en cada lugar de almacenamiento en la antememoria I 20 que tiene tres bits de predescodificación asociados. Las instrucciones de 16 bits tendrían entonces un espacio de codificación de predescodificación de ocho -únicamente cinco de los cuales serían utilizados. Adicionalmente, las instrucciones de 32 bits tendrían un espacio de codificación de predescodificación de 64; las instrucciones de 48 bits tendrían un espacio de codificación de predescodificación de 512. Puesto que esto excede con mucho el número de propiedades discretas acerca de instrucciones que el predescodificador puede indicar, incrementar el número de bits de predescodificación para la longitud de instrucción de 16 bits da como resultado un gran desperdicio de almacenamiento en la antememoria I 20 caro. De acuerdo con una modalidad, una instrucción de 16 bits indefinida en este ejemplo puede ser alterada para simular una instrucción de 32 bits. La propiedad de que la
instrucción sea en efecto una instrucción indefinida de 16 bits se codifica en una de las 16 codificaciones de predescodificación asociadas con instrucciones de 32 bits. En la figura 3, la instrucción D es una instrucción indefinida de 16 bits. Tras escribir la instrucción D a la antememoria I 20, ésta se altera para simular una instrucción de 32 bits que comprende D0 y Di. Los bits de predescodificación PDo y PDI son escritos, indicando que esa instrucción D es realmente una instrucción indefinida de 16 bits. En una modalidad, donde únicamente se requiere el hecho de una instrucción indefinida de 16 bits por la linea 12, el predescodificador 37 puede escribir únicamente los bits de predescodificación PD0 y PDI a la antememoria I 20, desechando la instrucción D. En otra modalidad, como donde los datos dentro del campo de bits de la instrucción son comunes o útiles para vectorizar la trampa de programas y sistemas de programación o software, la instrucción D puede ser escrita a cualquiera de D0 o Di o ambas, así como los bits de predescodificación PD0 y PDI son escritos a la antememoria I 20. En otra modalidad más, el predescodificador 37 puede escribir la instrucción D a una de D0 y Di, y puede escribir información adicional a otro lugar de almacenamiento de la antememoria I 16 bits 20, así como escribir los bits de predescodificación PDo y PDI« En
cualquier caso, son los bits de predescodificación PD0 y PDI los que simulan ambos una instrucción de 32 bits (de modo que todos los bits de predescodificación sean leídos) e indica que la instrucción es realmente una instrucción indefinida de 16 bits. De esta manera, el predescodificador 37 puede indicar una instrucción indefinida de tamaño base sin expandir los bits de predescodificación asociados con las instrucciones de tamaño base, evitando por lo tanto utilización ineficiente de la memoria. En la modalidad descrita en la figura 3, ninguna instrucción E ni F es predescodificada o cargada en la antememoria I 20. Puesto que la longitud efectiva de una instrucción en la línea ha sido alterada entre la memoria 36 y la antememoria I 20, el resto de la línea de la antememoria no puede contener todas las instrucciones restantes en los espacios de memoria correspondientes (por ejemplo, ambas E y F) . El predescodificador 37 puede marcar el resto de la línea de antememoria como no usada o no válida, o puede simplemente insertar bits de predescodificación no válidos o indefinidos en las posiciones de bits apropiadas. En la ejecución normal el procesador capturará en los programas y sistemas de programación o software tras encontrar la instrucción indefinida, y la línea de la antememoria probablemente será remplazada. Utilizando un manipulador de excepción de
programas y sistemas de programación o software para manejar la trampa producida por la instrucción indefinida permite que los programas y sistemas de programación o software simulen instrucciones las cuales no fueron contempladas al momento que un procesador, como el procesador 10, se fijó en el silicio u otro material semiconductor. Si ocurre otro código para ramificarse en la linea de la antememoria, éste encontrará una predescodificación incorrecta y/o no reconocerá una instrucción esperada, causando que la linea de antememoria se recargue, o causando posiblemente una excepción. Puesto que se asume que las instrucciones indefinidas son raramente encontradas, el impacto del desempeño de una linea de antememoria I corrompida debido a la instrucción indefinida alterada que simula una instrucción de una longitud diferente no es de gran preocupación. El método descrito aquí no se limita a una instrucción indefinida de la longitud de instrucción base, como se describió anteriormente. En general, para cualquier propiedad de instrucción que pueda ser indicada comúnmente via bits de predescodificación pero donde el espacio de codificación de bits de predescodificación para la longitud de instrucción asociada esté completamente definida, la propiedad puede ser indicada alterando la instrucción para simular una instrucción de una longitud diferente, y
utilizar un bit de predescodificación disponible que codifique las instrucciones de longitud diferente. Por ejemplo, asúmase que todas, las 16 codificaciones de los cuatro bits de predescodificación asociados con instrucciones de 32 bits en el ejemplo anterior están definidas, pero únicamente tres o menos de las cuatro codificaciones de los dos bits de predescodificación asociadas con instrucciones de 16 bits están definidas. En este caso, una propiedad particular de una instrucción de 32 bits no definida en los bits de predescodificación de la instrucción de 32 bits puede ser indicada alterando la instrucción de 32 bits para simular una instrucción de 16 bits, y codificar la propiedad relevante en una codificación de bits de predescodificación disponible de los dos bits de predescodificación asociados con instrucciones de 16 bits. En este caso, la mitad del campo de bits de instrucción de 32 bits se pierde, siendo de este modo la propiedad codificada preferiblemente una que no depende del campo de bits de instrucción (como el hecho de que la instrucción sea indefinida, aunque ésta no sea la única propiedad que pueda ser asi indicada) . La Figura 4 describe un método para predescodificar una instrucción, de acuerdo a una modalidad. Tras una pérdida en la antememoria I 20, la interfaz de memoria 34 busca al menos una primera
instrucción de la memoria 36 (bloque 50) . El predescodificador 37 inspecciona la primera instrucción e identifica una propiedad de la primera instrucción (bloque 52), de modo que la primera instrucción sea indefinida. El predescodificador 37 altera la primera instrucción para similar una segunda instrucción (bloque 54), como una segunda instrucción de una longitud diferente. El predescodificador 37 genera adicionalmente bits de predescodificación para la segunda instrucción que identifica la propiedad de la primera instrucción (bloque 56) . Es decir, que una de las codificaciones disponibles de los bits de predescodificación asociada con la segunda longitud de instrucción se asigna a la propiedad relevante de la primera instrucción. El predescodificador 37 escribe la segunda instrucción y asocia los bits de predescodificación a la antememoria I 20 (bloque 58) . Cuando la linea 12 busca la segunda instrucción y sus bits de predescodificación de la antememoria I 20, la lógica en una etapa de linea de Descodificación inspecciona los bits predescodificados para identificar la propiedad de la primera instrucción (bloque 60) , como el hecho de que la primera instrucción no sea definida. La linea 12, efectúa entonces la acción apropiada como por ejemplo hacer una excepción para manipular la instrucción indefinida en los programas y sistemas de programación o software.
De acuerdo a una o más modalidades descritas aquí, un predescodificador 37 puede indicar una propiedad de una instrucción cuando el espacio de codificación de bits de predescodificación asociado con esa longitud de instrucción esté completamente definido. Alterando la instrucción para simular una instrucción con una longitud diferente, el predescodificador 37 puede utilizar una codificación disponible de los bits de predescodificación asociados con la instrucción de diferente longitud para indicar la propiedad. Cuando sea indicada una propiedad de una instrucción más corta en la codificación de bits de predescodificación de una instrucción más larga, una o más instrucciones o fracciones de una instrucción serán desplazadas de la línea de la antememoria I. Cuando una propiedad de una instrucción más larga sea indicada en las codificaciones de bits de predescodificación de una instrucción más corta, algunos de los campos de bits de instrucción se pierden. En consecuencia, la técnica de indicación de propiedad de instrucción descrita aquí es empleada comúnmente para indicar propiedades de instrucción que causan excepción, como el hecho de que una instrucción sea indefinida, aunque no se limita a esos casos. Aunque la presente invención ha sido descrita aquí con respecto a características particulares, los aspectos y modalidades de la misma, será evidente que son
posibles i numerosas variaciones, modificaciones y otras modalidades dentro del amplio alcance de la presente invención, y en consecuencia, todas las variaciones, modificaciones y modalidades serán consideradas dentro del alcance de la invención. Las presentes modalidades deben por lo tanto constituirse en todos los aspectos como ilustrativas y no restrictivas y todos los cambios que entren dentro del significado y alcance de equivalencia de las reivindicaciones anexas pretenden ser abarcados en ella.
Claims (17)
- NOVEDAD DE LA INVENCION Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes:
- REIVINDICACIONES 1. Un método de predescodificación de instrucciones en un procesador, caracterizado porque comprende : identificar una propiedad de una primera instrucción; alterar la primera instrucción para simular una segunda instrucción; y generar bits de predescodificación para la segunda instrucción que identifique la propiedad de la primera instrucción. 2. El método de conformidad con la reivindicación 1, caracterizado porque la primera instrucción producirá una excepción.
- 3. El método de conformidad con la reivindicación 2, caracterizado porque la primera instrucción es indefinida.
- 4. El método de conformidad con la reivindicación 1, caracterizado porque el conjunto de instrucciones del procesador es un conjunto de instrucciones de longitud variable, y donde la primera y segunda instrucciones tienen diferentes longitudes.
- 5. El método de conformidad con la reivindicación 4, caracterizado porque cada longitud de instrucción definida tiene un número diferente de bits de predescodificación asociados con instrucciones de esa longitud .
- 6. El método de conformidad con la reivindicación 5, caracterizado porque las codificaciones insuficientes de los bits de predescodificación asociadas con instrucciones de la longitud de la primera instrucción están disponibles para codificar la propiedad de la primera instrucción .
- 7. El método de conformidad con la reivindicación 6, caracterizado porque al menos una codificación de los bits de predescodificación asociada con instrucciones de la longitud de la segunda instrucción está disponible para codificar la propiedad de la primera instrucción.
- 8. El método de conformidad con la reivindicación 1, caracterizado porque la primera instrucción es una instrucción de 16 bits que tiene dos bits de predescodificación asociados con ésta.
- 9. El método de conformidad con la reivindicación 8, caracterizado porque la segunda instrucción es una instrucción de 32 bits que tiene cuatro bits de predescodificación asociados con ésta.
- 10. El método de conformidad con la reivindicación 9, caracterizado porque una de las dieciséis codificaciones de los bits de predescodificación asociada con instrucciones de 32 bits identifica la instrucción de 32 bits asociada como una instrucción indefinida de 16 bits .
- 11. Un procesador que opera para leer instrucciones de la memoria, caracterizado porque comprende : una antememoria de instrucción que almacena instrucciones leídas de la memoria y bits de predescodificación asociados con cada instrucción; un predescodificador interpuesto entre la memoria y la antememoria de instrucción, el predescodificador opera para : identificar una propiedad de una primera instrucción; alterar la primera instrucción para simular una segunda instrucción; generar bits de predescodificación para la segunda instrucción que identifica la propiedad de la primera instrucción; y escribir los bits de predescodificación para la segunda instrucción a la antememoria de instrucción.
- 12. El procesador de conformidad con la reivindicación 11, caracterizado porque las instrucciones leídas de la memoria son de un conjunto de instrucciones de longitud variable.
- 13. El procesador de conformidad con la reivindicación 12, caracterizado porque la antememoria de instrucción comprende una pluralidad de lugares de almacenamiento de instrucciones correspondientes a la longitud de la instrucción más corta, y donde un número predeterminado de bits de predescodificación están asociados con cada lugar de almacenamiento.
- 14. El procesador de conformidad con la reivindicación 13, caracterizado porque la antememoria de instrucción almacena instrucciones más largas que una instrucción más corta en un múltiplo entero de los lugares de almacenamiento, y asocia con cada instrucción los bits de predescodificación asociados con cada lugar de almacenamiento .
- 15. El procesador de conformidad con la reivindicación 13, caracterizado porque la primera instrucción es una instrucción de 16 bits que tiene dos bits de predescodificación asociados con ésta.
- 16. El procesador de conformidad con la reivindicación 15, caracterizado porque la segunda instrucción es una instrucción de 32 bits que tiene cuatro bits de predescodificación asociados con ésta.
- 17. El procesador de conformidad con la reivindicación 16, caracterizado porque una de las dieciséis codificaciones de los bits de predescodificación asociada con instrucciones de 32 bits identifica la instrucción de 32 bits asociada con una instrucción indefinida de 16 bits.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/381,545 US7962725B2 (en) | 2006-05-04 | 2006-05-04 | Pre-decoding variable length instructions |
PCT/US2007/067057 WO2007130798A1 (en) | 2006-05-04 | 2007-04-20 | Pre-decoding variable length instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
MX2008014048A true MX2008014048A (es) | 2008-11-14 |
Family
ID=38335641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MX2008014048A MX2008014048A (es) | 2006-05-04 | 2007-04-20 | Predescodificacion de instrucciones de longitud variable. |
Country Status (12)
Country | Link |
---|---|
US (1) | US7962725B2 (es) |
EP (1) | EP2018609B1 (es) |
JP (2) | JP5340919B2 (es) |
KR (1) | KR101019347B1 (es) |
CN (2) | CN102591620B (es) |
AT (1) | ATE493702T1 (es) |
BR (1) | BRPI0711165A2 (es) |
CA (1) | CA2649675A1 (es) |
DE (1) | DE602007011596D1 (es) |
MX (1) | MX2008014048A (es) |
RU (1) | RU2412464C2 (es) |
WO (1) | WO2007130798A1 (es) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769983B2 (en) | 2005-05-18 | 2010-08-03 | Qualcomm Incorporated | Caching instructions for a multiple-state processor |
US7962725B2 (en) * | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
US7711927B2 (en) * | 2007-03-14 | 2010-05-04 | Qualcomm Incorporated | System, method and software to preload instructions from an instruction set other than one currently executing |
US9075622B2 (en) * | 2008-01-23 | 2015-07-07 | Arm Limited | Reducing errors in pre-decode caches |
US7925867B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Pre-decode checking for pre-decoded instructions that cross cache line boundaries |
US7747839B2 (en) | 2008-01-23 | 2010-06-29 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
US8347067B2 (en) * | 2008-01-23 | 2013-01-01 | Arm Limited | Instruction pre-decoding of multiple instruction sets |
US7925866B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
US8037286B2 (en) * | 2008-01-23 | 2011-10-11 | Arm Limited | Data processing apparatus and method for instruction pre-decoding |
US7917735B2 (en) * | 2008-01-23 | 2011-03-29 | Arm Limited | Data processing apparatus and method for pre-decoding instructions |
GB2466984B (en) | 2009-01-16 | 2011-07-27 | Imagination Tech Ltd | Multi-threaded data processing system |
CN101853148B (zh) * | 2009-05-19 | 2014-04-23 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
WO2013095477A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for detecting and recovering from data fetch errors |
US9354888B2 (en) * | 2012-03-28 | 2016-05-31 | International Business Machines Corporation | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching |
US9348598B2 (en) | 2013-04-23 | 2016-05-24 | Arm Limited | Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US20170083341A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
WO2019046716A1 (en) * | 2017-08-31 | 2019-03-07 | MIPS Tech, LLC | CONTROLLED INSTRUMENT PROCESSING BY POINTER SIZE |
CN108415729A (zh) * | 2017-12-29 | 2018-08-17 | 北京智芯微电子科技有限公司 | 一种cpu指令异常的处理方法及装置 |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
US20220100516A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Circuitry and methods for power efficient generation of length markers for a variable length instruction set |
CN114625419B (zh) * | 2022-05-16 | 2022-08-26 | 西安芯瞳半导体技术有限公司 | 一种可变长指令的缓存结构、方法及介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5026A (en) * | 1847-03-20 | Cut-off valve | ||
US4013A (en) * | 1845-04-26 | Machine fqe making match-splihts and arranging them in dipping | ||
JPH03168836A (ja) * | 1989-11-29 | 1991-07-22 | Toshiba Corp | エミュレーションプロセッサ |
US5619408A (en) | 1995-02-10 | 1997-04-08 | International Business Machines Corporation | Method and system for recoding noneffective instructions within a data processing system |
EP0968602A1 (en) | 1997-03-21 | 2000-01-05 | CANAL+ Société Anonyme | Extracting data sections from a transmitted data stream |
US6269384B1 (en) | 1998-03-27 | 2001-07-31 | Advanced Micro Devices, Inc. | Method and apparatus for rounding and normalizing results within a multiplier |
JP3867427B2 (ja) * | 1999-01-11 | 2007-01-10 | ソニー株式会社 | プロセッサ装置および集積回路 |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
US6804799B2 (en) | 2001-06-26 | 2004-10-12 | Advanced Micro Devices, Inc. | Using type bits to track storage of ECC and predecode bits in a level two cache |
JP3961483B2 (ja) * | 2001-11-29 | 2007-08-22 | 富士通株式会社 | 中央演算装置および演算プログラム |
US6816962B2 (en) * | 2002-02-25 | 2004-11-09 | International Business Machines Corporation | Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions |
US6968430B1 (en) * | 2002-10-22 | 2005-11-22 | Lsi Logic Corporation | Circuit and method for improving instruction fetch time from a cache memory device |
US6952754B2 (en) * | 2003-01-03 | 2005-10-04 | Intel Corporation | Predecode apparatus, systems, and methods |
CN1216327C (zh) * | 2003-05-15 | 2005-08-24 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
US7962725B2 (en) * | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
-
2006
- 2006-05-04 US US11/381,545 patent/US7962725B2/en active Active
-
2007
- 2007-04-20 EP EP07760992A patent/EP2018609B1/en not_active Not-in-force
- 2007-04-20 JP JP2009509934A patent/JP5340919B2/ja not_active Expired - Fee Related
- 2007-04-20 CA CA002649675A patent/CA2649675A1/en not_active Abandoned
- 2007-04-20 WO PCT/US2007/067057 patent/WO2007130798A1/en active Application Filing
- 2007-04-20 BR BRPI0711165-7A patent/BRPI0711165A2/pt not_active IP Right Cessation
- 2007-04-20 RU RU2008147711/08A patent/RU2412464C2/ru not_active IP Right Cessation
- 2007-04-20 CN CN201110378670.3A patent/CN102591620B/zh not_active Expired - Fee Related
- 2007-04-20 CN CN2007800156319A patent/CN101432692B/zh not_active Expired - Fee Related
- 2007-04-20 MX MX2008014048A patent/MX2008014048A/es not_active Application Discontinuation
- 2007-04-20 KR KR1020087029666A patent/KR101019347B1/ko not_active IP Right Cessation
- 2007-04-20 AT AT07760992T patent/ATE493702T1/de not_active IP Right Cessation
- 2007-04-20 DE DE602007011596T patent/DE602007011596D1/de active Active
-
2012
- 2012-05-15 JP JP2012111714A patent/JP5653963B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7962725B2 (en) | 2011-06-14 |
CA2649675A1 (en) | 2007-11-15 |
ATE493702T1 (de) | 2011-01-15 |
CN102591620A (zh) | 2012-07-18 |
RU2412464C2 (ru) | 2011-02-20 |
JP5653963B2 (ja) | 2015-01-14 |
CN102591620B (zh) | 2015-02-11 |
DE602007011596D1 (de) | 2011-02-10 |
JP5340919B2 (ja) | 2013-11-13 |
CN101432692B (zh) | 2012-01-18 |
RU2008147711A (ru) | 2010-06-10 |
JP2012185843A (ja) | 2012-09-27 |
EP2018609A1 (en) | 2009-01-28 |
JP2009535744A (ja) | 2009-10-01 |
KR20090007629A (ko) | 2009-01-19 |
CN101432692A (zh) | 2009-05-13 |
US20070260854A1 (en) | 2007-11-08 |
WO2007130798A1 (en) | 2007-11-15 |
BRPI0711165A2 (pt) | 2011-08-23 |
EP2018609B1 (en) | 2010-12-29 |
KR101019347B1 (ko) | 2011-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MX2008014048A (es) | Predescodificacion de instrucciones de longitud variable. | |
US10776114B2 (en) | Variable register and immediate field encoding in an instruction set architecture | |
JP5313228B2 (ja) | 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア | |
US5941980A (en) | Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system | |
US7473293B2 (en) | Processor for executing instructions containing either single operation or packed plurality of operations dependent upon instruction status indicator | |
US8332621B2 (en) | Implementation of variable length instruction encoding using alias addressing | |
US8145883B2 (en) | Preloading instructions from an instruction set other than a currently executing instruction set | |
KR101005633B1 (ko) | 일정한 개수의 가변 길이 명령을 가진 명령 캐시 | |
JP2003510682A5 (es) | ||
US20030177338A1 (en) | Scheme to encode predicted values into an instruction stream/cache without additional bits/area | |
US6816962B2 (en) | Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions | |
JP2886838B2 (ja) | スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法 | |
BR102022023763A2 (pt) | Aparelho e método para detecção de constante durante operações de compactação |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FA | Abandonment or withdrawal |