ES2330318T3 - Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas. - Google Patents

Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas. Download PDF

Info

Publication number
ES2330318T3
ES2330318T3 ES02807083T ES02807083T ES2330318T3 ES 2330318 T3 ES2330318 T3 ES 2330318T3 ES 02807083 T ES02807083 T ES 02807083T ES 02807083 T ES02807083 T ES 02807083T ES 2330318 T3 ES2330318 T3 ES 2330318T3
Authority
ES
Spain
Prior art keywords
sub
instruction
subprocessors
instructions
processor
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
ES02807083T
Other languages
English (en)
Inventor
Hidetaka Magoshi
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Application granted granted Critical
Publication of ES2330318T3 publication Critical patent/ES2330318T3/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
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/20Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
    • A63F2300/203Image generating hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un sistema (100) informático multiproceso, que comprende: un procesador (202) principal operable para gestionar el procesado de bucles de instrucciones de un programa, incluyendo cada bucle de instrucciones una o más sub-instrucciones; y una pluralidad de sub-procesadores (204, 206) operables para procesar cada sub-instrucción en una pluralidad de etapas secuenciales, caracterizado porque al menos un primer sub-procesador (204) es operable para recibir secuencialmente la o las sub-instrucciones del procesador (202) principal y para propagar la sub-instrucción a un subprocesador (206) subsiguiente, y al menos un segundo sub-procesador es operable para recibir secuencialmente la o las sub-instrucciones del primer sub-procesador; donde el procesador (202) principal y la pluralidad de sub-procesadores (204, 206) están dispuestos juntos en cascada de modo que diferentes sub-procesadores son operables para ejecutar diferentes operaciones relativas a diferentes iteraciones de bucle respectivas de una sub-instrucción dada durante un ciclo dado; y el procesador principal controla las iteraciones de bucle pasando información a los sub-procesadores.

Description

