ES2352586T3 - Uso del sistema de renombrado de registros para el envío de los resultados intermedios entre instrucciones constitutivas de una instrucción expandida. - Google Patents
Uso del sistema de renombrado de registros para el envío de los resultados intermedios entre instrucciones constitutivas de una instrucción expandida. Download PDFInfo
- Publication number
- ES2352586T3 ES2352586T3 ES08713989T ES08713989T ES2352586T3 ES 2352586 T3 ES2352586 T3 ES 2352586T3 ES 08713989 T ES08713989 T ES 08713989T ES 08713989 T ES08713989 T ES 08713989T ES 2352586 T3 ES2352586 T3 ES 2352586T3
- Authority
- ES
- Spain
- Prior art keywords
- constituent
- instruction
- instructions
- physical record
- physical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000000470 constituent Substances 0.000 claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 15
- 238000006243 chemical reaction Methods 0.000 claims abstract 2
- 230000015654 memory Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
- Electrotherapy Devices (AREA)
Abstract
Un procedimiento de ejecución de una instrucción expandida, que comprende: la conversión (100) de la instrucción expandida en dos o más instrucciones constituyentes ejecutables por separado; la asignación (102) de un número de registro físico desde un almacén (22) a una primera instrucción constituyente que genera un resultado intermedio, en la que la asignación comprende además la creación de una entrada en una tabla de renombrado de instrucciones constituyentes (24) que mapea un identificador de la primera instrucción constituyente al número de registro físico; y la asociación (104) del número de registro físico asignado con una segunda instrucción constituyente que recibe el resultado intermedio, en el que la asociación comprende además la realización de una búsqueda en la tabla de renombrado de instrucciones constituyentes (24) que usa el primer identificador de instrucción constituyente; mediante lo cual dicho resultado intermedio se pasa desde la primera a la segunda instrucción constituyente por medio del registro físico identificado por dicho número de registro físico (106, 108).
Description
Antecedentes
La presente invención se refiere de modo general a procesadores, y en particular a un sistema y un procedimiento para la utilización de recursos de renombrado de registros existentes para ejecutar instrucciones expandidas que pasen 5 resultados parciales.
Las instrucciones de los procesadores operan sobre datos obtenidos de, y escriben sus resultados en, la memoria. Los procesadores modernos utilizan una estructura de memoria jerárquica que comprende unos pocos elementos de memoria rápidos y caros, tales como registros, en el nivel superior. La jerarquía de la memoria comprende a continuación sucesivamente tecnologías de memoria más lentas pero más eficaces en coste a niveles más bajos, tales 10 como las memorias caché (SRAM), memoria principal de estado sólido (DRAM) y discos (medios magnéticos u ópticos), respectivamente. Para aplicaciones tales como los dispositivos electrónicos portátiles, la DRAM es a menudo el nivel más bajo en la jerarquía de memoria.
La mayoría de arquitecturas del conjunto de instrucciones (ISA) de los procesadores incluyen un conjunto de registros de finalidad general (GPR), que son registros ideados usados para pasar los datos entre instrucciones, y a y desde la 15 memoria. Las instrucciones que realizan operaciones lógicas y aritméticas sobre los datos leen sus operandos desde, y escriben sus resultados en, GPR específicos. De modo similar, las instrucciones de acceso a memoria leen los datos a ser almacenados en memoria desde los GPR y escriben los datos cargados desde la memoria a los GPR. Un compilador asigna identificadores de GPR de origen y destino a cada instrucción y ordena las instrucciones de modo que se calculen los resultados apropiados. Es decir, las instrucciones se disponen en un orden de programación que 20 garantiza los resultados correctos mandando a las instrucciones anteriores que almacenen resultados en GPR específicos y mandando a las instrucciones posteriores que lean esos GPR para obtener operandos para el procesamiento posterior. Los identificadores de GPR son etiquetas lógicas (por ejemplo, r0 - r15).
Algunos procesadores modernos soportan instrucciones “expandidas” esto es, instrucciones que realizan más de una operación aritmética o lógica. Por ejemplo, la instrucción ADD r1, r2, r3 LSL r4 implementa la ecuación r1 = r2 + (r3 << 25 [r4]), esto es, desplaza el valor del registro r3 en una cantidad almacenada en r4, añade este resultado al valor en r2 y almacena la suma en el registro r1. En un procesador cuyo sumador requiere un tiempo de ciclo completo, esta instrucción expandida se puede implementar como dos instrucciones separadas, compuestas —una instrucción de desplazamiento que desplaza a la izquierda el valor en r3, generando un resultado intermedio y una instrucción de suma que añade el resultado intermedio al valor en r2 y almacena la suma en r1—. En algunos procesadores —es decir, 30 procesadores que soportan el envío de operandos y sólo ejecutan instrucciones expandidas en el orden del programa— el paso de los resultados intermedios desde la instrucción de desplazamiento a la instrucción de suma es directo. En general, sin embargo —particularmente en procesadores superescalares que soportan la ejecución de instrucciones fuera de orden—, se deben añadir al procesador recursos adicionales, tales como registros “improvisados” y lógica de control compleja, para implementar fiablemente el envío de resultados intermedios entre las instrucciones constituyentes 35 de una instrucción expandida.
El documento US 6 279 102 describe un aparato que incluye al menos dos registros y una unidad de renombrado para asignar al menos uno de los registros físicos a un registro original.
El documento US 6 279 102 desvela además macro instrucciones decodificadas en forma de micro operaciones. Dicha decodificación introduce registros temporales como direcciones de origen o destino de las micro operaciones para el 40 almacenamiento de resultados intermedios. Smotherman M. y col., "Improving CISC instruction decoding performance using a fill unit", EE.UU., IEEE COMPUT. SOC. 29 de noviembre de 1995, págs. 219 a 229 describe las dependencias de los datos y controles.
El documento US 2003/149862 describe el renombrado de registros usando una tabla de seguimiento que tiene entradas para cada registro. 45
Sumario
De acuerdo con la invención, se proporciona: un procedimiento de acuerdo con la reivindicación 1; y un aparato de acuerdo con la reivindicación 10.
Preferentemente, el pase de resultados intermedios entre instrucciones constituyentes de una instrucción expandida se realiza usando recursos de renombrado de registro y lógica de control. Una primera instrucción constituyente genera 50 resultados intermedios y se le asigna un PRN en una tabla de renombrado de instrucciones constituyentes y escribe los resultados intermedios en el registro físico. Una segunda instrucción constituyente realiza una búsqueda en la tabla de renombrado de instrucciones constituyentes y lee los resultados intermedios del registro físico. La lógica de renombrado de instrucciones constituyentes sigue las instrucciones constituyentes a través de la línea de ejecución y borra las entradas en la tabla de renombrado de instrucciones constituyentes y devuelve el PRN a una lista de libres cuando la 55 segunda instrucción constituyente ha leído los resultados intermedios.
La instrucción expandida se puede convertir en dos o más instrucciones constituyentes ejecutables por separado. Se asigna a una primera instrucción constituyente un número de registro físico que genera un resultado intermedio. El número de registro físico asignado se asocia con una segunda instrucción constituyente que recibe el resultado intermedio.
El procesador puede incluir una o más líneas de ejecución de instrucciones operativa para ejecutar instrucciones 5 expandidas mediante la generación de una primera instrucción constituyente que genera resultados intermedios y una segunda instrucción constituyente que recibe los resultados intermedios. El procesador incluye también un almacén de registros físicos, teniendo cada uno un número de registro físico, y una tabla de renombrado de instrucciones constituyentes operativa para mapear los identificadores de instrucciones con los números de registro físicos. El procesador incluye adicionalmente una lógica de control operativa para crear una entrada en la tabla de renombrado de 10 instrucciones constituyentes para la primera instrucción constituyente y operativa además para realizar una búsqueda en la tabla de renombrado de instrucciones siguientes para la segunda instrucción constituyente. Los resultados intermedios se pasan desde la primera a la segunda instrucción constituyente por medio de los registros físicos identificados por los números de registro físicos.
Breve descripción de los dibujos 15
La Figura 1 es un diagrama de bloques funcional de un procesador que utiliza recursos de renombrado de registros para efectuar el paso de resultados intermedios entre instrucciones constituyentes de una instrucción expandida.
La Figura 2 es un diagrama de bloques funcional de la línea de ejecución del procesador de la Figura 1.
La Figura 3 es un diagrama de flujo de un procedimiento de ejecución de una instrucción expandida.
Descripción detallada 20
La Figura 1 representa un diagrama de bloques funcional de un procesador 10 que tiene una lógica para utilizar recursos de renombrado de registros para hacer el seguimiento del paso de los resultados intermedios entre instrucciones constituyentes generados por una instrucción expandida. El procesador 10 ejecuta instrucciones en una línea de ejecución de instrucciones 12 de acuerdo con la lógica de control 14. La línea de ejecución 12 puede ser un diseño superescalar, con múltiples líneas de ejecución inferiores paralelas 12a, 12b. La línea de ejecución 12 incluye 25 varios registros o cerrojos 16, organizados en fases de línea de ejecución, así como circuitos de cálculo y lógicos como las Unidades Lógicas y Aritméticas (ULA) (no mostradas). Un archivo de Registro de Finalidad General (GPR) 18 proporciona registros que comprenden la cima de la jerarquía de la memoria. Como se ha comentado en el presente documento, el GPR 18 puede incluir una Tabla de Renombrado (RT, “Renaming Table”) 20, una lista de libres 22 y una Tabla de Renombrado de Instrucciones Constituyentes (CITR) 24 para permitir el uso de recursos de renombrado de 30 registros para enviar eficiente y fiablemente los resultados intermedios entre instrucciones constituyentes de instrucciones expandidas.
La línea de ejecución 12 recoge las instrucciones desde una caché de instrucciones (I-Caché o I$) 26, con el direccionamiento de memoria y los permisos gestionados por una memoria intermedia de traducción de direcciones en el lado de instrucciones (ITLB) 28. Los datos se acceden desde la caché de datos (D-Caché o D$) 30, con los 35 direccionamientos de memoria y los permisos gestionados por una memoria intermedia de traducción de direcciones (TLB, “Translation Lookaside Buffer”) principal 32. En varias realizaciones la ITLB 28 puede comprender una copia de parte de la TLB 32. Alternativamente, la ITLB 28 y la TLB 32 están integradas. De modo similar, en varias realizaciones del procesador 10, la I-caché 26 y la D-caché 30 pueden estar integrados o unificados.
Los fallos en la I-caché 28 y/o la D-caché 30 producen un acceso a la memoria principal (externa) 34, bajo control de la 40 interfaz de memoria 36 (se pueden interponer otros cachés, no mostrados, entre el procesador 10 y la memoria principal 34). El procesador 10 puede incluir una interfaz de entrada/salida (E/S) 38, que controla el acceso a varios dispositivos periféricos 40, 42. Los expertos en la materia reconocerán que son posibles numerosas variaciones del procesador 10. Por ejemplo, el procesador 10 puede incluir una caché de segundo nivel (L2) para alguna de ellas o para ambas cachés I y D 26, 30. Además, uno o más de los bloques funcionales representados en el procesador 10 se pueden omitir en una 45 realización particular.
Muchos procesadores modernos 10 ejecutan instrucciones “fuera de orden” —esto es, en un orden distinto del orden del programa de instrucciones— para utilizar múltiples líneas de ejecución 12a, 12b y mejorar el rendimiento global. La ejecución de instrucciones fuera de orden plantea numerosas dependencias entre las instrucciones, conocidas como “riesgos”. Los riesgos con los datos surgen cuando el reordenamiento de las instrucciones cambiaría el orden del 50 acceso a los operandos involucrados en la dependencia. Los riesgos con los datos se puede clasificar en tres tipos: leer después de escribir (LdE), escribir después de escribir (EdE) y escribir después de leer (EdL). Nótese que el caso de leer después de leer (LdL) no es un riesgo con los datos; las lecturas se pueden realizar en cualquier orden. Los riesgos con los datos, tales como LdE puede aparecer también cuando las instrucciones no están reordenadas, y simplemente se necesita mantener en una fase particular hasta que sus resultados se han escrito de nuevo o estén listos para envío. 55
Un sistema conocido para el manejo de los riesgos con los datos en los procesadores 10 que soportan ejecución de instituciones fuera de orden es el renombrado de registros. En un sistema de renombrado de registros, se gestiona un gran conjunto o almacén de registros físicos, en que cada uno tiene un número de registro físico (PRN), mediante la asignación dinámica de números de registros lógicos (LRN) a los registros físicos. Los LRN puede comprender, por ejemplo, los identificadores de GPR lógicos (r0, r1, r2,…). El número de registros físicos es mayor que el número de 5 LRN o GPR de la arquitectura. Una tabla de renombrado (RT) 20 mantiene el mapeado dinámico entre los LRN y los PRN y los PRN disponibles se mantienen en una lista de libres 22.
La Figura 2 representa, con mayor detalle, un diagrama de bloques funcional de la línea de ejecución 12 y varios recursos del renombrado de registros. Una fase de recogida 50 de la línea de ejecución 12 recoge instrucciones desde la caché de instrucciones 26. Las instrucciones se decodifican en una fase de decodificación 52 y pueden entrar en una 10 memoria de expedición 52. Las instrucciones se expiden desde la memoria de expedición 54 en una línea de ejecución 12a, 12b. La lógica de renombrado 56 inspecciona las características del acceso a registros de las instrucciones y traduce los LRN (por ejemplo, identificadores GPR) asociados con la instrucción a los PRN según sea necesario, a través de la tabla de renombrado 20 y la lista de libres 22. Para las instrucciones que escriben en un registro, se selecciona un nuevo registro físico de la lista de libres 22 y se introduce un nuevo mapeado LRN a PRN en la tabla de 15 renombrado 20. Esto mapea el LRN a un PRN sin utilizar, de modo que la escritura se dirige a un registro asociado (esto es, el LRN se “renombra”). Las instrucciones que leen un registro en una fase de la línea de ejecución de acceso a registros 58a, 58b traducen su LRN a un PRN a través de la búsqueda en la tabla de renombrado 20. El PRN permanece asociado con la instrucción de lectura de registros a lo largo de su ocupación a través de la línea de ejecución 12a, 12b. 20
Las instrucciones de escritura en registro no “corrompen” valores previos escritos en el mismo LRN; la escritura se dirige a un nuevo PRN sin usar (dado que el LRN se renombra a un nuevo PRN). Las instrucciones que siguen a la instrucción de escritura en el orden del programa se dirigirán al mismo PRN, para obtener el valor escrito. Las instrucciones que preceden a la instrucción de escritura en el orden del programa se mapearon mediante la tabla de renombrado 20 a un registro físico diferente (antes de la operación de renombrado) y continuarán accediendo a ese registro físico. Por ello, 25 las instrucciones que escriben en un LRN se pueden ejecutar por delante de las instrucciones que leen un valor previo desde el LRN (EdL) o escribir un resultado previo en el LRN (EdE).
Cuando una instrucción de escritura en registro se asigna para su ejecución en una fase de la línea de ejecución 60a, 60b —esto es, cuando la instrucción establece que ni ella ni ninguna instrucción por delante de ella en el orden de programa, producirá una excepción— el PRN asignado a ella se convierte en el GPR de diseño relevante. La instrucción 30 escribirá los resultados en este PRN en la fase de la línea de ejecución de nueva escritura 62a, 62b (quizá después de una memoria intermedia de escritura 64a, 64b). En este punto, cualquier renombrado antiguo del mismo LRN (identificador GPR) a otros PRN se elimina de la tabla de renombrado 20. Cuando todas las instrucciones que leen el GPR completan su ejecución, el PRN es devuelto a la lista de libres 22, como un recurso disponible para otra operación de renombrado. La lógica de renombrado al vuelo 66 realiza estas funciones mediante la supervisión de la línea de 35 ejecución 12 según las instrucciones se asignan para ejecución, y el envío de las señales de control apropiadas a la tabla de renombrado 20 y la lista de libres 22.
De acuerdo con una o más realizaciones, el sistema de renombrado de registros se utiliza para prever el envío de resultados intermedios entre instrucciones constituyentes generadas a partir de instrucciones expandidas. Cuando una instrucción expandida se decodifica en una fase de línea de ejecución 52, se pueden generar dos o más instrucciones 40 constituyentes y pasarse a la memoria intermedia de expedición de instrucciones 54. Las instrucciones constituyentes se pueden marcar como aquellas que generarán uno o más resultados intermedios y aquellas que recibirán resultados intermedios como operandos. La lógica de renombrado 56 inspecciona las instrucciones constituyentes y asigna uno o más PRN de la lista de libres 22 a las instrucciones constituyentes que generan resultados intermedios. La lógica de renombrado 56 crea adicionalmente una entrada en una tabla de renombrado de instrucciones constituyentes 24 que 45 mapea un indicador que identifica la instrucción constituyente que genera un resultado intermedio para el PRN asignado. La tabla de renombrado 56 etiqueta adicionalmente las instrucciones constituyentes que reciben resultados intermedios con el indicador que identifica la instrucción constituyente que genera los resultados intermedios.
Cuando las instrucciones constituyentes que reciben resultados intermedios alcanzan la fase de la línea de ejecución de acceso al registro 58a, 58b, las instrucciones acceden a la tabla de renombrado de instrucciones constituyentes 24 para 50 recuperar el PRN que identifica el registro que mantiene sus resultados intermedios. Cuando las instrucciones constituyentes que reciben los resultados intermedios se asignan para su ejecución en la fase de línea de ejecución 60a, 60b, la lógica de renombrado de instrucciones constituyentes 68 elimina la entrada relevante de la tabla de renombrado de instrucciones constituyentes 24 y devuelve el PRN a la lista de libres 22. Nótese que aunque la tabla de renombrado de instrucciones constituyentes 24 se representa en la Figura 2 como una entidad funcional independiente, 55 en algunas realizaciones, la funcionalidad se puede incluir en la tabla de renombrado 20. En este caso, las instrucciones constituyentes de las instrucciones expandidas que generan y reciben resultados intermedios se tratan como casos especiales del renombrado de registros, renombrándose un identificador de instrucciones en lugar de un LRN. En otras realizaciones, el renombrado del registro de instrucciones constituyentes puede estar separado del renombrado de registros, con un almacén separado de registros físicos y una lista de libres separada 22 dedicada a las instrucciones 60 expandidas.
La Figura 3 representa un procedimiento para la ejecución de una instrucción expandida. La instrucción expandida se convierte en dos o más instrucciones constituyentes ejecutables por separado (bloque 100). Una primera instrucción constituyente que genera un resultado intermedio se asigna a un PRN (bloque 102). En una realización, se selecciona el PRN de un almacén de renombrado registros. El PRN asignado se asocia con una segunda instrucción constituyente que recibe el resultado intermedio (bloque 104). La asociación puede ser por medio de una entrada en una tabla de 5 renombrado de instrucciones constituyentes 24 o en una tabla de renombrado 20 de un sistema de renombrado de registros.
La primera instrucción constituyente se ejecuta entonces (bloque 106) y el resultado intermedio que genera se almacena en el registro identificado por el PRN asignado. Se ejecuta la segunda instrucción constituyente (bloque 108), recuperando el resultado intermedio del registro identificado por el PRN asignado. Los expertos en la materia 10 reconocerán que los bloques 106 y 108 se pueden implementar mediante el envío de operandos, usando el PRN asignado para identificar instrucciones, sin escribir realmente los resultados intermedios en un registro físico.
Después de que la segunda instrucción constituyente haya recibido el resultado intermedio, el PRN se desasocia de la segunda instrucción constituyente (bloque 110), por ejemplo eliminándola de la entrada relevante de la tabla de renombrado de instrucciones constituyentes 24 (o de la tabla de renombrado de registros 20). Entonces se devuelve al 15 PRN al almacén de renombrado de registros (bloque 102), por ejemplo devolviendo el PRN a la lista de libres 22. El PRN se puede desasociar de la segunda instrucción constituyente y devolver a la lista de libres 22 tan pronto como la segunda instrucción constituyente lea el resultado intermedio durante su ejecución, o en cualquier tiempo posterior.
Mediante la utilización y metodología de los sistemas de renombrado de registros existentes, como se ha descrito en el presente documento, las instrucciones expandidas se pueden ejecutar como dos o más instrucciones constituyentes sin 20 necesidad de unos extensos recursos de procesador adicionales y de una lógica que efectúe el paso de resultado intermedios entre las instrucciones constituyentes. Aunque se ha descrito en el presente documento en términos de dos instrucciones constituyentes que pasan un único resultado intermedio, los expertos en la materia reconocerán fácilmente que la presente invención no está limitada a la presente realización. En general, se puede generar un gran número de instrucciones constituyentes para cualquier instrucción expandida y las instrucciones constituyentes pueden pasar un 25 gran número de resultados intermedios entre ellas mismas, utilizando el sistema de renombrado de registros, como se ha descrito en el presente documento.
La presente invención puede, naturalmente, ser llevada a cabo en otras formas distintas de las expuestas específicamente en el presente documento sin separarse de las características esenciales de la invención. Las presentes realizaciones se han de considerar en todos los sentidos como ilustrativas y no restrictivas, y los cambios 30 procedentes del ámbito del significado y equivalencia de las reivindicaciones adjuntas se pretende que estén comprendidos en el presente documento.
Claims (13)
- REIVINDICACIONES1. Un procedimiento de ejecución de una instrucción expandida, que comprende:la conversión (100) de la instrucción expandida en dos o más instrucciones constituyentes ejecutables por separado;la asignación (102) de un número de registro físico desde un almacén (22) a una primera instrucción constituyente que 5 genera un resultado intermedio, en la que la asignación comprende además la creación de una entrada en una tabla de renombrado de instrucciones constituyentes (24) que mapea un identificador de la primera instrucción constituyente al número de registro físico; yla asociación (104) del número de registro físico asignado con una segunda instrucción constituyente que recibe el resultado intermedio, en el que la asociación comprende además la realización de una búsqueda en la tabla de 10 renombrado de instrucciones constituyentes (24) que usa el primer identificador de instrucción constituyente;mediante lo cual dicho resultado intermedio se pasa desde la primera a la segunda instrucción constituyente por medio del registro físico identificado por dicho número de registro físico (106, 108).
- 2. El procedimiento de la reivindicación 1 que comprende además la ejecución (106) de la primera instrucción constituyente para generar el resultado intermedio. 15
- 3. El procedimiento de la reivindicación 2 que comprende además la ejecución (108) de la segunda instrucción constituyente por lo cual el resultado intermedio se envía como operando desde la primera instrucción constituyente a la segunda instrucción constituyente.
- 4. El procedimiento de la reivindicación 2 que comprende además el almacenamiento (106) del resultado intermedio en un registro identificado por el número de registro físico. 20
- 5. El procedimiento de la reivindicación 4 que comprende además la ejecución de la segunda instrucción constituyente y la recuperación (108) del resultado intermedio desde el registro identificado por el número de registro físico.
- 6. El procedimiento de la reivindicación 1 en el que el número de registro físico se selecciona de una lista de registros físicos disponibles y se elimina de la lista.
- 7. El procedimiento de la reivindicación 1 que comprende además la liberación (110, 112) del número de registro físico 25 del almacén (22) después de que la segunda instrucción constituyente lea el resultado intermedio.
- 8. El procedimiento de la reivindicación 7 en el que la liberación del número de registro físico del almacén (22) comprende la adición de un número de registro físico a la lista de registros físicos disponibles.
- 9. El procedimiento de la reivindicación 1 en el que el almacén de registros físicos (22) es un almacén de renombrado de registros. 30
- 10. Un procesador (10), que comprende:una o más líneas de ejecución de instrucciones (12) operativas para ejecutar una instrucción expandida mediante la generación de una primera instrucción constituyente que genera resultados intermedios y una segunda instrucción constituyente que recibe los resultados intermedios;un almacén de registros físicos (22), que tiene cada uno un número de registro físico; 35caracterizado por una tabla de renombrado de instrucciones constituyentes (24) operativa para mapear identificadores de instrucciones con los números de registros físicos; ylógica de control operativa para crear una entrada en la tabla de renombrado de instrucciones constituyentes para la primera instrucción constituyente y operativa además para realizar una búsqueda en la tabla de renombrado de instrucciones constituyentes de la segunda instrucción constituyente, usando el identificador de la primera instrucción 40 constituyente;por medio de lo cual los resultados intermedios se pasan desde la primera a la segunda instrucción constituyente a través de los registros físicos identificados por los números de registro físico (106, 108).
- 11. El procesador de la reivindicación 10 que comprende además una lista libre de números de registros físicos disponibles en el almacén (22) y en el que la lógica de control es operativa además para eliminar entradas en la tabla de 45 renombrado de instrucciones constituyentes y devolver los números de registro físico a la lista libre después de que las segundas instrucciones constituyentes reciban los resultados intermedios.
- 12. El procesador de la reivindicación 10 en el que el almacén de registros físicos (22) se utiliza adicionalmente para el renombrado de registros.
- 13. El procesador de la reivindicación 10 en el que la tabla de renombrado de instrucciones constituyentes (24) es una tabla de renombrado de registros.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/626,424 US7669039B2 (en) | 2007-01-24 | 2007-01-24 | Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction |
US626424 | 2007-01-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2352586T3 true ES2352586T3 (es) | 2011-02-21 |
Family
ID=39323615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES08713989T Active ES2352586T3 (es) | 2007-01-24 | 2008-01-24 | Uso del sistema de renombrado de registros para el envío de los resultados intermedios entre instrucciones constitutivas de una instrucción expandida. |
Country Status (13)
Country | Link |
---|---|
US (1) | US7669039B2 (es) |
EP (1) | EP2126689B8 (es) |
JP (1) | JP5275253B2 (es) |
KR (1) | KR101154628B1 (es) |
CN (1) | CN101601008B (es) |
AT (1) | ATE481676T1 (es) |
BR (1) | BRPI0806737B1 (es) |
CA (1) | CA2674872C (es) |
DE (1) | DE602008002568D1 (es) |
ES (1) | ES2352586T3 (es) |
MX (1) | MX2009007939A (es) |
RU (1) | RU2431887C2 (es) |
WO (1) | WO2008092037A1 (es) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690583B2 (en) * | 2011-10-03 | 2017-06-27 | International Business Machines Corporation | Exploiting an architected list-use operand indication in a computer system operand resource pool |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
US9513915B2 (en) * | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
US9395988B2 (en) * | 2013-03-08 | 2016-07-19 | Samsung Electronics Co., Ltd. | Micro-ops including packed source and destination fields |
US10565670B2 (en) * | 2016-09-30 | 2020-02-18 | Intel Corporation | Graphics processor register renaming mechanism |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
CN111506347B (zh) * | 2020-03-27 | 2023-05-26 | 上海赛昉科技有限公司 | 一种基于指令写后读相关假设的重命名的方法 |
CN112416434B (zh) * | 2020-12-03 | 2023-02-17 | 海光信息技术股份有限公司 | 物理寄存器分配方法、物理寄存器分配装置和电子设备 |
CN114168197B (zh) * | 2021-12-09 | 2023-05-23 | 海光信息技术股份有限公司 | 指令执行方法、处理器以及电子装置 |
CN116662006B (zh) * | 2023-06-06 | 2024-02-23 | 北京市合芯数字科技有限公司 | 多线程处理器重命名资源管理方法、系统、装置及介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627985A (en) * | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
US5586278A (en) * | 1994-03-01 | 1996-12-17 | Intel Corporation | Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor |
US5771366A (en) * | 1995-06-09 | 1998-06-23 | International Business Machines Corporation | Method and system for interchanging operands during complex instruction execution in a data processing system |
US5758117A (en) * | 1995-12-14 | 1998-05-26 | International Business Machines Corporation | Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor |
US6279102B1 (en) | 1997-12-31 | 2001-08-21 | Intel Corporation | Method and apparatus employing a single table for renaming more than one class of register |
US6212619B1 (en) * | 1998-05-11 | 2001-04-03 | International Business Machines Corporation | System and method for high-speed register renaming by counting |
US7055021B2 (en) | 2002-02-05 | 2006-05-30 | Sun Microsystems, Inc. | Out-of-order processor that reduces mis-speculation using a replay scoreboard |
US7185182B2 (en) * | 2003-02-04 | 2007-02-27 | Via Technologies, Inc. | Pipelined microprocessor, apparatus, and method for generating early instruction results |
US7219218B2 (en) | 2003-03-31 | 2007-05-15 | Sun Microsystems, Inc. | Vector technique for addressing helper instruction groups associated with complex instructions |
JP3752493B2 (ja) * | 2003-03-31 | 2006-03-08 | 東芝マイクロエレクトロニクス株式会社 | レジスタ・リネーミング機能を有するプロセッサ |
US7373486B2 (en) * | 2005-08-29 | 2008-05-13 | P.A. Semi, Inc. | Partially decoded register renamer |
-
2007
- 2007-01-24 US US11/626,424 patent/US7669039B2/en active Active
-
2008
- 2008-01-24 CN CN2008800028974A patent/CN101601008B/zh active Active
- 2008-01-24 JP JP2009547427A patent/JP5275253B2/ja active Active
- 2008-01-24 EP EP08713989A patent/EP2126689B8/en active Active
- 2008-01-24 KR KR1020097016741A patent/KR101154628B1/ko active IP Right Grant
- 2008-01-24 AT AT08713989T patent/ATE481676T1/de not_active IP Right Cessation
- 2008-01-24 RU RU2009131714/08A patent/RU2431887C2/ru not_active IP Right Cessation
- 2008-01-24 CA CA2674872A patent/CA2674872C/en not_active Expired - Fee Related
- 2008-01-24 DE DE602008002568T patent/DE602008002568D1/de active Active
- 2008-01-24 WO PCT/US2008/051958 patent/WO2008092037A1/en active Application Filing
- 2008-01-24 MX MX2009007939A patent/MX2009007939A/es active IP Right Grant
- 2008-01-24 ES ES08713989T patent/ES2352586T3/es active Active
- 2008-01-24 BR BRPI0806737-6A patent/BRPI0806737B1/pt active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
RU2431887C2 (ru) | 2011-10-20 |
CN101601008A (zh) | 2009-12-09 |
MX2009007939A (es) | 2009-08-07 |
US20080177987A1 (en) | 2008-07-24 |
CA2674872A1 (en) | 2008-07-31 |
KR101154628B1 (ko) | 2012-06-08 |
EP2126689A1 (en) | 2009-12-02 |
WO2008092037A1 (en) | 2008-07-31 |
ATE481676T1 (de) | 2010-10-15 |
CA2674872C (en) | 2013-06-25 |
JP5275253B2 (ja) | 2013-08-28 |
BRPI0806737A2 (pt) | 2011-09-13 |
EP2126689B8 (en) | 2010-12-29 |
KR20090100448A (ko) | 2009-09-23 |
BRPI0806737B1 (pt) | 2023-11-28 |
US7669039B2 (en) | 2010-02-23 |
JP2010517180A (ja) | 2010-05-20 |
EP2126689B1 (en) | 2010-09-15 |
CN101601008B (zh) | 2013-05-08 |
DE602008002568D1 (de) | 2010-10-28 |
RU2009131714A (ru) | 2011-02-27 |
BRPI0806737A8 (pt) | 2018-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2352586T3 (es) | Uso del sistema de renombrado de registros para el envío de los resultados intermedios entre instrucciones constitutivas de una instrucción expandida. | |
JP6009608B2 (ja) | 条件付き命令が無条件で出力を提供するシステム及び方法 | |
TWI507980B (zh) | 最佳化暫存器初始化操作 | |
KR102659813B1 (ko) | 레지스터 리네이밍을 사용한 무브 명령어 처리 | |
JP4567789B2 (ja) | Tlbロックインジケータ | |
US20070157007A1 (en) | Forward-pass dead instruction identification | |
US9454371B2 (en) | Micro-architecture for eliminating MOV operations | |
US8812824B2 (en) | Method and apparatus for employing multi-bit register file cells and SMT thread groups | |
KR20160031503A (ko) | 마이크로프로세서에서의 선택적 리네이밍을 위한 방법 및 장치 | |
KR20140110070A (ko) | 물리적 어드레스들을 통해 비-할당 메모리 액세스 | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
US10949205B2 (en) | Implementation of execution compression of instructions in slice target register file mapper | |
KR20160078377A (ko) | 부동 소수점 레지스터 앨리어싱을 위한 프로세서 및 방법들 | |
JP2017228267A (ja) | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 | |
US5752271A (en) | Method and apparatus for using double precision addressable registers for single precision data | |
US10514921B2 (en) | Fast reuse of physical register names | |
CN105308557B (zh) | 一种数据处理装置及方法 |