MX2009000728A - Mecanismo de almacenamiento eficaz de direcciones de retorno de interrupcion. - Google Patents

Mecanismo de almacenamiento eficaz de direcciones de retorno de interrupcion.

Info

Publication number
MX2009000728A
MX2009000728A MX2009000728A MX2009000728A MX2009000728A MX 2009000728 A MX2009000728 A MX 2009000728A MX 2009000728 A MX2009000728 A MX 2009000728A MX 2009000728 A MX2009000728 A MX 2009000728A MX 2009000728 A MX2009000728 A MX 2009000728A
Authority
MX
Mexico
Prior art keywords
instruction
pseudo
processor
segmented
stage
Prior art date
Application number
MX2009000728A
Other languages
English (en)
Inventor
Thomas Andrew Sartorius
Rodney Wayne Smith
Michael Scott Mcilvaine
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of MX2009000728A publication Critical patent/MX2009000728A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)

Abstract

Un sistema, aparato y método para procesar eficazmente el procesamiento de interrupciones utilizando registros de propósito general en un procesador segmentado. De acuerdo con la presente descripción, un archivo de registro puede actualizarse para almacenar eficazmente una dirección de retorno de interrupción. Cuando una solicitud de interrupción es recibida por el procesador del sistema, o cuando la solicitud es emitida en la ejecución de un programa, se genera una pseudo-instrucción. Esta pseudo-instrucción se desplaza descendientemente por el segmentado al igual que las demás instrucciones y actualiza el archivo de registro ocasionando que el archivo de registro se escriba con la dirección de retorno de la última instrucción para la cual no se ha completado el procesamiento.

Description