Métodos y aparato para la ejecución multiproceso de instrucciones informáticas.
Campo de la técnica
La presente invención se refiere a la ejecución de instrucciones informáticas o de ordenador, y, más particularmente, la presente invención se refiere a la ejecución eficiente de operaciones en bucle utilizando múltiples sub-procesadores.
Técnica anterior
Se utilizan sistemas informáticos o de ordenador para efectuar una variedad de tareas en un amplio rango de aplicaciones. Frecuentemente, un microprocesador controla el funcionamiento del sistema informático o de ordenador. El microprocesador puede ser programado para manejar operaciones específicas de un modo particular. Típicamente, el microprocesador recoge o bien recibe una instrucción. La instrucción le dice al microprocesador que efectúe una operación, por ejemplo añadir datos, saltar a una parte diferente de un programa, o efectuar una operación lógica. Efectuar la operación puede incluir una o más operaciones de decodificar la instrucción, calcular una dirección en memoria, acceder/leer datos de memoria, ejecutar la instrucción empleando los datos y escribir un resultado en memoria.
Ciertas aplicaciones, como los gráficos informáticos o de ordenador, son computacionalmente intensivas, y pueden requerir efectuar muchas instrucciones para interpretar y mostrar una imagen en un dispositivo de visualización. Una aplicación de gráficos informáticos o de ordenador particularmente intensiva computacionalmente es el procesado de gráficos en tres dimensiones para el sombreado de polígonos/píxeles (por ejemplo, sombreado de gráficos). Por ejemplo, un juego informático o de ordenador puede mostrar una bola lanzada de un jugador a otro jugador. La bola y otros objetos en la pantalla se pueden representar como una serie de polígonos. A medida que la bola se mueve a través de la pantalla, el sombreado de la bola y los objetos cubiertos por su sombra puede cambiar. El microprocesador puede calcular y/o recalcular el sombreado para cada elemento de dibujo ("PEL") de cada polígono que la bola y la sombra intersectan. Dichos cálculos pueden incluir múltiples iteraciones (es decir, bucles) y millones de cálculos.
Un inconveniente del hecho de que un único microprocesador maneje todas las instrucciones y cálculos para una operación en particular, como en el ejemplo de sombreado de gráficos mostrado, es el tiempo. Típicamente, cuantas más instrucciones se llevan a cabo, mayor tiempo global requiere el cálculo. Un procedimiento para manejar tales aplicaciones computacionalmente intensivas es que el microprocesador rompa una tarea y distribuya porciones de la tarea entre uno o más sub-procesadores. La tarea puede ser una o más instrucciones, o puede ser uno o más segmentos de una sola instrucción. Dividir la tarea entre sub-procesadores reduce el tiempo necesario para completar la tarea. Otros beneficios incluyen una mayor capacidad de procesamiento de datos y una mayor fiabilidad del sistema. También, debido a que los sub-procesadores efectúan repetidamente operaciones idénticas o similares, los sub-procesadores pueden adaptarse para efectuar eficientemente dichas operaciones (por ejemplo, efectuar un subconjunto de instrucciones).
En un procedimiento de distribuir tareas, el procesador principal envía una instrucción a un grupo de sub-procesadores en paralelo. En otro procedimiento de distribuir tareas entre sub-procesadores, el procesador principal envía instrucciones a una serie de sub-procesadores secuencialmente. Desafortunadamente, estos métodos tienen inconvenientes asociados.
Un problema con distribuir porciones de una tarea entre sub-procesadores es la posibilidad de un error en la secuencia, donde algunas porciones de la tarea se procesan en desorden, generando así datos incorrectos. El sub-procesado en paralelo puede ser particularmente susceptible de errores en la secuencia. Otro problema es la necesidad de que le microprocesador o procesador principal lleve un control del funcionamiento de los sub-procesadores y recursos compartidos (por ejemplo, el bus de datos/direcciones). Otro problema más es la escalabilidad. Ciertas arquitecturas informáticas o de ordenador pueden manejar únicamente unos pocos sub-procesadores, mientras que otras arquitecturas pueden ser capaces de manejar cualquier número de sub-procesadores. Además, debido a que los sub-procesadores secuenciales reciben las tareas una a una, el sub-procesado secuencial requiere más tiempo que el sub-procesado en paralelo.
Se han desarrollado y empleado varias técnicas para aliviar dichos problemas. Por ejemplo, una arquitectura informática o de ordenador incluye un procesador principal y múltiples sub-procesadores dedicados que están físicamente conectados según una configuración deseada. Aunque que tal arquitectura informática o de ordenador puede reducir el tiempo de cálculo, la configuración cableada es inflexible y puede emplear de manera ineficiente recursos de computación escasos. Específicamente, los sub-procesadores cableados incluyen un flujo de datos fijo con funciones de conmutación no/s.f. y parámetros programables. Sin embargo, dicha funcionalidad no proporciona la flexibilidad adecuada para efectuar aplicaciones computacionalmente intensivas, como el ejemplo del sombreado de gráficos descrito anteriormente. Por tanto, son deseables arquitecturas alternativas para resolver de modo adecuado los problemas anteriores.
El documento de Burras D titulado "Concurrencia basada en bucle identificada como óptima para explotar el paralelismo", Competer Tecnología Rebién, Westworld production, Beverly Hills, Ca, US.- vol 8, nº 16, 21 de diciembre de 1988 (21-12-1988), páginas 19-20, XP000119261 ISSN: 0278-9647, describe un sistema informático o de ordenador en el que muchas iteraciones de un bucle FORTRAN DO son asignadas a procesadores diferentes de entre una pluralidad de ellos (elementos computacionales, CE) para acelerar la ejecución del bucle. Los elementos computacionales tienen respectivas unidades de control de concurrencia (CCUs) que están conectados a un bus de control de concurrencia común y que proporcionan un mecanismo para la programación y sincronización. Durante el uso, las instrucciones que avisan a los CCUs de que efectúen funciones de programación incluyen una instrucción CSTART. Inicialmente, un único procesador que ejecuta código en serie inicializa una sección de código para su ejecución en paralelo. Ese procesador alcanzará una instrucción CSTART al principio de la sección de código en paralelo. CSTART tiene como un parámetro un puntero al número de iteraciones de un bucle. El número de iteraciones, así como el contador del programa, el puntero de la pila y el número de CEs instalados actualmente son entonces enviados al CCU de cada CE mediante el bus CCU. Cuando un CE ha terminado una iteración, puede pedir otra.
El documento de Anderson R E, et al titulado "Ejecución en cascada: acelerar la ejecución no paralela en multiprocesadores con memoria compartida", Procedimientos del 13 Simposio Internacional de Procesado en Paralelo y 10º Simposio sobre Procesado en Paralelo y Distribuido, IPPS/SPDP, 1999, IEEE Comput. Soc Los Alamitos, CA, USA, 1999, páginas 714-719, XP002412405 ISBN 0-7695-0143-5, describe una técnica para acelerar la ejecución de bucles no en paralelo mediante una ejecución secuencial en cascada empleando múltiples procesadores. Sólo un único procesador ejecuta el cuerpo del bucle en cualquier momento, y cada procesador ejecuta sólo una porción del bucle antes de pasar el control a otro.
El documento de Masaka Toyokura et al titulado "Un video DSP con un macroblock-leve-pipeline y una arquitectura vector-pipeline de tipo SIMD para codec MPEG2", del Journal IEEE de Circuitos de Estado Sólido, Centro de Servicio IEEE, Piscataway, NJ, US, vol 29, nº 12, 1 de diciembre de 1994 (01-12-1994), páginas 1474-1481, XP000495322 ISSN: 0018-9200, describe otro sistema informático multiproceso de relevancia para la técnica anterior de la presente invención.
Compendio de la invención
La presente invención proporciona un sistema informático multiproceso de acuerdo con la reivindicación independiente 1 del presente documento y un procedimiento de multiproceso de acuerdo con la reivindicación independiente 33 del presente documento.
Las características opcionales (pero no esenciales) de la invención se describen en las otras reivindicaciones
(dependientes).
Breve descripción de los dibujos
La invención se describirá con mayor detalle a continuación, a modo de ejemplo, haciendo referencia a las figuras adjuntas, en las que:
La Fig. 1 es un diagrama a alto nivel de una arquitectura de un sistema informático o de ordenador para el procesado de instrucciones que emplea uno o más aspectos de la presente invención.
La Fig. 2 es un diagrama de arquitectura más detallado del procesado de instrucciones de acuerdo con uno o más aspectos de la presente invención.
La Fig. 3A es un diagrama de flujo que ilustra el procesado de instrucciones por un procesador principal de acuerdo con uno o más aspectos de la presente invención.
La Fig. 3B es un diagrama de flujo que ilustra el procesado de instrucciones por un sub-procesador de acuerdo con uno o más aspectos de la presente invención.
La Fig. 4 es un diagrama de alto nivel de una arquitectura de un sistema informático o de ordenador para dispositivos en cascada que emplea uno o más aspectos de la presente invención.
Mejor modo de llevar a cabo la invención
Haciendo referencia ahora a los dibujos, donde números parecidos indican elementos parecidos, se muestra en la Fig. 1 una arquitectura 100 de un sistema multiproceso que emplea uno o más aspectos de la presente invención. La arquitectura 100 del sistema multiproceso incluye un procesador 102 principal y múltiples sub-procesadores 104, 106, 108 y 110. Aunque se ilustran en la Fig. 1 cuatro sub-procesadores, la arquitectura 100 del sistema multiproceso puede emplear cualquier número de sub-procesadores. Preferiblemente, se emplean al menos dos sub-procesadores. No hay limitación teórica sobre el número de sub-procesadores que se pueden emplear.
El procesador 102 principal es preferiblemente un microprocesador polivalente capaz de ejecutar instrucciones informáticas o de ordenador generales. El procesador 102 principal preferiblemente acepta interrupciones para detener o pausar la ejecución de una operación particular. En una realización preferida, el procesador 102 principal tiene una arquitectura super-escalar. En otra realización preferida, el procesador 102 principal tiene una arquitectura de Palabra de Instrucción Muy Larga ("VLIW"). Las arquitecturas super-escalar y VLIW son sólo ejemplos, y no se deberían entender como limitantes de la arquitectura del procesador 102 principal que está dentro del ámbito de la invención. Preferiblemente, una Unidad Lógica y Aritmética ("ALU") y un archivo de registro del procesador 102 principal operan sobre los datos vectoriales empleados en el procesado de gráficos, como es bien conocido en la técnica. La ALU efectúa transformaciones de datos básicas, como operaciones lógicas y aritméticas (por ejemplo, "AND", "OR", "NOT", etc.). El archivo de registro proporciona almacenamiento temporal al ejecutar instrucciones.
A modo de ejemplo únicamente, el procesador 102 principal puede efectuar instrucciones informáticas o de ordenador que incluyen cargar/almacenar datos, operaciones lógicas y aritméticas, y saltos, desplazamientos e instrucciones ramificadas. Preferiblemente, el procesador 102 principal es operable para opcionalmente llevar a cabo una recogida I de instrucciones, una decodificación D de instrucciones, un cálculo A de direcciones, una ejecución E de instrucciones, y una operación W de escritura. Durante la recogida I de instrucciones, se extrae una instrucción de la memoria para la ejecución. Un mecanismo de recogida de instrucciones (por ejemplo, una unidad de control del procesador 102 principal) preferiblemente efectúa la recogida I de instrucciones. El mecanismo de recogida de instrucciones preferiblemente incluye una memoria caché de instrucciones. Durante la decodificación D de instrucciones, se determina qué instrucción se ha recogido. La decodificación D de instrucciones puede, por ejemplo, emplear una tabla de consulta de instrucciones. Por ejemplo, cada instrucción puede estar representada por un código. Durante la decodificación D de instrucciones, la tabla de consulta de instrucciones se puede emplear para identificar la instrucción correspondiente al código. Durante el cálculo A de direcciones, se identifica una dirección en memoria. La dirección en memoria puede contener datos para su uso en la ejecución E de instrucciones. La memoria puede estar situada en un dispositivo remoto del procesador 102 principal ("off-chip"), o puede estar situada en el mismo dispositivo que el procesador 102 principal ("on-chip"). La memoria puede ser una memoria caché local. Durante la ejecución E de instrucciones, la ALU lleva a cabo la instrucción (por ejemplo, "AND", "OR", "LOOP", "JUMP"). La operación de escritura W provoca que se escriba un resultado en memoria, bien en la misma o en una localización diferente de donde se almacenaron los datos, o bien devuelve un resultado.
La arquitectura 100 del sistema multiproceso está diseñada para ejecutar operaciones en bucle eficientemente, y por tanto para efectuar de modo efectivo cálculos computacionalmente intensivos. Por ejemplo, un bucle de un ejemplo de programa incluye el proceso siguiente:
For (j=0; j<Num; j++)
{
Operation (j)
}
El procesador 102 principal gestiona el procesado de bucles de instrucciones. El procesador 102 principal preferiblemente efectúa operaciones fuera de los bucles (por ejemplo, gestiona el contador para que incremente desde j=0 hasta j<Num) y controla los bucles pasando información a los sub-procesadores 104, 106, 108 y 110. Los bucles son preferiblemente controlados de acuerdo al número de sub-procesadores 104, 106, 108 y 110 y al número de bucles a efectuar. Los sub-procesadores 104, 106, 108 y 110 efectúan la operación (Operation (j)) dentro de cada bucle. La operación puede incluir una o más sub-operaciones.
Como se muestra mediante las flechas 120, 122, 124 y 126, el procesador 102 principal y los sub-procesadores 104, 106, 108 y 110 se disponen en cascada. El flujo de información que muestran las flechas 120, 122, 124 y 126 se implementa preferiblemente utilizando un bus en cascada. El bus en cascada preferiblemente comprende un bus de códigos de instrucciones que pasa instrucciones y otra información entre el procesador 102 principal y los sub-procesadores 104, 106, 108 y 110. Más preferiblemente, el bus en cascada es bi-direccional. El flujo de información desde el procesador 102 principal al sub-procesador 104 (por ejemplo, el primer sub-procesador) incluye uno o más de entre código de instrucción, información decodificada, datos, parámetros o similares, así como un contador de bucles, que se explicará más adelante haciendo referencia a las Figs. 3A-B. El sub-procesador 104 puede entonces pasar parte o toda esta información al sub-procesador 106.
Cada sub-procesador 104, 106, 108 y 110 es operable para efectuar un conjunto de instrucciones predefinido (por ejemplo, sub-instrucciones). Este conjunto de instrucciones es preferiblemente común a todos los sub-procesadores 104, 106, 108 y 110. En una realización preferida, las sub-instrucciones incluyen todas las instrucciones utilizadas por el procesador 102 principal excepto instrucciones relacionadas con el contador del programa, como "branch" y "jump". Los sub-procesadores 104, 106, 108 y 110 preferiblemente no aceptan interrupciones. Un conjunto de sub-instrucciones como este es utilizado preferiblemente para llevar a cabo operaciones de un bucle. Los sub-procesadores 104, 106, 108 y 110 efectúan una o más operaciones en cada sub-instrucción, incluyendo una decodificación instrucción d, un cálculo de dirección a, una ejecución de instrucción e y una operación de escritura w. Las operaciones d, a, e y w son en gran medida equivalentes a las operaciones D, A, E y W descritas anteriormente con referencia al procesador 102 principal. Preferiblemente, la operación de escritura w incluye reenviar información de estado, resultados y similares desde un sub-procesador 104, 106, 108 o 110 al procesador 102 principal.
El procesador 102 principal preferiblemente efectúa las operaciones I, D, A, E, W, y los sub-procesadores 104, 106, 108, 110 efectúan preferiblemente las operaciones d, a, e y w en los respectivos conductos de instrucciones. Los conductos de instrucciones para cada sub-procesador 104, 106, 108 y 110 y el procesador 102 principal funcionan secuencialmente, como se explicará con referencia a la Fig. 2.
La Fig. 2 ilustra la arquitectura 100 del sistema multiproceso de la Fig. 1 con mayor detalle. Entre las capacidades de esta arquitectura está efectuar múltiples bucles en paralelo, de forma que las tareas de los bucles se dividen entre múltiples sub-procesadores 204, 206, 208 etc. a la vez que mantienen un funcionamiento secuencial. Más particularmente, la Fig. 2 ilustra una imagen 200 instantánea de una serie de bucles de instrucciones de ejemplo en un instante específico en el tiempo (por ejemplo, un ciclo). Un procesador 202 principal recoge o recibe una serie de instrucciones (preferiblemente de modo secuencial), incluyendo instrucciones mi para el procesador principal y sub-instrucciones si-1, si-2, ..., si-8. En el ciclo actual de funcionamiento de la imagen 200 instantánea, el procesador 202 principal está efectuando una recogida de instrucciones I para la sub-instrucción si-8, una decodificación de instrucciones D para la sub-instrucción si-7, un cálculo de dirección A para la sub-instrucción si-6, una ejecución de instrucción E para la sub-instrucción si-5 y una operación de escritura W para la sub-instrucción si-4. El procesador 202 principal ha procesado ya las sub-instrucciones si-3, si-2 y si-1, y tres instrucciones mi de procesador principal, como muestran las líneas discontinuas que rodean a dichas instrucciones.
En el ciclo actual de operación de la imagen 200 instantánea, el sub-procesador 204 efectúan la decodificación de instrucción d sobre la sub-instrucción si-3, el cálculo de dirección a sobre la sub-instrucción si-2, la ejecución de instrucción e sobre la sub-instrucción si-1 y la operación de escritura w no efectúa ninguna operación ("nop"). El sub-procesador 206 efectúa la decodificación de instrucción d sobre la sub-instrucción si-2, el cálculo de dirección a sobre la sub-instrucción si-1, ninguna operación nop para la ejecución de instrucción e y ninguna operación nop para la operación de escritura w. El sub-procesador 208 efectúa la decodificación de instrucción d sobre la sub-instrucción si-1, ninguna operación nop para el cálculo de dirección a, ninguna operación nop para la ejecución de instrucción e y ninguna operación nop para la operación de escritura w.
Cada sub-procesador 204, 206 y 208 efectúa el procesado de instrucciones para una única etapa del bucle para cada sub-instrucción que se pasa a ese sub-procesador 204, 206 y 208. Específicamente, el sub-procesador 204 efectúa d, a, e y w (si es necesario) para una primera iteración el bucle para la sub-instrucción si-1 (por ejemplo, j=1), el sub-procesador 206 efectúa d, a, e y w (si es necesario) para una segunda iteración del bucle para la sub-instrucción si-1 (por ejemplo, j=2), y el sub-procesador 208 efectúa d, a, e y w para la sub-instrucción si-1 (si es necesario) para una tercera iteración del bucle (por ejemplo, j=3).
Cuando el procesador 202 principal detecta una sub-instrucción para los sub-procesadores 204, 206 y 208, el procesador 202 principal envía como salida la sub-instrucción al sub-procesador 204. Las instrucciones para el procesador 202 principal son preferiblemente distinguibles de las sub-instrucciones para los sub-procesadores 204, 206 y 208. Un método para distinguir las instrucciones del procesador 202 principal de las sub-instrucciones de los sub-procesadores 204, 206 y 208 es definir instrucciones discriminatorias que muestren los puntos de inicio y final para las sub-instrucciones. Otro método es definir únicamente un conjunto de instrucciones para el procesador 202 y los sub-procesadores 204, 206 y 208. Las instrucciones del conjunto de instrucciones se distinguen preferiblemente por los códigos de operación de instrucción ("op-codes"). La primera palabra de una instrucción es típicamente el op-code para esa instrucción. Preferiblemente, se asigna al procesador 202 principal un conjunto de op-codes y se asigna a los sub-procesadores 204, 206 y 208 otro conjunto de op-codes. Alternativamente, se usan uno o más bits de un campo de bits de código de instrucciones para distinguir instrucciones del procesador principal de instrucciones de los sub-procesadores. Otro método más es definir macro instrucciones para las sub-instrucciones como parte el flujo de instrucciones para el procesador 202 principal. Se llama a las sub-instrucciones cuando se ejecuta una macro instrucción. Estos métodos son sólo ejemplos; la discriminación se puede efectuar de otros
modos.
Dependiendo de cuántos bucles se ejecutan, los sub-procesadores 204, 206 y 208 propagan o pasan en cascada la(s) sub-instrucción(es) al siguiente sub-procesador 206, 208, etc. Por ejemplo, en la imagen 200 instantánea, el procesador 202 principal efectúa la operación de escritura W sobre la sub-instrucción si-4 y pasa la sub-instrucción si-3 al sub-procesador 204. El sub-procesador 204 efectúa la decodificación de instrucción d sobre la sub-instrucción si-3, el cálculo de dirección a sobre la sub-instrucción si-2 y la ejecución de instrucción e sobre la sub-instrucción si-1 y pasa la sub-instrucción si-2 al sub-procesador 206. El sub-procesador 206 efectúa la decodificación de instrucción d sobre la sub-instrucción si-2, el cálculo de dirección a sobre la sub-instrucción si-1 y pasa la sub-instrucción si-1 al sub-procesador 208, que efectúa la decodificación de instrucción d. Una sub-instrucción dada se propagará hasta el sub-procesador enésimo después de N ciclos.
Con referencia a la Fig. 3A, se hace ahora una descripción de ciertos aspectos de la invención relativos al procesado 300 de instrucciones por el procesador 202 principal. En la acción 302, el procesador 202 principal recoge u obtiene una instrucción. En la acción 304, se realiza una consulta relativa a si la instrucción es una instrucción para el procesador 202 principal o una sub-instrucción para los sub-procesadores 204, 206 y 208. Si se determina que la instrucción es para el procesador 202 principal, el proceso preferiblemente se ramifica a la acción 306 de modo que el procesador 202 puede procesar la instrucción. En caso contrario, si se determina que la instrucción es una sub-instrucción, el proceso preferiblemente se ramifica a la acción 308. En la acción 308, se determina el número de sub-procesadores 204, 206 y 208 disponibles. Preferiblemente, el número de sub-procesadores 204, 206 y 208 disponibles permanece constante para todo un conjunto de bucles.
En la acción 310, preferiblemente se determina el número de conjuntos de bucles y el número de bucles restantes. El número de conjuntos de bucles es el número de veces que el procesador 202 principal pasa cada sub-instrucción al sub-procesador 204. El número de bucles restantes es el número de bucles que serán efectuados por menos de todos los sub-procesadores 204, 206 y 208. A modo de ejemplo únicamente, si hay 1000 bucles a efectuar y 64 sub-procesadores, hay 15 conjuntos de bucles y 40 bucles restantes.
En la acción 312, se realiza una consulta relativa a si el número de conjuntos de bucles es mayor que cero (es decir, hay al menos un conjunto de bucles para efectuar). Si el número de conjuntos de bucles es mayor que cero, entonces el flujo del proceso preferiblemente se ramifica hacia la acción 314. Si el número de conjuntos de bucles es cero, entonces el flujo del proceso preferiblemente se ramifica a la acción 330. En la acción 314, un contador de bucles se pone a un valor igual al número de sub-procesadores. Como se describirá con mayor detalle con referencia a la Fig. 3B, el contador de bucles es utilizado por un sub-procesador 204, 206 208 para determinar si pasar una sub-instrucción a un sub-procesador subsiguiente. En la acción 316, se envía una sub-instrucción actual si-n al sub-procesador 204, como se identifica mediante el elemento A. El procesado posterior de la sub-instrucción actual si-n por los sub-procesadores 204, 206 y 208 se describirá más tarde con referencia a la Fig. 3B.
En la acción 318, se realiza una consulta relativa a si todas las sub-instrucciones si-n para un bucle particular se han enviado a los sub-procesadores 204. Si no se han enviado todas las sub-instrucciones, entonces el flujo del proceso preferiblemente vuelve a la acción 316 de forma que se pueda enviar la siguiente sub-instrucción si-n. En caso contrario, si se han enviado todas las sub-instrucciones si-n, entonces el flujo del proceso preferiblemente se ramifica a la acción 320. En la acción 320, el número de conjuntos de bucles se decrementa para reflejar que se ha completado un conjunto de bucles. En el ejemplo de arriba, si el número de conjuntos de bucles se estableció inicialmente en 15, entonces el número de conjuntos de bucles se decrementaría a 14 cuando se completase el primer conjunto de bucles (por ejemplo, los primeros 64 bucles). Preferiblemente, el flujo del proceso vuelve entonces a la acción 312, donde se comprueba otra vez el número de conjuntos de bucles.
Cuando el número de conjuntos de bucles es cero (es decir, se han efectuado todos los conjuntos de bucles), el flujo el proceso preferiblemente avanza a la acción 330. En la acción 330, se realiza una consulta acerca de si el número de bucles restantes es mayor que cero. Cuando el número de bucles restantes es cero (es decir, no es necesario pasar más sub-instrucciones a los sub-procesadores 204, 206 y 208 porque se han efectuado todos los bucles), el flujo del proceso preferiblemente se ramifica a la acción 338, donde termina el flujo del proceso. Cuando el número de bucles restantes es mayor que cero, el flujo del proceso preferiblemente se ramifica a la acción 332, el contador de bucles se establece a un valor igual al número de bucles restantes. En el ejemplo de arriba, el contador de bucles se pondría a 40, ya que se habrán efectuado ya 960 bucles por los quince conjuntos de bucles. En la acción 334, la sub-instrucción si-n es enviada al sub-procesador 204. En la acción 336, se realiza una consulta acerca de si se han enviado todas las sub-instrucciones si-n al sub-procesador 204. Si no se han enviado todas las sub-instrucciones si-n, entonces el flujo del proceso preferiblemente vuelve a la acción 334. En caso contrario, si se han enviado todas las sub-instrucciones, entonces el flujo del proceso preferiblemente se ramifica a la acción 340, donde termina el flujo del proceso.
Haciendo referencia a la Fig. 3B, se realizará ahora una descripción de ciertos aspectos de la invención relativos al procesado 350 de sub-instrucciones por los sub-procesadores 204, 206 y 208. En la acción 352, el sub-procesador 204, 206 o 208 recibe la sub-instrucción si-n a través del elemento A. Aunque el paso de la sub-instrucción si-n desde el procesador 202 principal se describió en la Fig. 3A con referencia al sub-procesador 204, las acciones de la Fig. 3B aplican a todos los sub-procesadores 204, 206 y 208.
Cuando se recibe la sub-instrucción si-n, tienen lugar dos series de acciones. Una de las series es el conducto de instrucciones de procesado para un sub-procesador 204, 206 o 208 dado. En la acción 354, la decodificación de instrucción d es efectuada en la sub-instrucción si-n. En la acción 356, el cálculo de dirección a es efectuado sobre la sub-instrucción si-n. En la acción 358, la ejecución de instrucción e es efectuada sobre la sub-instrucción si-n. Opcionalmente, la operación de escritura w es efectuada sobre la sub-instrucción si-n en la acción 360. En la acción 362, termina el conducto de ejecución de instrucciones.
La otra serie de acciones empieza con la acción 370, donde se decrementa el contador de bucles. En la acción 372, se realiza una consulta acerca de si el contador de bucles es mayor de cero. Si el contador de bucles es mayor que cero (es decir, se realizarán bucles adicionales), entonces el flujo del proceso preferiblemente se ramifica a la acción 378. En la acción 374, el sub-procesador 204, 206 o 208 actual pasa la sub-instrucción si-n a un sub-procesador 206 o 208 subsiguiente. En la acción 376, el flujo del proceso del sub-procesador 204, 206 o 208 actual termina. En la acción 378, cuando el contador de bucles es cero, la sub-instrucción si-n no es pasada al sub-procesador 206 o 208 subsiguiente. Entonces el flujo de proceso termina en la acción 380. Así, en el ejemplo anterior, se efectúan quince conjuntos de bucles por los 64 sub-procesadores 204, 206 y 208 para conseguir 960 bucles, y los primeros 40 sub-procesadores 204, 206 y 208 efectúan 40 bucles restantes, consiguiéndose así un total de 1000 bucles.
Volviendo a la Fig. 2, cada conducto de procesado de instrucciones permite que los respectivos sub-procesadores 204, 206 y 208 efectúen una operación (por ejemplo, d, a, e o w) para múltiples sub-instrucciones de un ciclo dado (por ejemplo, un ciclo de reloj). Los conductos de procesado de instrucciones, acoplados con la arquitectura 100 del sistema multiproceso, efectúan múltiples bucles para múltiples sub-instrucciones en paralelo. La arquitectura 100 del sistema multiproceso divide tareas (por ejemplo, bucles) entre sub-procesadores al mismo tiempo que asegura un funcionamiento secuencial de porciones particulares de las tareas (por ejemplo, sub-instrucciones). Preferiblemente, cada sub-procesador 204, 206 y 208 ejecuta sub-instrucciones localmente (por ejemplo, en su propio hardware). Los sub-procesadores 204, 206 y 208 preferiblemente acceden a la memoria directamente, sin ningún control o gestión por el procesador 202 principal. La memoria puede ser una memoria caché, y, preferiblemente, cada uno de los sub-procesadores 204, 206 y 208 tiene su propia memoria caché.
Cada sub-procesador 204, 206, 208, etc. preferiblemente tiene un número de procesador asociado. El número de procesador es preferiblemente identificado con relación al contador de bucles. Un programa de sub-procesador puede emplear el número de procesador, por ejemplo, para calcular parámetros o para identificar cuál de los sub-procesadores 204, 206 o 208 efectuará el último bucle en una serie de bucles de instrucciones. Como se ha descrito anteriormente con relación a las Figs. 3A-B, cuando el contador de bucles se establece a un valor igual al número de sub-procesadores 204, 206 y 208, cada uno de los sub-procesadores 204, 206 y 208 efectuará un bucle de instrucciones. Cuando el contador de bucles se establece a un valor igual al número de bucles restantes, menos de todos los procesadores 204, 206 y 208 efectuarán un bucle de instrucciones. Como en el ejemplo anterior, si hay 40 bucles restantes y 64 sub-procesadores 204, 206 y 208, sólo los primeros 40 sub-procesadores 204, 206 y 208 (es decir, números de procesador 1 a 40) efectuarán bucles de instrucciones. Describiéndolo conjuntamente con la acción 378, el sub-procesador 204, 206 o 208 cuadragésimo no pasará la sub-instrucción si-n al sub-procesador 204, 206 o 208 cuadragésimo primero.
Los sub-procesadores 204, 206 y 208 pueden estar situados en el chip o fuera del chip con relación al procesador 202 principal. Si uno o más de los sub-procesadores 204, 206 o 208 está situado fuera del chip en un dispositivo separado, el dispositivo separado se conecta preferiblemente en cascada con el procesador 202 principal.
La Fig. 4 ilustra una arquitectura 400 ejemplar que tiene un dispositivo 402 principal y un sub-dispositivo 422. El dispositivo 402 principal incluye un procesador 404 principal, una selección 406 de modo, y cualquier número de sub-procesadores 408, 410 y 412, donde el sub-procesador 412 es un sub-procesador enésimo. El sub-dispositivo 422 incluye un procesador 424 principal, una selección 426 de modo y cualquier número de sub-procesadores 428, 430 y 432. El procesador 404 principal es capaz de manejar bucles de instrucciones de un programa y, preferiblemente, el procesador 404 principal lleva a cabo operaciones fuera de los bucles de instrucciones y controla los bucles. Al igual que con los ejemplos previos de esta descripción, cada bucles de instrucciones puede implicar el procesado de una o más sub-instrucciones. El procesador 404 principal es preferiblemente habilitado por la selección 406 de modo, que preferiblemente incluye una entrada 414 de fijación. El procesador 424 principal está preferiblemente deshabilitado (por medio de la selección 426 de modo y una entrada 434 de fijación) para evitar que interfiera con la gestión del procesado de los bucles de instrucciones por el procesador 404 principal. El procesador 404 principal, a través del proceso en cascada descrito arriba, gestiona los sub-procesadores 408, 410, 412, 428, 430 y 432. Nótese que el procesador 424 principal también puede funcionar como un sub-procesador, preferiblemente recibiendo señales vía una conexión 436. Preferiblemente, el procesador 404 principal siempre gestiona el procesado de los bucles de instrucciones.
El procesador 404 principal puede preferiblemente identificar cuántos sub-procesadores 408, 410, 412, 428, 430 y 432 (y opcionalmente el procesador 424 principal) están en cascada. Esto se puede hacer de varias maneras. Por ejemplo, entradas de hardware o entradas de configuración pueden identificar cuántos sub-procesadores 408, 410, 412, 428, 430 y 432 están en cascada. Alternativamente, el procesador 404 principal puede emplear datos, contar ciclos de reloj o tener otros medios de determinar el número de sub-procesadores 408, 410, 412, 428, 430 y 432.
Ventajosamente, los métodos y aparatos de la presente invención permiten la reducción del tiempo de procesado de bucles de instrucción disponiendo en cascada sub-instrucciones entre múltiples sub-procesadores. El procesador principal gestiona de manera efectiva el procesado de los bucles de instrucciones de forma que las sub-instrucciones se disponen en cascada desde un sub-procesador a un siguiente sub-procesador. De este modo, efectuar operaciones en cada sub-instrucción en un conducto de procesado de instrucciones asegura el funcionamiento secuencial de cada iteración del bucle. El bus de cascada proporciona un uso eficiente de los recursos compartidos. Además, el sistema informático multiproceso puede manejar cualquier número de sub-procesadores, por lo cual la arquitectura es escalable.
Aunque la invención del presente documento se ha descrito haciendo referencia a realizaciones particulares, se debe entender que estas realizaciones son meramente ilustrativas de los principios y aplicaciones de la presente invención. Se debe entender, por tanto, que se pueden realizar numerosas modificaciones a las realizaciones ilustrativas y que se podrían concebir otras disposiciones sin salirse del ámbito de la presente invención, según definen las reivindicaciones adjuntas.
Aplicación industrial
La presente invención tiene una amplia aplicabilidad industrial que incluye, aunque no se limita a éste, el uso en la ejecución eficiente de operaciones de bucles de instrucciones informáticas o de ordenador usando múltiples sub-procesadores.

