ES2848383T3 - Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo - Google Patents

Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo Download PDF

Info

Publication number
ES2848383T3
ES2848383T3 ES03774678T ES03774678T ES2848383T3 ES 2848383 T3 ES2848383 T3 ES 2848383T3 ES 03774678 T ES03774678 T ES 03774678T ES 03774678 T ES03774678 T ES 03774678T ES 2848383 T3 ES2848383 T3 ES 2848383T3
Authority
ES
Spain
Prior art keywords
processor
thread
log file
threads
multithreaded
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.)
Expired - Lifetime
Application number
ES03774678T
Other languages
English (en)
Inventor
Erdem Hokenek
Mayan Moudgill
C Glossner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2848383T3 publication Critical patent/ES2848383T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

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

Abstract

Método para acceder a un archivo de registros (118) asociado a un procesador multihilo (102), presentando el procesador multihilo una memoria caché (110), comprendiendo el método: determinar un identificador de hilo asociado a un hilo particular del procesador multihilo; seleccionar una particular de entre partes separadas del archivo de registros (T0-T3) a la que debe accederse por el hilo de procesador correspondiente sobre la base de una estructuración de hilos con activación por testigos utilizando por lo menos una parte del identificador de hilo; en el que el archivo de registros está separado de la memoria caché del procesador multihilo; en el que la memoria caché extrae instrucciones a través de un descodificador de instrucciones; y en el que se accede a las partes separadas del archivo de registros por los hilos del procesador multihilo de manera alternada durante una pluralidad de ciclos de reloj del procesador de manera que los accesos de registro por hilos impares se dirigen a partes diferentes del archivo de registros en comparación con los hilos pares.

Description

