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
Application number
MX2008014048A
Other languages
English (en)
Inventor
Rodney Wayne Smith
Brian Michael Stempel
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of MX2008014048A publication Critical patent/MX2008014048A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; 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)

  1. NOVEDAD DE LA INVENCION Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes:
  2. 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. 3. El método de conformidad con la reivindicación 2, caracterizado porque la primera instrucción es indefinida.
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
MX2008014048A 2006-05-04 2007-04-20 Predescodificacion de instrucciones de longitud variable. MX2008014048A (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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