Claims (47)

1. Un sistema (100) informático multiproceso, que comprende:
un procesador (202) principal operable para gestionar el procesado de bucles de instrucciones de un programa, incluyendo cada bucle de instrucciones una o más sub-instrucciones; y
una pluralidad de sub-procesadores (204, 206) operables para procesar cada sub-instrucción en una pluralidad de etapas secuenciales, caracterizado porque al menos un primer sub-procesador (204) es operable para recibir secuencialmente la o las sub-instrucciones del procesador (202) principal y para propagar la sub-instrucción a un sub-procesador (206) subsiguiente, y al menos un segundo sub-procesador es operable para recibir secuencialmente la o las sub-instrucciones del primer sub-procesador;
donde
el procesador (202) principal y la pluralidad de sub-procesadores (204, 206) están dispuestos juntos en cascada de modo que diferentes sub-procesadores son operables para ejecutar diferentes operaciones relativas a diferentes iteraciones de bucle respectivas de una sub-instrucción dada durante un ciclo dado; y
el procesador principal controla las iteraciones de bucle pasando información a los sub-procesadores.
2. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde cada sub-procesador funciona sobre una de las sub-instrucciones con un conducto de procesado de instrucciones respectivo.
3. El sistema informático multiproceso de acuerdo con la reivindicación 2, donde el conducto de procesado de instrucciones para cada sub-procesador funciona secuencialmente durante uno o más ciclos.
4. El sistema informático multiproceso de acuerdo con la reivindicación 3, donde se efectúa una decodificación de instrucción durante un primer ciclo, se efectúa un cálculo de dirección durante un segundo ciclo y se efectúa una ejecución de instrucción durante un tercer ciclo.
5. El sistema informático multiproceso de acuerdo con la reivindicación 4, donde se efectúa una operación de escritura durante un cuarto ciclo.
6. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde la pluralidad de sub-procesadores no acepta interrupciones.
7. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde la pluralidad de sub-procesadores están operativamente conectados a una memoria electrónica.
8. El sistema informático multiproceso de acuerdo con la reivindicación 7, donde la pluralidad de sub-procesadores accede a la memoria electrónica directamente.
9. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal está operativamente conectado a la memoria electrónica.
10. El sistema informático multiproceso de acuerdo con la reivindicación 9, donde la memoria electrónica es una memoria caché.
11. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal forma parte de un primer dispositivo y al menos algunos de entre la pluralidad de sub-procesadores forman parte de un segundo dispositivo, siendo el segundo dispositivo remoto y en cascada con relación al primer dispositivo.
12. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal es operable para detectar un evento para uno o más de los sub-procesadores, y al detectar el evento, el procesador principal secuencialmente ofrece como salida la o las sub-instrucciones al primero de los sub-procesadores.
13. El sistema informático multiproceso de acuerdo con la reivindicación 12, donde el procesador principal detecta el evento antes de iniciar uno o más de los bucles de instrucciones, y el procesador principal controla el funcionamiento de la pluralidad de sub-procesadores.
14. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal es capaz de ejecutar instrucciones generales informáticas o de ordenador.
15. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal es capaz de aceptar interrupciones.
16. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal tiene una arquitectura en paralelo.
17. El sistema informático multiproceso de acuerdo con la reivindicación 16, donde la arquitectura en paralelo es una arquitectura super-escalar.
18. El sistema informático multiproceso de acuerdo con la reivindicación 16, donde la arquitectura en paralelo es una arquitectura de palabra de instrucción muy larga (VLIW).
19. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal incluye una ALU y un archivo de registro, y la ALU y el archivo de registro son operables para tratar datos vectoriales.
20. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde el procesador principal identifica cuántos sub-procesadores están disponibles para ejecutar las sub-instrucciones de cada bucle de instrucciones.
21. El sistema informático multiproceso de acuerdo con la reivindicación 20, donde el procesador principal identifica un número de conjuntos de bucles y un número de bucles restantes a efectuar basándose en cuántos sub-procesadores están disponibles.
22. El sistema informático multiproceso de acuerdo con la reivindicación 21, donde, si el número de conjuntos de bucles es mayor de cero, entonces el procesador principal inicia un contador de bucles igual a la pluralidad de sub-procesadores que están disponibles, secuencialmente envía una o más de las sub-instrucciones al primero de los sub-procesadores junto con el contador de bucles, y decrementa el número de conjuntos de bucles después de que todas las sub-instrucciones en un bucle de instrucciones dado hayan pasado al primero de los sub-procesadores.
23. El sistema informático multiproceso de acuerdo con la reivindicación 21, donde, si el número de conjuntos de bucles es igual a cero y el número de bucles restantes es mayor que cero, entonces el procesador principal inicia un contador de bucles igual al número de bucles restantes y secuencialmente envía las una o más sub-instrucciones al primero de los sub-procesadores junto con el contador de bucles.
24. El sistema informático multiproceso de acuerdo con la reivindicación 1, donde un sub-procesador dado de entre la pluralidad de sub-procesadores disminuye un contador de bucles al recibir una nueva sub-instrucción, y si el contador de bucles es mayor de cero, el siguiente sub-procesador pasa la nueva sub-instrucción al siguiente de entre la pluralidad de sub-procesadores junto con el contador de bucles, y si el contador de bucles es cero, el sub-procesador dado no pasa la nueva sub-instrucción al siguiente de los sub-procesadores.
25. El sistema informático multiproceso de acuerdo con la reivindicación 1, que además comprende:
un bus en cascada operable para proporcionar la una o más sub-instrucciones del procesador principal al primero de los sub-procesadores, comprendiendo el bus cascada un bus de códigos de instrucciones que pasa instrucciones y otra información entre el procesador principal y los sub-procesadores.
26. El sistema informático multiproceso de acuerdo con la reivindicación 25, donde el bus cascada es bidireccional.
27. El sistema informático multiproceso de acuerdo con la reivindicación 26, donde el bus cascada proporciona datos de bucle del procesador principal al primero de los sub-procesadores, los datos de bucle incluyendo uno o más de entre código de instrucciones, información decodificada, datos de sombreado, parámetros y un contador de bucle.
28. El sistema informático multiproceso de acuerdo con la reivindicación 26, donde el bus cascada proporciona uno o más de entre información de estado y información de resultado de uno o más de entre la pluralidad de sub-procesadores al procesador principal.
29. El sistema informático multiproceso de acuerdo con la reivindicación 25, que además incluye un dispositivo procesador adicional dispuesto en cascada con el procesador principal.
30. El sistema informático multiproceso de acuerdo con la reivindicación 29, donde el dispositivo procesador adicional incluye un procesador principal adicional.
31. El sistema informático multiproceso de acuerdo con la reivindicación 30, donde el procesador principal adicional funciona como uno de la pluralidad de sub-procesadores.
32. El sistema informático multiproceso de acuerdo con la reivindicación 31, donde se selecciona que el procesador principal adicional funcione como uno de la pluralidad de sub-procesadores por un mecanismo de selección de modo.
33. Un procedimiento de multiproceso, que comprende:
gestionar el procesado de bucles de instrucciones de un programa con un procesador (202) principal, incluyendo cada bucle de instrucciones una o más sub-instrucciones; caracterizado por
recibir secuencialmente la una o más sub-instrucciones del procesador (202) principal en un primer sub-procesador (204), siendo el primer sub-procesador (204) uno de entre una pluralidad de sub-procesadores (204, 206), el procesador (202) principal y la pluralidad de sub-procesadores (204, 206) estando dispuestos juntos en cascada;
procesar cada sub-instrucción en una pluralidad de etapas secuenciales;
propagar la una o más sub-instrucciones a un sub-procesador subsiguiente si menos que todos los bucles de instrucciones se han completado; y
secuencialmente recibir una o más sub-instrucciones en un segundo sub-procesador (206) de forma que diferentes sub-procesadores ejecutan diferentes operaciones relativas a diferentes iteraciones del bucle respectivo de una sub-instrucción dada durante un ciclo dado; y
controlando el procesador principal las iteraciones del bucle pasando información a los sub-procesadores.
34. El procedimiento de multiproceso de acuerdo con la reivindicación 33, donde el procesado en la pluralidad de etapas secuenciales incluye que el primer sub-procesador funcione sobre unas sub-instrucciones dadas con un conducto de procesado de instrucciones.
35. El procedimiento de multiproceso de acuerdo con la reivindicación 34, que además incluye operar secuencialmente el conducto de procesado de instrucciones durante uno o más ciclos.
36. El procedimiento de multiproceso de acuerdo con la reivindicación 35, que además incluye:
efectuar una decodificación de instrucción sobre una primera sub-instrucción en un primer ciclo;
efectuar un cálculo de dirección sobre la primera sub-instrucción en un segundo ciclo; y
efectuar una ejecución de instrucción sobre la primera sub-instrucción en un tercer ciclo.
\vskip1.000000\baselineskip
37. El procedimiento de multiproceso de acuerdo con la reivindicación 36, que además incluye efectuar una operación de escritura sobre la primera sub-instrucción en un cuarto ciclo.
38. El procedimiento de multiproceso de acuerdo con la reivindicación 35, que además incluye, cuando un bucle de instrucciones dado incluye una primera sub-instrucción y una segunda sub-instrucción:
efectuar una decodificación de instrucción sobre la primera sub-instrucción en un primer ciclo;
efectuar un cálculo de dirección sobre la primera sub-instrucción en un segundo ciclo;
efectuar una decodificación de instrucción sobre la segunda sub-instrucción en el segundo ciclo;
efectuar una ejecución de instrucción sobre la primera sub-instrucción en un tercer ciclo;
efectuar un cálculo de dirección sobre la segunda sub-instrucción en el tercer ciclo; y
efectuar una ejecución de instrucción sobre la segunda sub-instrucción en un cuarto ciclo.
\vskip1.000000\baselineskip
39. El procedimiento de multiproceso de acuerdo con la reivindicación 38, que además incluye:
efectuar una operación de escritura sobre la primera sub-instrucción en el cuarto ciclo; y
efectuar la operación de escritura sobre la segunda sub-instrucción en un quinto ciclo.
\vskip1.000000\baselineskip
40. El procedimiento de multiproceso de acuerdo con la reivindicación 33, que además incluye:
antes de recibir secuencialmente la una o más sub-instrucciones, detectar un evento en el procesador principal; y
secuencialmente ofrecer como salida la una o más sub-instrucciones al primer sub-procesador.
\vskip1.000000\baselineskip
41. El procedimiento de multiproceso de acuerdo con la reivindicación 33, donde, cuando el procesador principal incluye un mecanismo de recogida de instrucciones, se recogen los bucles de instrucciones de una caché de memoria de instrucciones empleando el mecanismo de recogida de instrucciones.
42. El procedimiento de multiproceso de acuerdo con la reivindicación 33, que además incluye:
determinar un número de sub-procesadores disponible; y
identificar un número de conjuntos de bucles y un número de bucles restantes a efectuar basándose en cuántos sub-procesadores están disponibles.
43. El procedimiento de multiproceso de acuerdo con la reivindicación 42, que además incluye, si el número de conjuntos de bucles es mayor que cero:
poner un contador de bucles igual a la pluralidad de sub-procesadores que están disponibles;
propagar la una o más instrucciones al subsiguiente sub-procesador junto con el contador de bucles; y
decrementar el número de conjuntos de bucles después de que todas las sub-instrucciones en un bucle de instrucciones dado se hayan propagado al primer sub-procesador.
44. El procedimiento de multiproceso de acuerdo con la reivindicación 42, que además incluye, si el número de conjuntos de bucles es igual a cero y el número de bucles restantes es mayor que cero:
poner un contador de bucles igual al número de bucles restantes; y
propagar la una o más sub-instrucciones al sub-procesador subsiguiente junto con el contador de bucles.
45. El procedimiento de multiproceso de acuerdo con la reivindicación 33, que además comprende:
seleccionar un procesador principal activo de entre un primer procesador principal y un segundo procesador principal, el primer procesador principal estando situado en un primer dispositivo y el segundo procesador principal estando situado en un segundo dispositivo;
donde el procesador principal es un procesador principal activo.
46. El procedimiento de multiproceso de acuerdo con la reivindicación 45, donde la selección del procesador principal activo se efectúa empleando un mecanismo de selección de modo.
47. El procedimiento de multiproceso de acuerdo con la reivindicación 45, donde se selecciona el primer procesador principal como el procesador principal activo y el segundo procesador principal funciona como uno de la pluralidad de sub-procesadores.
ES02807083T 2002-03-13 2002-10-18 Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas. Expired - Lifetime ES2330318T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US36387302P 2002-03-13 2002-03-13
US363873P 2002-03-13
US202355 2002-07-24
US10/202,355 US7162620B2 (en) 2002-03-13 2002-07-24 Methods and apparatus for multi-processing execution of computer instructions