DESCRIPCIÓN
Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo
Solicitud(es) relacionada(s)
La presente invención está relacionada con las invenciones descritas en las solicitudes de patente US de n° de expediente 1007-5, titulada “Method and Apparatus for Thread-Based Memory Access in Multithreaded Processor”, n° de expediente 1007-6, titulada “Multithreaded Processor With Efficient Processing For Convergence Device Applications”, y n° de expediente 1007-8, titulada “Method and Apparatus for Token Triggered Multithreading”, presentándose todas ellas concurrentemente con la presente.
Campo de la invención
La presente invención se refiere, en general, al campo de los procesadores de datos digitales, y, más particularmente, a técnicas de acceso a un archivo de registros en un procesador multihilo.
Antecedentes de la invención
Típicamente, los espacios de almacenamiento en un sistema de ordenador u otro sistema basado en procesadores se segmentan en memoria y registros. Se describen configuraciones convencionales de archivos de registros, por ejemplo, en “Computer Architecture: Pipelined and Parallel Processor Design”, de M.J. Flynn, Jones and Bartlett Publishers, Boston, Ma, 1995, y “Computer Architecture: Concepts and Evolution”, de G.A. Blaauw y Frederick P. Brooks, Addison-Wesley, Reading, Massachusetts, 1997.
Un archivo de registros dado puede ser un archivo de registros denominado “de propósito general”, el cual, típicamente, se refiere a un archivo de registros utilizable para el almacenamiento de resultados intermedios o, dicho de otra manera, temporales, asociados a funciones de múltiples instrucciones dentro del procesador. Históricamente, solo una instrucción accedía activamente a un archivo de registros de propósito general por cada ciclo de procesador, de tal manera que el número de puertos de registro requeridos era mínimo. No obstante, típicamente los procesadores actuales tienen muchas instrucciones activas en un ciclo de procesador dado, y, por lo tanto, múltiples accesos al archivo de registros por cada ciclo de procesador. Por ejemplo, un procesador multihilo proporciona una concurrencia elevada a través de la ejecución simultánea de múltiples secuencias o “hilos” de instrucciones diferenciadas, almacenándose los resultados temporales en archivos de registros.
Estas y otras disposiciones similares en los procesadores actuales pueden dar como resultado un aumento sustancial de la “presión de puertos”, es decir, el número de puertos requeridos para un archivo de registros. Desafortunadamente, uno de los problemas significativos asociado a la presión de puertos de los archivos de los registros es que un aumento del número de puertos de archivos de registros hace que aumente sustancialmente asimismo la disipación de potencia del procesador. Típicamente el consumo de potencia asociado a los puertos de los archivos de registros es atribuible principalmente a los puertos de escritura del archivo de registros.
Uno de los ejemplos de procesador actual que incluye un archivo de registros de propósito general es el C64x de Texas Instruments (TI), descrito en la TMS320C6000 CPU and Instruction Set Reference Guide, SPRZ168B, http://www-s.ti.com/sc/psheets/sprz168b/sprz168b.pdf. El C64x de TI utiliza un tipo de arquitectura de palabras de instrucciones muy largas (VLIW) en la que se pueden emitir hasta ocho instrucciones por ciclo, de manera que una instrucción controla una unidad de ejecución del procesador. El archivo de registros del procesador incluye 64 registros. Una configuración del C64x tal que cada instrucción pueda acceder a la totalidad de los 64 registros requiere 26 puertos de lectura y 18 puertos de escritura, para un total de 44 puertos. No obstante, puesto que una disposición de este tipo es inabordable, los diseñadores del C64x decidieron, en su lugar, dividir por la mitad el acceso al archivo de registros, imponiendo así restricciones sobre el programador, aunque dividiendo los puertos entre las dos mitades. Sin embargo, el C64x sigue requiriendo un total de 44 puertos.
La reducción de la presión de puertos es, por lo tanto, un aspecto importante del diseño de los procesadores actuales, particularmente para procesadores multihilo y otros procesadores en los que puede haber activas muchas instrucciones en un ciclo de procesador dado. Existe en la técnica una necesidad de planteamientos para proporcionar reducciones de la presión de puertos, con el fin de hacer disminuir el consumo de potencia del procesador, sin que ello tenga un impacto en el nivel deseado de concurrencia.
La solicitud de patente US 2002/103990 da a conocer una arquitectura y un método de funcionamiento para un procesador de ordenador que admite la ejecución entrelazada de múltiples hilos simultáneamente activos usando identificadores de hilo para seleccionar bancos de memoria que se proporcionan individualmente para cada hilo. Se dan a conocer otros métodos de funcionamiento relacionados para procesadores multihilo en el documento US 5 778243 A y en el artículo científico de J.W. Haskins et al., “ Inexpensive Throughput Enhancement in Small-Scale Embedded Micro-processors with Block Multithreading: Extensions, Characterization, and Tradeoffs”, Proc. of the 2001 IEEE International Performance, Computing, and Communications Conference (IPCCC), Phoenix, AZ, 4-6 de abril, 2001, IEEE Nueva York, NY, US, Vol. Conf. 20, 4 de abril de 2001, págs. 319 a 328, ISBN: 0-7803-7001-5.
Sumario de la invención
La presente invención proporciona una configuración mejorada de archivos de registros y una técnica asociada de selección de archivos de registros basada en hilos para un procesador multihilo.
De acuerdo con la invención, un procesador multihilo determina un identificador de hilo asociado a un hilo de procesador particular, y utiliza por lo menos una parte del identificador de hilo para seleccionar una parte particular de un archivo de registros al que accederá el hilo de procesador correspondiente. Por ejemplo, para seleccionar una de una parte par y una parte impar del archivo de registros puede utilizarse un bit menos significativo u otra parte del identificador de hilo.
Como ejemplo más particular, un archivo de registros dado de propósito general se puede configurar en una pluralidad de conjuntos pares de registros y una pluralidad de conjuntos impares de registros, utilizándose una parte del identificador de hilo para habilitar o bien la pluralidad de conjuntos pares de registros o bien la pluralidad de conjuntos impares de registros.
Otros aspectos de la invención se refieren a una estructuración de hilos (“threading”) con activación por testigos, y a un procesado de instrucciones canalizado (“pipelined”). Por ejemplo, el procesador multihilo se puede configurar para implementar una estructuración de hilos con activación por testigos. Este tipo de estructuración de hilos utiliza un testigo para identificar, en asociación con un ciclo de reloj de procesador en curso, una unidad de hilo de hardware o contexto particular al que se le permitirá emitir una instrucción para un ciclo de reloj subsiguiente. Ventajosamente, la invención reduce de manera significativa el número de puertos de escritura requeridos de un archivo de registros, y reduce, de este modo, el consumo de potencia del procesador, sin pérdida alguna de rendimiento del mismo. Por ejemplo, en la forma de realización ilustrativa, pueden lograrse múltiples accesos de escritura al archivo de registros en un único ciclo de procesador usando solamente un único puerto de escritura.
Breve descripción de los dibujos
La figura 1 es un diagrama de bloques de un sistema de procesado de ejemplo en el que se implementa la invención.
La figura 2 es un diagrama de bloques con mayor detalle de una forma de realización ilustrativa de un procesador multihilo del sistema de procesado de la figura 1.
La figura 3 ilustra un ejemplo de estructuración de hilos con activación por testigos adecuada para su uso en el procesador multihilo de la figura 2 de acuerdo con las técnicas de la invención.
La figura 4 ilustra la manera en la que se pueden canalizar funciones de instrucciones de ejemplo en el procesador multihilo de la figura 2 de acuerdo con las técnicas de la invención.
La figura 5 representa un ejemplo de canalización de una sola emisión en la que cada uno de los hilos del procesador de la figura 2 emite una instrucción por ciclo.
La figura 6 representa un ejemplo de canalización de múltiples emisiones en la que cada uno de los hilos del procesador de la figura 2 emite dos instrucciones por ciclo.
La figura 7 representa un archivo de registros del procesador de la figura 2 configurado de acuerdo con una técnica de selección del archivo de registros basada en hilos de la presente invención.
Descripción detallada de la invención
La presente invención se ilustrará en la presente memoria implementada en un procesador multihilo que presenta, asociado al mismo, un archivo de registros de propósito general. No obstante, debe apreciarse que la invención no requiere el uso de las configuraciones particulares de procesador multihilo y archivo de registros de la forma de realización ilustrativa, y resulta adecuado de manera más general para su uso en cualquier aplicación de archivo de registros de un procesador multihilo en la que sea deseable proporcionar una reducción del número de puertos de escritura requeridos del archivo de registros y, por lo tanto, un consumo de potencia reducido.
En combinación con las figuras 1 y 2 se describe un sistema de procesado 100 de ejemplo que implementa una técnica de selección del archivo de registros basada en hilos de acuerdo con la invención.
La figura 1 representa el sistema de procesado 100 de manera que incluye un procesador multihilo 102 acoplado a una memoria principal 104. El procesador multihilo 102 incluye una memoria caché multihilo 110 y una memoria de datos multihilo 112.
La figura 2 representa una vista con mayor detalle de una posible implementación del procesador multihilo 102. En esta forma de realización, el procesador multihilo 102 incluye la memoria caché multihilo 110, la memoria de datos 112, un controlador de memorias caché 114, un descodificador de instrucciones 116, un archivo de registros 118, y un conjunto de unidades aritmeticológicas (ALU) 120. Se hace referencia a la memoria caché multihilo 110 asimismo en la presente memoria como caché multihilo.
Debe apreciarse que las disposiciones particulares representadas en las figuras 1 y 2 se simplifican para clarificar la ilustración, y pueden incluirse elementos adicionales o alternativos no mostrados explícitamente, tal como se pondrá de manifiesto para los expertos en la materia.
La memoria caché multihilo 110 incluye una pluralidad de memorias caché de hilo 110-1, 110-2... 110-N, donde N indica de manera general el número de hilos admitidos por el procesador multihilo 102. De este modo, cada hilo presenta, asociada al mismo, una memoria caché de hilo correspondiente en la memoria caché multihilo 110. De manera similar, la memoria de datos 112 incluye N instancias diferenciadas de memoria de datos, indicadas como memorias de datos 112-1, 112-2 ..., 112-N según se muestra.
Cada una de las memorias caché de hilo de la memoria caché multihilo 110 puede comprender una matriz de memoria que presenta uno o más conjuntos de posiciones de memoria. Una memoria caché de hilo dada puede comprender, además, un registro de identificador de hilo para almacenar un identificador de hilo asociado, tal como se describirá con mayor detalle a continuación en combinación con la figura 7.
La memoria caché multihilo 110 se interconecta con la memoria principal 104 por medio del controlador de memorias caché 114. El controlador de memorias caché 114 garantiza que, en la memoria caché multihilo 110, se cargan las instrucciones adecuadas de la memoria principal 104. En esta forma de realización ilustrativa, el controlador de memorias caché 114 que funciona en combinación con una circuitería lógica u otros elementos de procesado asociados a las memorias caché de hilo individuales 110-1, 110-2, ..., 110-N, implementa por lo menos una parte de una técnica de mapeo de direcciones, tal como un mapeo totalmente asociativo, un mapeo directo o un mapeo asociativo por conjuntos. En las solicitudes de patente US n° de serie 10/161.774 y 10/161.874, presentadas ambas el 4 de junio de 2002 y cedidas junto con la presente solicitud, se describen técnicas ilustrativas de mapeo asociativo por conjuntos adecuada para su uso en combinación con la presente invención.
En general, la memoria caché multihilo 110 se usa para almacenar instrucciones que serán ejecutadas por el procesador multihilo 102, mientras que la memoria de datos 112 almacena datos sobre los que actúan las instrucciones. De la memoria caché multihilo 110 recupera instrucciones el descodificador de instrucciones 116 el cual funciona junto con el archivo de registros 118 y las ALU 120 en el control de la ejecución de las instrucciones según una manera convencional. El funcionamiento de los elementos del procesador multihilo, tales como el 116 y 120, se entiende de manera clara en la técnica, y, por lo tanto, no se describe con mayor detalle en la presente memoria.
Típicamente, la memoria de datos 112 está conectada directamente a la memoria principal 104, aunque esta conexión no se representa explícitamente en la figura.
Una o más de las memorias 104, 110 y 112 se pueden configurar, cada una de ellas, de manera que incluyan múltiples bancos u otras partes designadas. A título de ejemplo, cada banco se puede considerar como constituido por uno o más módulos de memoria, o una parte especificada de un único módulo de memoria.
En la solicitud de patente US mencionada anteriormente, número de expediente 1007-5, titulada “Method and Apparatus for Thread-Based Memory Access in a Multithreaded Processor”, se describen técnicas para una estructuración en bancos, basada en hilos, de estas y otras memorias asociadas a un procesador multihilo.
Debe resaltarse que la presente invención no requiere la configuración de procesador multihilo particular mostrado en la figura 2. La invención se puede implementar en una amplia variedad de otras configuraciones de procesador multihilo.
En la solicitud provisional US n° de serie 60/341.289, presentada el 20 de diciembre de 2001, se describe un ejemplo más particular de procesador multihilo del tipo mostrado en la figura 2 y adecuado para su uso conjuntamente con la presente invención. Una forma de realización ilustrativa de un procesador multihilo según se describe en la solicitud provisional US n° de serie 60/341.289 tiene la capacidad de ejecutar código de control basado en RISC, código de procesador de señal digital (DSP), código Java y código de procesado de red. El procesador incluye una unidad de vectores de una sola instrucción-múltiples datos (SIMD), una unidad de reducción, y la ejecución de instrucciones compuestas de palabras de instrucción largas (LIW).
La presente invención según un aspecto de la misma proporciona una reducción sustancial de los requisitos de puertos del archivo de registros de un procesador multihilo tal como el procesador 102 de la figura 2. Más específicamente, tal como se describe con mayor detalle a continuación, el procesador 102 está configurado de acuerdo con las técnicas de la invención para utilizar una segmentación, basada en hilos, del archivo de registros junto con una estructuración de hilos con activación por testigos y una canalización de instrucciones con el fin de reducir los requisitos de puertos del archivo de registros. Entre otras ventajas, esta configuración permite que un único puerto de escritura de un archivo de registros admita múltiples escrituras simultáneas.
La figura 3 representa un ejemplo de estructuración de hilos con activación por testigos para una implementación del procesador 102 en la que el número de hilos N es ocho. En general, todos los hilos funcionan simultáneamente, y cada uno de ellos accede a una instancia correspondiente de la memoria caché de hilo 110 y la memoria de datos 112. Tal como se representa en la figura 3, los ocho hilos se indican como Hilo 0, Hilo 1, Hilo 2, ... Hilo 7, y se ilustran de manera que están interconectados en serie en forma de un anillo. En el procesador multihilo, un hilo dado se puede considerar de manera general en términos de hardware así como de software. Se hace referencia al hardware del procesador particular asociado a un hilo dado, por tanto, más particularmente, en la presente memoria, como unidad de hilos de hardware o simplemente “contexto”.
De acuerdo con la estructuración de hilos con activación por testigos que se ilustra en la figura 3, todas las unidades de hilos de hardware o contextos tienen el permiso para ejecutar simultáneamente instrucciones, pero solamente un contexto puede emitir una instrucción en un ciclo de reloj particular del procesador. En otras palabras, todos los contextos ejecutan simultáneamente pero solamente está activo un contexto en un ciclo de reloj particular. Por lo tanto, si existe un total de C contextos, serán necesarios C ciclos de reloj para emitir una instrucción desde todos los contextos. Cada ciclo de reloj, uno de los contextos emite una instrucción, y el siguiente hilo para emitir una instrucción se indica con un testigo. En el ejemplo de la figura 3, los testigos están dispuestos en una modalidad secuencial u ordenada cíclicamente, de tal manera que los contextos emitirán instrucciones secuencialmente. No obstante, los testigos que indican el siguiente contexto que va a emitir una instrucción se pueden disponer usando otros patrones, tales como un patrón alternado de par-impar. Además, tal como se ha mencionado anteriormente, en combinación con la presente invención pueden usarse otros tipos de estructuración de hilos.
La figura 4 ilustra la manera según la cual pueden canalizarse funciones de instrucciones de ejemplo en el procesador multihilo 102 de acuerdo con la presente invención. En la forma de realización ilustrativa de la invención, este tipo de canalización se utiliza, preferentemente, en combinación con la estructuración de hilos con activación por testigos descrita anteriormente, aunque debe apreciarse que, en la implementación de la invención, pueden usarse otras muchas combinaciones de canalización y estructuración de hilos.
La canalización de la figura 4 está configurada para usarse en combinación con la estructuración de hilos con activación por testigos de N = 8 ilustrativa de la figura 3. Las funciones de instrucciones de ejemplo de la figura 4 incluyen Carga/Almacenamiento (Ld/St), ALU, multiplicación entera (I_Mul) y multiplicación vectorial (V_Mul), y se muestran de manera que tienen, respectivamente, nueve, seis, siete y ocho etapas de canalización.
Cada una de las canalizaciones de las instrucciones de ejemplo ilustradas en la figura 4 incluye por lo menos una etapa de descodificación de instrucciones, una etapa de lectura de archivos de registros (RF), una etapa de transferencia (Xfer) y una etapa de postescritura (“writeback”) (WB). La etapa de lectura de RF implica una lectura de un archivo de registros, por ejemplo, el archivo de registros 118, la etapa de transferencia implica, típicamente, transferir resultados de instrucciones a un registro contenedor designado, y la etapa de WB implica una postescritura de resultados de instrucciones en memoria o un archivo de registros.
La canalización de Ld/St incluye, además, una etapa de generación de direcciones (Agen), una etapa de determinación de internalidad (Int) o externalidad (Ext), y tres etapas adicionales de ejecución de memoria, indicadas como Mem0, Mem1 y Mem2. De este modo, la canalización de Ld/St incluye un total de cuatro etapas de ejecución de memoria, es decir, Mem0, Mem1, Mem2 y WB. La etapa de determinación de internalidad o externalidad determina si el acceso a memoria asociado es a una memoria interna o externa, y puede considerarse como una etapa de descodificación adicional dentro de la canalización. Debe señalarse que puede que se requieran etapas de ejecución de memoria adicionales para ciertos accesos a memorias externas. Por ejemplo, si la etapa de WB de un acceso a memoria externa no se completa durante el periodo de tiempo durante el cual está activo el hilo correspondiente, el hilo puede estancarse de tal manera que la etapa de WB se completará la siguiente vez que esté activo el hilo.
La canalización de ALU incluye, además, dos etapas de ejecución indicadas como Exec1 y Exec2.
La canalización de I_Mul entera incluye, además, tres etapas de ejecución indicadas como Exec1, Exec2 y Exec3.
La canalización de V_Mul vectorial incluye, además, dos etapas de multiplicación MPY1 y MPY2, y dos etapas de suma Add1 y Add2.
Preferentemente, el procesador multihilo 102 se configura de tal manera que una vez que una instrucción de un contexto particular entra en su canalización correspondiente, se ejecuta hasta completarse.
Con una canalización configurada adecuadamente y un número suficiente de hilos, todos los contextos de hardware pueden ejecutarse simultáneamente aún cuando haya solo una única instrucción emitida por contexto y por ciclo. Tal como se ha mencionado anteriormente, el número particular de hilos y etapas de canalización tiene únicamente fines ilustrativos, y no está destinado a reflejar una puesta en práctica preferida. Los expertos en la materia podrán determinar fácilmente un número adecuado de hilos y etapas de canalización para una aplicación particular teniendo en cuenta las enseñanzas aportadas en la presente.
A continuación, en referencia a las figuras 5 y 6, se describe una serie de ejemplos del funcionamiento de la canalización de la figura 4. Los dibujos de las figuras 5 y 6 representan, cada uno de ellos, secuencias de instrucciones emitidas por hilos de procesador particulares, e indican, para cada instrucción, si el hilo correspondiente utiliza una parte par (e) o una parte impar (o) del archivo de registros 118. La figura 7 representa un ejemplo de cómo puede separarse el archivo de registros 118 en las partes par e impar, pudiéndose seleccionar una en particular de las partes con el uso de un identificador de hilo, de acuerdo con las técnicas de la invención.
En los ejemplos de las figuras 5 y 6, se supone, para simplificar y clarificar la descripción, que el número de hilos N es igual a 4, y que cada hilo emite instrucciones de acuerdo con una implementación cíclica de la estructuración de hilos con activación por testigos de la figura 3. Más específicamente, en estos ejemplos cada hilo emite instrucciones alternas de carga y multiplicación vectorial, que es una secuencia de instrucciones típica en muchas aplicaciones de procesado de señales. Las instrucciones de carga y multiplicación vectorial se configuran sustancialmente según se describe de acuerdo con la canalización de funciones de instrucciones mostrada en la figura 4.
En referencia a continuación a la figura 5, se representa un ejemplo de una canalización de una sola emisión, en la que cada hilo emite una instrucción por ciclo. A partir del diagrama de la figura 5, puede apreciarse que las partes del archivo de registros a las que acceden las instrucciones emitidas alternan de un hilo a otro entre par (e) e impar (o). Esto garantiza que las operaciones de postescritura de registros adyacentes, tales como aquellas asociadas a las etapas de postescritura de la primera instrucción de carga del hilo 4 y la instrucción de multiplicación vectorial del hilo 1, se dirigen a partes diferentes del archivo de registros. Más específicamente, la primera instrucción de carga del hilo 4 se dirige a una parte par del archivo de registros, mientras que la instrucción de multiplicación vectorial del hilo 1 se dirige a una parte impar del archivo de registros. Las otras instrucciones mostradas en el diagrama se configuran de manera similar.
Tal como se describirá junto con la figura 7, el identificador de hilo se usa para seleccionar si un hilo dado accederá a la parte par o la parte impar del archivo de registros. Por ejemplo, en el caso de N = 4 de las figuras 5 y 6, puede usarse el bit menos significativo (LSB) del identificador de hilo para seleccionar entre las partes par e impar del archivo de registros.
La figura 6 representa un ejemplo de canalización de múltiples emisiones en el que cada uno de los hilos del procesador emite dos instrucciones por ciclo. En este caso, un único hilo emite instrucciones tanto de carga como de multiplicación vectorial cada ciclo. Puesto que se emiten múltiples instrucciones por ciclo, se requieren dos puertos de lectura adicionales del archivo de registros con respecto al ejemplo de la figura 5. No obstante, tal como puede apreciarse en el diagrama, todas las escrituras simultáneas siguen siendo en partes pares o impares del archivo de registros, según se determina sobre la base del LSB del identificador de hilo, con lo que se reducen el número de puertos de escritura requeridos del archivo de registros y, por tanto, el consumo de potencia del procesador.
Debe resaltarse que el número particular de hilos mostrados en combinación con las figuras 5 y 6 es únicamente a título de ejemplo, y la invención no se limita a su uso con ningún número particular de hilos.
La figura 7 ilustra la manera en la que se configura el archivo de registros 118 del procesador multihilo 102 de acuerdo con la técnica descrita anteriormente de selección del archivo de registros basada en hilos de la presente invención. El archivo de registros 118 se representa de manera que está asociado a la circuitería de procesador 700 la cual incluye, además, un registro de identificador de hilo 702 y circuitería de selección 704. En esta forma de realización, el archivo de registros 118, que puede ser un archivo de registros de propósito general u otro tipo de archivo de registros asociado al procesador 102, está configurado en una serie de conjuntos pares de registros y una serie de conjuntos impares de registros. Más específicamente, el archivo de registros 118 se divide en una parte par que comprende conjuntos de registros pares T0 y T2 , y una parte impar que comprende conjuntos de registros impares T1 y T3.
Cada uno de los conjuntos de registros T0 , T1, T2 y T3 corresponde en general con uno de cuatro hilos en una forma de realización de N = 4, e incluye ocho registros vectoriales V0 , V1, V2 ... V7 , tal como se muestra. Cada uno de los ocho registros vectoriales V0, V1, V2 ... V7 incluye, en este ejemplo ilustrativo, cuatro elementos vectoriales de, por ejemplo, 40 bits cada uno de ellos. Por ejemplo, el registro vectorial V7 del conjunto de registros T0 incluye cuatro elementos vectoriales indicados como V28, V29, V30 y V31. Evidentemente, esta disposición particular se aporta únicamente a título de ejemplo, y podrían usarse otras muchas configuraciones.
Una parte del identificador de hilo, según está almacenada en el registro de identificador de hilo 702, se utiliza para habilitar o bien los conjuntos pares de registros o bien los conjuntos impares de registros. La circuitería de selección 704 comprende un multiplexor que excita una de sus salidas enable_even y enable_odd a un nivel lógico alto mientras que la otra se excita a un nivel lógico bajo, sobre la base del identificador de hilo.
Con otros valores de N asimismo puede usarse una configuración del archivo de registros similar a la ilustrada en la figura 7. Por ejemplo, esta configuración puede usarse en una forma de realización de N = 8, utilizándose un bit adicional del identificador de hilo en el proceso de selección.
La disposición descrita anteriormente permite que el archivo de registros 118 incluya un número significativamente reducido de puertos de escritura, y, por lo tanto, un menor consumo de potencia, con respecto al que, si no, se requeriría usando técnicas convencionales. En la disposición particular mostrada en la figura 7, y para una implementación de cuatro hilos, cada una de las partes par e impar del archivo de registros se puede configurar utilizando solamente un único puerto de escritura.
Usando las técnicas de la invención son posibles muchas configuraciones alternativas del archivo de registros. Por ejemplo, una posible configuración alternativa consiste en separar el archivo de registros en más de dos partes, en cuyo caso pueden usarse bits adicionales del identificador de hilo para seleccionar una parte particular del archivo de registros para su acceso por parte de un hilo dado del procesador. De manera más general, pueden usarse los n bits menos significativos del identificador de hilo para seleccionar una de 2n partes diferenciadas de un archivo de registros dado.
Otra posible configuración alternativa consiste en separar un único registro en al menos unas partes par e impar, con una selección, basada en hilos, de la parte par o impar. De manera más general, un único registro puede separarse en 2n partes diferenciadas.
Por lo tanto, el término “archivo de registros” según se usa en la presente está destinado a incluir cualquier disposición de uno o más registros. Un archivo de registros dado puede comprender, por lo tanto, a título de ejemplo y sin limitaciones, uno o más registros de propósito general, registros auxiliares, registros de bifurcaciones, registros de programa, etcétera, así como partes o combinaciones de los mismos.
Preferentemente, el registro de identificador de hilo 702 y la circuitería de selección 704 asociada se implementan como elementos del procesador multihilo 102. Por ejemplo, estos elementos se pueden implementar en su totalidad o en parte en el controlador de memorias caché 114, o en otra parte del procesador multihilo 102.
El registro de identificador de hilo 702 almacena un identificador de hilo de múltiples bits que es usado por el procesador multihilo 102 para identificar un hilo particular. Dichos identificadores de hilo se pueden generar según una manera convencional, tal como resultará evidente para los expertos en la materia.
El término “identificador de hilo” según se usa en la presente está destinado a incluir cualquier información adecuada para identificar un hilo particular o un conjunto de múltiples hilos en un procesador multihilo. A título de ejemplo no limitativo, el identificador de hilo puede corresponderse con la salida de un contador de hilos en un procesador multihilo. Más particularmente, un procesador multihilo dado puede configurarse de tal manera que se procesen múltiples hilos en un orden predeterminado, tal como un orden cíclico, usándose la salida del contador de hilos para identificar el hilo particular que se esté ejecutando. En una forma de realización de este tipo, puede haber un total de ocho hilos que se procesen en orden cíclico, tal como se ilustra en la figura 3, identificándose cada hilo con un identificador de tres bits, de tal manera que la salida de un contador de tres bits puede usarse para identificar el hilo particular que se esté procesando. Otras formas de realización pueden usar una implementación sin contadores del identificador de hilo. A los expertos en la materia les resultará evidente una amplia variedad de diferentes configuraciones del identificador de hilo adecuadas para su uso con la presente invención.
Tal como se ha mencionado anteriormente, las técnicas de selección del archivo de registros basadas en hilos de la presente invención proporcionan mejoras significativas con respecto a técnicas convencionales. Por ejemplo, las técnicas pueden reducir sustancialmente el número de puertos de escrituras requeridos del archivo de registros, con lo cual se reduce el consumo de potencia. Por otra parte, estas mejoras se aportan sin que tengan impacto sobre la concurrencia del procesador u otros aspectos del rendimiento del mismo.
Las formas de realización descritas anteriormente de la invención están destinadas únicamente a ser ilustrativas, y, a los expertos en la materia, les resultarán evidentes muchas formas de realización alternativas dentro del alcance de las reivindicaciones adjuntas. Por ejemplo, según se ha indicado anteriormente, un archivo de registros dado se puede dividir en más de solamente una parte par y una parte impar como en las figuras 5, 6 y 7, es decir, se puede dividir en n partes diferenciadas, con un incremento adecuado del número de bits del identificador de hilo usados para seleccionar una parte dada. Como ejemplo alternativo, las disposiciones particulares de la circuitería de selección usadas para implementar el proceso de selección pueden sustituirse por disposiciones alternativas. Por otra parte, la configuración del procesador multihilo, el número de hilos, la configuración del identificador de hilo y otros parámetros de las formas de realización ilustrativas se pueden variar para dar acomodo a las necesidades específicas de una aplicación dada.