"MECANISMO DE ALMACENAMIENTO EFICAZ DE DIRECCIONES DE RETORNO DE INTERRUPCIÓ CAMPO DE LA INVENCIÓN La presente descripción se refiere en términos generales a procesadores y, más particularmente, a un procesador segmentado que actualiza un archivo de registro para almacenar eficazmente una dirección de retorno de interrupción .
ANTECEDENTES DE LA INVENCIÓN Alcanzar velocidades de procesamiento de cómputo más altas ha sido el objetivo de los fabricantes y usuarios igualmente. Con objeto de impulsar la meta de un procesamiento de alta velocidad, algunos procesadores de cómputo emplean una técnica conocida como procesamiento segmentado. Los procesadores que incorporan una arquitectura segmentada permiten que existan múltiples instrucciones en diversas etapas de ejecución simultáneamente. En una arquitectura segmentada, un solo ciclo de instrucciones puede incluir cinco etapas. Estas etapas pueden describirse secuencialmente de la siguiente manera: (1) extracción de datos; (2) decodificación; (3) acceso al archivo de registro; (4) ejecución; y (5) escritura en el archivo de registro. En el procesamiento segmentado, el procesamiento en cada una de las etapas se realiza en paralelo para lograr un procesamiento de alta velocidad. El segmentado puede utilizarse para incrementar la velocidad del procesador al incrementar el número de instrucciones completadas durante un periodo de tiempo. En tales procesadores, es posible que coexistan cinco instrucciones en el segmentado en diversas etapas del procesamiento en un solo tiempo. Por ejemplo, en los primeros ciclos de reloj del procesamiento, las instrucciones uno a cinco pueden encontrarse en diversas etapas de la ejecución simultáneamente. El término del procesamiento de cinco etapas para una sola instrucción no necesita completarse antes de que dé inicio el procesamiento de una instrucción subsecuente. Por ejemplo, en un punto, es posible que la instrucción cinco se esté extrayendo de memoria, la instrucción cuatro se esté decodificando , la instrucción tres está accediendo al archivo de registro, la instrucción dos se está ejecutando y la instrucción uno se está escribiendo en el archivo de registro. Generalmente, en el procesamiento segmentado cada instrucción es extraída secuencialmente y procesada secuencialmente en las etapas subsecuentes . Un procesador segmentado también debe controlar las interrupciones. Tales interrupciones pueden ocurrir cuando una señal de solicitud de interrupción es emitida desde un dispositivo periférico o en la ejecución de un programa de cómputo, entre otras ocasiones. Cuando ocurre la solicitud de interrupción, se interrumpe el programa que es ejecutado. Entonces, el procesador almacena temporalmente el estado del programa que es ejecutado y ocurre otro procesamiento en respuesta a la solicitud de interrupción. Una vez que se completa el procesamiento de interrupción, el procesador continúa la ejecución del programa desde el punto en el que se interrumpió el programa . Consecuentemente, un elemento fundamental que debe almacenarse es la dirección de instrucción en la que la ejecución del programa debe continuar una vez que se completa el procesamiento de interrupción. Esta dirección es referida como la "dirección de retorno" . En algunas arquitecturas, un requisito es que esta elección de retorno se almacene en un registro particular que es parte del archivo de registro de propósito general. Un problema por ser solucionado es cómo proporcionar el mecanismo de interrupción con acceso al archivo de registro, con objeto de almacenar la dirección de retorno. Se han realizado algunos intentos por almacenar la dirección de retorno utilizando puertos dedicados al archivo de registro. Sin embargo, típicamente la administración del archivo de registro del procesador es un aspecto muy complejo y crítico en cuanto al rendimiento del diseño, particularmente en procesadores superescalares , de alta frecuencia y muy segmentados. Un puerto adicional de archivos de registro puede ser costoso en términos de sincronización, área y energía, reduciendo así la efectividad del procesador. Además, muchos diseños de alto rendimiento ejecutan procesamiento de instrucciones fuera de servicio lo cual puede demandar una administración aún más compleja de los archivos de registros, incluyendo el renombre de registros, las estaciones de reserva y las memorias asociadas determinó para ordenar las instrucciones. Todas estas complejidades hacen difícil suministrar un puerto extra para el archivo de registro, o incluso proporcionar trayectorias de control especiales para compartir un puerto de archivo de registro existente para almacenar las direcciones de retorno de interrupción.
BREVE DESCRIPCIÓN DE LA INVENCIÓN La presente descripción proporciona un sistema, aparato y método para almacenar eficazmente una dirección de retorno de interrupción en un archivo de propósito general. La presente descripción proporciona un mecanismo para almacenar el valor del contador del programa o la dirección de retorno de interrupción para una instrucción que aún no haya salido del segmentado cuando ocurrió la interrupción. La instrucción del programa que haya progresado más en el segmentado cuando ocurrió la interrupción, pero que fue procesada también de manera incompleta, algunas veces es referir en la presente como la instrucción más avanzada en el segmentado. De acuerdo con una modalidad de la presente descripción, se proporciona un sistema de procesamiento de datos para almacenar eficazmente las direcciones de retorno de interrupción en el archivo de registro de propósito General de un procesador segmentado. El sistema comprende lógica de control configurada para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para una instrucción más avanzada en el segmento sea escrita en un archivo de registro de propósito general; y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y se desplaza descendentemente en el segmentado de un procesador segmentado de manera substancialmente similar a las demás instrucciones. De acuerdo con otra modalidad de la presente descripción, se proporciona un aparato para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general. El aparato comprende un procesador segmentado que tiene un generador de pseudo-instrucciones configurado para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para una instrucción más avanzada en el segmentado sea escrita en un archivo de registro de propósito general, y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente por el segmentado de un procesador segmentado de manera substancialmente similar a las demás instrucciones. De acuerdo con aún otra modalidad de la presente descripción, se proporciona un método para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general. El método comprende en respuesta a una solicitud de interrupción, generar una pseudo-instrucción configurada para que una dirección de retorno para una instrucción más avanzada en el segmentado sea escrita en un archivo de registro de propósito general en un procesador segmentado, y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente en el segmentado de un procesador segmentado de manera substancialmente similar a las demás instrucciones.
De acuerdo con aún otra modalidad de la presente descripción, se proporciona un aparato para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general. El aparato incluye un procesador segmentado de etapa múltiple configurado para implementar el procesamiento de interrupciones, donde las etapas incluyen al menos una etapa configurada para recibir instrucciones y al menos una etapa configurada para reescribir los resultados en un archivo de registro de propósito general, configurándose adicionalmente el procesador para procesar los datos de instrucción provenientes de un programa. El aparato incluye además lógica de control configurada para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para una instrucción más avanzada en el segmentado sea escrita en un archivo de registro de propósito general, y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente por el segmentado de un procesador segmentado de manera substancialmente similar a las demás instrucciones. Este aparato incluye un multiplexor configurado para recibir tanto la pseudo-instrucción proveniente de la lógica de control como los datos de instrucción provenientes de un programa, configurándose adicionalmente el multiplexor para seleccionar al menos uno de entre los datos de pseudo-instrucción e instrucción e ingresar a los datos seleccionados de pseudo-instrucción o instrucción en al menos una etapa segmentada configurada para recibir instrucciones. En este aparato, después de que ha ocurrido el procesamiento de interrupción, el procesador se configura adicionalmente para continuar con el procesamiento de los datos de instrucción en la dirección de retorno de interrupción para la instrucción más avanzada que fue escrita en el archivo de registro de propósito general . Debe comprenderse 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, en la que se muestran y describen únicamente diversas modalidades de la invención a manera de ilustración. Como será evidente, la invención es capaz de lograr otras y diferentes modalidades y sus diversos detalles son susceptibles de modificación en diversos otros aspectos, sin aislarse del espíritu y alcance de la presente invención. Convenientemente, los dibujos y descripción detallada de la invención deben considerarse de naturaleza ilustrativa y no restrictiva.
Estos, así como también otros objetos, características y beneficios se volverán ahora claros a partir de una revisión de la siguiente descripción detallada de las modalidades ilustrativas y de los dibujos anexos .
BREVE DESCRIPCIÓN DE LOS DIBUJOS La Figura 1 es una ilustración de diagrama de bloques del control de procesador segmentado y el modelo de datos de acuerdo con una modalidad de la presente descripción . La Figura 2 es una tabla que ilustra el proceso de interrupción en diversas etapas del segmentado con relación a un ciclo de reloj de acuerdo con una modalidad de la presente descripción. La Figura 3 es un diagrama de flujo que ilustra un método para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general de acuerdo con una modalidad de la presente descripción.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN La presente descripción proporciona un sistema, aparato y método para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general. El archivo de registro de propósito general se encuentra bajo el control de un segmentado. De acuerdo con la presente descripción, un archivo de registro de propósito general puede actualizarse para almacenar eficazmente una dirección de retorno o valor de contador de programa para la instrucción más avanzada en el segmentado al momento de la solicitud de interrupción. Cuando una señal de solicitud de interrupción es recibida por el procesador del sistema, el procesador genera una pseudo-instrucción . Esta pseudo-instrucción es procesada de manera muy similar a las demás instrucciones. Se desplaza descendentemente por el segmentado y actualiza el archivo de registro ocasionando que el archivo de registro sea escrito con la dirección de retorno. Debido a que esta pseudo-instrucción se desplaza descendentemente por el segmentado como las instrucciones regulares, actualiza no únicamente el archivo de registro, sino los recursos relacionados. No se requiere asociar ningún hardware con el archivo de registros para guardar la dirección de retorno de interrupción. El sistema, aparato y método descritos en la presente pueden implementarse con los registros de propósito general y convenientemente, no existe necesidad de puertos dedicados en el archivo de registro . Haciendo referencia ahora a la Figura 1, se ilustra un modelo de procesador de datos segmentado 100 de acuerdo con una modalidad de la presente descripción. En la presente se muestra un modelo de segmentado de cinco etapas para su ilustración. Las cinco etapas pueden describirse de la siguiente manera: (1) extracción de datos; (2) decodificación; (3) acceso al archivo de registro; (4) ejecución; y (5) escritura en el archivo de registro. Varias etapas del modelo de procesador 100 pueden incluir registros de propósito general. Por supuesto, estos registros de propósito general pueden contener la posición de memoria donde se almacenan los datos contrariamente a los datos actuales. No hay-presencia ni se requieren registros especiales. El sistema, aparato y método descritos en la presente se describen en términos de un procesador segmentado de cinco etapas. Sin embargo, debe comprenderse que el sistema, aparato y método descritos en la presente pueden implementarse en procesadores segmentados que tienen menos o más etapas. Además, los métodos y sistemas descritos en la presente pueden no requerir la partición de un procesador en un conjunto particular de etapas segmentadas . Por ejemplo, una etapa descrita puede dividirse adicionalmente en dos o más etapas. Esta división puede realizarse con objeto de abordar temas de sincronización o de facilitar velocidades más altas de reloj de procesador. Alternativamente, pueden combinarse dos o más etapas en una sola etapa. El procesador puede incluir simplemente una primera etapa que acepte instrucciones y una segunda etapa que escriba los resultados en un archivo de registro. El segmentado descrito proporciona únicamente un ejemplo de cómo el procesamiento puede dividirse en un procesador adecuado para la presente descripción. Como se observa en la Figura 1, el módulo de control de procesador 110 controla la operación de segmentado general y el flujo de procesamiento de interrupción. La etapa de extracción 120 puede ser responsable de la extracción de instrucciones. Las instrucciones regulares pueden extraerse desde diversas posiciones, incluyendo desde una memoria asociada incorporada, o una memoria externa coordinada por una unidad de administración de memoria. El generador de pseudo-instrucciones 117 puede ser una lógica de control que puede residir en el módulo de control 110. El generador de pseudo-instrucciones 117 se configura para generar una pseudo-instrucción que se configura para escribir una dirección de retorno en un archivo de registro de propósito general. Las pseudo-instrucciones pueden distinguirse generalmente a partir de las instrucciones regulares en la manera en que son ingresadas al segmentado. Además, la pseudo-instrucción generalmente realiza una función especial que se encuentra diseñada para escribir una dirección de retorno de interrupción en el archivo de registro. Sin embargo, una vez que la pseudo-instrucción se ha ingresado en la tubería, se desplaza descendentemente por la tubería como lo hacen las instrucciones regulares que han sido extraídas desde la memoria o de otra manera. La utilidad de la pseudo-instrucción se describirá detalladamente a continuación. El multiplexor 115 puede colocarse entre la etapa de extracción 120 y la etapa de decodificación 130. El multiplexor 115 puede determinar la entrada de la etapa de decodificación 130 ya sea como la instrucción en la etapa de extracción 120 o una pseudo-instrucción que se haya generado por el generador de pseudo-instrucciones 117 en el módulo de control 110. El multiplexor 115 puede seleccionar la entrada deseada de la etapa de decodificación mediante la línea de selección 119. La etapa de decodificación 130 es capaz de recibir y decodificar una instrucción extraída durante la etapa de extracción 120 o alternativamente, recibir y decodificar una pseudo-instrucción que se ha generado en el generador de pseudo-instrucciones 117 del módulo de control 110. Suponiendo que no se requiere ningún procesamiento de interrupción, cada instrucción llegaría generalmente en la etapa de decodificación 130 proveniente de la etapa de extracción 120 en orden secuencial, por ejemplo, en el orden determinado por el programa de cómputo que es ej ecutado . Se requerirá la decodificación de los datos para determinar la dirección de la siguiente instrucción. La dirección puede estar, por ejemplo, en la memoria asociada como la siguiente instrucción secuencial. En algunos casos, puede requerirse extraer la dirección de la memoria o de la memoria asociada, por ejemplo, si la instrucción actual es una derivación. La etapa de decodificación es la primera etapa de la tubería en la que pueden decodificarse las instrucciones para determinar dónde termina la instrucción . Pueden presentarse problemas cuando se da servicio a las interrupciones. Estos problemas pueden estar asociados con la escritura de la dirección de retorno en el archivo de registro. La presente descripción saca ventaja del hecho de que un archivo de registro se encuentra bajo el control directo del segmentado. La arquitectura del procesador de la presente descripción utiliza el archivo de registro para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general.
Cuando una señal de solicitud de interrupción 118 es recibida en el módulo de control 110, el módulo de control 110 determina si ejecuta una interrupción del servicio mediante la línea de selección 119. Si se determina que debe ejecutarse una interrupción de servicio, el generador de pseudo-instrucciones 117 genera una sobretrayectoria de pseudo-instrucciones 113, ingresando al multiplexor 115. Se llama "pseudo-instrucción" porque actualmente no existe en el programa que es ejecutado. La pseudo-instrucción se configura para escribir una dirección de retorno de interrupción en un archivo de registro de propósito general. Esta dirección de retorno de interrupción se ha ingresado al generador de pseudo-instrucciones 117 del módulo de control 110. El generador de pseudo-instrucciones 117 incluye lógica de control que tiene, por ejemplo, diversas compuertas y transistores. Esta pseudo-instrucción se encuentra diseñada para escribir una dirección de retorno en el archivo de registro. La dirección de retorno o valor de contador de programa identificaría la posición de la instrucción más avanzada que habría completado a continuación el procesamiento si no hubiese ocurrido la interrupción. Convenientemente, la dirección de retorno sería para esa instrucción más avanzada. Como conocerán aquellos expertos en la materia, la micro-arquitectura de procesador incluye lógica de control en el módulo de control 110 para rastrear las direcciones de instrucción en el segmentado. Esa lógica de control es capaz de determinar una dirección de retorno de instrucción proveniente de las direcciones rastreadas en el segmentado. Después, la dirección de retorno de instrucción se le suministra al multiplexor 115 que alimenta la etapa de decodificación de segmentado 130 como parte de la pseudo-instrucción. Debe comprenderse que el multiplexor 115 y/o el generador de pseudo-instrucciones 117 pueden insertarse en el segmentado en una etapa diferente a la entrada de la etapa de decodificación 130. Sin embargo, también debe comprenderse que puede ser deseable insertar la pseudo-instrucción en una etapa suficientemente temprana en el segmentado de manera tal que las funciones de administración de archivo de registro pueden utilizar el control ordinario o por default y las trayectorias de datos. Las funciones de administración de archivo de registro pueden incluir detección de riesgos, decodificación de direcciones y controles de lectura/escritura. De esta manera, pueden evitarse las funciones especiales así como también puertos dedicados en el archivo de registro. Después de la etapa de decodificación 130, la pseudo-instrucción (u otra instrucción donde no se esté ingresando actualmente una pseudo-instrucción) puede proceder a acceder la etapa de archivo de registro 135. El módulo de control de procesador 110 puede acceder al archivo de registro por diversas razones. Por ejemplo, si se ha decodificado una instrucción "añadir" en la etapa 130, entonces el archivo de registro puede ser accedido con objeto de leer los operandos fuente a añadirse. Se incluye una pluralidad de registros de propósito general en el acceso de la etapa de archivo de registro 135. La salida de estos registros de propósito general puede utilizarse en ciclos de reloj posteriores. Después de que el archivo de registro ha sido accedido en la etapa 135, las instrucciones pueden recibirse en la etapa de ejecución de instrucciones 140. Entonces pueden ejecutarse las instrucciones. Puede incluirse una pluralidad de registros de propósito general en la etapa de ejecución de instrucciones 140. La salida de estos registros de propósito general puede transmitirse a la etapa de reescritura 145. En la etapa de reescritura 145, el procesador 100 reescribirá los resultados en el archivo de registro 180. Como se expone en la Figura 1 , en las etapas iniciales de un segmentado, se extraen una o más instrucciones de la memoria o memoria asociada.
- - Generalmente, las instrucciones pueden fluir a través del segmentado en orden secuencial. Sin embargo, el manejo de las interrupciones puede requerir que el procesador regrese al programa que estaba en el proceso de ejecución cuando ocurrió la interrupción. Convenientemente, puede ser deseable que el procesador regrese a la última instrucción no procesada. Haciendo referencia ahora a la Figura 2, se ilustra una tabla que muestra las diversas etapas de tubería en las que puedan procesarse las instrucciones con relación a un ciclo de reloj . Para propósitos de ilustración, ¦ se supone que se completa una sola etapa durante un solo ciclo de reloj. Sin embargo, debe observarse que pueden ocurrir algunas variaciones. En una arquitectura segmentada, puede sobreponerse la ejecución de instrucciones. Así que a pesar de que pudiese tomar cinco ciclos de reloj la ejecución de cada instrucción, puede haber cinco instrucciones en diversas etapas de ejecución simultáneamente. Convenientemente, después de que la primera instrucción se desplaza descendentemente del segmentado a la etapa donde se escribe en el archivo de registro, una instrucción completa sustancialmente cada ciclo de relo . Para propósitos de la ilustración en la Figura 2, se supone que el procesamiento de interrupción es solicitado por un dispositivo periférico entre los ciclos de reloj octavo y noveno. Las instrucciones se denotan por "I" de instrucción, seguidas del número de instrucción. Para propósitos de ilustración, se supone también que la instrucción #8 se encuentra en la etapa de extracción cuando se solicita el procesamiento de interrupción. Por supuesto, debe comprenderse que el procesamiento de interrupción puede solicitarse en cualquier número de instrucción. En esta ilustración, el manejo de interrupciones ha solicitado que el procesador vaya a la instrucción #100. En este ejemplo, la instrucción #100 puede estar donde se encuentran las instrucciones relacionadas con el procesamiento de interrupciones. Por supuesto, el procesamiento de interrupciones podría ocurrir en cualquier instrucción designada por el programa. Después de que se ha extraído la instrucción #100 para manejar el procesamiento de interrupciones, se descartarán todas las instrucciones procesadas incompletamente. En esta ilustración, las instrucciones #5 a #8 pueden descartarse porque el procesamiento en orden secuencial (o en el orden determinado por el programa durante la operación ordinaria) se ha interrumpido. La instrucción más avanzada para la cual el procesamiento se encuentra incompleto en la instrucción #5. Al momento de la interrupción, la instrucción #5 se encuentra en la etapa de ejecución. Esta instrucción, siendo la instrucción procesada incompletamente más vieja, aún tiene que salir del segmentado. De acuerdo con lo anterior, debe comprenderse que el valor de programa en el que el procesador debe continuar la ejecución del programa es la instrucción #5. De acuerdo con la presente invención, la pseudo-instrucción se configura para escribir la dirección de retorno como la instrucción más avanzada. Esta es la instrucción más vieja que no ha experimentado un procesamiento completo, pero es la que ha progresado más en el segmentado al momento de la solicitud de interrupción. Esta pseudo-instrucción se desplaza descendentemente por el segmentado como lo hacen las demás instrucciones. En el ciclo doce de la Figura 2, la pseudo-instrucción escribe la dirección de la instrucción más avanzada en el archivo de registro. Cuando se completa el procesamiento de interrupción con posterioridad, el procesador regresará a la ejecución del programa en la instrucción #5, utilizando el valor que se almacenó en el archivo de registro. Haciendo referencia ahora a la Figura 3, se ilustra un método 300 para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general. En el paso 310, se recibe una solicitud de interrupción. La solicitud de interrupción puede provenir de un dispositivo periférico, o del programa que se está ejecutando al momento de la solicitud o de cualquier otra manera que se realiza una solicitud de interrupción. En el paso 320, se genera una pseudo-instrucción. La pseudo-instrucción puede generarse por lógica de control en el módulo de control de un procesador. La pseudo-instrucción también puede generarse por cualquier otro medio. La pseudo-instrucción se configura para almacenar eficazmente la dirección de retorno de interrupción en el archivo de registro de propósito general. La dirección de retorno de interrupción es conocida porque se ha ingresado al módulo de control. La pseudo-instrucción se desplaza descendentemente en el segmentado como las demás instrucciones . En el paso 330, el valor de programa para la siguiente instrucción no procesada se escribe en un archivo de registro de propósito general (GPR - general purpose Register) . El archivo de registro y los recursos relacionados se actualizan de la misma manera. Únicamente se necesitan registros de propósito general para este proceso. No se necesita ningún puerto dedicado para el archivo de registro, consecuentemente almacenar área en el procesador y evitar la complejidad asociada con puertos dedicados o registros especiales. En el paso 340, el procesar continúa el procesamiento en el valor de contador de programa que fue escrito en el archivo de registro de propósito general. Después, el procesador puede ejecutar las instrucciones en el orden instruido por el programa bajo ejecución. Los diversos bloques lógicos ilustrativos, módulos y circuitos descritos en conexión con las modalidades descritas en la presente pueden implementarse o realizarse con un procesador de propósito general, un procesador de señales digitales (DSP - digital signal processor) , un circuito integrado de aplicación especifica (ASIC - application specific integrated circuit) , un arreglo de compuerta 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 dispositivos 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 o algoritmos 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 puede 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. El procesador y el medio de almacenamiento pueden residir en una ASIC. El ASIC puede residir en la terminal, o en alguna otra parte. Alternativamente, el procesador y el medio de almacenamiento pueden residir como componentes discretos en la terminal, o en alguna otra parte. Se proporciona la descripción anterior de las modalidades descritas para permitirle al experto en la materia realizar o utilizar la presente invención.
Diversas modificaciones a estas modalidades serán fácilmente aparentes para aquellos expertos en la materia, y los principios genéricos definidos en la presente pueden aplicarse a otras modalidades sin aislarse del espíritu o alcance de la invención. Consecuentemente, la presente invención no pretende limitarse a las modalidades mostradas en la presente sino que debe abarcar el más amplio alcance consistente con los principios y características novedosas descritas en la presente.

