MX2009001911A - Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita. - Google Patents
Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita.Info
- Publication number
- MX2009001911A MX2009001911A MX2009001911A MX2009001911A MX2009001911A MX 2009001911 A MX2009001911 A MX 2009001911A MX 2009001911 A MX2009001911 A MX 2009001911A MX 2009001911 A MX2009001911 A MX 2009001911A MX 2009001911 A MX2009001911 A MX 2009001911A
- Authority
- MX
- Mexico
- Prior art keywords
- instruction
- subroutine
- address
- return
- instruction address
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
Se describe un aparato para emular el comportamiento de pronóstico de ramificación de una llamada de subrutina explícita. El aparato incluye una primera entrada que se configura para recibir una dirección de instrucción y una segunda entrada. La segunda entrada se configura para recibir información de precodificación la cual describe la dirección de instrucción relacionada con una llamada de subrutina implícita a una subrutina. En respuesta a la información de precodificación, el aparato incluye también un sumador configurado para sumar una constante a la dirección de instrucción que define una dirección de retorno, ocasionando que la dirección de retorno sea almacenada en un recurso de subrutina explícita, facilitando así el pronóstico de ramificación subsecuente de una instrucción de llamada de retorno.
Description
"MÉTODOS Y APARATO PARA EMULAR EL COMPORTAMIENTO DE
PRONÓSTICO DE RAMIFICACIÓN DE UNA LLAMADA DE SUBRUTINA
EXPLÍCITA"
CAMPO DE LA INVENCIÓN La presente invención se refiere en términos generales al campo de procesadores entubados y en particular a un método para emular el comportamiento de pronóstico de ramificación de una llamada de subrutina explícita en una llamada de subrutina implícita con objeto de reducir la potencia e incrementar la utilización del procesador entubado.
ANTECEDENTES DE LA INVENCIÓN Los microprocesadores ejecutan tareas computacionales en una amplia variedad de aplicaciones . Casi siempre es deseable el rendimiento mejorado del procesador, para permitir una operación más rápida y/o una mayor funcionalidad mediante los cambios de software. En muchas aplicaciones incorporadas, tales como dispositivos electrónicos portátiles, conservar la a potencia también es una meta importante en el diseño e implementación del procesador. Muchos procesadores modernos emplean una arquitectura entubada, donde las instrucciones secuenciales
se sobreponen en la ejecución para incrementar el rendimiento general del procesador. Mantener una ejecución suave a través de la tubería es crítico para alcanzar un alto rendimiento. Los procesadores más modernos utilizan también una memoria jerárquica, con memorias asociadas rápidas e incorporadas en el chip que almacenan copias locales de los datos e instrucciones accedidos (as) recientemente . Los programas del mundo real incluyen instrucciones de ramificación indirecta, el comportamiento de ramificación actual que no es conocido hasta que la instrucción de hecho es evaluada profundamente en la tubería de ejecución. La mayoría de los procesadores modernos emplean alguna forma de pronóstico de ramificación, en la que el comportamiento de ramificación de las instrucciones de ramificación indirecta se pronostica inicialmente en la tubería, tal como durante una etapa de extracción o de decodificación. Utilizando una técnica de pronóstico de ramificación, el procesador extrae datos especulativamente el objetivo de la instrucción de ramificación indirecta y redirige la tubería para comenzar las instrucciones extraídas especulativamente. Cuando el objetivo de ramificación actual se determina en una etapa de tubería posterior tal como una etapa de tubería de ejecución, si la ramificación fue mal pronosticada, las
instrucciones extraídas de memoria especulativamente deben eliminarse de la tubería, y se extraen nuevas instrucciones de la dirección objetivo correcta. Preextraer las instrucciones en respuesta a un pronóstico erróneo de objetivo de ramificación impacta adversamente el rendimiento del procesador y el consumo de potencia. Un ejemplo de instrucciones de ramificación indirecta incluye instrucciones de ramificación utilizadas para el retorno de una subrutina. Por ejemplo, una llamada de retorno proveniente de una subrutina puede incluir una instrucción de ramificación cuya dirección de retorno es definida por el contenido de un registro. Una dirección de retorno define la siguiente instrucción a ser extraída después de que se completa la subrutina y comúnmente es la instrucción después de una instrucción de ramificación a partir de la cual se llamó originalmente a la subrutina. Muchas arquitecturas de alto rendimiento diseñan un registro de propósito general particular para su uso en retornos de subrutina, denominados comúnmente registro de enlace. Por conveniencia, una llamada de retorno también puede ser denominada instrucción de retorno de ramificación. Con objeto de que una tubería de procesador utilice el pronóstico de ramificación para una instrucción de retorno de ramificación, el software convencional
incluye una llamada de subrutina explícita tal como una instrucción de ramificación enlace a fin de registrar la dirección de retorno en el registro de enlace. Muchas implementaciones de alto rendimiento incluyen una estructura de pila de enlace en la etapa de decodificación para procesar la instrucción de ramificación y enlace. Los valores de retorno de enlace se introducen en esta pila, con objeto de permitir un pronóstico preciso de ramificación cuando se devuelven las subrutinas correspondientes. Las estructuras convencionales de pila de enlace contienen una lista de direcciones de retorno con objeto de soportar múltiples llamadas de subrutina que fluyen a través de una tubería y de soportar el anidamiento de múltiples niveles de llamadas de subrutina. Subsecuentemente, cuando está siendo decodificada la instrucción de retorno de ramificación dentro de la subrutina, la dirección de retorno es leída desde la estructura de pila de enlace a utilizarse en el pronóstico de ramificación para pronosticar la dirección objetivos si otro hardware de pronóstico de ramificación dicta que el procesador debe redirigir la tubería. Si el pronóstico indica que se redirija de la tubería, la tubería comienza a extraer instrucciones de la dirección de retorno que fue leída a partir de la pila de enlace. Sin embargo, existe un software de legado que no
incorpora instrucciones convencionales de ramificación y enlace cuando se hace un llamado a una subrutina y por lo tanto que es incapaz de utilizar la estructura de pila de enlace. A manera de ejemplo, refiérase a la siguiente tabla que contiene un segmento de código que se ejecutaría en un procesador compatible de ARM Ltd. :
0x00899900 MOV LR, PC 0x00899904 BR 0x00990000 0x00899908 INSTRA 0x00899912 INSTRB
0x00990000 LDA 0x00990004 ADD 0x00990008 BX LR Tabla 1 Segmento de código de legado. La combinación de las instrucciones MOV LR, PC y BR preparan al procesador para una ramificación subsecuente a una subrutina. En este ejemplo, la subrutina actual a la cual se hace la llamada comienza en la dirección 0x00990000. La instrucción MOV LR, PC indica que el contenido del contador de programa (PC - program counter) debe copiarse en un registro de enlace (LR - link register) . En algunas arquitecturas de instrucción tales como ARM, el contador de programa se define de hecho como la dirección de instrucción actual más 8 bytes. Con esta
definición, mover el contenido del el PC a LR da como resultado el almacenamiento de la dirección de retorno, la dirección 0x00899908, en el registro de enlace. La dirección de retorno se recupera del registro de enlace al final de la subrutina. Más específicamente, la dirección de retorno se recupera cuando se ejecuta BX LR, la instrucción de retorno de ramificación. En los procesadores modernos que incluyen tuberías profundas y utilizan técnicas de pronóstico de ramificación, pronosticar la dirección de retorno cuando se decodifica la instrucción de retorno de ramificación sin utilizar una pila de enlace es problemático por diversas razones. Una razón implica una convención de microarquitectura la cual no permite que un registro de propósito general sea accedido durante una etapa de decodificación de una tubería, imposibilitando consecuentemente el pronóstico de ramificación de la dirección de retorno que utiliza un valor "actual" del registro de enlace en el tiempo de pronóstico de ramificación. Incluso si puede realizarse una varianza a esta convención de microarquitectura, las tuberías profundas de hoy en día pueden ocasionar que los datos contenidos en un registro de enlace sean poco confiables para propósitos de pronóstico. Por ejemplo, en el tiempo que le toma a una instrucción de ramificación fluir desde
una etapa de tubería de decodificación donde se realiza un pronóstico para la dirección de retorno hasta una etapa de tubería de ejecución donde se realiza una resolución actual de la dirección de retorno, una instrucción de ramificación subsecuente puede ingresar a la tubería y sobrescribir el registro de enlace, ocasionando que la resolución actual de la dirección de retorno para la instrucción de retorno de ramificación inicial sea diferente que la dirección de retorno pronosticada. Esta incompatibilidad entre el valor pronosticado y la resolución actual es denominada pronóstico erróneo de objetivo de ramificación. Los pronósticos erróneos de ramificación dan como resultado tiempo perdido y potencia perdida, ambas cuales son el resultado de subejecutar especulativamente una trayectoria pronosticada incorrectamente. Dada la penetrabilidad de tal software de legado y el costo que implica reescribir el software de legado para utilizar las instrucciones convencionales de ramificación y enlace cuando se llama a una subrutina, existe la necesidad de microprocesadores desarrollados hoy en día que soporten el software de legado y que ese software de legado utilice una estructura de pila de enlace con objeto de pronosticar eficazmente la dirección de retorno cuando una instrucción de retorno de ramificación se encuentra en una etapa de tubería de decodificación.
BREVE DESCRIPCIÓN DE LA INVENCIÓN La presente descripción reconoce un patrón de instrucciones que definen una llamada de subrutina implícita como una subrutina y utiliza este reconocimiento para considerar métodos y aparatos para utilizar recursos de llamada de subrutina explícita que permitan el pronóstico de ramificación para pronosticar la dirección de retorno de la subrutina. De acuerdo con un aspecto, se describe un método para emular el comportamiento de pronóstico de ramificación de una subrutina explícita. El método incluye reconocer una dirección de instrucción que indica una llamada de subrutina implícita como una subrutina, calcular una dirección de retorno a partir de la dirección de instrucción, y almacenar la dirección de retorno en un recurso de subrutina explícita. Otro aspecto se refiere a un aparato. El aparato incluye una primera entrada que se configura para recibir una dirección de instrucción y una segunda entrada. La segunda entrada se configura para recibir información de precodificación la cual describe la dirección de instrucción asociada con una llamada de subrutina implícita a una subrutina. En respuesta a la información de precodificación, el aparato incluye también un sumador configurado para sumar una compensación a la dirección de
instrucción que define una dirección de retorno. El sumador se configura también para almacenar la dirección de retorno en un recurso de subrutina explícita que facilita el subsecuente pronóstico de ramificación de una instrucción de llamada de retorno. De acuerdo con aun otro aspecto, se describe otro aparato. El aparato comprende entradas primera y segunda configuradas para recibir concurrentemente las direcciones de instrucción primera y segunda e información de predecodificación asociada. El aparato comprende además un primer conjunto de sumador es configurados para sumar una compensación a las direcciones de instrucción primera y segunda a fin de definir resultados primero y segundo en respuesta a la información de predecodificación indicando que la dirección de instrucción primera o segunda se encuentra asociada con una llamada de subrutina implícita a una subrutina. El aparato comprende además un medio para seleccionar una dirección de retorno a partir de uno de los resultados primero o segundo. Se comprende que otras modalidades de la presente invención se volverán fácilmente aparentes para aquellos expertos en la materia a partir de la siguiente descripción detallada, donde se muestran y describen diversas modalidades de la invención a manera de ilustración. Como es evidente, la invención es capaz de otras y diferentes
modalidades y sus diversos detalles son capaces de modificación en diversos otros aspectos, sin aislarse todos de la presente invención. Los dibujos y la descripción detallada deben considerarse de naturaleza ilustrativa y no restrictiva.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La Figura 1 es un diagrama de bloques de un procesador . La Figura 2 es un diagrama de sincronización que sigue un flujo de instrucciones a través de la tubería ilustrada en la Figura 1. La Figura 3 es una porción a manera de ejemplo de una etapa individual de tubería de decodificación de instrucciones. La Figura 4 es un primer aspecto a manera de ejemplo de una porción de una etapa doble de tubería de decodificación de instrucciones. La Figura 5 es un segundo aspecto a manera de ejemplo de una porción de una etapa doble de tubería de decodificación de instrucciones de la Figura 1. La Figura 6 es un diagrama de flujo que ilustra un método para emular el comportamiento de pronóstico de ramificación de una subrutina explícita cuando se reconoce una llamada de subrutina implícita.
La Figura 7 es un diagrama de flujo que muestra detalles adicionales de los bloques 610, 620 y 630 en la Figura 6.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN La Figura 1 representa gráficamente un diagrama de bloques funcional de un procesador 100 en el cual pueden emplearse aspectos de la presente invención. El procesador 100 incluye una memoria asociada de instrucciones (I -caché - instruction cache) 110 para colocar en la memoria asociada instrucciones procesadas recientemente, una interfase de memoria 136 para acceder a la memoria 138 cuando una instrucción no se encuentra en la I -caché 110, un circuito de lógica de predecodificación 128 para realizar una decodificación limitada de una instrucción recuperada de la memoria 138 y un circuito de lógica de llenado de memoria temporal 130 para escribir datos de instrucciones que incluyen bits de precodificación en la I-caché 110 en respuesta a una falla en la I -caché 110. Los bits de precodificación se encuentran asociados con la instrucción recuperada de memoria y contienen atributos que describen la instrucción tal como una indicación del tipo de instrucción. La memoria 138 puede ubicarse en o fuera del procesador 100 y puede comprender un componente de capa 2 (L2 - layer 2) .
El procesador 100 incluye también una tubería de instrucciones 105 para procesar instrucciones y un circuito de pronóstico de ramificación 132 para pronosticar una dirección objetivo para una instrucción de ramificación indirecta y pronosticar si se redirige la tubería de instrucciones 105 para procesar la dirección objetiva. Si el circuito de pronóstico de ramificación 132 pronostica el redireccionamiento de la tubería de instrucciones 105, se dice que la instrucción de ramificación indirecta "ha sido pronosticada" . Si se "ha pronosticado tomado" la instrucción de ramificación indirecta, el circuito de pronóstico de ramificación 132 pronostica una dirección objetivo de la instrucción de ramificación indirecta y redirige la tubería de instrucciones 105 para comenzar a extraer las instrucciones comenzando en la dirección obj etivo . El procesador 100 procesa las instrucciones en una tubería de instrucciones 105 de acuerdo con el circuito de lógica de control 122. En algunas modalidades, la tubería 105 puede ser un diseño superescalar que tiene dos o más tuberías paralelas. La tubería 105 incluye diversas etapas de tubería: una etapa de consulta de memoria asociada de instrucciones (IC - instruction cache) 102, una etapa de alineación de datos de instrucción (IDA instruction data alignment) 104, una etapa de
decodificación (DCD - decode) 106, una etapa de cola de instrucciones (IQ - instruction queue) 108, una primera etapa de acceso de registro (RACC1 - register access) 112, una segunda etapa de acceso de registro (RACC2) 114, una etapa de estación de reserva (RSV) 116, y cuatro etapas de ejecución (X1-X4) 120A-120D. En algunas modalidades, una etapa de tubería puede procesar una sola instrucción a la vez. En otra modalidad, una etapa de tubería puede procesar concurrentemente dos o más instrucciones . Debe observarse que pueden sumarse o restarse etapas de tubería a la tubería 105 sin limitar el alcance de la presente descripción. El procesador 100 incluye también un archivo de Registro de Propósito General (GRP) 118 el cual incluye registros que, a través de la convención de microarquitectura, son accesibles por etapas de la tubería 112, 114 y 120A-120D. La etapa de consulta de memoria asociada de instrucciones (IC) 102 intenta recuperar una instrucción proveniente de la I-caché 110. La etapa de alineación de datos de instrucción 104 divide múltiples instrucciones e información precodificada asociada con múltiples instrucciones. Si una dirección de instrucción no se encuentra en la I-caché 110, la etapa de alineación de datos de instrucción 104 inicia una solicitud para recuperar la instrucción correspondiente proveniente de la
memoria 138. La etapa de decodificación 106 decodifica totalmente una instrucción. Además de las funciones convencionales, la etapa de decodificación 106 reconoce las instrucciones de llamada de subrutina explícita y escribe una dirección de retorno en una estructura de pila de enlace 134. Además, la etapa de decodificación 106 reconoce también una llamada de subrutina implícita proveniente del software de legado y almacena una dirección de retorno en una estructura de pila de enlace 134. La estructura de pila de enlace 134 puede ser un conjunto de registros administrados como una memoria temporal circular. La dirección de retorno es una dirección de una instrucción a la cual se va a redirigir la tubería 105 al término de la subrutina implícita. La estructura y operación de los aspectos pertinentes de la etapa de decodificación 106 se describirán más detalladamente en conexión con la descripción de las Figuras 3-5. La etapa de cola de instrucción 108 almacena en la memoria temporal una o más instrucciones con objeto de permitir la extracción especulativa para continuar durante las interrupciones de la tubería de ejecución. Las etapas de acceso de registro primera y segunda 112 y 114 recuperan uno o más operandos provenientes del registro de propósito general 118 como puede ser requerido por una instrucción. La etapa de estaciones de reserva 116 permite que una
instrucción espere los riesgos de lectura tras escritura y lo similar a resolverse. Las etapas de ejecución incluyen componentes conocidos tales como unidades lógicas aritméticas y lo similar. Las etapas de ejecución 120A-12 OD ejecutan instrucciones. Los resultados producidos a partir de las etapas de ejecución se escriben en el archivo de GRP 118. Durante las etapas de ejecución 120A-120D, la resolución de ramificación actual tiene lugar para determinar si es correcto el pronóstico de ramificación realizado durante la etapa de decodificación 106. Si la resolución de ramificación actual difiere del destino pronosticado, se dice que se ha pronosticado erróneamente una ramificación. Aquellos expertos en la materia reconocerán que son posibles numerosas variaciones del procesador 100. Por ejemplo, el procesador 100 puede incluir una memoria asociada de segundo nivel (L2) para la I-caché 110. Además, uno o más bloques funcionales representados gráficamente en el procesador 100 pueden omitirse de una modalidad particular. Otros bloques funcionales que pueden residir en el procesador 100, tales como una memoria asociada de páginas activas de traducción, memoria asociada de datos, y lo similar no son aplicables a una descripción de la presente invención y son omitidas en aras de la claridad.
La Figura 2 es un diagrama de sincronización 200 el cual sigue un flujo de instrucciones a través de la tuberia 105 ilustrada en la Figura 1. En particular, el flujo de instrucciones trazadas en el diagrama de sincronización 200 es el segmento de código de legado como se ilustra en la Tabla 1. Para propósitos de la presente descripción, el término "llamada de subrutina implícita" se refiere a una combinación de dos o más instrucciones cuya función combinada es establecer registros que se preparan para una llamada de subrutina y llamar a una subrutina. Por ejemplo, haciendo referencia a la Tabla 1, las dos instrucciones en la combinación de MOV LR, PC/BR definen una llamada de subrutina implícita. En este caso, la instrucción MOV LR, PC define el inicio de la llamada de subrutina implícita y la instrucción BR define el final de la llamada de subrutina implícita. Las primeras once hileras del diagrama de sincronización 200 corresponden a las etapas de la tubería 105. La columnas 210A-210W corresponden a ciclos de sincronización secuenciales . Para propósitos de explicación, cada etapa de tubería procesa una instrucción por ciclo. Sin embargo, el experto en la materia debe reconocer que las enseñanzas de la presente descripción aplican tanto a etapas de tubería de múltiples ciclos como a etapas de tubería que son capaces de procesar múltiples
instrucciones por ciclo. La hilera 211 del diagrama de sincronización 200 corresponde al contenido de una estructura de pila de enlace tal como una estructura de pila de enlace 134 como resultado de los aspectos de la etapa de tubería de decodificación ilustrada en las Figuras 3 y 4. La hilera 213 del diagrama de sincronización 200 corresponde al contenido de la estructura de pila de enlace como resultado de los aspectos de la etapa de tubería de decodificación ilustrada en la Figura 5. La hilera 213 se describirá en conexión con la descripción de la Figura 5. La hilera 212 del diagrama de sincronización 200 corresponde al contenido de un registro de enlace. En general, las instrucciones ingresan a la etapa de IC 102 y se propagan a la siguiente etapa en el siguiente ciclo. En 215, la instrucción MOV LR, PC se encuentra en la etapa de decodificación 106. En ese momento, la etapa de decodificación 106 reconoce la instrucción MOV LR, PC y almacena la dirección de retorno, MOV+8 en la estructura de pila de enlace. Para propósitos de nomenclatura, MOV+8 se refiere a sumar una compensación de ocho a la dirección de la instrucción MOV. El valor ocho incluye los cuatro bytes de la instrucción MOV y los cuatro bytes de la instrucción BR subsecuente de manera tal que la estructura de pila de enlace contiene la dirección
de la instrucción secuencial después de la instrucción BR. Como se describirá adicionalmente en conexión con la descripción de las Figuras 3-4, una etapa de decodificación de acuerdo con las presentes enseñanzas de la descripción suma la compensación de ocho a la dirección de la instrucción MOV. Como se describirá detalladamente en conexión con la descripción de la Figura 5, una etapa de decodificación alternativa de acuerdo con las presentes enseñanzas de la descripción suma una compensación de cuatro a la dirección de la instrucción BR. Debe observarse que tantas notaciones MOV+8 y BR+4 se refieren a la dirección 0x00899908, la dirección de retorno. En la referencia 220, la estructura de pila de enlace muestra que su contenido es MOV+8. Cuando la instrucción BR es procesada por la etapa de decodificación 106, el objetivo de la instrucción de ramificación, el inicio de la subrutina, es pronosticado y extraído por la tubería en el siguiente ciclo. En la referencia 219, la instrucción LDA, el inicio de la subrutina, es procesada por la etapa de IC 102. Dado que la tubería 105 se ha redirigido para extraer la instrucción de LDA debido al pronóstico de la instrucción de ramificación, las instrucciones en las direcciones BR+4 y BR+8 son eliminadas de la tubería. Las instrucciones que siguen secuencialmente la instrucción LDA son extraídas después hacia la tubería 105.
En la referencia 225, la instrucción de retorno de ramificación, BX, es procesada por la etapa de decodificación 106. La etapa de decodificación 106 invoca al circuito de pronóstico de ramificación 132 con el contenido de la estructura de pila de enlace para pronosticar la dirección de retorno. En otra modalidad, el circuito de pronóstico de ramificación 132 lee la estructura de pila de enlace. En cualquier caso, el circuito de pronóstico de ramificación utiliza la estructura de pila de enlace para pronosticar la dirección de retorno y, en la referencia 230, la tubería es redirigida para extraer la instrucción en la dirección de retorno 0x00899908. Una vez utilizada, la entrada de datos MOV+8 en la hilera 211 columna 210J es eliminada de la estructura de pila de enlace. En procesadores convencionales que no hacen uso de una pila de enlace para llamadas de subrutina implícita, el valor del mismo registro de enlace (LR - link register) podría no haber sido actualizado a tiempo para utilizarse en el ciclo 2101, cuando la instrucción de retorno de subrutina se encuentra en la etapa de DCD e intenta realizar un pronóstico. Como se observa en el diagrama, el LR no se actualiza sino hasta el ciclo 210M, el cual se encuentra cuatro ciclos después de lo que se habría requerido para utilizar este valor en la etapa de DCD. El
ciclo 210M en la referencia 235 se encuentra después del ciclo 2101 donde se realizan el pronóstico y extracción de la dirección de retorno de ramificación. Consecuentemente, en los procesadores convencionales, el pronóstico de ramificación en la instrucción de retorno de ramificación almacenado en un registro de enlace puede ser poco confiable . Las Figuras 3-5 ilustran aspectos alternativos de la invención relacionados con una etapa de tubería de decodificación tal como una etapa de tubería de decodificación 106. Estos aspectos alternativos abordan trayectorias para escribir en una estructura de estado de enlace tanto para una llamada de subrutina implícita como una instrucción convencional de ramificación y enlace. Debe observarse que otras trayectorias se encuentran incluidas en la etapa de tubería de decodificación, por ejemplo, las trayectorias de otras instrucciones en el conjunto de instrucciones, pero sin relación con este aspecto de la presente invención y consecuentemente no se representan gráficamente en los dibujos. La Figura 3 es una porción a manera de ejemplo 300 de una etapa individual de tubería de decodificación de instrucciones. La porción 300 de la etapa individual de tubería de decodificación de instrucciones puede colocarse convenientemente en la etapa de decodificación 106. La
porción 300 de la etapa individual de tubería de decodificación de instrucciones incluye una dirección de instrucción 310 y los bits de precodificación 315 asociados con la dirección de instrucción 310. El tamaño de la dirección de instrucción 310 tiene 32 bits de largo y el tamaño de los bits de precodificación 315 tiene 8 bits de largo. Debe observarse que los aspectos de la presente invención consideran diversos tamaños de la dirección de instrucción o bits de precodificación y sus posiciones de bit respectivas. La dirección de instrucción 310 y los bits de precodificación 315 se introducen a la porción 300 de la etapa de tubería de decodificación y pueden residir en los mismos o diferentes registros de datos. Los bits de precodificación 315 incluyen información relacionada con la instrucción correspondiente a la dirección de instrucción 310 y se determinan por el circuito de lógica de precodificación 128. Los bits de precodificación 315 indican si la instrucción correspondiente es el inicio de una llamada de subrutina implícita tal como la instrucción MOV L , PC en la combinación de MOV/BR listada en la Tabla 1. Los bits de precodificación 315 pueden precodificarse de diversas maneras incluyendo la codificación de un bit particular o una combinación de los bits de precodificación 315 a fin de indicar que la dirección de instrucción 310 se refiere ya
sea al inicio de la llamada de subrutina implícita o a una instrucción convencional de ramificación y enlace. En otra modalidad, el código de operación (opcode) de la instrucción puede utilizarse para distinguir la llamada de subrutina implícita y la instrucción convencional de ramificación y enlace proveniente de otras instrucciones en el conjunto de instrucciones. La porción 300 de la etapa de tubería de decodificación incluye además una combinación 330 de sumador/multiplexor . La combinación 330 de sumador/muítiplexor incluye sumadores 325A-325B, el multiplexor 320 y una estructura de pila de enlace 134. El sumador 325A suma la constante cuatro a la dirección de instrucción en caso de que la dirección de instrucción 310 se refiere a una instrucción convencional de ramificación y enlace. El sumador 325B suma la constante ocho a la dirección de instrucción en caso de que la dirección de instrucción 310 se refiera al inicio de una llamada de subrutina implícita. A través del multiplexor 320, los bits de precodificación 315 seleccionan cuál dirección o dirección de retorno incrementada se escribe en la estructura de pila de enlace 134, si la hay. Haciendo referencia a la Tabla 1, se ilustra la compensación de ocho para reflejar que la ubicación de la dirección de retorno es de ocho bytes después de la instrucción MOV. En una
instrucción convencional de ramificación y enlace, la dirección de retorno es de cuatro bytes después de la instrucción de ramificación y enlace. Aunque no se observa, pueden sumarse otros sumadores o pueden reemplazar a los sumadores ilustrados en las Figuras 3-5 dependiendo del número de instrucciones que componen una llamada de subrutina implícita y el tamaño de cada una de las instrucciones que componen la llamada de subrutina implícita . La Figura 4 es un primer aspecto a manera de ejemplo de una porción 400 de una etapa doble de tubería de decodificación de instrucciones. La porción 400 de la etapa doble de tubería de decodificación de instrucciones puede colocarse convenientemente en la etapa de decodificación 106. La porción 400 de la etapa doble de tubería de decodificación de instrucciones incluye dos direcciones de instrucciones 410A-410b recibidas concurrentemente con sus bits de precodificación respectivos 407A-B y dos conjuntos de combinaciones de sumador/multiplexor 425A-425B. Las direcciones de instrucción 410A-410B y los bits de precodificación 407A-B se ingresan a la porción 400 de la etapa de tubería de decodificación y pueden residir en los mismos o diferentes registros de datos. El inicio de la llamada de subrutina implícita
tal como la dirección para la instrucción MOV L , PC puede encontrarse en cualquier dirección de instrucción 410A o 410B. Convencionalmente, la dirección de instrucción 410A o DCD0 es la primera en el orden del programa y la dirección de instrucción 410B o DCDi es la segunda en el orden del programa. Cuando la dirección para la instrucción que define el inicio de la subrutina implícita tal como la dirección para la instrucción MOV LR, PC se encuentra ubicada en la dirección de instrucción 410A, la salida del sumador/multiplexor 425A es válida y esta dirección incrementada se escribe en la estructura de pila de enlace 134. Si la dirección para el inicio de la subrutina implícita es la dirección de instrucción 410B, la salida del sumador/multiplexor 425B es válida y esta dirección incrementada o dirección de retorno se escribe en la estructura de pila de enlace 134. Cuando se reconoce una subrutina implícita, los aspectos de la etapa de tubería de decodificación ilustrada en las Figuras 3 y 4 se escriben en la estructura de pila de enlace 134 en la instrucción de definición que definen la subrutina implícita . La Figura 5 es un segundo aspecto a manera de ejemplo de una porción 500 de una etapa doble de tubería de decodificación de instrucciones. La porción 500 de la etapa doble de tubería de decodificación de instrucciones
puede colocarse convenientemente en la etapa de decodificación 106. La porción 500 de la etapa doble de tubería de decodificación de instrucciones escribe la dirección de retorno en la estructura de pila de enlace 134 en respuesta a la recepción de la última dirección de instrucción que define la llamada de subrutina implícita. Haciendo referencia de nueva cuenta a la Figura 2, por ejemplo, la estructura de estado de enlace 213 se escribe en la referencia 221 por la porción 500 de la etapa doble de tubería de decodificación de instrucciones, un ciclo después de decodificar la instrucción de ramificación de la combinación de MOV/BR. Consecuentemente, como se ilustra, el valor de BR+4 se escribe en la estructura de estado de enlace 213 en la referencia 221. La porción 500 de la etapa doble de tubería de decodificación de instrucciones incluye dos direcciones de instrucción 510A-510B recibidas concurrentemente con sus bits de precodificación 507A-B respectivos. Las direcciones de instrucción 510A-510B (DCD0 y DCDi) y sus respectivos bits de precodificación 507A-B (PDCD0 y PDCDi) se toman como entrada para la porción 500 de la etapa de tubería de decodificación y pueden residir en los mismos o diferentes registros de datos. La porción 500 de la etapa de tubería de decodificación incluye un circuito de lógica de
selección/habilitación 510, circuito de lógica de establecimiento de banderas 515, sumadores 525A y 525B y el multiplexor 520. El circuito de lógica de establecimiento de banderas 515 establece y restablece una bandera 530. La bandera 530 rastrea si el inicio de la llamada de subrutina implícita ha sido reconocido en la dirección 510A o la dirección 510B. La bandera 530 no es utilizada si ambas dirección que indican el inicio y final de la llamada de subrutina implícita son recibidas concurrentemente. En caso de que a subrutina implícita definida por la combinación MOV LR, PC/BR, el circuito de lógica de establecimiento de banderas 515 que utiliza los bits PDCD0 y PDCDi establece la bandera 530 cuando la dirección de instrucción MOV LR, PC reside en el intervalo de decodificación válida final, que puede ser DCD0 (cuando DCDi es inválido) o DCDi . El circuito de lógica de selección/habilitación 510 determina si DCD0 o DCDi contiene la dirección del final de la llamada de subrutina implícita. Si el final de la llamada de subrutina implícita se encuentra en DCD0 , el sumador 525A le suma cuatro a la dirección en DCD0 con objeto de calcular la dirección de retorno para la llamada de subrutina implícita. Si el final de la llamada de subrutina implícita se encuentra en DCD1 ; el sumador 525B le suma cuatro a la dirección en DCDi con objeto de
calcular la dirección de retorno. El circuito de lógica de selección/habilitación 510 genera una señal de selección 540 si el final de la llamada de subrutina implícita se encuentra presente en DCD0 o DCDi y, si es así, selecciona cuál dirección de instrucción incrementada 535A o 535B va a escribirse en la estructura de pila de enlace 134. Para asegurarse de que la estructura de pila de enlace 134 no se escribe innecesariamente, el circuito de lógica de selección/habilitación 510 recibe como entrada señales pronosticadas 550A y 550B correspondientes a las direcciones de instrucción DCD0 y DCDi, respectivamente, provenientes del circuito de pronóstico de ramificación 132. Si una llamada de subrutina implícita es reconocida en el registro de datos 505 y se ha tomado el pronóstico de la subrutina implícita por parte del circuito de pronóstico de ramificación 132, el circuito de lógica de selección/habilitación 510 genera una señal de habilitación de escritura 545 en la estructura de pila de enlace 134 a fin de habilitarla para que sea escrita. Si una llamada de subrutina implícita es reconocida pero no se toma su pronóstico, el circuito de lógica de selección/habilitación 510 no genera una habilitación de escritura a la estructura de pila de enlace 134. De esta manera, las llamadas de subrutina implícita cuyos pronósticos no se toman no dan como resultado la escritura en la estructura de pila de
enlace 134. Debe observarse que aunque la presente descripción describe el reconocimiento de una llamada de subrutina implícita y la escritura en la estructura de pila de enlace en la tubería de etapa de decodificación, el experto en la materia reconocerá que estos aspectos de la invención pueden llevarse a la práctica en cualquier etapa de una tubería de procesador donde se han determinado los bits de precodificación y se ha realizado un pronóstico de ramificación . La Figura 6 es un diagrama de flujo que ilustra un método 600 para emular el comportamiento de pronóstico de ramificación de una subrutina explícita cuando se reconoce una llamada de subrutina implícita. En el bloque 610, una dirección de instrucción que indica una llamada de subrutina implícita a una subrutina es reconocida en una tubería de procesador. En el bloque 620, se calcula una dirección de retorno a partir de la dirección de instrucción. Si una llamada de subrutina implícita comprende dos o más instrucciones, la cantidad de compensación sumada a la dirección de instrucción es dependiente de diversos factores que incluyen si se realiza el reconocimiento al inicio o al final de la llamada de subrutina implícita y el tamaño de las instrucciones que componen la llamada de subrutina implícita. En el bloque 630, la dirección de retorno se almacena en un recurso de
subrutina explícita tal como la estructura de pila de enlace 134. Como se describe en las Figuras 3-5, los bloques 610, 620 y 630 pueden tener lugar durante la etapa de decodificación 106. En el bloque 640, la tubería de procesador procesa las instrucciones asociadas con la subrutina llamada. Por ejemplo, haciendo referencia a la Tabla 1, en el bloque 640 se procesarían las direcciones de instrucción 0x00990000-0x00990008. En el bloque 650, la dirección de retorno se lee a partir del recurso de subrutina explícita en respuesta a una instrucción de ramificación que indica una llamada de retorno proveniente de la subrutina tal como 0x00990008 BX en la Tabla 1. Además en el bloque 650, la tubería de procesador se redirecciona a la dirección de retorno leída desde el recurso de subrutina explícita. Aunque la instrucción de llamada de retorno se encuentra en la etapa de decodificación 106, la dirección de retorno se recupera a partir de la estructura de pila de enlace 134 de la misma manera que a cuando una dirección de retorno es recuperada en respuesta a una llamada de retorno para una subrutina llamada por una instrucción convencional de ramificación y enlace. Una vez que la dirección de retorno es recuperada y que la instrucción de llamada de retorno es tomada, la dirección de retorno es extraída por la tubería del procesador, permitiendo ventajosamente una extracción
inicial de la dirección de retorno como se ilustra en la Figura 2. La Figura 7 es un diagrama de flujo 700 que muestra detalladamente los bloques 610, 620 y 630 en la Figura 6. En el bloque 710, se lee un bit de predecodificación asociado con la dirección de instrucción. En el bloque 720, el diagrama de flujo 700 determina si el bit de predecodificación indica una llamada de subrutina implícita. Si es así, el bloque 730 suma una compensación a la dirección de instrucción. En el bloque 740, en la dirección incrementada se almacena en una estructura de pila de enlace. En el bloque 750, el proceso de tubería continúa procesando las instrucciones de manera convencional. Si los bits de predecodificación no indican una llamada de subrutina implícita, el bloque 720 procede al bloque 750 donde la tubería de procesador continúa procesando las instrucciones de manera convencional . Los diversos bloques lógicos ilustrativos, módulos, circuitos, elementos y/o componentes descritos en conexión con las modalidades descritas en la presente pueden implementarse o ejecutarse con un procesador de propósito general, un procesador de señales digitales (DSP digital signal processor) , un circuito integrado de aplicación específica (ASIC - application specific integrated circuit) , un arreglo de compuertas de campo
programable (FPGA - field programmable gate array) , u otro dispositivo de lógica programable, lógica discreta de compuertas o transistores, componentes discretos de hardware, o cualquier combinación de los mismos diseñada para ejecutar las funciones descritas en la presente. Un procesador de propósito general puede ser un microprocesador, pero alternativamente, el procesador puede ser cualquier procesador, controlador, microcontrolador, o máquina de estados convencional. También puede implementarse un procesador como una combinación de componentes de cálculo, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores en conjunto con un núcleo de DSP, o cualquier otra de tales configuraciones. Los métodos descritos en conexión con las modalidades descritas en la presente pueden incorporarse directamente en hardware, en un módulo de software ejecutado por un procesador, o en una combinación de las dos. Un módulo de software puede residir en memoria RAM, memoria flash, memoria ROM, memoria EPROM, memoria EEPROM, registros, disco duro, un disco extraíble, un CD-ROM, o cualquier otra forma de medio de almacenamiento conocida en la materia. Un medio de almacenamiento puede acoplarse al procesador de manera tal que el procesador pueda leer la
información del medio de almacenamiento, y escribir la información en el mismo. Alternativamente, el medio de almacenamiento puede ser integral al procesador. Aunque la invención se describe el contexto de modalidades, se reconocerá que una amplia variedad de implementaciones puede emplearse por los expertos en la materia consistente con la descripción anterior y las reivindicaciones que proceden a continuación.
Claims (20)
- NOVEDAD DE LA INVENCIÓN Habiéndose descrito la invención como antecedente, se reclama como propiedad lo contenido en las siguientes reivindicaciones
- REIVINDICACIONES 1. Un método para emular el comportamiento de pronóstico de ramificación de una llamada de subrutina explícita, caracterizado porque comprende: reconocer una dirección de instrucción que indica una llamada de subrutina implícita a una subrutina; calcular una dirección de retorno a partir de la dirección de instrucción; y almacenar la dirección de retorno en un recurso de subrutina explícita. 2. El método según la reivindicación 1, caracterizado además porque comprende: leer la dirección de retorno a partir del recurso de subrutina explícita en respuesta a una instrucción de ramificación que indica una llamada de retorno proveniente de la subrutina.
- 3. El método según la reivindicación 2, caracterizado además porque comprende: redirigir una tubería de procesador a la dirección de retorno.
- 4. El método según la reivindicación 1, caracterizado porque reconocer la dirección de instrucción comprende además : predecodificar la instrucción asociada con la dirección de instrucción para definir la información de predecodificación; y determinar si la información de predecodificación indica la dirección de instrucción como el inicio de la llamada de subrutina implícita.
- 5. El método según la reivindicación 1, caracterizado porque calcular la dirección de retorno a partir de la dirección de instrucción comprende: sumar una compensación constante a la dirección de instrucción.
- 6. El método según la reivindicación 1, caracterizado porque el recurso de subrutina explícita es una estructura de pila de enlace.
- 7. Un aparato caracterizado porque comprende: una primera entrada configurada para recibir una dirección de instrucción; una segunda entrada configurada para recibir información de predecodificación, describiendo la información de predecodificación la dirección de instrucción por estar asociada a una llamada de subrutina implícita a una subrutina; y un sumador configurado para sumar una compensación a la dirección de instrucción que define una dirección de retorno en respuesta a la información de predecodificación, ocasionando que la dirección de retorno se almacene en un recurso de subrutina explícita.
- 8. El aparato según la reivindicación 7, caracterizado porque el recurso de subrutina explícita se lee en respuesta a una instrucción de ramificación que indica una llamada de retorno proveniente de la subrutina.
- 9. El aparato según la reivindicación 7, caracterizado además porque la información de predecodificación describe la dirección de instrucción como el inicio de la llamada de subrutina implícita.
- 10. El aparato según la reivindicación 7, caracterizado además porque la información de predecodificación describe la dirección de instrucción al final de la llamada de subrutina implícita.
- 11. El aparato según la reivindicación 7, caracterizado porque el recurso de subrutina explícita es una estructura de pila de enlace.
- 12. El aparato según la reivindicación 7, caracterizado además porque comprende.- una tercera entrada para recibir concurrentemente una segunda dirección de instrucción con la dirección de instrucción; y lógica configurada para determinar si se enruta la dirección de instrucción o la segunda dirección de instrucción al recurso de subrutina explícita.
- 13. El aparato según la reivindicación 7, caracterizado además porque comprende: un segundo sumador configurado para sumar una segunda compensación constante a la dirección de instrucción en respuesta a una llamada de subrutina explícita .
- 14. Un aparato caracterizado porque comprende: entradas primera y segunda configuradas para recibir concurrentemente recibir direcciones de instrucción primera y segunda e información de predecodificacion asociada; un primer conjunto de sumadores configurados para sumar una compensación a las direcciones de instrucción primera y segunda para definir resultados primeros y segundos en respuesta a la información de predecodificación indicando que la dirección de instrucción primera o segunda se encuentra asociada con una llamada de subrutina implícita a una subrutina; y un medio para seleccionar una dirección de retorno a partir de uno de los resultados primero o segundo .
- 15. El aparato según la reivindicación 14, caracterizado además porque comprende: un medio para escribir la dirección de retorno en un recurso de subrutina explícita.
- 16. El aparato según la reivindicación 14, caracterizado además porque comprende: un circuito de lógica de establecimiento de banderas configurado para rastrear si las direcciones de instrucción primera o segunda se encuentran asociadas con la llamada de subrutina implícita.
- 17. El aparato según la reivindicación 14, caracterizado además porque comprende: un segundo conjunto de sumadores para sumar una segunda compensación a las direcciones de instrucción primera y segunda en respuesta a la información de predecodificación que indica que la dirección de instrucción primera o segunda se encuentra asociada a una llamada de subrutina explícita a una subrutina.
- 18. El aparato según la reivindicación 17, caracterizado porque la constante es ocho y la segunda constante es cuatro.
- 19. El aparato según la reivindicación 14, caracterizado porque la información de predecodificación se codifica como una combinación de bits para indicar si la dirección de instrucción primera o segunda se relaciona con una llamada de subrutina implícita a una subrutina.
- 20. El aparato según la reivindicación 16, caracterizado porque el medio para seleccionar la dirección de retorno proveniente de uno de los resultados primero o segundo comprende además : circuito de lógica de selección/habilitación configurado para habilitar el recurso de subrutina explícita para su escritura.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/468,835 US7478228B2 (en) | 2006-08-31 | 2006-08-31 | Apparatus for generating return address predictions for implicit and explicit subroutine calls |
| PCT/US2007/077340 WO2008028103A2 (en) | 2006-08-31 | 2007-08-31 | Methods and apparatus for emulating the branch prediction behavior of an explicit subroutine call |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| MX2009001911A true MX2009001911A (es) | 2009-03-09 |
Family
ID=39136931
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| MX2009001911A MX2009001911A (es) | 2006-08-31 | 2007-08-31 | Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita. |
Country Status (11)
| Country | Link |
|---|---|
| US (2) | US7478228B2 (es) |
| EP (2) | EP2064622A2 (es) |
| JP (2) | JP5425627B2 (es) |
| KR (1) | KR101099203B1 (es) |
| CN (1) | CN101506773B (es) |
| BR (1) | BRPI0716010A2 (es) |
| CA (1) | CA2659384C (es) |
| MX (1) | MX2009001911A (es) |
| RU (1) | RU2417407C2 (es) |
| TW (1) | TWI348642B (es) |
| WO (1) | WO2008028103A2 (es) |
Families Citing this family (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7478228B2 (en) | 2006-08-31 | 2009-01-13 | Qualcomm Incorporated | Apparatus for generating return address predictions for implicit and explicit subroutine calls |
| US7444501B2 (en) * | 2006-11-28 | 2008-10-28 | Qualcomm Incorporated | Methods and apparatus for recognizing a subroutine call |
| US8341383B2 (en) * | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
| CN101819523B (zh) * | 2009-03-04 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器以及相关指令执行的方法 |
| WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
| WO2012103209A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor |
| WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
| WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
| WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
| US20130024674A1 (en) | 2011-07-20 | 2013-01-24 | International Business Machines Corporation | Return address optimisation for a dynamic code translator |
| EP2798470A4 (en) * | 2011-12-29 | 2015-07-15 | Intel Corp | PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION |
| WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
| US9411590B2 (en) * | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
| WO2014151691A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | Method and apparatus for guest return address stack emulation supporting speculation |
| US9619230B2 (en) * | 2013-06-28 | 2017-04-11 | International Business Machines Corporation | Predictive fetching and decoding for selected instructions |
| US10642903B2 (en) | 2014-09-29 | 2020-05-05 | International Business Machines Corporation | Tagging and querying system objects |
| WO2017078050A1 (ja) * | 2015-11-04 | 2017-05-11 | リンテック株式会社 | 硬化性樹脂フィルム及び第1保護膜形成用シート |
| US11099849B2 (en) * | 2016-09-01 | 2021-08-24 | Oracle International Corporation | Method for reducing fetch cycles for return-type instructions |
| CN114528025B (zh) * | 2022-02-25 | 2022-11-15 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4604695A (en) * | 1983-09-30 | 1986-08-05 | Honeywell Information Systems Inc. | Nibble and word addressable memory arrangement |
| US4777587A (en) * | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses |
| KR940008392A (ko) | 1992-09-19 | 1994-04-29 | 이헌조 | 밀착형 이미지 센서 |
| US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
| JP3504355B2 (ja) * | 1994-12-06 | 2004-03-08 | 松下電器産業株式会社 | プロセッサ |
| US5964868A (en) * | 1996-05-15 | 1999-10-12 | Intel Corporation | Method and apparatus for implementing a speculative return stack buffer |
| US6157999A (en) * | 1997-06-03 | 2000-12-05 | Motorola Inc. | Data processing system having a synchronizing link stack and method thereof |
| US5964869A (en) * | 1997-06-19 | 1999-10-12 | Sun Microsystems, Inc. | Instruction fetch mechanism with simultaneous prediction of control-flow instructions |
| US6094716A (en) | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
| US6889320B1 (en) * | 1999-12-30 | 2005-05-03 | Texas Instruments Incorporated | Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter |
| US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
| US6823447B2 (en) * | 2001-03-01 | 2004-11-23 | International Business Machines Corporation | Software hint to improve the branch target prediction accuracy |
| US7404067B2 (en) * | 2003-09-08 | 2008-07-22 | Intel Corporation | Method and apparatus for efficient utilization for prescient instruction prefetch |
| US7065694B2 (en) * | 2003-09-25 | 2006-06-20 | International Business Machines Corporation | Adaptive runtime repairable entry register file |
| US20050154859A1 (en) * | 2004-01-14 | 2005-07-14 | Arm Limited | Branch prediction in a data processing apparatus |
| JP2006040173A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | 分岐予測装置および分岐予測方法 |
| US7836290B2 (en) * | 2005-11-09 | 2010-11-16 | Oracle America, Inc. | Return address stack recovery in a speculative execution computing apparatus |
| US7478228B2 (en) | 2006-08-31 | 2009-01-13 | Qualcomm Incorporated | Apparatus for generating return address predictions for implicit and explicit subroutine calls |
-
2006
- 2006-08-31 US US11/468,835 patent/US7478228B2/en active Active
-
2007
- 2007-08-30 TW TW096132259A patent/TWI348642B/zh active
- 2007-08-31 KR KR1020097006645A patent/KR101099203B1/ko not_active Expired - Fee Related
- 2007-08-31 RU RU2009111591/08A patent/RU2417407C2/ru not_active IP Right Cessation
- 2007-08-31 CA CA2659384A patent/CA2659384C/en not_active Expired - Fee Related
- 2007-08-31 BR BRPI0716010-0A patent/BRPI0716010A2/pt not_active Application Discontinuation
- 2007-08-31 WO PCT/US2007/077340 patent/WO2008028103A2/en not_active Ceased
- 2007-08-31 CN CN2007800317700A patent/CN101506773B/zh not_active Expired - Fee Related
- 2007-08-31 JP JP2009526923A patent/JP5425627B2/ja not_active Expired - Fee Related
- 2007-08-31 EP EP07814603A patent/EP2064622A2/en not_active Withdrawn
- 2007-08-31 EP EP12150447A patent/EP2482183A1/en not_active Withdrawn
- 2007-08-31 MX MX2009001911A patent/MX2009001911A/es active IP Right Grant
-
2008
- 2008-07-31 US US12/183,086 patent/US8943300B2/en active Active
-
2013
- 2013-08-02 JP JP2013161892A patent/JP5722396B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2014002769A (ja) | 2014-01-09 |
| EP2064622A2 (en) | 2009-06-03 |
| CN101506773A (zh) | 2009-08-12 |
| EP2482183A1 (en) | 2012-08-01 |
| RU2009111591A (ru) | 2010-10-10 |
| JP2010501963A (ja) | 2010-01-21 |
| CA2659384C (en) | 2012-07-31 |
| TW200820072A (en) | 2008-05-01 |
| TWI348642B (en) | 2011-09-11 |
| CN101506773B (zh) | 2012-04-25 |
| KR101099203B1 (ko) | 2011-12-27 |
| BRPI0716010A2 (pt) | 2013-07-30 |
| US8943300B2 (en) | 2015-01-27 |
| RU2417407C2 (ru) | 2011-04-27 |
| US20080288753A1 (en) | 2008-11-20 |
| US20080059780A1 (en) | 2008-03-06 |
| US7478228B2 (en) | 2009-01-13 |
| KR20090061644A (ko) | 2009-06-16 |
| WO2008028103A3 (en) | 2008-05-29 |
| JP5722396B2 (ja) | 2015-05-20 |
| JP5425627B2 (ja) | 2014-02-26 |
| WO2008028103A2 (en) | 2008-03-06 |
| CA2659384A1 (en) | 2008-03-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| MX2009001911A (es) | Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita. | |
| TWI396131B (zh) | 排程一指令在一處理器中之執行方法及使用該方法之積體電路裝置 | |
| JP5137948B2 (ja) | ローカル及びグローバル分岐予測情報の格納 | |
| CN101477455B (zh) | 无预测延时的分支预测控制方法 | |
| US8578141B2 (en) | Loop predictor and method for instruction fetching using a loop predictor | |
| JP2009540411A (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
| MX2007010048A (es) | Sistema y metodo para corregir un mal pronostico de ramificacion. | |
| WO2008067277A2 (en) | Methods and apparatus for recognizing a subroutine call | |
| JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
| JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
| TW200818007A (en) | Associate cached branch information with the last granularity of branch instruction variable length instruction set | |
| CN107870780B (zh) | 数据处理装置和方法 | |
| US20050027921A1 (en) | Information processing apparatus capable of prefetching instructions | |
| JP2008530712A (ja) | 復帰スタックを管理する方法および装置 | |
| CN113434200B (zh) | 微处理器和分支处理方法 | |
| CN117170741A (zh) | 一种基于risc-v的防止流水线冲刷系统 | |
| US20160335089A1 (en) | Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine | |
| CN113535237B (zh) | 微处理器和分支处理方法 | |
| US6948055B1 (en) | Accuracy of multiple branch prediction schemes | |
| CN113227970B (zh) | 指令紧密耦合存储器和指令缓存访问预测 | |
| CN119396472A (zh) | 分支预测方法、分支预测器及电子设备 | |
| KR20080000944A (ko) | 파이프라인 구조를 갖는 프로세서 및 그 제어방법 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FG | Grant or registration |