Claims (20)

REIVINDICACIONES
1. Método para acceder a un archivo de registros (118) asociado a un procesador multihilo (102), presentando el procesador multihilo una memoria caché (110), comprendiendo el método:
determinar un identificador de hilo asociado a un hilo particular del procesador multihilo;
seleccionar una particular de entre partes separadas del archivo de registros (T0-T3) a la que debe accederse por el hilo de procesador correspondiente sobre la base de una estructuración de hilos con activación por testigos utilizando por lo menos una parte del identificador de hilo;
en el que el archivo de registros está separado de la memoria caché del procesador multihilo;
en el que la memoria caché extrae instrucciones a través de un descodificador de instrucciones; y en el que se accede a las partes separadas del archivo de registros por los hilos del procesador multihilo de manera alternada durante una pluralidad de ciclos de reloj del procesador de manera que los accesos de registro por hilos impares se dirigen a partes diferentes del archivo de registros en comparación con los hilos pares.
2. Método según la reivindicación 1 en el que utilizar una parte del identificador de hilo comprende utilizar una parte del identificador de hilo para seleccionar una de una primera parte y una segunda parte del archivo de registros para el acceso por el hilo de procesador correspondiente.
3. Método según la reivindicación 2 en el que seleccionar las partes del archivo de registros comprende utilizar un bit menos significativo del identificador de hilo.
4. Método según la reivindicación 2, en el que el archivo de registros comprende una pluralidad de conjuntos de registros, y la etapa de utilización comprende además habilitar o bien una primera pluralidad de conjuntos de registros o bien una segunda pluralidad de conjuntos de registros para el acceso por el hilo de procesador correspondiente.
5. Método según la reivindicación 1 en el que seleccionar las partes del archivo de registros comprende aplicar la parte del identificador de hilo a una circuitería de selección configurada para generar señales de habilitación para las partes seleccionadas del archivo de registros.
6. Método según la reivindicación 1 en el que el archivo de registros comprende 2n partes diferentes, y los n bits menos significativos del identificador de hilo se utilizan para seleccionar una de las 2n partes diferentes del archivo de registros para el acceso por el hilo de procesador correspondiente.
7. Método según la reivindicación 1 en el que acceder al archivo de registros comprende acceder a una parte de un archivo de registros de propósito general.
8. Método según la reivindicación 1 en el que determinar un identificador de hilo asociado a un hilo particular del procesador multihilo comprende acceder a un registro de identificador de hilo que almacena el identificador de hilo.
9. Método según la reivindicación 8, en el que acceder al registro de identificador de hilo comprende acceder a un registro de identificador de hilo asociado a una caché de hilo correspondiente al hilo particular del procesador multihilo.
10. Método según la reivindicación 1 en el que la estructuración de hilos con activación por testigos comprende utilizar un testigo para identificar en asociación con un ciclo de reloj del procesador en curso un contexto particular al que se le permitirá emitir una instrucción para un ciclo de reloj subsiguiente.
11. Método según la reivindicación 1 en el que la estructuración de hilos con activación por testigos comprende asignar testigos diferentes a cada uno de una pluralidad de hilos del procesador multihilo.
12. Método según la reivindicación 1 que comprende además procesar unas instrucciones canalizadas.
13. Método según la reivindicación 12 en el que el procesado de instrucciones canalizadas utiliza una canalización de instrucciones en la que cada hilo emite una única instrucción por ciclo de reloj del procesador.
14. Método según la reivindicación 12, en el que el procesador multihilo utiliza una canalización de instrucciones en la que cada hilo emite múltiples instrucciones por ciclo de reloj del procesador.
15. Método según la reivindicación 14 en el que cada uno de una pluralidad de los hilos emite tanto una instrucción de carga como una instrucción de multiplicación vectorial en cada uno de una pluralidad correspondiente de ciclos de reloj del procesador sin estancamiento de ninguno de la pluralidad de hilos.
16. Método según la reivindicación 1 en el que acceder al archivo de registros comprende o bien acceder a un único registro o bien acceder a una pluralidad de registros.
17. Método según la reivindicación 1 en el que se accede secuencialmente a cada uno de N hilos en cada ciclo de reloj hasta que se accede al hilo N-ésimo.
18. Método según la reivindicación 1 en el que se accede a unos primer y segundo hilos en un ciclo de reloj, se accede a unos tercer y cuarto hilos en un ciclo de reloj siguiente hasta que se accede secuencialmente a los hilos N-1-ésimo y N-ésimo en cada ciclo de reloj subsiguiente.
19. Procesador multihilo (102) que presenta un archivo de registros (118) asociado que comprende unas partes separadas, presentando además el procesador multihilo una memoria caché (110),
en el que el procesador multihilo es operativo para determinar un identificador de hilo asociado a un hilo particular del procesador multihilo, y para seleccionar una particular de entre las partes separadas del hilo del archivo de registros (T0-T3) sobre la base de una estructuración de hilos con activación por testigos utilizando por lo menos una parte del identificador de hilo,
en el que el archivo de registros está separado de la memoria caché del procesador multihilo,
en el que la memoria caché extrae instrucciones a través de un descodificador de instrucciones; y en el que el procesador multihilo está adaptado para controlar sus hilos tal como para acceder a las partes separadas del archivo de registros de manera alternada durante una pluralidad de ciclos de reloj del procesador de manera que los accesos de registro por hilos impares se dirigen a partes diferentes del archivo de registros en comparación con los hilos pares.
20. Artículo de fabricación que comprende un soporte de almacenamiento legible por máquina que presenta incorporado en el mismo un código de programa para la utilización en el acceso a un archivo de registros (118) asociado a un procesador multihilo (102), presentando el procesador multihilo una memoria caché (110), en el que el código de programa, cuando es ejecutado por el procesador, implementa las etapas de:
determinar un identificador de hilo asociado a un hilo particular del procesador multihilo; y
seleccionar una particular de entre partes separadas del archivo de registros (T0-T3) a la que debe accederse mediante el hilo de procesador correspondiente sobre la base de una estructuración de hilos con activación por testigos utilizando por lo menos una parte del identificador de hilo;
en el que el archivo de registros es separado de la memoria caché del procesador multihilo;
en el que la memoria caché extrae instrucciones a través de un descodificador de instrucciones; y en el que se accede a las partes separadas del archivo de registros por los hilos del procesador multihilo de manera alternada durante una pluralidad de ciclos de reloj del procesador de manera que los accesos de registro por hilos impares se dirigen a partes diferentes del archivo de registros en comparación con los hilos pares.
ES03774678T 2002-10-11 2003-10-09 Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo Expired - Lifetime ES2848383T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,373 US6904511B2 (en) 2002-10-11 2002-10-11 Method and apparatus for register file port reduction in a multithreaded processor
PCT/US2003/031904 WO2004034209A2 (en) 2002-10-11 2003-10-09 Method and apparatus for register file port reduction in a multithreaded processor