Claims (22)

  1. NOVEDAD DE LA INVENCIÓN Habiéndose descrito la invención como antecedente, se reclama como propiedad lo contenido en las siguientes reivindicaciones
  2. REIVINDICACIONES 1. Un sistema de procesamiento de datos para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general, caracterizado el sistema porque comprende: lógica de control configurada para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para una instrucción más avanzada en un segmentado se escriba en un archivo de registro de propósito general; y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente por el segmentado de un procesador segmentado de manera sustancialmente similar a las demás instrucciones. 2. El sistema de procesamiento de datos según la reivindicación 1, caracterizado además porque comprende: una etapa de decodificación y una etapa de reescritura, donde la etapa de decodificación se configura para decodificar la pseudo-instrucción, y donde la etapa de reescritura se configura para escribir los resultados para la pseudo-instrucción en el archivo de registro de propósito general, incluyendo los resultados la dirección de retorno de interrupción para la instrucción más avanzada.
  3. 3. El sistema de procesamiento de datos según la reivindicación 2, caracterizado además porque comprende: un multiplexor configurado para recibir la pseudo-instrucción e ingresar la pseudo-instrucción en la etapa de decodificación.
  4. 4. El sistema de procesamiento de datos según la reivindicación 3, caracterizado además porque comprende: una etapa de extracción configurada para extraer instrucciones; y donde el multiplexor se configura adicionalmente para recibir instrucciones provenientes de la etapa de extracción y la pseudo-instrucción, configurándose además el multiplexor para seleccionar una de entre una instrucción extraída y la pseudo-instrucción para ingresar a la etapa de decodificación.
  5. 5. El sistema de procesamiento de datos según la reivindicación 1, caracterizado además porque comprende: una pluralidad de registros de propósito general.
  6. 6. El sistema de procesamiento de datos según la reivindicación 1, caracterizado porque el generador de pseudo-instrucciones es residente en un módulo de control de procesador.
  7. 7. El sistema de procesamiento de datos según la reivindicación 4, caracterizado además porque comprende: un módulo de memoria configurado para almacenar datos de instrucción a ser procesados por el procesador, acoplándose la memoria a la etapa de extracción.
  8. 8. Un aparato para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general, caracterizado el aparato porque comprende : un procesador segmentado que tiene un generador de pseudo-instrucciones configurado para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para una instrucción más avanzada en el segmentado se escriba en un archivo de registro de propósito general, incluyendo el procesador una pluralidad de registros de propósito general; y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente en el segmentado de un procesador segmentado de manera sustancialmente similar a las demás instrucciones.
  9. 9. El sistema de procesamiento de datos según la reivindicación 8, caracterizado además porque comprende: una etapa de decodificación y una etapa de reescritura, donde la etapa de decodificación se configura para decodificar la pseudo-instrucción, y donde la etapa de reescritura se configura para escribir los resultados para la pseudo-instrucción al archivo de registro de propósito general, indicando los resultados la dirección de retorno de interrupción para la instrucción procesada incompletamente más reciente; y donde la pseudo-instrucción se ingresa a la etapa de decodificación.
  10. 10. El aparato según la reivindicación 9, caracterizado además porque comprende: un multiplexor configurado para recibir la pseudo-instrucción y se ingresa la pseudo-instrucción en la etapa de decodificación.
  11. 11. El aparato según la reivindicación 10, caracterizado además porque comprende: una etapa de extracción configurada para extraer instrucciones; y donde el multiplexor se configura además para recibir instrucciones provenientes de la etapa de extracción y la pseudo-instrucción, configurándose adicionalmente el multiplexor para seleccionar una de entre una instrucción extraída y la pseudo-instrucción para su ingreso en la etapa de decodificación.
  12. 12. El aparato según la reivindicación 10, caracterizado porque el procesador se configura adicionalmente para realizar el procesamiento de interrupciones en respuesta a la solicitud de interrupción; y para escribir la dirección de retorno de interrupción para la instrucción procesada incompletamente más reciente en el archivo de registro de propósito general .
  13. 13. El método según la reivindicación 12, caracterizado porque el procesador se configura adicionalmente para continuar el procesamiento en la dirección de retorno de interrupción que fue escrita en el archivo de registro de propósito general.
  14. 14. Un método para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general en un procesador segmentado, caracterizado el método porque comprende los pasos para: en respuesta a una solicitud de interrupción, generar una pseudo-instrucción configurada para que una dirección de retorno de interrupción para una instrucción más avanzada en él segmentado se escriba en un archivo de registro de propósito general; y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y desplazarse descendentemente en un procesador segmentado de manera sustancialmente similar a las demás instrucciones.
  15. 15. El método según la reivindicación 14, caracterizado además porque comprende: realizar el procesamiento de interrupciones en respuesta a la solicitud de interrupción; escribir la dirección de retorno para la instrucción procesada incompletamente más reciente en el archivo de registro de propósito general.
  16. 16. El método según la reivindicación 15, caracterizado además porque comprende: continuar el procesamiento en la dirección de retorno de interrupción que fue escrita en el archivo de registro de propósito general.
  17. 17. El método según la reivindicación 14, caracterizado porque la pseudo-instrucción se genera por la lógica de control en el procesador.
  18. 18. El método según la reivindicación 14, caracterizado porque el procesador segmentado comprende: una etapa de decodificación y una etapa de reescritura, donde la etapa de decodificación se configura para decodificar la pseudo-instrucción, y donde la etapa de reescritura se configura para escribir los resultados para la pseudo-instrucción en el archivo de registro de propósito general, incluyendo los resultados la dirección de retorno de interrupción para la instrucción más avanzada; y donde la pseudo-instrucción se ingresa en la etapa de decodificación.
  19. 19. El método según la reivindicación 18, caracterizado porque el procesador comprende además: un multiplexor configurado para recibir la pseudo-instrucción e ingresar la pseudo-instrucción en la etapa de decodificación.
  20. 20. El método según la reivindicación 19, caracterizado porque el procesador comprende además: una etapa de extracción configurada para extraer instrucciones; y donde el multiplexor se configura además para recibir tanto instrucciones provenientes de la etapa de extracción como la pseudo-instrucción, configurándose adicionalmente el multiplexor para seleccionar una de entre una instrucción extraída y la pseudo-instrucción para su ingreso en la etapa de decodificación.
  21. 21. El método según la reivindicación 14, caracterizado porque el procesador comprende además: una pluralidad de registros de propósito general.
  22. 22. Un aparato para almacenar eficazmente una dirección de retorno de interrupción en un archivo de registro de propósito general, caracterizado el aparato porque comprende : un procesador segmentado de etapa múltiple configurado para realizar el procesamiento de interrupciones, donde las etapas incluyen al menos una etapa configurada para recibir instrucciones y al menos una etapa configurada para reescribir los resultados en un archivo de registro de propósito general, configurándose adicionalmente el procesador para procesar los datos de instrucciones provenientes de un programa; lógica de control configurada para generar una pseudo-instrucción en respuesta a una solicitud de interrupción, donde la pseudo-instrucción se configura para que una dirección de retorno de interrupción para la instrucción más avanzada en el segmentado se escriba en un archivo de registro de propósito general y donde la pseudo-instrucción se configura adicionalmente para insertarse en el segmentado y se desplaza descendentemente por el segmentado de manera substancialmente similar a las demás instrucciones ; un multiplexor configurado para recibir tanto la pseudo-instrucción proveniente de la lógica de control como los datos de instrucción provenientes de un programa, configurándose el multiplexor para seleccionar al menos uno de entre los datos de pseudo-instrucción e instrucción y el ingreso de los datos seleccionados de pseudo-instrucción e instrucción en al menos una etapa del segmentado configurada para recibir instrucciones; donde, después de que ha ocurrido el procesamiento de interrupción, el procesador se configura adicionalmente para continuar el procesamiento de los datos de instrucción en la dirección de retorno de interrupción para la instrucción más avanzada que fue escrita en el archivo de registro de propósito general.
