ES2341993T3 - Procedimiento y aparato de ahorro de energia para instrucciones de longitud variable. - Google Patents

Procedimiento y aparato de ahorro de energia para instrucciones de longitud variable. Download PDF

Info

Publication number
ES2341993T3
ES2341993T3 ES06736989T ES06736989T ES2341993T3 ES 2341993 T3 ES2341993 T3 ES 2341993T3 ES 06736989 T ES06736989 T ES 06736989T ES 06736989 T ES06736989 T ES 06736989T ES 2341993 T3 ES2341993 T3 ES 2341993T3
Authority
ES
Spain
Prior art keywords
instructions
instruction
length
processor
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES06736989T
Other languages
English (en)
Inventor
Brian Michael Stempel
James Norris Dieffenderfer
Jeffrey Todd Bridges
Rodney Wayne Smith
Thomas Andrew Sartorius
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
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
Application granted granted Critical
Publication of ES2341993T3 publication Critical patent/ES2341993T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Vehicle Body Suspensions (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Containers And Plastic Fillers For Packaging (AREA)
  • Power Sources (AREA)

Abstract

Un aparato para ahorrar energía en un entorno de procesador que soporta instrucciones de longitud variable, comprendiendo el aparato: un predecodificador para decodificar parcialmente instrucciones de una primera longitud y una segunda longitud, siendo la segunda longitud mayor que la primera longitud, y generar bits de predecodificación para instrucciones tanto de la primera longitud como de la segunda longitud; un indicador de estado de modo de operación de procesador, indicando el indicador de estado de modo de operación de procesador que el procesador está operando en un modo que restringe las instrucciones a instrucciones de la segunda longitud; una caché de instrucciones que tiene una pluralidad de líneas de caché, almacenando una línea de caché instrucciones y bits de predecodificación; y una lógica de control de escritura para escribir selectivamente bits de predecodificación en una línea de caché dependiendo del indicador de estado de modo de operación de procesador por lo que menos de todos los bits de predecodificación se escriben para instrucciones de la segunda longitud.

Description

Procedimiento y aparato de ahorro de energía para instrucciones de longitud variable.
Antecedentes de la invención Campo de la invención
La presente invención se refiere, en general, a técnicas para reducir la energía en un procesador que procesa instrucciones que tienen una diversidad de longitudes, y, más particularmente, a técnicas ventajosas para habilitar y deshabilitar selectivamente la escritura y lectura de bits de predecodificación en una caché de instrucciones.
Antecedentes relevantes
Muchos procesadores soportan normalmente conjuntos de instrucciones que tienen instrucciones de longitud variable. Por ejemplo, el conjunto de instrucciones de un procesador puede estar constituido por instrucciones de 32 bits e instrucciones de 16 bits. Un procesador también puede tener una configuración de memoria jerárquica con múltiples niveles de cachés incluyendo una caché de instrucciones, una caché de datos y memoria de sistema. Si el procesador también tiene un cauce de ejecución profundo que opera a una tasa de reloj elevada con fases de encauzado de corta duración, también es probable que el procesador tenga una fase de predecodificación para preprocesar la instrucciones para simplificar una fase de decodificación posterior y, por tanto, simplificar el encauzado. La fase de encauzado de predecodificación es comúnmente operativa durante un fallo de caché de instrucciones para decodificar parcialmente instrucciones que se extraen debido al fallo de instrucción. La información de predecodificación se escribe en la caché de instrucciones junto con las instrucciones extraídas.
En un procesador de instrucciones de longitud variable, las instrucciones extraídas debido a un fallo pueden ser de longitud variable. La operación de predecodificación determina un conjunto de bits de predecodificación para cada instrucción y los bits de predecodificación e instrucción se almacenan en la caché de instrucciones independientemente del estado de operación del procesador. La escritura y lectura de bits de predecodificación que puede ser innecesaria debido al estado de operación del procesador es una fuente de pérdida de energía.
Se dirige la atención adicionalmente al documento US-A-6 141 745, que describe un microprocesador superescalar que incluye una unidad de predecodificación adaptada para predecodificar instrucciones de longitud de bytes variable. La unidad de predecodificación predecodifica las instrucciones antes de su almacenamiento en una caché de instrucciones. En un sistema, una unidad de predecodificación está configurada para generar una pluralidad de bits de predecodificación incluyendo un bit inicial, un bit final y un bit funcional para cada byte de instrucción. La pluralidad de bits de predecodificación asociados con cada byte de instrucción se denomina en conjunto etiqueta de predecodificación. Entonces una unidad de alineación de instrucciones usa las etiquetas de predecodificación para enviar las instrucciones de longitud de bytes variable a una pluralidad de unidades de decodificación en el microprocesador superescalar. La unidad de predecodificación está configurada de tal modo que el significado del bit funcional de una etiqueta de predecodificación particular depende del estado del bit final. La unidad de predecodificación está configurada además para generar bits funcionales asociados con bytes de una instrucción diferentes del byte de finalización, que indican si los bytes de la instrucción diferentes del byte de finalización son un prefijo. La codificación de las etiquetas de predecodificación es tal que una cantidad relativamente grande de información de predecodificación puede transportarse con un número relativamente pequeño de bits de predecodificación.
Sumario de la divulgación
Según la presente invención, se proporcionan un aparato para ahorrar energía en un entorno de procesador, tal como se expone en la reivindicación 1, un aparato para ahorrar energía cuando se lee una línea de caché de instrucciones, tal como se expone en la reivindicación 11, y un procedimiento, tal como se expone en la reivindicación 16. Realizaciones de la invención se reivindican en las reivindicaciones dependientes.
Entre sus diversos aspectos, la presente invención reconoce que la energía puede conservarse habilitando selectivamente la escritura y lectura de bits de predecodificación. Una primera realización de la invención reconoce que existe la necesidad de una técnica que extraiga y ejecute instrucciones de longitud variable de una primera longitud y de una segunda longitud, siendo la segunda longitud mayor que la primera longitud. Un indicador de estado de modo de operación de procesador indica que el procesador está en un modo de operación que restringe las instrucciones a instrucciones de la segunda longitud. Un predecodificador decodifica parcialmente instrucciones de la primera longitud y la segunda longitud y genera bits de predecodificación para cada instrucción parcialmente decodificada. Las instrucciones y los bits de predecodificación se almacenan en una línea de caché en una caché de instrucciones. Una lógica de control de escritura escribe selectivamente bits de predecodificación en una línea de caché dependiendo del indicador de estado de modo de operación de procesador por lo que menos de todos los bits de predecodificación se escriben para instrucciones de la segunda longitud. Una etiqueta asociada con la línea de caché se escribe con una dirección de instrucción y un bit de estado de procesador. Cuando se lee, una dirección de instrucción de extracción y un indicador de modo de operación de procesador se comparan con la etiqueta y si la comparación es igual los bits de predecodificación seleccionados se leen a partir de la línea de caché por lo que menos de todos los bits de predecodificación disponibles en la línea de caché se leen para instrucciones de la segunda longitud.
Una comprensión más completa de la presente invención, así como las características y ventajas adicionales de la invención, será evidente a partir de la siguiente descripción detallada y los dibujos adjuntos.
Breve descripción de los dibujos
La figura 1 es una ilustración gráfica de un sistema de comunicación inalámbrica ejemplar en el que puede emplearse ventajosamente una realización de la invención;
la figura 2 es una ilustración gráfica de un complejo de procesador según la presente invención;
la figura 3A es una ilustración gráfica de un segmento de programa ejemplar que contiene instrucciones de longitud variable de 16 y 32 bits según la presente invención;
la figura 3B es una ilustración gráfica de una línea de instrucciones desde una caché de datos e instrucciones de nivel 2 (caché de L2) que contiene instrucciones desde el segmento de programa de la figura 3A según la presente invención;
la figura 3C es una ilustración gráfica de una línea de instrucciones desde una caché de instrucciones de nivel 1 (Icaché de L1) que contiene instrucciones desde el segmento de programa de la figura 3A según la presente invención;
la figura 4A es una ilustración gráfica de un segmento de programa ejemplar que sólo contiene instrucciones de 32 bits operativas en un modo de procesador restringido a sólo instrucciones de 32 bits según la presente invención;
la figura 4B es una ilustración gráfica de una línea de instrucciones desde una caché de L2 que contiene instrucciones desde el segmento de programa de la figura 4A según la presente invención;
la figura 4C es una ilustración gráfica de una línea de instrucciones desde una Icaché de L1 que contiene instrucciones desde el segmento de programa de la figura 4A según la presente invención;
la figura 5 es una ilustración gráfica de fases de encauzado de procesador que operan según la presente invención para ahorrar energía cuando se escribe en la Icaché de L1 y se lee desde la Icaché de L1; y
la figura 6 es un diagrama de flujo de etapas operacionales requeridas para ahorrar energía cuando se escribe y lee información de predecodificación desde una línea de caché de instrucciones según la presente invención.
Descripción detallada
Ahora se describirá la presente invención de manera más completa con referencia a los dibujos adjuntos, en los que se muestran diversas realizaciones de la invención. Sin embargo, esta invención puede implementarse de diversas formas y no debe interpretarse como limitada a las realizaciones expuestas en el presente documento. En su lugar, estas realizaciones se proporcionan de modo que esta descripción sea completa y minuciosa y transmitirá de manera completa el alcance de la invención a los expertos en la técnica.
Un código de programa informático o "código de programa" para operar sobre el mismo o para llevar a cabo operaciones según las enseñanzas de la invención puede escribirse en un lenguaje de programación de alto nivel tal como C, C++, JAVA®, Smalltalk, JavaScript®, Visual Basic®, TSQL, Perl, o en diversos otros lenguajes de programación. Los programas para la arquitectura de procesador objetivo también pueden escribirse directamente en el lenguaje nativo del ensamblador. Un programa de ensamblador nativo usa representaciones nemónicas de instrucciones de instrucciones binarias a nivel de máquina. Medio legible por ordenador o código de programa tal como se usa en el presente documento se refiere a un código de lenguaje de máquina tal como un código de objeto cuyo formato puede entender un procesador.
La figura 1 es una ilustración de un sistema 100 de comunicación inalámbrica ejemplar en el que puede emplearse ventajosamente una realización de la invención. Con fines de ilustración, la figura 1 muestra tres unidades 120, 130 y 150 remotas y dos estaciones 140 base. Se reconocerá que los sistemas de comunicación inalámbrica típicos pueden tener muchas más unidades remotas y estaciones base. Las unidades 120, 130 y 150 remotas incluyen componentes 125A, 125B y 125C de hardware, respectivamente, que ejecutan un código de programa según la presente invención. La figura 1 muestra una señal 180 de enlace directo desde las estaciones 140 base y las unidades 120, 130 y 150 remotas y una señal 190 de enlace inverso desde las unidades 120, 130 y 150 remotas a las estaciones 140 base.
En la figura 1, la unidad 120 remota se muestra como un teléfono móvil, la unidad 130 remota se muestra como un ordenador portátil y la unidad 150 remota se muestra como una unidad remota de ubicación fija en un sistema de bucle local inalámbrico. Por ejemplo, las unidades remotas pueden ser unidades de sistemas de comunicación personal (PCS) de mano, unidades de datos portátiles tales como asistentes de datos personales o unidades de datos de ubicación fija tales como un equipo de lectura de contador. Aunque la figura 1 ilustra unidades remotas según las enseñanzas de la invención, la invención no está limitada a estas unidades ilustradas ejemplares. La invención puede emplearse de manera adecuada en cualquier componente de hardware que use un procesador encauzado que tenga instrucciones de longitud variable que almacene información de predecodificación en una caché de instrucciones.
La figura 2 es una ilustración de un complejo 200 de procesador en el que puede emplearse ventajosamente una realización de la invención. El complejo 200 de procesador puede empelarse de manera adecuada en componentes 125A-C de hardware para ejecutar un código de programa. El complejo 200 de procesador incluye un procesador 210 que ejecuta instrucciones de diferentes longitudes, una caché 214 de datos de nivel 1 (L1), una caché 218 de instrucciones de L1 (Icaché), un predecodificador 222, una caché 226 de instrucciones y datos de nivel 2 (caché de L2) y una interfaz a la memoria del sistema. Por motivos de claridad de la explicación de la presente invención no se muestran los dispositivos periféricos que pueden conectarse al complejo de procesador. El procesador 210 está directamente acoplado a la caché 214 de datos de L1, la Icaché 218 de L1 y el predecodificador 222. El procesador 210 recupera instrucciones y datos a partir de las cachés de una manera jerárquica. Por ejemplo, el procesador 210 extrae una instrucción generando una dirección de extracción y un estado de modo de operación de procesador en entradas 228 de Icaché de L1, y proporcionando otra información tal como puede requerirse para extraer una instrucción, tal como una señal de identificación de proceso (PID). El estado de modo de operación de procesador es un indicador del modo de operación del procesador especificado por el programador.
El conjunto de instrucciones del procesador incluye instrucciones codificadas en múltiples formatos de longitud, en los que las instrucciones más largas son comúnmente un múltiplo de la longitud de formato de instrucción más corta disponible en el conjunto de instrucciones de longitud variable. Puesto que una instrucción puede tener una codificación compleja que puede variar dependiendo de la longitud de la instrucción y puede ser adyacente a instrucciones de diferentes longitudes, la alineación y la decodificación de una instrucción extraída pueden requerir un procesamiento más allá de lo que se puede en una fase de encauzado de procesador única con un periodo de reloj de corta duración. Debido al nivel de complejidad de instrucción, el procesador puede incluir una fase de encauzado de alineación de instrucciones por separado y dividir la operación de decodificación en una etapa de predecodificación y una fase de encauzado de decodificación. La etapa de predecodificación puede esconderse de manera adecuada de la ejecución de encauzado normal realizando la operación de predecodificación durante el procesamiento de fallo de Icaché de L1. El procesamiento de fallo de Icaché de L1 se produce cuando la instrucción extraída no se encuentra en la Icaché de L1 y debe extraerse de niveles más altos de la jerarquía de memoria. La etapa de predecodificación almacena información de predecodificación junto con la instrucción extraída en la caché de instrucciones de L1.
En operación, el procesador 210 accede a la Icaché 218 de L1 para determinar si la instrucción direccionada está presente en la Icaché de L1 mediante el uso de un mecanismo de correspondencia. Si no se encuentra ninguna correspondencia para la instrucción extraída en la Icaché 218 de L1, se produce un fallo. La información 230 de fallo se envía al predecodificador 222, y el procesador 210 realiza una petición 232 de acceso a la caché 226 de L2. Con un acierto de instrucción en la caché 226 de L2, una línea de caché de L2 que contiene la instrucción deseada se emite en el puerto 234 A al predecodificador 222. El predecodificador 222, durante una fase de predecodificación en el procesamiento de fallo, decodifica parcialmente las instrucciones extraídas de la caché de L2 y proporciona instrucciones, bits predecodificados asociados con las instrucciones e información de etiqueta en la salida 238 a la Icaché 218 de L1 y al procesador 210.
Cuando el procesador 210 necesita extraer datos, el procesador 210 accede a la caché 214 de datos de L1 para determinar si los datos direccionados están presentes en la caché de datos de L1 mediante el uso de un mecanismo de correspondencia. Si no se encuentra ninguna correspondencia para los datos extraídos en la caché 214 de datos de L1, se produce un fallo a continuación se accede a la caché 226 de L2. En los dos casos de caché de L1, si se encuentra que está presente la instrucción o los datos en la caché de instrucciones de L1 o de datos de L1, respectivamente, entonces la instrucción y los datos se leen directamente a partir de su caché de L1 respectiva en las salidas 240 y 244.
La figura 3A es un segmento 300 de programa ejemplar que puede almacenarse de manera adecuada en la jerarquía de memoria del complejo 200 de procesador, incluyendo la caché 226 de L2 y la Icaché 218 de L1. Debe indicarse que aunque por motivos de ilustración se supone que el segmento de programa se recupera de una línea de caché, las enseñanzas de la invención pueden aplicarse a cualquier dispositivo de memoria que almacene el segmento de programa. En general, la expresión línea de caché también puede denominarse cadena de instrucciones o flujo de instrucciones. Puesto que una línea de caché puede tener una longitud fija, las expresiones cadena de instrucciones o flujo de instrucciones se refieren normalmente a uno o más segmentos de programa que pueden o no abarcar el límite de una línea de caché.
El segmento 300 de programa incluye instrucciones 302 que proceden de un conjunto de instrucciones de longitud variable constituido por instrucciones de 16 bits y 32 bits. Por ejemplo, considérese que el procesador 210 usa formatos de instrucciones de 16 bits y 32 bits para múltiples tipos de instrucciones y soporta varios modos de operación que especifican y restringen el uso de tipo de instrucción. El procesador 210 tiene un primer modo de operación que especifica que sólo pueden usarse instrucciones de 32 bits y un segundo modo de operación que especifica que puede usarse una combinación de instrucciones de 16 bits y 32 bits. Aunque normalmente los procesadores tienen múltiples modos de operación, por motivos de claridad de explicación de la presente invención, la descripción del procesador 210 ejemplar se limita principalmente a los modos de operación primero y segundo descritos anteriormente.
Para ilustrar los aspectos de la presente invención, en la figura 3A se ilustran varias instrucciones de 16 bits y 32 bits ejemplares. Por motivos de ilustración, los indicadores 304 de bytes relativos al programa representan la ubicación de bytes en una línea de caché en la que se inicia una instrucción e indican indirectamente el tamaño de la instrucción. Por ejemplo, la instrucción 306 MULT R5, R4, R3 se inicia en la posición 00 de byte y finaliza en la posición 01 de byte. Por tanto, la instrucción 306 MULT R5, R4, R3 es una instrucción de 16 bits. De forma similar, las instrucciones 307 y 311 ADD y la instrucción 309 SHIFT tienen una longitud de 16 bits. La instrucción 308 de rama condicional (CBRANCH), la instrucción 310 de carga (LOAD) y la instrucción 312 de almacenamiento (STORE) tienen una longitud de 32 bits.
Una parte de una línea 320 de caché de L2 se representa en la figura 3B. Sólo se muestra una parte de una línea de caché por motivos de ilustración, puesto que los tamaños de la línea de caché pueden variar dependiendo de la aplicación, tecnología y diseño de jerarquía de memoria elegido. Por ejemplo, puede usarse una línea de caché de 256 bits o de 512 bits para una caché de L2. La parte ilustrada tiene múltiples campos de 16 bits. Las instrucciones 314 de la figura 3A se almacenan en la línea 320 de caché de L2 tal como se indica, almacenándose la instrucción 306 MULT R5, R4, R3 en el segmento 322 de la línea de caché de L2 que empieza en la ubicación 00. La instrucción 307 ADD R0, R5, R1 se almacena en el segmento 324 de la línea de caché de L2 que empieza en la ubicación 02. La instrucción 308 CBRANCH 0A se almacena en el segmento 330 de la línea de caché de L2. La instrucción 308 está formada por dos segmentos 332 y 334 de 16 bits que empiezan en la ubicación 04 y la ubicación 06, respectivamente. La instrucción 309 SHIFT R0, 1 se almacena en el segmento 336 de la línea de caché de L2 que empieza en la ubicación 08. Se indica que por motivos ilustrativos, el segmento 300 de programa se ha mostrado empezando al inicio de una línea de caché, pero se apreciará que tales segmentos de programa pueden ubicarse en otras secciones de una línea de caché y pueden dividirse en múltiples líneas de caché.
Una línea 350 de Icaché de L1 ejemplar se representa en la figura 3C que está constituida por múltiples campos de 20 bits, estando formado cada campo de 20 bits por un campo de 16 bits con un campo de predecodificación de 4 bits (Pd4) asociado. Por ejemplo, la caché de L1 puede utilizar 128 bits para instrucciones y requerir un espacio adicional para ocho campos de Pd4 dando como resultado una línea de caché de L1 de 160 bits. Un campo de Pd4 de 4 bits único se usa tanto para instrucciones de 16 bits como para instrucciones de 32 bits. El campo de Pd4 de 4 bits puede contener hasta dieciséis características codificadas de la instrucción asociada con el campo de Pd4. Por ejemplo, la codificación puede indicar si la instrucción es una instrucción de carga o de almacenamiento, una instrucción aritmética o una instrucción compleja que requiere soporte de microcódigo. La codificación también puede indicar si los 16 bits de datos de instrucción son la primera mitad de una instrucción de 32 bits o una instrucción de 16 bits, si la instrucción es un tipo de instrucción de ramificación o similar. La información de Pd4 es útil en la alineación de instrucciones, la decodificación, y puede usarse para otros fines, tales como el manejo de ramificación, por ejemplo.
Las instrucciones 314 de la figura 3A pueden ubicarse en la línea de caché de L1 que empieza con la instrucción 306 MULT R5, R4, R3 de 16 bits y su campo de Pd4 asociado almacenado en los segmentos 352 y 354 de la línea de caché de L1, respectivamente. De forma similar, la instrucción 307 ADD R0, R5, R1 de 16 bits y su campo de Pd4 asociado se almacenan en los segmentos 356 y 358 de la línea de caché de L1, respectivamente. La instrucción 308 CBRANCH 0A de 32 bits se almacena de manera diferente puesto que sólo se requiere almacenar un conjunto de bits de predecodificación con la instrucción de 32 bits. Por motivos ilustrativos, el segmento 362 de la línea de caché de L1 de 16 bits contiene los 16 bits de orden alto de la instrucción 308 CBRANCH 0A. El campo 364 de Pd4 proporciona información de predecodificación para la instrucción CBRANCH de 32 bits mientras que el siguiente segmento 366 de la línea de caché de L1 de 16 bits contiene los 16 bits de orden bajo de la instrucción 308 CBRANCH 0A. El campo 368 de Pd4 no se requiere para la instrucción 308 CBRANCH 0A. Puesto que otros segmentos de programa pueden ocupar la línea de caché en diferentes momentos, el campo 368 de Pd4 puede usarse para soportar una instrucción de 16 bits que se almacena, por ejemplo, en el segmento 366 de la línea de caché de L1 de 16 bits. La siguiente instrucción en la línea de caché de L1 es una instrucción 309 SHIFT R0, 1 de 16 bits que se almacena en un campo de 20 bits formado por el segmento 370 de la línea de caché de L1 de 16 bits y el campo 372 de Pd4. Se sigue un ordenamiento similar para las demás instrucciones en el segmento 314 de programa para los campos de bits restantes en la línea 350 de caché.
La figura 4A ilustra un segmento 400 de programa ejemplar que puede almacenarse de manera adecuada en la jerarquía de memoria del complejo 200 de procesador, incluyendo la caché 226 de L2 y la Icaché 218 de L1. El segmento 400 de programa incluye instrucciones 402 de 32 bits operativas en el primer modo de operación del procesador 210 y todas las instrucciones se ubican mediante definición arquitectónica en límites alineados por palabras. Para ilustrar aspectos de la presente invención, se ilustran varias instrucciones ejemplares de 32 bits en la figura 4A. Indicadores 404 de bytes relativos al programa representan la ubicación de bytes en la línea de caché en la que empieza una instrucción e indican indirectamente el tamaño de la instrucción. Por ejemplo, la instrucción 406 LOAD R22, EE empieza en la posición 00 de byte y finaliza en la posición 03 de byte. Por tanto, la instrucción 406 LOAD R22, EE es una instrucción de 32 bits. De forma similar, las instrucciones 407 y 411 ADD, la 408 CBRANCH 10, la instrucción 409 SHIFT, la instrucción 410 LOAD R20, 8F y la instrucción 412 STORE tienen todas una longitud de 32 bits.
Una parte de una línea 420 de caché de instrucciones de L2 se representa en la figura 4B. La línea 420 tiene múltiples campos de 16 bits. Sólo se ilustra una parte de una línea de caché puesto que los tamaños de línea de caché pueden variar dependiendo de la aplicación, tecnología y diseño de jerarquía de memoria elegido. Por ejemplo, de manera adecuada puede usarse una línea de caché o bien de 256 bits o bien de 512 bits para una caché de L2. Las instrucciones 414 de la figura 4A se almacenan en la línea 420 de caché de L2 tal como se indica, almacenándose la instrucción 406 LOAD R22, EE en el segmento 422 de la línea de caché L2 que empieza en la ubicación 00. La instrucción 407 ADD R19, R22, R30 se almacena en el segmento 432 de la línea de caché de L2 que empieza en la ubicación 04. La instrucción 408 CBRANCH 10 se almacena en el segmento 436 de la línea de caché de L2 que empieza en la ubicación 08. Las demás instrucciones de 32 bits se almacenan de una manera similar en la caché de L2. Se indica que por motivos ilustrativos, el segmento 400 de programa se ha mostrado empezando al inicio de una línea de caché, pero se apreciará que tales segmentos de programa de instrucciones de 32 bits pueden ubicarse en otras secciones de una línea de caché en límites de palabra y pueden dividirse entre múltiples líneas de caché.
En la figura 4C se representa una línea 450 de Icaché de L1 ejemplar. La línea 450 tiene múltiples campos de 20 bits, estando formado cada campo de 20 bits por un campo de 16 bits con un campo de predecodificación de 4 bits (Pd4) asociado. Un campo de Pd4 de 4 bits único se usa tanto para instrucciones de 16 bits como para instrucciones de 32 bits. Por ejemplo, la caché de L1 puede almacenar 128 bits para instrucciones y requerir un espacio adicional para ocho campos de Pd4 dando como resultado una línea de caché de L1 de 160 bits. Las instrucciones 414 de la figura 4A pueden ubicarse en la línea de caché de L1 empezando con la instrucción 406 LOAD R22, EE de 32 bits almacenada en el segmento 452 de la línea de caché de L1 formado por el segmento 454 de 16 bits, su campo 456 de Pd4 asociado y el segmento 458 de 16 bits. Puesto que el campo 456 de Pd4 de 4 bits suministra la información de predecodificación para la instrucción LOAD R22, EE de 32 bits, el segundo campo 460 de Pd4 de 4 bits no es necesario y por consiguiente, mediante el uso de las técnicas de la presente invención, el campo 460 de Pd4 no se escribe ni se lee a partir del mismo. De forma similar, la instrucción 407 ADD R19, R22, R30 de 32 bits se almacena en los segmentos 464 y 468 de la línea de caché de L1 y el campo de Pd4 asociado de la instrucción 407 se almacena en el segmento 466. De forma similar, el campo 470 de Pd4 de 4 bits no es necesario, y usando las técnicas de la presente invención, el campo 470 de Pd4 no se escribe ni se lee a partir del mismo. La instrucción 408 CBRANCH 10 de 32 bits se almacena en los segmentos 474 y 478 de la línea de caché de L1 y el campo de Pd4 asociado de la instrucción 408 CBRANCH 10 se almacena en el segmento 476. El campo 480 de Pd4 tampoco es necesario. De nuevo, usando las técnicas de la presente invención, el campo 480 de Pd4 no se escribe ni se lee a partir del mismo. Puesto que otros segmentos de programa pueden ocupar la línea de caché en diferentes momentos, los campos 460, 470 y 480 de Pd4 pueden usarse para soportar instrucciones de 16 bits, por ejemplo, asociadas con los segmentos 458, 468, y 478 de la línea de caché de L1 de 16 bits, respectivamente. Se sigue un ordenamiento similar para la siguiente instrucción 409 de 32 bits en el segmento 414 de programa para los campos de bits restantes en la línea 450 de caché.
Un aspecto de la presente invención se refiere a escribir la información de predecodificación en una línea de caché de L1 según las técnicas de la presente invención para ahorrar energía al escribir en la Icaché de L1. Un segundo aspecto se dirige a habilitar selectivamente campos de bits de predecodificación para ahorrar energía cuando se lee a partir de la Icaché de L1. Estos dos aspectos se describen a continuación con más detalle.
La figura 5 ilustra fases 500 de encauzado de procesador que operan según la presente invención para ahorrar energía al escribir en la Icaché 218 de L1 y cuando se lee a partir de la Icaché 218 de L1. La Icaché 218 de L1 se divide en dos fases de encauzado de procesador. Una primera fase de encauzado se usa para la correspondencia de etiquetas de instrucción en una unidad 502 de memoria direccionable por contenido de instrucción (ICAM). Una segunda fase de encauzado se usa para acceder a instrucciones a partir de una memoria 503 de acceso aleatorio de instrucciones (IRAM) cuando se produce un acierto de correspondencia de etiqueta en la unidad 502 de ICAM. Después de la Icaché 218, las instrucciones entran en el procesador 210 en una fase 516 de alineación de instrucciones (IDA), seguido por una fase 554 de decodificación, y a continuación las fases 555 de ejecución.
La presente invención opera para ahorrar energía al escribir en la Icaché de L1. Por ejemplo, cuando se produce un fallo de la Icaché de L1, se escriben instrucciones desde la caché de L2 o la memoria de sistema y los campos de bits de predecodificación seleccionados en la Icaché de L1. Dependiendo de la información de estado de procesador, los campos de bits de predecodificación seleccionados que se escriben en la Icaché de L1 pueden ser menos que todos los campos de bits de predecodificación disponibles en la línea de Icaché, por lo que se ahorra energía. El ahorro de energía se consigue cuando se soluciona un fallo de la Icaché de L1 que puede producirse por muchas razones. Por ejemplo, al inicializar la Icaché de L1, la Icaché se trata como que tiene contenido no válido y habrá fallos a medida que se rellena la Icaché de L1. Además, cuando un programa se ramifica a una nueva sección de código, hay una mayor posibilidad de que se produzca un fallo de la Icaché en una extracción de Icaché de L1.
El procesador 210 inicia la extracción de instrucciones desde la Icaché de L1 proporcionando la dirección de la instrucción que va a extraerse (Fdirección) 504, y proporcionando información 506 de estado de modo de operación actual (COMS) que es representativa del modo de operación especificado por el programa en el momento de la extracción a la unidad 502 de ICAM. El procesador 210 puede proporcionar también otra información, tal como el PID, a la unidad 502 de ICAM. La información de COMS en el momento de la extracción puede incluir si el procesador está en el primer modo de operación que usa sólo instrucciones de 32 bits en límites alineados por palabras, el segundo modo de operación que usa tanto instrucciones de 16 bits como de 32 bits, u otros modos de procesador.
La unidad 502 de ICAM almacena una dirección 509 de instrucción (Idirección), el modo 510 de operación del procesador en el momento de la extracción (FOMS), y otra información de este tipo considerada necesaria para una operación de correspondencia, como etiquetas en líneas de ICAM, tales como la línea 512 de ICAM.
En una operación de extracción de instrucciones, el procesador suministra una Fdirección 504 y un COMS 506 de procesador que se comparan con las etiquetas de línea de ICAM almacenadas para determinar si alguna línea almacenada de ICAM contiene datos válidos que se correspondan con la Fdirección de procesador suministrada, y el COMS. Si no se encuentra ninguna línea de ICAM con una dirección de correspondencia válida, estado de modo de operación de procesador, o similar, se considera un fallo, y se da una indicación 514 de fallo al procesador 210. El procesador 210 continúa realizando una extracción de la caché 226 de L2 o de la memoria de sistema si la instrucción no se encuentra en la caché 226 de L2. Tras una latencia debida a sincronismo de acceso a memoria, se proporcionan instrucciones desde la memoria de sistema o salida 518 de caché de L2 a un predecodificador 520 y la IRAM 503. El procesador 210 también envía al predecodificador 520 información 522 de fallo relativa al direccionamiento de extracción de instrucciones, el estado de modo de operación de procesador en el momento de la extracción, y similar.
El predecodificador 520 realiza un seguimiento de la información de fallo para tener en cuenta latencias de memoria y hace que la información de fallo esté disponible. La información de fallo incluye, por ejemplo, la dirección de extracción de Icaché de L1 de procesador y el estado de procesador en el momento de la extracción. La dirección de extracción de la que se realiza un seguimiento se suministra en la salida 524, el estado de procesador sobre el que se realiza un seguimiento se suministra en la salida 526, y puede suministrarse otra información en la salida 528, tal como el PID, cuando las instrucciones se proporcionan desde la memoria de sistema o bus 518 de salida de caché de L2. Las instrucciones en el bus 518 de salida se decodifican parcialmente en el predecodificador 520 que genera salidas 530, 532, hasta 534 de Pd4 de 4 bits, para almacenar los campos de 16 bits apropiados en la IRAM 503. Sólo se generan los bits de Pd4 que contienen información válida en el predecodificador 520. Las instrucciones en el bus 518 de salida se dividen de manera apropiada, por ejemplo, según se ilustra para los primeros 16 bits 536, los segundos 16 bits 538, hasta los finales 16 bits 540, para su almacenamiento en la IRAM 503. Los campos 536, 538, hasta 540 de instrucción de 16 bits y sus salidas 530, 532, hasta 534 de Pd4 respectivas, se almacenan en una línea de IRAM, tal como la línea 542 de IRAM bajo el control de la lógica 544 de control de escritura. Para ahorrar energía, si el estado de procesador en el momento de la señal 526 de extracción es el estado que restringe las instrucciones para que sólo sean instrucciones de 32 bits en límites alineados por palabras, tales como el primer modo de operación ejemplar, entonces las instrucciones que deben almacenarse en la línea 542 de IRAM son todas instrucciones de 32 bits. Debiendo sólo almacenar instrucciones de 32 bits en la línea 542 de IRAM, sólo es necesario escribir la mitad de los bits de Pd4, tal como la salida 530 de Pd4. Las salidas de Pd4, tales como la salida 532 de Pd4, asociada con los 16 bits de la segunda mitad de la instrucción de 32 bits no se requieren, y no se escriben en la IRAM 503. En una línea de Icaché de L1 de 160 bits, pueden almacenarse cuatro instrucciones de 32 bits y 32 bits de información de predecodificación de los que sólo se requiere almacenar 16 bits cuando la línea de Icaché de L1 tiene sólo instrucciones de 32 bits, como es el caso para el primer modo de operación. Como promedio, esto representa un ahorro del 10% de energía cuando se escribe en la Icaché de L1, debido a que no se escriben 16 bits de los 160 bits de la línea de Icaché de L1.
Cuando se escriben instrucciones en la Icaché, también se escribe información de etiqueta en la ICAM 502. En la unidad 502 de ICAM, la dirección 524 de extracción y el estado de procesador en el momento de la señal 526 de extracción se almacenan en una línea de ICAM, tal como la línea 512 de ICAM. La línea 512 de ICAM está relacionada directamente con la línea 542 de IRAM de modo que en un acierto 550 de Icaché de L1 en la unidad 502 de ICAM la línea apropiada en la unidad 503 de IRAM puede emitirse en la salida 552 de IRAM bajo el control de la lógica 546 de control de lectura. La salida 552 de IRAM contiene la instrucción deseada y un número de instrucciones siguientes que se envían a la fase 516 de alineación de instrucciones (IDA).
Las instrucciones recibidas en la fase 516 de alineación de instrucciones se alinean y se ponen a punto para una fase 554 de decodificación y ejecución posterior. La fase 516 de alineación de instrucciones y la fase 554 de decodificación conocen el estado de la línea de caché puesto que, por ejemplo, los bits de Pd4 localizan el encauzado. Empezando desde la fase de encauzado para acceder a instrucciones de la unidad 503 de IRAM, los bits de Pd4 continúan a la fase 516 de alineación de instrucciones, y entonces a la fase 554 de decodificación. Si el estado de modo de operación del procesador 210 en la IDA 516 es el primer modo de operación para instrucciones sólo de 32 bits, entonces la lógica de alineación conoce que sólo el 1^{er}, 3^{er}, 5º y otros campos impares de bits de predecodificación (Pd4) son válidos. Si el estado de modo de operación del procesador 210 en la IDA 516 es el segundo modo de operación para instrucciones de 16 bits y de 32 bits, entonces se consideran todos los campos de Pd4 puesto que todos los campos de Pd4 pueden ser válidos. Un campo de Pd4 de comienzo se evalúa para determinar si el campo de 16 bits asociado es la primera mitad de una instrucción de 32 bits o de una instrucción de 16 bits. Si el campo de Pd4 indica que su campo de 16 bits asociado es la primera mitad de una instrucción de 32 bits, entonces el siguiente campo de Pd4 se ignora. Si el campo de Pd4 indica una instrucción de 16 bits, entonces el siguiente campo de Pd4 consecutivo se examina de forma similar. Este proceso continúa, en bucle a través de los campos de Pd4 restantes en la línea de caché extraída.
Como ejemplo, en un acierto de línea de caché de L1, la salida 552 de IRAM puede suministrar 64 bits de instrucciones, permitiendo hasta cuatro instrucciones de 16 bits, dos instrucciones de 16 bits y una única instrucción de 32 bits, o hasta dos instrucciones de 32 bits, y bits de predecodificación asociados, hasta la unidad 516 de alineación de instrucciones. Alternativamente, la salida 552 de IRAM puede suministrar la línea de caché de IRAM completa tal como la línea 542 de IRAM. Para ahorrar energía, si el estado 506 de procesador indica que el procesador está en el modo que usa sólo instrucciones de 32 bits en límites alineados por palabras, entonces las instrucciones que van a leerse de la línea 542 de IRAM se consideran todas instrucciones de 32 bits. Con sólo instrucciones de 32 bits almacenadas en la línea de IRAM, sólo es necesario leer la mitad de los bits de Pd4, tal como el campo 556 de Pd4. Los bits de Pd4, tales como el campo 558 de Pd4, asociados con los 16 bits de la segunda mitad de una instrucción de 32 bits no se requieren. En una línea de Icaché de L1 de 160 bits, pueden almacenarse cuatro instrucciones de 32 bits y 32 bits de información de predecodificación. Sin embargo, sólo se requiere leer 16 bits de información de predecodificación en este ejemplo. Como promedio, esto representa un ahorro del 10% de energía cuando se lee de la Icaché de L1, debido a que no se leen 16 bits de los 160 bits cuando se lee la línea de Icaché de L1.
Se han presentado dos ejemplos en las figuras 3A-3C y las figuras 4A-4C que ilustran ahorros de energía que variaban dependiendo del estado de modo de operación de procesador. El estado 510 de modo de operación de extracción (FOMS) de procesador, se almacena en cada etiqueta, tal como la etiqueta 512. El FOMS 510 almacenado puede indicar un primer estado 580 que representa el primer modo de operación o un segundo estado 582 que representa el segundo modo de operación, para escribir y leer los bits de predecodificación. En el ejemplo de la línea 350 de Icaché de L1 de la figura 3C, toda la línea 350 de Icaché de L1 está formada por instrucciones de 16 bits y 32 bits, que cuando se escriben en la IRAM 503 se asocia con una etiqueta de ICAM que tiene un FOMS que indica el segundo estado 582. En el ejemplo de la línea 450 de Icaché de L1 de la figura 4C, toda la línea 450 de Icaché de L1 está formada por instrucciones de sólo 32 bits, que cuando se escriben en la IRAM 503 se asocia con una etiqueta de ICAM que tiene un FOMS que indica el primer estado 580. En el segundo estado 582, todos los campos de Pd4 están habilitados tanto para escribir como para leer. En el primer estado 580, sólo los campos de Pd4 asociados con los 16 bits de la primera mitad de cada instrucción de 32 bits están habilitados y los campos de Pd4 asociados con los 16 bits de la segunda mitad de cada instrucción de 32 bits no están habilitados para escribir o leer las instrucciones 503 de IRAM.
La figura 6 es un diagrama 600 de flujo que ilustra etapas operacionales según la presente invención para ahorrar energía cuando se escribe y lee información de predecodificación de una línea de caché de instrucciones. En una primera etapa 610, un procesador extrae instrucciones que van a ejecutarse donde las instrucciones son de dos tipos. Una instrucción de un primer tipo está formateada en una primera longitud, tal como 16 bits, y una instrucción de un segundo tipo está formateada en una segunda longitud. La segunda longitud, tal como 32 bits, es mayor que la primera longitud. En la siguiente etapa 615, las instrucciones del primer tipo y del segundo tipo se decodifican parcialmente en un predecodificador. En la etapa 620, se genera información de predecodificación para las instrucciones parcialmente decodificadas. En la etapa 625, se determina si el estado de modo de operación de procesador indica que las instrucciones están restringidas al segundo tipo. Si el estado de modo de operación de procesador es tal que el procesador no restringe las instrucciones al segundo tipo, sigue la etapa 630 para habilitar todos los bits de predecodificación en una línea de caché de instrucciones para la escritura. Si el estado de modo de operación de procesador es tal que el procesador no restringe las instrucciones al segundo tipo, sigue la etapa 635 para habilitar selectivamente los bits de predecodificación asociados con instrucciones de segundo tipo en una línea de caché de instrucciones para la escritura. Tras escribir una línea de caché para una instrucción extraída, el sistema vuelve a la etapa 610.
La presente invención no se limita a las fases 500 de encauzado ilustradas y es aplicable además a cualquier procesador de encauzado que tenga instrucciones de longitud variable que almacene información de predecodificación en una caché de instrucciones. La presente invención puede adaptarse a ampliaciones a un conjunto de instrucciones de procesador de longitud variable si la ampliación soporta un único uso de conjunto de modo de instrucción de modo que la información de predecodificación puede controlarse selectivamente ahorrando de este modo energía de escritura y lectura. Por ejemplo, puede especificarse un tercer modo en el que sólo instrucciones de 64 bits estén operativas y todas las instrucciones de 64 bits estén ubicadas en límites de palabra doble, de modo que las instrucciones de 64 bits no se dividan a través de una línea de Icaché de L1. El procesador que usa tipos de instrucciones de 64 bits puede ser una ampliación del procesador 210 ejemplar descrito anteriormente. El procesador ampliado puede tener estados de modo de operación codificados para el primer estado 580 restringido a instrucciones de sólo 32 bits, el segundo estado 582 tanto para instrucciones de 16 bits como de 32 bits, y un tercer estado 584 restringido a instrucciones de sólo 64 bits. Una instrucción de 64 bits en una línea de Icaché, tal como la línea 542 de IRAM de la figura 5, se dividiría en cuatro campos de 20 bits, en los que cada campo de 20 bits tiene una sección de la instrucción de 64 bits y un campo de Pd4 asociado. Con instrucciones de 64 bits en una línea de Icaché de L1, los campos de Pd4 asociados con los primeros 16 bits de las instrucciones de 64 bits se usarían para toda la instrucción de 64 bits, y los siguientes tres campos de Pd4 no se requerirían. En la línea de Icaché de L1, el primer, quinto, noveno, y campos de Pd4 similares se usarían mientras que los otros, segundo, tercero, cuarto, sexto, séptimo, octavo, décimo, y campos de Pd4 similares, no se escribirían ni se leería a partir de los mismos. Con una línea de Icaché de L1 de 160 bits que contiene dos instrucciones de 64 bits y treinta y dos bits de Pd4, veinticuatro bits de los treinta y dos bits de Pd4 no se escribirían ni se leería a partir de los mismos. Como promedio, esto representa un 15% de ahorro de energía, cuando se accede a una línea de Icaché de L1 debido a que no se escriben ni se leen 24 bits de los 160 bits en la línea de Icaché de L1.
La presente invención tampoco se limita a longitudes de instrucciones que son potencia de dos. Por ejemplo, considérese una arquitectura alternativa que tiene instrucciones de 16 bits y de 24 bits y un modo que restringe las instrucciones al tipo de 24 bits. Tanto las instrucciones de 16 bits como las de 24 bits requieren cuatro bits de predecodificación. En este ejemplo, una línea de caché de instrucciones se divide en secciones de instrucciones de 8 bits y secciones de predecodificación de 2 bits. Una instrucción de 16 bits estaría constituida por 20 bits organizados como {8 bits, 2 bits de Pd2, 8 bits, 2 bits de Pd2}. Una instrucción de 24 bits estaría constituida por 30 bits organizados como {8-bits, 2-bits de Pd2, 8-bits, 2-bits de Pd2, 8-bits, 2- bits de Pd2}. Una línea de caché de 160 bits que almacena instrucciones de 16 bits podría contener ocho instrucciones de 16 bits organizadas como ocho secciones de 20 bits para un total de 160 bits con todos los bits utilizados completamente. Una línea de caché de 160 bits que almacena instrucciones de 24 bits podría contener cinco instrucciones de 24 bits organizadas como cinco secciones de 30 bits para un total de 150 bits, con cinco campos de 2 bits de Pd2 que no son válidos y 10 bits restantes en la línea que no se utilizan. Dependiendo la escritura o lectura de instrucciones de 24 bits del modo de operación de procesador, sólo se accede a bits en la línea de caché que contienen información válida y no se accede a 20 bits, ahorrando energía en comparación con escribir y leer todos los bits en la línea.
Aunque se ha dado a conocer la presente invención en un contexto preferido actualmente, se reconocerá que las presentes enseñanzas pueden adaptarse a una variedad de contextos acordes con la presente memoria descriptiva y las reivindicaciones siguientes.

Claims (20)

1. Un aparato para ahorrar energía en un entorno de procesador que soporta instrucciones de longitud variable, comprendiendo el aparato:
un predecodificador para decodificar parcialmente instrucciones de una primera longitud y una segunda longitud, siendo la segunda longitud mayor que la primera longitud, y generar bits de predecodificación para instrucciones tanto de la primera longitud como de la segunda longitud;
un indicador de estado de modo de operación de procesador, indicando el indicador de estado de modo de operación de procesador que el procesador está operando en un modo que restringe las instrucciones a instrucciones de la segunda longitud;
una caché de instrucciones que tiene una pluralidad de líneas de caché, almacenando una línea de caché instrucciones y bits de predecodificación; y
una lógica de control de escritura para escribir selectivamente bits de predecodificación en una línea de caché dependiendo del indicador de estado de modo de operación de procesador por lo que menos de todos los bits de predecodificación se escriben para instrucciones de la segunda longitud.
2. El aparato según la reivindicación 1, en el que la línea de caché de instrucciones está dividida en secciones para instrucciones y secciones para bits de predecodificación, y menos de todas las secciones de predecodificación se escriben para instrucciones de la segunda longitud.
3. El aparato según la reivindicación 2, en el que las secciones para instrucciones son campos de 16 bits y las secciones para bits de predecodificación son campos de cuatro bits.
4. El aparato según la reivindicación 2, en el que las secciones para instrucciones son campos de 8 bits y las secciones para bits de predecodificación son campos de dos bits.
5. El aparato según la reivindicación 1, en el que la pluralidad de líneas de caché se almacenan en una primera memoria y la caché de instrucciones comprende además:
una segunda memoria para almacenar etiquetas, estando asociada cada etiqueta con una línea de caché, conteniendo cada etiqueta una dirección de instrucción y un bit de estado de procesador, indicando el bit de estado de procesador el estado de modo de operación de procesador en el momento de la extracción.
6. El aparato según la reivindicación 1, en el que la primera longitud es 16 bits y la segunda longitud es 32 bits, y en el que cada instrucción de primera longitud tiene cuatro bits de predecodificación y cada instrucción de segunda longitud tiene grupos primero y segundo de cuatro bits de predecodificación, y el segundo grupo de bits de predecodificación para la instrucción de segunda longitud no está escrito.
7. El aparato según la reivindicación 1, en el que el campo de bit de predecodificación clasifica instrucciones en categorías de instrucciones funcional y de control.
8. El aparato según la reivindicación 2, en el que la lógica de control de escritura escribe una instrucción de segunda longitud en múltiples secciones de instrucciones de la línea de caché y escribe una sección de predecodificación asociada con una de las secciones de instrucciones que está ocupada por una parte de la instrucción de segunda longitud, no siendo válidas ni escribiéndose las demás secciones de predecodificación asociadas con secciones de instrucciones que están ocupadas por otras partes de la instrucción de segunda longitud.
9. El aparato según la reivindicación 1, en el que el indicador de estado de modo de operación de procesador indica además que el procesador está operando en un modo que restringe las instrucciones a instrucciones de una tercera longitud mayor que la segunda longitud, y el predecodificador opera además para decodificar instrucciones de la tercera longitud.
10. El aparato según la reivindicación 1, en el que la caché de instrucciones comprende además:
una memoria direccionable por contenido de instrucción (ICAM) que tiene una pluralidad de etiquetas de ICAM, estando asociada una etiqueta de ICAM con cada línea de caché, estando asignada la etiqueta de ICAM para almacenar una dirección de instrucción y un bit de estado de procesador, teniendo el bit de estado de procesador un valor del indicador de estado de modo de operación de procesador en el momento de la extracción; y
una lógica de control de escritura para escribir la dirección de instrucción y el bit de estado de procesador en la etiqueta de ICAM.
11. Un aparato para ahorrar energía cuando se lee una línea de caché de instrucciones, comprendiendo el aparato:
un procesador que realiza operaciones de extracción, extrayendo las operaciones de extracción instrucciones de una primera longitud y una segunda longitud, siendo la segunda longitud mayor que la primera longitud;
un indicador de estado de modo de operación de procesador, indicando el indicador de estado de modo de operación de procesador que el procesador está operando en un modo que restringe las instrucciones a instrucciones de la segunda longitud;
una caché de instrucciones que tiene una pluralidad de líneas de caché y etiquetas asociadas con cada línea de caché, almacenando una línea de caché instrucciones y bits de predecodificación, teniendo las etiquetas una parte de dirección de instrucción y una parte de estado de modo de operación de procesador; y
una lógica de control de lectura para leer campos de bits de predecodificación seleccionados en una línea de caché dependiendo de un acierto de correspondencia de etiqueta por lo que menos de todos los campos de bits de predecodificación disponibles en la línea de caché se leen para instrucciones de la segunda longitud.
12. El aparato según la reivindicación 11 que comprende además:
un comparador de aciertos para determinar el acierto de correspondencia de etiqueta, comparando el comparador de aciertos una dirección de instrucción de extracción de procesador y el indicador de estado de modo de operación de procesador con la etiqueta, y cuando la comparación es igual generando el acierto de correspondencia de etiqueta.
13. El aparato según la reivindicación 11, en el que los campos de bits de predecodificación seleccionados clasifican instrucciones de tal modo que las instrucciones leídas a partir de la línea de caché pueden alinearse y decodificarse.
14. El aparato según la reivindicación 11, en el que las operaciones de extracción de procesador incluyen suministrar una dirección de instrucción y el indicador de estado de modo de operación de procesador.
15. El aparato según la reivindicación 11, en el que la caché de instrucciones comprende:
una memoria direccionable por contenido de instrucción (ICAM) que tiene una pluralidad de etiquetas de ICAM, estando asociada una etiqueta de ICAM con cada línea de caché, teniendo la etiqueta de ICAM una parte de dirección de instrucción y una parte de indicador de estado de modo de operación de procesador; y
un comparador de etiquetas asociado con cada etiqueta.
16. Un procedimiento que comprende:
extraer instrucciones de una primera longitud o una segunda longitud, siendo la segunda longitud mayor que la primera longitud;
predecodificar instrucciones de la primera longitud y la segunda longitud en un predecodificador;
generar bits de predecodificación para instrucciones tanto de la primera longitud como de la segunda longitud; y
escribir bits de predecodificación seleccionados en una línea de caché de instrucciones dependiendo de un modo de operación que restringe las instrucciones a instrucciones de la segunda longitud, por lo que menos de todos los bits de predecodificación se escriben para instrucciones de la segunda longitud.
17. El procedimiento según la reivindicación 16, en el que la línea de caché de instrucciones se divide en campos de instrucciones y campos de bits de predecodificación, y en la etapa de escribir bits de predecodificación seleccionados, menos de todos los campos de predecodificación se escriben para instrucciones de la segunda longitud.
18. El procedimiento según la reivindicación 16, en el que en la etapa de escribir bits de predecodificación seleccionados en una línea de caché de instrucciones comprende además:
escribir uno de un número de campos de bits de predecodificación disponibles para su uso por una instrucción de la segunda longitud por lo que menos de todos los campos de bits de predecodificación se escriben para instrucciones de la segunda longitud.
19. El procedimiento según la reivindicación 16, que comprende además:
escribir una dirección de instrucción y un bit de estado de procesador en una etiqueta asociada con la línea de caché, indicando el bit de estado de procesador el estado de modo de operación de procesador en el momento de la extracción.
20. El procedimiento según la reivindicación 19, que comprende además:
comparar una dirección de instrucción de extracción de procesador y un indicador de modo de operación de procesador con la etiqueta asociada con la línea de caché de instrucciones;
generar un acierto de correspondencia de etiqueta si la comparación es igual; y
leer bits de predecodificación seleccionados en una línea de caché de instrucciones dependiendo de un acierto de correspondencia de etiqueta por lo que menos de todos los bits de predecodificación disponibles en la línea de caché se leen para instrucciones de la segunda longitud.
ES06736989T 2005-03-04 2006-03-03 Procedimiento y aparato de ahorro de energia para instrucciones de longitud variable. Active ES2341993T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/073,284 US7421568B2 (en) 2005-03-04 2005-03-04 Power saving methods and apparatus to selectively enable cache bits based on known processor state
US73284 2005-03-04

Publications (1)

Publication Number Publication Date
ES2341993T3 true ES2341993T3 (es) 2010-06-30

Family

ID=36695266

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06736989T Active ES2341993T3 (es) 2005-03-04 2006-03-03 Procedimiento y aparato de ahorro de energia para instrucciones de longitud variable.

Country Status (11)

Country Link
US (1) US7421568B2 (es)
EP (1) EP1904922B1 (es)
JP (1) JP4791495B2 (es)
KR (1) KR100942408B1 (es)
CN (1) CN101164040B (es)
AT (1) ATE467170T1 (es)
DE (1) DE602006014156D1 (es)
ES (1) ES2341993T3 (es)
IL (1) IL185594A0 (es)
MX (1) MX2007010773A (es)
WO (1) WO2006096568A2 (es)

Families Citing this family (11)

* 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
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
US7836285B2 (en) * 2007-08-08 2010-11-16 Analog Devices, Inc. Implementation of variable length instruction encoding using alias addressing
US8898437B2 (en) * 2007-11-02 2014-11-25 Qualcomm Incorporated Predecode repair cache for instructions that cross an instruction cache line
US10055227B2 (en) 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US10235232B2 (en) * 2014-02-10 2019-03-19 Via Alliance Semiconductor Co., Ltd Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction
US9588845B2 (en) 2014-02-10 2017-03-07 Via Alliance Semiconductor Co., Ltd. Processor that recovers from excessive approximate computing error
US9916251B2 (en) 2014-12-01 2018-03-13 Samsung Electronics Co., Ltd. Display driving apparatus and cache managing method thereof
US9727353B2 (en) * 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
CN115878187B (zh) * 2023-01-16 2023-05-02 北京微核芯科技有限公司 支持压缩指令的处理器指令处理装置和方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
JPH04257948A (ja) * 1991-02-13 1992-09-14 Fujitsu Ltd キャッシュメモリ、該キャッシュメモリを備えたシステムおよび該システムにおける命令デコード方式
US5499204A (en) * 1994-07-05 1996-03-12 Motorola, Inc. Memory cache with interlaced data and method of operation
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
WO1997013192A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6092182A (en) * 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information
US6275927B2 (en) * 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes
US6253309B1 (en) * 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
US6496923B1 (en) * 1999-12-17 2002-12-17 Intel Corporation Length decode to detect one-byte prefixes and branch
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
US7058827B2 (en) * 2001-07-18 2006-06-06 Intel Corporation Power saving circuit has an input line coupled to an external host and a keeper to hold the line in a weakly held state
US6901490B2 (en) * 2002-12-02 2005-05-31 Lsi Logic Corporation Read/modify/write registers

Also Published As

Publication number Publication date
EP1904922A2 (en) 2008-04-02
JP2008532187A (ja) 2008-08-14
CN101164040A (zh) 2008-04-16
ATE467170T1 (de) 2010-05-15
US7421568B2 (en) 2008-09-02
KR20070116058A (ko) 2007-12-06
KR100942408B1 (ko) 2010-02-17
EP1904922B1 (en) 2010-05-05
JP4791495B2 (ja) 2011-10-12
CN101164040B (zh) 2010-04-14
DE602006014156D1 (de) 2010-06-17
WO2006096568A2 (en) 2006-09-14
MX2007010773A (es) 2007-11-08
US20060200686A1 (en) 2006-09-07
IL185594A0 (en) 2008-01-06
WO2006096568A3 (en) 2007-01-11

Similar Documents

Publication Publication Date Title
ES2341993T3 (es) Procedimiento y aparato de ahorro de energia para instrucciones de longitud variable.
US8898437B2 (en) Predecode repair cache for instructions that cross an instruction cache line
EP2018609B1 (en) Pre-decoding variable length instructions
US7676659B2 (en) System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
EP2901288B1 (en) Methods and apparatus for managing page crossing instructions with different cacheability
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
CN103238134B (zh) 编码于分支指令中的双模态分支预测器
WO2022127441A1 (zh) 一种并行提取指令的方法与可读存储介质
KR101019393B1 (ko) 정확한 프리디코드를 보장하기 위한 방법 및 장치
CN110941450B (zh) 一种risc处理器的指令发射处理电路
JP2007272280A (ja) データ処理装置
US8572147B2 (en) Method for implementing a bit-reversed increment in a data processing system
CN112540937A (zh) 一种缓存、数据访问方法和指令处理装置
EP3989063A1 (en) High confidence multiple branch offset predictor
US20220129763A1 (en) High confidence multiple branch offset predictor
JPH11306019A (ja) 情報処理装置及びプロセッサ