Publications (1)

Publication Number Publication Date
ES2330318T3 true ES2330318T3 (es) 2009-12-09

Family

ID=28044473

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02807083T Expired - Lifetime ES2330318T3 (es) 2002-03-13 2002-10-18 Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas.

Country Status (9)

Country Link
US (1) US7162620B2 (es)
EP (1) EP1483675B1 (es)
JP (1) JP3977340B2 (es)
KR (1) KR100667509B1 (es)
AT (1) ATE438145T1 (es)
AU (1) AU2002335102A1 (es)
DE (1) DE60233168D1 (es)
ES (1) ES2330318T3 (es)
WO (1) WO2003079206A1 (es)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7533382B2 (en) * 2002-10-30 2009-05-12 Stmicroelectronics, Inc. Hyperprocessor
US7218291B2 (en) * 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
KR100806274B1 (ko) * 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
US20090160863A1 (en) * 2007-12-21 2009-06-25 Michael Frank Unified Processor Architecture For Processing General and Graphics Workload
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
WO2009102765A2 (en) 2008-02-11 2009-08-20 Nuix North America Inc. Parallelization of electronic discovery document indexing
US8151090B2 (en) * 2009-02-17 2012-04-03 Samsung Electronics Co., Ltd. Sequentially propagating instructions of thread through serially coupled PEs for concurrent processing respective thread on different data and synchronizing upon branch
JP2012252374A (ja) * 2011-05-31 2012-12-20 Renesas Electronics Corp 情報処理装置
US9529599B2 (en) * 2012-02-13 2016-12-27 William Erik Anderson Dynamic propagation with iterative pipeline processing
JP5831316B2 (ja) * 2012-03-19 2015-12-09 富士通株式会社 並列処理装置
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
CN109690309B (zh) * 2016-09-08 2022-10-25 株式会社岛津制作所 气相色谱仪

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5522083A (en) * 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US6311286B1 (en) * 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
US5809340A (en) * 1993-04-30 1998-09-15 Packard Bell Nec Adaptively generating timing signals for access to various memory devices based on stored profiles
US6219773B1 (en) * 1993-10-18 2001-04-17 Via-Cyrix, Inc. System and method of retiring misaligned write operands from a write buffer
US5838987A (en) * 1995-10-06 1998-11-17 National Semiconductor Corporation Processor for eliminating external isochronous subsystems
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US5764934A (en) 1996-07-03 1998-06-09 Intel Corporation Processor subsystem for use with a universal computer architecture
EP1359501A3 (en) * 1997-10-02 2007-11-21 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US6212617B1 (en) * 1998-05-13 2001-04-03 Microsoft Corporation Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication
US6269440B1 (en) * 1999-02-05 2001-07-31 Agere Systems Guardian Corp. Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously
JP3946393B2 (ja) 1999-10-19 2007-07-18 株式会社東芝 階層構造をもつ並列計算機