MX2009000728A 2006-07-25 2007-07-24 Mecanismo de almacenamiento eficaz de direcciones de retorno de interrupcion. MX2009000728A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/459,695 US7681022B2 (en) 2006-07-25 2006-07-25 Efficient interrupt return address save mechanism
PCT/US2007/074263 WO2008014287A1 (en) 2006-07-25 2007-07-24 Efficient interrupt return address save mechanism

Publications (1)

Publication Number Publication Date
MX2009000728A true MX2009000728A (es) 2009-02-04

Family

ID=38667151

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2009000728A MX2009000728A (es) 2006-07-25 2007-07-24 Mecanismo de almacenamiento eficaz de direcciones de retorno de interrupcion.

Country Status (10)

Country Link
US (1) US7681022B2 (es)
EP (1) EP2044508A1 (es)
JP (2) JP5528804B2 (es)
KR (1) KR101077425B1 (es)
CN (1) CN101495960B (es)
BR (1) BRPI0714128A2 (es)
CA (1) CA2657168C (es)
MX (1) MX2009000728A (es)
RU (1) RU2450329C2 (es)
WO (1) WO2008014287A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
CN102364432B (zh) * 2011-10-25 2013-12-18 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
US10360593B2 (en) * 2012-04-24 2019-07-23 Qualcomm Incorporated Retail proximity marketing
KR20170065845A (ko) 2015-12-04 2017-06-14 삼성전자주식회사 프로세서 및 제어 방법
US11003457B2 (en) * 2019-01-23 2021-05-11 Mediatek Inc. Power-saving mechanism for memory sub-system in pipelined processor
CN112883370B (zh) * 2019-11-29 2022-12-20 北京三快在线科技有限公司 应用程序状态检测方法和装置、存储介质和电子设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS564844A (en) * 1979-06-26 1981-01-19 Nec Corp Information processor
JP2509244B2 (ja) * 1987-09-14 1996-06-19 富士通株式会社 分岐命令処理装置
JPH076037A (ja) * 1993-06-16 1995-01-10 Matsushita Electric Ind Co Ltd 命令解読装置
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
JPH09198257A (ja) * 1996-01-19 1997-07-31 Sanyo Electric Co Ltd プログラム実行方法およびこの方法を用いたプログラム実行装置
WO1999004334A1 (en) * 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
US6076159A (en) * 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
TW436693B (en) * 1998-08-18 2001-05-28 Ind Tech Res Inst Interrupt control device and method for pipeline processor
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
US6301650B1 (en) * 1998-10-29 2001-10-09 Pacific Design, Inc. Control unit and data processing system
US6789184B1 (en) * 2000-09-29 2004-09-07 Intel Corporation Instruction address generation and tracking in a pipelined processor
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
WO2002063465A2 (en) * 2001-02-06 2002-08-15 Adelante Technologies B.V. Method and apparatus for handling interrupts
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
US20050010577A1 (en) 2003-07-11 2005-01-13 Microsoft Corporation Method and apparatus for generating Web content
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
US20050273776A1 (en) * 2004-06-08 2005-12-08 Intel Corporation Assembler supporting pseudo registers to resolve return address ambiguity
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism

