ES2330318T3 - Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas. - Google Patents
Metodos y aparato para la ejecucion multiproceso de instrucciones informaticas. Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000008569 process Effects 0.000 claims description 24
- 238000004364 calculation method Methods 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 claims description 7
- 230000007423 decrease Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 4
- 230000002457 bidirectional effect Effects 0.000 claims 1
- 230000000644 propagated effect Effects 0.000 claims 1
- 230000009471 action Effects 0.000 description 41
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- JWDFQMWEFLOOED-UHFFFAOYSA-N (2,5-dioxopyrrolidin-1-yl) 3-(pyridin-2-yldisulfanyl)propanoate Chemical compound O=C1CCC(=O)N1OC(=O)CCSSC1=CC=CC=N1 JWDFQMWEFLOOED-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/20—Features 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/203—Image 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.
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.
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.
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).
(dependientes).
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.
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.
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.
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.
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)
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)
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 | 株式会社東芝 | 階層構造をもつ並列計算機 |
-
2002
- 2002-07-24 US US10/202,355 patent/US7162620B2/en active Active
- 2002-10-18 DE DE60233168T patent/DE60233168D1/de not_active Expired - Lifetime
- 2002-10-18 EP EP02807083A patent/EP1483675B1/en not_active Expired - Lifetime
- 2002-10-18 AU AU2002335102A patent/AU2002335102A1/en not_active Abandoned
- 2002-10-18 AT AT02807083T patent/ATE438145T1/de not_active IP Right Cessation
- 2002-10-18 WO PCT/US2002/033507 patent/WO2003079206A1/en active Application Filing
- 2002-10-18 JP JP2003577137A patent/JP3977340B2/ja not_active Expired - Lifetime
- 2002-10-18 ES ES02807083T patent/ES2330318T3/es not_active Expired - Lifetime
- 2002-10-18 KR KR1020047013450A patent/KR100667509B1/ko active IP Right Grant
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 |