Also Published As

Publication number Publication date
AU2002335102A1 (en) 2003-09-29
DE60233168D1 (de) 2009-09-10
EP1483675B1 (en) 2009-07-29
JP2005520249A (ja) 2005-07-07
EP1483675A4 (en) 2007-02-14
US20030177343A1 (en) 2003-09-18
KR20040086462A (ko) 2004-10-08
ATE438145T1 (de) 2009-08-15
US7162620B2 (en) 2007-01-09
KR100667509B1 (ko) 2007-01-10
WO2003079206A1 (en) 2003-09-25
EP1483675A1 (en) 2004-12-08
JP3977340B2 (ja) 2007-09-19

Similar Documents

Publication Publication Date Title
ES2330318T3 (es) Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas.
US20230106990A1 (en) Executing multiple programs simultaneously on a processor core
JP6660991B2 (ja) マルチスレッドプロセッサでのタスクのスケジューリング
Eggers et al. Simultaneous multithreading: A platform for next-generation processors
Huck et al. Introducing the IA-64 architecture
Hirata et al. An elementary processor architecture with simultaneous instruction issuing from multiple threads
US8429379B2 (en) Reconfigurable microprocessor configured with multiple caches and configured with persistent finite state machines from pre-compiled machine code instruction sequences
CN108027769A (zh) 使用寄存器访问指令发起指令块执行
CN108027807A (zh) 基于块的处理器核拓扑寄存器
CN108027750A (zh) 乱序提交
US11416258B2 (en) Method of debugging a processor that executes vertices of an application, each vertex being assigned to a programming thread of the processor
JP2007272895A (ja) コンピュータプロセッサアレイの操作方法および装置
CN108112269A (zh) 多重无效
US20190155648A1 (en) Scheduling tasks in a multi-threaded processor
KR19980063538A (ko) 멀티프로세서 컴퓨터 시스템에서 결과 데이터를 공유하는 방법및 장치
US11645081B2 (en) Handling exceptions in a multi-tile processing arrangement
US11449338B2 (en) Handling exceptions in a multi-tile processing arrangement
Rotenberg Exploiting large ineffectual instruction sequences
Moshovos et al. Microarchitectural innovations: Boosting microprocessor performance beyond semiconductor technology scaling
Arul et al. Scalability of scheduled data flow architecture (sdf) with register contexts
Sohi et al. Speculative multithreaded processors
Mistry et al. Computer Organization
GB2583574A (en) Handling exceptions in a multi-tile processing arrangement
Yang A multi-context uniprocessor: another multithreaded architecture
Amarasinghe et al. 6.035 Computer Language Engineering (SMA 5502), Fall 2002