Also Published As

Publication number Publication date
CA2657168A1 (en) 2008-01-31
BRPI0714128A2 (pt) 2012-12-25
JP2009545079A (ja) 2009-12-17
JP2014099192A (ja) 2014-05-29
RU2450329C2 (ru) 2012-05-10
CN101495960A (zh) 2009-07-29
CN101495960B (zh) 2012-08-29
JP5837033B2 (ja) 2015-12-24
KR101077425B1 (ko) 2011-10-26
CA2657168C (en) 2010-12-07
KR20090042283A (ko) 2009-04-29
US20080028194A1 (en) 2008-01-31
RU2009106463A (ru) 2010-08-27
JP5528804B2 (ja) 2014-06-25
EP2044508A1 (en) 2009-04-08
US7681022B2 (en) 2010-03-16
WO2008014287A1 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
CN101373427B (zh) 程序执行控制装置
CA1332248C (en) Processor controlled interface with instruction streaming
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
JP5837033B2 (ja) 効率的な割込み復帰アドレス保存メカニズム
JP2001502448A (ja) X86・dspコアを有しかつx86命令をdsp命令へマッピングするdspファンクションデコーダを備える中央処理装置
US20030135716A1 (en) Method of creating a high performance virtual multiprocessor by adding a new dimension to a processor's pipeline
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
WO2018059337A1 (zh) 数据处理装置和方法
US20070260857A1 (en) Electronic Circuit
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US7539847B2 (en) Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages
US20070028077A1 (en) Pipeline processor, and method for automatically designing a pipeline processor
US9395985B2 (en) Efficient central processing unit (CPU) return address and instruction cache
TWI297457B (en) Method for accessing a unified memory in a micro-processing system
KR102379886B1 (ko) 벡터 명령 처리
JP3158107B2 (ja) 浮動小数点状態および制御レジスタ(fpscr)命令を直接実行するための方法および装置
CN109614146B (zh) 一种局部跳转指令取指方法及装置
CN116841614B (zh) 乱序访存机制下的顺序向量调度方法
JP3646445B2 (ja) プログラマブルコントローラ
JPS6259829B2 (es)
JP3739556B2 (ja) 情報処理装置
KR100300875B1 (ko) 캐쉬 미스 시 처리 방법
JP2636074B2 (ja) マイクロプロセッサ
JP3743155B2 (ja) パイプライン制御型計算機
JP3414579B2 (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
FG Grant or registration