Publications (1)

Publication Number Publication Date
ES2848383T3 true ES2848383T3 (es) 2021-08-09

Family

ID=32068767

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03774678T Expired - Lifetime ES2848383T3 (es) 2002-10-11 2003-10-09 Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo

Country Status (8)

Country Link
US (1) US6904511B2 (es)
EP (2) EP2600242A1 (es)
JP (1) JP4187720B2 (es)
KR (1) KR100988955B1 (es)
CN (1) CN100342325C (es)
AU (1) AU2003282486A1 (es)
ES (1) ES2848383T3 (es)
WO (1) WO2004034209A2 (es)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193846A1 (en) * 2003-03-28 2004-09-30 Sprangle Eric A. Method and apparatus for utilizing multiple opportunity ports in a processor pipeline
EP2290525A3 (en) 2003-05-09 2011-04-20 Aspen Acquisition Corporation Processor reduction unit for accumulation of multiple operands with or without saturation
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7890735B2 (en) * 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20060230253A1 (en) * 2005-04-11 2006-10-12 Lucian Codrescu Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
KR101545357B1 (ko) * 2006-11-10 2015-08-18 퀄컴 인코포레이티드 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8677101B2 (en) * 2007-06-07 2014-03-18 International Business Machines Corporation Method and apparatus for cooperative software multitasking in a processor system with a partitioned register file
JP5104863B2 (ja) 2007-06-20 2012-12-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP2159688A4 (en) * 2007-06-20 2011-01-05 Fujitsu Ltd INSTRUCTION MANAGEMENT CONTROL AND INSTRUCTION MANUAL CONTROL PROCEDURES
US8224884B2 (en) * 2007-07-06 2012-07-17 XMOS Ltd. Processor communication tokens
US8725991B2 (en) * 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
WO2009061547A1 (en) * 2007-11-05 2009-05-14 Sandbridge Technologies, Inc. Method of encoding register instruction fields
US8539188B2 (en) * 2008-01-30 2013-09-17 Qualcomm Incorporated Method for enabling multi-processor synchronization
US20100031007A1 (en) * 2008-02-18 2010-02-04 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
US8762641B2 (en) * 2008-03-13 2014-06-24 Qualcomm Incorporated Method for achieving power savings by disabling a valid array
US8732382B2 (en) 2008-08-06 2014-05-20 Qualcomm Incorporated Haltable and restartable DMA engine
US9207995B2 (en) 2010-11-03 2015-12-08 International Business Machines Corporation Mechanism to speed-up multithreaded execution by register file write port reallocation
JP5283739B2 (ja) * 2011-09-27 2013-09-04 インテル・コーポレーション プロセッサ内のマルチスレッド間通信
US9323528B2 (en) * 2012-12-20 2016-04-26 Intel Corporation Method, apparatus, system creating, executing and terminating mini-threads
GB2501791B (en) * 2013-01-24 2014-06-11 Imagination Tech Ltd Register file having a plurality of sub-register files
US9508112B2 (en) 2013-07-31 2016-11-29 Apple Inc. Multi-threaded GPU pipeline
US9377968B2 (en) 2013-11-13 2016-06-28 Sandisk Technologies Llc Method and system for using templates to communicate with non-volatile memory
US9390033B2 (en) 2013-11-13 2016-07-12 Sandisk Technologies Llc Method and system for communicating with non-volatile memory via multiple data paths
US9430411B2 (en) 2013-11-13 2016-08-30 Sandisk Technologies Llc Method and system for communicating with non-volatile memory
GB2520731B (en) * 2013-11-29 2017-02-08 Imagination Tech Ltd Soft-partitioning of a register file cache
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
JP5630798B1 (ja) * 2014-04-11 2014-11-26 株式会社Murakumo プロセッサーおよび方法
US10514911B2 (en) 2014-11-26 2019-12-24 International Business Machines Corporation Structure for microprocessor including arithmetic logic units and an efficiency logic unit
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US11294815B2 (en) * 2015-06-10 2022-04-05 Mobileye Vision Technologies Ltd. Multiple multithreaded processors with shared data cache
US20170177351A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Even and Odd Vector Get Operations
US10338920B2 (en) 2015-12-18 2019-07-02 Intel Corporation Instructions and logic for get-multiple-vector-elements operations
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226131A (en) * 1989-12-27 1993-07-06 The United States Of America As Represented By The United States Department Of Energy Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5649135A (en) * 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5659785A (en) * 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6317821B1 (en) * 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6260189B1 (en) * 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6256725B1 (en) * 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6230251B1 (en) * 1999-03-22 2001-05-08 Agere Systems Guardian Corp. File replication methods and apparatus for reducing port pressure in a clustered processor
US6269437B1 (en) * 1999-03-22 2001-07-31 Agere Systems Guardian Corp. Duplicator interconnection methods and apparatus for reducing port pressure in a clustered processor
US6282585B1 (en) * 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6643747B2 (en) * 2000-12-27 2003-11-04 Intel Corporation Processing requests to efficiently access a limited bandwidth storage area
US20020103990A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Programmed load precession machine
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads

Also Published As

Publication number Publication date
WO2004034209A2 (en) 2004-04-22
KR20050054998A (ko) 2005-06-10
US20040073779A1 (en) 2004-04-15
JP4187720B2 (ja) 2008-11-26
JP2006502504A (ja) 2006-01-19
CN100342325C (zh) 2007-10-10
US6904511B2 (en) 2005-06-07
EP2600242A1 (en) 2013-06-05
EP1550030A4 (en) 2008-03-05
KR100988955B1 (ko) 2010-10-20
EP1550030B1 (en) 2020-11-18
AU2003282486A8 (en) 2004-05-04
WO2004034209A3 (en) 2004-09-02
EP1550030A2 (en) 2005-07-06
AU2003282486A1 (en) 2004-05-04
CN1708745A (zh) 2005-12-14

Similar Documents

Publication Publication Date Title
ES2848383T3 (es) Método y aparato para la reducción de puertos de archivo de registros en un procesador multihilo
US6842848B2 (en) Method and apparatus for token triggered multithreading
ES2758623T3 (es) Método y aparato para un acceso a memoria basado en hilos en un procesador multihilo
KR101295569B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
WO2017223006A1 (en) Load-store queue for multiple processor cores
EP3746883B1 (en) Processor having multiple execution lanes and coupling of wide memory interface via writeback circuit
US20060212678A1 (en) Reconfigurable processor array exploiting ilp and tlp
KR100636596B1 (ko) 고에너지 효율 병렬 처리 데이터 패스 구조